@pumped-fn/lite 1.4.0 → 1.5.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,93 @@
1
1
  # @pumped-fn/lite
2
2
 
3
+ ## 1.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - d2f20ab: Add `service()` for context-aware method containers
8
+
9
+ - New `service()` factory function for defining services with multiple methods
10
+ - Each method receives `ExecutionContext` as first parameter (auto-injected)
11
+ - Services are resolved as singletons per scope (same as atoms)
12
+ - Service methods invoked via `ctx.exec({ fn, params })` for extension wrapping
13
+ - New `isService()` type guard and `serviceSymbol` for identification
14
+ - `Scope.resolve()` now accepts both `Atom<T>` and `Service<T>`
15
+
16
+ **BREAKING:** `ctx.exec({ fn, params })` now auto-injects `ExecutionContext` as first argument.
17
+ Functions passed to `ctx.exec()` must have `(ctx, ...args)` signature.
18
+ Only pass remaining args in `params` - ctx is injected automatically.
19
+
20
+ **Migration:** Find and update all `ctx.exec({ fn, params: [ctx, ...] })` calls:
21
+
22
+ ```bash
23
+ grep -r "params:.*\[ctx" --include="*.ts" .
24
+ ```
25
+
26
+ Remove `ctx` from params array - it's now auto-injected.
27
+
28
+ Example:
29
+
30
+ ```typescript
31
+ const dbService = service({
32
+ deps: { pool: poolAtom },
33
+ factory: (ctx, { pool }) => ({
34
+ query: (ctx, sql: string) => pool.query(sql),
35
+ transaction: (ctx, fn) => pool.withTransaction(fn),
36
+ }),
37
+ });
38
+
39
+ const db = await scope.resolve(dbService);
40
+ await ctx.exec({ fn: db.query, params: ["SELECT 1"] });
41
+ ```
42
+
43
+ - 5aafa42: Add hierarchical ExecutionContext with parent-child relationship per exec() call
44
+
45
+ **Breaking Changes:**
46
+
47
+ 1. **`onClose()` timing changed**: Cleanup callbacks now run immediately when `exec()` completes (child auto-close), not when root context is manually closed.
48
+
49
+ 2. **`ctx.input` isolation**: Each child context has its own isolated input. Root context input remains undefined. Previously, input was mutated on the shared context.
50
+
51
+ 3. **Captured context behavior**: A context captured in setTimeout/callbacks will be closed after the parent `exec()` returns. Calling `exec()` on a closed context throws "ExecutionContext is closed".
52
+
53
+ **New Features:**
54
+
55
+ - `ctx.parent`: Reference to parent ExecutionContext (undefined for root)
56
+ - `ctx.data`: Per-context `Map<symbol, unknown>` for extension data storage
57
+ - Child contexts auto-close after exec completes
58
+ - Enables nested span tracing without AsyncLocalStorage
59
+
60
+ ## 1.4.1
61
+
62
+ ### Patch Changes
63
+
64
+ - 3f3fea8: fix(lite): improve ExecutionContext and ExecFlowOptions type inference
65
+
66
+ **Type System Improvements:**
67
+
68
+ - Remove unnecessary `TInput` generic from `ExecutionContext` interface
69
+ - Add proper output/input type inference to `ExecFlowOptions<Output, Input>`
70
+ - Make `input` property optional for void/undefined/null input flows
71
+ - Update `FlowFactory` to use intersection type for input typing
72
+ - Simplify `Extension.wrapResolve` and `wrapExec` to use `unknown`
73
+ - Flows without `parse` now return `Flow<Output, void>` for better DX
74
+
75
+ **DX Improvements:**
76
+
77
+ ```typescript
78
+ // No input needed for void flows - clean DX
79
+ ctx.exec({ flow: voidFlow });
80
+
81
+ // Input required and type-checked for typed flows
82
+ ctx.exec({ flow: inputFlow, input: "hello" });
83
+ ```
84
+
85
+ **Test Consolidation:**
86
+
87
+ - Reduced test count from 149 to 130 (-13%)
88
+ - Removed duplicate and superficial tests
89
+ - Consolidated similar test patterns
90
+
3
91
  ## 1.4.0
4
92
 
5
93
  ### Minor Changes
package/dist/index.cjs CHANGED
@@ -9,6 +9,7 @@ const presetSymbol = Symbol.for("@pumped-fn/lite/preset");
9
9
  const controllerSymbol = Symbol.for("@pumped-fn/lite/controller");
10
10
  const tagExecutorSymbol = Symbol.for("@pumped-fn/lite/tag-executor");
11
11
  const typedSymbol = Symbol.for("@pumped-fn/lite/typed");
12
+ const serviceSymbol = Symbol.for("@pumped-fn/lite/service");
12
13
 
13
14
  //#endregion
14
15
  //#region src/errors.ts
@@ -303,6 +304,34 @@ function isPreset(value) {
303
304
  return typeof value === "object" && value !== null && value[presetSymbol] === true;
304
305
  }
305
306
 
307
+ //#endregion
308
+ //#region src/service.ts
309
+ function service(config) {
310
+ return {
311
+ [atomSymbol]: true,
312
+ [serviceSymbol]: true,
313
+ factory: config.factory,
314
+ deps: config.deps,
315
+ tags: config.tags
316
+ };
317
+ }
318
+ /**
319
+ * Type guard to check if a value is a Service.
320
+ *
321
+ * @param value - The value to check
322
+ * @returns True if the value is a Service, false otherwise
323
+ *
324
+ * @example
325
+ * ```typescript
326
+ * if (isService(value)) {
327
+ * const methods = await scope.resolve(value)
328
+ * }
329
+ * ```
330
+ */
331
+ function isService(value) {
332
+ return typeof value === "object" && value !== null && value[serviceSymbol] === true;
333
+ }
334
+
306
335
  //#endregion
307
336
  //#region src/scope.ts
308
337
  var DataStoreImpl = class {
@@ -742,42 +771,70 @@ var ScopeImpl = class {
742
771
  return new ExecutionContextImpl(this, options);
743
772
  }
744
773
  };
