-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).