better-effect 0.8.0 → 0.9.2

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.
Files changed (35) hide show
  1. package/README.md +47 -0
  2. package/dist/adapters/iti.d.mts +3 -3
  3. package/dist/adapters/iti.mjs +2 -1
  4. package/dist/adapters/iti.mjs.map +1 -1
  5. package/dist/{internal-identity-Cm4-KIUj.mjs → errors-Dnjhzbt0.mjs} +2 -25
  6. package/dist/errors-Dnjhzbt0.mjs.map +1 -0
  7. package/dist/{index-BFgG9zZC.d.mts → index-1NLNdkJy.d.mts} +2 -2
  8. package/dist/{index-BFgG9zZC.d.mts.map → index-1NLNdkJy.d.mts.map} +1 -1
  9. package/dist/index-BJFBEsm5.d.mts +406 -0
  10. package/dist/index-BJFBEsm5.d.mts.map +1 -0
  11. package/dist/{index-fUyY0eNJ.d.mts → index-CYAgpM_5.d.mts} +28 -14
  12. package/dist/index-CYAgpM_5.d.mts.map +1 -0
  13. package/dist/index.d.mts +5 -320
  14. package/dist/index.mjs +142 -277
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/internal-identity-DmUpBeeL.mjs +27 -0
  17. package/dist/internal-identity-DmUpBeeL.mjs.map +1 -0
  18. package/dist/{map-layer-backend-CGibcwkc.d.mts → map-layer-backend-DMJauecV.d.mts} +2 -2
  19. package/dist/{map-layer-backend-CGibcwkc.d.mts.map → map-layer-backend-DMJauecV.d.mts.map} +1 -1
  20. package/dist/{map-layer-backend-BodcEeNA.mjs → map-layer-backend-gal-mcRv.mjs} +3 -2
  21. package/dist/{map-layer-backend-BodcEeNA.mjs.map → map-layer-backend-gal-mcRv.mjs.map} +1 -1
  22. package/dist/runtime/explicit.d.mts +1 -1
  23. package/dist/runtime/node.d.mts +1 -1
  24. package/dist/signal-Cl9tqGyX.mjs +270 -0
  25. package/dist/signal-Cl9tqGyX.mjs.map +1 -0
  26. package/dist/standard-services.d.mts +116 -0
  27. package/dist/standard-services.d.mts.map +1 -0
  28. package/dist/standard-services.mjs +180 -0
  29. package/dist/standard-services.mjs.map +1 -0
  30. package/dist/testing.d.mts +1 -1
  31. package/dist/testing.mjs +1 -1
  32. package/package.json +6 -2
  33. package/dist/index-fUyY0eNJ.d.mts.map +0 -1
  34. package/dist/index.d.mts.map +0 -1
  35. package/dist/internal-identity-Cm4-KIUj.mjs.map +0 -1
package/README.md CHANGED
@@ -113,6 +113,11 @@ await runtime.run(inspectDatabase)
113
113
  Scope. `Effect.fn` captures the generator as a lazy `Program` for Runtime
114
114
  boundaries; the callback form remains supported for compatibility.
115
115
 
116
+ `Program.all` keeps a collection lazy until the returned Program is run. Pass
117
+ `{ concurrency: n }` for a positive bounded FIFO worker pool; values retain
118
+ input order, and already-started Programs remain owned by the enclosing Runtime
119
+ execution when one returns an error.
120
+
116
121
  `Runtime.make(AppLive)` and `Runtime.run(AppLive, program)` use the built-in
117
122
  `MapLayerBackend`. Pass `{ backend: new ItiLayerBackend() }` when an external
118
123
  container is needed; `MemoryLayerBackend` remains its compatibility alias from
@@ -146,6 +151,10 @@ already acquired, dispose the backend and reject the Runtime. Optional
146
151
  observers expose Service resolution/acquisition, execution and Layer release
147
152
  events without coupling the core to an observability SDK:
148
153
 
