better-effect 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { U as AnyServiceToken, b as LayerProvider, r as LayerBackend } from "../index-Bg6ofRE1.mjs";
1
+ import { V as AnyServiceToken, t as LayerBackend, v as LayerProvider } from "../index-BYQKfyeJ.mjs";
2
2
  //#region src/adapters/iti.d.ts
3
3
  declare class ItiLayerBackend implements LayerBackend {
4
4
  private container;
@@ -1,4 +1,4 @@
1
- import { n as DuplicateServiceError, o as ServiceNotFoundError } from "../errors-CnvKqBpb.mjs";
1
+ import { n as DuplicateServiceError, o as ServiceNotFoundError } from "../errors-DlHCwICc.mjs";
2
2
  import { createContainer } from "iti";
3
3
  //#region src/adapters/iti.ts
4
4
  var ItiLayerBackend = class {
@@ -51,6 +51,10 @@ var LayerGeneratorYieldError = class extends Error {
51
51
  this.name = "LayerGeneratorYieldError";
52
52
  }
53
53
  };
54
+ /**
55
+ * @deprecated The public managed handle is `Runtime`; this error remains for
56
+ * compatibility with low-level Layer integrations.
57
+ */
54
58
  var BuiltLayerDisposedError = class extends Error {
55
59
  constructor() {
56
60
  super("Cannot run a program using a disposed Layer");
@@ -60,4 +64,4 @@ var BuiltLayerDisposedError = class extends Error {
60
64
  //#endregion
61
65
  export { LayerRegistrationError as a, LayerGeneratorYieldError as i, DuplicateServiceError as n, ServiceNotFoundError as o, LayerDisposeError as r, ServiceRuntimeNotConfiguredError as s, BuiltLayerDisposedError as t };
62
66
 
63
- //# sourceMappingURL=errors-CnvKqBpb.mjs.map
67
+ //# sourceMappingURL=errors-DlHCwICc.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors-CnvKqBpb.mjs","names":[],"sources":["../src/service/errors.ts","../src/layer/errors.ts"],"sourcesContent":["import type { AnyServiceToken } from './types'\n\nexport class ServiceRuntimeNotConfiguredError extends Error {\n constructor() {\n super('No ServiceResolver is available in the current runtime context')\n\n this.name = 'ServiceRuntimeNotConfiguredError'\n }\n}\n\nexport class ServiceNotFoundError extends Error {\n constructor(readonly service: AnyServiceToken) {\n super(`Service \"${service.name}\" was not provided`)\n\n this.name = 'ServiceNotFoundError'\n }\n}\n","import type { ServiceClass } from '../service'\n\nexport class DuplicateServiceError extends Error {\n constructor(readonly service: ServiceClass<any>) {\n super(`Duplicate service \"${service.name}\"`)\n\n this.name = 'DuplicateServiceError'\n }\n}\n\nexport class LayerRegistrationError extends Error {\n constructor(\n readonly service: ServiceClass<any> | undefined,\n readonly registrationCause: unknown,\n readonly cleanupCause?: unknown\n ) {\n super(service ? `Failed to register service \"${service.name}\"` : 'Failed to build Layer', {\n cause: registrationCause\n })\n\n this.name = 'LayerRegistrationError'\n }\n}\n\nexport class LayerDisposeError extends Error {\n constructor(readonly causes: readonly unknown[]) {\n super(`Failed to dispose Layer (${causes.length} error${causes.length === 1 ? '' : 's'})`)\n\n this.name = 'LayerDisposeError'\n }\n}\n\nexport class LayerGeneratorYieldError extends Error {\n constructor(readonly service: ServiceClass<any>) {\n super(`Layer.gen(\"${service.name}\") yielded an unsupported value`)\n\n this.name = 'LayerGeneratorYieldError'\n }\n}\n\nexport class BuiltLayerDisposedError extends Error {\n constructor() {\n super('Cannot run a program using a disposed Layer')\n\n this.name = 'BuiltLayerDisposedError'\n }\n}\n"],"mappings":";AAEA,IAAa,mCAAb,cAAsD,MAAM;CAC1D,cAAc;EACZ,MAAM,gEAAgE;EAEtE,KAAK,OAAO;CACd;AACF;AAEA,IAAa,uBAAb,cAA0C,MAAM;CACzB;CAArB,YAAY,SAAmC;EAC7C,MAAM,YAAY,QAAQ,KAAK,mBAAmB;EAD/B,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF;;;ACdA,IAAa,wBAAb,cAA2C,MAAM;CAC1B;CAArB,YAAY,SAAqC;EAC/C,MAAM,sBAAsB,QAAQ,KAAK,EAAE;EADxB,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF;AAEA,IAAa,yBAAb,cAA4C,MAAM;CAErC;CACA;CACA;CAHX,YACE,SACA,mBACA,cACA;EACA,MAAM,UAAU,+BAA+B,QAAQ,KAAK,KAAK,yBAAyB,EACxF,OAAO,kBACT,CAAC;EANQ,KAAA,UAAA;EACA,KAAA,oBAAA;EACA,KAAA,eAAA;EAMT,KAAK,OAAO;CACd;AACF;AAEA,IAAa,oBAAb,cAAuC,MAAM;CACtB;CAArB,YAAY,QAAqC;EAC/C,MAAM,4BAA4B,OAAO,OAAO,QAAQ,OAAO,WAAW,IAAI,KAAK,IAAI,EAAE;EADtE,KAAA,SAAA;EAGnB,KAAK,OAAO;CACd;AACF;AAEA,IAAa,2BAAb,cAA8C,MAAM;CAC7B;CAArB,YAAY,SAAqC;EAC/C,MAAM,cAAc,QAAQ,KAAK,gCAAgC;EAD9C,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF;AAEA,IAAa,0BAAb,cAA6C,MAAM;CACjD,cAAc;EACZ,MAAM,6CAA6C;EAEnD,KAAK,OAAO;CACd;AACF"}
1
+ {"version":3,"file":"errors-DlHCwICc.mjs","names":[],"sources":["../src/service/errors.ts","../src/layer/errors.ts"],"sourcesContent":["import type { AnyServiceToken } from './types'\n\nexport class ServiceRuntimeNotConfiguredError extends Error {\n constructor() {\n super('No ServiceResolver is available in the current runtime context')\n\n this.name = 'ServiceRuntimeNotConfiguredError'\n }\n}\n\nexport class ServiceNotFoundError extends Error {\n constructor(readonly service: AnyServiceToken) {\n super(`Service \"${service.name}\" was not provided`)\n\n this.name = 'ServiceNotFoundError'\n }\n}\n","import type { ServiceClass } from '../service'\n\nexport class DuplicateServiceError extends Error {\n constructor(readonly service: ServiceClass<any>) {\n super(`Duplicate service \"${service.name}\"`)\n\n this.name = 'DuplicateServiceError'\n }\n}\n\nexport class LayerRegistrationError extends Error {\n constructor(\n readonly service: ServiceClass<any> | undefined,\n readonly registrationCause: unknown,\n readonly cleanupCause?: unknown\n ) {\n super(service ? `Failed to register service \"${service.name}\"` : 'Failed to build Layer', {\n cause: registrationCause\n })\n\n this.name = 'LayerRegistrationError'\n }\n}\n\nexport class LayerDisposeError extends Error {\n constructor(readonly causes: readonly unknown[]) {\n super(`Failed to dispose Layer (${causes.length} error${causes.length === 1 ? '' : 's'})`)\n\n this.name = 'LayerDisposeError'\n }\n}\n\nexport class LayerGeneratorYieldError extends Error {\n constructor(readonly service: ServiceClass<any>) {\n super(`Layer.gen(\"${service.name}\") yielded an unsupported value`)\n\n this.name = 'LayerGeneratorYieldError'\n }\n}\n\n/**\n * @deprecated The public managed handle is `Runtime`; this error remains for\n * compatibility with low-level Layer integrations.\n */\nexport class BuiltLayerDisposedError extends Error {\n constructor() {\n super('Cannot run a program using a disposed Layer')\n\n this.name = 'BuiltLayerDisposedError'\n }\n}\n"],"mappings":";AAEA,IAAa,mCAAb,cAAsD,MAAM;CAC1D,cAAc;EACZ,MAAM,gEAAgE;EAEtE,KAAK,OAAO;CACd;AACF;AAEA,IAAa,uBAAb,cAA0C,MAAM;CACzB;CAArB,YAAY,SAAmC;EAC7C,MAAM,YAAY,QAAQ,KAAK,mBAAmB;EAD/B,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF;;;ACdA,IAAa,wBAAb,cAA2C,MAAM;CAC1B;CAArB,YAAY,SAAqC;EAC/C,MAAM,sBAAsB,QAAQ,KAAK,EAAE;EADxB,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF;AAEA,IAAa,yBAAb,cAA4C,MAAM;CAErC;CACA;CACA;CAHX,YACE,SACA,mBACA,cACA;EACA,MAAM,UAAU,+BAA+B,QAAQ,KAAK,KAAK,yBAAyB,EACxF,OAAO,kBACT,CAAC;EANQ,KAAA,UAAA;EACA,KAAA,oBAAA;EACA,KAAA,eAAA;EAMT,KAAK,OAAO;CACd;AACF;AAEA,IAAa,oBAAb,cAAuC,MAAM;CACtB;CAArB,YAAY,QAAqC;EAC/C,MAAM,4BAA4B,OAAO,OAAO,QAAQ,OAAO,WAAW,IAAI,KAAK,IAAI,EAAE;EADtE,KAAA,SAAA;EAGnB,KAAK,OAAO;CACd;AACF;AAEA,IAAa,2BAAb,cAA8C,MAAM;CAC7B;CAArB,YAAY,SAAqC;EAC/C,MAAM,cAAc,QAAQ,KAAK,gCAAgC;EAD9C,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF;;;;;AAMA,IAAa,0BAAb,cAA6C,MAAM;CACjD,cAAc;EACZ,MAAM,6CAA6C;EAEnD,KAAK,OAAO;CACd;AACF"}
@@ -174,7 +174,14 @@ declare class Layer<Specs extends AnyLayerSpec = AnyLayerSpec> {
174
174
  private constructor();
175
175
  static make<S extends ServiceClass<any>>(service: S, acquire: () => MaybePromise<InstanceType<S>>): Layer<LayerSpec<S, ServiceRequirements<S>>>;
176
176
  static succeed<S extends ServiceClass<any>>(service: S, instance: InstanceType<S>): Layer<LayerSpec<S, ServiceRequirements<S>>>;
177
+ /**
178
+ * Define a dependency-free provider with Runtime-root cleanup.
179
+ *
180
+ * The release callback intentionally keeps its compatibility-friendly
181
+ * one-argument shape. Use `scopedGen` when cleanup needs `ScopeOutcome`.
182
+ */
177
183
  static scoped<S extends ServiceClass<any>>(service: S, acquire: () => MaybePromise<InstanceType<S>>, release: (instance: InstanceType<S>) => MaybePromise<void>): Layer<LayerSpec<S, ServiceRequirements<S>>>;
184
+ /** Define a contextual provider with Runtime-root, outcome-aware cleanup. */
178
185
  static scopedGen<S extends ServiceClass<any>, Yield extends ServiceRequirement<AnyServiceToken>>(service: S, factory: LayerGenerator<S, Yield>, release: (instance: InstanceType<S>, outcome: ScopeOutcome) => MaybePromise<void>): Layer<LayerSpec<S, LayerGeneratorRequirements<S, Yield>>>;
179
186
  static gen<S extends ServiceClass<any>, Yield extends ServiceRequirement<AnyServiceToken>>(service: S, factory: LayerGenerator<S, Yield>): Layer<LayerSpec<S, LayerGeneratorRequirements<S, Yield>>>;
180
187
  static merge<const Layers extends readonly Layer<any>[]>(...layers: Layers): Layer<Layers[number] extends Layer<infer Specs> ? Specs : never>;
@@ -200,6 +207,10 @@ declare class LayerGeneratorYieldError extends Error {
200
207
  readonly service: ServiceClass<any>;
201
208
  constructor(service: ServiceClass<any>);
202
209
  }
210
+ /**
211
+ * @deprecated The public managed handle is `Runtime`; this error remains for
212
+ * compatibility with low-level Layer integrations.
213
+ */
203
214
  declare class BuiltLayerDisposedError extends Error {
204
215
  constructor();
205
216
  }
@@ -220,13 +231,5 @@ interface LayerBackend extends ServiceResolver {
220
231
  disposeAll(): void | PromiseLike<void>;
221
232
  }
222
233
  //#endregion
223
- //#region src/layer/runtime.d.ts
224
- interface BuiltLayer<Provided extends AnyServiceToken = AnyServiceToken> {
225
- readonly backend: LayerBackend;
226
- run<A>(program: CompleteExecution<Provided, A>): Promise<Awaited<A>>;
227
- dispose(outcome?: ScopeOutcome): Promise<void>;
228
- }
229
- declare const buildLayer: <L extends AnyLayer>(layer: CompleteLayer<L>, backend: LayerBackend, options?: RuntimeOptions) => Promise<BuiltLayer<LayerProvided<L>>>;
230
- //#endregion
231
- export { ServiceNotFoundError as A, EffectSuccess as B, MaybePromise$1 as C, ScopeCloseError as D, ResourceNotDisposableError as E, AnyEffectResult as F, ServiceInstance as G, ServiceRequirement as H, EffectError as I, ServiceRequirements as K, EffectFromGenerator as L, ServiceResolver as M, ServiceRuntime as N, ScopeClosedError as O, Service as P, EffectRequirements as R, DisposableResource as S, ScopeOutcome as T, AnyServiceToken as U, EffectYield as V, ServiceClass as W, LayerProvided as _, RuntimeOptions as a, LayerProvider as b, DuplicateServiceError as c, LayerRegistrationError as d, Layer as f, LayerMissing as g, CompleteLayer as h, CleanupFailureObserver as i, ServiceRuntimeNotConfiguredError as j, ScopeRuntimeNotConfiguredError as k, LayerDisposeError as l, CompleteExecution as m, buildLayer as n, RuntimeShutdownDiagnostic as o, AnyLayer as p, ServiceToken as q, LayerBackend as r, BuiltLayerDisposedError as s, BuiltLayer as t, LayerGeneratorYieldError as u, LayerRawRequired as v, ScopeFinalizer as w, CleanupFailureDiagnostic as x, LayerSpecs as y, EffectResult as z };
232
- //# sourceMappingURL=index-Bg6ofRE1.d.mts.map
234
+ export { ServiceResolver as A, ServiceRequirement as B, ScopeOutcome as C, ScopeRuntimeNotConfiguredError as D, ScopeClosedError as E, EffectFromGenerator as F, ServiceToken as G, ServiceClass as H, EffectRequirements as I, EffectResult as L, Service as M, AnyEffectResult as N, ServiceNotFoundError as O, EffectError as P, EffectSuccess as R, ScopeFinalizer as S, ScopeCloseError as T, ServiceInstance as U, AnyServiceToken as V, ServiceRequirements as W, LayerSpecs as _, BuiltLayerDisposedError as a, DisposableResource as b, LayerGeneratorYieldError as c, AnyLayer as d, CompleteExecution as f, LayerRawRequired as g, LayerProvided as h, RuntimeShutdownDiagnostic as i, ServiceRuntime as j, ServiceRuntimeNotConfiguredError as k, LayerRegistrationError as l, LayerMissing as m, CleanupFailureObserver as n, DuplicateServiceError as o, CompleteLayer as p, RuntimeOptions as r, LayerDisposeError as s, LayerBackend as t, Layer as u, LayerProvider as v, ResourceNotDisposableError as w, MaybePromise$1 as x, CleanupFailureDiagnostic as y, EffectYield as z };
235
+ //# sourceMappingURL=index-BYQKfyeJ.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BYQKfyeJ.d.mts","names":[],"sources":["../src/service/types.ts","../src/effect/types.ts","../src/service/service.ts","../src/service/runtime.ts","../src/service/errors.ts","../src/scope/errors.ts","../src/scope/types.ts","../src/utils/types.ts","../src/layer/types.ts","../src/layer/inference.ts","../src/layer/layer.ts","../src/layer/errors.ts","../src/runtime/outcome.ts","../src/layer/backend.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as ServiceNotFoundError, B as EffectSuccess, C as MaybePromise$1, D as ScopeCloseError, E as ResourceNotDisposableError, F as AnyEffectResult, G as ServiceInstance, H as ServiceRequirement, I as EffectError, K as ServiceRequirements, L as EffectFromGenerator, M as ServiceResolver, N as ServiceRuntime, O as ScopeClosedError, P as Service, R as EffectRequirements, S as DisposableResource, T as ScopeOutcome, U as AnyServiceToken, V as EffectYield, W as ServiceClass, _ as LayerProvided, a as RuntimeOptions, c as DuplicateServiceError, d as LayerRegistrationError, f as Layer, g as LayerMissing, h as CompleteLayer, i as CleanupFailureObserver, j as ServiceRuntimeNotConfiguredError, k as ScopeRuntimeNotConfiguredError, l as LayerDisposeError, m as CompleteExecution, n as buildLayer, o as RuntimeShutdownDiagnostic, p as AnyLayer, q as ServiceToken, r as LayerBackend, s as BuiltLayerDisposedError, t as BuiltLayer, u as LayerGeneratorYieldError, v as LayerRawRequired, w as ScopeFinalizer, x as CleanupFailureDiagnostic, y as LayerSpecs, z as EffectResult } from "./index-Bg6ofRE1.mjs";
1
+ import { A as ServiceResolver, B as ServiceRequirement, C as ScopeOutcome, D as ScopeRuntimeNotConfiguredError, E as ScopeClosedError, F as EffectFromGenerator, G as ServiceToken, H as ServiceClass, I as EffectRequirements, L as EffectResult, M as Service, N as AnyEffectResult, O as ServiceNotFoundError, P as EffectError, R as EffectSuccess, S as ScopeFinalizer, T as ScopeCloseError, U as ServiceInstance, V as AnyServiceToken, W as ServiceRequirements, _ as LayerSpecs, a as BuiltLayerDisposedError, b as DisposableResource, c as LayerGeneratorYieldError, d as AnyLayer, f as CompleteExecution, g as LayerRawRequired, h as LayerProvided, i as RuntimeShutdownDiagnostic, j as ServiceRuntime, k as ServiceRuntimeNotConfiguredError, l as LayerRegistrationError, m as LayerMissing, n as CleanupFailureObserver, o as DuplicateServiceError, p as CompleteLayer, r as RuntimeOptions, s as LayerDisposeError, t as LayerBackend, u as Layer, w as ResourceNotDisposableError, x as MaybePromise$1, y as CleanupFailureDiagnostic, z as EffectYield } from "./index-BYQKfyeJ.mjs";
2
2
  import { Err, Result, UnhandledException } from "better-result";
3
3
  //#region src/scope/scope.d.ts
4
4
  interface Scope {
@@ -15,9 +15,40 @@ declare const Scope: {
15
15
  readonly current: () => Scope;
16
16
  readonly provide: <A>(scope: Scope, program: () => A) => A;
17
17
  readonly [Symbol.iterator]: () => Generator<never, Scope, unknown>;
18
+ /**
19
+ * Run a program in a newly owned Scope.
20
+ *
21
+ * Scope is independent from `better-result`, so returned values—including
22
+ * `Result.err`—close this Scope with a successful outcome. Result-aware
23
+ * outcome classification belongs to `Runtime.run`.
24
+ */
18
25
  readonly run: <A>(program: (scope: Scope) => A | PromiseLike<A>) => Promise<Awaited<A>>;
19
26
  };
20
27
  //#endregion
28
+ //#region src/effect/combinators.d.ts
29
+ type EffectInput<A, E, Requirements> = EffectResult<A, E, Requirements> | PromiseLike<EffectResult<A, E, Requirements>>;
30
+ type AnyEffectInput = EffectInput<any, any, any>;
31
+ type PreserveAsync<Input, Output> = Input extends PromiseLike<unknown> ? Promise<Output> : Output;
32
+ type MappedResult<Input, B> = EffectResult<B, EffectError<Input>, EffectRequirements<Input>>;
33
+ type ErrorMappedResult<Input, E2> = EffectResult<EffectSuccess<Input>, E2, EffectRequirements<Input>>;
34
+ type ChainedResult<First, Next> = EffectResult<EffectSuccess<Next>, EffectError<First> | EffectError<Next>, EffectRequirements<First> | EffectRequirements<Next>>;
35
+ type ChainedOutput<First, Next> = First extends PromiseLike<unknown> ? Promise<ChainedResult<First, Next>> : Next extends PromiseLike<unknown> ? Promise<ChainedResult<First, Next>> : ChainedResult<First, Next>;
36
+ type MapOperation<A, B> = {
37
+ <Input>(effect: Input & EffectInput<A, any, any>): PreserveAsync<Input, MappedResult<Input, B>>;
38
+ };
39
+ type MapErrorOperation<E1, E2> = {
40
+ <Input>(effect: Input & EffectInput<any, E1, any>): PreserveAsync<Input, ErrorMappedResult<Input, E2>>;
41
+ };
42
+ type AndThenOperation<A, Next> = {
43
+ <Input>(effect: Input & EffectInput<A, any, any>): ChainedOutput<Input, Next>;
44
+ };
45
+ declare function map<A, B>(fn: (value: A) => B): MapOperation<A, B>;
46
+ declare function map<Input, B>(effect: Input & AnyEffectInput, fn: (value: EffectSuccess<Input>) => B): PreserveAsync<Input, MappedResult<Input, B>>;
47
+ declare function mapError<E1, E2>(fn: (error: E1) => E2): MapErrorOperation<E1, E2>;
48
+ declare function mapError<Input, E2>(effect: Input & AnyEffectInput, fn: (error: EffectError<Input>) => E2): PreserveAsync<Input, ErrorMappedResult<Input, E2>>;
49
+ declare function andThen<A, Next extends AnyEffectInput>(next: (value: A) => Next): AndThenOperation<A, Next>;
50
+ declare function andThen<Input, Next extends AnyEffectInput>(effect: Input & AnyEffectInput, next: (value: EffectSuccess<Input>) => Next): ChainedOutput<Input, Next>;
51
+ //#endregion
21
52
  //#region src/effect/effect.d.ts
22
53
  type AnyResult = Result<any, any>;
23
54
  /**
@@ -44,8 +75,26 @@ declare const Effect: {
44
75
  readonly gen: typeof gen;
45
76
  readonly acquireRelease: typeof acquireRelease;
46
77
  readonly add: typeof add;
78
+ readonly map: typeof map;
79
+ readonly mapError: typeof mapError;
80
+ readonly andThen: typeof andThen;
47
81
  };
48
82
  //#endregion
83
+ //#region src/function/pipe.d.ts
84
+ type Unary<A, B> = (value: A) => B;
85
+ /** Compose a value through a sequence of unary functions. */
86
+ declare function pipe<A>(value: A): A;
87
+ declare function pipe<A, B>(value: A, ab: Unary<A, B>): B;
88
+ declare function pipe<A, B, C>(value: A, ab: Unary<A, B>, bc: Unary<B, C>): C;
89
+ declare function pipe<A, B, C, D>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>): D;
90
+ declare function pipe<A, B, C, D, E>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>, de: Unary<D, E>): E;
91
+ declare function pipe<A, B, C, D, E, F>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>, de: Unary<D, E>, ef: Unary<E, F>): F;
92
+ declare function pipe<A, B, C, D, E, F, G>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>, de: Unary<D, E>, ef: Unary<E, F>, fg: Unary<F, G>): G;
93
+ declare function pipe<A, B, C, D, E, F, G, H>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>, de: Unary<D, E>, ef: Unary<E, F>, fg: Unary<F, G>, gh: Unary<G, H>): H;
94
+ declare function pipe<A, B, C, D, E, F, G, H, I>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>, de: Unary<D, E>, ef: Unary<E, F>, fg: Unary<F, G>, gh: Unary<G, H>, hi: Unary<H, I>): I;
95
+ declare function pipe<A, B, C, D, E, F, G, H, I, J>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>, de: Unary<D, E>, ef: Unary<E, F>, fg: Unary<F, G>, gh: Unary<G, H>, hi: Unary<H, I>, ij: Unary<I, J>): J;
96
+ declare function pipe<A, B, C, D, E, F, G, H, I, J, K>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>, de: Unary<D, E>, ef: Unary<E, F>, fg: Unary<F, G>, gh: Unary<G, H>, hi: Unary<H, I>, ij: Unary<I, J>, jk: Unary<J, K>): K;
97
+ //#endregion
49
98
  //#region src/resource/errors.d.ts
