@pumped-fn/lite 0.1.0 → 0.2.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,10 +1,21 @@
1
1
  # @pumped-fn/lite
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - de1382f: Add `scope.select()` for fine-grained reactivity with selector and equality-based change detection.
8
+
9
+ - `SelectHandle<S>` provides `get()` and `subscribe()` for derived subscriptions
10
+ - Default reference equality (`===`) with optional custom `eq` function
11
+ - Auto-cleanup when last subscriber unsubscribes
12
+ - Designed for React 18+ `useSyncExternalStore` compatibility
13
+
3
14
  ## 0.1.0
4
15
 
5
16
  ### Minor Changes
6
17
 
7
- - bc2ce40: Add @pumped-fn/lite - lightweight DI with minimal reactivity
18
+ - 6dfd919: Add @pumped-fn/lite - lightweight DI with minimal reactivity
8
19
 
9
20
  Lightweight dependency injection for TypeScript with:
10
21
 
package/README.md CHANGED
@@ -182,6 +182,33 @@ const appAtom = atom({
182
182
  })
183
183
  ```
184
184
 
185
+ ## Per-Atom Private Storage
186
+
187
+ The `ctx.data` Map provides private storage that survives invalidation but clears on release. Useful for internal state that shouldn't be exposed:
188
+
189
+ ```typescript
190
+ const pollingAtom = atom({
191
+ factory: async (ctx) => {
192
+ const prev = ctx.data.get('prev') as Data | undefined
193
+ const current = await fetchData()
194
+
195
+ if (prev && current !== prev) {
196
+ console.log('Data changed!')
197
+ }
198
+ ctx.data.set('prev', current)
199
+
200
+ setTimeout(() => ctx.invalidate(), 5000)
201
+ return current
202
+ }
203
+ })
204
+ ```
205
+
206
+ | Event | `ctx.data` Behavior |
207
+ |-------|---------------------|
208
+ | First access | Map created lazily |
209
+ | `invalidate()` | Map preserved |
210
+ | `release()` | Map cleared |
211
+
185
212
  ## Tags (Contextual Values)
186
213
 
187
214
  Tags pass contextual values through execution without explicit wiring:
package/dist/index.cjs CHANGED
@@ -263,6 +263,44 @@ function isPreset(value) {
263
263
 
264
264
  //#endregion
265
265
  //#region src/scope.ts
266
+ var SelectHandleImpl = class {
267
+ listeners = /* @__PURE__ */ new Set();
268
+ currentValue;
269
+ ctrlUnsub = null;
270
+ constructor(ctrl, selector, eq) {
271
+ this.ctrl = ctrl;
272
+ this.selector = selector;
273
+ this.eq = eq;
274
+ if (ctrl.state !== "resolved") throw new Error("Cannot select from unresolved atom");
275
+ this.currentValue = selector(ctrl.get());
276
+ this.ctrlUnsub = ctrl.on(() => {
277
+ if (this.ctrl.state !== "resolved") return;
278
+ const nextValue = this.selector(this.ctrl.get());
279
+ if (!this.eq(this.currentValue, nextValue)) {
280
+ this.currentValue = nextValue;
281
+ this.notifyListeners();
282
+ }
283
+ });
284
+ }
285
+ get() {
286
+ return this.currentValue;
287
+ }
288
+ subscribe(listener) {
289
+ this.listeners.add(listener);
290
+ return () => {
291
+ this.listeners.delete(listener);
292
+ if (this.listeners.size === 0) this.cleanup();
293
+ };
294
+ }
295
+ notifyListeners() {
296
+ for (const listener of this.listeners) listener();
297
+ }
298
+ cleanup() {
299
+ this.ctrlUnsub?.();
300
+ this.ctrlUnsub = null;
301
+ this.listeners.clear();
302
+ }
303
+ };
266
304
  var ControllerImpl = class {
267
305
  [controllerSymbol] = true;
268
306
  constructor(atom$1, scope) {
@@ -419,7 +457,11 @@ var ScopeImpl = class {
419
457
  invalidate: () => {
420
458
  this.scheduleInvalidation(atom$1);
421
459
  },
422
- scope: this
460
+ scope: this,
461
+ get data() {
462
+ if (!entry.data) entry.data = /* @__PURE__ */ new Map();
463
+ return entry.data;
464
+ }
423
465
  };
424
466
  const factory = atom$1.factory;
425
467
  const doResolve = async () => {
@@ -489,6 +531,9 @@ var ScopeImpl = class {
489
531
  controller(atom$1) {
490
532
  return new ControllerImpl(atom$1, this);
491
533
  }
534
+ select(atom$1, selector, options) {
535
+ return new SelectHandleImpl(this.controller(atom$1), selector, options?.eq ?? ((a, b) => a === b));
536
+ }
492
537
  invalidate(atom$1) {
493
538
  const entry = this.cache.get(atom$1);
494
539
  if (!entry) return;
package/dist/index.d.cts CHANGED
@@ -19,6 +19,7 @@ declare namespace Lite {
19
19
  dispose(): Promise<void>;
20
20
  createContext(options?: CreateContextOptions): ExecutionContext;
21
21
  on(event: AtomState, atom: Atom<unknown>, listener: () => void): () => void;
22
+ select<T, S>(atom: Atom<T>, selector: (value: T) => S, options?: SelectOptions<S>): SelectHandle<S>;
22
23
  }
23
24
  interface CreateContextOptions {
24
25
  tags?: Tagged<unknown>[];
@@ -44,6 +45,7 @@ declare namespace Lite {
44
45
  cleanup(fn: () => MaybePromise<void>): void;
45
46
  invalidate(): void;
46
47
  readonly scope: Scope;
48
+ readonly data: Map<string, unknown>;
47
49
  }
48
50
  interface ExecutionContext {
49
51
  readonly input: unknown;
@@ -72,6 +74,13 @@ declare namespace Lite {
72
74
  invalidate(): void;
73
75
  on(listener: () => void): () => void;
74
76
  }
77
+ interface SelectOptions<S> {
78
+ eq?: (prev: S, next: S) => boolean;
79
+ }
80
+ interface SelectHandle<S> {
81
+ get(): S;
82
+ subscribe(listener: () => void): () => void;
83
+ }
75
84
  interface Tag<T, HasDefault extends boolean = false> {
76
85
  readonly [tagSymbol]: true;
77
86
  readonly key: symbol;
@@ -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/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/scope.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -19,6 +19,7 @@ declare namespace Lite {
19
19
  dispose(): Promise<void>;
20
20
  createContext(options?: CreateContextOptions): ExecutionContext;
21
21
  on(event: AtomState, atom: Atom<unknown>, listener: () => void): () => void;
22
+ select<T, S>(atom: Atom<T>, selector: (value: T) => S, options?: SelectOptions<S>): SelectHandle<S>;
22
23
  }
23
24
  interface CreateContextOptions {
24
25
  tags?: Tagged<unknown>[];
@@ -44,6 +45,7 @@ declare namespace Lite {
44
45
  cleanup(fn: () => MaybePromise<void>): void;
45
46
  invalidate(): void;
46
47
  readonly scope: Scope;
48
+ readonly data: Map<string, unknown>;
47
49
  }
48
50
  interface ExecutionContext {
49
51
  readonly input: unknown;
@@ -72,6 +74,13 @@ declare namespace Lite {
72
74
  invalidate(): void;
73
75
  on(listener: () => void): () => void;
74
76
  }
77
+ interface SelectOptions<S> {
78
+ eq?: (prev: S, next: S) => boolean;
79
+ }
80
+ interface SelectHandle<S> {
81
+ get(): S;
82
+ subscribe(listener: () => void): () => void;
83
+ }
75
84
  interface Tag<T, HasDefault extends boolean = false> {
76
85
  readonly [tagSymbol]: true;
77
86
  readonly key: symbol;
@@ -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/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/scope.ts","../src/index.ts"],"sourcesContent":[],"mappings":";cAAa;AAAA,cACA,UAD8D,EAAA,OAAA,MAAA;AAC9D,cACA,SAD8D,EAAA,OAAA,MAAA;AAC9D,cACA,YAD4D,EAAA,OAAA,MAAA;AAC5D,cACA,mBADkE,EAAA,OAAA,MAAA;AAClE,cACA,YADiF,EAAA,OAAA,MAAA;AACjF,cACA,gBADkE,EAAA,OAAA,MAAA;AAClE,cACA,iBAD0E,EAAA,OAAA,MAAA;;;AAN1E,KCWD,YDX+D,CAAA,CAAA,CAAA,GCW7C,CDX6C,GCWzC,ODXyC,CCWjC,CDXiC,CAAA;AAC9D,KCYD,SAAA,GDZ+D,MAAA,GAAA,WAAA,GAAA,UAAA,GAAA,QAAA;AAC9D,kBCaI,IAAA,CDbwD;EAC5D,UAAA,KAAkE,CAAA;IAClE,OAAA,CAAA,CAAA,CAAA,CAAA,IAAA,ECaQ,IDbyE,CCapE,CDboE,CAAA,CAAA,ECa/D,ODb+D,CCavD,CDbuD,CAAA;IACjF,UAAA,CAAkE,CAAA,CAAA,CAAA,IAAA,ECavD,IDbuD,CCalD,CDbkD,CAAA,CAAA,ECa7C,UDb6C,CCalC,CDbkC,CAAA;IAClE,OAAA,CAAA,CAAA,CAAA,CAAA,IAA0E,ECalE,IDbkE,CCa7D,CDb6D,CAAA,CAAA,ECaxD,ODbwD,CAAA,IAAA,CAAA;IAC1E,OAAA,EAAA,ECaE,ODb2E,CAAA,IAAA,CAAA;4BCc9D,uBAAuB;cACrC,iBAAiB;uBAEnB,KAAK,sBACO,MAAM,aACd,cAAc,KACvB,aAAa;EAhBR;EAAkB,UAAA,oBAAA,CAAA;IAAY,IAAA,CAAA,EAoB/B,MApB+B,CAAA,OAAA,CAAA,EAAA;EAAR;EAAO,UAAA,YAAA,CAAA;IAE7B,UAAS,CAAA,EAsBJ,SAtBI,EAAA;IAEJ,IAAI,CAAA,EAqBV,MArBU,CAAA,OAAA,CAAA,EAAA;IAEK,OAAA,CAAA,EAoBZ,MApBY,CAAA,OAAA,CAAA,EAAA;EAAL;EAAkB,UAAA,IAAA,CAAA,CAAA,CAAA,CAAA;IAAR,UAwBjB,UAAA,CAxBiB,EAAA,IAAA;IACF,SAAA,OAAA,EAwBP,WAxBO,CAwBK,CAxBL,EAwBQ,MAxBR,CAAA,MAAA,EAwBuB,UAxBvB,CAAA,CAAA;IAAL,SAAA,IAAA,CAAA,EAyBJ,MAzBI,CAAA,MAAA,EAyBW,UAzBX,CAAA;IAAqB,SAAA,IAAA,CAAA,EA0BzB,MA1ByB,CAAA,OAAA,CAAA,EAAA;EAAX;EACR,UAAA,IAAA,CAAA,OAAA,EAAA,SAAA,OAAA,CAAA,CAAA;IAAL,UA6BP,UAAA,CA7BO,EAAA,IAAA;IAAU,SAAA,OAAA,EA8BT,WA9BS,CA8BG,OA9BH,EA8BY,MA9BZ,EA8BoB,MA9BpB,CAAA,MAAA,EA8BmC,UA9BnC,CAAA,CAAA;IAChB,SAAA,IAAA,CAAA,EA8BK,MA9BL,CAAA,MAAA,EA8BoB,UA9BpB,CAAA;IACa,SAAA,IAAA,CAAA,EA8BR,MA9BQ,CAAA,OAAA,CAAA,EAAA;EAAuB;EACrC,UAAA,cAAA,CAAA;IAAiB,OAAA,CAAA,EAAA,EAAA,GAAA,GAiCT,YAjCS,CAAA,IAAA,CAAA,CAAA,EAAA,IAAA;IAEd,UAAA,EAAA,EAAA,IAAA;IAAL,SAAA,KAAA,EAiCQ,KAjCR;IACY,SAAA,IAAA,EAiCL,GAjCK,CAAA,MAAA,EAAA,OAAA,CAAA;EAAM;EACA,UAAA,gBAAA,CAAA;IAAd,SAAA,KAAA,EAAA,OAAA;IACI,SAAA,KAAA,EAoCA,KApCA;IAAb,IAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAqCc,eArCd,CAqC8B,CArC9B,CAAA,CAAA,EAqCmC,OArCnC,CAqC2C,CArC3C,CAAA;IAII,IAAA,CAAA,CAAA,EAAA,aAAA,OAAA,EAAA,CAAA,CAAA,OAAA,EAkCkC,aAlClC,CAkCgD,CAlChD,EAkCmD,IAlCnD,CAAA,CAAA,EAkC2D,OAlC3D,CAkCmE,CAlCnE,CAAA;IAIM,OAAA,CAAA,EAAA,EAAA,GAAA,GA+BK,YA/BL,CAAA,IAAA,CAAA,CAAA,EAAA,IAAA;IACN,KAAA,EAAA,EA+BE,OA/BF,CAAA,IAAA,CAAA;EACG;EAIA,UAAA,eAAA,CAAA,CAAA,CAAA,CAAA;IACoB,IAAA,EA6BxB,IA7BwB,CA6BnB,CA7BmB,EAAA,OAAA,CAAA;IAAkB,KAAA,EAAA,OAAA;IAAf,IAAA,CAAA,EA+B1B,MA/B0B,CAAA,OAAA,CAAA,EAAA;EAAf;EACa,UAAA,aAAA,CAAA,CAAA,EAAA,aAAA,OAAA,EAAA,GAAA,OAAA,EAAA,CAAA,CAAA;IAAf,EAAA,EAAA,CAAA,GAAA,IAAA,EAkCF,IAlCE,EAAA,GAkCO,YAlCP,CAkCoB,CAlCpB,CAAA;IACA,MAAA,EAkCR,IAlCQ;IAIN,IAAA,CAAA,EA+BH,MA/BG,CAAA,OAAA,CAAA,EAAA;EACoB;EAAS,UAAA,UAAA,CAAA,CAAA,CAAA,CAAA;IAAuB,UAkCpD,gBAAA,CAlCoD,EAAA,IAAA;IAAf,SAAA,KAAA,EAmC/B,SAnC+B;IAA7B,GAAA,EAAA,EAoCX,CApCW;IACa,OAAA,EAAA,EAoCpB,OApCoB,CAoCZ,CApCY,CAAA;IAAf,OAAA,EAAA,EAqCL,OArCK,CAAA,IAAA,CAAA;IACA,UAAA,EAAA,EAAA,IAAA;IAIE,EAAA,CAAA,QAAA,EAAA,GAAA,GAAA,IAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAEF;EACD,UAAA,aAAA,CAAA,CAAA,CAAA,CAAA;IAKC,EAAA,CAAA,EAAA,CAAA,IAAA,EA8BJ,CA9BI,EAAA,IAAA,EA8BK,CA9BL,EAAA,GAAA,OAAA;EACiB;EAAhB,UAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IAA6B,GAAA,EAAA,EAiCvC,CAjCuC;IAAR,SAAA,CAAA,QAAA,EAAA,GAAA,GAAA,IAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EACiB;EAAG,UAAA,GAAA,CAAA,CAAA,EAAA,mBAAA,OAAA,GAAA,KAAA,CAAA,CAAA;IAAjB,UAqC/B,SAAA,CArC+B,EAAA,IAAA;IAAiC,SAAA,GAAA,EAAA,MAAA;IAAR,SAAA,KAAA,EAAA,MAAA;IAChD,SAAA,YAAA,EAuCK,UAvCL,SAAA,IAAA,GAuC+B,CAvC/B,GAAA,SAAA;IACT,SAAA,UAAA,EAuCY,UAvCZ;IAIE,CAAA,KAAA,EAoCH,CApCG,CAAA,EAoCC,MApCD,CAoCQ,CApCR,CAAA;IAAL,GAAA,CAAA,MAAA,EAqCM,SArCN,CAAA,EAqCkB,UArClB,SAAA,IAAA,GAqC4C,CArC5C,GAqCgD,CArChD;IAEC,IAAA,CAAA,MAAA,EAoCM,SApCN,CAAA,EAoCkB,UApClB,SAAA,IAAA,GAoC4C,CApC5C,GAoCgD,CApChD,GAAA,SAAA;IAIO,OAAA,CAAA,MAAA,EAiCE,SAjCF,CAAA,EAiCc,CAjCd,EAAA;EAAsB;EAAb,UAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IACf,UAoCE,YAAA,CApCF,EAAA,IAAA;IACD,SAAA,GAAA,EAAA,MAAA;IAIG,SAAA,KAAA,EAiCM,CAjCN;EACM;EACT,KAAA,SAAA,GAkCe,MAlCf,CAAA,OAAA,CAAA,EAAA,GAAA;IACY,IAAA,CAAA,EAiCgC,MAjChC,CAAA,OAAA,CAAA,EAAA;EAAR,CAAA;EACA,UAAA,WAAA,CAAA,OAAA,EAAA,OAkCgC,OAlChC,CAAA,CAAA;IAMC,UA6BF,iBAAA,CA7BE,EAAA,IAAA;IAAS,SAAA,GAAA,EA8BP,GA9BO,CA8BH,IA9BG,EAAA,OAAA,CAAA;IAId,SAAA,IAAA,EAAA,UAAA,GAAA,UAAA,GAAA,KAAA;EAKG;EAGa,UAAA,aAAA,CAAA,CAAA,CAAA,CAAA;IAA0B,UAuBvC,mBAAA,CAvBuC,EAAA,IAAA;IAC5B,SAAA,IAAA,EAuBN,IAvBM,CAuBD,CAvBC,CAAA;EACb;EAAW,UAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAP,UA0BF,YAAA,CA1BE,EAAA,IAAA;IACA,SAAA,IAAA,EA0BG,IA1BH,CA0BQ,CA1BR,CAAA;IAAY,SAAA,KAAA,EA2BR,CA3BQ,GA2BJ,IA3BI,CA2BC,CA3BD,CAAA;EAA0B;EAAI,UAAA,SAAA,CAAA;IACzC,SAAA,IAAA,EAAA,MAAA;IAAY,IAAA,EAAA,KAAA,EA+BZ,KA/BY,CAAA,EA+BJ,YA/BI,CAAA,IAAA,CAAA;IAA0B,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,GAAA,GAiCrC,OAjCqC,CAiC7B,CAjC6B,CAAA,EAAA,IAAA,EAkC3C,IAlC2C,CAkCtC,CAlCsC,CAAA,EAAA,KAAA,EAmC1C,KAnC0C,CAAA,EAoChD,OApCgD,CAoCxC,CApCwC,CAAA;IAAI,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,GAAA,GAsCzC,OAtCyC,CAsCjC,CAtCiC,CAAA,EAAA,MAAA,EAuC7C,IAvC6C,CAuCxC,CAvCwC,EAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA,EAAA,OAAA,EAAA,EAAA,GAuCD,YAvCC,CAuCY,CAvCZ,CAAA,CAAA,EAAA,GAAA,EAwChD,gBAxCgD,CAAA,EAyCpD,OAzCoD,CAyC5C,CAzC4C,CAAA;IACvC,OAAA,EAAA,KAAA,EAyCA,KAzCA,CAAA,EAyCQ,YAzCR,CAAA,IAAA,CAAA;EAAY;EAIlB,KAAA,UAAA,GAyCR,IAzCQ,CAAA,OAAA,CAAA,GA0CR,aA1CQ,CAAA,OAAA,CAAA,GA2CR,WA3CQ,CAAA,OAAA,CAAA;EAEM,KAAA,QAAA,CAAA,CAAA,CAAA,GA2CQ,CA3CR,SA2CkB,IA3ClB,CAAA,KAAA,EAAA,CAAA,GA4Cd,CA5Cc,GA6Cd,CA7Cc,SA6CJ,aA7CI,CAAA,KAAA,EAAA,CAAA,GA8CZ,UA9CY,CA8CD,CA9CC,CAAA,GA+CZ,CA/CY,SA+CF,WA/CE,CAAA,KAAA,QAAA,EAAA,KAAA,MAAA,CAAA,GAgDV,OAhDU,GAAA,KAAA;EAGM,KAAA,SAAA,CAAA,CAAA,CAAA,GAAA,QAA6B,MAgDZ,CAhDY,GAgDR,QAhDQ,CAgDC,CAhDD,CAgDG,CAhDH,CAAA,CAAA,EAER;EACjC,KAAA,WAAA,CAAA,CAAA,EAAA,UA+CyB,MA/CzB,CAAA,MAAA,EA+CwC,UA/CxC,CAAA,CAAA,GAAA,MAgDJ,CAhDI,SAAA,KAAA,GAAA,CAAA,GAAA,EAiDA,cAjDA,EAAA,GAiDmB,YAjDnB,CAiDgC,CAjDhC,CAAA,GAAA,CAAA,GAAA,EAkDA,cAlDA,EAAA,IAAA,EAkDsB,SAlDtB,CAkDgC,CAlDhC,CAAA,EAAA,GAkDuC,YAlDvC,CAkDoD,CAlDpD,CAAA;EACQ,KAAA,WAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAsDR,MAtDQ,CAAA,MAAA,EAsDO,UAtDP,CAAA,CAAA,GAAA,MAuDV,CAvDU,SAAA,KAAA,GAAA,CAAA,GAAA,EAwDV,gBAxDU,EAAA,GAwDW,YAxDX,CAwDwB,OAxDxB,CAAA,GAAA,CAAA,GAAA,EAyDV,gBAzDU,EAAA,IAAA,EAyDc,SAzDd,CAyDwB,CAzDxB,CAAA,EAAA,GAyD+B,YAzD/B,CAyD4C,OAzD5C,CAAA;;;;ADvHtB;AACA;AACA;AACA;;;;ACIA;;;;;AAEA;AAEA;;AAEqB,iBCML,GDNK,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA;EAAkB,KAAA,EAAA,MAAA;CAAR,CAAA,ECMqB,IAAA,CAAK,GDN1B,CCM8B,CDN9B,EAAA,KAAA,CAAA;AACF,iBCMb,GDNa,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA;EAAL,KAAA,EAAA,MAAA;EAAqB,OAAA,ECQlC,CDRkC;CAAX,CAAA,ECS9B,IAAA,CAAK,GDTyB,CCSrB,CDTqB,EAAA,IAAA,CAAA;;;;;;;;;;;;;;AAQlB,iBCmEA,KAAA,CDnEA,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,ICmEgC,IAAA,CAAK,GDnErC,CAAA,OAAA,EAAA,OAAA,CAAA;;;;;;;;;;;;;;AAkBI,iBCqEJ,QAAA,CDrEI,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,ICqE+B,IAAA,CAAK,MDrEpC,CAAA,OAAA,CAAA;;;;AAK8C,cC2ErD,ID3EqD,EAAA;EAAf;;;;;;;;;;;;;;EAgBW,QAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EC0E3C,IAAA,CAAK,GD1EsC,CC0ElC,CD1EkC,EAAA,OAAA,CAAA,CAAA,EC0EpB,IAAA,CAAK,WD1Ee,CC0EH,CD1EG,EC0EA,CD1EA,CAAA;EAAjB;;;;;;;;;;;;;;EAmBzB,QAAA,CAAA,CAAA,CAAA,CAAA,GAAA,ECyED,IAAA,CAAK,GDzEJ,CCyEQ,CDzER,EAAA,OAAA,CAAA,CAAA,ECyEsB,IAAA,CAAK,WDzE3B,CCyEuC,CDzEvC,GAAA,SAAA,ECyEsD,CDzEtD,CAAA;EACT;;;;;;;;;;;;;;EAuBK,GAAA,CAAA,CAAA,CAAA,CAAA,GAAA,ECmEF,IAAA,CAAK,GDnEH,CCmEO,CDnEP,EAAA,OAAA,CAAA,CAAA,ECmEqB,IAAA,CAAK,WDnE1B,CCmEsC,CDnEtC,EAAA,ECmE2C,CDnE3C,CAAA;CAAY;;;;;;;;;;;;;;AAcd,iBCuEE,aAAA,CDvEF,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,ICuE0C,IAAA,CAAK,WDvE/C,CAAA,OAAA,CAAA;;;ADrHd;AACA;AACA;;;;ACIA;;;;;AAEA;AAEA;AAE0B,iBEKV,IFLU,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA;EAAL,IAAA,CAAA,EAAA,SAAA;EAAkB,OAAA,EAAA,CAAA,GAAA,EEOtB,IAAA,CAAK,cFPiB,EAAA,GEOE,YFPF,CEOe,CFPf,CAAA;EAAR,IAAA,CAAA,EEQtB,IAAA,CAAK,MFRiB,CAAA,OAAA,CAAA,EAAA;CACF,CAAA,EEQzB,IAAA,CAAK,IFRoB,CEQf,CFRe,CAAA;AAAL,iBEUR,IFVQ,CAAA,CAAA,EAAA,gBEYN,MFZM,CAAA,MAAA,EEYS,IAAA,CAAK,IFZd,CAAA,OAAA,CAAA,GEY8B,IAAA,CAAK,aFZnC,CAAA,OAAA,CAAA,GAAA;EAAqB,IAAA,EAAA,MAAA;CAAX,CAAA,CAAA,CAAA,MAAA,EAAA;EACR,IAAA,EEalB,CFbkB;EAAL,OAAA,EAAA,CAAA,GAAA,EEcJ,IAAA,CAAK,cFdD,EAAA,IAAA,EEcuB,IAAA,CAAK,SFd5B,CEcsC,CFdtC,CAAA,EAAA,GEc6C,YFd7C,CEc0D,CFd1D,CAAA;EAAU,IAAA,CAAA,EEetB,IAAA,CAAK,MFfiB,CAAA,OAAA,CAAA,EAAA;CAChB,CAAA,EEeX,IAAA,CAAK,IFfM,CEeD,CFfC,CAAA;;;;;;;;;;;;;;AAeE,iBE0BD,MAAA,CF1BC,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IE0BgC,IAAA,CAAK,IF1BrC,CAAA,OAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAsBG,iBEgCJ,UFhCI,CAAA,CAAA,CAAA,CAAA,IAAA,EEgCgB,IAAA,CAAK,IFhCrB,CEgC0B,CFhC1B,CAAA,CAAA,EEgC+B,IAAA,CAAK,aFhCpC,CEgCkD,CFhClD,CAAA;;;;;;;;;;;;;;AAcL,iBEsCC,eAAA,CFtCD,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IEsC2C,IAAA,CAAK,aFtChD,CAAA,OAAA,CAAA;;;ADlEf;AACA;AACA;;;;ACIA;;;;;AAEA;AAEA;;;;AAE+B,iBGYf,IHZe,CAAA,OAAA,EAAA,SAAA,OAAA,CAAA,CAAA,MAAA,EAAA;EACF,IAAA,CAAA,EAAA,SAAA;EAAL,OAAA,EAAA,CAAA,GAAA,EGaP,IAAA,CAAK,gBHbE,EAAA,GGamB,YHbnB,CGagC,OHbhC,CAAA;EAAqB,IAAA,CAAA,EGcpC,IAAA,CAAK,MHd+B,CAAA,OAAA,CAAA,EAAA;CAAX,CAAA,EGe9B,IAAA,CAAK,IHfyB,CGepB,OHfoB,EGeX,MHfW,CAAA;AACR,iBGgBV,IHhBU,CAAA,OAAA,EAAA,MAAA,EAAA,gBGmBR,MHnBQ,CAAA,MAAA,EGmBO,IAAA,CAAK,IHnBZ,CAAA,OAAA,CAAA,GGmB4B,IAAA,CAAK,aHnBjC,CAAA,OAAA,CAAA,GAAA;EAAL,IAAA,EAAA,MAAA;CAAU,CAAA,CAAA,CAAA,MAAA,EAAA;EAChB,IAAA,EGoBP,CHpBO;EACa,OAAA,EAAA,CAAA,GAAA,EGoBX,IAAA,CAAK,gBHpBM,EAAA,IAAA,EGoBkB,IAAA,CAAK,SHpBvB,CGoBiC,CHpBjC,CAAA,EAAA,GGoBwC,YHpBxC,CGoBqD,OHpBrD,CAAA;EAAuB,IAAA,CAAA,EGqB1C,IAAA,CAAK,MHrBqC,CAAA,OAAA,CAAA,EAAA;CACrC,CAAA,EGqBV,IAAA,CAAK,IHrBK,CGqBA,OHrBA,EGqBS,MHrBT,CAAA;;;;;;;;;;;;;;AAmBA,iBGkCE,MAAA,CHlCF,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IGkCmC,IAAA,CAAK,IHlCxC,CAAA,OAAA,EAAA,OAAA,CAAA;;;ADzCd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACIA;;;AAAkC,iBIMlB,MJNkB,CAAA,CAAA,CAAA,CAAA,IAAA,EIO1B,IAAA,CAAK,IJPqB,CIOhB,CJPgB,CAAA,EAAA,KAAA,EIQzB,CJRyB,GIQrB,IAAA,CAAK,IJRgB,CIQX,CJRW,CAAA,CAAA,EIS/B,IAAA,CAAK,MJT0B,CISnB,CJTmB,CAAA;;AAElC;AAEA;;;;;;;;;;;AAI+B,iBIsBf,QAAA,CJtBe,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IIsBoB,IAAA,CAAK,MJtBzB,CAAA,OAAA,CAAA;;;ADnB/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACIA;;;;AAAyC,iBKikBnB,WAAA,CLjkBmB,OAAA,CAAA,EKkkB7B,IAAA,CAAK,YLlkBwB,CAAA,EKmkBtC,OLnkBsC,CKmkB9B,IAAA,CAAK,KLnkByB,CAAA;;;ADL5B,cOWA,OAAA,GPX0E,OAAA"}
package/dist/index.mjs CHANGED
@@ -262,6 +262,44 @@ function isPreset(value) {
262
262
 
263
263
  //#endregion
264
264
  //#region src/scope.ts
265
+ var SelectHandleImpl = class {
266
+ listeners = /* @__PURE__ */ new Set();
267
+ currentValue;
268
+ ctrlUnsub = null;
269
+ constructor(ctrl, selector, eq) {
270
+ this.ctrl = ctrl;
271
+ this.selector = selector;
272
+ this.eq = eq;
273
+ if (ctrl.state !== "resolved") throw new Error("Cannot select from unresolved atom");
274
+ this.currentValue = selector(ctrl.get());
275
+ this.ctrlUnsub = ctrl.on(() => {
276
+ if (this.ctrl.state !== "resolved") return;
277
+ const nextValue = this.selector(this.ctrl.get());
278
+ if (!this.eq(this.currentValue, nextValue)) {
279
+ this.currentValue = nextValue;
280
+ this.notifyListeners();
281
+ }
282
+ });
283
+ }
284
+ get() {
285
+ return this.currentValue;
286
+ }
287
+ subscribe(listener) {
288
+ this.listeners.add(listener);
289
+ return () => {
290
+ this.listeners.delete(listener);
291
+ if (this.listeners.size === 0) this.cleanup();
292
+ };
293
+ }
294
+ notifyListeners() {
295
+ for (const listener of this.listeners) listener();
296
+ }
297
+ cleanup() {
298
+ this.ctrlUnsub?.();
299
+ this.ctrlUnsub = null;
300
+ this.listeners.clear();
301
+ }
302
+ };
265
303
  var ControllerImpl = class {
266
304
  [controllerSymbol] = true;
267
305
  constructor(atom$1, scope) {
@@ -418,7 +456,11 @@ var ScopeImpl = class {
418
456
  invalidate: () => {
419
457
  this.scheduleInvalidation(atom$1);
420
458
  },
421
- scope: this
459
+ scope: this,
460
+ get data() {
461
+ if (!entry.data) entry.data = /* @__PURE__ */ new Map();
462
+ return entry.data;
463
+ }
422
464
  };
423
465
  const factory = atom$1.factory;
424
466
  const doResolve = async () => {
@@ -488,6 +530,9 @@ var ScopeImpl = class {
488
530
  controller(atom$1) {
489
531
  return new ControllerImpl(atom$1, this);
490
532
  }
533
+ select(atom$1, selector, options) {
534
+ return new SelectHandleImpl(this.controller(atom$1), selector, options?.eq ?? ((a, b) => a === b));
535
+ }
491
536
  invalidate(atom$1) {
492
537
  const entry = this.cache.get(atom$1);
493
538
  if (!entry) return;
@@ -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","tags","result: T[]","atom: Lite.Atom<T>","scope: ScopeImpl","atom","ctx: Lite.ResolveContext","result: Record<string, unknown>","tags","flow"],"sources":["../src/symbols.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\")\n","import { tagSymbol, taggedSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\nexport interface TagOptions<T, HasDefault extends boolean> {\n label: string\n default?: HasDefault extends true ? T : never\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: 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\n function createTagged(value: T): Lite.Tagged<T> {\n return {\n [taggedSymbol]: true,\n key,\n value,\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 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 } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface FlowConfig<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n> {\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, TInput = unknown>(config: {\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext) => 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 deps: D\n factory: (ctx: Lite.ExecutionContext, 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 return {\n [flowSymbol]: true,\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\"\n\ninterface AtomEntry<T> {\n state: AtomState\n value?: T\n hasValue: boolean\n error?: Error\n cleanups: (() => MaybePromise<void>)[]\n listeners: Set<() => void>\n pendingInvalidate: boolean\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 on(listener: () => void): () => void {\n return this.scope.addListener(this.atom, 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 readonly extensions: Lite.Extension[]\n readonly tags: Lite.Tagged<unknown>[]\n\n private scheduleInvalidation<T>(atom: Lite.Atom<T>): void {\n this.invalidationQueue.add(atom)\n if (!this.invalidationScheduled) {\n this.invalidationScheduled = true\n queueMicrotask(() => this.flushInvalidations())\n }\n }\n\n private flushInvalidations(): void {\n this.invalidationScheduled = false\n const atoms = [...this.invalidationQueue]\n this.invalidationQueue.clear()\n for (const atom of atoms) {\n this.invalidate(atom)\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\n async init(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.init) {\n await ext.init(this)\n }\n }\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 Set(),\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>, listener: () => void): () => void {\n const entry = this.getOrCreateEntry(atom)\n entry.listeners.add(listener)\n return () => {\n entry.listeners.delete(listener)\n }\n }\n\n private notifyListeners<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (entry) {\n for (const listener of entry.listeners) {\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 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)\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 entry.state = 'resolving'\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom)\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 }\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)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\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.notifyListeners(atom)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\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 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.doInvalidate(atom, entry as AtomEntry<T>)\n }\n\n private async doInvalidate<T>(atom: Lite.Atom<T>, entry: AtomEntry<T>): Promise<void> {\n const previousValue = entry.value\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 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)\n\n this.resolve(atom).catch(() => {})\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 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 } = 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 this._input = input\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 * @param options - Optional configuration for extensions, presets, and tags\n * @returns A Promise that resolves to a Scope instance\n *\n * @example\n * ```typescript\n * const scope = await createScope({\n * extensions: [loggingExtension],\n * presets: [preset(dbAtom, testDb)]\n * })\n * const db = await scope.resolve(dbAtom)\n * ```\n */\nexport async function createScope(\n options?: Lite.ScopeOptions\n): Promise<Lite.Scope> {\n const scope = new ScopeImpl(options)\n await scope.init()\n return scope\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} from \"./symbols\"\nexport { tag, tags, isTag, isTagged, isTagExecutor } from \"./tag\"\nexport { atom, isAtom, controller, isControllerDep } from \"./atom\"\nexport { flow, isFlow } from \"./flow\"\nexport { preset, isPreset } from \"./preset\"\nexport { createScope } from \"./scope\"\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","tags","result: T[]","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"],"sources":["../src/symbols.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\")\n","import { tagSymbol, taggedSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\nexport interface TagOptions<T, HasDefault extends boolean> {\n label: string\n default?: HasDefault extends true ? T : never\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: 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\n function createTagged(value: T): Lite.Tagged<T> {\n return {\n [taggedSymbol]: true,\n key,\n value,\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 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 } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface FlowConfig<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n> {\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, TInput = unknown>(config: {\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext) => 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 deps: D\n factory: (ctx: Lite.ExecutionContext, 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 return {\n [flowSymbol]: true,\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\"\n\ninterface AtomEntry<T> {\n state: AtomState\n value?: T\n hasValue: boolean\n error?: Error\n cleanups: (() => MaybePromise<void>)[]\n listeners: Set<() => void>\n pendingInvalidate: boolean\n data?: Map<string, unknown>\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(() => {\n if (this.ctrl.state !== 'resolved') return\n\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 on(listener: () => void): () => void {\n return this.scope.addListener(this.atom, 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 readonly extensions: Lite.Extension[]\n readonly tags: Lite.Tagged<unknown>[]\n\n private scheduleInvalidation<T>(atom: Lite.Atom<T>): void {\n this.invalidationQueue.add(atom)\n if (!this.invalidationScheduled) {\n this.invalidationScheduled = true\n queueMicrotask(() => this.flushInvalidations())\n }\n }\n\n private flushInvalidations(): void {\n this.invalidationScheduled = false\n const atoms = [...this.invalidationQueue]\n this.invalidationQueue.clear()\n for (const atom of atoms) {\n this.invalidate(atom)\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\n async init(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.init) {\n await ext.init(this)\n }\n }\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 Set(),\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>, listener: () => void): () => void {\n const entry = this.getOrCreateEntry(atom)\n entry.listeners.add(listener)\n return () => {\n entry.listeners.delete(listener)\n }\n }\n\n private notifyListeners<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (entry) {\n for (const listener of entry.listeners) {\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 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)\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 entry.state = 'resolving'\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom)\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 Map()\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)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\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.notifyListeners(atom)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\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.doInvalidate(atom, entry as AtomEntry<T>)\n }\n\n private async doInvalidate<T>(atom: Lite.Atom<T>, entry: AtomEntry<T>): Promise<void> {\n const previousValue = entry.value\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 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)\n\n this.resolve(atom).catch(() => {})\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 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 } = 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 this._input = input\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 * @param options - Optional configuration for extensions, presets, and tags\n * @returns A Promise that resolves to a Scope instance\n *\n * @example\n * ```typescript\n * const scope = await createScope({\n * extensions: [loggingExtension],\n * presets: [preset(dbAtom, testDb)]\n * })\n * const db = await scope.resolve(dbAtom)\n * ```\n */\nexport async function createScope(\n options?: Lite.ScopeOptions\n): Promise<Lite.Scope> {\n const scope = new ScopeImpl(options)\n await scope.init()\n return scope\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} from \"./symbols\"\nexport { tag, tags, isTag, isTagged, isTagExecutor } from \"./tag\"\nexport { atom, isAtom, controller, isControllerDep } from \"./atom\"\nexport { flow, isFlow } from \"./flow\"\nexport { preset, isPreset } from \"./preset\"\nexport { createScope } from \"./scope\"\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": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Lightweight dependency injection with minimal reactivity",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",