154
+ Missing, circular, and provider-construction failures use the logical Service
155
+ tags in `ServiceNotFoundError`, `CircularDependencyError`, and
156
+ `ServiceAcquisitionError`; the latter preserves the original provider cause.
157
+
149
158
  ```ts
150
159
  const runtime = await Runtime.make(AppLive, {
151
160
  observers: [
@@ -333,6 +342,25 @@ Dependency resolution stays behind a pluggable backend.
333
342
 
334
343
  Your application can keep using ordinary Promises and existing libraries.
335
344
 
345
+ ### Optional standard services
346
+
347
+ Small host-backed services live behind `better-effect/standard-services` so the
348
+ core package stays explicit:
349
+
350
+ ```ts
351
+ import { Clock, ClockTest } from 'better-effect/standard-services'
352
+ import { Runtime, ServiceRuntime } from 'better-effect'
353
+
354
+ const ClockTestLive = ClockTest.layer(new Date('2025-01-01T00:00:00.000Z'))
355
+ const runtime = await Runtime.make(ClockTestLive)
356
+ const now = await runtime.run(async () => ServiceRuntime.resolve(Clock))
357
+ await runtime.dispose()
358
+ ```
359
+
360
+ The entrypoint also provides `Random`/`RandomSeeded`, `Logger`/`LoggerTest`,
361
+ `CurrentRequest`, and the compatible `CurrentAbortSignal` bridge. None is
362
+ installed implicitly; compose a normal Layer or use the provided test helpers.
363
+
336
364
  ---
337
365
 
338
366
  ## How it compares
@@ -427,6 +455,25 @@ step after an `Ok`. Use `Effect.andThenAsync` when the next operation returns a
427
455
  or already an `Err`. The pipeline carries the requirements of every step, so Runtime
428
456
  still rejects it when its Layer does not provide every required Service.
429
457
 
458
+ Observation helpers such as `Effect.tap`, `Effect.tapError`, and `Effect.tapBoth`
459
+ run only the active branch and return the original Result, so logging or metrics
460
+ do not change the pipeline's value or requirement channel.
461
+
462
+ Use `Effect.recover` or `Effect.recoverAsync` for an explicit fallback Result;
463
+ the fallback is evaluated only when the input is an `Err`, and its Service
464
+ requirements are included in the resulting type.
465
+
466
+ `Effect.flatten` removes one nested Result layer. `Effect.as` and `Effect.asVoid`
467
+ replace successful values while leaving the error and requirement channels intact.
468
+
469
+ `Effect.match` supports ordinary branch values as well as branch Effects. Only
470
+ the selected handler runs; Effect-valued handlers contribute both possible
471
+ error and Service requirement channels to the result type.
472
+
473
+ `Effect.all` collects already-created Effects in input order, while `Effect.zip`
474
+ is the two-value form; both union every input's error and Service requirements
475
+ and retain `better-result` short-circuiting.
476
+
430
477
  Use `Effect.gen` for larger workflows with several intermediate values, branches or
431
478
  procedural logic that already has a resolver. Use `Effect.fn` when the workflow should
432
479
  start at a Runtime boundary. Use `pipe` for concise, linear composition; all three
@@ -1,6 +1,6 @@
1
- import { N as AnyServiceToken } from "../index-BFgG9zZC.mjs";
2
- import "../index-fUyY0eNJ.mjs";
3
- import { a as LayerRegistration, n as LayerBackend } from "../map-layer-backend-CGibcwkc.mjs";
1
+ import { N as AnyServiceToken } from "../index-1NLNdkJy.mjs";
2
+ import "../index-CYAgpM_5.mjs";
3
+ import { a as LayerRegistration, n as LayerBackend } from "../map-layer-backend-DMJauecV.mjs";
4
4
  //#region src/adapters/iti.d.ts
5
5
  /**
6
6
  * ITI-backed Layer backend.
@@ -1,4 +1,5 @@
1
- import { l as ServiceNotFoundError, n as DuplicateServiceError, o as ServiceTagCollisionError, t as assertServiceCompatibility } from "../internal-identity-Cm4-KIUj.mjs";
1
+ import { a as ServiceTagCollisionError, c as ServiceNotFoundError, t as DuplicateServiceError } from "../errors-Dnjhzbt0.mjs";
2
+ import { t as assertServiceCompatibility } from "../internal-identity-DmUpBeeL.mjs";
2
3
  import { t as isPromiseLike } from "../runtime-CDcCF5cb.mjs";
3
4
  import { createContainer } from "iti";
4
5
  //#region src/adapters/iti.ts
@@ -1 +1 @@
1
- {"version":3,"file":"iti.mjs","names":[],"sources":["../../src/adapters/iti.ts"],"sourcesContent":["import { createContainer } from 'iti'\n\nimport {\n DuplicateServiceError,\n ServiceTagCollisionError,\n type LayerBackend,\n type LayerRegistration\n} from '../layer'\n\nimport { ServiceNotFoundError, type AnyServiceToken } from '../service'\n\nimport { assertServiceCompatibility } from '../layer/internal-identity'\nimport { isPromiseLike } from '../utils/runtime'\n\ntype LayerAcquiredValue = Awaited<ReturnType<LayerRegistration['acquire']>>\n\n/**\n * ITI-backed Layer backend.\n *\n * Install `iti` as the optional peer dependency and pass an instance to\n * `Runtime.make` when using ITI's container implementation.\n */\nexport class ItiLayerBackend implements LayerBackend {\n private container: any = createContainer()\n\n private readonly keys = new Map<string, string>()\n\n private readonly registered = new Map<string, AnyServiceToken>()\n\n private keyFor(token: AnyServiceToken): string {\n const tag = token.serviceTag\n const existing = this.keys.get(tag)\n\n if (existing) {\n return existing\n }\n\n const key = `better-effect:${tag}`\n\n this.keys.set(tag, key)\n\n return key\n }\n\n /** Register a Layer provider under its deterministic Service-tag key. */\n register(registration: LayerRegistration): void {\n const token = registration.service\n const tag = token.serviceTag\n const existing = this.registered.get(tag)\n\n if (existing === token) {\n throw new DuplicateServiceError(token)\n }\n\n if (existing) {\n throw new ServiceTagCollisionError(existing, token)\n }\n\n const key = this.keyFor(token)\n\n this.container = this.container.add({\n [key]: registration.acquire\n })\n\n this.registered.set(tag, token)\n }\n\n /** Resolve a registered Service through the ITI container. */\n resolve<T extends AnyServiceToken>(token: T): InstanceType<T> | PromiseLike<InstanceType<T>> {\n const registered = this.registered.get(token.serviceTag)\n\n if (registered === undefined) {\n throw new ServiceNotFoundError(token)\n }\n\n const key = this.keyFor(token)\n const resolved = this.container.get(key)\n\n const validate = (instance: LayerAcquiredValue): InstanceType<T> => {\n assertServiceCompatibility(token, registered, instance)\n\n // SAFETY: The registered tag and compatibility check establish the constructor-to-instance relationship after ITI erases it.\n return instance as InstanceType<T>\n }\n\n if (isPromiseLike(resolved)) {\n return Promise.resolve(resolved).then(validate)\n }\n\n return validate(resolved)\n }\n\n /** Dispose all ITI-managed provider instances. */\n async disposeAll(): Promise<void> {\n await this.container.disposeAll()\n }\n}\n"],"mappings":";;;;;;;;;;AAsBA,IAAa,kBAAb,MAAqD;CACnD,YAAyB,gBAAgB;CAEzC,uBAAwB,IAAI,IAAoB;CAEhD,6BAA8B,IAAI,IAA6B;CAE/D,OAAe,OAAgC;EAC7C,MAAM,MAAM,MAAM;EAClB,MAAM,WAAW,KAAK,KAAK,IAAI,GAAG;EAElC,IAAI,UACF,OAAO;EAGT,MAAM,MAAM,iBAAiB;EAE7B,KAAK,KAAK,IAAI,KAAK,GAAG;EAEtB,OAAO;CACT;;CAGA,SAAS,cAAuC;EAC9C,MAAM,QAAQ,aAAa;EAC3B,MAAM,MAAM,MAAM;EAClB,MAAM,WAAW,KAAK,WAAW,IAAI,GAAG;EAExC,IAAI,aAAa,OACf,MAAM,IAAI,sBAAsB,KAAK;EAGvC,IAAI,UACF,MAAM,IAAI,yBAAyB,UAAU,KAAK;EAGpD,MAAM,MAAM,KAAK,OAAO,KAAK;EAE7B,KAAK,YAAY,KAAK,UAAU,IAAI,GACjC,MAAM,aAAa,QACtB,CAAC;EAED,KAAK,WAAW,IAAI,KAAK,KAAK;CAChC;;CAGA,QAAmC,OAA0D;EAC3F,MAAM,aAAa,KAAK,WAAW,IAAI,MAAM,UAAU;EAEvD,IAAI,eAAe,KAAA,GACjB,MAAM,IAAI,qBAAqB,KAAK;EAGtC,MAAM,MAAM,KAAK,OAAO,KAAK;EAC7B,MAAM,WAAW,KAAK,UAAU,IAAI,GAAG;EAEvC,MAAM,YAAY,aAAkD;GAClE,2BAA2B,OAAO,YAAY,QAAQ;GAGtD,OAAO;EACT;EAEA,IAAI,cAAc,QAAQ,GACxB,OAAO,QAAQ,QAAQ,QAAQ,CAAC,CAAC,KAAK,QAAQ;EAGhD,OAAO,SAAS,QAAQ;CAC1B;;CAGA,MAAM,aAA4B;EAChC,MAAM,KAAK,UAAU,WAAW;CAClC;AACF"}
1
+ {"version":3,"file":"iti.mjs","names":[],"sources":["../../src/adapters/iti.ts"],"sourcesContent":["import { createContainer } from 'iti'\n\nimport {\n DuplicateServiceError,\n ServiceTagCollisionError,\n type LayerBackend,\n type LayerRegistration\n} from '../layer'\n\nimport { ServiceNotFoundError, type AnyServiceToken } from '../service'\n\nimport { assertServiceCompatibility } from '../layer/internal-identity'\nimport { isPromiseLike } from '../utils/runtime'\n\ntype LayerAcquiredValue = Awaited<ReturnType<LayerRegistration['acquire']>>\n\n/**\n * ITI-backed Layer backend.\n *\n * Install `iti` as the optional peer dependency and pass an instance to\n * `Runtime.make` when using ITI's container implementation.\n */\nexport class ItiLayerBackend implements LayerBackend {\n private container: any = createContainer()\n\n private readonly keys = new Map<string, string>()\n\n private readonly registered = new Map<string, AnyServiceToken>()\n\n private keyFor(token: AnyServiceToken): string {\n const tag = token.serviceTag\n const existing = this.keys.get(tag)\n\n if (existing) {\n return existing\n }\n\n const key = `better-effect:${tag}`\n\n this.keys.set(tag, key)\n\n return key\n }\n\n /** Register a Layer provider under its deterministic Service-tag key. */\n register(registration: LayerRegistration): void {\n const token = registration.service\n const tag = token.serviceTag\n const existing = this.registered.get(tag)\n\n if (existing === token) {\n throw new DuplicateServiceError(token)\n }\n\n if (existing) {\n throw new ServiceTagCollisionError(existing, token)\n }\n\n const key = this.keyFor(token)\n\n this.container = this.container.add({\n [key]: registration.acquire\n })\n\n this.registered.set(tag, token)\n }\n\n /** Resolve a registered Service through the ITI container. */\n resolve<T extends AnyServiceToken>(token: T): InstanceType<T> | PromiseLike<InstanceType<T>> {\n const registered = this.registered.get(token.serviceTag)\n\n if (registered === undefined) {\n throw new ServiceNotFoundError(token)\n }\n\n const key = this.keyFor(token)\n const resolved = this.container.get(key)\n\n const validate = (instance: LayerAcquiredValue): InstanceType<T> => {\n assertServiceCompatibility(token, registered, instance)\n\n // SAFETY: The registered tag and compatibility check establish the constructor-to-instance relationship after ITI erases it.\n return instance as InstanceType<T>\n }\n\n if (isPromiseLike(resolved)) {\n return Promise.resolve(resolved).then(validate)\n }\n\n return validate(resolved)\n }\n\n /** Dispose all ITI-managed provider instances. */\n async disposeAll(): Promise<void> {\n await this.container.disposeAll()\n }\n}\n"],"mappings":";;;;;;;;;;;AAsBA,IAAa,kBAAb,MAAqD;CACnD,YAAyB,gBAAgB;CAEzC,uBAAwB,IAAI,IAAoB;CAEhD,6BAA8B,IAAI,IAA6B;CAE/D,OAAe,OAAgC;EAC7C,MAAM,MAAM,MAAM;EAClB,MAAM,WAAW,KAAK,KAAK,IAAI,GAAG;EAElC,IAAI,UACF,OAAO;EAGT,MAAM,MAAM,iBAAiB;EAE7B,KAAK,KAAK,IAAI,KAAK,GAAG;EAEtB,OAAO;CACT;;CAGA,SAAS,cAAuC;EAC9C,MAAM,QAAQ,aAAa;EAC3B,MAAM,MAAM,MAAM;EAClB,MAAM,WAAW,KAAK,WAAW,IAAI,GAAG;EAExC,IAAI,aAAa,OACf,MAAM,IAAI,sBAAsB,KAAK;EAGvC,IAAI,UACF,MAAM,IAAI,yBAAyB,UAAU,KAAK;EAGpD,MAAM,MAAM,KAAK,OAAO,KAAK;EAE7B,KAAK,YAAY,KAAK,UAAU,IAAI,GACjC,MAAM,aAAa,QACtB,CAAC;EAED,KAAK,WAAW,IAAI,KAAK,KAAK;CAChC;;CAGA,QAAmC,OAA0D;EAC3F,MAAM,aAAa,KAAK,WAAW,IAAI,MAAM,UAAU;EAEvD,IAAI,eAAe,KAAA,GACjB,MAAM,IAAI,qBAAqB,KAAK;EAGtC,MAAM,MAAM,KAAK,OAAO,KAAK;EAC7B,MAAM,WAAW,KAAK,UAAU,IAAI,GAAG;EAEvC,MAAM,YAAY,aAAkD;GAClE,2BAA2B,OAAO,YAAY,QAAQ;GAGtD,OAAO;EACT;EAEA,IAAI,cAAc,QAAQ,GACxB,OAAO,QAAQ,QAAQ,QAAQ,CAAC,CAAC,KAAK,QAAQ;EAGhD,OAAO,SAAS,QAAQ;CAC1B;;CAGA,MAAM,aAA4B;EAChC,MAAM,KAAK,UAAU,WAAW;CAClC;AACF"}
@@ -94,29 +94,6 @@ var LayerGeneratorYieldError = class extends Error {
94
94
  }
95
95
  };
96
96
  //#endregion
97
- //#region src/layer/internal-identity.ts
98
- const serviceMemberNames = (token) => {
99
- const names = /* @__PURE__ */ new Set();
100
- let prototype = token.prototype;
101
- while (prototype && prototype !== Object.prototype) {
102
- for (const name of Object.getOwnPropertyNames(prototype)) if (name !== "constructor") names.add(name);
103
- for (const symbol of Object.getOwnPropertySymbols(prototype)) names.add(symbol);
104
- prototype = Object.getPrototypeOf(prototype);
105
- }
106
- return [...names];
107
- };
108
- /**
109
- * Check the runtime portion of a same-tag association before returning it.
110
- * TypeScript remains authoritative for full structural compatibility; this
111
- * check catches the common incompatible-method collision after erasure.
112
- */
113
- const assertServiceCompatibility = (requested, registered, instance) => {
114
- if (requested === registered || requested.serviceTag !== registered.serviceTag) return;
115
- const candidate = Object(instance);
116
- if (candidate !== instance) throw new ServiceTagCollisionError(registered, requested);
117
- for (const name of serviceMemberNames(requested)) if (!(name in candidate)) throw new ServiceTagCollisionError(registered, requested);
118
- };
119
- //#endregion
120
- export { LayerRegistrationError as a, ServiceAcquisitionError as c, LayerGeneratorYieldError as i, ServiceNotFoundError as l, DuplicateServiceError as n, ServiceTagCollisionError as o, LayerDisposeError as r, CircularDependencyError as s, assertServiceCompatibility as t, ServiceRuntimeNotConfiguredError as u };
97
+ export { ServiceTagCollisionError as a, ServiceNotFoundError as c, LayerRegistrationError as i, ServiceRuntimeNotConfiguredError as l, LayerDisposeError as n, CircularDependencyError as o, LayerGeneratorYieldError as r, ServiceAcquisitionError as s, DuplicateServiceError as t };
121
98
 
122
- //# sourceMappingURL=internal-identity-Cm4-KIUj.mjs.map
99
+ //# sourceMappingURL=errors-Dnjhzbt0.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-Dnjhzbt0.mjs","names":[],"sources":["../src/service/errors.ts","../src/layer/errors.ts"],"sourcesContent":["import type { AnyServiceToken } from './types'\n\nconst formatResolutionPath = (path: readonly AnyServiceToken[]): string =>\n path.map((service) => service.serviceTag).join(' → ')\n\n/** Thrown when a Service is accessed without an active runtime resolver. */\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\n/** Thrown when a runtime has no provider for the requested Service tag. */\nexport class ServiceNotFoundError extends Error {\n constructor(readonly service: AnyServiceToken) {\n super(`Service \"${service.serviceTag}\" was not provided`)\n\n this.name = 'ServiceNotFoundError'\n }\n}\n\n/** Thrown when resolving a Service re-enters a Service already in its path. */\nexport class CircularDependencyError extends Error {\n readonly path: readonly AnyServiceToken[]\n\n constructor(path: readonly AnyServiceToken[]) {\n const normalizedPath = Object.freeze([...path])\n\n super(`Circular Service dependency detected:\\n${formatResolutionPath(normalizedPath)}`)\n\n this.name = 'CircularDependencyError'\n this.path = normalizedPath\n }\n}\n\n/** Thrown when a registered Service provider fails during lazy acquisition. */\nexport class ServiceAcquisitionError extends Error {\n override readonly cause: unknown\n\n constructor(\n readonly service: AnyServiceToken,\n resolutionPath: readonly AnyServiceToken[],\n cause: unknown\n ) {\n const normalizedPath = Object.freeze([...resolutionPath])\n\n super(\n `Failed to acquire Service \"${service.serviceTag}\"` +\n (normalizedPath.length > 0\n ? ` while resolving: ${formatResolutionPath(normalizedPath)}`\n : '')\n )\n\n this.name = 'ServiceAcquisitionError'\n this.cause = cause\n this.resolutionPath = normalizedPath\n }\n\n readonly resolutionPath: readonly AnyServiceToken[]\n}\n","import type { AnyServiceToken, ServiceClass } from '../service'\nimport type { ScopeOutcome } from '../scope'\n\ntype LayerCause = Extract<ScopeOutcome, { readonly status: 'failure' }>['cause']\n\n/** Thrown when a Layer registers the same Service tag more than once. */\nexport class DuplicateServiceError extends Error {\n constructor(readonly service: ServiceClass<any>) {\n super(`Duplicate service tag \"${service.serviceTag}\"`)\n\n this.name = 'DuplicateServiceError'\n }\n}\n\n/** Thrown when one Service tag is associated with incompatible constructors. */\nexport class ServiceTagCollisionError extends Error {\n constructor(\n readonly existing: AnyServiceToken,\n readonly incoming: AnyServiceToken\n ) {\n super(\n `Service tag \"${incoming.serviceTag}\" is already associated with \"${existing.name}\" ` +\n `and cannot be associated with \"${incoming.name}\"`\n )\n\n this.name = 'ServiceTagCollisionError'\n }\n}\n\n/** Thrown when a backend fails while registering a Layer provider. */\nexport class LayerRegistrationError extends Error {\n constructor(\n readonly service: ServiceClass<any> | undefined,\n readonly registrationCause: LayerCause,\n readonly cleanupCause?: LayerCause\n ) {\n super(\n service ? `Failed to register service \"${service.serviceTag}\"` : 'Failed to build Layer',\n {\n cause: registrationCause\n }\n )\n\n this.name = 'LayerRegistrationError'\n }\n}\n\n/** Thrown when one or more Layer-owned resources fail during disposal. */\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\n/** Thrown when a Layer generator yields a value other than a Service requirement. */\nexport class LayerGeneratorYieldError extends Error {\n constructor(readonly service: ServiceClass<any>) {\n super(`Layer.gen(\"${service.serviceTag}\") yielded an unsupported value`)\n\n this.name = 'LayerGeneratorYieldError'\n }\n}\n"],"mappings":";AAEA,MAAM,wBAAwB,SAC5B,KAAK,KAAK,YAAY,QAAQ,UAAU,CAAC,CAAC,KAAK,KAAK;;AAGtD,IAAa,mCAAb,cAAsD,MAAM;CAC1D,cAAc;EACZ,MAAM,gEAAgE;EAEtE,KAAK,OAAO;CACd;AACF;;AAGA,IAAa,uBAAb,cAA0C,MAAM;CACzB;CAArB,YAAY,SAAmC;EAC7C,MAAM,YAAY,QAAQ,WAAW,mBAAmB;EADrC,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF;;AAGA,IAAa,0BAAb,cAA6C,MAAM;CACjD;CAEA,YAAY,MAAkC;EAC5C,MAAM,iBAAiB,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC;EAE9C,MAAM,0CAA0C,qBAAqB,cAAc,GAAG;EAEtF,KAAK,OAAO;EACZ,KAAK,OAAO;CACd;AACF;;AAGA,IAAa,0BAAb,cAA6C,MAAM;CAItC;CAHX;CAEA,YACE,SACA,gBACA,OACA;EACA,MAAM,iBAAiB,OAAO,OAAO,CAAC,GAAG,cAAc,CAAC;EAExD,MACE,8BAA8B,QAAQ,WAAW,MAC9C,eAAe,SAAS,IACrB,qBAAqB,qBAAqB,cAAc,MACxD,GACR;EAXS,KAAA,UAAA;EAaT,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,iBAAiB;CACxB;CAEA;AACF;;;;ACvDA,IAAa,wBAAb,cAA2C,MAAM;CAC1B;CAArB,YAAY,SAAqC;EAC/C,MAAM,0BAA0B,QAAQ,WAAW,EAAE;EADlC,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF;;AAGA,IAAa,2BAAb,cAA8C,MAAM;CAEvC;CACA;CAFX,YACE,UACA,UACA;EACA,MACE,gBAAgB,SAAS,WAAW,gCAAgC,SAAS,KAAK,mCAC9C,SAAS,KAAK,EACpD;EANS,KAAA,WAAA;EACA,KAAA,WAAA;EAOT,KAAK,OAAO;CACd;AACF;;AAGA,IAAa,yBAAb,cAA4C,MAAM;CAErC;CACA;CACA;CAHX,YACE,SACA,mBACA,cACA;EACA,MACE,UAAU,+BAA+B,QAAQ,WAAW,KAAK,yBACjE,EACE,OAAO,kBACT,CACF;EATS,KAAA,UAAA;EACA,KAAA,oBAAA;EACA,KAAA,eAAA;EAST,KAAK,OAAO;CACd;AACF;;AAGA,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;;AAGA,IAAa,2BAAb,cAA8C,MAAM;CAC7B;CAArB,YAAY,SAAqC;EAC/C,MAAM,cAAc,QAAQ,WAAW,gCAAgC;EADpD,KAAA,UAAA;EAGnB,KAAK,OAAO;CACd;AACF"}
@@ -370,5 +370,5 @@ declare class ServiceAcquisitionError extends Error {
370
370
  readonly resolutionPath: readonly AnyServiceToken[];
371
371
  }