50
99
  declare const ResourceReleaseFailure_base: import("better-result").TaggedErrorClass<"ResourceReleaseFailure">;
51
100
  declare class ResourceReleaseFailure extends ResourceReleaseFailure_base<{
@@ -84,10 +133,14 @@ declare const Resource: {
84
133
  declare class Runtime<Provided extends AnyServiceToken = AnyServiceToken> {
85
134
  private readonly built;
86
135
  private constructor();
136
+ /** Create a long-lived Runtime that owns its Layer resources. */
87
137
  static make<L extends AnyLayer>(layer: CompleteLayer<L>, backend: LayerBackend, options?: RuntimeOptions): Promise<Runtime<LayerProvided<L>>>;
138
+ /** Run one program and dispose its Layer resources before resolving. */
88
139
  static run<A, L extends AnyLayer>(layer: CompleteLayer<L>, backend: LayerBackend, program: CompleteExecution<LayerProvided<L>, A>, options?: RuntimeOptions): Promise<Awaited<A>>;
140
+ /** Run one execution in this Runtime's child Scope. */
89
141
  run<A>(program: CompleteExecution<Provided, A>): Promise<Awaited<A>>;
90
142
  private runUnchecked;
143
+ /** Stop new executions and release the Runtime's Layer resources. */
91
144
  dispose(): Promise<void>;
92
145
  private disposeWithOutcome;
93
146
  }
@@ -96,5 +149,5 @@ declare class Runtime<Provided extends AnyServiceToken = AnyServiceToken> {
96
149
  /** Runtime handle whose provided Services are inferred from a Layer. */
97
150
  type RuntimeFor<L extends AnyLayer> = Runtime<LayerProvided<L>>;
98
151
  //#endregion
99
- export { type AcquireUseReleaseOptions, type AnyEffectResult, type AnyServiceToken, type AsyncResult, type BuiltLayer, BuiltLayerDisposedError, type CleanupFailureDiagnostic, type CleanupFailureObserver, type CloseableScope, type DisposableResource, DuplicateServiceError, Effect, type EffectError, type EffectRequirements, type EffectResult, type EffectSuccess, type EffectYield, Layer, type LayerBackend, LayerDisposeError, LayerGeneratorYieldError, type LayerMissing, type LayerProvided, type LayerRawRequired, LayerRegistrationError, type LayerSpecs, type ReleaseFailureObserver, type ReleaseOutcome, Resource, ResourceNotDisposableError, ResourceReleaseFailure, Runtime, type RuntimeFor, type RuntimeOptions, type RuntimeShutdownDiagnostic, Scope, ScopeCloseError, ScopeClosedError, type ScopeFinalizer, type ScopeOutcome, ScopeRuntimeNotConfiguredError, Service, type ServiceClass, type ServiceInstance, ServiceNotFoundError, type ServiceRequirement, type ServiceRequirements, type ServiceResolver, ServiceRuntime, ServiceRuntimeNotConfiguredError, type ServiceToken, buildLayer };
152
+ export { type AcquireUseReleaseOptions, type AnyEffectResult, type AnyServiceToken, type AsyncResult, BuiltLayerDisposedError, type CleanupFailureDiagnostic, type CleanupFailureObserver, type CloseableScope, type DisposableResource, DuplicateServiceError, Effect, type EffectError, type EffectRequirements, type EffectResult, type EffectSuccess, type EffectYield, Layer, type LayerBackend, LayerDisposeError, LayerGeneratorYieldError, type LayerMissing, type LayerProvided, type LayerRawRequired, LayerRegistrationError, type LayerSpecs, type ReleaseFailureObserver, type ReleaseOutcome, Resource, ResourceNotDisposableError, ResourceReleaseFailure, Runtime, type RuntimeFor, type RuntimeOptions, type RuntimeShutdownDiagnostic, Scope, ScopeCloseError, ScopeClosedError, type ScopeFinalizer, type ScopeOutcome, ScopeRuntimeNotConfiguredError, Service, type ServiceClass, type ServiceInstance, ServiceNotFoundError, type ServiceRequirement, type ServiceRequirements, type ServiceResolver, ServiceRuntime, ServiceRuntimeNotConfiguredError, type ServiceToken, pipe };
100
153
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/scope/scope.ts","../src/effect/effect.ts","../src/resource/errors.ts","../src/resource/types.ts","../src/resource/resource.ts","../src/runtime/runtime.ts","../src/runtime/types.ts"],"mappings":";;;UAUiB;EACf,aAAa,WAAW;EAExB,QAAQ,GACN,eAAe,eAAa,IAC5B,UAAU,UAAU,GAAG,SAAS,iBAAiB,uBAChD,QAAQ;EAEX,IAAI,UAAU,oBAAoB,UAAU,IAAI,QAAQ;EAExD,QAAQ;;UAGO,uBAAuB;EACtC,MAAM,UAAU,eAAe;;cAgKpB;WACH,YAAA;WAIG,eAAA;WAIH,UAAA,GAAC,OAAS,OAAK,eAAiB,MAAI;YAKtB,OAAA,iBAAA,iBAAiB;WAInC,MAAA,GAAC,UAAY,OAAO,UAAU,IAAI,YAAY,OAAK,QAAQ,QAAQ;;;;KChMpE,YAAY;;;;;iBAcD,IAAI,cAAc,aAAa,iBAAiB,WAC9D,YAAY,UAAU,OAAO,qBAC5B,oBAAoB,OAAO;iBAEd,IAAI,cAAc,aAAa,iBAAiB,WAC9D,YAAY,eAAe,OAAO,qBACjC,QAAQ,oBAAoB,OAAO;;;;;;;iBAmBtB,eAAe,GAC7B,eAAe,eAAa,IAC5B,UAAU,UAAU,GAAG,SAAS,iBAAiB,uBAChD,eAAe,WAAW,qBAAqB;;;;;;;iBAYlC,IAAI,UAAU,oBAC5B,UAAU,IACT,eAAe,WAAW,qBAAqB;cAMrC;;;;;;;;cCtEA,+BAA+B;WACjC;WACA;WACA;;;;KCCC,aAAa,KAAK,IAAI,YAAY;KAElC,YAAY,GAAG,KAAK,aAAa,OAAW,GAAG;KAE/C,wBAAwB;KAExB,0BAA0B,SAAS,2BAA2B;KAE9D,yBAAyB,GAAG,GAAG,cAAc;WAC9C;WAEA,eAAe,YAAY,GAAG;WAE9B,MAAM,UAAU,MAAM,YAAY,GAAG;WAErC,WAAW,UAAU,MAAM,aAAa;;;;;;;;WASxC,mBAAmB;;;;cCpBxB,oBAAqB,GAAG,GAAG,cAAc,YAAQ,MAAA,SAAA,KAAA,SAAA,oBAMpD,yBAAyB,GAAG,GAAG,cAAc,cAAY,QAC1D,OAAW,GAAG,eAAe,WAAW,qBAAqB;cAoBlD;qCAAA;;;;cCpBA,QAAQ,iBAAiB,kBAAkB;mBACjB;UAA9B;SAEM,KAAK,UAAU,UAC1B,OAAO,cAAc,IACrB,SAAS,cACT,UAAS,iBACR,QAAQ,QAAQ,cAAc;SAMpB,IAAI,GAAG,UAAU,UAC5B,OAAO,cAAc,IACrB,SAAS,cACT,SAAS,kBAAkB,cAAc,IAAI,IAC7C,UAAS,iBACR,QAAQ,QAAQ;EAoDnB,IAAI,GAAG,SAAS,kBAAkB,UAAU,KAAK,QAAQ,QAAQ;UAIzD;EAIR,WAAW;UAIH;;;;;KC9FE,WAAW,UAAU,YAAY,QAAQ,cAAc"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/scope/scope.ts","../src/effect/combinators.ts","../src/effect/effect.ts","../src/function/pipe.ts","../src/resource/errors.ts","../src/resource/types.ts","../src/resource/resource.ts","../src/runtime/runtime.ts","../src/runtime/types.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as LayerRegistrationError, i as LayerGeneratorYieldError, n as DuplicateServiceError, o as ServiceNotFoundError, r as LayerDisposeError, s as ServiceRuntimeNotConfiguredError, t as BuiltLayerDisposedError } from "./errors-CnvKqBpb.mjs";
1
+ import { a as LayerRegistrationError, i as LayerGeneratorYieldError, n as DuplicateServiceError, o as ServiceNotFoundError, r as LayerDisposeError, s as ServiceRuntimeNotConfiguredError, t as BuiltLayerDisposedError } from "./errors-DlHCwICc.mjs";
2
2
  import { AsyncLocalStorage } from "node:async_hooks";
3
3
  import { Result, TaggedError } from "better-result";
4
4
  //#region src/service/runtime.ts
@@ -53,6 +53,12 @@ var Layer = class Layer {
53
53
  static succeed(service, instance) {
54
54
  return Layer.make(service, () => instance);
55
55
  }
56
+ /**
57
+ * Define a dependency-free provider with Runtime-root cleanup.
58
+ *
59
+ * The release callback intentionally keeps its compatibility-friendly
60
+ * one-argument shape. Use `scopedGen` when cleanup needs `ScopeOutcome`.
61
+ */
56
62
  static scoped(service, acquire, release) {
57
63
  return new Layer([{
58
64
  service,
@@ -60,6 +66,7 @@ var Layer = class Layer {
60
66
  release: (instance) => release(instance)
61
67
  }]);
62
68
  }
69
+ /** Define a contextual provider with Runtime-root, outcome-aware cleanup. */
63
70
  static scopedGen(service, factory, release) {
64
71
  return new Layer([{
65
72
  service,
@@ -291,6 +298,13 @@ const Scope = {
291
298
  *[Symbol.iterator]() {
292
299
  return ScopeRuntime.current();
293
300
  },
301
+ /**
302
+ * Run a program in a newly owned Scope.
303
+ *
304
+ * Scope is independent from `better-result`, so returned values—including
305
+ * `Result.err`—close this Scope with a successful outcome. Result-aware
306
+ * outcome classification belongs to `Runtime.run`.
307
+ */
294
308
  run(program) {
295
309
  const scope = new ScopeImpl();
296
310
  return runScoped(scope, () => program(scope), { classify: () => SCOPE_SUCCESS$1 });
@@ -405,6 +419,11 @@ var BuiltLayerImpl = class {
405
419
  if (this.state !== "active") throw new BuiltLayerDisposedError();
406
420
  }
407
421
  };
422
+ /**
423
+ * Build a low-level Layer handle.
424
+ *
425
+ * @deprecated Prefer `Runtime.make()` for application code.
426
+ */
408
427
  const buildLayer = async (layer, backend, options = {}) => {
409
428
  const rootScope = Scope.make();
410
429
  let current;
@@ -444,6 +463,37 @@ const buildLayer = async (layer, backend, options = {}) => {
444
463
  return new BuiltLayerImpl(backend, rootScope, options.onCleanupFailure);
445
464
  };
446
465
  //#endregion
466
+ //#region src/effect/combinators.ts
467
+ const isPromiseLike = (value) => {
468
+ if (typeof value !== "object" && typeof value !== "function" || value === null) return false;
469
+ return "then" in value && typeof value.then === "function";
470
+ };
471
+ const mapResult = (result, fn) => Result.map(result, fn);
472
+ const mapErrorResult = (result, fn) => Result.mapError(result, fn);
473
+ const andThenResult = (result, next) => {
474
+ const chained = Result.andThen(result, next);
475
+ if (!isPromiseLike(chained)) return chained;
476
+ return Result.andThenAsync(result, () => Promise.resolve(chained));
477
+ };
478
+ function map(first, second) {
479
+ if (typeof first === "function" && second === void 0) return (effect) => map(effect, first);
480
+ const fn = second;
481
+ if (isPromiseLike(first)) return Promise.resolve(first).then((result) => mapResult(result, fn));
482
+ return mapResult(first, fn);
483
+ }
484
+ function mapError(first, second) {
485
+ if (typeof first === "function" && second === void 0) return (effect) => mapError(effect, first);
486
+ const fn = second;
487
+ if (isPromiseLike(first)) return Promise.resolve(first).then((result) => mapErrorResult(result, fn));
488
+ return mapErrorResult(first, fn);
489
+ }
490
+ function andThen(first, second) {
491
+ if (typeof first === "function" && second === void 0) return (effect) => andThen(effect, first);
492
+ const next = second;
493
+ if (isPromiseLike(first)) return Promise.resolve(first).then((result) => andThenResult(result, next));
494
+ return andThenResult(first, next);
495
+ }
496
+ //#endregion
447
497
  //#region src/effect/effect.ts
448
498
  function gen(body) {
449
499
  return Result.gen(body);
@@ -471,9 +521,17 @@ function add(resource) {
471
521
  const Effect = {
472
522
  gen,
473
523
  acquireRelease,
474
- add
524
+ add,
525
+ map,
526
+ mapError,
527
+ andThen
475
528
  };
476
529
  //#endregion
530
+ //#region src/function/pipe.ts
531
+ function pipe(value, ...operations) {
532
+ return operations.reduce((current, operation) => operation(current), value);
533
+ }
534
+ //#endregion
477
535
  //#region src/resource/errors.ts
478
536
  var ResourceReleaseFailure = class extends TaggedError("ResourceReleaseFailure") {};
479
537
  //#endregion
@@ -534,10 +592,12 @@ var Runtime = class Runtime {
534
592
  constructor(built) {
535
593
  this.built = built;
536
594
  }
595
+ /** Create a long-lived Runtime that owns its Layer resources. */
537
596
  static async make(layer, backend, options = {}) {
538
597
  const built = await buildLayer(layer, backend, options);
539
598
  return new Runtime(built);
540
599
  }
600
+ /** Run one program and dispose its Layer resources before resolving. */
541
601
  static async run(layer, backend, program, options = {}) {
542
602
  const runtime = await Runtime.make(layer, backend, options);
543
603
  let value;
@@ -574,12 +634,14 @@ var Runtime = class Runtime {
574
634
  if (executionFailed) throw executionFailure;
575
635
  return value;
576
636
  }
637
+ /** Run one execution in this Runtime's child Scope. */
577
638
  run(program) {
578
639
  return this.built.run(program);
579
640
  }
580
641
  runUnchecked(program) {
581
642
  return this.built.run(program);
582
643
  }
644
+ /** Stop new executions and release the Runtime's Layer resources. */
583
645
  dispose() {
584
646
  return this.built.dispose();
585
647
  }
@@ -588,6 +650,6 @@ var Runtime = class Runtime {
588
650
  }
589
651
  };
590
652
  //#endregion
591
- export { BuiltLayerDisposedError, DuplicateServiceError, Effect, Layer, LayerDisposeError, LayerGeneratorYieldError, LayerRegistrationError, Resource, ResourceNotDisposableError, ResourceReleaseFailure, Runtime, Scope, ScopeCloseError, ScopeClosedError, ScopeRuntimeNotConfiguredError, Service, ServiceNotFoundError, ServiceRuntime, ServiceRuntimeNotConfiguredError, buildLayer };
653
+ export { BuiltLayerDisposedError, DuplicateServiceError, Effect, Layer, LayerDisposeError, LayerGeneratorYieldError, LayerRegistrationError, Resource, ResourceNotDisposableError, ResourceReleaseFailure, Runtime, Scope, ScopeCloseError, ScopeClosedError, ScopeRuntimeNotConfiguredError, Service, ServiceNotFoundError, ServiceRuntime, ServiceRuntimeNotConfiguredError, pipe };
592
654
 
593
655
  //# sourceMappingURL=index.mjs.map