MCPcopy
hub / github.com/Effect-TS/effect / fromAcquire

Function fromAcquire

packages/effect/src/internal/scopedRef.ts:42–64  ·  view source on GitHub ↗
(
  acquire: Effect.Effect<A, E, R>
)

Source from the content-addressed store, hash-verified

40
41/** @internal */
42export const fromAcquire = <A, E, R>(
43 acquire: Effect.Effect<A, E, R>
44): Effect.Effect<ScopedRef.ScopedRef<A>, E, R | Scope.Scope> =>
45 core.uninterruptible(
46 fiberRuntime.scopeMake().pipe(core.flatMap((newScope) =>
47 acquire.pipe(
48 core.mapInputContext<R, Scope.Scope | R>(Context.add(fiberRuntime.scopeTag, newScope)),
49 core.onError((cause) => newScope.close(core.exitFail(cause))),
50 core.flatMap((value) =>
51 circular.makeSynchronized([newScope, value] as const).pipe(
52 core.flatMap((ref) => {
53 const scopedRef = Object.create(proto)
54 scopedRef.ref = ref
55 return pipe(
56 fiberRuntime.addFinalizer(() => close(scopedRef)),
57 core.as(scopedRef)
58 )
59 })
60 )
61 )
62 )
63 ))
64 )
65
66/** @internal */
67export const get = <A>(self: ScopedRef.ScopedRef<A>): Effect.Effect<A> =>

Callers 1

makeFunction · 0.85

Calls 8

onErrorMethod · 0.80
createMethod · 0.80
pipeFunction · 0.70
closeFunction · 0.70
pipeMethod · 0.65
addMethod · 0.65
closeMethod · 0.65
addFinalizerMethod · 0.65

Tested by

no test coverage detected