372
372
  //#endregion
373
- export { ProgramFromGenerator as A, ServiceTagOf as B, EffectError as C, EffectYield as D, EffectSuccess as E, ServiceContract as F, ServiceTokenOf as H, ServiceIdentity as I, ServiceInstance as L, AnyService as M, AnyServiceToken as N, InferYieldRequirements as O, ServiceClass as P, ServiceRequirements as R, Effect as S, EffectRequirements as T, ServiceToken as V, ScopeCloseError as _, ServiceResolver as a, Service as b, RuntimeContextStorage as c, CleanupFailureDiagnostic as d, DisposableResource as f, ResourceNotDisposableError as g, ScopeOutcome as h, ServiceRuntimeNotConfiguredError as i, ServiceRequirement as j, Program as k, CloseableScope as l, ScopeFinalizer as m, ServiceAcquisitionError as n, ServiceRuntime as o, MaybePromise as p, ServiceNotFoundError as r, RuntimeContext as s, CircularDependencyError as t, Scope as u, ScopeClosedError as v, EffectFromGenerator as w, AnyEffect as x, ScopeRuntimeNotConfiguredError as y, ServiceTag as z };
374
- //# sourceMappingURL=index-BFgG9zZC.d.mts.map
373
+ export { ProgramFromGenerator as A, ServiceTag as B, EffectError as C, EffectYield as D, EffectSuccess as E, ServiceContract as F, ServiceToken as H, ServiceIdentity as I, ServiceIdentityTypeId as L, AnyService as M, AnyServiceToken as N, InferYieldRequirements as O, ServiceClass as P, ServiceInstance as R, Effect as S, EffectRequirements as T, ServiceTokenOf as U, ServiceTagOf as V, ScopeCloseError as _, ServiceResolver as a, Service as b, RuntimeContextStorage as c, CleanupFailureDiagnostic as d, DisposableResource as f, ResourceNotDisposableError as g, ScopeOutcome as h, ServiceRuntimeNotConfiguredError as i, ServiceRequirement as j, Program as k, CloseableScope as l, ScopeFinalizer as m, ServiceAcquisitionError as n, ServiceRuntime as o, MaybePromise as p, ServiceNotFoundError as r, RuntimeContext as s, CircularDependencyError as t, Scope as u, ScopeClosedError as v, EffectFromGenerator as w, AnyEffect as x, ScopeRuntimeNotConfiguredError as y, ServiceRequirements as z };
374
+ //# sourceMappingURL=index-1NLNdkJy.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BFgG9zZC.d.mts","names":[],"sources":["../src/service/types.ts","../src/effect/types.ts","../src/service/service.ts","../src/scope/errors.ts","../src/scope/types.ts","../src/scope/scope.ts","../src/runtime/context.ts","../src/service/runtime.ts","../src/service/errors.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index-1NLNdkJy.d.mts","names":[],"sources":["../src/service/types.ts","../src/effect/types.ts","../src/service/service.ts","../src/scope/errors.ts","../src/scope/types.ts","../src/scope/scope.ts","../src/runtime/context.ts","../src/service/runtime.ts","../src/service/errors.ts"],"mappings":"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"}
@@ -0,0 +1,406 @@
1
+ import { A as ProgramFromGenerator, C as EffectError, D as EffectYield, E as EffectSuccess, M as AnyService, S as Effect$1, T as EffectRequirements, f as DisposableResource, h as ScopeOutcome, k as Program$1, p as MaybePromise$1, w as EffectFromGenerator, x as AnyEffect } from "./index-1NLNdkJy.mjs";
2
+ import { C as ProvidedEnvironment, _ as Layer, a as RuntimeShutdownDiagnostic, b as CompleteInput, i as RuntimeRunOptions, n as RuntimeDisposeOptions, r as RuntimeOptions, v as CompleteExecution, x as LayerInput, y as CompleteExecutionLayer } from "./index-CYAgpM_5.mjs";
3
+ import { n as LayerBackend } from "./map-layer-backend-DMJauecV.mjs";
4
+ import { Err, Result, UnhandledException } from "better-result";
5
+ //#region src/effect/combinators.d.ts
6
+ type EffectInput<A, E> = Result<A, E> | PromiseLike<Result<A, E>>;
7
+ type AnyEffectInput = EffectInput<any, any>;
8
+ type AnyEffectValue = Result<any, any>;
9
+ type AnyAsyncEffectInput = PromiseLike<Result<any, any>>;
10
+ type PreserveAsync<Input, Output> = Input extends PromiseLike<unknown> ? Promise<Output> : Output;
11
+ type MappedResult<Input, B> = Effect$1<B, EffectError<Input>, EffectRequirements<Input>>;
12
+ type ErrorMappedResult<Input, E2> = Effect$1<EffectSuccess<Input>, E2, EffectRequirements<Input>>;
13
+ type ChainedResult<First, Next> = Effect$1<EffectSuccess<Next>, EffectError<First> | EffectError<Next>, EffectRequirements<First> | EffectRequirements<Next>>;
14
+ type ChainedOutput<First, Next> = ChainedResult<First, Next>;
15
+ type AsyncChainedOutput<First, Next> = Promise<ChainedResult<First, Next>>;
16
+ type MapOperation<A, B> = {
17
+ <Input>(effect: Input & EffectInput<A, any>): PreserveAsync<Input, MappedResult<Input, B>>;
18
+ };
19
+ type MapErrorOperation<E1, E2> = {
20
+ <Input>(effect: Input & EffectInput<any, E1>): PreserveAsync<Input, ErrorMappedResult<Input, E2>>;
21
+ };
22
+ type AndThenOperation<Next> = {
23
+ <Input>(effect: Input & AnyEffectValue): ChainedOutput<Input, Next>;
24
+ };
25
+ type AndThenAsyncOperation<A, Next> = {
26
+ <Input>(effect: Input & EffectInput<A, any>): AsyncChainedOutput<Input, Next>;
27
+ };
28
+ type TappedResult<Input> = Effect$1<EffectSuccess<Input>, EffectError<Input>, EffectRequirements<Input>>;
29
+ type RecoveredResult<Input, Next> = Effect$1<EffectSuccess<Input> | EffectSuccess<Next>, EffectError<Next>, EffectRequirements<Input> | EffectRequirements<Next>>;
30
+ type FlattenedResult<Input> = Effect$1<EffectSuccess<EffectSuccess<Input>>, EffectError<Input> | EffectError<EffectSuccess<Input>>, EffectRequirements<Input> | EffectRequirements<EffectSuccess<Input>>>;
31
+ type AsResult<Input, Value> = Effect$1<Value, EffectError<Input>, EffectRequirements<Input>>;
32
+ type MatchedResult<Input, OkResult, ErrResult> = Effect$1<EffectSuccess<OkResult> | EffectSuccess<ErrResult>, EffectError<OkResult> | EffectError<ErrResult>, EffectRequirements<Input> | EffectRequirements<OkResult> | EffectRequirements<ErrResult>>;
33
+ type AllResult<Results extends readonly AnyEffectValue[]> = Effect$1<{ -readonly [Index in keyof Results]: EffectSuccess<Results[Index]>; }, EffectError<Results[number]>, EffectRequirements<Results[number]>>;
34
+ type ZipResult<Left, Right> = Effect$1<[EffectSuccess<Left>, EffectSuccess<Right>], EffectError<Left> | EffectError<Right>, EffectRequirements<Left> | EffectRequirements<Right>>;
35
+ type TapOperation = {
36
+ <Input>(effect: Input & AnyEffectInput, fn: (value: EffectSuccess<Input>) => void): PreserveAsync<Input, TappedResult<Input>>;
37
+ };
38
+ type TapErrorOperation = {
39
+ <Input>(effect: Input & AnyEffectInput, fn: (error: EffectError<Input>) => void): PreserveAsync<Input, TappedResult<Input>>;
40
+ };
41
+ type TapBothOperation = {
42
+ <Input>(effect: Input & AnyEffectInput, handlers: {
43
+ ok: (value: EffectSuccess<Input>) => void;
44
+ err: (error: EffectError<Input>) => void;
45
+ }): PreserveAsync<Input, TappedResult<Input>>;
46
+ };
47
+ type RecoverOperation<Next> = {
48
+ <Input>(effect: Input & AnyEffectInput, fn: (error: EffectError<Input>) => Next): PreserveAsync<Input, RecoveredResult<Input, Next>>;
49
+ };
50
+ type RecoverAsyncOperation<Next> = {
51
+ <Input>(effect: Input & AnyEffectInput, fn: (error: EffectError<Input>) => Next): Promise<RecoveredResult<Input, Next>>;
52
+ };
53
+ /**
54
+ * Map the successful value of a Result or Effect result.
55
+ *
56
+ * Supports both data-first and data-last forms and preserves asynchronous
57
+ * results and declaration-only Service requirements.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const doubled = Effect.map(Result.ok(2), (value) => value * 2)
62
+ * const toLabel = Effect.map((value: number) => `#${value}`)
63
+ * ```
64
+ */
65
+ declare function map<A, B>(fn: (value: A) => B): MapOperation<A, B>;
66
+ declare function map<Input, B>(effect: Input & AnyEffectInput, fn: (value: EffectSuccess<Input>) => B): PreserveAsync<Input, MappedResult<Input, B>>;
67
+ /**
68
+ * Map the error value of a Result or Effect result while preserving its
69
+ * successful value, asynchronous shape, and declaration-only Service requirements.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * const labelled = Effect.mapError(Result.err('missing'), (error) => ({ error }))
74
+ * ```
75
+ */
76
+ declare function mapError<E1, E2>(fn: (error: E1) => E2): MapErrorOperation<E1, E2>;
77
+ declare function mapError<Input, E2>(effect: Input & AnyEffectInput, fn: (error: EffectError<Input>) => E2): PreserveAsync<Input, ErrorMappedResult<Input, E2>>;
78
+ /**
79
+ * Chain a synchronous Result-producing operation after a successful result.
80
+ *
81
+ * The next operation is skipped when the input is an error. Both error types
82
+ * and both sets of Service requirements are preserved in the output.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const user = Effect.andThen(Result.ok('u1'), (id) => repository.find(id))
87
+ * ```
88
+ */
89
+ declare function andThen<A, Next extends AnyEffectValue>(next: (value: A) => Next): AndThenOperation<Next>;
90
+ declare function andThen<Input, Next extends AnyEffectValue>(effect: Input & AnyEffectValue, next: (value: EffectSuccess<Input>) => Next): ChainedOutput<Input, Next>;
91
+ /**
92
+ * Chain an asynchronous Result-producing operation after a successful result.
93
+ *
94
+ * The returned value is always a Promise and retains both operations' error
95
+ * and Service-requirement metadata.
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * const user = Effect.andThenAsync(loadUser(), (user) => fetchProfile(user.id))
100
+ * ```
101
+ */
102
+ declare function andThenAsync<A, Next extends AnyAsyncEffectInput>(next: (value: A) => Next): AndThenAsyncOperation<A, Next>;
103
+ declare function andThenAsync<Input, Next extends AnyAsyncEffectInput>(effect: Input & AnyEffectInput, next: (value: EffectSuccess<Input>) => Next): AsyncChainedOutput<Input, Next>;
104
+ /** Observe a successful value without changing the Result. */
105
+ declare function tap(fn: (value: any) => void): TapOperation;
106
+ declare function tap<Input>(effect: Input & AnyEffectInput, fn: (value: EffectSuccess<Input>) => void): PreserveAsync<Input, TappedResult<Input>>;
107
+ /** Observe an error value without changing the Result. */
108
+ declare function tapError(fn: (error: any) => void): TapErrorOperation;
109
+ declare function tapError<Input>(effect: Input & AnyEffectInput, fn: (error: EffectError<Input>) => void): PreserveAsync<Input, TappedResult<Input>>;
110
+ /** Observe whichever Result branch is active without changing the Result. */
111
+ declare function tapBoth(handlers: {
112
+ ok: (value: any) => void;
113
+ err: (error: any) => void;
114
+ }): TapBothOperation;
115
+ declare function tapBoth<Input>(effect: Input & AnyEffectInput, handlers: {
116
+ ok: (value: EffectSuccess<Input>) => void;
117
+ err: (error: EffectError<Input>) => void;
118
+ }): PreserveAsync<Input, TappedResult<Input>>;
119
+ /** Recover an Err with a synchronous Result-producing callback. */
120
+ declare function recover<Next extends AnyEffectValue>(fn: (error: any) => Next): RecoverOperation<Next>;
121
+ declare function recover<Input, Next extends AnyEffectValue>(effect: Input & AnyEffectInput, fn: (error: EffectError<Input>) => Next): PreserveAsync<Input, RecoveredResult<Input, Next>>;
122
+ /** Recover an Err with an asynchronous Result-producing callback. */
123
+ declare function recoverAsync<Next extends AnyAsyncEffectInput>(fn: (error: any) => Next): RecoverAsyncOperation<Next>;
124
+ declare function recoverAsync<Input, Next extends AnyAsyncEffectInput>(effect: Input & AnyEffectInput, fn: (error: EffectError<Input>) => Next): Promise<RecoveredResult<Input, Next>>;
125
+ /** Remove one nested Result/Effect layer. */
126
+ declare function flatten<Input>(effect: Input & AnyEffectValue): FlattenedResult<Input>;
127
+ /** Replace a successful value while preserving errors and requirements. */
128
+ declare function as<Value>(value: Value): <Input>(effect: Input & AnyEffectValue) => AsResult<Input, Value>;
129
+ declare function as<Input, Value>(effect: Input & AnyEffectValue, value: Value): AsResult<Input, Value>;
130
+ /** Replace a successful value with void. */
131
+ declare function asVoid<Input>(effect: Input & AnyEffectValue): AsResult<Input, void>;
132
+ /** Match an Effect and return branch Effects with their channels unioned. */
133
+ declare function match<Input, OkResult extends AnyEffectValue, ErrResult extends AnyEffectValue>(effect: Input & AnyEffectValue, handlers: {
134
+ ok: (value: EffectSuccess<Input>) => OkResult;
135
+ err: (error: EffectError<Input>) => ErrResult;
136
+ }): PreserveAsync<Input, MatchedResult<Input, OkResult, ErrResult>>;
137
+ declare function match<Input, OkValue, ErrValue>(effect: Input & AnyEffectValue, handlers: {
138
+ ok: (value: EffectSuccess<Input>) => OkValue;
139
+ err: (error: EffectError<Input>) => ErrValue;
140
+ }): PreserveAsync<Input, OkValue | ErrValue>;
141
+ /** Collect already-created Effects in input order. */
142
+ declare function all<const Results extends readonly AnyEffectValue[]>(results: Results): AllResult<Results>;
143
+ /** Combine two already-created Effects in input order. */
144
+ declare function zip<Left, Right>(left: Left & AnyEffectValue, right: Right & AnyEffectValue): ZipResult<Left, Right>;
145
+ //#endregion
146
+ //#region src/effect/effect.d.ts
147
+ type Effect<A, E, R extends AnyService = never> = Effect$1<A, E, R>;
148
+ type LazyProgram<A, E, R extends AnyService = never> = Program$1<A, E, R>;
149
+ /** A nominal lazy computation that produces an Effect when invoked. */
150
+ type Program<A, E, R extends AnyService = never> = LazyProgram<A, E, R>;
151
+ type AnyResult = Result<any, any>;
152
+ type AnyProgram = Program$1<any, any, AnyService>;
153
+ type ProgramAllSuccess<Programs extends readonly AnyProgram[]> = { -readonly [Index in keyof Programs]: EffectSuccess<Programs[Index]>; };
154
+ type ProgramAllError<Programs extends readonly AnyProgram[]> = EffectError<Programs[number]>;
155
+ type ProgramAllRequirements<Programs extends readonly AnyProgram[]> = EffectRequirements<Programs[number]>;
156
+ type ProgramAllResult<Programs extends readonly AnyProgram[]> = Program$1<ProgramAllSuccess<Programs>, ProgramAllError<Programs>, ProgramAllRequirements<Programs>>;
157
+ type ProgramAllOptions = {
158
+ readonly concurrency?: number;
159
+ };
160
+ /**
161
+ * Compose `better-result` operations while preserving Service requirements in
162
+ * a declaration-only type channel.
163
+ *
164
+ * A generator may yield Service tokens and Result operations. It must return a
165
+ * `Result` as its final value; Service yields are resolved by the active
166
+ * Runtime and do not add runtime values to the Result stream.
167
+ * Use `fn` when generator execution should wait for a Runtime boundary.
168
+ *
169
+ * @example
170
+ * ```ts
171
+ * const loadUser = Effect.gen(async function* () {
172
+ * const database = yield* Database
173
+ * const user = yield* Result.await(database.findUser('u1'))
174
+ *
175
+ * return Result.ok(user)
176
+ * })
177
+ * ```
178
+ */
179
+ declare function gen<Yield extends EffectYield, Returned extends AnyResult>(body: () => Generator<Yield, Returned, unknown>): EffectFromGenerator<Yield, Returned>;
180
+ declare function gen<Yield extends EffectYield, Returned extends AnyResult>(body: () => AsyncGenerator<Yield, Returned, unknown>): Promise<EffectFromGenerator<Yield, Returned>>;
181
+ /** Build a lazy Program without running its generator. */
182
+ declare function fn<Yield extends EffectYield, Returned extends AnyResult>(body: () => Generator<Yield, Returned, unknown>): ProgramFromGenerator<Yield, Returned>;
183
+ declare function fn<Yield extends EffectYield, Returned extends AnyResult>(body: () => AsyncGenerator<Yield, Returned, unknown>): ProgramFromGenerator<Yield, Returned>;
184
+ /** Build a lazy Program collection with optional bounded concurrency. */
185
+ declare function programAll<const Programs extends readonly AnyProgram[]>(programs: Programs, options?: ProgramAllOptions): ProgramAllResult<Programs>;
186
+ /** Value-level namespace for lazy Program combinators. */
187
+ declare const Program: {
188
+ readonly all: typeof programAll;
189
+ };
190
+ /**
191
+ * Acquire a resource in the current Scope and register its release callback.
192
+ *
193
+ * Acquisition failures are represented in the Effect Result error channel;
194
+ * release failures remain owned by Scope cleanup. The release callback
195
+ * receives the final outcome chosen by the enclosing execution boundary.
196
+ *
197
+ * @example
198
+ * ```ts
199
+ * const connection = yield* Effect.acquireRelease(
200
+ * () => pool.connect(),
201
+ * (connection, outcome) => connection.close(outcome)
202
+ * )
203
+ * ```
204
+ */
205
+ declare function acquireRelease<R>(acquire: () => MaybePromise$1<R>, release: (resource: R, outcome: ScopeOutcome) => MaybePromise$1<void>): AsyncGenerator<Err<never, UnhandledException>, R, unknown>;
206
+ /**
207
+ * Register an already-acquired disposable resource in the current Scope.
208
+ *
209
+ * The resource is not acquired by this helper. Registration failures are
210
+ * represented in the Effect Result error channel; disposal failures remain
211
+ * owned by Scope cleanup.
212
+ *
213
+ * @example
214
+ * ```ts
215
+ * const file = yield* Effect.add(await openFile('notes.txt'))
216
+ * ```
217
+ */
218
+ declare function add<R extends DisposableResource>(resource: R): AsyncGenerator<Err<never, UnhandledException>, R, unknown>;
219
+ /**
220
+ * Effect namespace containing generator, resource, and Result combinators.
221
+ *
222
+ * Prefer these helpers when a program needs typed Service requirements or
223
+ * Scope-aware acquisition and cleanup.
224
+ */
225
+ type EffectNamespace = {
226
+ readonly gen: typeof gen;
227
+ readonly fn: typeof fn;
228
+ readonly acquireRelease: typeof acquireRelease;
229
+ readonly add: typeof add;
230
+ readonly map: typeof map;
231
+ readonly mapError: typeof mapError;
232
+ readonly andThen: typeof andThen;
233
+ readonly andThenAsync: typeof andThenAsync;
234
+ readonly tap: typeof tap;
235
+ readonly tapError: typeof tapError;
236
+ readonly tapBoth: typeof tapBoth;
237
+ readonly recover: typeof recover;
238
+ readonly recoverAsync: typeof recoverAsync;
239
+ readonly flatten: typeof flatten;
240
+ readonly as: typeof as;
241
+ readonly asVoid: typeof asVoid;
242
+ readonly match: typeof match;
243
+ readonly all: typeof all;
244
+ readonly zip: typeof zip;
245
+ };
246
+ declare const Effect: EffectNamespace;
247
+ /** Type-level aliases for inspecting Effect result channels and requirements. */
248
+ declare namespace Effect {
249
+ /** A nominal lazy computation that produces an Effect when invoked. */
250
+ type Program<A, E, R extends AnyService = never> = LazyProgram<A, E, R>;
251
+ /** Extract the success channel from an Effect result or Promise. */
252
+ type Success<T> = EffectSuccess<T>;
253
+ /** Extract the error channel from an Effect result or Promise. */
254
+ type Error<T> = EffectError<T>;
255
+ /** Extract the Service requirements from an Effect result or Promise. */
256
+ type Requirements<T> = EffectRequirements<T>;
257
+ /** An Effect with erased success, error, and requirements. */
258
+ type Any = AnyEffect;
259
+ }
260
+ //#endregion
261
+ //#region src/function/pipe.d.ts
262
+ type Unary<A, B> = (value: A) => B;
263
+ declare function pipe<A>(value: A): A;
264
+ declare function pipe<A, B>(value: A, ab: Unary<A, B>): B;
265
+ declare function pipe<A, B, C>(value: A, ab: Unary<A, B>, bc: Unary<B, C>): C;
266
+ declare function pipe<A, B, C, D>(value: A, ab: Unary<A, B>, bc: Unary<B, C>, cd: Unary<C, D>): D;
267
+ 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;
268
+ 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;
269
+ 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;
270
+ 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;
271
+ 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;
272
+ 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;
273
+ 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;
274
+ //#endregion
275
+ //#region src/resource/errors.d.ts
276
+ declare const ResourceReleaseFailure_base: import("better-result").TaggedErrorClass<"ResourceReleaseFailure">;
277
+ /** Describes a failure encountered while releasing a Resource. */
278
+ declare class ResourceReleaseFailure extends ResourceReleaseFailure_base<{
279
+ readonly resource: string;
280
+ readonly cause: unknown;
281
+ readonly message: string;
282
+ }> {}
283
+ //#endregion
284
+ //#region src/resource/types.d.ts
285
+ /** A value that may be delivered synchronously or through a thenable. */
286
+ type MaybePromise<T> = T | PromiseLike<T>;
287
+ /** A synchronous or asynchronous better-result Result operation. */
288
+ type AsyncResult<T, E> = MaybePromise<Result<T, E>>;
289
+ /** The allowed return value of a custom Resource release callback. */
290
+ type ReleaseOutcome = void | Result<void, unknown>;
291
+ /** Receives release failures for diagnostics without changing error precedence. */
292
+ type ReleaseFailureObserver = (failure: ResourceReleaseFailure) => MaybePromise<void>;
293
+ /** Options controlling `Resource.acquireUseRelease`. */
294
+ type AcquireUseReleaseOptions<R, A, AcquireError, UseError> = {
295
+ /** Human-readable name included in release failures. */
296
+ readonly name: string;
297
+ /** Acquire the resource. A failure skips use and release. */
298
+ readonly acquire: () => AsyncResult<R, AcquireError>;
299
+ /** Use the acquired resource. Release is attempted afterward. */
300
+ readonly use: (resource: R) => AsyncResult<A, UseError>;
301
+ /** Release the resource, or omit it to use its disposal protocol. */
302
+ readonly release?: (resource: R) => MaybePromise<ReleaseOutcome>;
303
+ /**
304
+ * Observe cleanup failures without changing error precedence. This is most
305
+ * useful when both `use` and `release` can fail.
306
+ */
307
+ readonly onReleaseFailure?: ReleaseFailureObserver;
308
+ };
309
+ //#endregion
310
+ //#region src/resource/resource.d.ts
311
+ declare const Resource: {
312
+ /** Acquire, use, and release a resource with deterministic error precedence. */
313
+ readonly acquireUseRelease: <R, A, AcquireError, UseError>({ name, acquire, use, release, onReleaseFailure }: AcquireUseReleaseOptions<R, A, AcquireError, UseError>) => Promise<Result<A, AcquireError | UseError | UnhandledException | ResourceReleaseFailure>>;
314
+ };
315
+ //#endregion
316
+ //#region src/runtime/types.d.ts
317
+ /**
318
+ * Name a Runtime type from a concrete Layer without repeating its provided
319
+ * branded Service instance union.
320
+ *
321
+ * @example
322
+ * ```ts
323
+ * type AppRuntime = RuntimeFor<typeof AppLive>
324
+ * ```
325
+ */
326
+ type RuntimeFor<L extends LayerInput> = Runtime<Layer.Provided<L>>;
327
+ //#endregion
328
+ //#region src/runtime/runtime.d.ts
329
+ /**
330
+ * Long-lived execution environment backed by a complete Layer.
331
+ *
332
+ * A Runtime owns Layer resources until `dispose()` is called. Each `run()` is
333
+ * isolated in a child Scope, while Layer-scoped resources remain shared.
334
+ *
335
+ * @example
336
+ * ```ts
337
+ * const runtime = await Runtime.make(AppLive)
338
+ * const result = await runtime.run(loadUser('u1'))
339
+ * await runtime.dispose()
340
+ * ```
341
+ *
342
+ * @typeParam Provided The branded Service instances supplied by the Layer.
343
+ */
344
+ declare class Runtime<Provided extends AnyService = any> {
345
+ private readonly handle;
346
+ private constructor();
347
+ /**
348
+ * Create a long-lived Runtime that owns its Layer resources.
349
+ *
350
+ * @example
351
+ * ```ts
352
+ * const runtime = await Runtime.make(AppLive)
353
+ * const result = await runtime.run(program)
354
+ * await runtime.dispose()
355
+ * ```
356
+ */
357
+ static make<L extends LayerInput>(layer: L & CompleteInput<L>, backend: LayerBackend, options?: RuntimeOptions): Promise<Runtime<ProvidedEnvironment<L>>>;
358
+ static make<L extends LayerInput>(layer: L & CompleteInput<L>, options?: RuntimeOptions): Promise<Runtime<ProvidedEnvironment<L>>>;
359
+ /**
360
+ * Run one program and dispose its Layer resources before resolving.
361
+ *
362
+ * This is convenient for request-style or command-style execution where a
363
+ * Runtime should not outlive the operation.
364
+ */
365
+ static run<A, L extends LayerInput>(layer: L & CompleteInput<L>, backend: LayerBackend, program: CompleteExecution<ProvidedEnvironment<L>, A>, options?: RuntimeOptions): Promise<Awaited<A>>;
366
+ static run<A, L extends LayerInput>(layer: L & CompleteInput<L>, program: CompleteExecution<ProvidedEnvironment<L>, A>, options?: RuntimeOptions): Promise<Awaited<A>>;
367
+ static run<A, L extends LayerInput>(layer: L & CompleteInput<L>, options: RuntimeOptions, program: CompleteExecution<ProvidedEnvironment<L>, A>): Promise<Awaited<A>>;
368
+ /** Run a callback with a managed Runtime and always dispose it afterward. */
369
+ static use<A, L extends LayerInput>(layer: L & CompleteInput<L>, use: (runtime: Runtime<ProvidedEnvironment<L>>) => A | PromiseLike<A>, options?: RuntimeOptions): Promise<Awaited<A>>;
370
+ /** Resolve every Layer provider and dispose the Runtime if warmup fails. */
371
+ warmup(): Promise<void>;
372
+ /** Run one execution in this Runtime's child Scope. */
373
+ run<A>(program: CompleteExecution<Provided, A>, options?: RuntimeRunOptions): Promise<Awaited<A>>;
374
+ /** Run one execution with a Layer owned by that execution's child Scope. */
375
+ runWith<Request extends LayerInput, A>(layer: Request & CompleteExecutionLayer<Provided, Request>, program: CompleteExecution<Provided | ProvidedEnvironment<Request>, A>, options?: RuntimeRunOptions): Promise<Awaited<A>>;
376
+ private runUnchecked;
377
+ /** Stop new executions and release the Runtime's Layer resources. */
378
+ dispose(options?: RuntimeDisposeOptions): Promise<void>;
379
+ /** @deprecated Scope outcomes are kept for internal compatibility. */
380
+ dispose(outcome: ScopeOutcome): Promise<void>;
381
+ /** Release Runtime-owned resources through JavaScript's async disposal protocol. */
382
+ [Symbol.asyncDispose](): Promise<void>;
383
+ private disposeWithOutcome;
384
+ }
385
+ /** Type-level aliases for naming Runtime handles and shutdown options. */
386
+ declare namespace Runtime {
387
+ /** Name a Runtime type from a concrete Layer. */
388
+ type For<L extends LayerInput> = RuntimeFor<L>;
389
+ /** Optional Runtime shutdown configuration. */
390
+ type Options = RuntimeOptions;
391
+ /** Optional signal supplied to one managed Runtime execution. */
392
+ type RunOptions = RuntimeRunOptions;
393
+ /** Cooperative shutdown policy for a managed Runtime. */
394
+ type DisposeOptions = RuntimeDisposeOptions;
395
+ /** Diagnostic reported for aggregated Runtime shutdown cleanup failures. */
396
+ type ShutdownDiagnostic = RuntimeShutdownDiagnostic;
397
+ }
398
+ //#endregion
399
+ //#region src/runtime/signal.d.ts
400
+ /** Yieldable access to the signal of the current Runtime execution. */
401
+ declare const CurrentAbortSignal: {
402
+ readonly [Symbol.iterator]: () => Generator<never, AbortSignal, unknown>;
403
+ };
404
+ //#endregion
405
+ export { AcquireUseReleaseOptions as a, ReleaseOutcome as c, Effect as d, Program as f, Resource as i, ResourceReleaseFailure as l, Runtime as n, AsyncResult as o, ProgramAllOptions as p, RuntimeFor as r, ReleaseFailureObserver as s, CurrentAbortSignal as t, pipe as u };
406
+ //# sourceMappingURL=index-BJFBEsm5.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BJFBEsm5.d.mts","names":[],"sources":["../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/types.ts","../src/runtime/runtime.ts","../src/runtime/signal.ts"],"mappings":"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"}