Current section

Files

Jump to
gleam_javascript src gleam@javascript@promise.erl
Raw

src/gleam@javascript@promise.erl

-module(gleam@javascript@promise).
-compile(no_auto_import).
-export([resolve/1, rescue/2, then/2, map/2, tap/2, map_try/2, then_try/2, await2/2, await3/3, await4/4, await5/5, await6/6, await_array/1, await_list/1, do_await_list/1]).
-export_type([promise/1]).
-type promise(Value) :: any() | {gleam_phantom, Value}.
-spec resolve(AT) -> promise(AT).
resolve(A) ->
'../../ffi.mjs':resolve(A).
-spec rescue(promise(AV), fun((gleam@dynamic:dynamic()) -> AV)) -> promise(AV).
rescue(A, B) ->
'../../ffi.mjs':rescue(A, B).
-spec then(promise(BA), fun((BA) -> promise(AY))) -> promise(AY).
then(A, B) ->
'../../ffi.mjs':then(A, B).
-spec map(promise(BF), fun((BF) -> BD)) -> promise(BD).
map(A, B) ->
'../../ffi.mjs':map_promise(A, B).
-spec tap(promise(BH), fun((BH) -> any())) -> promise(BH).
tap(Promise, Callback) ->
_pipe = Promise,
'../../ffi.mjs':map_promise(
_pipe,
fun(A) ->
Callback(A),
A
end
).
-spec map_try(
promise({ok, BL} | {error, BM}),
fun((BL) -> {ok, BQ} | {error, BM})
) -> promise({ok, BQ} | {error, BM}).
map_try(Promise, Callback) ->
_pipe = Promise,
'../../ffi.mjs':map_promise(_pipe, fun(Result) -> case Result of
{ok, A} ->
Callback(A);
{error, E} ->
{error, E}
end end).
-spec then_try(
promise({ok, BW} | {error, BX}),
fun((BW) -> promise({ok, CB} | {error, BX}))
) -> promise({ok, CB} | {error, BX}).
then_try(Promise, Callback) ->
_pipe = Promise,
'../../ffi.mjs':then(_pipe, fun(Result) -> case Result of
{ok, A} ->
Callback(A);
{error, E} ->
'../../ffi.mjs':resolve({error, E})
end end).
-spec await2(promise(CI), promise(CJ)) -> promise({CI, CJ}).
await2(A, B) ->
'../../ffi.mjs':all_promises(A, B).
-spec await3(promise(CN), promise(CO), promise(CP)) -> promise({CN, CO, CP}).
await3(A, B, C) ->
'../../ffi.mjs':all_promises(A, B, C).
-spec await4(promise(CU), promise(CV), promise(CW), promise(CX)) -> promise({CU,
CV,
CW,
CX}).
await4(A, B, C, D) ->
'../../ffi.mjs':all_promises(A, B, C, D).
-spec await5(promise(DD), promise(DE), promise(DF), promise(DG), promise(DH)) -> promise({DD,
DE,
DF,
DG,
DH}).
await5(A, B, C, D, E) ->
'../../ffi.mjs':all_promises(A, B, C, D, E).
-spec await6(
promise(DO),
promise(DP),
promise(DQ),
promise(DR),
promise(DS),
promise(DT)
) -> promise({DO, DP, DQ, DR, DS, DT}).
await6(A, B, C, D, E, F) ->
'../../ffi.mjs':all_promises(A, B, C, D, E, F).
-spec await_array(gleam@javascript@array:array(promise(EB))) -> promise(gleam@javascript@array:array(EB)).
await_array(A) ->
'../../ffi.mjs':all_promises(A).
-spec await_list(list(promise(EG))) -> promise(list(EG)).
await_list(Xs) ->
_pipe = Xs,
_pipe@1 = '../../ffi.mjs':all_promises(_pipe),
'../../ffi.mjs':map_promise(_pipe@1, fun gleam@javascript@array:to_list/1).
-spec do_await_list(list(promise(EL))) -> promise(gleam@javascript@array:array(EL)).
do_await_list(A) ->
'../../ffi.mjs':all_promises(A).