MCPcopy Create free account
hub / github.com/Effect-TS/effect / all

Function all

packages/effect/src/unstable/reactivity/AsyncResult.ts:673–709  ·  view source on GitHub ↗
(
  results: Arg
)

Source from the content-addressed store, hash-verified

671 * @since 4.0.0
672 */
673export const all = <const Arg extends Iterable<any> | Record<string, any>>(
674 results: Arg
675): AsyncResult<
676 [Arg] extends [ReadonlyArray<any>] ? {
677 -readonly [K in keyof Arg]: [Arg[K]] extends [AsyncResult<infer _A, infer _E>] ? _A : Arg[K]
678 }
679 : [Arg] extends [Iterable<infer _A>] ? _A extends AsyncResult<infer _AA, infer _E> ? _AA : _A
680 : [Arg] extends [Record<string, any>] ? {
681 -readonly [K in keyof Arg]: [Arg[K]] extends [AsyncResult<infer _A, infer _E>] ? _A : Arg[K]
682 }
683 : never,
684 [Arg] extends [ReadonlyArray<any>] ? AsyncResult.Failure<Arg[number]>
685 : [Arg] extends [Iterable<infer _A>] ? AsyncResult.Failure<_A>
686 : [Arg] extends [Record<string, any>] ? AsyncResult.Failure<Arg[keyof Arg]>
687 : never
688> => {
689 const isIter = isIterable(results)
690 const entries = isIter
691 ? Array.from(results, (result, i) => [i, result] as const)
692 : Object.entries(results)
693 const successes: any = isIter ? [] : {}
694 let waiting = false
695 for (let i = 0; i < entries.length; i++) {
696 const [key, result] = entries[i]
697 if (!isAsyncResult(result)) {
698 InternalRecord.assignProperty(successes, key, result)
699 continue
700 } else if (!isSuccess(result)) {
701 return result as any
702 }
703 InternalRecord.assignProperty(successes, key, result.value)
704 if (result.waiting) {
705 waiting = true
706 }
707 }
708 return success(successes, { waiting }) as any
709}
710
711/**
712 * Creates a typed builder for rendering an `AsyncResult` by handling waiting, initial, success, error, defect, interrupt, and failure cases.

Callers

nothing calls this directly

Calls 4

isIterableFunction · 0.90
isAsyncResultFunction · 0.85
isSuccessFunction · 0.70
successFunction · 0.70

Tested by

no test coverage detected