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

Function resolveRecord

packages/effect/src/Config.ts:464–493  ·  view source on GitHub ↗
(
  results: Record<string, Result.Result<Resolution<any>, EvaluationFailure>>
)

Source from the content-addressed store, hash-verified

462}
463
464const resolveRecord = (
465 results: Record<string, Result.Result<Resolution<any>, EvaluationFailure>>
466): Effect.Effect<Resolution<Record<string, any>>, EvaluationFailure> => {
467 const values: Record<string, any> = {}
468 let firstFailure: EvaluationFailure | undefined
469 let firstAbsent: Absent | undefined
470 let hasInput = false
471 for (const key in results) {
472 const result = results[key]
473 if (Result.isFailure(result)) {
474 firstFailure ??= result.failure
475 hasInput = hasInput || result.failure.hasInput
476 continue
477 }
478 const resolution = result.success
479 if (resolution._tag === "Absent") {
480 firstAbsent ??= resolution
481 } else {
482 InternalRecord.assignProperty(values, key, resolution.value)
483 hasInput = hasInput || resolution.hasInput
484 }
485 }
486 if (firstFailure !== undefined) {
487 return Effect.fail(evaluationFailure(firstFailure.error, hasInput))
488 }
489 if (firstAbsent !== undefined) {
490 return hasInput ? Effect.fail(evaluationFailure(firstAbsent.error, true)) : Effect.succeed(firstAbsent)
491 }
492 return Effect.succeed(resolved(values, hasInput))
493}
494
495/**
496 * Provides a fallback value when the config cannot resolve because none of its

Callers

nothing calls this directly

Calls 4

evaluationFailureFunction · 0.85
resolvedFunction · 0.70
failMethod · 0.45
succeedMethod · 0.45

Tested by

no test coverage detected