745
- var ExecutionContextImpl = class {
774
+ var ExecutionContextImpl = class ExecutionContextImpl {
746
775
  cleanups = [];
747
776
  closed = false;
748
- _input = void 0;
777
+ _input;
749
778
  baseTags;
779
+ _data;
780
+ parent;
750
781
  constructor(scope, options) {
751
782
  this.scope = scope;
783
+ this.parent = options?.parent;
784
+ this._input = options?.input;
752
785
  const ctxTags = options?.tags;
753
786
  this.baseTags = ctxTags?.length ? [...ctxTags, ...scope.tags] : scope.tags;
754
787
  }
755
788
  get input() {
756
789
  return this._input;
757
790
  }
791
+ get data() {
792
+ if (!this._data) this._data = /* @__PURE__ */ new Map();
793
+ return this._data;
794
+ }
758
795
  async exec(options) {
759
796
  if (this.closed) throw new Error("ExecutionContext is closed");
760
- if ("flow" in options) return this.execFlow(options);
761
- else return this.execFn(options);
797
+ if ("flow" in options) {
798
+ const { flow: flow$1, input, name: execName } = options;
799
+ let parsedInput = input;
800
+ if (flow$1.parse) {
801
+ const label = execName ?? flow$1.name ?? "anonymous";
802
+ try {
803
+ parsedInput = await flow$1.parse(input);
804
+ } catch (err) {
805
+ throw new ParseError(`Failed to parse flow input "${label}"`, "flow-input", label, err);
806
+ }
807
+ }
808
+ const childCtx = new ExecutionContextImpl(this.scope, {
809
+ parent: this,
810
+ tags: this.baseTags,
811
+ input: parsedInput
812
+ });
813
+ try {
814
+ return await childCtx.execFlowInternal(options);
815
+ } finally {
816
+ await childCtx.close();
817
+ }
818
+ } else {
819
+ const childCtx = new ExecutionContextImpl(this.scope, {
820
+ parent: this,
821
+ tags: this.baseTags
822
+ });
823
+ try {
824
+ return await childCtx.execFnInternal(options);
825
+ } finally {
826
+ await childCtx.close();
827
+ }
828
+ }
762
829
  }
763
- async execFlow(options) {
764
- const { flow: flow$1, input, tags: execTags, name: execName } = options;
830
+ async execFlowInternal(options) {
831
+ const { flow: flow$1, tags: execTags } = options;
765
832
  const allTags = (execTags?.length ?? 0) > 0 || (flow$1.tags?.length ?? 0) > 0 ? [
766
833
  ...execTags ?? [],
767
834
  ...this.baseTags,
768
835
  ...flow$1.tags ?? []
769
836
  ] : this.baseTags;
770
837
  const resolvedDeps = await this.scope.resolveDeps(flow$1.deps, allTags);
771
- let parsedInput = input;
772
- if (flow$1.parse) {
773
- const label = execName ?? flow$1.name ?? "anonymous";
774
- try {
775
- parsedInput = await flow$1.parse(input);
776
- } catch (err) {
777
- throw new ParseError(`Failed to parse flow input "${label}"`, "flow-input", label, err);
778
- }
779
- }
780
- this._input = parsedInput;
781
838
  const factory = flow$1.factory;
782
839
  const doExec = async () => {
783
840
  if (flow$1.deps && Object.keys(flow$1.deps).length > 0) return factory(this, resolvedDeps);
@@ -785,9 +842,9 @@ var ExecutionContextImpl = class {
785
842
  };
786
843
  return this.applyExecExtensions(flow$1, doExec);
787
844
  }
788
- execFn(options) {
845
+ async execFnInternal(options) {
789
846
  const { fn, params } = options;
790
- const doExec = () => Promise.resolve(fn(...params));
847
+ const doExec = () => Promise.resolve(fn(this, ...params));
791
848
  return this.applyExecExtensions(fn, doExec);
792
849
  }
793
850
  async applyExecExtensions(target, doExec) {
@@ -861,11 +918,14 @@ exports.isAtom = isAtom;
861
918
  exports.isControllerDep = isControllerDep;
862
919
  exports.isFlow = isFlow;
863
920
  exports.isPreset = isPreset;
921
+ exports.isService = isService;
864
922
  exports.isTag = isTag;
865
923
  exports.isTagExecutor = isTagExecutor;
866
924
  exports.isTagged = isTagged;
867
925
  exports.preset = preset;
868
926
  exports.presetSymbol = presetSymbol;
927
+ exports.service = service;
928
+ exports.serviceSymbol = serviceSymbol;
869
929
  exports.tag = tag;
870
930
  exports.tagExecutorSymbol = tagExecutorSymbol;
871
931
  exports.tagSymbol = tagSymbol;
package/dist/index.d.cts CHANGED
@@ -8,6 +8,7 @@ declare const presetSymbol: unique symbol;
8
8
  declare const controllerSymbol: unique symbol;
9
9
  declare const tagExecutorSymbol: unique symbol;
10
10
  declare const typedSymbol: unique symbol;
11
+ declare const serviceSymbol: unique symbol;
11
12
  //#endregion
12
13
  //#region src/types.d.ts
13
14
  type MaybePromise<T> = T | Promise<T>;
@@ -15,7 +16,7 @@ type AtomState = 'idle' | 'resolving' | 'resolved' | 'failed';
15
16
  declare namespace Lite {
16
17
  interface Scope {
17
18
  readonly ready: Promise<void>;
18
- resolve<T>(atom: Atom<T>): Promise<T>;
19
+ resolve<T>(atom: Atom<T> | Service<T>): Promise<T>;
19
20
  controller<T>(atom: Atom<T>): Controller<T>;
20
21
  release<T>(atom: Atom<T>): Promise<void>;
21
22
  dispose(): Promise<void>;
@@ -87,22 +88,27 @@ declare namespace Lite {
87
88
  readonly scope: Scope;
88
89
  readonly data: DataStore;
89
90
  }
90
- interface ExecutionContext<TInput = unknown> {
91
- readonly input: TInput;
91
+ interface ExecutionContext {
92
+ readonly input: unknown;
92
93
  readonly scope: Scope;
93
- exec<T>(options: ExecFlowOptions<T>): Promise<T>;
94
- exec<T, Args extends unknown[]>(options: ExecFnOptions<T, Args>): Promise<T>;
94
+ readonly parent: ExecutionContext | undefined;
95
+ readonly data: Map<symbol, unknown>;
96
+ exec<Output, Input>(options: ExecFlowOptions<Output, Input>): Promise<Output>;
97
+ exec<Output, Args extends unknown[]>(options: ExecFnOptions<Output, Args>): Promise<Output>;
95
98
  onClose(fn: () => MaybePromise<void>): void;
96
99
  close(): Promise<void>;
97
100
  }
98
- interface ExecFlowOptions<T> {
99
- flow: Flow<T, unknown>;
100
- input: unknown;
101
+ type ExecFlowOptions<Output, Input> = {
102
+ flow: Flow<Output, Input>;
101
103
  name?: string;
102
104
  tags?: Tagged<unknown>[];
103
- }
104
- interface ExecFnOptions<T, Args extends unknown[] = unknown[]> {
105
- fn: (...args: Args) => MaybePromise<T>;
105
+ } & ([NoInfer<Input>] extends [void | undefined | null] ? {
106
+ input?: undefined | null;
107
+ } : {
108
+ input: NoInfer<Input>;
109
+ });
110
+ interface ExecFnOptions<Output, Args extends unknown[] = unknown[]> {
111
+ fn: (ctx: ExecutionContext, ...args: Args) => MaybePromise<Output>;
106
112
  params: Args;
107
113
  tags?: Tagged<unknown>[];
108
114
  }
@@ -189,15 +195,27 @@ declare namespace Lite {
189
195
  interface Extension {
190
196
  readonly name: string;
191
197
  init?(scope: Scope): MaybePromise<void>;
192
- wrapResolve?<T>(next: () => Promise<T>, atom: Atom<T>, scope: Scope): Promise<T>;
193
- wrapExec?<T>(next: () => Promise<T>, target: Flow<T, unknown> | ((...args: unknown[]) => MaybePromise<T>), ctx: ExecutionContext): Promise<T>;
198
+ wrapResolve?(next: () => Promise<unknown>, atom: Atom<unknown>, scope: Scope): Promise<unknown>;
199
+ wrapExec?(next: () => Promise<unknown>, target: Flow<unknown, unknown> | ((ctx: ExecutionContext, ...args: unknown[]) => MaybePromise<unknown>), ctx: ExecutionContext): Promise<unknown>;
194
200
  dispose?(scope: Scope): MaybePromise<void>;
195
201
  }
196
202
  type Dependency = Atom<unknown> | ControllerDep<unknown> | TagExecutor<unknown>;
197
203
  type InferDep<D> = D extends Atom<infer T> ? T : D extends ControllerDep<infer T> ? Controller<T> : D extends TagExecutor<infer TOutput, infer _TTag> ? TOutput : never;
198
204
  type InferDeps<D> = { [K in keyof D]: InferDep<D[K]> };
199
205
  type AtomFactory<T, D extends Record<string, Dependency>> = keyof D extends never ? (ctx: ResolveContext) => MaybePromise<T> : (ctx: ResolveContext, deps: InferDeps<D>) => MaybePromise<T>;
200
- type FlowFactory<TOutput, TInput, D extends Record<string, Dependency>> = keyof D extends never ? (ctx: ExecutionContext<TInput>) => MaybePromise<TOutput> : (ctx: ExecutionContext<TInput>, deps: InferDeps<D>) => MaybePromise<TOutput>;
206
+ type FlowFactory<Output, Input, D extends Record<string, Dependency>> = keyof D extends never ? (ctx: ExecutionContext & {
207
+ readonly input: Input;
208
+ }) => MaybePromise<Output> : (ctx: ExecutionContext & {
209
+ readonly input: Input;
210
+ }, deps: InferDeps<D>) => MaybePromise<Output>;
211
+ interface Service<T> {
212
+ readonly [atomSymbol]: true;
213
+ readonly [serviceSymbol]: true;
214
+ readonly factory: ServiceFactory<T, Record<string, Dependency>>;
215
+ readonly deps?: Record<string, Dependency>;
216
+ readonly tags?: Tagged<unknown>[];
217
+ }
218
+ type ServiceFactory<T, D extends Record<string, Dependency>> = keyof D extends never ? (ctx: ResolveContext) => MaybePromise<T> : (ctx: ResolveContext, deps: InferDeps<D>) => MaybePromise<T>;
201
219
  }
202
220
  //#endregion
203
221
  //#region src/tag.d.ts
@@ -439,19 +457,23 @@ declare function flow<TOutput>(config: {
439
457
  deps?: undefined;
440
458
  factory: (ctx: Lite.ExecutionContext) => MaybePromise<TOutput>;
441
459
  tags?: Lite.Tagged<unknown>[];
442
- }): Lite.Flow<TOutput, unknown>;
460
+ }): Lite.Flow<TOutput, void>;
443
461
  declare function flow<TOutput, TInput>(config: {
444
462
  name?: string;
445
463
  parse: (raw: unknown) => MaybePromise<TInput>;
446
464
  deps?: undefined;
447
- factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>;
465
+ factory: (ctx: Lite.ExecutionContext & {
466
+ readonly input: NoInfer<TInput>;
467
+ }) => MaybePromise<TOutput>;
448
468
  tags?: Lite.Tagged<unknown>[];
449
469
  }): Lite.Flow<TOutput, TInput>;
450
470
  declare function flow<TOutput, TInput>(config: {
451
471
  name?: string;
452
472
  parse: Lite.Typed<TInput>;
453
473
  deps?: undefined;
454
- factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>;
474
+ factory: (ctx: Lite.ExecutionContext & {
475
+ readonly input: NoInfer<TInput>;
476
+ }) => MaybePromise<TOutput>;
455
477
  tags?: Lite.Tagged<unknown>[];
456
478
  }): Lite.Flow<TOutput, TInput>;
457
479
  declare function flow<TOutput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
@@ -462,14 +484,16 @@ declare function flow<TOutput, const D extends Record<string, Lite.Atom<unknown>
462
484
  deps: D;
463
485
  factory: (ctx: Lite.ExecutionContext, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
464
486
  tags?: Lite.Tagged<unknown>[];
465
- }): Lite.Flow<TOutput, unknown>;
487
+ }): Lite.Flow<TOutput, void>;
466
488
  declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
467
489
  mode: string;
468
490
  }>>(config: {
469
491
  name?: string;
470
492
  parse: (raw: unknown) => MaybePromise<TInput>;
471
493
  deps: D;
472
- factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
494
+ factory: (ctx: Lite.ExecutionContext & {
495
+ readonly input: NoInfer<TInput>;
496
+ }, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
473
497
  tags?: Lite.Tagged<unknown>[];
474
498
  }): Lite.Flow<TOutput, TInput>;
475
499
  declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
@@ -478,7 +502,9 @@ declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<
478
502
  name?: string;
479
503
  parse: Lite.Typed<TInput>;
480
504
  deps: D;
481
- factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
505
+ factory: (ctx: Lite.ExecutionContext & {
506
+ readonly input: NoInfer<TInput>;
507
+ }, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
482
508
  tags?: Lite.Tagged<unknown>[];
483
509
  }): Lite.Flow<TOutput, TInput>;
484
510
  /**
@@ -527,6 +553,50 @@ declare function preset<T>(atom: Lite.Atom<T>, value: T | Lite.Atom<T>): Lite.Pr
527
553
  */
528
554
  declare function isPreset(value: unknown): value is Lite.Preset<unknown>;
529
555
  //#endregion
556
+ //#region src/service.d.ts
557
+ /**
558
+ * Creates a context-aware service that exposes multiple methods.
559
+ * Each method receives ExecutionContext as its first parameter.
560
+ *
561
+ * @param config - Configuration object containing factory function, optional dependencies, and tags
562
+ * @returns A Service instance that can be resolved to produce methods
563
+ *
564
+ * @example
565
+ * ```typescript
566
+ * const dbService = service({
567
+ * deps: { pool: poolAtom },
568
+ * factory: (ctx, { pool }) => ({
569
+ * query: (ctx, sql: string) => pool.query(sql),
570
+ * transaction: (ctx, fn) => pool.withTransaction(fn),
571
+ * })
572
+ * })
573
+ * ```
574
+ */
575
+ declare function service<T>(config: {
576
+ deps?: undefined;
577
+ factory: (ctx: Lite.ResolveContext) => MaybePromise<T>;
578
+ tags?: Lite.Tagged<unknown>[];
579
+ }): Lite.Service<T>;
580
+ declare function service<T, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | Lite.TagExecutor<unknown>>>(config: {
581
+ deps: D;
582
+ factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>;
583
+ tags?: Lite.Tagged<unknown>[];
584
+ }): Lite.Service<T>;
585
+ /**
586
+ * Type guard to check if a value is a Service.
587
+ *
588
+ * @param value - The value to check
589
+ * @returns True if the value is a Service, false otherwise
590
+ *
591
+ * @example
592
+ * ```typescript
593
+ * if (isService(value)) {
594
+ * const methods = await scope.resolve(value)
595
+ * }
596
+ * ```
597
+ */
598
+ declare function isService(value: unknown): value is Lite.Service<unknown>;
599
+ //#endregion
530
600
  //#region src/scope.d.ts
531
601
  /**
532
602
  * Creates a DI container that manages Atom resolution, caching, and lifecycle.
@@ -567,5 +637,5 @@ declare class ParseError extends Error {
567
637
  //#region src/index.d.ts
568
638
  declare const VERSION = "0.0.1";
569
639
  //#endregion
570
- export { type AtomState, type Lite, ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
640
+ export { type AtomState, type Lite, ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isService, isTag, isTagExecutor, isTagged, preset, presetSymbol, service, serviceSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
571
641
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/service.ts","../src/scope.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -8,6 +8,7 @@ declare const presetSymbol: unique symbol;
8
8
  declare const controllerSymbol: unique symbol;
9
9
  declare const tagExecutorSymbol: unique symbol;
10
10
  declare const typedSymbol: unique symbol;
11
+ declare const serviceSymbol: unique symbol;
11
12
  //#endregion
12
13
  //#region src/types.d.ts
13
14
  type MaybePromise<T> = T | Promise<T>;
@@ -15,7 +16,7 @@ type AtomState = 'idle' | 'resolving' | 'resolved' | 'failed';
15
16
  declare namespace Lite {
16
17
  interface Scope {
17
18
  readonly ready: Promise<void>;
18
- resolve<T>(atom: Atom<T>): Promise<T>;
19
+ resolve<T>(atom: Atom<T> | Service<T>): Promise<T>;
19
20
  controller<T>(atom: Atom<T>): Controller<T>;
20
21
  release<T>(atom: Atom<T>): Promise<void>;
21
22
  dispose(): Promise<void>;
@@ -87,22 +88,27 @@ declare namespace Lite {
87
88
  readonly scope: Scope;
88
89
  readonly data: DataStore;
89
90
  }
90
- interface ExecutionContext<TInput = unknown> {
91
- readonly input: TInput;
91
+ interface ExecutionContext {
92
+ readonly input: unknown;
92
93
  readonly scope: Scope;
93
- exec<T>(options: ExecFlowOptions<T>): Promise<T>;
94
- exec<T, Args extends unknown[]>(options: ExecFnOptions<T, Args>): Promise<T>;
94
+ readonly parent: ExecutionContext | undefined;
95
+ readonly data: Map<symbol, unknown>;
96
+ exec<Output, Input>(options: ExecFlowOptions<Output, Input>): Promise<Output>;
97
+ exec<Output, Args extends unknown[]>(options: ExecFnOptions<Output, Args>): Promise<Output>;
95
98
  onClose(fn: () => MaybePromise<void>): void;
96
99
  close(): Promise<void>;
97
100
  }
98
- interface ExecFlowOptions<T> {
99
- flow: Flow<T, unknown>;
100
- input: unknown;
101
+ type ExecFlowOptions<Output, Input> = {
102
+ flow: Flow<Output, Input>;
101
103
  name?: string;
102
104
  tags?: Tagged<unknown>[];
103
- }
104
- interface ExecFnOptions<T, Args extends unknown[] = unknown[]> {
105
- fn: (...args: Args) => MaybePromise<T>;
105
+ } & ([NoInfer<Input>] extends [void | undefined | null] ? {
106
+ input?: undefined | null;
107
+ } : {
108
+ input: NoInfer<Input>;
109
+ });
110
+ interface ExecFnOptions<Output, Args extends unknown[] = unknown[]> {
111
+ fn: (ctx: ExecutionContext, ...args: Args) => MaybePromise<Output>;
106
112
  params: Args;
107
113
  tags?: Tagged<unknown>[];
108
114
  }
@@ -189,15 +195,27 @@ declare namespace Lite {
189
195
  interface Extension {
190
196
  readonly name: string;
191
197
  init?(scope: Scope): MaybePromise<void>;
192
- wrapResolve?<T>(next: () => Promise<T>, atom: Atom<T>, scope: Scope): Promise<T>;
193
- wrapExec?<T>(next: () => Promise<T>, target: Flow<T, unknown> | ((...args: unknown[]) => MaybePromise<T>), ctx: ExecutionContext): Promise<T>;
198
+ wrapResolve?(next: () => Promise<unknown>, atom: Atom<unknown>, scope: Scope): Promise<unknown>;
199
+ wrapExec?(next: () => Promise<unknown>, target: Flow<unknown, unknown> | ((ctx: ExecutionContext, ...args: unknown[]) => MaybePromise<unknown>), ctx: ExecutionContext): Promise<unknown>;
194
200
  dispose?(scope: Scope): MaybePromise<void>;
195
201
  }
196
202
  type Dependency = Atom<unknown> | ControllerDep<unknown> | TagExecutor<unknown>;
197
203
  type InferDep<D> = D extends Atom<infer T> ? T : D extends ControllerDep<infer T> ? Controller<T> : D extends TagExecutor<infer TOutput, infer _TTag> ? TOutput : never;
198
204
  type InferDeps<D> = { [K in keyof D]: InferDep<D[K]> };
199
205
  type AtomFactory<T, D extends Record<string, Dependency>> = keyof D extends never ? (ctx: ResolveContext) => MaybePromise<T> : (ctx: ResolveContext, deps: InferDeps<D>) => MaybePromise<T>;
200
- type FlowFactory<TOutput, TInput, D extends Record<string, Dependency>> = keyof D extends never ? (ctx: ExecutionContext<TInput>) => MaybePromise<TOutput> : (ctx: ExecutionContext<TInput>, deps: InferDeps<D>) => MaybePromise<TOutput>;
206
+ type FlowFactory<Output, Input, D extends Record<string, Dependency>> = keyof D extends never ? (ctx: ExecutionContext & {
207
+ readonly input: Input;
208
+ }) => MaybePromise<Output> : (ctx: ExecutionContext & {
209
+ readonly input: Input;
210
+ }, deps: InferDeps<D>) => MaybePromise<Output>;
211
+ interface Service<T> {
212
+ readonly [atomSymbol]: true;
213
+ readonly [serviceSymbol]: true;
214
+ readonly factory: ServiceFactory<T, Record<string, Dependency>>;
215
+ readonly deps?: Record<string, Dependency>;
216
+ readonly tags?: Tagged<unknown>[];
217
+ }
218
+ type ServiceFactory<T, D extends Record<string, Dependency>> = keyof D extends never ? (ctx: ResolveContext) => MaybePromise<T> : (ctx: ResolveContext, deps: InferDeps<D>) => MaybePromise<T>;
201
219
  }
202
220
  //#endregion
203
221
  //#region src/tag.d.ts
@@ -439,19 +457,23 @@ declare function flow<TOutput>(config: {
439
457
  deps?: undefined;
440
458
  factory: (ctx: Lite.ExecutionContext) => MaybePromise<TOutput>;
441
459
  tags?: Lite.Tagged<unknown>[];
442
- }): Lite.Flow<TOutput, unknown>;
460
+ }): Lite.Flow<TOutput, void>;
443
461
  declare function flow<TOutput, TInput>(config: {
444
462
  name?: string;
445
463
  parse: (raw: unknown) => MaybePromise<TInput>;
446
464
  deps?: undefined;
447
- factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>;
465
+ factory: (ctx: Lite.ExecutionContext & {
466
+ readonly input: NoInfer<TInput>;
467
+ }) => MaybePromise<TOutput>;
448
468
  tags?: Lite.Tagged<unknown>[];
449
469
  }): Lite.Flow<TOutput, TInput>;
450
470
  declare function flow<TOutput, TInput>(config: {
451
471
  name?: string;
452
472
  parse: Lite.Typed<TInput>;
453
473
  deps?: undefined;
454
- factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>;
474
+ factory: (ctx: Lite.ExecutionContext & {
475
+ readonly input: NoInfer<TInput>;
476
+ }) => MaybePromise<TOutput>;
455
477
  tags?: Lite.Tagged<unknown>[];
456
478
  }): Lite.Flow<TOutput, TInput>;
457
479
  declare function flow<TOutput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
@@ -462,14 +484,16 @@ declare function flow<TOutput, const D extends Record<string, Lite.Atom<unknown>
462
484
  deps: D;
463
485
  factory: (ctx: Lite.ExecutionContext, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
464
486
  tags?: Lite.Tagged<unknown>[];
465
- }): Lite.Flow<TOutput, unknown>;
487
+ }): Lite.Flow<TOutput, void>;
466
488
  declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
467
489
  mode: string;
468
490
  }>>(config: {
469
491
  name?: string;
470
492
  parse: (raw: unknown) => MaybePromise<TInput>;
471
493
  deps: D;
472
- factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
494
+ factory: (ctx: Lite.ExecutionContext & {
495
+ readonly input: NoInfer<TInput>;
496
+ }, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
473
497
  tags?: Lite.Tagged<unknown>[];
474
498
  }): Lite.Flow<TOutput, TInput>;
475
499
  declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
@@ -478,7 +502,9 @@ declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<
478
502
  name?: string;
479
503
  parse: Lite.Typed<TInput>;
480
504
  deps: D;
481
- factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
505
+ factory: (ctx: Lite.ExecutionContext & {
506
+ readonly input: NoInfer<TInput>;
507
+ }, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
482
508
  tags?: Lite.Tagged<unknown>[];
483
509
  }): Lite.Flow<TOutput, TInput>;
484
510
  /**
@@ -527,6 +553,50 @@ declare function preset<T>(atom: Lite.Atom<T>, value: T | Lite.Atom<T>): Lite.Pr
527
553
  */
528
554
  declare function isPreset(value: unknown): value is Lite.Preset<unknown>;
529
555
  //#endregion
556
+ //#region src/service.d.ts
557
+ /**
558
+ * Creates a context-aware service that exposes multiple methods.
559
+ * Each method receives ExecutionContext as its first parameter.
560
+ *
561
+ * @param config - Configuration object containing factory function, optional dependencies, and tags
562
+ * @returns A Service instance that can be resolved to produce methods
563
+ *
564
+ * @example
565
+ * ```typescript
566
+ * const dbService = service({
567
+ * deps: { pool: poolAtom },
568
+ * factory: (ctx, { pool }) => ({
569
+ * query: (ctx, sql: string) => pool.query(sql),
570
+ * transaction: (ctx, fn) => pool.withTransaction(fn),
571
+ * })
572
+ * })
573
+ * ```
574
+ */
575
+ declare function service<T>(config: {
576
+ deps?: undefined;
577
+ factory: (ctx: Lite.ResolveContext) => MaybePromise<T>;
578
+ tags?: Lite.Tagged<unknown>[];
579
+ }): Lite.Service<T>;
580
+ declare function service<T, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | Lite.TagExecutor<unknown>>>(config: {
581
+ deps: D;
582
+ factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>;
583
+ tags?: Lite.Tagged<unknown>[];
584
+ }): Lite.Service<T>;
585
+ /**
586
+ * Type guard to check if a value is a Service.
587
+ *
588
+ * @param value - The value to check
589
+ * @returns True if the value is a Service, false otherwise
590
+ *
591
+ * @example
592
+ * ```typescript
593
+ * if (isService(value)) {
594
+ * const methods = await scope.resolve(value)
595
+ * }
596
+ * ```
597
+ */
598
+ declare function isService(value: unknown): value is Lite.Service<unknown>;
599
+ //#endregion
530
600
  //#region src/scope.d.ts
531
601
  /**
532
602
  * Creates a DI container that manages Atom resolution, caching, and lifecycle.
@@ -567,5 +637,5 @@ declare class ParseError extends Error {
567
637
  //#region src/index.d.ts
568
638
  declare const VERSION = "0.0.1";
569
639
  //#endregion
570
- export { type AtomState, type Lite, ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
640
+ export { type AtomState, type Lite, ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isService, isTag, isTagExecutor, isTagged, preset, presetSymbol, service, serviceSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
571
641
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/service.ts","../src/scope.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -8,6 +8,7 @@ const presetSymbol = Symbol.for("@pumped-fn/lite/preset");
8
8
  const controllerSymbol = Symbol.for("@pumped-fn/lite/controller");
9
9
  const tagExecutorSymbol = Symbol.for("@pumped-fn/lite/tag-executor");
10
10
  const typedSymbol = Symbol.for("@pumped-fn/lite/typed");
11
+ const serviceSymbol = Symbol.for("@pumped-fn/lite/service");
11
12
 
12
13
  //#endregion
13
14
  //#region src/errors.ts
@@ -302,6 +303,34 @@ function isPreset(value) {
302
303
  return typeof value === "object" && value !== null && value[presetSymbol] === true;
303
304
  }
304
305
 
306
+ //#endregion
307
+ //#region src/service.ts
308
+ function service(config) {
309
+ return {
310
+ [atomSymbol]: true,
311
+ [serviceSymbol]: true,
312
+ factory: config.factory,
313
+ deps: config.deps,
314
+ tags: config.tags
315
+ };
316
+ }
317
+ /**
318
+ * Type guard to check if a value is a Service.
319
+ *
320
+ * @param value - The value to check
321
+ * @returns True if the value is a Service, false otherwise
322
+ *
323
+ * @example
324
+ * ```typescript
325
+ * if (isService(value)) {
326
+ * const methods = await scope.resolve(value)
327
+ * }
328
+ * ```
329
+ */
330
+ function isService(value) {
331
+ return typeof value === "object" && value !== null && value[serviceSymbol] === true;
332
+ }
333
+
305
334
  //#endregion
306
335
  //#region src/scope.ts
307
336
  var DataStoreImpl = class {
@@ -741,42 +770,70 @@ var ScopeImpl = class {
741
770
  return new ExecutionContextImpl(this, options);
742
771
  }
743
772
  };
744
- var ExecutionContextImpl = class {
773
+ var ExecutionContextImpl = class ExecutionContextImpl {
745
774
  cleanups = [];
746
775
  closed = false;
747
- _input = void 0;
776
+ _input;
748
777
  baseTags;
778
+ _data;
779
+ parent;
749
780
  constructor(scope, options) {
750
781
  this.scope = scope;
782
+ this.parent = options?.parent;
783
+ this._input = options?.input;
751
784
  const ctxTags = options?.tags;
752
785
  this.baseTags = ctxTags?.length ? [...ctxTags, ...scope.tags] : scope.tags;
753
786
  }
754
787
  get input() {
755
788
  return this._input;
756
789
  }
790
+ get data() {
791
+ if (!this._data) this._data = /* @__PURE__ */ new Map();
792
+ return this._data;
793
+ }
757
794
  async exec(options) {
758
795
  if (this.closed) throw new Error("ExecutionContext is closed");
759
- if ("flow" in options) return this.execFlow(options);
760
- else return this.execFn(options);
796
+ if ("flow" in options) {
797
+ const { flow: flow$1, input, name: execName } = options;
798
+ let parsedInput = input;
799
+ if (flow$1.parse) {
800
+ const label = execName ?? flow$1.name ?? "anonymous";
801
+ try {
802
+ parsedInput = await flow$1.parse(input);
803
+ } catch (err) {
804
+ throw new ParseError(`Failed to parse flow input "${label}"`, "flow-input", label, err);
805
+ }
806
+ }
807
+ const childCtx = new ExecutionContextImpl(this.scope, {
808
+ parent: this,
809
+ tags: this.baseTags,
810
+ input: parsedInput
811
+ });
812
+ try {
813
+ return await childCtx.execFlowInternal(options);
814
+ } finally {
815
+ await childCtx.close();
816
+ }
817
+ } else {
818
+ const childCtx = new ExecutionContextImpl(this.scope, {
819
+ parent: this,
820
+ tags: this.baseTags
821
+ });
822
+ try {
823
+ return await childCtx.execFnInternal(options);
824
+ } finally {
825
+ await childCtx.close();
826
+ }
827
+ }
761
828
  }
762
- async execFlow(options) {
763
- const { flow: flow$1, input, tags: execTags, name: execName } = options;
829
+ async execFlowInternal(options) {
830
+ const { flow: flow$1, tags: execTags } = options;
764
831
  const allTags = (execTags?.length ?? 0) > 0 || (flow$1.tags?.length ?? 0) > 0 ? [
765
832
  ...execTags ?? [],
766
833
  ...this.baseTags,
767
834
  ...flow$1.tags ?? []
768
835
  ] : this.baseTags;
769
836
  const resolvedDeps = await this.scope.resolveDeps(flow$1.deps, allTags);
770
- let parsedInput = input;
771
- if (flow$1.parse) {
772
- const label = execName ?? flow$1.name ?? "anonymous";
773
- try {
774
- parsedInput = await flow$1.parse(input);
775
- } catch (err) {
776
- throw new ParseError(`Failed to parse flow input "${label}"`, "flow-input", label, err);
777
- }
778
- }
779
- this._input = parsedInput;
780
837
  const factory = flow$1.factory;
781
838
  const doExec = async () => {
782
839
  if (flow$1.deps && Object.keys(flow$1.deps).length > 0) return factory(this, resolvedDeps);
@@ -784,9 +841,9 @@ var ExecutionContextImpl = class {
784
841
  };
785
842
  return this.applyExecExtensions(flow$1, doExec);
786
843
  }
787
- execFn(options) {
844
+ async execFnInternal(options) {
788
845
  const { fn, params } = options;
789
- const doExec = () => Promise.resolve(fn(...params));
846
+ const doExec = () => Promise.resolve(fn(this, ...params));
790
847
  return this.applyExecExtensions(fn, doExec);
791
848
  }
792
849
  async applyExecExtensions(target, doExec) {
@@ -846,5 +903,5 @@ function createScope(options) {
846
903
  const VERSION = "0.0.1";
847
904
 
848
905
  //#endregion
849
- export { ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
906
+ export { ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isService, isTag, isTagExecutor, isTagged, preset, presetSymbol, service, serviceSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
850
907
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["atomSymbol: unique symbol","flowSymbol: unique symbol","tagSymbol: unique symbol","taggedSymbol: unique symbol","controllerDepSymbol: unique symbol","presetSymbol: unique symbol","controllerSymbol: unique symbol","tagExecutorSymbol: unique symbol","typedSymbol: unique symbol","phase: \"tag\" | \"flow-input\"","label: string","cause: unknown","tags","result: T[]","tag","ctrl: Lite.Controller<T>","selector: (value: T) => S","eq: (prev: S, next: S) => boolean","atom: Lite.Atom<T>","scope: ScopeImpl","atom","ctx: Lite.ResolveContext","result: Record<string, unknown>","tags","flow","parsedInput: unknown"],"sources":["../src/symbols.ts","../src/errors.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":["export const atomSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/atom\")\nexport const flowSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/flow\")\nexport const tagSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag\")\nexport const taggedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tagged\")\nexport const controllerDepSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller-dep\")\nexport const presetSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/preset\")\nexport const controllerSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller\")\nexport const tagExecutorSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag-executor\")\nexport const typedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/typed\")\n","export class ParseError extends Error {\n override readonly name = \"ParseError\"\n\n constructor(\n message: string,\n readonly phase: \"tag\" | \"flow-input\",\n readonly label: string,\n override readonly cause: unknown\n ) {\n super(message)\n }\n}\n","import { tagSymbol, taggedSymbol, tagExecutorSymbol } from \"./symbols\"\nimport { ParseError } from \"./errors\"\nimport type { Lite } from \"./types\"\n\nexport interface TagOptions<T, HasDefault extends boolean> {\n label: string\n default?: HasDefault extends true ? T : never\n parse?: (raw: unknown) => T\n}\n\n/**\n * Creates a metadata tag for attaching and retrieving typed values from Atoms and Flows.\n *\n * @param options - Configuration object with label and optional default value\n * @returns A Tag instance that can create tagged values and query them from sources\n *\n * @example\n * ```typescript\n * const nameTag = tag<string>({ label: \"name\" })\n * const myAtom = atom({\n * factory: (ctx) => \"value\",\n * tags: [nameTag(\"MyAtom\")]\n * })\n * ```\n */\nexport function tag<T>(options: { label: string }): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: {\n label: string\n parse: (raw: unknown) => T\n}): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n parse: (raw: unknown) => T\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: TagOptions<T, boolean>): Lite.Tag<T, boolean> {\n const key = Symbol.for(`@pumped-fn/lite/tag/${options.label}`)\n const hasDefault = \"default\" in options\n const defaultValue = hasDefault ? options.default : undefined\n const parse = options.parse\n\n function createTagged(value: T): Lite.Tagged<T> {\n let validatedValue = value\n if (parse) {\n try {\n validatedValue = parse(value)\n } catch (err) {\n throw new ParseError(\n `Failed to parse tag \"${options.label}\"`,\n \"tag\",\n options.label,\n err\n )\n }\n }\n return {\n [taggedSymbol]: true,\n key,\n value: validatedValue,\n }\n }\n\n function get(source: Lite.TagSource): T {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n throw new Error(`Tag \"${options.label}\" not found and has no default`)\n }\n\n function find(source: Lite.TagSource): T | undefined {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n return undefined\n }\n\n function collect(source: Lite.TagSource): T[] {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n const result: T[] = []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) result.push(tags[i]!.value as unknown as T)\n }\n return result\n }\n\n return Object.assign(createTagged, {\n [tagSymbol]: true as const,\n key,\n label: options.label,\n hasDefault,\n defaultValue,\n parse,\n get,\n find,\n collect,\n }) as unknown as Lite.Tag<T, boolean>\n}\n\n/**\n * Type guard to check if a value is a Tag.\n *\n * @param value - The value to check\n * @returns True if the value is a Tag, false otherwise\n *\n * @example\n * ```typescript\n * if (isTag(value)) {\n * const tagged = value(\"myValue\")\n * }\n * ```\n */\nexport function isTag(value: unknown): value is Lite.Tag<unknown, boolean> {\n return (\n typeof value === \"function\" &&\n (value as unknown as Record<symbol, unknown>)[tagSymbol] === true\n )\n}\n\n/**\n * Type guard to check if a value is a Tagged value.\n *\n * @param value - The value to check\n * @returns True if the value is a Tagged value, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagged(value)) {\n * console.log(value.key, value.value)\n * }\n * ```\n */\nexport function isTagged(value: unknown): value is Lite.Tagged<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[taggedSymbol] === true\n )\n}\n\n/**\n * Tag execution helpers for declaring how tags should be resolved from dependency sources.\n */\nexport const tags = {\n /**\n * Creates a required tag executor that throws if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that requires the tag to be present\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.required(nameTag) },\n * factory: (ctx, { name }) => `Hello ${name}`\n * })\n * ```\n */\n required<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"required\" }\n },\n\n /**\n * Creates an optional tag executor that returns undefined if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that allows the tag to be absent\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.optional(nameTag) },\n * factory: (ctx, { name }) => name ?? \"Anonymous\"\n * })\n * ```\n */\n optional<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T | undefined, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"optional\" }\n },\n\n /**\n * Creates a tag executor that collects all values for the given tag.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that returns an array of all matching tag values\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { names: tags.all(nameTag) },\n * factory: (ctx, { names }) => names.join(\", \")\n * })\n * ```\n */\n all<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T[], T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"all\" }\n },\n}\n\n/**\n * Type guard to check if a value is a TagExecutor.\n *\n * @param value - The value to check\n * @returns True if the value is a TagExecutor, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagExecutor(value)) {\n * console.log(value.mode, value.tag)\n * }\n * ```\n */\nexport function isTagExecutor(value: unknown): value is Lite.TagExecutor<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n tagExecutorSymbol in value\n )\n}\n","import { atomSymbol, controllerDepSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface AtomConfig<T, D extends Record<string, Lite.Dependency>> {\n deps?: D\n factory: Lite.AtomFactory<T, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a long-lived dependency that can be resolved and reused within a scope.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns An Atom instance that can be resolved to produce a value of type T\n *\n * @example\n * ```typescript\n * const dbAtom = atom({\n * factory: async (ctx) => createDatabase()\n * })\n * ```\n */\nexport function atom<T>(config: {\n deps?: undefined\n factory: (ctx: Lite.ResolveContext) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<\n T,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<T, D extends Record<string, Lite.Dependency>>(\n config: AtomConfig<T, D>\n): Lite.Atom<T> {\n return {\n [atomSymbol]: true,\n factory: config.factory as unknown as Lite.AtomFactory<T, Record<string, Lite.Dependency>>,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is an Atom.\n *\n * @param value - The value to check\n * @returns True if the value is an Atom, false otherwise\n *\n * @example\n * ```typescript\n * if (isAtom(value)) {\n * await scope.resolve(value)\n * }\n * ```\n */\nexport function isAtom(value: unknown): value is Lite.Atom<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[atomSymbol] === true\n )\n}\n\n/**\n * Wraps an Atom to receive a Controller instead of the resolved value.\n * The Controller provides full lifecycle control: get, resolve, release, invalidate, and subscribe.\n *\n * @param atom - The Atom to wrap\n * @returns A ControllerDep that resolves to a Controller for the Atom\n *\n * @example\n * ```typescript\n * const configAtom = atom({ factory: () => fetchConfig() })\n * const serverAtom = atom({\n * deps: { config: controller(configAtom) },\n * factory: (ctx, { config }) => {\n * const unsub = config.on(() => ctx.invalidate())\n * ctx.cleanup(unsub)\n * return createServer(config.get().port)\n * }\n * })\n * ```\n */\nexport function controller<T>(atom: Lite.Atom<T>): Lite.ControllerDep<T> {\n return {\n [controllerDepSymbol]: true,\n atom,\n }\n}\n\n/**\n * Type guard to check if a value is a ControllerDep wrapper.\n *\n * @param value - The value to check\n * @returns True if the value is a ControllerDep wrapper, false otherwise\n *\n * @example\n * ```typescript\n * if (isControllerDep(dep)) {\n * const ctrl = scope.controller(dep.atom)\n * }\n * ```\n */\nexport function isControllerDep(value: unknown): value is Lite.ControllerDep<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[controllerDepSymbol] === true\n )\n}\n","import { flowSymbol, typedSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\n/**\n * Type marker for flow input without runtime parsing.\n * Use this when you want typed input but don't need validation.\n *\n * @example\n * ```typescript\n * const myFlow = flow({\n * parse: typed<{ name: string }>(),\n * factory: (ctx) => {\n * return ctx.input.name.toUpperCase()\n * }\n * })\n * ```\n */\nexport function typed<T>(): Lite.Typed<T> {\n return { [typedSymbol]: true }\n}\n\nexport interface FlowConfig<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n> {\n name?: string\n parse?: ((raw: unknown) => MaybePromise<TInput>) | Lite.Typed<TInput>\n deps?: D\n factory: Lite.FlowFactory<TOutput, TInput, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a short-lived execution unit that processes input and produces output.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns A Flow instance that can be executed within an execution context\n *\n * @example\n * ```typescript\n * const processUser = flow({\n * factory: async (ctx) => {\n * const userId = ctx.input\n * return await fetchUser(userId)\n * }\n * })\n * ```\n */\nexport function flow<TOutput>(config: {\n name?: string\n parse?: undefined\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, unknown>\n\nexport function flow<TOutput, TInput>(config: {\n name?: string\n parse: (raw: unknown) => MaybePromise<TInput>\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<TOutput, TInput>(config: {\n name?: string\n parse: Lite.Typed<TInput>\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse?: undefined\n deps: D\n factory: (ctx: Lite.ExecutionContext, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, unknown>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse: (raw: unknown) => MaybePromise<TInput>\n deps: D\n factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse: Lite.Typed<TInput>\n deps: D\n factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n>(config: FlowConfig<TOutput, TInput, D>): Lite.Flow<TOutput, TInput> {\n const parse = config.parse\n const isTypedMarker =\n typeof parse === \"object\" && parse !== null && typedSymbol in parse\n\n return {\n [flowSymbol]: true,\n name: config.name,\n parse: isTypedMarker\n ? undefined\n : (parse as ((raw: unknown) => MaybePromise<TInput>) | undefined),\n factory: config.factory as unknown as Lite.FlowFactory<\n TOutput,\n TInput,\n Record<string, Lite.Dependency>\n >,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is a Flow.\n *\n * @param value - The value to check\n * @returns True if the value is a Flow, false otherwise\n *\n * @example\n * ```typescript\n * if (isFlow(value)) {\n * await ctx.exec({ flow: value, input: data })\n * }\n * ```\n */\nexport function isFlow(value: unknown): value is Lite.Flow<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[flowSymbol] === true\n )\n}\n","import { presetSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\n/**\n * Creates a preset value for an Atom, overriding its factory within a scope.\n *\n * @param atom - The Atom to preset\n * @param value - The preset value (can be a direct value or another Atom)\n * @returns A Preset instance to be used in scope configuration\n *\n * @example\n * ```typescript\n * const scope = await createScope({\n * presets: [preset(dbAtom, mockDatabase)]\n * })\n * ```\n */\nexport function preset<T>(\n atom: Lite.Atom<T>,\n value: T | Lite.Atom<T>\n): Lite.Preset<T> {\n return {\n [presetSymbol]: true,\n atom,\n value,\n }\n}\n\n/**\n * Type guard to check if a value is a Preset.\n *\n * @param value - The value to check\n * @returns True if the value is a Preset, false otherwise\n *\n * @example\n * ```typescript\n * if (isPreset(value)) {\n * console.log(value.atom, value.value)\n * }\n * ```\n */\nexport function isPreset(value: unknown): value is Lite.Preset<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[presetSymbol] === true\n )\n}\n","import { controllerSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise, AtomState } from \"./types\"\nimport { isAtom, isControllerDep } from \"./atom\"\nimport { ParseError } from \"./errors\"\n\ntype ListenerEvent = 'resolving' | 'resolved' | '*'\n\nclass DataStoreImpl implements Lite.DataStore {\n private readonly map = new Map<symbol, unknown>()\n\n get<T>(tag: Lite.Tag<T, boolean>): T | undefined {\n return this.map.get(tag.key) as T | undefined\n }\n\n set<T>(tag: Lite.Tag<T, boolean>, value: T): void {\n this.map.set(tag.key, value)\n }\n\n has<T, H extends boolean>(tag: Lite.Tag<T, H>): boolean {\n return this.map.has(tag.key)\n }\n\n delete<T, H extends boolean>(tag: Lite.Tag<T, H>): boolean {\n return this.map.delete(tag.key)\n }\n\n clear(): void {\n this.map.clear()\n }\n\n getOrSet<T>(tag: Lite.Tag<T, true>): T\n getOrSet<T>(tag: Lite.Tag<T, true>, value: T): T\n getOrSet<T>(tag: Lite.Tag<T, false>, value: T): T\n getOrSet<T>(tag: Lite.Tag<T, boolean>, value?: T): T {\n if (this.map.has(tag.key)) {\n return this.map.get(tag.key) as T\n }\n const storedValue = value !== undefined ? value : (tag.defaultValue as T)\n this.map.set(tag.key, storedValue)\n return storedValue\n }\n}\n\ninterface AtomEntry<T> {\n state: AtomState\n value?: T\n hasValue: boolean\n error?: Error\n cleanups: (() => MaybePromise<void>)[]\n listeners: Map<ListenerEvent, Set<() => void>>\n pendingInvalidate: boolean\n pendingSet?: { value: T } | { fn: (prev: T) => T }\n data?: Lite.DataStore\n}\n\nclass SelectHandleImpl<T, S> implements Lite.SelectHandle<S> {\n private listeners = new Set<() => void>()\n private currentValue: S\n private ctrlUnsub: (() => void) | null = null\n\n constructor(\n private ctrl: Lite.Controller<T>,\n private selector: (value: T) => S,\n private eq: (prev: S, next: S) => boolean\n ) {\n if (ctrl.state !== 'resolved') {\n throw new Error(\"Cannot select from unresolved atom\")\n }\n\n this.currentValue = selector(ctrl.get())\n\n this.ctrlUnsub = ctrl.on('resolved', () => {\n const nextValue = this.selector(this.ctrl.get())\n if (!this.eq(this.currentValue, nextValue)) {\n this.currentValue = nextValue\n this.notifyListeners()\n }\n })\n }\n\n get(): S {\n return this.currentValue\n }\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n\n return () => {\n this.listeners.delete(listener)\n if (this.listeners.size === 0) {\n this.cleanup()\n }\n }\n }\n\n private notifyListeners(): void {\n for (const listener of this.listeners) {\n listener()\n }\n }\n\n private cleanup(): void {\n this.ctrlUnsub?.()\n this.ctrlUnsub = null\n this.listeners.clear()\n }\n}\n\nclass ControllerImpl<T> implements Lite.Controller<T> {\n readonly [controllerSymbol] = true\n\n constructor(\n private atom: Lite.Atom<T>,\n private scope: ScopeImpl\n ) {}\n\n get state(): AtomState {\n const entry = this.scope.getEntry(this.atom)\n return entry?.state ?? 'idle'\n }\n\n get(): T {\n const entry = this.scope.getEntry(this.atom)\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n if (entry.state === 'resolving' && entry.hasValue) {\n return entry.value as T\n }\n if (entry.state === 'resolved' && entry.hasValue) {\n return entry.value as T\n }\n throw new Error(\"Atom not resolved\")\n }\n\n async resolve(): Promise<T> {\n return this.scope.resolve(this.atom)\n }\n\n async release(): Promise<void> {\n return this.scope.release(this.atom)\n }\n\n invalidate(): void {\n this.scope.invalidate(this.atom)\n }\n\n set(value: T): void {\n this.scope.scheduleSet(this.atom, value)\n }\n\n update(fn: (prev: T) => T): void {\n this.scope.scheduleUpdate(this.atom, fn)\n }\n\n on(event: ListenerEvent, listener: () => void): () => void {\n return this.scope.addListener(this.atom, event, listener)\n }\n}\n\nclass ScopeImpl implements Lite.Scope {\n private cache = new Map<Lite.Atom<unknown>, AtomEntry<unknown>>()\n private presets = new Map<Lite.Atom<unknown>, unknown | Lite.Atom<unknown>>()\n private resolving = new Set<Lite.Atom<unknown>>()\n private pending = new Map<Lite.Atom<unknown>, Promise<unknown>>()\n private stateListeners = new Map<AtomState, Map<Lite.Atom<unknown>, Set<() => void>>>()\n private invalidationQueue = new Set<Lite.Atom<unknown>>()\n private invalidationScheduled = false\n private invalidationChain: Set<Lite.Atom<unknown>> | null = null\n private chainPromise: Promise<void> | null = null\n private initialized = false\n readonly extensions: Lite.Extension[]\n readonly tags: Lite.Tagged<unknown>[]\n readonly ready: Promise<void>\n\n private scheduleInvalidation<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry || entry.state === \"idle\") return\n\n if (entry.state === \"resolving\") {\n entry.pendingInvalidate = true\n return\n }\n\n this.invalidationQueue.add(atom)\n\n if (!this.chainPromise) {\n this.invalidationChain = new Set()\n this.invalidationScheduled = true\n this.chainPromise = new Promise<void>((resolve, reject) => {\n queueMicrotask(() => {\n this.processInvalidationChain().then(resolve).catch(reject)\n })\n })\n }\n }\n\n private async processInvalidationChain(): Promise<void> {\n try {\n while (this.invalidationQueue.size > 0) {\n const atom = this.invalidationQueue.values().next().value as Lite.Atom<unknown>\n this.invalidationQueue.delete(atom)\n\n if (this.invalidationChain!.has(atom)) {\n const chainAtoms = Array.from(this.invalidationChain!)\n chainAtoms.push(atom)\n const path = chainAtoms\n .map(a => a.factory?.name || \"<anonymous>\")\n .join(\" → \")\n throw new Error(`Infinite invalidation loop detected: ${path}`)\n }\n\n this.invalidationChain!.add(atom)\n await this.doInvalidateSequential(atom)\n }\n } finally {\n this.invalidationChain = null\n this.chainPromise = null\n this.invalidationScheduled = false\n }\n }\n\n constructor(options?: Lite.ScopeOptions) {\n this.extensions = options?.extensions ?? []\n this.tags = options?.tags ?? []\n\n for (const p of options?.presets ?? []) {\n this.presets.set(p.atom, p.value)\n }\n\n this.ready = this.init()\n }\n\n private async init(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.init) {\n await ext.init(this)\n }\n }\n this.initialized = true\n }\n\n getEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> | undefined {\n return this.cache.get(atom) as AtomEntry<T> | undefined\n }\n\n private getOrCreateEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> {\n let entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) {\n entry = {\n state: 'idle',\n hasValue: false,\n cleanups: [],\n listeners: new Map([\n ['resolving', new Set()],\n ['resolved', new Set()],\n ['*', new Set()],\n ]),\n pendingInvalidate: false,\n }\n this.cache.set(atom, entry as AtomEntry<unknown>)\n }\n return entry\n }\n\n addListener<T>(atom: Lite.Atom<T>, event: ListenerEvent, listener: () => void): () => void {\n const entry = this.getOrCreateEntry(atom)\n const listeners = entry.listeners.get(event)!\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }\n\n private notifyListeners<T>(atom: Lite.Atom<T>, event: 'resolving' | 'resolved'): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const eventListeners = entry.listeners.get(event)\n if (eventListeners) {\n for (const listener of eventListeners) {\n listener()\n }\n }\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private notifyAllListeners<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private emitStateChange(state: AtomState, atom: Lite.Atom<unknown>): void {\n const stateMap = this.stateListeners.get(state)\n if (stateMap) {\n const listeners = stateMap.get(atom)\n if (listeners) {\n for (const listener of listeners) {\n listener()\n }\n }\n }\n }\n\n on(event: AtomState, atom: Lite.Atom<unknown>, listener: () => void): () => void {\n let stateMap = this.stateListeners.get(event)\n if (!stateMap) {\n stateMap = new Map()\n this.stateListeners.set(event, stateMap)\n }\n let listeners = stateMap.get(atom)\n if (!listeners) {\n listeners = new Set()\n stateMap.set(atom, listeners)\n }\n listeners.add(listener)\n\n const capturedStateMap = stateMap\n const capturedListeners = listeners\n\n return () => {\n capturedListeners.delete(listener)\n if (capturedListeners.size === 0) {\n capturedStateMap.delete(atom)\n if (capturedStateMap.size === 0) {\n this.stateListeners.delete(event)\n }\n }\n }\n }\n\n async resolve<T>(atom: Lite.Atom<T>): Promise<T> {\n if (!this.initialized) {\n await this.ready\n }\n\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (entry?.state === 'resolved') {\n return entry.value as T\n }\n\n const pendingPromise = this.pending.get(atom)\n if (pendingPromise) {\n return pendingPromise as Promise<T>\n }\n\n if (this.resolving.has(atom)) {\n throw new Error(\"Circular dependency detected\")\n }\n\n const presetValue = this.presets.get(atom)\n if (presetValue !== undefined) {\n if (isAtom(presetValue)) {\n return this.resolve(presetValue as Lite.Atom<T>)\n }\n const newEntry = this.getOrCreateEntry(atom)\n newEntry.state = 'resolved'\n newEntry.value = presetValue as T\n newEntry.hasValue = true\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n return newEntry.value\n }\n\n this.resolving.add(atom)\n\n const promise = this.doResolve(atom)\n this.pending.set(atom, promise as Promise<unknown>)\n\n try {\n return await promise\n } finally {\n this.resolving.delete(atom)\n this.pending.delete(atom)\n }\n }\n\n private async doResolve<T>(atom: Lite.Atom<T>): Promise<T> {\n const entry = this.getOrCreateEntry(atom)\n\n const wasResolving = entry.state === 'resolving'\n if (!wasResolving) {\n entry.state = 'resolving'\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom, 'resolving')\n }\n\n const resolvedDeps = await this.resolveDeps(atom.deps)\n\n const ctx: Lite.ResolveContext = {\n cleanup: (fn) => entry.cleanups.push(fn),\n invalidate: () => {\n this.scheduleInvalidation(atom)\n },\n scope: this,\n get data() {\n if (!entry.data) {\n entry.data = new DataStoreImpl()\n }\n return entry.data\n },\n }\n\n const factory = atom.factory as (\n ctx: Lite.ResolveContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doResolve = async () => {\n if (atom.deps && Object.keys(atom.deps).length > 0) {\n return factory(ctx, resolvedDeps)\n } else {\n return factory(ctx)\n }\n }\n\n try {\n const value = await this.applyResolveExtensions(atom, doResolve)\n entry.state = 'resolved'\n entry.value = value\n entry.hasValue = true\n entry.error = undefined\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n } else if (entry.pendingSet) {\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n }\n\n return value\n } catch (err) {\n entry.state = 'failed'\n entry.error = err instanceof Error ? err : new Error(String(err))\n entry.value = undefined\n entry.hasValue = false\n this.emitStateChange('failed', atom)\n this.notifyAllListeners(atom)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n }\n\n throw entry.error\n }\n }\n\n private async applyResolveExtensions<T>(\n atom: Lite.Atom<T>,\n doResolve: () => Promise<T>\n ): Promise<T> {\n let next = doResolve\n\n for (let i = this.extensions.length - 1; i >= 0; i--) {\n const ext = this.extensions[i]\n if (ext?.wrapResolve) {\n const currentNext = next\n next = ext.wrapResolve.bind(ext, currentNext, atom, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n async resolveDeps(\n deps: Record<string, Lite.Dependency> | undefined,\n tagSource?: Lite.Tagged<unknown>[]\n ): Promise<Record<string, unknown>> {\n if (!deps) return {}\n\n const result: Record<string, unknown> = {}\n const tags = tagSource ?? this.tags\n\n for (const [key, dep] of Object.entries(deps)) {\n if (isAtom(dep)) {\n result[key] = await this.resolve(dep)\n } else if (isControllerDep(dep)) {\n result[key] = new ControllerImpl(dep.atom, this)\n } else if (tagExecutorSymbol in (dep as object)) {\n const tagExecutor = dep as Lite.TagExecutor<unknown, boolean>\n\n switch (tagExecutor.mode) {\n case \"required\":\n result[key] = tagExecutor.tag.get(tags)\n break\n case \"optional\":\n result[key] = tagExecutor.tag.find(tags)\n break\n case \"all\":\n result[key] = tagExecutor.tag.collect(tags)\n break\n }\n }\n }\n\n return result\n }\n\n controller<T>(atom: Lite.Atom<T>): Lite.Controller<T> {\n return new ControllerImpl(atom, this)\n }\n\n select<T, S>(\n atom: Lite.Atom<T>,\n selector: (value: T) => S,\n options?: Lite.SelectOptions<S>\n ): Lite.SelectHandle<S> {\n const ctrl = this.controller(atom)\n const eq = options?.eq ?? ((a, b) => a === b)\n return new SelectHandleImpl(ctrl, selector, eq)\n }\n\n invalidate<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n if (entry.state === 'idle') return\n\n if (entry.state === 'resolving') {\n entry.pendingInvalidate = true\n return\n }\n\n this.scheduleInvalidation(atom)\n }\n\n scheduleSet<T>(atom: Lite.Atom<T>, value: T): void {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n\n if (entry.state === 'resolving') {\n entry.pendingSet = { value }\n return\n }\n\n entry.pendingSet = { value }\n this.scheduleInvalidation(atom)\n }\n\n scheduleUpdate<T>(atom: Lite.Atom<T>, fn: (prev: T) => T): void {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n\n if (entry.state === 'resolving') {\n entry.pendingSet = { fn }\n return\n }\n\n entry.pendingSet = { fn }\n this.scheduleInvalidation(atom)\n }\n\n private async doInvalidateSequential<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) return\n if (entry.state === \"idle\") return\n\n const previousValue = entry.value\n const pendingSet = entry.pendingSet\n entry.pendingSet = undefined\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n entry.cleanups = []\n\n entry.state = \"resolving\"\n entry.value = previousValue\n entry.error = undefined\n entry.pendingInvalidate = false\n this.pending.delete(atom)\n this.resolving.delete(atom)\n this.emitStateChange(\"resolving\", atom)\n this.notifyListeners(atom, \"resolving\")\n\n if (pendingSet) {\n if ('value' in pendingSet) {\n entry.value = pendingSet.value\n } else {\n entry.value = pendingSet.fn(previousValue as T)\n }\n entry.state = 'resolved'\n entry.hasValue = true\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n return\n }\n\n await this.resolve(atom)\n }\n\n async release<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n\n this.cache.delete(atom)\n }\n\n async dispose(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.dispose) {\n await ext.dispose(this)\n }\n }\n\n const atoms = Array.from(this.cache.keys())\n for (const atom of atoms) {\n await this.release(atom as Lite.Atom<unknown>)\n }\n }\n\n async flush(): Promise<void> {\n if (this.chainPromise) {\n await this.chainPromise\n }\n }\n\n createContext(options?: Lite.CreateContextOptions): Lite.ExecutionContext {\n return new ExecutionContextImpl(this, options)\n }\n}\n\nclass ExecutionContextImpl implements Lite.ExecutionContext {\n private cleanups: (() => MaybePromise<void>)[] = []\n private closed = false\n private _input: unknown = undefined\n private readonly baseTags: Lite.Tagged<unknown>[]\n\n constructor(\n readonly scope: ScopeImpl,\n options?: Lite.CreateContextOptions\n ) {\n const ctxTags = options?.tags\n this.baseTags = ctxTags?.length\n ? [...ctxTags, ...scope.tags]\n : scope.tags\n }\n\n get input(): unknown {\n return this._input\n }\n\n async exec<T>(options: Lite.ExecFlowOptions<T> | Lite.ExecFnOptions<T>): Promise<T> {\n if (this.closed) {\n throw new Error(\"ExecutionContext is closed\")\n }\n\n if (\"flow\" in options) {\n return this.execFlow(options)\n } else {\n return this.execFn(options)\n }\n }\n\n private async execFlow<T>(options: Lite.ExecFlowOptions<T>): Promise<T> {\n const { flow, input, tags: execTags, name: execName } = options\n\n const hasExtraTags = (execTags?.length ?? 0) > 0 || (flow.tags?.length ?? 0) > 0\n const allTags = hasExtraTags\n ? [...(execTags ?? []), ...this.baseTags, ...(flow.tags ?? [])]\n : this.baseTags\n\n const resolvedDeps = await this.scope.resolveDeps(flow.deps, allTags)\n\n let parsedInput: unknown = input\n if (flow.parse) {\n const label = execName ?? flow.name ?? \"anonymous\"\n try {\n parsedInput = await flow.parse(input)\n } catch (err) {\n throw new ParseError(\n `Failed to parse flow input \"${label}\"`,\n \"flow-input\",\n label,\n err\n )\n }\n }\n\n this._input = parsedInput\n\n const factory = flow.factory as unknown as (\n ctx: Lite.ExecutionContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doExec = async (): Promise<T> => {\n if (flow.deps && Object.keys(flow.deps).length > 0) {\n return factory(this, resolvedDeps)\n } else {\n return factory(this)\n }\n }\n\n return this.applyExecExtensions(flow, doExec)\n }\n\n private execFn<T>(options: Lite.ExecFnOptions<T>): Promise<T> {\n const { fn, params } = options\n const doExec = () => Promise.resolve(fn(...params))\n return this.applyExecExtensions(fn, doExec)\n }\n\n private async applyExecExtensions<T>(\n target: Lite.Flow<T, unknown> | ((...args: unknown[]) => MaybePromise<T>),\n doExec: () => Promise<T>\n ): Promise<T> {\n let next = doExec\n\n for (let i = this.scope.extensions.length - 1; i >= 0; i--) {\n const ext = this.scope.extensions[i]\n if (ext?.wrapExec) {\n const currentNext = next\n next = ext.wrapExec.bind(ext, currentNext, target, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n onClose(fn: () => MaybePromise<void>): void {\n this.cleanups.push(fn)\n }\n\n async close(): Promise<void> {\n if (this.closed) return\n\n this.closed = true\n\n for (let i = this.cleanups.length - 1; i >= 0; i--) {\n const cleanup = this.cleanups[i]\n if (cleanup) await cleanup()\n }\n }\n}\n\n/**\n * Creates a DI container that manages Atom resolution, caching, and lifecycle.\n *\n * The scope is returned synchronously, with a `ready` promise that resolves\n * when all extensions have been initialized. Resolution methods automatically\n * wait for `ready` before proceeding.\n *\n * @param options - Optional configuration for extensions, presets, and tags\n * @returns A Scope instance with a `ready` promise for extension initialization\n *\n * @example\n * ```typescript\n * const scope = createScope({\n * extensions: [loggingExtension],\n * presets: [preset(dbAtom, testDb)]\n * })\n *\n * // Option 1: resolve() waits for ready internally\n * const db = await scope.resolve(dbAtom)\n *\n * // Option 2: explicit wait\n * await scope.ready\n * const db = await scope.resolve(dbAtom)\n * ```\n */\nexport function createScope(options?: Lite.ScopeOptions): Lite.Scope {\n return new ScopeImpl(options)\n}\n","export type { Lite, AtomState } from \"./types\"\nexport {\n atomSymbol,\n flowSymbol,\n tagSymbol,\n taggedSymbol,\n controllerDepSymbol,\n presetSymbol,\n controllerSymbol,\n tagExecutorSymbol,\n typedSymbol,\n} from \"./symbols\"\nexport { tag, tags, isTag, isTagged, isTagExecutor } from \"./tag\"\nexport { atom, isAtom, controller, isControllerDep } from \"./atom\"\nexport { flow, isFlow, typed } from \"./flow\"\nexport { preset, isPreset } from \"./preset\"\nexport { createScope } from \"./scope\"\nexport { ParseError } from \"./errors\"\n\nexport const VERSION = \"0.0.1\"\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["atomSymbol: unique symbol","flowSymbol: unique symbol","tagSymbol: unique symbol","taggedSymbol: unique symbol","controllerDepSymbol: unique symbol","presetSymbol: unique symbol","controllerSymbol: unique symbol","tagExecutorSymbol: unique symbol","typedSymbol: unique symbol","serviceSymbol: unique symbol","phase: \"tag\" | \"flow-input\"","label: string","cause: unknown","tags","result: T[]","tag","ctrl: Lite.Controller<T>","selector: (value: T) => S","eq: (prev: S, next: S) => boolean","atom: Lite.Atom<T>","scope: ScopeImpl","atom","ctx: Lite.ResolveContext","result: Record<string, unknown>","tags","parsedInput: unknown","flow"],"sources":["../src/symbols.ts","../src/errors.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/service.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":["export const atomSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/atom\")\nexport const flowSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/flow\")\nexport const tagSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag\")\nexport const taggedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tagged\")\nexport const controllerDepSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller-dep\")\nexport const presetSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/preset\")\nexport const controllerSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller\")\nexport const tagExecutorSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag-executor\")\nexport const typedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/typed\")\nexport const serviceSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/service\")\n","export class ParseError extends Error {\n override readonly name = \"ParseError\"\n\n constructor(\n message: string,\n readonly phase: \"tag\" | \"flow-input\",\n readonly label: string,\n override readonly cause: unknown\n ) {\n super(message)\n }\n}\n","import { tagSymbol, taggedSymbol, tagExecutorSymbol } from \"./symbols\"\nimport { ParseError } from \"./errors\"\nimport type { Lite } from \"./types\"\n\nexport interface TagOptions<T, HasDefault extends boolean> {\n label: string\n default?: HasDefault extends true ? T : never\n parse?: (raw: unknown) => T\n}\n\n/**\n * Creates a metadata tag for attaching and retrieving typed values from Atoms and Flows.\n *\n * @param options - Configuration object with label and optional default value\n * @returns A Tag instance that can create tagged values and query them from sources\n *\n * @example\n * ```typescript\n * const nameTag = tag<string>({ label: \"name\" })\n * const myAtom = atom({\n * factory: (ctx) => \"value\",\n * tags: [nameTag(\"MyAtom\")]\n * })\n * ```\n */\nexport function tag<T>(options: { label: string }): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: {\n label: string\n parse: (raw: unknown) => T\n}): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n parse: (raw: unknown) => T\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: TagOptions<T, boolean>): Lite.Tag<T, boolean> {\n const key = Symbol.for(`@pumped-fn/lite/tag/${options.label}`)\n const hasDefault = \"default\" in options\n const defaultValue = hasDefault ? options.default : undefined\n const parse = options.parse\n\n function createTagged(value: T): Lite.Tagged<T> {\n let validatedValue = value\n if (parse) {\n try {\n validatedValue = parse(value)\n } catch (err) {\n throw new ParseError(\n `Failed to parse tag \"${options.label}\"`,\n \"tag\",\n options.label,\n err\n )\n }\n }\n return {\n [taggedSymbol]: true,\n key,\n value: validatedValue,\n }\n }\n\n function get(source: Lite.TagSource): T {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n throw new Error(`Tag \"${options.label}\" not found and has no default`)\n }\n\n function find(source: Lite.TagSource): T | undefined {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n return undefined\n }\n\n function collect(source: Lite.TagSource): T[] {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n const result: T[] = []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) result.push(tags[i]!.value as unknown as T)\n }\n return result\n }\n\n return Object.assign(createTagged, {\n [tagSymbol]: true as const,\n key,\n label: options.label,\n hasDefault,\n defaultValue,\n parse,\n get,\n find,\n collect,\n }) as unknown as Lite.Tag<T, boolean>\n}\n\n/**\n * Type guard to check if a value is a Tag.\n *\n * @param value - The value to check\n * @returns True if the value is a Tag, false otherwise\n *\n * @example\n * ```typescript\n * if (isTag(value)) {\n * const tagged = value(\"myValue\")\n * }\n * ```\n */\nexport function isTag(value: unknown): value is Lite.Tag<unknown, boolean> {\n return (\n typeof value === \"function\" &&\n (value as unknown as Record<symbol, unknown>)[tagSymbol] === true\n )\n}\n\n/**\n * Type guard to check if a value is a Tagged value.\n *\n * @param value - The value to check\n * @returns True if the value is a Tagged value, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagged(value)) {\n * console.log(value.key, value.value)\n * }\n * ```\n */\nexport function isTagged(value: unknown): value is Lite.Tagged<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[taggedSymbol] === true\n )\n}\n\n/**\n * Tag execution helpers for declaring how tags should be resolved from dependency sources.\n */\nexport const tags = {\n /**\n * Creates a required tag executor that throws if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that requires the tag to be present\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.required(nameTag) },\n * factory: (ctx, { name }) => `Hello ${name}`\n * })\n * ```\n */\n required<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"required\" }\n },\n\n /**\n * Creates an optional tag executor that returns undefined if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that allows the tag to be absent\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.optional(nameTag) },\n * factory: (ctx, { name }) => name ?? \"Anonymous\"\n * })\n * ```\n */\n optional<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T | undefined, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"optional\" }\n },\n\n /**\n * Creates a tag executor that collects all values for the given tag.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that returns an array of all matching tag values\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { names: tags.all(nameTag) },\n * factory: (ctx, { names }) => names.join(\", \")\n * })\n * ```\n */\n all<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T[], T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"all\" }\n },\n}\n\n/**\n * Type guard to check if a value is a TagExecutor.\n *\n * @param value - The value to check\n * @returns True if the value is a TagExecutor, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagExecutor(value)) {\n * console.log(value.mode, value.tag)\n * }\n * ```\n */\nexport function isTagExecutor(value: unknown): value is Lite.TagExecutor<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n tagExecutorSymbol in value\n )\n}\n","import { atomSymbol, controllerDepSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface AtomConfig<T, D extends Record<string, Lite.Dependency>> {\n deps?: D\n factory: Lite.AtomFactory<T, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a long-lived dependency that can be resolved and reused within a scope.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns An Atom instance that can be resolved to produce a value of type T\n *\n * @example\n * ```typescript\n * const dbAtom = atom({\n * factory: async (ctx) => createDatabase()\n * })\n * ```\n */\nexport function atom<T>(config: {\n deps?: undefined\n factory: (ctx: Lite.ResolveContext) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<\n T,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<T, D extends Record<string, Lite.Dependency>>(\n config: AtomConfig<T, D>\n): Lite.Atom<T> {\n return {\n [atomSymbol]: true,\n factory: config.factory as unknown as Lite.AtomFactory<T, Record<string, Lite.Dependency>>,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is an Atom.\n *\n * @param value - The value to check\n * @returns True if the value is an Atom, false otherwise\n *\n * @example\n * ```typescript\n * if (isAtom(value)) {\n * await scope.resolve(value)\n * }\n * ```\n */\nexport function isAtom(value: unknown): value is Lite.Atom<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[atomSymbol] === true\n )\n}\n\n/**\n * Wraps an Atom to receive a Controller instead of the resolved value.\n * The Controller provides full lifecycle control: get, resolve, release, invalidate, and subscribe.\n *\n * @param atom - The Atom to wrap\n * @returns A ControllerDep that resolves to a Controller for the Atom\n *\n * @example\n * ```typescript\n * const configAtom = atom({ factory: () => fetchConfig() })\n * const serverAtom = atom({\n * deps: { config: controller(configAtom) },\n * factory: (ctx, { config }) => {\n * const unsub = config.on(() => ctx.invalidate())\n * ctx.cleanup(unsub)\n * return createServer(config.get().port)\n * }\n * })\n * ```\n */\nexport function controller<T>(atom: Lite.Atom<T>): Lite.ControllerDep<T> {\n return {\n [controllerDepSymbol]: true,\n atom,\n }\n}\n\n/**\n * Type guard to check if a value is a ControllerDep wrapper.\n *\n * @param value - The value to check\n * @returns True if the value is a ControllerDep wrapper, false otherwise\n *\n * @example\n * ```typescript\n * if (isControllerDep(dep)) {\n * const ctrl = scope.controller(dep.atom)\n * }\n * ```\n */\nexport function isControllerDep(value: unknown): value is Lite.ControllerDep<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[controllerDepSymbol] === true\n )\n}\n","import { flowSymbol, typedSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\n/**\n * Type marker for flow input without runtime parsing.\n * Use this when you want typed input but don't need validation.\n *\n * @example\n * ```typescript\n * const myFlow = flow({\n * parse: typed<{ name: string }>(),\n * factory: (ctx) => {\n * return ctx.input.name.toUpperCase()\n * }\n * })\n * ```\n */\nexport function typed<T>(): Lite.Typed<T> {\n return { [typedSymbol]: true }\n}\n\nexport interface FlowConfig<\n Output,\n Input,\n D extends Record<string, Lite.Dependency>,\n> {\n name?: string\n parse?: ((raw: unknown) => MaybePromise<Input>) | Lite.Typed<Input>\n deps?: D\n factory: Lite.FlowFactory<Output, Input, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a short-lived execution unit that processes input and produces output.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns A Flow instance that can be executed within an execution context\n *\n * @example\n * ```typescript\n * const processUser = flow({\n * factory: async (ctx) => {\n * const userId = ctx.input\n * return await fetchUser(userId)\n * }\n * })\n * ```\n */\nexport function flow<TOutput>(config: {\n name?: string\n parse?: undefined\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, void>\n\nexport function flow<TOutput, TInput>(config: {\n name?: string\n parse: (raw: unknown) => MaybePromise<TInput>\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext & { readonly input: NoInfer<TInput> }) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<TOutput, TInput>(config: {\n name?: string\n parse: Lite.Typed<TInput>\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext & { readonly input: NoInfer<TInput> }) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse?: undefined\n deps: D\n factory: (ctx: Lite.ExecutionContext, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, void>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse: (raw: unknown) => MaybePromise<TInput>\n deps: D\n factory: (ctx: Lite.ExecutionContext & { readonly input: NoInfer<TInput> }, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse: Lite.Typed<TInput>\n deps: D\n factory: (ctx: Lite.ExecutionContext & { readonly input: NoInfer<TInput> }, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n>(config: FlowConfig<TOutput, TInput, D>): Lite.Flow<TOutput, TInput> {\n const parse = config.parse\n const isTypedMarker =\n typeof parse === \"object\" && parse !== null && typedSymbol in parse\n\n return {\n [flowSymbol]: true,\n name: config.name,\n parse: isTypedMarker\n ? undefined\n : (parse as ((raw: unknown) => MaybePromise<TInput>) | undefined),\n factory: config.factory as unknown as Lite.FlowFactory<\n TOutput,\n TInput,\n Record<string, Lite.Dependency>\n >,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is a Flow.\n *\n * @param value - The value to check\n * @returns True if the value is a Flow, false otherwise\n *\n * @example\n * ```typescript\n * if (isFlow(value)) {\n * await ctx.exec({ flow: value, input: data })\n * }\n * ```\n */\nexport function isFlow(value: unknown): value is Lite.Flow<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[flowSymbol] === true\n )\n}\n","import { presetSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\n/**\n * Creates a preset value for an Atom, overriding its factory within a scope.\n *\n * @param atom - The Atom to preset\n * @param value - The preset value (can be a direct value or another Atom)\n * @returns A Preset instance to be used in scope configuration\n *\n * @example\n * ```typescript\n * const scope = await createScope({\n * presets: [preset(dbAtom, mockDatabase)]\n * })\n * ```\n */\nexport function preset<T>(\n atom: Lite.Atom<T>,\n value: T | Lite.Atom<T>\n): Lite.Preset<T> {\n return {\n [presetSymbol]: true,\n atom,\n value,\n }\n}\n\n/**\n * Type guard to check if a value is a Preset.\n *\n * @param value - The value to check\n * @returns True if the value is a Preset, false otherwise\n *\n * @example\n * ```typescript\n * if (isPreset(value)) {\n * console.log(value.atom, value.value)\n * }\n * ```\n */\nexport function isPreset(value: unknown): value is Lite.Preset<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[presetSymbol] === true\n )\n}\n","import { atomSymbol, serviceSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface ServiceConfig<T, D extends Record<string, Lite.Dependency>> {\n deps?: D\n factory: Lite.ServiceFactory<T, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a context-aware service that exposes multiple methods.\n * Each method receives ExecutionContext as its first parameter.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns A Service instance that can be resolved to produce methods\n *\n * @example\n * ```typescript\n * const dbService = service({\n * deps: { pool: poolAtom },\n * factory: (ctx, { pool }) => ({\n * query: (ctx, sql: string) => pool.query(sql),\n * transaction: (ctx, fn) => pool.withTransaction(fn),\n * })\n * })\n * ```\n */\nexport function service<T>(config: {\n deps?: undefined\n factory: (ctx: Lite.ResolveContext) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Service<T>\n\nexport function service<\n T,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | Lite.TagExecutor<unknown>>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Service<T>\n\nexport function service<T, D extends Record<string, Lite.Dependency>>(\n config: ServiceConfig<T, D>\n): Lite.Service<T> {\n return {\n [atomSymbol]: true,\n [serviceSymbol]: true,\n factory: config.factory as unknown as Lite.ServiceFactory<T, Record<string, Lite.Dependency>>,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is a Service.\n *\n * @param value - The value to check\n * @returns True if the value is a Service, false otherwise\n *\n * @example\n * ```typescript\n * if (isService(value)) {\n * const methods = await scope.resolve(value)\n * }\n * ```\n */\nexport function isService(value: unknown): value is Lite.Service<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[serviceSymbol] === true\n )\n}\n","import { controllerSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise, AtomState } from \"./types\"\nimport { isAtom, isControllerDep } from \"./atom\"\nimport { ParseError } from \"./errors\"\n\ntype ListenerEvent = 'resolving' | 'resolved' | '*'\n\nclass DataStoreImpl implements Lite.DataStore {\n private readonly map = new Map<symbol, unknown>()\n\n get<T>(tag: Lite.Tag<T, boolean>): T | undefined {\n return this.map.get(tag.key) as T | undefined\n }\n\n set<T>(tag: Lite.Tag<T, boolean>, value: T): void {\n this.map.set(tag.key, value)\n }\n\n has<T, H extends boolean>(tag: Lite.Tag<T, H>): boolean {\n return this.map.has(tag.key)\n }\n\n delete<T, H extends boolean>(tag: Lite.Tag<T, H>): boolean {\n return this.map.delete(tag.key)\n }\n\n clear(): void {\n this.map.clear()\n }\n\n getOrSet<T>(tag: Lite.Tag<T, true>): T\n getOrSet<T>(tag: Lite.Tag<T, true>, value: T): T\n getOrSet<T>(tag: Lite.Tag<T, false>, value: T): T\n getOrSet<T>(tag: Lite.Tag<T, boolean>, value?: T): T {\n if (this.map.has(tag.key)) {\n return this.map.get(tag.key) as T\n }\n const storedValue = value !== undefined ? value : (tag.defaultValue as T)\n this.map.set(tag.key, storedValue)\n return storedValue\n }\n}\n\ninterface AtomEntry<T> {\n state: AtomState\n value?: T\n hasValue: boolean\n error?: Error\n cleanups: (() => MaybePromise<void>)[]\n listeners: Map<ListenerEvent, Set<() => void>>\n pendingInvalidate: boolean\n pendingSet?: { value: T } | { fn: (prev: T) => T }\n data?: Lite.DataStore\n}\n\nclass SelectHandleImpl<T, S> implements Lite.SelectHandle<S> {\n private listeners = new Set<() => void>()\n private currentValue: S\n private ctrlUnsub: (() => void) | null = null\n\n constructor(\n private ctrl: Lite.Controller<T>,\n private selector: (value: T) => S,\n private eq: (prev: S, next: S) => boolean\n ) {\n if (ctrl.state !== 'resolved') {\n throw new Error(\"Cannot select from unresolved atom\")\n }\n\n this.currentValue = selector(ctrl.get())\n\n this.ctrlUnsub = ctrl.on('resolved', () => {\n const nextValue = this.selector(this.ctrl.get())\n if (!this.eq(this.currentValue, nextValue)) {\n this.currentValue = nextValue\n this.notifyListeners()\n }\n })\n }\n\n get(): S {\n return this.currentValue\n }\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n\n return () => {\n this.listeners.delete(listener)\n if (this.listeners.size === 0) {\n this.cleanup()\n }\n }\n }\n\n private notifyListeners(): void {\n for (const listener of this.listeners) {\n listener()\n }\n }\n\n private cleanup(): void {\n this.ctrlUnsub?.()\n this.ctrlUnsub = null\n this.listeners.clear()\n }\n}\n\nclass ControllerImpl<T> implements Lite.Controller<T> {\n readonly [controllerSymbol] = true\n\n constructor(\n private atom: Lite.Atom<T>,\n private scope: ScopeImpl\n ) {}\n\n get state(): AtomState {\n const entry = this.scope.getEntry(this.atom)\n return entry?.state ?? 'idle'\n }\n\n get(): T {\n const entry = this.scope.getEntry(this.atom)\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n if (entry.state === 'resolving' && entry.hasValue) {\n return entry.value as T\n }\n if (entry.state === 'resolved' && entry.hasValue) {\n return entry.value as T\n }\n throw new Error(\"Atom not resolved\")\n }\n\n async resolve(): Promise<T> {\n return this.scope.resolve(this.atom)\n }\n\n async release(): Promise<void> {\n return this.scope.release(this.atom)\n }\n\n invalidate(): void {\n this.scope.invalidate(this.atom)\n }\n\n set(value: T): void {\n this.scope.scheduleSet(this.atom, value)\n }\n\n update(fn: (prev: T) => T): void {\n this.scope.scheduleUpdate(this.atom, fn)\n }\n\n on(event: ListenerEvent, listener: () => void): () => void {\n return this.scope.addListener(this.atom, event, listener)\n }\n}\n\nclass ScopeImpl implements Lite.Scope {\n private cache = new Map<Lite.Atom<unknown>, AtomEntry<unknown>>()\n private presets = new Map<Lite.Atom<unknown>, unknown | Lite.Atom<unknown>>()\n private resolving = new Set<Lite.Atom<unknown>>()\n private pending = new Map<Lite.Atom<unknown>, Promise<unknown>>()\n private stateListeners = new Map<AtomState, Map<Lite.Atom<unknown>, Set<() => void>>>()\n private invalidationQueue = new Set<Lite.Atom<unknown>>()\n private invalidationScheduled = false\n private invalidationChain: Set<Lite.Atom<unknown>> | null = null\n private chainPromise: Promise<void> | null = null\n private initialized = false\n readonly extensions: Lite.Extension[]\n readonly tags: Lite.Tagged<unknown>[]\n readonly ready: Promise<void>\n\n private scheduleInvalidation<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry || entry.state === \"idle\") return\n\n if (entry.state === \"resolving\") {\n entry.pendingInvalidate = true\n return\n }\n\n this.invalidationQueue.add(atom)\n\n if (!this.chainPromise) {\n this.invalidationChain = new Set()\n this.invalidationScheduled = true\n this.chainPromise = new Promise<void>((resolve, reject) => {\n queueMicrotask(() => {\n this.processInvalidationChain().then(resolve).catch(reject)\n })\n })\n }\n }\n\n private async processInvalidationChain(): Promise<void> {\n try {\n while (this.invalidationQueue.size > 0) {\n const atom = this.invalidationQueue.values().next().value as Lite.Atom<unknown>\n this.invalidationQueue.delete(atom)\n\n if (this.invalidationChain!.has(atom)) {\n const chainAtoms = Array.from(this.invalidationChain!)\n chainAtoms.push(atom)\n const path = chainAtoms\n .map(a => a.factory?.name || \"<anonymous>\")\n .join(\" → \")\n throw new Error(`Infinite invalidation loop detected: ${path}`)\n }\n\n this.invalidationChain!.add(atom)\n await this.doInvalidateSequential(atom)\n }\n } finally {\n this.invalidationChain = null\n this.chainPromise = null\n this.invalidationScheduled = false\n }\n }\n\n constructor(options?: Lite.ScopeOptions) {\n this.extensions = options?.extensions ?? []\n this.tags = options?.tags ?? []\n\n for (const p of options?.presets ?? []) {\n this.presets.set(p.atom, p.value)\n }\n\n this.ready = this.init()\n }\n\n private async init(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.init) {\n await ext.init(this)\n }\n }\n this.initialized = true\n }\n\n getEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> | undefined {\n return this.cache.get(atom) as AtomEntry<T> | undefined\n }\n\n private getOrCreateEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> {\n let entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) {\n entry = {\n state: 'idle',\n hasValue: false,\n cleanups: [],\n listeners: new Map([\n ['resolving', new Set()],\n ['resolved', new Set()],\n ['*', new Set()],\n ]),\n pendingInvalidate: false,\n }\n this.cache.set(atom, entry as AtomEntry<unknown>)\n }\n return entry\n }\n\n addListener<T>(atom: Lite.Atom<T>, event: ListenerEvent, listener: () => void): () => void {\n const entry = this.getOrCreateEntry(atom)\n const listeners = entry.listeners.get(event)!\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }\n\n private notifyListeners<T>(atom: Lite.Atom<T>, event: 'resolving' | 'resolved'): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const eventListeners = entry.listeners.get(event)\n if (eventListeners) {\n for (const listener of eventListeners) {\n listener()\n }\n }\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private notifyAllListeners<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private emitStateChange(state: AtomState, atom: Lite.Atom<unknown>): void {\n const stateMap = this.stateListeners.get(state)\n if (stateMap) {\n const listeners = stateMap.get(atom)\n if (listeners) {\n for (const listener of listeners) {\n listener()\n }\n }\n }\n }\n\n on(event: AtomState, atom: Lite.Atom<unknown>, listener: () => void): () => void {\n let stateMap = this.stateListeners.get(event)\n if (!stateMap) {\n stateMap = new Map()\n this.stateListeners.set(event, stateMap)\n }\n let listeners = stateMap.get(atom)\n if (!listeners) {\n listeners = new Set()\n stateMap.set(atom, listeners)\n }\n listeners.add(listener)\n\n const capturedStateMap = stateMap\n const capturedListeners = listeners\n\n return () => {\n capturedListeners.delete(listener)\n if (capturedListeners.size === 0) {\n capturedStateMap.delete(atom)\n if (capturedStateMap.size === 0) {\n this.stateListeners.delete(event)\n }\n }\n }\n }\n\n async resolve<T>(atom: Lite.Atom<T>): Promise<T> {\n if (!this.initialized) {\n await this.ready\n }\n\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (entry?.state === 'resolved') {\n return entry.value as T\n }\n\n const pendingPromise = this.pending.get(atom)\n if (pendingPromise) {\n return pendingPromise as Promise<T>\n }\n\n if (this.resolving.has(atom)) {\n throw new Error(\"Circular dependency detected\")\n }\n\n const presetValue = this.presets.get(atom)\n if (presetValue !== undefined) {\n if (isAtom(presetValue)) {\n return this.resolve(presetValue as Lite.Atom<T>)\n }\n const newEntry = this.getOrCreateEntry(atom)\n newEntry.state = 'resolved'\n newEntry.value = presetValue as T\n newEntry.hasValue = true\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n return newEntry.value\n }\n\n this.resolving.add(atom)\n\n const promise = this.doResolve(atom)\n this.pending.set(atom, promise as Promise<unknown>)\n\n try {\n return await promise\n } finally {\n this.resolving.delete(atom)\n this.pending.delete(atom)\n }\n }\n\n private async doResolve<T>(atom: Lite.Atom<T>): Promise<T> {\n const entry = this.getOrCreateEntry(atom)\n\n const wasResolving = entry.state === 'resolving'\n if (!wasResolving) {\n entry.state = 'resolving'\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom, 'resolving')\n }\n\n const resolvedDeps = await this.resolveDeps(atom.deps)\n\n const ctx: Lite.ResolveContext = {\n cleanup: (fn) => entry.cleanups.push(fn),\n invalidate: () => {\n this.scheduleInvalidation(atom)\n },\n scope: this,\n get data() {\n if (!entry.data) {\n entry.data = new DataStoreImpl()\n }\n return entry.data\n },\n }\n\n const factory = atom.factory as (\n ctx: Lite.ResolveContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doResolve = async () => {\n if (atom.deps && Object.keys(atom.deps).length > 0) {\n return factory(ctx, resolvedDeps)\n } else {\n return factory(ctx)\n }\n }\n\n try {\n const value = await this.applyResolveExtensions(atom, doResolve)\n entry.state = 'resolved'\n entry.value = value\n entry.hasValue = true\n entry.error = undefined\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n } else if (entry.pendingSet) {\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n }\n\n return value\n } catch (err) {\n entry.state = 'failed'\n entry.error = err instanceof Error ? err : new Error(String(err))\n entry.value = undefined\n entry.hasValue = false\n this.emitStateChange('failed', atom)\n this.notifyAllListeners(atom)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n }\n\n throw entry.error\n }\n }\n\n private async applyResolveExtensions<T>(\n atom: Lite.Atom<T>,\n doResolve: () => Promise<T>\n ): Promise<T> {\n let next = doResolve\n\n for (let i = this.extensions.length - 1; i >= 0; i--) {\n const ext = this.extensions[i]\n if (ext?.wrapResolve) {\n const currentNext = next\n next = ext.wrapResolve.bind(ext, currentNext, atom, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n async resolveDeps(\n deps: Record<string, Lite.Dependency> | undefined,\n tagSource?: Lite.Tagged<unknown>[]\n ): Promise<Record<string, unknown>> {\n if (!deps) return {}\n\n const result: Record<string, unknown> = {}\n const tags = tagSource ?? this.tags\n\n for (const [key, dep] of Object.entries(deps)) {\n if (isAtom(dep)) {\n result[key] = await this.resolve(dep)\n } else if (isControllerDep(dep)) {\n result[key] = new ControllerImpl(dep.atom, this)\n } else if (tagExecutorSymbol in (dep as object)) {\n const tagExecutor = dep as Lite.TagExecutor<unknown, boolean>\n\n switch (tagExecutor.mode) {\n case \"required\":\n result[key] = tagExecutor.tag.get(tags)\n break\n case \"optional\":\n result[key] = tagExecutor.tag.find(tags)\n break\n case \"all\":\n result[key] = tagExecutor.tag.collect(tags)\n break\n }\n }\n }\n\n return result\n }\n\n controller<T>(atom: Lite.Atom<T>): Lite.Controller<T> {\n return new ControllerImpl(atom, this)\n }\n\n select<T, S>(\n atom: Lite.Atom<T>,\n selector: (value: T) => S,\n options?: Lite.SelectOptions<S>\n ): Lite.SelectHandle<S> {\n const ctrl = this.controller(atom)\n const eq = options?.eq ?? ((a, b) => a === b)\n return new SelectHandleImpl(ctrl, selector, eq)\n }\n\n invalidate<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n if (entry.state === 'idle') return\n\n if (entry.state === 'resolving') {\n entry.pendingInvalidate = true\n return\n }\n\n this.scheduleInvalidation(atom)\n }\n\n scheduleSet<T>(atom: Lite.Atom<T>, value: T): void {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n\n if (entry.state === 'resolving') {\n entry.pendingSet = { value }\n return\n }\n\n entry.pendingSet = { value }\n this.scheduleInvalidation(atom)\n }\n\n scheduleUpdate<T>(atom: Lite.Atom<T>, fn: (prev: T) => T): void {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n\n if (entry.state === 'resolving') {\n entry.pendingSet = { fn }\n return\n }\n\n entry.pendingSet = { fn }\n this.scheduleInvalidation(atom)\n }\n\n private async doInvalidateSequential<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) return\n if (entry.state === \"idle\") return\n\n const previousValue = entry.value\n const pendingSet = entry.pendingSet\n entry.pendingSet = undefined\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n entry.cleanups = []\n\n entry.state = \"resolving\"\n entry.value = previousValue\n entry.error = undefined\n entry.pendingInvalidate = false\n this.pending.delete(atom)\n this.resolving.delete(atom)\n this.emitStateChange(\"resolving\", atom)\n this.notifyListeners(atom, \"resolving\")\n\n if (pendingSet) {\n if ('value' in pendingSet) {\n entry.value = pendingSet.value\n } else {\n entry.value = pendingSet.fn(previousValue as T)\n }\n entry.state = 'resolved'\n entry.hasValue = true\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n return\n }\n\n await this.resolve(atom)\n }\n\n async release<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n\n this.cache.delete(atom)\n }\n\n async dispose(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.dispose) {\n await ext.dispose(this)\n }\n }\n\n const atoms = Array.from(this.cache.keys())\n for (const atom of atoms) {\n await this.release(atom as Lite.Atom<unknown>)\n }\n }\n\n async flush(): Promise<void> {\n if (this.chainPromise) {\n await this.chainPromise\n }\n }\n\n createContext(options?: Lite.CreateContextOptions): Lite.ExecutionContext {\n return new ExecutionContextImpl(this, options)\n }\n}\n\nclass ExecutionContextImpl implements Lite.ExecutionContext {\n private cleanups: (() => MaybePromise<void>)[] = []\n private closed = false\n private readonly _input: unknown\n private readonly baseTags: Lite.Tagged<unknown>[]\n private _data: Map<symbol, unknown> | undefined\n readonly parent: Lite.ExecutionContext | undefined\n\n constructor(\n readonly scope: ScopeImpl,\n options?: Lite.CreateContextOptions & {\n parent?: Lite.ExecutionContext\n input?: unknown\n }\n ) {\n this.parent = options?.parent\n this._input = options?.input\n const ctxTags = options?.tags\n this.baseTags = ctxTags?.length\n ? [...ctxTags, ...scope.tags]\n : scope.tags\n }\n\n get input(): unknown {\n return this._input\n }\n\n get data(): Map<symbol, unknown> {\n if (!this._data) {\n this._data = new Map()\n }\n return this._data\n }\n\n async exec(options: {\n flow: Lite.Flow<unknown, unknown>\n input?: unknown\n name?: string\n tags?: Lite.Tagged<unknown>[]\n } | Lite.ExecFnOptions<unknown>): Promise<unknown> {\n if (this.closed) {\n throw new Error(\"ExecutionContext is closed\")\n }\n\n if (\"flow\" in options) {\n const { flow, input, name: execName } = options\n let parsedInput: unknown = input\n if (flow.parse) {\n const label = execName ?? flow.name ?? \"anonymous\"\n try {\n parsedInput = await flow.parse(input)\n } catch (err) {\n throw new ParseError(\n `Failed to parse flow input \"${label}\"`,\n \"flow-input\",\n label,\n err\n )\n }\n }\n\n const childCtx = new ExecutionContextImpl(this.scope, {\n parent: this,\n tags: this.baseTags,\n input: parsedInput\n })\n\n try {\n return await childCtx.execFlowInternal(options)\n } finally {\n await childCtx.close()\n }\n } else {\n const childCtx = new ExecutionContextImpl(this.scope, {\n parent: this,\n tags: this.baseTags\n })\n\n try {\n return await childCtx.execFnInternal(options)\n } finally {\n await childCtx.close()\n }\n }\n }\n\n private async execFlowInternal(options: {\n flow: Lite.Flow<unknown, unknown>\n input?: unknown\n name?: string\n tags?: Lite.Tagged<unknown>[]\n }): Promise<unknown> {\n const { flow, tags: execTags } = options\n\n const hasExtraTags = (execTags?.length ?? 0) > 0 || (flow.tags?.length ?? 0) > 0\n const allTags = hasExtraTags\n ? [...(execTags ?? []), ...this.baseTags, ...(flow.tags ?? [])]\n : this.baseTags\n\n const resolvedDeps = await this.scope.resolveDeps(flow.deps, allTags)\n\n const factory = flow.factory as unknown as (\n ctx: Lite.ExecutionContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<unknown>\n\n const doExec = async (): Promise<unknown> => {\n if (flow.deps && Object.keys(flow.deps).length > 0) {\n return factory(this, resolvedDeps)\n } else {\n return factory(this)\n }\n }\n\n return this.applyExecExtensions(flow, doExec)\n }\n\n private async execFnInternal(options: Lite.ExecFnOptions<unknown>): Promise<unknown> {\n const { fn, params } = options\n const doExec = () => Promise.resolve(fn(this, ...params))\n return this.applyExecExtensions(fn, doExec)\n }\n\n private async applyExecExtensions(\n target: Lite.Flow<unknown, unknown> | ((ctx: Lite.ExecutionContext, ...args: unknown[]) => MaybePromise<unknown>),\n doExec: () => Promise<unknown>\n ): Promise<unknown> {\n let next = doExec\n\n for (let i = this.scope.extensions.length - 1; i >= 0; i--) {\n const ext = this.scope.extensions[i]\n if (ext?.wrapExec) {\n const currentNext = next\n next = ext.wrapExec.bind(ext, currentNext, target, this) as () => Promise<unknown>\n }\n }\n\n return next()\n }\n\n onClose(fn: () => MaybePromise<void>): void {\n this.cleanups.push(fn)\n }\n\n async close(): Promise<void> {\n if (this.closed) return\n\n this.closed = true\n\n for (let i = this.cleanups.length - 1; i >= 0; i--) {\n const cleanup = this.cleanups[i]\n if (cleanup) await cleanup()\n }\n }\n}\n\n/**\n * Creates a DI container that manages Atom resolution, caching, and lifecycle.\n *\n * The scope is returned synchronously, with a `ready` promise that resolves\n * when all extensions have been initialized. Resolution methods automatically\n * wait for `ready` before proceeding.\n *\n * @param options - Optional configuration for extensions, presets, and tags\n * @returns A Scope instance with a `ready` promise for extension initialization\n *\n * @example\n * ```typescript\n * const scope = createScope({\n * extensions: [loggingExtension],\n * presets: [preset(dbAtom, testDb)]\n * })\n *\n * // Option 1: resolve() waits for ready internally\n * const db = await scope.resolve(dbAtom)\n *\n * // Option 2: explicit wait\n * await scope.ready\n * const db = await scope.resolve(dbAtom)\n * ```\n */\nexport function createScope(options?: Lite.ScopeOptions): Lite.Scope {\n return new ScopeImpl(options)\n}\n","export type { Lite, AtomState } from \"./types\"\nexport {\n atomSymbol,\n flowSymbol,\n tagSymbol,\n taggedSymbol,\n controllerDepSymbol,\n presetSymbol,\n controllerSymbol,\n tagExecutorSymbol,\n typedSymbol,\n serviceSymbol,\n} from \"./symbols\"\nexport { tag, tags, isTag, isTagged, isTagExecutor } from \"./tag\"\nexport { atom, isAtom, controller, isControllerDep } from \"./atom\"\nexport { flow, isFlow, typed } from \"./flow\"\nexport { preset, isPreset } from \"./preset\"\nexport { service, isService } from \"./service\"\nexport { createScope } from \"./scope\"\nexport { ParseError } from \"./errors\"\n\nexport const VERSION = \"0.0.1\"\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pumped-fn/lite",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Lightweight dependency injection with minimal reactivity",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",