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

Function fromEffect

packages/effect/src/RequestResolver.ts:439–460  ·  view source on GitHub ↗
(
  f: (entry: Request.Entry<A>) => Effect.Effect<Request.Success<A>, Request.Error<A>>
)

Source from the content-addressed store, hash-verified

437 * @since 2.0.0
438 */
439export const fromEffect = <A extends Request.Any>(
440 f: (entry: Request.Entry<A>) => Effect.Effect<Request.Success<A>, Request.Error<A>>
441): RequestResolver<A> => {
442 effect.interruptChildrenPatch() // ensure middleware is registered
443 return make((entries) =>
444 Effect.callback<void>((resume) => {
445 const parent = effect.getCurrentFiber()!
446 let done = 0
447 for (let i = 0; i < entries.length; i++) {
448 const entry = entries[i]
449 const fiber = effect.forkUnsafe(parent as any, f(entry), true)
450 fiber.addObserver((exit) => {
451 entry.completeUnsafe(exit)
452 done++
453 if (done === entries.length) {
454 resume(effect.void)
455 }
456 })
457 }
458 })
459 )
460}
461
462/**
463 * Constructs a request resolver from a list of tags paired to functions, that takes

Callers

nothing calls this directly

Calls 5

addObserverMethod · 0.80
completeUnsafeMethod · 0.80
makeFunction · 0.70
fFunction · 0.50
resumeFunction · 0.50

Tested by

no test coverage detected