@pumped-fn/lite 0.2.0 → 1.0.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 +37 -0
- package/README.md +3 -3
- package/dist/index.cjs +52 -24
- package/dist/index.d.cts +16 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +16 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +52 -24
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# @pumped-fn/lite
|
|
2
2
|
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- f5dc22f: **BREAKING**: `createScope()` now returns `Scope` synchronously instead of `Promise<Scope>`.
|
|
8
|
+
|
|
9
|
+
Migration:
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
// Before
|
|
13
|
+
const scope = await createScope();
|
|
14
|
+
|
|
15
|
+
// After
|
|
16
|
+
const scope = createScope();
|
|
17
|
+
// resolve() waits for ready internally, or use:
|
|
18
|
+
await scope.ready;
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**BREAKING**: `Controller.on()` now requires explicit event type.
|
|
22
|
+
|
|
23
|
+
Migration:
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// Before
|
|
27
|
+
ctl.on(() => { ... })
|
|
28
|
+
|
|
29
|
+
// After
|
|
30
|
+
ctl.on('resolved', () => { ... }) // Most common: react to new values
|
|
31
|
+
ctl.on('resolving', () => { ... }) // Loading states
|
|
32
|
+
ctl.on('*', () => { ... }) // All state changes
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Other changes:
|
|
36
|
+
|
|
37
|
+
- Fix duplicate listener notifications (was 3x per invalidation, now 2x)
|
|
38
|
+
- On failed state, only `'*'` listeners are notified (not `'resolved'`)
|
|
39
|
+
|
|
3
40
|
## 0.2.0
|
|
4
41
|
|
|
5
42
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -171,9 +171,9 @@ const configAtom = atom({
|
|
|
171
171
|
const appAtom = atom({
|
|
172
172
|
deps: { config: controller(configAtom) }, // controller, not direct
|
|
173
173
|
factory: (ctx, { config }) => {
|
|
174
|
-
// Subscribe to config changes
|
|
175
|
-
config.on(() => {
|
|
176
|
-
console.log('config updated:', config.
|
|
174
|
+
// Subscribe to config changes (must specify event type)
|
|
175
|
+
config.on('resolved', () => {
|
|
176
|
+
console.log('config updated:', config.get())
|
|
177
177
|
ctx.invalidate() // re-run this atom too
|
|
178
178
|
})
|
|
179
179
|
|
package/dist/index.cjs
CHANGED
|
@@ -273,8 +273,7 @@ var SelectHandleImpl = class {
|
|
|
273
273
|
this.eq = eq;
|
|
274
274
|
if (ctrl.state !== "resolved") throw new Error("Cannot select from unresolved atom");
|
|
275
275
|
this.currentValue = selector(ctrl.get());
|
|
276
|
-
this.ctrlUnsub = ctrl.on(() => {
|
|
277
|
-
if (this.ctrl.state !== "resolved") return;
|
|
276
|
+
this.ctrlUnsub = ctrl.on("resolved", () => {
|
|
278
277
|
const nextValue = this.selector(this.ctrl.get());
|
|
279
278
|
if (!this.eq(this.currentValue, nextValue)) {
|
|
280
279
|
this.currentValue = nextValue;
|
|
@@ -327,8 +326,8 @@ var ControllerImpl = class {
|
|
|
327
326
|
invalidate() {
|
|
328
327
|
this.scope.invalidate(this.atom);
|
|
329
328
|
}
|
|
330
|
-
on(listener) {
|
|
331
|
-
return this.scope.addListener(this.atom, listener);
|
|
329
|
+
on(event, listener) {
|
|
330
|
+
return this.scope.addListener(this.atom, event, listener);
|
|
332
331
|
}
|
|
333
332
|
};
|
|
334
333
|
var ScopeImpl = class {
|
|
@@ -339,8 +338,10 @@ var ScopeImpl = class {
|
|
|
339
338
|
stateListeners = /* @__PURE__ */ new Map();
|
|
340
339
|
invalidationQueue = /* @__PURE__ */ new Set();
|
|
341
340
|
invalidationScheduled = false;
|
|
341
|
+
initialized = false;
|
|
342
342
|
extensions;
|
|
343
343
|
tags;
|
|
344
|
+
ready;
|
|
344
345
|
scheduleInvalidation(atom$1) {
|
|
345
346
|
this.invalidationQueue.add(atom$1);
|
|
346
347
|
if (!this.invalidationScheduled) {
|
|
@@ -358,9 +359,11 @@ var ScopeImpl = class {
|
|
|
358
359
|
this.extensions = options?.extensions ?? [];
|
|
359
360
|
this.tags = options?.tags ?? [];
|
|
360
361
|
for (const p of options?.presets ?? []) this.presets.set(p.atom, p.value);
|
|
362
|
+
this.ready = this.init();
|
|
361
363
|
}
|
|
362
364
|
async init() {
|
|
363
365
|
for (const ext of this.extensions) if (ext.init) await ext.init(this);
|
|
366
|
+
this.initialized = true;
|
|
364
367
|
}
|
|
365
368
|
getEntry(atom$1) {
|
|
366
369
|
return this.cache.get(atom$1);
|
|
@@ -372,23 +375,37 @@ var ScopeImpl = class {
|
|
|
372
375
|
state: "idle",
|
|
373
376
|
hasValue: false,
|
|
374
377
|
cleanups: [],
|
|
375
|
-
listeners:
|
|
378
|
+
listeners: new Map([
|
|
379
|
+
["resolving", /* @__PURE__ */ new Set()],
|
|
380
|
+
["resolved", /* @__PURE__ */ new Set()],
|
|
381
|
+
["*", /* @__PURE__ */ new Set()]
|
|
382
|
+
]),
|
|
376
383
|
pendingInvalidate: false
|
|
377
384
|
};
|
|
378
385
|
this.cache.set(atom$1, entry);
|
|
379
386
|
}
|
|
380
387
|
return entry;
|
|
381
388
|
}
|
|
382
|
-
addListener(atom$1, listener) {
|
|
383
|
-
const
|
|
384
|
-
|
|
389
|
+
addListener(atom$1, event, listener) {
|
|
390
|
+
const listeners = this.getOrCreateEntry(atom$1).listeners.get(event);
|
|
391
|
+
listeners.add(listener);
|
|
385
392
|
return () => {
|
|
386
|
-
|
|
393
|
+
listeners.delete(listener);
|
|
387
394
|
};
|
|
388
395
|
}
|
|
389
|
-
notifyListeners(atom$1) {
|
|
396
|
+
notifyListeners(atom$1, event) {
|
|
390
397
|
const entry = this.cache.get(atom$1);
|
|
391
|
-
if (entry)
|
|
398
|
+
if (!entry) return;
|
|
399
|
+
const eventListeners = entry.listeners.get(event);
|
|
400
|
+
if (eventListeners) for (const listener of eventListeners) listener();
|
|
401
|
+
const allListeners = entry.listeners.get("*");
|
|
402
|
+
if (allListeners) for (const listener of allListeners) listener();
|
|
403
|
+
}
|
|
404
|
+
notifyAllListeners(atom$1) {
|
|
405
|
+
const entry = this.cache.get(atom$1);
|
|
406
|
+
if (!entry) return;
|
|
407
|
+
const allListeners = entry.listeners.get("*");
|
|
408
|
+
if (allListeners) for (const listener of allListeners) listener();
|
|
392
409
|
}
|
|
393
410
|
emitStateChange(state, atom$1) {
|
|
394
411
|
const stateMap = this.stateListeners.get(state);
|
|
@@ -420,6 +437,7 @@ var ScopeImpl = class {
|
|
|
420
437
|
};
|
|
421
438
|
}
|
|
422
439
|
async resolve(atom$1) {
|
|
440
|
+
if (!this.initialized) await this.ready;
|
|
423
441
|
const entry = this.cache.get(atom$1);
|
|
424
442
|
if (entry?.state === "resolved") return entry.value;
|
|
425
443
|
const pendingPromise = this.pending.get(atom$1);
|
|
@@ -433,7 +451,7 @@ var ScopeImpl = class {
|
|
|
433
451
|
newEntry.value = presetValue;
|
|
434
452
|
newEntry.hasValue = true;
|
|
435
453
|
this.emitStateChange("resolved", atom$1);
|
|
436
|
-
this.notifyListeners(atom$1);
|
|
454
|
+
this.notifyListeners(atom$1, "resolved");
|
|
437
455
|
return newEntry.value;
|
|
438
456
|
}
|
|
439
457
|
this.resolving.add(atom$1);
|
|
@@ -448,9 +466,11 @@ var ScopeImpl = class {
|
|
|
448
466
|
}
|
|
449
467
|
async doResolve(atom$1) {
|
|
450
468
|
const entry = this.getOrCreateEntry(atom$1);
|
|
451
|
-
entry.state
|
|
452
|
-
|
|
453
|
-
|
|
469
|
+
if (!(entry.state === "resolving")) {
|
|
470
|
+
entry.state = "resolving";
|
|
471
|
+
this.emitStateChange("resolving", atom$1);
|
|
472
|
+
this.notifyListeners(atom$1, "resolving");
|
|
473
|
+
}
|
|
454
474
|
const resolvedDeps = await this.resolveDeps(atom$1.deps);
|
|
455
475
|
const ctx = {
|
|
456
476
|
cleanup: (fn) => entry.cleanups.push(fn),
|
|
@@ -475,7 +495,7 @@ var ScopeImpl = class {
|
|
|
475
495
|
entry.hasValue = true;
|
|
476
496
|
entry.error = void 0;
|
|
477
497
|
this.emitStateChange("resolved", atom$1);
|
|
478
|
-
this.notifyListeners(atom$1);
|
|
498
|
+
this.notifyListeners(atom$1, "resolved");
|
|
479
499
|
if (entry.pendingInvalidate) {
|
|
480
500
|
entry.pendingInvalidate = false;
|
|
481
501
|
this.scheduleInvalidation(atom$1);
|
|
@@ -487,7 +507,7 @@ var ScopeImpl = class {
|
|
|
487
507
|
entry.value = void 0;
|
|
488
508
|
entry.hasValue = false;
|
|
489
509
|
this.emitStateChange("failed", atom$1);
|
|
490
|
-
this.
|
|
510
|
+
this.notifyAllListeners(atom$1);
|
|
491
511
|
if (entry.pendingInvalidate) {
|
|
492
512
|
entry.pendingInvalidate = false;
|
|
493
513
|
this.scheduleInvalidation(atom$1);
|
|
@@ -558,7 +578,7 @@ var ScopeImpl = class {
|
|
|
558
578
|
this.pending.delete(atom$1);
|
|
559
579
|
this.resolving.delete(atom$1);
|
|
560
580
|
this.emitStateChange("resolving", atom$1);
|
|
561
|
-
this.notifyListeners(atom$1);
|
|
581
|
+
this.notifyListeners(atom$1, "resolving");
|
|
562
582
|
this.resolve(atom$1).catch(() => {});
|
|
563
583
|
}
|
|
564
584
|
async release(atom$1) {
|
|
@@ -644,22 +664,30 @@ var ExecutionContextImpl = class {
|
|
|
644
664
|
/**
|
|
645
665
|
* Creates a DI container that manages Atom resolution, caching, and lifecycle.
|
|
646
666
|
*
|
|
667
|
+
* The scope is returned synchronously, with a `ready` promise that resolves
|
|
668
|
+
* when all extensions have been initialized. Resolution methods automatically
|
|
669
|
+
* wait for `ready` before proceeding.
|
|
670
|
+
*
|
|
647
671
|
* @param options - Optional configuration for extensions, presets, and tags
|
|
648
|
-
* @returns A
|
|
672
|
+
* @returns A Scope instance with a `ready` promise for extension initialization
|
|
649
673
|
*
|
|
650
674
|
* @example
|
|
651
675
|
* ```typescript
|
|
652
|
-
* const scope =
|
|
676
|
+
* const scope = createScope({
|
|
653
677
|
* extensions: [loggingExtension],
|
|
654
678
|
* presets: [preset(dbAtom, testDb)]
|
|
655
679
|
* })
|
|
680
|
+
*
|
|
681
|
+
* // Option 1: resolve() waits for ready internally
|
|
682
|
+
* const db = await scope.resolve(dbAtom)
|
|
683
|
+
*
|
|
684
|
+
* // Option 2: explicit wait
|
|
685
|
+
* await scope.ready
|
|
656
686
|
* const db = await scope.resolve(dbAtom)
|
|
657
687
|
* ```
|
|
658
688
|
*/
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
await scope.init();
|
|
662
|
-
return scope;
|
|
689
|
+
function createScope(options) {
|
|
690
|
+
return new ScopeImpl(options);
|
|
663
691
|
}
|
|
664
692
|
|
|
665
693
|
//#endregion
|
package/dist/index.d.cts
CHANGED
|
@@ -13,6 +13,7 @@ type MaybePromise<T> = T | Promise<T>;
|
|
|
13
13
|
type AtomState = 'idle' | 'resolving' | 'resolved' | 'failed';
|
|
14
14
|
declare namespace Lite {
|
|
15
15
|
interface Scope {
|
|
16
|
+
readonly ready: Promise<void>;
|
|
16
17
|
resolve<T>(atom: Atom<T>): Promise<T>;
|
|
17
18
|
controller<T>(atom: Atom<T>): Controller<T>;
|
|
18
19
|
release<T>(atom: Atom<T>): Promise<void>;
|
|
@@ -65,6 +66,7 @@ declare namespace Lite {
|
|
|
65
66
|
params: Args;
|
|
66
67
|
tags?: Tagged<unknown>[];
|
|
67
68
|
}
|
|
69
|
+
type ControllerEvent = 'resolving' | 'resolved' | '*';
|
|
68
70
|
interface Controller<T> {
|
|
69
71
|
readonly [controllerSymbol]: true;
|
|
70
72
|
readonly state: AtomState;
|
|
@@ -72,7 +74,7 @@ declare namespace Lite {
|
|
|
72
74
|
resolve(): Promise<T>;
|
|
73
75
|
release(): Promise<void>;
|
|
74
76
|
invalidate(): void;
|
|
75
|
-
on(listener: () => void): () => void;
|
|
77
|
+
on(event: ControllerEvent, listener: () => void): () => void;
|
|
76
78
|
}
|
|
77
79
|
interface SelectOptions<S> {
|
|
78
80
|
eq?: (prev: S, next: S) => boolean;
|
|
@@ -399,19 +401,29 @@ declare function isPreset(value: unknown): value is Lite.Preset<unknown>;
|
|
|
399
401
|
/**
|
|
400
402
|
* Creates a DI container that manages Atom resolution, caching, and lifecycle.
|
|
401
403
|
*
|
|
404
|
+
* The scope is returned synchronously, with a `ready` promise that resolves
|
|
405
|
+
* when all extensions have been initialized. Resolution methods automatically
|
|
406
|
+
* wait for `ready` before proceeding.
|
|
407
|
+
*
|
|
402
408
|
* @param options - Optional configuration for extensions, presets, and tags
|
|
403
|
-
* @returns A
|
|
409
|
+
* @returns A Scope instance with a `ready` promise for extension initialization
|
|
404
410
|
*
|
|
405
411
|
* @example
|
|
406
412
|
* ```typescript
|
|
407
|
-
* const scope =
|
|
413
|
+
* const scope = createScope({
|
|
408
414
|
* extensions: [loggingExtension],
|
|
409
415
|
* presets: [preset(dbAtom, testDb)]
|
|
410
416
|
* })
|
|
417
|
+
*
|
|
418
|
+
* // Option 1: resolve() waits for ready internally
|
|
419
|
+
* const db = await scope.resolve(dbAtom)
|
|
420
|
+
*
|
|
421
|
+
* // Option 2: explicit wait
|
|
422
|
+
* await scope.ready
|
|
411
423
|
* const db = await scope.resolve(dbAtom)
|
|
412
424
|
* ```
|
|
413
425
|
*/
|
|
414
|
-
declare function createScope(options?: Lite.ScopeOptions):
|
|
426
|
+
declare function createScope(options?: Lite.ScopeOptions): Lite.Scope;
|
|
415
427
|
//#endregion
|
|
416
428
|
//#region src/index.d.ts
|
|
417
429
|
declare const VERSION = "0.0.1";
|
package/dist/index.d.cts.map
CHANGED
|
@@ -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
|
@@ -13,6 +13,7 @@ type MaybePromise<T> = T | Promise<T>;
|
|
|
13
13
|
type AtomState = 'idle' | 'resolving' | 'resolved' | 'failed';
|
|
14
14
|
declare namespace Lite {
|
|
15
15
|
interface Scope {
|
|
16
|
+
readonly ready: Promise<void>;
|
|
16
17
|
resolve<T>(atom: Atom<T>): Promise<T>;
|
|
17
18
|
controller<T>(atom: Atom<T>): Controller<T>;
|
|
18
19
|
release<T>(atom: Atom<T>): Promise<void>;
|
|
@@ -65,6 +66,7 @@ declare namespace Lite {
|
|
|
65
66
|
params: Args;
|
|
66
67
|
tags?: Tagged<unknown>[];
|
|
67
68
|
}
|
|
69
|
+
type ControllerEvent = 'resolving' | 'resolved' | '*';
|
|
68
70
|
interface Controller<T> {
|
|
69
71
|
readonly [controllerSymbol]: true;
|
|
70
72
|
readonly state: AtomState;
|
|
@@ -72,7 +74,7 @@ declare namespace Lite {
|
|
|
72
74
|
resolve(): Promise<T>;
|
|
73
75
|
release(): Promise<void>;
|
|
74
76
|
invalidate(): void;
|
|
75
|
-
on(listener: () => void): () => void;
|
|
77
|
+
on(event: ControllerEvent, listener: () => void): () => void;
|
|
76
78
|
}
|
|
77
79
|
interface SelectOptions<S> {
|
|
78
80
|
eq?: (prev: S, next: S) => boolean;
|
|
@@ -399,19 +401,29 @@ declare function isPreset(value: unknown): value is Lite.Preset<unknown>;
|
|
|
399
401
|
/**
|
|
400
402
|
* Creates a DI container that manages Atom resolution, caching, and lifecycle.
|
|
401
403
|
*
|
|
404
|
+
* The scope is returned synchronously, with a `ready` promise that resolves
|
|
405
|
+
* when all extensions have been initialized. Resolution methods automatically
|
|
406
|
+
* wait for `ready` before proceeding.
|
|
407
|
+
*
|
|
402
408
|
* @param options - Optional configuration for extensions, presets, and tags
|
|
403
|
-
* @returns A
|
|
409
|
+
* @returns A Scope instance with a `ready` promise for extension initialization
|
|
404
410
|
*
|
|
405
411
|
* @example
|
|
406
412
|
* ```typescript
|
|
407
|
-
* const scope =
|
|
413
|
+
* const scope = createScope({
|
|
408
414
|
* extensions: [loggingExtension],
|
|
409
415
|
* presets: [preset(dbAtom, testDb)]
|
|
410
416
|
* })
|
|
417
|
+
*
|
|
418
|
+
* // Option 1: resolve() waits for ready internally
|
|
419
|
+
* const db = await scope.resolve(dbAtom)
|
|
420
|
+
*
|
|
421
|
+
* // Option 2: explicit wait
|
|
422
|
+
* await scope.ready
|
|
411
423
|
* const db = await scope.resolve(dbAtom)
|
|
412
424
|
* ```
|
|
413
425
|
*/
|
|
414
|
-
declare function createScope(options?: Lite.ScopeOptions):
|
|
426
|
+
declare function createScope(options?: Lite.ScopeOptions): Lite.Scope;
|
|
415
427
|
//#endregion
|
|
416
428
|
//#region src/index.d.ts
|
|
417
429
|
declare const VERSION = "0.0.1";
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -272,8 +272,7 @@ var SelectHandleImpl = class {
|
|
|
272
272
|
this.eq = eq;
|
|
273
273
|
if (ctrl.state !== "resolved") throw new Error("Cannot select from unresolved atom");
|
|
274
274
|
this.currentValue = selector(ctrl.get());
|
|
275
|
-
this.ctrlUnsub = ctrl.on(() => {
|
|
276
|
-
if (this.ctrl.state !== "resolved") return;
|
|
275
|
+
this.ctrlUnsub = ctrl.on("resolved", () => {
|
|
277
276
|
const nextValue = this.selector(this.ctrl.get());
|
|
278
277
|
if (!this.eq(this.currentValue, nextValue)) {
|
|
279
278
|
this.currentValue = nextValue;
|
|
@@ -326,8 +325,8 @@ var ControllerImpl = class {
|
|
|
326
325
|
invalidate() {
|
|
327
326
|
this.scope.invalidate(this.atom);
|
|
328
327
|
}
|
|
329
|
-
on(listener) {
|
|
330
|
-
return this.scope.addListener(this.atom, listener);
|
|
328
|
+
on(event, listener) {
|
|
329
|
+
return this.scope.addListener(this.atom, event, listener);
|
|
331
330
|
}
|
|
332
331
|
};
|
|
333
332
|
var ScopeImpl = class {
|
|
@@ -338,8 +337,10 @@ var ScopeImpl = class {
|
|
|
338
337
|
stateListeners = /* @__PURE__ */ new Map();
|
|
339
338
|
invalidationQueue = /* @__PURE__ */ new Set();
|
|
340
339
|
invalidationScheduled = false;
|
|
340
|
+
initialized = false;
|
|
341
341
|
extensions;
|
|
342
342
|
tags;
|
|
343
|
+
ready;
|
|
343
344
|
scheduleInvalidation(atom$1) {
|
|
344
345
|
this.invalidationQueue.add(atom$1);
|
|
345
346
|
if (!this.invalidationScheduled) {
|
|
@@ -357,9 +358,11 @@ var ScopeImpl = class {
|
|
|
357
358
|
this.extensions = options?.extensions ?? [];
|
|
358
359
|
this.tags = options?.tags ?? [];
|
|
359
360
|
for (const p of options?.presets ?? []) this.presets.set(p.atom, p.value);
|
|
361
|
+
this.ready = this.init();
|
|
360
362
|
}
|
|
361
363
|
async init() {
|
|
362
364
|
for (const ext of this.extensions) if (ext.init) await ext.init(this);
|
|
365
|
+
this.initialized = true;
|
|
363
366
|
}
|
|
364
367
|
getEntry(atom$1) {
|
|
365
368
|
return this.cache.get(atom$1);
|
|
@@ -371,23 +374,37 @@ var ScopeImpl = class {
|
|
|
371
374
|
state: "idle",
|
|
372
375
|
hasValue: false,
|
|
373
376
|
cleanups: [],
|
|
374
|
-
listeners:
|
|
377
|
+
listeners: new Map([
|
|
378
|
+
["resolving", /* @__PURE__ */ new Set()],
|
|
379
|
+
["resolved", /* @__PURE__ */ new Set()],
|
|
380
|
+
["*", /* @__PURE__ */ new Set()]
|
|
381
|
+
]),
|
|
375
382
|
pendingInvalidate: false
|
|
376
383
|
};
|
|
377
384
|
this.cache.set(atom$1, entry);
|
|
378
385
|
}
|
|
379
386
|
return entry;
|
|
380
387
|
}
|
|
381
|
-
addListener(atom$1, listener) {
|
|
382
|
-
const
|
|
383
|
-
|
|
388
|
+
addListener(atom$1, event, listener) {
|
|
389
|
+
const listeners = this.getOrCreateEntry(atom$1).listeners.get(event);
|
|
390
|
+
listeners.add(listener);
|
|
384
391
|
return () => {
|
|
385
|
-
|
|
392
|
+
listeners.delete(listener);
|
|
386
393
|
};
|
|
387
394
|
}
|
|
388
|
-
notifyListeners(atom$1) {
|
|
395
|
+
notifyListeners(atom$1, event) {
|
|
389
396
|
const entry = this.cache.get(atom$1);
|
|
390
|
-
if (entry)
|
|
397
|
+
if (!entry) return;
|
|
398
|
+
const eventListeners = entry.listeners.get(event);
|
|
399
|
+
if (eventListeners) for (const listener of eventListeners) listener();
|
|
400
|
+
const allListeners = entry.listeners.get("*");
|
|
401
|
+
if (allListeners) for (const listener of allListeners) listener();
|
|
402
|
+
}
|
|
403
|
+
notifyAllListeners(atom$1) {
|
|
404
|
+
const entry = this.cache.get(atom$1);
|
|
405
|
+
if (!entry) return;
|
|
406
|
+
const allListeners = entry.listeners.get("*");
|
|
407
|
+
if (allListeners) for (const listener of allListeners) listener();
|
|
391
408
|
}
|
|
392
409
|
emitStateChange(state, atom$1) {
|
|
393
410
|
const stateMap = this.stateListeners.get(state);
|
|
@@ -419,6 +436,7 @@ var ScopeImpl = class {
|
|
|
419
436
|
};
|
|
420
437
|
}
|
|
421
438
|
async resolve(atom$1) {
|
|
439
|
+
if (!this.initialized) await this.ready;
|
|
422
440
|
const entry = this.cache.get(atom$1);
|
|
423
441
|
if (entry?.state === "resolved") return entry.value;
|
|
424
442
|
const pendingPromise = this.pending.get(atom$1);
|
|
@@ -432,7 +450,7 @@ var ScopeImpl = class {
|
|
|
432
450
|
newEntry.value = presetValue;
|
|
433
451
|
newEntry.hasValue = true;
|
|
434
452
|
this.emitStateChange("resolved", atom$1);
|
|
435
|
-
this.notifyListeners(atom$1);
|
|
453
|
+
this.notifyListeners(atom$1, "resolved");
|
|
436
454
|
return newEntry.value;
|
|
437
455
|
}
|
|
438
456
|
this.resolving.add(atom$1);
|
|
@@ -447,9 +465,11 @@ var ScopeImpl = class {
|
|
|
447
465
|
}
|
|
448
466
|
async doResolve(atom$1) {
|
|
449
467
|
const entry = this.getOrCreateEntry(atom$1);
|
|
450
|
-
entry.state
|
|
451
|
-
|
|
452
|
-
|
|
468
|
+
if (!(entry.state === "resolving")) {
|
|
469
|
+
entry.state = "resolving";
|
|
470
|
+
this.emitStateChange("resolving", atom$1);
|
|
471
|
+
this.notifyListeners(atom$1, "resolving");
|
|
472
|
+
}
|
|
453
473
|
const resolvedDeps = await this.resolveDeps(atom$1.deps);
|
|
454
474
|
const ctx = {
|
|
455
475
|
cleanup: (fn) => entry.cleanups.push(fn),
|
|
@@ -474,7 +494,7 @@ var ScopeImpl = class {
|
|
|
474
494
|
entry.hasValue = true;
|
|
475
495
|
entry.error = void 0;
|
|
476
496
|
this.emitStateChange("resolved", atom$1);
|
|
477
|
-
this.notifyListeners(atom$1);
|
|
497
|
+
this.notifyListeners(atom$1, "resolved");
|
|
478
498
|
if (entry.pendingInvalidate) {
|
|
479
499
|
entry.pendingInvalidate = false;
|
|
480
500
|
this.scheduleInvalidation(atom$1);
|
|
@@ -486,7 +506,7 @@ var ScopeImpl = class {
|
|
|
486
506
|
entry.value = void 0;
|
|
487
507
|
entry.hasValue = false;
|
|
488
508
|
this.emitStateChange("failed", atom$1);
|
|
489
|
-
this.
|
|
509
|
+
this.notifyAllListeners(atom$1);
|
|
490
510
|
if (entry.pendingInvalidate) {
|
|
491
511
|
entry.pendingInvalidate = false;
|
|
492
512
|
this.scheduleInvalidation(atom$1);
|
|
@@ -557,7 +577,7 @@ var ScopeImpl = class {
|
|
|
557
577
|
this.pending.delete(atom$1);
|
|
558
578
|
this.resolving.delete(atom$1);
|
|
559
579
|
this.emitStateChange("resolving", atom$1);
|
|
560
|
-
this.notifyListeners(atom$1);
|
|
580
|
+
this.notifyListeners(atom$1, "resolving");
|
|
561
581
|
this.resolve(atom$1).catch(() => {});
|
|
562
582
|
}
|
|
563
583
|
async release(atom$1) {
|
|
@@ -643,22 +663,30 @@ var ExecutionContextImpl = class {
|
|
|
643
663
|
/**
|
|
644
664
|
* Creates a DI container that manages Atom resolution, caching, and lifecycle.
|
|
645
665
|
*
|
|
666
|
+
* The scope is returned synchronously, with a `ready` promise that resolves
|
|
667
|
+
* when all extensions have been initialized. Resolution methods automatically
|
|
668
|
+
* wait for `ready` before proceeding.
|
|
669
|
+
*
|
|
646
670
|
* @param options - Optional configuration for extensions, presets, and tags
|
|
647
|
-
* @returns A
|
|
671
|
+
* @returns A Scope instance with a `ready` promise for extension initialization
|
|
648
672
|
*
|
|
649
673
|
* @example
|
|
650
674
|
* ```typescript
|
|
651
|
-
* const scope =
|
|
675
|
+
* const scope = createScope({
|
|
652
676
|
* extensions: [loggingExtension],
|
|
653
677
|
* presets: [preset(dbAtom, testDb)]
|
|
654
678
|
* })
|
|
679
|
+
*
|
|
680
|
+
* // Option 1: resolve() waits for ready internally
|
|
681
|
+
* const db = await scope.resolve(dbAtom)
|
|
682
|
+
*
|
|
683
|
+
* // Option 2: explicit wait
|
|
684
|
+
* await scope.ready
|
|
655
685
|
* const db = await scope.resolve(dbAtom)
|
|
656
686
|
* ```
|
|
657
687
|
*/
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
await scope.init();
|
|
661
|
-
return scope;
|
|
688
|
+
function createScope(options) {
|
|
689
|
+
return new ScopeImpl(options);
|
|
662
690
|
}
|
|
663
691
|
|
|
664
692
|
//#endregion
|
package/dist/index.mjs.map
CHANGED
|
@@ -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[]","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":";AAAA,MAAaA,aAA4B,OAAO,IAAI,uBAAuB;AAC3E,MAAaC,aAA4B,OAAO,IAAI,uBAAuB;AAC3E,MAAaC,YAA2B,OAAO,IAAI,sBAAsB;AACzE,MAAaC,eAA8B,OAAO,IAAI,yBAAyB;AAC/E,MAAaC,sBAAqC,OAAO,IAAI,iCAAiC;AAC9F,MAAaC,eAA8B,OAAO,IAAI,yBAAyB;AAC/E,MAAaC,mBAAkC,OAAO,IAAI,6BAA6B;AACvF,MAAaC,oBAAmC,OAAO,IAAI,+BAA+B;;;;ACqB1F,SAAgB,IAAO,SAAuD;CAC5E,MAAM,MAAM,OAAO,IAAI,uBAAuB,QAAQ,QAAQ;CAC9D,MAAM,aAAa,aAAa;CAChC,MAAM,eAAe,aAAa,QAAQ,UAAU;CAEpD,SAAS,aAAa,OAA0B;AAC9C,SAAO;IACJ,eAAe;GAChB;GACA;GACD;;CAGH,SAAS,IAAI,QAA2B;EACtC,MAAMC,SAAO,MAAM,QAAQ,OAAO,GAAG,SAAS,OAAO,QAAQ,EAAE;AAC/D,OAAK,IAAI,IAAI,GAAG,IAAIA,OAAK,QAAQ,IAC/B,KAAIA,OAAK,GAAI,QAAQ,IAAK,QAAOA,OAAK,GAAI;AAE5C,MAAI,WAAY,QAAO;AACvB,QAAM,IAAI,MAAM,QAAQ,QAAQ,MAAM,gCAAgC;;CAGxE,SAAS,KAAK,QAAuC;EACnD,MAAMA,SAAO,MAAM,QAAQ,OAAO,GAAG,SAAS,OAAO,QAAQ,EAAE;AAC/D,OAAK,IAAI,IAAI,GAAG,IAAIA,OAAK,QAAQ,IAC/B,KAAIA,OAAK,GAAI,QAAQ,IAAK,QAAOA,OAAK,GAAI;AAE5C,MAAI,WAAY,QAAO;;CAIzB,SAAS,QAAQ,QAA6B;EAC5C,MAAMA,SAAO,MAAM,QAAQ,OAAO,GAAG,SAAS,OAAO,QAAQ,EAAE;EAC/D,MAAMC,SAAc,EAAE;AACtB,OAAK,IAAI,IAAI,GAAG,IAAID,OAAK,QAAQ,IAC/B,KAAIA,OAAK,GAAI,QAAQ,IAAK,QAAO,KAAKA,OAAK,GAAI,MAAsB;AAEvE,SAAO;;AAGT,QAAO,OAAO,OAAO,cAAc;GAChC,YAAY;EACb;EACA,OAAO,QAAQ;EACf;EACA;EACA;EACA;EACA;EACD,CAAC;;;;;;;;;;;;;;;AAgBJ,SAAgB,MAAM,OAAqD;AACzE,QACE,OAAO,UAAU,cAChB,MAA6C,eAAe;;;;;;;;;;;;;;;AAiBjE,SAAgB,SAAS,OAA+C;AACtE,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAkC,kBAAkB;;;;;AAOzD,MAAa,OAAO;CAelB,SAAY,OAAmD;AAC7D,SAAO;IAAG,oBAAoB;GAAM;GAAK,MAAM;GAAY;;CAiB7D,SAAY,OAA+D;AACzE,SAAO;IAAG,oBAAoB;GAAM;GAAK,MAAM;GAAY;;CAiB7D,IAAO,OAAqD;AAC1D,SAAO;IAAG,oBAAoB;GAAM;GAAK,MAAM;GAAO;;CAEzD;;;;;;;;;;;;;;AAeD,SAAgB,cAAc,OAAoD;AAChF,QACE,OAAO,UAAU,YACjB,UAAU,QACV,qBAAqB;;;;;AChKzB,SAAgB,KACd,QACc;AACd,QAAO;GACJ,aAAa;EACd,SAAS,OAAO;EAChB,MAAM,OAAO;EACb,MAAM,OAAO;EACd;;;;;;;;;;;;;;;AAgBH,SAAgB,OAAO,OAA6C;AAClE,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAkC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;AAwBvD,SAAgB,WAAc,QAA2C;AACvE,QAAO;GACJ,sBAAsB;EACvB;EACD;;;;;;;;;;;;;;;AAgBH,SAAgB,gBAAgB,OAAsD;AACpF,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAkC,yBAAyB;;;;;ACpEhE,SAAgB,KAId,QAAoE;AACpE,QAAO;GACJ,aAAa;EACd,SAAS,OAAO;EAKhB,MAAM,OAAO;EACb,MAAM,OAAO;EACd;;;;;;;;;;;;;;;AAgBH,SAAgB,OAAO,OAAsD;AAC3E,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAkC,gBAAgB;;;;;;;;;;;;;;;;;;;AC9DvD,SAAgB,OACd,QACA,OACgB;AAChB,QAAO;GACJ,eAAe;EAChB;EACA;EACD;;;;;;;;;;;;;;;AAgBH,SAAgB,SAAS,OAA+C;AACtE,QACE,OAAO,UAAU,YACjB,UAAU,QACT,MAAkC,kBAAkB;;;;;AC9BzD,IAAM,mBAAN,MAA6D;CAC3D,AAAQ,4BAAY,IAAI,KAAiB;CACzC,AAAQ;CACR,AAAQ,YAAiC;CAEzC,YACE,AAAQE,MACR,AAAQC,UACR,AAAQC,IACR;EAHQ;EACA;EACA;AAER,MAAI,KAAK,UAAU,WACjB,OAAM,IAAI,MAAM,qCAAqC;AAGvD,OAAK,eAAe,SAAS,KAAK,KAAK,CAAC;AAExC,OAAK,YAAY,KAAK,SAAS;AAC7B,OAAI,KAAK,KAAK,UAAU,WAAY;GAEpC,MAAM,YAAY,KAAK,SAAS,KAAK,KAAK,KAAK,CAAC;AAChD,OAAI,CAAC,KAAK,GAAG,KAAK,cAAc,UAAU,EAAE;AAC1C,SAAK,eAAe;AACpB,SAAK,iBAAiB;;IAExB;;CAGJ,MAAS;AACP,SAAO,KAAK;;CAGd,UAAU,UAAkC;AAC1C,OAAK,UAAU,IAAI,SAAS;AAE5B,eAAa;AACX,QAAK,UAAU,OAAO,SAAS;AAC/B,OAAI,KAAK,UAAU,SAAS,EAC1B,MAAK,SAAS;;;CAKpB,AAAQ,kBAAwB;AAC9B,OAAK,MAAM,YAAY,KAAK,UAC1B,WAAU;;CAId,AAAQ,UAAgB;AACtB,OAAK,aAAa;AAClB,OAAK,YAAY;AACjB,OAAK,UAAU,OAAO;;;AAI1B,IAAM,iBAAN,MAAsD;CACpD,CAAU,oBAAoB;CAE9B,YACE,AAAQC,QACR,AAAQC,OACR;EAFQ;EACA;;CAGV,IAAI,QAAmB;AAErB,SADc,KAAK,MAAM,SAAS,KAAK,KAAK,EAC9B,SAAS;;CAGzB,MAAS;EACP,MAAM,QAAQ,KAAK,MAAM,SAAS,KAAK,KAAK;AAC5C,MAAI,CAAC,SAAS,MAAM,UAAU,OAC5B,OAAM,IAAI,MAAM,oBAAoB;AAEtC,MAAI,MAAM,UAAU,YAAY,MAAM,MACpC,OAAM,MAAM;AAEd,MAAI,MAAM,UAAU,eAAe,MAAM,SACvC,QAAO,MAAM;AAEf,MAAI,MAAM,UAAU,cAAc,MAAM,SACtC,QAAO,MAAM;AAEf,QAAM,IAAI,MAAM,oBAAoB;;CAGtC,MAAM,UAAsB;AAC1B,SAAO,KAAK,MAAM,QAAQ,KAAK,KAAK;;CAGtC,MAAM,UAAyB;AAC7B,SAAO,KAAK,MAAM,QAAQ,KAAK,KAAK;;CAGtC,aAAmB;AACjB,OAAK,MAAM,WAAW,KAAK,KAAK;;CAGlC,GAAG,UAAkC;AACnC,SAAO,KAAK,MAAM,YAAY,KAAK,MAAM,SAAS;;;AAItD,IAAM,YAAN,MAAsC;CACpC,AAAQ,wBAAQ,IAAI,KAA6C;CACjE,AAAQ,0BAAU,IAAI,KAAuD;CAC7E,AAAQ,4BAAY,IAAI,KAAyB;CACjD,AAAQ,0BAAU,IAAI,KAA2C;CACjE,AAAQ,iCAAiB,IAAI,KAA0D;CACvF,AAAQ,oCAAoB,IAAI,KAAyB;CACzD,AAAQ,wBAAwB;CAChC,AAAS;CACT,AAAS;CAET,AAAQ,qBAAwB,QAA0B;AACxD,OAAK,kBAAkB,IAAIC,OAAK;AAChC,MAAI,CAAC,KAAK,uBAAuB;AAC/B,QAAK,wBAAwB;AAC7B,wBAAqB,KAAK,oBAAoB,CAAC;;;CAInD,AAAQ,qBAA2B;AACjC,OAAK,wBAAwB;EAC7B,MAAM,QAAQ,CAAC,GAAG,KAAK,kBAAkB;AACzC,OAAK,kBAAkB,OAAO;AAC9B,OAAK,MAAMA,UAAQ,MACjB,MAAK,WAAWA,OAAK;;CAIzB,YAAY,SAA6B;AACvC,OAAK,aAAa,SAAS,cAAc,EAAE;AAC3C,OAAK,OAAO,SAAS,QAAQ,EAAE;AAE/B,OAAK,MAAM,KAAK,SAAS,WAAW,EAAE,CACpC,MAAK,QAAQ,IAAI,EAAE,MAAM,EAAE,MAAM;;CAIrC,MAAM,OAAsB;AAC1B,OAAK,MAAM,OAAO,KAAK,WACrB,KAAI,IAAI,KACN,OAAM,IAAI,KAAK,KAAK;;CAK1B,SAAY,QAA8C;AACxD,SAAO,KAAK,MAAM,IAAIA,OAAK;;CAG7B,AAAQ,iBAAoB,QAAkC;EAC5D,IAAI,QAAQ,KAAK,MAAM,IAAIA,OAAK;AAChC,MAAI,CAAC,OAAO;AACV,WAAQ;IACN,OAAO;IACP,UAAU;IACV,UAAU,EAAE;IACZ,2BAAW,IAAI,KAAK;IACpB,mBAAmB;IACpB;AACD,QAAK,MAAM,IAAIA,QAAM,MAA4B;;AAEnD,SAAO;;CAGT,YAAe,QAAoB,UAAkC;EACnE,MAAM,QAAQ,KAAK,iBAAiBA,OAAK;AACzC,QAAM,UAAU,IAAI,SAAS;AAC7B,eAAa;AACX,SAAM,UAAU,OAAO,SAAS;;;CAIpC,AAAQ,gBAAmB,QAA0B;EACnD,MAAM,QAAQ,KAAK,MAAM,IAAIA,OAAK;AAClC,MAAI,MACF,MAAK,MAAM,YAAY,MAAM,UAC3B,WAAU;;CAKhB,AAAQ,gBAAgB,OAAkB,QAAgC;EACxE,MAAM,WAAW,KAAK,eAAe,IAAI,MAAM;AAC/C,MAAI,UAAU;GACZ,MAAM,YAAY,SAAS,IAAIA,OAAK;AACpC,OAAI,UACF,MAAK,MAAM,YAAY,UACrB,WAAU;;;CAMlB,GAAG,OAAkB,QAA0B,UAAkC;EAC/E,IAAI,WAAW,KAAK,eAAe,IAAI,MAAM;AAC7C,MAAI,CAAC,UAAU;AACb,8BAAW,IAAI,KAAK;AACpB,QAAK,eAAe,IAAI,OAAO,SAAS;;EAE1C,IAAI,YAAY,SAAS,IAAIA,OAAK;AAClC,MAAI,CAAC,WAAW;AACd,+BAAY,IAAI,KAAK;AACrB,YAAS,IAAIA,QAAM,UAAU;;AAE/B,YAAU,IAAI,SAAS;EAEvB,MAAM,mBAAmB;EACzB,MAAM,oBAAoB;AAE1B,eAAa;AACX,qBAAkB,OAAO,SAAS;AAClC,OAAI,kBAAkB,SAAS,GAAG;AAChC,qBAAiB,OAAOA,OAAK;AAC7B,QAAI,iBAAiB,SAAS,EAC5B,MAAK,eAAe,OAAO,MAAM;;;;CAMzC,MAAM,QAAW,QAAgC;EAC/C,MAAM,QAAQ,KAAK,MAAM,IAAIA,OAAK;AAClC,MAAI,OAAO,UAAU,WACnB,QAAO,MAAM;EAGf,MAAM,iBAAiB,KAAK,QAAQ,IAAIA,OAAK;AAC7C,MAAI,eACF,QAAO;AAGT,MAAI,KAAK,UAAU,IAAIA,OAAK,CAC1B,OAAM,IAAI,MAAM,+BAA+B;EAGjD,MAAM,cAAc,KAAK,QAAQ,IAAIA,OAAK;AAC1C,MAAI,gBAAgB,QAAW;AAC7B,OAAI,OAAO,YAAY,CACrB,QAAO,KAAK,QAAQ,YAA4B;GAElD,MAAM,WAAW,KAAK,iBAAiBA,OAAK;AAC5C,YAAS,QAAQ;AACjB,YAAS,QAAQ;AACjB,YAAS,WAAW;AACpB,QAAK,gBAAgB,YAAYA,OAAK;AACtC,QAAK,gBAAgBA,OAAK;AAC1B,UAAO,SAAS;;AAGlB,OAAK,UAAU,IAAIA,OAAK;EAExB,MAAM,UAAU,KAAK,UAAUA,OAAK;AACpC,OAAK,QAAQ,IAAIA,QAAM,QAA4B;AAEnD,MAAI;AACF,UAAO,MAAM;YACL;AACR,QAAK,UAAU,OAAOA,OAAK;AAC3B,QAAK,QAAQ,OAAOA,OAAK;;;CAI7B,MAAc,UAAa,QAAgC;EACzD,MAAM,QAAQ,KAAK,iBAAiBA,OAAK;AACzC,QAAM,QAAQ;AACd,OAAK,gBAAgB,aAAaA,OAAK;AACvC,OAAK,gBAAgBA,OAAK;EAE1B,MAAM,eAAe,MAAM,KAAK,YAAYA,OAAK,KAAK;EAEtD,MAAMC,MAA2B;GAC/B,UAAU,OAAO,MAAM,SAAS,KAAK,GAAG;GACxC,kBAAkB;AAChB,SAAK,qBAAqBD,OAAK;;GAEjC,OAAO;GACP,IAAI,OAAO;AACT,QAAI,CAAC,MAAM,KACT,OAAM,uBAAO,IAAI,KAAK;AAExB,WAAO,MAAM;;GAEhB;EAED,MAAM,UAAUA,OAAK;EAKrB,MAAM,YAAY,YAAY;AAC5B,OAAIA,OAAK,QAAQ,OAAO,KAAKA,OAAK,KAAK,CAAC,SAAS,EAC/C,QAAO,QAAQ,KAAK,aAAa;OAEjC,QAAO,QAAQ,IAAI;;AAIvB,MAAI;GACF,MAAM,QAAQ,MAAM,KAAK,uBAAuBA,QAAM,UAAU;AAChE,SAAM,QAAQ;AACd,SAAM,QAAQ;AACd,SAAM,WAAW;AACjB,SAAM,QAAQ;AACd,QAAK,gBAAgB,YAAYA,OAAK;AACtC,QAAK,gBAAgBA,OAAK;AAE1B,OAAI,MAAM,mBAAmB;AAC3B,UAAM,oBAAoB;AAC1B,SAAK,qBAAqBA,OAAK;;AAGjC,UAAO;WACA,KAAK;AACZ,SAAM,QAAQ;AACd,SAAM,QAAQ,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC;AACjE,SAAM,QAAQ;AACd,SAAM,WAAW;AACjB,QAAK,gBAAgB,UAAUA,OAAK;AACpC,QAAK,gBAAgBA,OAAK;AAE1B,OAAI,MAAM,mBAAmB;AAC3B,UAAM,oBAAoB;AAC1B,SAAK,qBAAqBA,OAAK;;AAGjC,SAAM,MAAM;;;CAIhB,MAAc,uBACZ,QACA,WACY;EACZ,IAAI,OAAO;AAEX,OAAK,IAAI,IAAI,KAAK,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;GACpD,MAAM,MAAM,KAAK,WAAW;AAC5B,OAAI,KAAK,aAAa;IACpB,MAAM,cAAc;AACpB,WAAO,IAAI,YAAY,KAAK,KAAK,aAAaA,QAAM,KAAK;;;AAI7D,SAAO,MAAM;;CAGf,MAAM,YACJ,MACA,WACkC;AAClC,MAAI,CAAC,KAAM,QAAO,EAAE;EAEpB,MAAME,SAAkC,EAAE;EAC1C,MAAMC,SAAO,aAAa,KAAK;AAE/B,OAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,CAC3C,KAAI,OAAO,IAAI,CACb,QAAO,OAAO,MAAM,KAAK,QAAQ,IAAI;WAC5B,gBAAgB,IAAI,CAC7B,QAAO,OAAO,IAAI,eAAe,IAAI,MAAM,KAAK;WACvC,qBAAsB,KAAgB;GAC/C,MAAM,cAAc;AAEpB,WAAQ,YAAY,MAApB;IACE,KAAK;AACH,YAAO,OAAO,YAAY,IAAI,IAAIA,OAAK;AACvC;IACF,KAAK;AACH,YAAO,OAAO,YAAY,IAAI,KAAKA,OAAK;AACxC;IACF,KAAK;AACH,YAAO,OAAO,YAAY,IAAI,QAAQA,OAAK;AAC3C;;;AAKR,SAAO;;CAGT,WAAc,QAAwC;AACpD,SAAO,IAAI,eAAeH,QAAM,KAAK;;CAGvC,OACE,QACA,UACA,SACsB;AAGtB,SAAO,IAAI,iBAFE,KAAK,WAAWA,OAAK,EAEA,UADvB,SAAS,QAAQ,GAAG,MAAM,MAAM,GACI;;CAGjD,WAAc,QAA0B;EACtC,MAAM,QAAQ,KAAK,MAAM,IAAIA,OAAK;AAClC,MAAI,CAAC,MAAO;AAEZ,MAAI,MAAM,UAAU,OAAQ;AAE5B,MAAI,MAAM,UAAU,aAAa;AAC/B,SAAM,oBAAoB;AAC1B;;AAGF,OAAK,aAAaA,QAAM,MAAsB;;CAGhD,MAAc,aAAgB,QAAoB,OAAoC;EACpF,MAAM,gBAAgB,MAAM;AAC5B,OAAK,IAAI,IAAI,MAAM,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;GACnD,MAAM,UAAU,MAAM,SAAS;AAC/B,OAAI,QAAS,OAAM,SAAS;;AAE9B,QAAM,WAAW,EAAE;AACnB,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,oBAAoB;AAC1B,OAAK,QAAQ,OAAOA,OAAK;AACzB,OAAK,UAAU,OAAOA,OAAK;AAC3B,OAAK,gBAAgB,aAAaA,OAAK;AACvC,OAAK,gBAAgBA,OAAK;AAE1B,OAAK,QAAQA,OAAK,CAAC,YAAY,GAAG;;CAGpC,MAAM,QAAW,QAAmC;EAClD,MAAM,QAAQ,KAAK,MAAM,IAAIA,OAAK;AAClC,MAAI,CAAC,MAAO;AAEZ,OAAK,IAAI,IAAI,MAAM,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;GACnD,MAAM,UAAU,MAAM,SAAS;AAC/B,OAAI,QAAS,OAAM,SAAS;;AAG9B,OAAK,MAAM,OAAOA,OAAK;;CAGzB,MAAM,UAAyB;AAC7B,OAAK,MAAM,OAAO,KAAK,WACrB,KAAI,IAAI,QACN,OAAM,IAAI,QAAQ,KAAK;EAI3B,MAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,MAAM,CAAC;AAC3C,OAAK,MAAMA,UAAQ,MACjB,OAAM,KAAK,QAAQA,OAA2B;;CAIlD,cAAc,SAA4D;AACxE,SAAO,IAAI,qBAAqB,MAAM,QAAQ;;;AAIlD,IAAM,uBAAN,MAA4D;CAC1D,AAAQ,WAAyC,EAAE;CACnD,AAAQ,SAAS;CACjB,AAAQ,SAAkB;CAC1B,AAAiB;CAEjB,YACE,AAASD,OACT,SACA;EAFS;EAGT,MAAM,UAAU,SAAS;AACzB,OAAK,WAAW,SAAS,SACrB,CAAC,GAAG,SAAS,GAAG,MAAM,KAAK,GAC3B,MAAM;;CAGZ,IAAI,QAAiB;AACnB,SAAO,KAAK;;CAGd,MAAM,KAAQ,SAAsE;AAClF,MAAI,KAAK,OACP,OAAM,IAAI,MAAM,6BAA6B;AAG/C,MAAI,UAAU,QACZ,QAAO,KAAK,SAAS,QAAQ;MAE7B,QAAO,KAAK,OAAO,QAAQ;;CAI/B,MAAc,SAAY,SAA8C;EACtE,MAAM,EAAE,cAAM,OAAO,MAAM,aAAa;EAGxC,MAAM,WADgB,UAAU,UAAU,KAAK,MAAMK,OAAK,MAAM,UAAU,KAAK,IAE3E;GAAC,GAAI,YAAY,EAAE;GAAG,GAAG,KAAK;GAAU,GAAIA,OAAK,QAAQ,EAAE;GAAE,GAC7D,KAAK;EAET,MAAM,eAAe,MAAM,KAAK,MAAM,YAAYA,OAAK,MAAM,QAAQ;AAErE,OAAK,SAAS;EAEd,MAAM,UAAUA,OAAK;EAKrB,MAAM,SAAS,YAAwB;AACrC,OAAIA,OAAK,QAAQ,OAAO,KAAKA,OAAK,KAAK,CAAC,SAAS,EAC/C,QAAO,QAAQ,MAAM,aAAa;OAElC,QAAO,QAAQ,KAAK;;AAIxB,SAAO,KAAK,oBAAoBA,QAAM,OAAO;;CAG/C,AAAQ,OAAU,SAA4C;EAC5D,MAAM,EAAE,IAAI,WAAW;EACvB,MAAM,eAAe,QAAQ,QAAQ,GAAG,GAAG,OAAO,CAAC;AACnD,SAAO,KAAK,oBAAoB,IAAI,OAAO;;CAG7C,MAAc,oBACZ,QACA,QACY;EACZ,IAAI,OAAO;AAEX,OAAK,IAAI,IAAI,KAAK,MAAM,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;GAC1D,MAAM,MAAM,KAAK,MAAM,WAAW;AAClC,OAAI,KAAK,UAAU;IACjB,MAAM,cAAc;AACpB,WAAO,IAAI,SAAS,KAAK,KAAK,aAAa,QAAQ,KAAK;;;AAI5D,SAAO,MAAM;;CAGf,QAAQ,IAAoC;AAC1C,OAAK,SAAS,KAAK,GAAG;;CAGxB,MAAM,QAAuB;AAC3B,MAAI,KAAK,OAAQ;AAEjB,OAAK,SAAS;AAEd,OAAK,IAAI,IAAI,KAAK,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;GAClD,MAAM,UAAU,KAAK,SAAS;AAC9B,OAAI,QAAS,OAAM,SAAS;;;;;;;;;;;;;;;;;;;AAoBlC,eAAsB,YACpB,SACqB;CACrB,MAAM,QAAQ,IAAI,UAAU,QAAQ;AACpC,OAAM,MAAM,MAAM;AAClB,QAAO;;;;;AChkBT,MAAa,UAAU"}
|
|
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\ntype ListenerEvent = 'resolving' | 'resolved' | '*'\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 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('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 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 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 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 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 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, 'resolved')\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.notifyAllListeners(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, 'resolving')\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 * 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} 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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"}
|