@pumped-fn/lite 1.1.0 → 1.2.1
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 +48 -0
- package/README.md +132 -154
- package/dist/index.cjs +24 -2
- package/dist/index.d.cts +38 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +38 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +22 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @pumped-fn/lite
|
|
2
2
|
|
|
3
|
+
## 1.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- b524371: docs: replace ASCII diagrams with Mermaid and streamline code examples
|
|
8
|
+
|
|
9
|
+
- Convert Core Concepts ASCII chart to Mermaid graph
|
|
10
|
+
- Add Mermaid diagrams for Atoms, Flows, Controllers, Tags, Presets, and Extensions sections
|
|
11
|
+
- Replace verbose code examples with concise versions where diagrams communicate the concept
|
|
12
|
+
- Reduce README from ~710 lines to ~690 lines while improving visual clarity
|
|
13
|
+
|
|
14
|
+
## 1.2.0
|
|
15
|
+
|
|
16
|
+
### Minor Changes
|
|
17
|
+
|
|
18
|
+
- 4ca110a: Add `typed<T>()` utility for type-only flow input marking
|
|
19
|
+
|
|
20
|
+
- Add `typed<T>()` function that provides typed input without runtime parsing
|
|
21
|
+
- Fix type inference for `ctx.input` when using `parse` function - now correctly infers the parsed type
|
|
22
|
+
- Add `Lite.Typed<T>` interface and `typedSymbol` for the type marker
|
|
23
|
+
|
|
24
|
+
**Before:** Required explicit type annotation on factory callback
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
const myFlow = flow({
|
|
28
|
+
parse: (raw: unknown): MyType => validate(raw),
|
|
29
|
+
factory: (ctx: Lite.ExecutionContext<MyType>) => ctx.input.field,
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**After:** Type is automatically inferred from parse return type
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
const myFlow = flow({
|
|
37
|
+
parse: (raw: unknown): MyType => validate(raw),
|
|
38
|
+
factory: (ctx) => ctx.input.field, // ctx.input is MyType
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**New:** Use `typed<T>()` for type-only marking without validation
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
const myFlow = flow({
|
|
46
|
+
parse: typed<{ name: string }>(),
|
|
47
|
+
factory: (ctx) => ctx.input.name, // ctx.input is { name: string }
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
3
51
|
## 1.1.0
|
|
4
52
|
|
|
5
53
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -64,23 +64,15 @@ await scope.dispose()
|
|
|
64
64
|
|
|
65
65
|
## Core Concepts
|
|
66
66
|
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
│ │ │ │
|
|
77
|
-
│ └──────────────┬───────────────────┘ │
|
|
78
|
-
│ ▼ │
|
|
79
|
-
│ ┌─────────────────────────────────────────────────────┐ │
|
|
80
|
-
│ │ ExecutionContext │ │
|
|
81
|
-
│ │ (short-lived operation with input, tags, cleanup) │ │
|
|
82
|
-
│ └─────────────────────────────────────────────────────┘ │
|
|
83
|
-
└─────────────────────────────────────────────────────────────┘
|
|
67
|
+
```mermaid
|
|
68
|
+
graph TB
|
|
69
|
+
subgraph Scope["Scope (long-lived execution boundary)"]
|
|
70
|
+
A1["Atom (effect)"] --- A2["Atom (effect)"]
|
|
71
|
+
A2 --- A3["Atom (effect)"]
|
|
72
|
+
A1 --> EC
|
|
73
|
+
A3 --> EC
|
|
74
|
+
EC["ExecutionContext<br/>(short-lived operation with input, tags, cleanup)"]
|
|
75
|
+
end
|
|
84
76
|
```
|
|
85
77
|
|
|
86
78
|
| Concept | Purpose |
|
|
@@ -96,6 +88,16 @@ await scope.dispose()
|
|
|
96
88
|
|
|
97
89
|
Atoms are long-lived dependencies that are cached within a scope.
|
|
98
90
|
|
|
91
|
+
```mermaid
|
|
92
|
+
flowchart TB
|
|
93
|
+
subgraph Scope
|
|
94
|
+
Config["configAtom"] --> API["apiClientAtom"]
|
|
95
|
+
DB["dbAtom"] --> Repo["userRepoAtom"]
|
|
96
|
+
API --> Service["userServiceAtom"]
|
|
97
|
+
Repo --> Service
|
|
98
|
+
end
|
|
99
|
+
```
|
|
100
|
+
|
|
99
101
|
### Basic Atom
|
|
100
102
|
|
|
101
103
|
```typescript
|
|
@@ -174,6 +176,22 @@ const counterAtom = atom({
|
|
|
174
176
|
|
|
175
177
|
Flows are templates for short-lived operations.
|
|
176
178
|
|
|
179
|
+
```mermaid
|
|
180
|
+
sequenceDiagram
|
|
181
|
+
participant Client
|
|
182
|
+
participant Context as ExecutionContext
|
|
183
|
+
participant Flow
|
|
184
|
+
participant Atoms
|
|
185
|
+
|
|
186
|
+
Client->>Context: exec({ flow, input })
|
|
187
|
+
Context->>Atoms: resolve dependencies
|
|
188
|
+
Atoms-->>Context: deps
|
|
189
|
+
Context->>Flow: factory(ctx, deps)
|
|
190
|
+
Flow-->>Context: result
|
|
191
|
+
Context-->>Client: result
|
|
192
|
+
Client->>Context: close()
|
|
193
|
+
```
|
|
194
|
+
|
|
177
195
|
### Basic Flow
|
|
178
196
|
|
|
179
197
|
```typescript
|
|
@@ -210,18 +228,11 @@ Parse runs before the factory, and `ctx.input` type is inferred from the parse r
|
|
|
210
228
|
### Executing Flows
|
|
211
229
|
|
|
212
230
|
```typescript
|
|
213
|
-
const scope = createScope()
|
|
214
|
-
await scope.ready
|
|
215
|
-
|
|
216
231
|
const context = scope.createContext()
|
|
217
|
-
|
|
218
|
-
// Execute with input
|
|
219
232
|
const user = await context.exec({
|
|
220
233
|
flow: createUserFlow,
|
|
221
234
|
input: { name: 'Alice', email: 'alice@example.com' }
|
|
222
235
|
})
|
|
223
|
-
|
|
224
|
-
// Always close the context when done
|
|
225
236
|
await context.close()
|
|
226
237
|
```
|
|
227
238
|
|
|
@@ -251,79 +262,78 @@ await context.exec({
|
|
|
251
262
|
|
|
252
263
|
Controllers provide reactive access to atom state.
|
|
253
264
|
|
|
265
|
+
```mermaid
|
|
266
|
+
flowchart LR
|
|
267
|
+
subgraph Controller
|
|
268
|
+
State["state: idle|resolving|resolved|failed"]
|
|
269
|
+
Get["get()"]
|
|
270
|
+
Inv["invalidate()"]
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
App -->|subscribe| Controller
|
|
274
|
+
Controller -->|on 'resolved'| App
|
|
275
|
+
Controller -->|on 'resolving'| App
|
|
276
|
+
```
|
|
277
|
+
|
|
254
278
|
### Basic Usage
|
|
255
279
|
|
|
256
280
|
```typescript
|
|
257
281
|
const ctrl = scope.controller(configAtom)
|
|
258
282
|
|
|
259
|
-
//
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
//
|
|
263
|
-
const config = ctrl.get()
|
|
264
|
-
|
|
265
|
-
// Resolve and wait
|
|
266
|
-
const config = await ctrl.resolve()
|
|
267
|
-
|
|
268
|
-
// Manual invalidation
|
|
269
|
-
ctrl.invalidate()
|
|
283
|
+
ctrl.state // 'idle' | 'resolving' | 'resolved' | 'failed'
|
|
284
|
+
ctrl.get() // value (throws if not resolved)
|
|
285
|
+
await ctrl.resolve() // resolve and wait
|
|
286
|
+
ctrl.invalidate() // trigger re-resolution
|
|
270
287
|
```
|
|
271
288
|
|
|
272
289
|
### Subscribing to Changes
|
|
273
290
|
|
|
274
291
|
```typescript
|
|
275
|
-
|
|
276
|
-
ctrl.on('
|
|
277
|
-
|
|
278
|
-
})
|
|
279
|
-
|
|
280
|
-
ctrl.on('resolving', () => {
|
|
281
|
-
console.log('Config is refreshing...')
|
|
282
|
-
})
|
|
283
|
-
|
|
284
|
-
// Subscribe to all state changes
|
|
285
|
-
ctrl.on('*', () => {
|
|
286
|
-
console.log('State changed:', ctrl.state)
|
|
287
|
-
})
|
|
292
|
+
ctrl.on('resolved', () => console.log('Updated:', ctrl.get()))
|
|
293
|
+
ctrl.on('resolving', () => console.log('Refreshing...'))
|
|
294
|
+
ctrl.on('*', () => console.log('State:', ctrl.state))
|
|
288
295
|
```
|
|
289
296
|
|
|
290
297
|
### Controller as Dependency
|
|
291
298
|
|
|
292
|
-
Use `controller()` to
|
|
299
|
+
Use `controller()` to receive a Controller instead of the resolved value:
|
|
293
300
|
|
|
294
301
|
```typescript
|
|
295
302
|
const appAtom = atom({
|
|
296
303
|
deps: { config: controller(configAtom) },
|
|
297
304
|
factory: (ctx, { config }) => {
|
|
298
|
-
|
|
299
|
-
config.on('resolved', () => {
|
|
300
|
-
console.log('Config updated, reinitializing...')
|
|
301
|
-
ctx.invalidate()
|
|
302
|
-
})
|
|
303
|
-
|
|
305
|
+
config.on('resolved', () => ctx.invalidate())
|
|
304
306
|
return new App(config.get())
|
|
305
307
|
}
|
|
306
308
|
})
|
|
307
309
|
```
|
|
308
310
|
|
|
309
|
-
### Fine-Grained Reactivity
|
|
311
|
+
### Fine-Grained Reactivity
|
|
312
|
+
|
|
313
|
+
Use `select()` to subscribe only when a derived value changes:
|
|
310
314
|
|
|
311
315
|
```typescript
|
|
312
|
-
const portSelect = scope.select(
|
|
313
|
-
|
|
314
|
-
(config) => config.port,
|
|
315
|
-
{ eq: (a, b) => a === b } // Optional custom equality
|
|
316
|
-
)
|
|
317
|
-
|
|
318
|
-
portSelect.subscribe(() => {
|
|
319
|
-
console.log('Port changed:', portSelect.get())
|
|
320
|
-
})
|
|
316
|
+
const portSelect = scope.select(configAtom, (c) => c.port)
|
|
317
|
+
portSelect.subscribe(() => console.log('Port changed:', portSelect.get()))
|
|
321
318
|
```
|
|
322
319
|
|
|
323
320
|
## Tags
|
|
324
321
|
|
|
325
322
|
Tags pass contextual values through execution without explicit wiring.
|
|
326
323
|
|
|
324
|
+
```mermaid
|
|
325
|
+
flowchart LR
|
|
326
|
+
subgraph Definition
|
|
327
|
+
T["tag({ label: 'tenantId' })"]
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
subgraph Usage
|
|
331
|
+
R["tags.required(tag)"] --> |"throws if missing"| V1["string"]
|
|
332
|
+
O["tags.optional(tag)"] --> |"undefined if missing"| V2["string | undefined"]
|
|
333
|
+
A["tags.all(tag)"] --> |"collects all"| V3["string[]"]
|
|
334
|
+
end
|
|
335
|
+
```
|
|
336
|
+
|
|
327
337
|
### Creating Tags
|
|
328
338
|
|
|
329
339
|
```typescript
|
|
@@ -372,25 +382,26 @@ const multiAtom = atom({
|
|
|
372
382
|
|
|
373
383
|
### Passing Tags
|
|
374
384
|
|
|
375
|
-
|
|
376
|
-
// At scope creation
|
|
377
|
-
const scope = createScope({
|
|
378
|
-
tags: [tenantIdTag('tenant-123')]
|
|
379
|
-
})
|
|
385
|
+
Tags can be passed at different levels, with inner levels inheriting from outer:
|
|
380
386
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
387
|
+
```mermaid
|
|
388
|
+
flowchart LR
|
|
389
|
+
subgraph Scope["createScope()"]
|
|
390
|
+
ST["tenantId: 'tenant-123'"]
|
|
391
|
+
subgraph Context["createContext()"]
|
|
392
|
+
CT["userRoles: ['admin']"]
|
|
393
|
+
subgraph Exec["exec()"]
|
|
394
|
+
ET["requestId: 'req-456'"]
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
end
|
|
385
398
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
flow: myFlow,
|
|
389
|
-
input: data,
|
|
390
|
-
tags: [requestIdTag('req-456')]
|
|
391
|
-
})
|
|
399
|
+
ST -.->|inherited| CT
|
|
400
|
+
CT -.->|inherited| ET
|
|
392
401
|
```
|
|
393
402
|
|
|
403
|
+
All three tag levels are available during flow execution.
|
|
404
|
+
|
|
394
405
|
### Direct Tag Methods
|
|
395
406
|
|
|
396
407
|
```typescript
|
|
@@ -410,38 +421,57 @@ const allRoles = userRolesTag.collect(tags)
|
|
|
410
421
|
|
|
411
422
|
Presets inject or redirect atom values, useful for testing.
|
|
412
423
|
|
|
413
|
-
|
|
424
|
+
```mermaid
|
|
425
|
+
flowchart LR
|
|
426
|
+
subgraph Normal["Normal Resolution"]
|
|
427
|
+
A1[resolve dbAtom] --> F1[factory]
|
|
428
|
+
F1 --> V1[real connection]
|
|
429
|
+
end
|
|
414
430
|
|
|
415
|
-
|
|
416
|
-
|
|
431
|
+
subgraph Preset["With Preset"]
|
|
432
|
+
A2[resolve dbAtom] --> P[preset check]
|
|
433
|
+
P -->|value| V2[mockDb]
|
|
434
|
+
P -->|atom| F2[testAtom.factory]
|
|
435
|
+
end
|
|
436
|
+
```
|
|
417
437
|
|
|
438
|
+
**Value injection** bypasses the factory entirely:
|
|
439
|
+
```typescript
|
|
418
440
|
const scope = createScope({
|
|
419
441
|
presets: [preset(dbAtom, mockDb)]
|
|
420
442
|
})
|
|
421
|
-
|
|
422
|
-
// resolves to mockDb without calling factory
|
|
423
|
-
const db = await scope.resolve(dbAtom)
|
|
424
443
|
```
|
|
425
444
|
|
|
426
|
-
|
|
427
|
-
|
|
445
|
+
**Atom redirection** uses another atom's factory:
|
|
428
446
|
```typescript
|
|
429
|
-
const testConfigAtom = atom({
|
|
430
|
-
factory: () => ({ apiUrl: 'http://localhost:3000' })
|
|
431
|
-
})
|
|
432
|
-
|
|
433
447
|
const scope = createScope({
|
|
434
448
|
presets: [preset(configAtom, testConfigAtom)]
|
|
435
449
|
})
|
|
436
|
-
|
|
437
|
-
// resolves testConfigAtom instead of configAtom
|
|
438
|
-
const config = await scope.resolve(configAtom)
|
|
439
450
|
```
|
|
440
451
|
|
|
441
452
|
## Extensions
|
|
442
453
|
|
|
443
454
|
Extensions provide cross-cutting behavior via AOP-style hooks.
|
|
444
455
|
|
|
456
|
+
```mermaid
|
|
457
|
+
sequenceDiagram
|
|
458
|
+
participant App
|
|
459
|
+
participant Ext1 as Extension 1
|
|
460
|
+
participant Ext2 as Extension 2
|
|
461
|
+
participant Core as Core Logic
|
|
462
|
+
|
|
463
|
+
App->>Ext1: resolve(atom)
|
|
464
|
+
Ext1->>Ext1: before logic
|
|
465
|
+
Ext1->>Ext2: next()
|
|
466
|
+
Ext2->>Ext2: before logic
|
|
467
|
+
Ext2->>Core: next()
|
|
468
|
+
Core-->>Ext2: value
|
|
469
|
+
Ext2->>Ext2: after logic
|
|
470
|
+
Ext2-->>Ext1: value
|
|
471
|
+
Ext1->>Ext1: after logic
|
|
472
|
+
Ext1-->>App: value
|
|
473
|
+
```
|
|
474
|
+
|
|
445
475
|
### Extension Interface
|
|
446
476
|
|
|
447
477
|
```typescript
|
|
@@ -454,73 +484,21 @@ interface Extension {
|
|
|
454
484
|
}
|
|
455
485
|
```
|
|
456
486
|
|
|
457
|
-
### Example:
|
|
487
|
+
### Example: Timing Extension
|
|
458
488
|
|
|
459
489
|
```typescript
|
|
460
|
-
const
|
|
461
|
-
name: '
|
|
462
|
-
|
|
463
|
-
init: (scope) => {
|
|
464
|
-
console.log('Scope initialized')
|
|
465
|
-
},
|
|
490
|
+
const timingExtension: Lite.Extension = {
|
|
491
|
+
name: 'timing',
|
|
466
492
|
|
|
467
493
|
wrapResolve: async (next, atom, scope) => {
|
|
468
494
|
const start = performance.now()
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
const result = await next()
|
|
473
|
-
console.log(`Resolved in ${performance.now() - start}ms`)
|
|
474
|
-
return result
|
|
475
|
-
} catch (error) {
|
|
476
|
-
console.error('Resolution failed:', error)
|
|
477
|
-
throw error
|
|
478
|
-
}
|
|
479
|
-
},
|
|
480
|
-
|
|
481
|
-
wrapExec: async (next, target, ctx) => {
|
|
482
|
-
console.log('Executing:', 'flow' in target ? 'flow' : 'function')
|
|
483
|
-
return next()
|
|
484
|
-
},
|
|
485
|
-
|
|
486
|
-
dispose: (scope) => {
|
|
487
|
-
console.log('Scope disposed')
|
|
495
|
+
const result = await next()
|
|
496
|
+
console.log(`Resolved in ${performance.now() - start}ms`)
|
|
497
|
+
return result
|
|
488
498
|
}
|
|
489
499
|
}
|
|
490
500
|
|
|
491
|
-
const scope = createScope({ extensions: [
|
|
492
|
-
```
|
|
493
|
-
|
|
494
|
-
### Example: Metrics Extension
|
|
495
|
-
|
|
496
|
-
```typescript
|
|
497
|
-
const metricsExtension: Lite.Extension = {
|
|
498
|
-
name: 'metrics',
|
|
499
|
-
|
|
500
|
-
wrapResolve: async (next, atom, scope) => {
|
|
501
|
-
const start = performance.now()
|
|
502
|
-
try {
|
|
503
|
-
const result = await next()
|
|
504
|
-
metrics.recordResolution(atom, performance.now() - start, 'success')
|
|
505
|
-
return result
|
|
506
|
-
} catch (error) {
|
|
507
|
-
metrics.recordResolution(atom, performance.now() - start, 'error')
|
|
508
|
-
throw error
|
|
509
|
-
}
|
|
510
|
-
},
|
|
511
|
-
|
|
512
|
-
wrapExec: async (next, target, ctx) => {
|
|
513
|
-
const start = performance.now()
|
|
514
|
-
try {
|
|
515
|
-
const result = await next()
|
|
516
|
-
metrics.recordExecution(target, performance.now() - start, 'success')
|
|
517
|
-
return result
|
|
518
|
-
} catch (error) {
|
|
519
|
-
metrics.recordExecution(target, performance.now() - start, 'error')
|
|
520
|
-
throw error
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
}
|
|
501
|
+
const scope = createScope({ extensions: [timingExtension] })
|
|
524
502
|
```
|
|
525
503
|
|
|
526
504
|
## Lifecycle
|
package/dist/index.cjs
CHANGED
|
@@ -8,6 +8,7 @@ const controllerDepSymbol = Symbol.for("@pumped-fn/lite/controller-dep");
|
|
|
8
8
|
const presetSymbol = Symbol.for("@pumped-fn/lite/preset");
|
|
9
9
|
const controllerSymbol = Symbol.for("@pumped-fn/lite/controller");
|
|
10
10
|
const tagExecutorSymbol = Symbol.for("@pumped-fn/lite/tag-executor");
|
|
11
|
+
const typedSymbol = Symbol.for("@pumped-fn/lite/typed");
|
|
11
12
|
|
|
12
13
|
//#endregion
|
|
13
14
|
//#region src/errors.ts
|
|
@@ -216,11 +217,30 @@ function isControllerDep(value) {
|
|
|
216
217
|
|
|
217
218
|
//#endregion
|
|
218
219
|
//#region src/flow.ts
|
|
220
|
+
/**
|
|
221
|
+
* Type marker for flow input without runtime parsing.
|
|
222
|
+
* Use this when you want typed input but don't need validation.
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* ```typescript
|
|
226
|
+
* const myFlow = flow({
|
|
227
|
+
* parse: typed<{ name: string }>(),
|
|
228
|
+
* factory: (ctx) => {
|
|
229
|
+
* return ctx.input.name.toUpperCase()
|
|
230
|
+
* }
|
|
231
|
+
* })
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
function typed() {
|
|
235
|
+
return { [typedSymbol]: true };
|
|
236
|
+
}
|
|
219
237
|
function flow(config) {
|
|
238
|
+
const parse = config.parse;
|
|
239
|
+
const isTypedMarker = typeof parse === "object" && parse !== null && typedSymbol in parse;
|
|
220
240
|
return {
|
|
221
241
|
[flowSymbol]: true,
|
|
222
242
|
name: config.name,
|
|
223
|
-
parse:
|
|
243
|
+
parse: isTypedMarker ? void 0 : parse,
|
|
224
244
|
factory: config.factory,
|
|
225
245
|
deps: config.deps,
|
|
226
246
|
tags: config.tags
|
|
@@ -803,4 +823,6 @@ exports.tag = tag;
|
|
|
803
823
|
exports.tagExecutorSymbol = tagExecutorSymbol;
|
|
804
824
|
exports.tagSymbol = tagSymbol;
|
|
805
825
|
exports.taggedSymbol = taggedSymbol;
|
|
806
|
-
exports.tags = tags;
|
|
826
|
+
exports.tags = tags;
|
|
827
|
+
exports.typed = typed;
|
|
828
|
+
exports.typedSymbol = typedSymbol;
|
package/dist/index.d.cts
CHANGED
|
@@ -7,6 +7,7 @@ declare const controllerDepSymbol: unique symbol;
|
|
|
7
7
|
declare const presetSymbol: unique symbol;
|
|
8
8
|
declare const controllerSymbol: unique symbol;
|
|
9
9
|
declare const tagExecutorSymbol: unique symbol;
|
|
10
|
+
declare const typedSymbol: unique symbol;
|
|
10
11
|
//#endregion
|
|
11
12
|
//#region src/types.d.ts
|
|
12
13
|
type MaybePromise<T> = T | Promise<T>;
|
|
@@ -123,6 +124,9 @@ declare namespace Lite {
|
|
|
123
124
|
readonly [controllerDepSymbol]: true;
|
|
124
125
|
readonly atom: Atom<T>;
|
|
125
126
|
}
|
|
127
|
+
interface Typed<T> {
|
|
128
|
+
readonly [typedSymbol]: true;
|
|
129
|
+
}
|
|
126
130
|
interface Preset<T> {
|
|
127
131
|
readonly [presetSymbol]: true;
|
|
128
132
|
readonly atom: Atom<T>;
|
|
@@ -344,6 +348,21 @@ declare function controller<T>(atom: Lite.Atom<T>): Lite.ControllerDep<T>;
|
|
|
344
348
|
declare function isControllerDep(value: unknown): value is Lite.ControllerDep<unknown>;
|
|
345
349
|
//#endregion
|
|
346
350
|
//#region src/flow.d.ts
|
|
351
|
+
/**
|
|
352
|
+
* Type marker for flow input without runtime parsing.
|
|
353
|
+
* Use this when you want typed input but don't need validation.
|
|
354
|
+
*
|
|
355
|
+
* @example
|
|
356
|
+
* ```typescript
|
|
357
|
+
* const myFlow = flow({
|
|
358
|
+
* parse: typed<{ name: string }>(),
|
|
359
|
+
* factory: (ctx) => {
|
|
360
|
+
* return ctx.input.name.toUpperCase()
|
|
361
|
+
* }
|
|
362
|
+
* })
|
|
363
|
+
* ```
|
|
364
|
+
*/
|
|
365
|
+
declare function typed<T>(): Lite.Typed<T>;
|
|
347
366
|
/**
|
|
348
367
|
* Creates a short-lived execution unit that processes input and produces output.
|
|
349
368
|
*
|
|
@@ -370,7 +389,14 @@ declare function flow<TOutput, TInput>(config: {
|
|
|
370
389
|
name?: string;
|
|
371
390
|
parse: (raw: unknown) => MaybePromise<TInput>;
|
|
372
391
|
deps?: undefined;
|
|
373
|
-
factory: (ctx: Lite.ExecutionContext<TInput
|
|
392
|
+
factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>;
|
|
393
|
+
tags?: Lite.Tagged<unknown>[];
|
|
394
|
+
}): Lite.Flow<TOutput, TInput>;
|
|
395
|
+
declare function flow<TOutput, TInput>(config: {
|
|
396
|
+
name?: string;
|
|
397
|
+
parse: Lite.Typed<TInput>;
|
|
398
|
+
deps?: undefined;
|
|
399
|
+
factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>;
|
|
374
400
|
tags?: Lite.Tagged<unknown>[];
|
|
375
401
|
}): Lite.Flow<TOutput, TInput>;
|
|
376
402
|
declare function flow<TOutput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
|
|
@@ -387,7 +413,16 @@ declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<
|
|
|
387
413
|
name?: string;
|
|
388
414
|
parse: (raw: unknown) => MaybePromise<TInput>;
|
|
389
415
|
deps: D;
|
|
390
|
-
factory: (ctx: Lite.ExecutionContext<TInput
|
|
416
|
+
factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
|
|
417
|
+
tags?: Lite.Tagged<unknown>[];
|
|
418
|
+
}): Lite.Flow<TOutput, TInput>;
|
|
419
|
+
declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
|
|
420
|
+
mode: string;
|
|
421
|
+
}>>(config: {
|
|
422
|
+
name?: string;
|
|
423
|
+
parse: Lite.Typed<TInput>;
|
|
424
|
+
deps: D;
|
|
425
|
+
factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
|
|
391
426
|
tags?: Lite.Tagged<unknown>[];
|
|
392
427
|
}): Lite.Flow<TOutput, TInput>;
|
|
393
428
|
/**
|
|
@@ -476,5 +511,5 @@ declare class ParseError extends Error {
|
|
|
476
511
|
//#region src/index.d.ts
|
|
477
512
|
declare const VERSION = "0.0.1";
|
|
478
513
|
//#endregion
|
|
479
|
-
export { type AtomState, type Lite, ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags };
|
|
514
|
+
export { type AtomState, type Lite, ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
|
|
480
515
|
//# sourceMappingURL=index.d.cts.map
|
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/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -7,6 +7,7 @@ declare const controllerDepSymbol: unique symbol;
|
|
|
7
7
|
declare const presetSymbol: unique symbol;
|
|
8
8
|
declare const controllerSymbol: unique symbol;
|
|
9
9
|
declare const tagExecutorSymbol: unique symbol;
|
|
10
|
+
declare const typedSymbol: unique symbol;
|
|
10
11
|
//#endregion
|
|
11
12
|
//#region src/types.d.ts
|
|
12
13
|
type MaybePromise<T> = T | Promise<T>;
|
|
@@ -123,6 +124,9 @@ declare namespace Lite {
|
|
|
123
124
|
readonly [controllerDepSymbol]: true;
|
|
124
125
|
readonly atom: Atom<T>;
|
|
125
126
|
}
|
|
127
|
+
interface Typed<T> {
|
|
128
|
+
readonly [typedSymbol]: true;
|
|
129
|
+
}
|
|
126
130
|
interface Preset<T> {
|
|
127
131
|
readonly [presetSymbol]: true;
|
|
128
132
|
readonly atom: Atom<T>;
|
|
@@ -344,6 +348,21 @@ declare function controller<T>(atom: Lite.Atom<T>): Lite.ControllerDep<T>;
|
|
|
344
348
|
declare function isControllerDep(value: unknown): value is Lite.ControllerDep<unknown>;
|
|
345
349
|
//#endregion
|
|
346
350
|
//#region src/flow.d.ts
|
|
351
|
+
/**
|
|
352
|
+
* Type marker for flow input without runtime parsing.
|
|
353
|
+
* Use this when you want typed input but don't need validation.
|
|
354
|
+
*
|
|
355
|
+
* @example
|
|
356
|
+
* ```typescript
|
|
357
|
+
* const myFlow = flow({
|
|
358
|
+
* parse: typed<{ name: string }>(),
|
|
359
|
+
* factory: (ctx) => {
|
|
360
|
+
* return ctx.input.name.toUpperCase()
|
|
361
|
+
* }
|
|
362
|
+
* })
|
|
363
|
+
* ```
|
|
364
|
+
*/
|
|
365
|
+
declare function typed<T>(): Lite.Typed<T>;
|
|
347
366
|
/**
|
|
348
367
|
* Creates a short-lived execution unit that processes input and produces output.
|
|
349
368
|
*
|
|
@@ -370,7 +389,14 @@ declare function flow<TOutput, TInput>(config: {
|
|
|
370
389
|
name?: string;
|
|
371
390
|
parse: (raw: unknown) => MaybePromise<TInput>;
|
|
372
391
|
deps?: undefined;
|
|
373
|
-
factory: (ctx: Lite.ExecutionContext<TInput
|
|
392
|
+
factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>;
|
|
393
|
+
tags?: Lite.Tagged<unknown>[];
|
|
394
|
+
}): Lite.Flow<TOutput, TInput>;
|
|
395
|
+
declare function flow<TOutput, TInput>(config: {
|
|
396
|
+
name?: string;
|
|
397
|
+
parse: Lite.Typed<TInput>;
|
|
398
|
+
deps?: undefined;
|
|
399
|
+
factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>;
|
|
374
400
|
tags?: Lite.Tagged<unknown>[];
|
|
375
401
|
}): Lite.Flow<TOutput, TInput>;
|
|
376
402
|
declare function flow<TOutput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
|
|
@@ -387,7 +413,16 @@ declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<
|
|
|
387
413
|
name?: string;
|
|
388
414
|
parse: (raw: unknown) => MaybePromise<TInput>;
|
|
389
415
|
deps: D;
|
|
390
|
-
factory: (ctx: Lite.ExecutionContext<TInput
|
|
416
|
+
factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
|
|
417
|
+
tags?: Lite.Tagged<unknown>[];
|
|
418
|
+
}): Lite.Flow<TOutput, TInput>;
|
|
419
|
+
declare function flow<TOutput, TInput, const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | {
|
|
420
|
+
mode: string;
|
|
421
|
+
}>>(config: {
|
|
422
|
+
name?: string;
|
|
423
|
+
parse: Lite.Typed<TInput>;
|
|
424
|
+
deps: D;
|
|
425
|
+
factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>;
|
|
391
426
|
tags?: Lite.Tagged<unknown>[];
|
|
392
427
|
}): Lite.Flow<TOutput, TInput>;
|
|
393
428
|
/**
|
|
@@ -476,5 +511,5 @@ declare class ParseError extends Error {
|
|
|
476
511
|
//#region src/index.d.ts
|
|
477
512
|
declare const VERSION = "0.0.1";
|
|
478
513
|
//#endregion
|
|
479
|
-
export { type AtomState, type Lite, ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags };
|
|
514
|
+
export { type AtomState, type Lite, ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
|
|
480
515
|
//# sourceMappingURL=index.d.mts.map
|
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/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -7,6 +7,7 @@ const controllerDepSymbol = Symbol.for("@pumped-fn/lite/controller-dep");
|
|
|
7
7
|
const presetSymbol = Symbol.for("@pumped-fn/lite/preset");
|
|
8
8
|
const controllerSymbol = Symbol.for("@pumped-fn/lite/controller");
|
|
9
9
|
const tagExecutorSymbol = Symbol.for("@pumped-fn/lite/tag-executor");
|
|
10
|
+
const typedSymbol = Symbol.for("@pumped-fn/lite/typed");
|
|
10
11
|
|
|
11
12
|
//#endregion
|
|
12
13
|
//#region src/errors.ts
|
|
@@ -215,11 +216,30 @@ function isControllerDep(value) {
|
|
|
215
216
|
|
|
216
217
|
//#endregion
|
|
217
218
|
//#region src/flow.ts
|
|
219
|
+
/**
|
|
220
|
+
* Type marker for flow input without runtime parsing.
|
|
221
|
+
* Use this when you want typed input but don't need validation.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```typescript
|
|
225
|
+
* const myFlow = flow({
|
|
226
|
+
* parse: typed<{ name: string }>(),
|
|
227
|
+
* factory: (ctx) => {
|
|
228
|
+
* return ctx.input.name.toUpperCase()
|
|
229
|
+
* }
|
|
230
|
+
* })
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
function typed() {
|
|
234
|
+
return { [typedSymbol]: true };
|
|
235
|
+
}
|
|
218
236
|
function flow(config) {
|
|
237
|
+
const parse = config.parse;
|
|
238
|
+
const isTypedMarker = typeof parse === "object" && parse !== null && typedSymbol in parse;
|
|
219
239
|
return {
|
|
220
240
|
[flowSymbol]: true,
|
|
221
241
|
name: config.name,
|
|
222
|
-
parse:
|
|
242
|
+
parse: isTypedMarker ? void 0 : parse,
|
|
223
243
|
factory: config.factory,
|
|
224
244
|
deps: config.deps,
|
|
225
245
|
tags: config.tags
|
|
@@ -779,5 +799,5 @@ function createScope(options) {
|
|
|
779
799
|
const VERSION = "0.0.1";
|
|
780
800
|
|
|
781
801
|
//#endregion
|
|
782
|
-
export { ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags };
|
|
802
|
+
export { ParseError, VERSION, atom, atomSymbol, controller, controllerDepSymbol, controllerSymbol, createScope, flow, flowSymbol, isAtom, isControllerDep, isFlow, isPreset, isTag, isTagExecutor, isTagged, preset, presetSymbol, tag, tagExecutorSymbol, tagSymbol, taggedSymbol, tags, typed, typedSymbol };
|
|
783
803
|
//# sourceMappingURL=index.mjs.map
|
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","phase: \"tag\" | \"flow-input\"","label: string","cause: unknown","tags","result: T[]","tag","ctrl: Lite.Controller<T>","selector: (value: T) => S","eq: (prev: S, next: S) => boolean","atom: Lite.Atom<T>","scope: ScopeImpl","atom","ctx: Lite.ResolveContext","result: Record<string, unknown>","tags","flow","parsedInput: unknown"],"sources":["../src/symbols.ts","../src/errors.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":["export const atomSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/atom\")\nexport const flowSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/flow\")\nexport const tagSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag\")\nexport const taggedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tagged\")\nexport const controllerDepSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller-dep\")\nexport const presetSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/preset\")\nexport const controllerSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller\")\nexport const tagExecutorSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag-executor\")\n","export class ParseError extends Error {\n override readonly name = \"ParseError\"\n\n constructor(\n message: string,\n readonly phase: \"tag\" | \"flow-input\",\n readonly label: string,\n override readonly cause: unknown\n ) {\n super(message)\n }\n}\n","import { tagSymbol, taggedSymbol, tagExecutorSymbol } from \"./symbols\"\nimport { ParseError } from \"./errors\"\nimport type { Lite } from \"./types\"\n\nexport interface TagOptions<T, HasDefault extends boolean> {\n label: string\n default?: HasDefault extends true ? T : never\n parse?: (raw: unknown) => T\n}\n\n/**\n * Creates a metadata tag for attaching and retrieving typed values from Atoms and Flows.\n *\n * @param options - Configuration object with label and optional default value\n * @returns A Tag instance that can create tagged values and query them from sources\n *\n * @example\n * ```typescript\n * const nameTag = tag<string>({ label: \"name\" })\n * const myAtom = atom({\n * factory: (ctx) => \"value\",\n * tags: [nameTag(\"MyAtom\")]\n * })\n * ```\n */\nexport function tag<T>(options: { label: string }): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: {\n label: string\n parse: (raw: unknown) => T\n}): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n parse: (raw: unknown) => T\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: TagOptions<T, boolean>): Lite.Tag<T, boolean> {\n const key = Symbol.for(`@pumped-fn/lite/tag/${options.label}`)\n const hasDefault = \"default\" in options\n const defaultValue = hasDefault ? options.default : undefined\n const parse = options.parse\n\n function createTagged(value: T): Lite.Tagged<T> {\n let validatedValue = value\n if (parse) {\n try {\n validatedValue = parse(value)\n } catch (err) {\n throw new ParseError(\n `Failed to parse tag \"${options.label}\"`,\n \"tag\",\n options.label,\n err\n )\n }\n }\n return {\n [taggedSymbol]: true,\n key,\n value: validatedValue,\n }\n }\n\n function get(source: Lite.TagSource): T {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n throw new Error(`Tag \"${options.label}\" not found and has no default`)\n }\n\n function find(source: Lite.TagSource): T | undefined {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n return undefined\n }\n\n function collect(source: Lite.TagSource): T[] {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n const result: T[] = []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) result.push(tags[i]!.value as unknown as T)\n }\n return result\n }\n\n return Object.assign(createTagged, {\n [tagSymbol]: true as const,\n key,\n label: options.label,\n hasDefault,\n defaultValue,\n parse,\n get,\n find,\n collect,\n }) as unknown as Lite.Tag<T, boolean>\n}\n\n/**\n * Type guard to check if a value is a Tag.\n *\n * @param value - The value to check\n * @returns True if the value is a Tag, false otherwise\n *\n * @example\n * ```typescript\n * if (isTag(value)) {\n * const tagged = value(\"myValue\")\n * }\n * ```\n */\nexport function isTag(value: unknown): value is Lite.Tag<unknown, boolean> {\n return (\n typeof value === \"function\" &&\n (value as unknown as Record<symbol, unknown>)[tagSymbol] === true\n )\n}\n\n/**\n * Type guard to check if a value is a Tagged value.\n *\n * @param value - The value to check\n * @returns True if the value is a Tagged value, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagged(value)) {\n * console.log(value.key, value.value)\n * }\n * ```\n */\nexport function isTagged(value: unknown): value is Lite.Tagged<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[taggedSymbol] === true\n )\n}\n\n/**\n * Tag execution helpers for declaring how tags should be resolved from dependency sources.\n */\nexport const tags = {\n /**\n * Creates a required tag executor that throws if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that requires the tag to be present\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.required(nameTag) },\n * factory: (ctx, { name }) => `Hello ${name}`\n * })\n * ```\n */\n required<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"required\" }\n },\n\n /**\n * Creates an optional tag executor that returns undefined if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that allows the tag to be absent\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.optional(nameTag) },\n * factory: (ctx, { name }) => name ?? \"Anonymous\"\n * })\n * ```\n */\n optional<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T | undefined, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"optional\" }\n },\n\n /**\n * Creates a tag executor that collects all values for the given tag.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that returns an array of all matching tag values\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { names: tags.all(nameTag) },\n * factory: (ctx, { names }) => names.join(\", \")\n * })\n * ```\n */\n all<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T[], T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"all\" }\n },\n}\n\n/**\n * Type guard to check if a value is a TagExecutor.\n *\n * @param value - The value to check\n * @returns True if the value is a TagExecutor, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagExecutor(value)) {\n * console.log(value.mode, value.tag)\n * }\n * ```\n */\nexport function isTagExecutor(value: unknown): value is Lite.TagExecutor<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n tagExecutorSymbol in value\n )\n}\n","import { atomSymbol, controllerDepSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface AtomConfig<T, D extends Record<string, Lite.Dependency>> {\n deps?: D\n factory: Lite.AtomFactory<T, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a long-lived dependency that can be resolved and reused within a scope.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns An Atom instance that can be resolved to produce a value of type T\n *\n * @example\n * ```typescript\n * const dbAtom = atom({\n * factory: async (ctx) => createDatabase()\n * })\n * ```\n */\nexport function atom<T>(config: {\n deps?: undefined\n factory: (ctx: Lite.ResolveContext) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<\n T,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<T, D extends Record<string, Lite.Dependency>>(\n config: AtomConfig<T, D>\n): Lite.Atom<T> {\n return {\n [atomSymbol]: true,\n factory: config.factory as unknown as Lite.AtomFactory<T, Record<string, Lite.Dependency>>,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is an Atom.\n *\n * @param value - The value to check\n * @returns True if the value is an Atom, false otherwise\n *\n * @example\n * ```typescript\n * if (isAtom(value)) {\n * await scope.resolve(value)\n * }\n * ```\n */\nexport function isAtom(value: unknown): value is Lite.Atom<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[atomSymbol] === true\n )\n}\n\n/**\n * Wraps an Atom to receive a Controller instead of the resolved value.\n * The Controller provides full lifecycle control: get, resolve, release, invalidate, and subscribe.\n *\n * @param atom - The Atom to wrap\n * @returns A ControllerDep that resolves to a Controller for the Atom\n *\n * @example\n * ```typescript\n * const configAtom = atom({ factory: () => fetchConfig() })\n * const serverAtom = atom({\n * deps: { config: controller(configAtom) },\n * factory: (ctx, { config }) => {\n * const unsub = config.on(() => ctx.invalidate())\n * ctx.cleanup(unsub)\n * return createServer(config.get().port)\n * }\n * })\n * ```\n */\nexport function controller<T>(atom: Lite.Atom<T>): Lite.ControllerDep<T> {\n return {\n [controllerDepSymbol]: true,\n atom,\n }\n}\n\n/**\n * Type guard to check if a value is a ControllerDep wrapper.\n *\n * @param value - The value to check\n * @returns True if the value is a ControllerDep wrapper, false otherwise\n *\n * @example\n * ```typescript\n * if (isControllerDep(dep)) {\n * const ctrl = scope.controller(dep.atom)\n * }\n * ```\n */\nexport function isControllerDep(value: unknown): value is Lite.ControllerDep<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[controllerDepSymbol] === true\n )\n}\n","import { flowSymbol } 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 name?: string\n parse?: (raw: unknown) => MaybePromise<TInput>\n deps?: D\n factory: Lite.FlowFactory<TOutput, TInput, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a short-lived execution unit that processes input and produces output.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns A Flow instance that can be executed within an execution context\n *\n * @example\n * ```typescript\n * const processUser = flow({\n * factory: async (ctx) => {\n * const userId = ctx.input\n * return await fetchUser(userId)\n * }\n * })\n * ```\n */\nexport function flow<TOutput>(config: {\n name?: string\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, unknown>\n\nexport function flow<TOutput, TInput>(config: {\n name?: string\n parse: (raw: unknown) => MaybePromise<TInput>\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext<TInput>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n deps: D\n factory: (ctx: Lite.ExecutionContext, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, unknown>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse: (raw: unknown) => MaybePromise<TInput>\n deps: D\n factory: (ctx: Lite.ExecutionContext<TInput>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n>(config: FlowConfig<TOutput, TInput, D>): Lite.Flow<TOutput, TInput> {\n return {\n [flowSymbol]: true,\n name: config.name,\n parse: config.parse,\n factory: config.factory as unknown as Lite.FlowFactory<\n TOutput,\n TInput,\n Record<string, Lite.Dependency>\n >,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is a Flow.\n *\n * @param value - The value to check\n * @returns True if the value is a Flow, false otherwise\n *\n * @example\n * ```typescript\n * if (isFlow(value)) {\n * await ctx.exec({ flow: value, input: data })\n * }\n * ```\n */\nexport function isFlow(value: unknown): value is Lite.Flow<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[flowSymbol] === true\n )\n}\n","import { presetSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\n/**\n * Creates a preset value for an Atom, overriding its factory within a scope.\n *\n * @param atom - The Atom to preset\n * @param value - The preset value (can be a direct value or another Atom)\n * @returns A Preset instance to be used in scope configuration\n *\n * @example\n * ```typescript\n * const scope = await createScope({\n * presets: [preset(dbAtom, mockDatabase)]\n * })\n * ```\n */\nexport function preset<T>(\n atom: Lite.Atom<T>,\n value: T | Lite.Atom<T>\n): Lite.Preset<T> {\n return {\n [presetSymbol]: true,\n atom,\n value,\n }\n}\n\n/**\n * Type guard to check if a value is a Preset.\n *\n * @param value - The value to check\n * @returns True if the value is a Preset, false otherwise\n *\n * @example\n * ```typescript\n * if (isPreset(value)) {\n * console.log(value.atom, value.value)\n * }\n * ```\n */\nexport function isPreset(value: unknown): value is Lite.Preset<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[presetSymbol] === true\n )\n}\n","import { controllerSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise, AtomState } from \"./types\"\nimport { isAtom, isControllerDep } from \"./atom\"\nimport { ParseError } from \"./errors\"\n\ntype ListenerEvent = 'resolving' | 'resolved' | '*'\n\nclass DataStoreImpl implements Lite.DataStore {\n private readonly map = new Map<symbol, unknown>()\n\n get<T, H extends boolean>(tag: Lite.Tag<T, H>): H extends true ? T : T | undefined {\n if (this.map.has(tag.key)) {\n return this.map.get(tag.key) as T\n }\n if (tag.hasDefault) {\n return tag.defaultValue as T\n }\n return undefined as H extends true ? T : T | undefined\n }\n\n set<T>(tag: Lite.Tag<T, boolean>, value: T): void {\n this.map.set(tag.key, value)\n }\n\n has(tag: Lite.Tag<unknown, boolean>): boolean {\n return this.map.has(tag.key)\n }\n\n delete(tag: Lite.Tag<unknown, boolean>): boolean {\n return this.map.delete(tag.key)\n }\n\n clear(): void {\n this.map.clear()\n }\n}\n\ninterface AtomEntry<T> {\n state: AtomState\n value?: T\n hasValue: boolean\n error?: Error\n cleanups: (() => MaybePromise<void>)[]\n listeners: Map<ListenerEvent, Set<() => void>>\n pendingInvalidate: boolean\n data?: Lite.DataStore\n}\n\nclass SelectHandleImpl<T, S> implements Lite.SelectHandle<S> {\n private listeners = new Set<() => void>()\n private currentValue: S\n private ctrlUnsub: (() => void) | null = null\n\n constructor(\n private ctrl: Lite.Controller<T>,\n private selector: (value: T) => S,\n private eq: (prev: S, next: S) => boolean\n ) {\n if (ctrl.state !== 'resolved') {\n throw new Error(\"Cannot select from unresolved atom\")\n }\n\n this.currentValue = selector(ctrl.get())\n\n this.ctrlUnsub = ctrl.on('resolved', () => {\n const nextValue = this.selector(this.ctrl.get())\n if (!this.eq(this.currentValue, nextValue)) {\n this.currentValue = nextValue\n this.notifyListeners()\n }\n })\n }\n\n get(): S {\n return this.currentValue\n }\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n\n return () => {\n this.listeners.delete(listener)\n if (this.listeners.size === 0) {\n this.cleanup()\n }\n }\n }\n\n private notifyListeners(): void {\n for (const listener of this.listeners) {\n listener()\n }\n }\n\n private cleanup(): void {\n this.ctrlUnsub?.()\n this.ctrlUnsub = null\n this.listeners.clear()\n }\n}\n\nclass ControllerImpl<T> implements Lite.Controller<T> {\n readonly [controllerSymbol] = true\n\n constructor(\n private atom: Lite.Atom<T>,\n private scope: ScopeImpl\n ) {}\n\n get state(): AtomState {\n const entry = this.scope.getEntry(this.atom)\n return entry?.state ?? 'idle'\n }\n\n get(): T {\n const entry = this.scope.getEntry(this.atom)\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n if (entry.state === 'resolving' && entry.hasValue) {\n return entry.value as T\n }\n if (entry.state === 'resolved' && entry.hasValue) {\n return entry.value as T\n }\n throw new Error(\"Atom not resolved\")\n }\n\n async resolve(): Promise<T> {\n return this.scope.resolve(this.atom)\n }\n\n async release(): Promise<void> {\n return this.scope.release(this.atom)\n }\n\n invalidate(): void {\n this.scope.invalidate(this.atom)\n }\n\n on(event: ListenerEvent, listener: () => void): () => void {\n return this.scope.addListener(this.atom, event, listener)\n }\n}\n\nclass ScopeImpl implements Lite.Scope {\n private cache = new Map<Lite.Atom<unknown>, AtomEntry<unknown>>()\n private presets = new Map<Lite.Atom<unknown>, unknown | Lite.Atom<unknown>>()\n private resolving = new Set<Lite.Atom<unknown>>()\n private pending = new Map<Lite.Atom<unknown>, Promise<unknown>>()\n private stateListeners = new Map<AtomState, Map<Lite.Atom<unknown>, Set<() => void>>>()\n private invalidationQueue = new Set<Lite.Atom<unknown>>()\n private invalidationScheduled = false\n private invalidationChain: Set<Lite.Atom<unknown>> | null = null\n private chainPromise: Promise<void> | null = null\n private initialized = false\n readonly extensions: Lite.Extension[]\n readonly tags: Lite.Tagged<unknown>[]\n readonly ready: Promise<void>\n\n private scheduleInvalidation<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry || entry.state === \"idle\") return\n\n if (entry.state === \"resolving\") {\n entry.pendingInvalidate = true\n return\n }\n\n this.invalidationQueue.add(atom)\n\n if (!this.chainPromise) {\n this.invalidationChain = new Set()\n this.invalidationScheduled = true\n this.chainPromise = new Promise<void>((resolve, reject) => {\n queueMicrotask(() => {\n this.processInvalidationChain().then(resolve).catch(reject)\n })\n })\n }\n }\n\n private async processInvalidationChain(): Promise<void> {\n try {\n while (this.invalidationQueue.size > 0) {\n const atom = this.invalidationQueue.values().next().value as Lite.Atom<unknown>\n this.invalidationQueue.delete(atom)\n\n if (this.invalidationChain!.has(atom)) {\n const chainAtoms = Array.from(this.invalidationChain!)\n chainAtoms.push(atom)\n const path = chainAtoms\n .map(a => a.factory?.name || \"<anonymous>\")\n .join(\" → \")\n throw new Error(`Infinite invalidation loop detected: ${path}`)\n }\n\n this.invalidationChain!.add(atom)\n await this.doInvalidateSequential(atom)\n }\n } finally {\n this.invalidationChain = null\n this.chainPromise = null\n this.invalidationScheduled = false\n }\n }\n\n constructor(options?: Lite.ScopeOptions) {\n this.extensions = options?.extensions ?? []\n this.tags = options?.tags ?? []\n\n for (const p of options?.presets ?? []) {\n this.presets.set(p.atom, p.value)\n }\n\n this.ready = this.init()\n }\n\n private async init(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.init) {\n await ext.init(this)\n }\n }\n this.initialized = true\n }\n\n getEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> | undefined {\n return this.cache.get(atom) as AtomEntry<T> | undefined\n }\n\n private getOrCreateEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> {\n let entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) {\n entry = {\n state: 'idle',\n hasValue: false,\n cleanups: [],\n listeners: new Map([\n ['resolving', new Set()],\n ['resolved', new Set()],\n ['*', new Set()],\n ]),\n pendingInvalidate: false,\n }\n this.cache.set(atom, entry as AtomEntry<unknown>)\n }\n return entry\n }\n\n addListener<T>(atom: Lite.Atom<T>, event: ListenerEvent, listener: () => void): () => void {\n const entry = this.getOrCreateEntry(atom)\n const listeners = entry.listeners.get(event)!\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }\n\n private notifyListeners<T>(atom: Lite.Atom<T>, event: 'resolving' | 'resolved'): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const eventListeners = entry.listeners.get(event)\n if (eventListeners) {\n for (const listener of eventListeners) {\n listener()\n }\n }\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private notifyAllListeners<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private emitStateChange(state: AtomState, atom: Lite.Atom<unknown>): void {\n const stateMap = this.stateListeners.get(state)\n if (stateMap) {\n const listeners = stateMap.get(atom)\n if (listeners) {\n for (const listener of listeners) {\n listener()\n }\n }\n }\n }\n\n on(event: AtomState, atom: Lite.Atom<unknown>, listener: () => void): () => void {\n let stateMap = this.stateListeners.get(event)\n if (!stateMap) {\n stateMap = new Map()\n this.stateListeners.set(event, stateMap)\n }\n let listeners = stateMap.get(atom)\n if (!listeners) {\n listeners = new Set()\n stateMap.set(atom, listeners)\n }\n listeners.add(listener)\n\n const capturedStateMap = stateMap\n const capturedListeners = listeners\n\n return () => {\n capturedListeners.delete(listener)\n if (capturedListeners.size === 0) {\n capturedStateMap.delete(atom)\n if (capturedStateMap.size === 0) {\n this.stateListeners.delete(event)\n }\n }\n }\n }\n\n async resolve<T>(atom: Lite.Atom<T>): Promise<T> {\n if (!this.initialized) {\n await this.ready\n }\n\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (entry?.state === 'resolved') {\n return entry.value as T\n }\n\n const pendingPromise = this.pending.get(atom)\n if (pendingPromise) {\n return pendingPromise as Promise<T>\n }\n\n if (this.resolving.has(atom)) {\n throw new Error(\"Circular dependency detected\")\n }\n\n const presetValue = this.presets.get(atom)\n if (presetValue !== undefined) {\n if (isAtom(presetValue)) {\n return this.resolve(presetValue as Lite.Atom<T>)\n }\n const newEntry = this.getOrCreateEntry(atom)\n newEntry.state = 'resolved'\n newEntry.value = presetValue as T\n newEntry.hasValue = true\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n return newEntry.value\n }\n\n this.resolving.add(atom)\n\n const promise = this.doResolve(atom)\n this.pending.set(atom, promise as Promise<unknown>)\n\n try {\n return await promise\n } finally {\n this.resolving.delete(atom)\n this.pending.delete(atom)\n }\n }\n\n private async doResolve<T>(atom: Lite.Atom<T>): Promise<T> {\n const entry = this.getOrCreateEntry(atom)\n\n const wasResolving = entry.state === 'resolving'\n if (!wasResolving) {\n entry.state = 'resolving'\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom, 'resolving')\n }\n\n const resolvedDeps = await this.resolveDeps(atom.deps)\n\n const ctx: Lite.ResolveContext = {\n cleanup: (fn) => entry.cleanups.push(fn),\n invalidate: () => {\n this.scheduleInvalidation(atom)\n },\n scope: this,\n get data() {\n if (!entry.data) {\n entry.data = new DataStoreImpl()\n }\n return entry.data\n },\n }\n\n const factory = atom.factory as (\n ctx: Lite.ResolveContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doResolve = async () => {\n if (atom.deps && Object.keys(atom.deps).length > 0) {\n return factory(ctx, resolvedDeps)\n } else {\n return factory(ctx)\n }\n }\n\n try {\n const value = await this.applyResolveExtensions(atom, doResolve)\n entry.state = 'resolved'\n entry.value = value\n entry.hasValue = true\n entry.error = undefined\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n }\n\n return value\n } catch (err) {\n entry.state = 'failed'\n entry.error = err instanceof Error ? err : new Error(String(err))\n entry.value = undefined\n entry.hasValue = false\n this.emitStateChange('failed', atom)\n this.notifyAllListeners(atom)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n }\n\n throw entry.error\n }\n }\n\n private async applyResolveExtensions<T>(\n atom: Lite.Atom<T>,\n doResolve: () => Promise<T>\n ): Promise<T> {\n let next = doResolve\n\n for (let i = this.extensions.length - 1; i >= 0; i--) {\n const ext = this.extensions[i]\n if (ext?.wrapResolve) {\n const currentNext = next\n next = ext.wrapResolve.bind(ext, currentNext, atom, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n async resolveDeps(\n deps: Record<string, Lite.Dependency> | undefined,\n tagSource?: Lite.Tagged<unknown>[]\n ): Promise<Record<string, unknown>> {\n if (!deps) return {}\n\n const result: Record<string, unknown> = {}\n const tags = tagSource ?? this.tags\n\n for (const [key, dep] of Object.entries(deps)) {\n if (isAtom(dep)) {\n result[key] = await this.resolve(dep)\n } else if (isControllerDep(dep)) {\n result[key] = new ControllerImpl(dep.atom, this)\n } else if (tagExecutorSymbol in (dep as object)) {\n const tagExecutor = dep as Lite.TagExecutor<unknown, boolean>\n\n switch (tagExecutor.mode) {\n case \"required\":\n result[key] = tagExecutor.tag.get(tags)\n break\n case \"optional\":\n result[key] = tagExecutor.tag.find(tags)\n break\n case \"all\":\n result[key] = tagExecutor.tag.collect(tags)\n break\n }\n }\n }\n\n return result\n }\n\n controller<T>(atom: Lite.Atom<T>): Lite.Controller<T> {\n return new ControllerImpl(atom, this)\n }\n\n select<T, S>(\n atom: Lite.Atom<T>,\n selector: (value: T) => S,\n options?: Lite.SelectOptions<S>\n ): Lite.SelectHandle<S> {\n const ctrl = this.controller(atom)\n const eq = options?.eq ?? ((a, b) => a === b)\n return new SelectHandleImpl(ctrl, selector, eq)\n }\n\n invalidate<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n if (entry.state === 'idle') return\n\n if (entry.state === 'resolving') {\n entry.pendingInvalidate = true\n return\n }\n\n this.scheduleInvalidation(atom)\n }\n\n private async doInvalidateSequential<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) return\n if (entry.state === \"idle\") return\n\n const previousValue = entry.value\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n entry.cleanups = []\n\n entry.state = \"resolving\"\n entry.value = previousValue\n entry.error = undefined\n entry.pendingInvalidate = false\n this.pending.delete(atom)\n this.resolving.delete(atom)\n this.emitStateChange(\"resolving\", atom)\n this.notifyListeners(atom, \"resolving\")\n\n await this.resolve(atom)\n }\n\n async release<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n\n this.cache.delete(atom)\n }\n\n async dispose(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.dispose) {\n await ext.dispose(this)\n }\n }\n\n const atoms = Array.from(this.cache.keys())\n for (const atom of atoms) {\n await this.release(atom as Lite.Atom<unknown>)\n }\n }\n\n async flush(): Promise<void> {\n if (this.chainPromise) {\n await this.chainPromise\n }\n }\n\n createContext(options?: Lite.CreateContextOptions): Lite.ExecutionContext {\n return new ExecutionContextImpl(this, options)\n }\n}\n\nclass ExecutionContextImpl implements Lite.ExecutionContext {\n private cleanups: (() => MaybePromise<void>)[] = []\n private closed = false\n private _input: unknown = undefined\n private readonly baseTags: Lite.Tagged<unknown>[]\n\n constructor(\n readonly scope: ScopeImpl,\n options?: Lite.CreateContextOptions\n ) {\n const ctxTags = options?.tags\n this.baseTags = ctxTags?.length\n ? [...ctxTags, ...scope.tags]\n : scope.tags\n }\n\n get input(): unknown {\n return this._input\n }\n\n async exec<T>(options: Lite.ExecFlowOptions<T> | Lite.ExecFnOptions<T>): Promise<T> {\n if (this.closed) {\n throw new Error(\"ExecutionContext is closed\")\n }\n\n if (\"flow\" in options) {\n return this.execFlow(options)\n } else {\n return this.execFn(options)\n }\n }\n\n private async execFlow<T>(options: Lite.ExecFlowOptions<T>): Promise<T> {\n const { flow, input, tags: execTags, name: execName } = options\n\n const hasExtraTags = (execTags?.length ?? 0) > 0 || (flow.tags?.length ?? 0) > 0\n const allTags = hasExtraTags\n ? [...(execTags ?? []), ...this.baseTags, ...(flow.tags ?? [])]\n : this.baseTags\n\n const resolvedDeps = await this.scope.resolveDeps(flow.deps, allTags)\n\n let parsedInput: unknown = input\n if (flow.parse) {\n const label = execName ?? flow.name ?? \"anonymous\"\n try {\n parsedInput = await flow.parse(input)\n } catch (err) {\n throw new ParseError(\n `Failed to parse flow input \"${label}\"`,\n \"flow-input\",\n label,\n err\n )\n }\n }\n\n this._input = parsedInput\n\n const factory = flow.factory as unknown as (\n ctx: Lite.ExecutionContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doExec = async (): Promise<T> => {\n if (flow.deps && Object.keys(flow.deps).length > 0) {\n return factory(this, resolvedDeps)\n } else {\n return factory(this)\n }\n }\n\n return this.applyExecExtensions(flow, doExec)\n }\n\n private execFn<T>(options: Lite.ExecFnOptions<T>): Promise<T> {\n const { fn, params } = options\n const doExec = () => Promise.resolve(fn(...params))\n return this.applyExecExtensions(fn, doExec)\n }\n\n private async applyExecExtensions<T>(\n target: Lite.Flow<T, unknown> | ((...args: unknown[]) => MaybePromise<T>),\n doExec: () => Promise<T>\n ): Promise<T> {\n let next = doExec\n\n for (let i = this.scope.extensions.length - 1; i >= 0; i--) {\n const ext = this.scope.extensions[i]\n if (ext?.wrapExec) {\n const currentNext = next\n next = ext.wrapExec.bind(ext, currentNext, target, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n onClose(fn: () => MaybePromise<void>): void {\n this.cleanups.push(fn)\n }\n\n async close(): Promise<void> {\n if (this.closed) return\n\n this.closed = true\n\n for (let i = this.cleanups.length - 1; i >= 0; i--) {\n const cleanup = this.cleanups[i]\n if (cleanup) await cleanup()\n }\n }\n}\n\n/**\n * Creates a DI container that manages Atom resolution, caching, and lifecycle.\n *\n * The scope is returned synchronously, with a `ready` promise that resolves\n * when all extensions have been initialized. Resolution methods automatically\n * wait for `ready` before proceeding.\n *\n * @param options - Optional configuration for extensions, presets, and tags\n * @returns A Scope instance with a `ready` promise for extension initialization\n *\n * @example\n * ```typescript\n * const scope = createScope({\n * extensions: [loggingExtension],\n * presets: [preset(dbAtom, testDb)]\n * })\n *\n * // Option 1: resolve() waits for ready internally\n * const db = await scope.resolve(dbAtom)\n *\n * // Option 2: explicit wait\n * await scope.ready\n * const db = await scope.resolve(dbAtom)\n * ```\n */\nexport function createScope(options?: Lite.ScopeOptions): Lite.Scope {\n return new ScopeImpl(options)\n}\n","export type { Lite, AtomState } from \"./types\"\nexport {\n atomSymbol,\n flowSymbol,\n tagSymbol,\n taggedSymbol,\n controllerDepSymbol,\n presetSymbol,\n controllerSymbol,\n tagExecutorSymbol,\n} 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\"\nexport { ParseError } from \"./errors\"\n\nexport const VERSION = \"0.0.1\"\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["atomSymbol: unique symbol","flowSymbol: unique symbol","tagSymbol: unique symbol","taggedSymbol: unique symbol","controllerDepSymbol: unique symbol","presetSymbol: unique symbol","controllerSymbol: unique symbol","tagExecutorSymbol: unique symbol","typedSymbol: unique symbol","phase: \"tag\" | \"flow-input\"","label: string","cause: unknown","tags","result: T[]","tag","ctrl: Lite.Controller<T>","selector: (value: T) => S","eq: (prev: S, next: S) => boolean","atom: Lite.Atom<T>","scope: ScopeImpl","atom","ctx: Lite.ResolveContext","result: Record<string, unknown>","tags","flow","parsedInput: unknown"],"sources":["../src/symbols.ts","../src/errors.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":["export const atomSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/atom\")\nexport const flowSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/flow\")\nexport const tagSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag\")\nexport const taggedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tagged\")\nexport const controllerDepSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller-dep\")\nexport const presetSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/preset\")\nexport const controllerSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller\")\nexport const tagExecutorSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag-executor\")\nexport const typedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/typed\")\n","export class ParseError extends Error {\n override readonly name = \"ParseError\"\n\n constructor(\n message: string,\n readonly phase: \"tag\" | \"flow-input\",\n readonly label: string,\n override readonly cause: unknown\n ) {\n super(message)\n }\n}\n","import { tagSymbol, taggedSymbol, tagExecutorSymbol } from \"./symbols\"\nimport { ParseError } from \"./errors\"\nimport type { Lite } from \"./types\"\n\nexport interface TagOptions<T, HasDefault extends boolean> {\n label: string\n default?: HasDefault extends true ? T : never\n parse?: (raw: unknown) => T\n}\n\n/**\n * Creates a metadata tag for attaching and retrieving typed values from Atoms and Flows.\n *\n * @param options - Configuration object with label and optional default value\n * @returns A Tag instance that can create tagged values and query them from sources\n *\n * @example\n * ```typescript\n * const nameTag = tag<string>({ label: \"name\" })\n * const myAtom = atom({\n * factory: (ctx) => \"value\",\n * tags: [nameTag(\"MyAtom\")]\n * })\n * ```\n */\nexport function tag<T>(options: { label: string }): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: {\n label: string\n parse: (raw: unknown) => T\n}): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n parse: (raw: unknown) => T\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: TagOptions<T, boolean>): Lite.Tag<T, boolean> {\n const key = Symbol.for(`@pumped-fn/lite/tag/${options.label}`)\n const hasDefault = \"default\" in options\n const defaultValue = hasDefault ? options.default : undefined\n const parse = options.parse\n\n function createTagged(value: T): Lite.Tagged<T> {\n let validatedValue = value\n if (parse) {\n try {\n validatedValue = parse(value)\n } catch (err) {\n throw new ParseError(\n `Failed to parse tag \"${options.label}\"`,\n \"tag\",\n options.label,\n err\n )\n }\n }\n return {\n [taggedSymbol]: true,\n key,\n value: validatedValue,\n }\n }\n\n function get(source: Lite.TagSource): T {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n throw new Error(`Tag \"${options.label}\" not found and has no default`)\n }\n\n function find(source: Lite.TagSource): T | undefined {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n return undefined\n }\n\n function collect(source: Lite.TagSource): T[] {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n const result: T[] = []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) result.push(tags[i]!.value as unknown as T)\n }\n return result\n }\n\n return Object.assign(createTagged, {\n [tagSymbol]: true as const,\n key,\n label: options.label,\n hasDefault,\n defaultValue,\n parse,\n get,\n find,\n collect,\n }) as unknown as Lite.Tag<T, boolean>\n}\n\n/**\n * Type guard to check if a value is a Tag.\n *\n * @param value - The value to check\n * @returns True if the value is a Tag, false otherwise\n *\n * @example\n * ```typescript\n * if (isTag(value)) {\n * const tagged = value(\"myValue\")\n * }\n * ```\n */\nexport function isTag(value: unknown): value is Lite.Tag<unknown, boolean> {\n return (\n typeof value === \"function\" &&\n (value as unknown as Record<symbol, unknown>)[tagSymbol] === true\n )\n}\n\n/**\n * Type guard to check if a value is a Tagged value.\n *\n * @param value - The value to check\n * @returns True if the value is a Tagged value, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagged(value)) {\n * console.log(value.key, value.value)\n * }\n * ```\n */\nexport function isTagged(value: unknown): value is Lite.Tagged<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[taggedSymbol] === true\n )\n}\n\n/**\n * Tag execution helpers for declaring how tags should be resolved from dependency sources.\n */\nexport const tags = {\n /**\n * Creates a required tag executor that throws if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that requires the tag to be present\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.required(nameTag) },\n * factory: (ctx, { name }) => `Hello ${name}`\n * })\n * ```\n */\n required<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"required\" }\n },\n\n /**\n * Creates an optional tag executor that returns undefined if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that allows the tag to be absent\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.optional(nameTag) },\n * factory: (ctx, { name }) => name ?? \"Anonymous\"\n * })\n * ```\n */\n optional<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T | undefined, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"optional\" }\n },\n\n /**\n * Creates a tag executor that collects all values for the given tag.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that returns an array of all matching tag values\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { names: tags.all(nameTag) },\n * factory: (ctx, { names }) => names.join(\", \")\n * })\n * ```\n */\n all<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T[], T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"all\" }\n },\n}\n\n/**\n * Type guard to check if a value is a TagExecutor.\n *\n * @param value - The value to check\n * @returns True if the value is a TagExecutor, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagExecutor(value)) {\n * console.log(value.mode, value.tag)\n * }\n * ```\n */\nexport function isTagExecutor(value: unknown): value is Lite.TagExecutor<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n tagExecutorSymbol in value\n )\n}\n","import { atomSymbol, controllerDepSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface AtomConfig<T, D extends Record<string, Lite.Dependency>> {\n deps?: D\n factory: Lite.AtomFactory<T, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a long-lived dependency that can be resolved and reused within a scope.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns An Atom instance that can be resolved to produce a value of type T\n *\n * @example\n * ```typescript\n * const dbAtom = atom({\n * factory: async (ctx) => createDatabase()\n * })\n * ```\n */\nexport function atom<T>(config: {\n deps?: undefined\n factory: (ctx: Lite.ResolveContext) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<\n T,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<T, D extends Record<string, Lite.Dependency>>(\n config: AtomConfig<T, D>\n): Lite.Atom<T> {\n return {\n [atomSymbol]: true,\n factory: config.factory as unknown as Lite.AtomFactory<T, Record<string, Lite.Dependency>>,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is an Atom.\n *\n * @param value - The value to check\n * @returns True if the value is an Atom, false otherwise\n *\n * @example\n * ```typescript\n * if (isAtom(value)) {\n * await scope.resolve(value)\n * }\n * ```\n */\nexport function isAtom(value: unknown): value is Lite.Atom<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[atomSymbol] === true\n )\n}\n\n/**\n * Wraps an Atom to receive a Controller instead of the resolved value.\n * The Controller provides full lifecycle control: get, resolve, release, invalidate, and subscribe.\n *\n * @param atom - The Atom to wrap\n * @returns A ControllerDep that resolves to a Controller for the Atom\n *\n * @example\n * ```typescript\n * const configAtom = atom({ factory: () => fetchConfig() })\n * const serverAtom = atom({\n * deps: { config: controller(configAtom) },\n * factory: (ctx, { config }) => {\n * const unsub = config.on(() => ctx.invalidate())\n * ctx.cleanup(unsub)\n * return createServer(config.get().port)\n * }\n * })\n * ```\n */\nexport function controller<T>(atom: Lite.Atom<T>): Lite.ControllerDep<T> {\n return {\n [controllerDepSymbol]: true,\n atom,\n }\n}\n\n/**\n * Type guard to check if a value is a ControllerDep wrapper.\n *\n * @param value - The value to check\n * @returns True if the value is a ControllerDep wrapper, false otherwise\n *\n * @example\n * ```typescript\n * if (isControllerDep(dep)) {\n * const ctrl = scope.controller(dep.atom)\n * }\n * ```\n */\nexport function isControllerDep(value: unknown): value is Lite.ControllerDep<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[controllerDepSymbol] === true\n )\n}\n","import { flowSymbol, typedSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\n/**\n * Type marker for flow input without runtime parsing.\n * Use this when you want typed input but don't need validation.\n *\n * @example\n * ```typescript\n * const myFlow = flow({\n * parse: typed<{ name: string }>(),\n * factory: (ctx) => {\n * return ctx.input.name.toUpperCase()\n * }\n * })\n * ```\n */\nexport function typed<T>(): Lite.Typed<T> {\n return { [typedSymbol]: true }\n}\n\nexport interface FlowConfig<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n> {\n name?: string\n parse?: ((raw: unknown) => MaybePromise<TInput>) | Lite.Typed<TInput>\n deps?: D\n factory: Lite.FlowFactory<TOutput, TInput, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a short-lived execution unit that processes input and produces output.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns A Flow instance that can be executed within an execution context\n *\n * @example\n * ```typescript\n * const processUser = flow({\n * factory: async (ctx) => {\n * const userId = ctx.input\n * return await fetchUser(userId)\n * }\n * })\n * ```\n */\nexport function flow<TOutput>(config: {\n name?: string\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, unknown>\n\nexport function flow<TOutput, TInput>(config: {\n name?: string\n parse: (raw: unknown) => MaybePromise<TInput>\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<TOutput, TInput>(config: {\n name?: string\n parse: Lite.Typed<TInput>\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n deps: D\n factory: (ctx: Lite.ExecutionContext, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, unknown>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse: (raw: unknown) => MaybePromise<TInput>\n deps: D\n factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n name?: string\n parse: Lite.Typed<TInput>\n deps: D\n factory: (ctx: Lite.ExecutionContext<NoInfer<TInput>>, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n>(config: FlowConfig<TOutput, TInput, D>): Lite.Flow<TOutput, TInput> {\n const parse = config.parse\n const isTypedMarker =\n typeof parse === \"object\" && parse !== null && typedSymbol in parse\n\n return {\n [flowSymbol]: true,\n name: config.name,\n parse: isTypedMarker\n ? undefined\n : (parse as ((raw: unknown) => MaybePromise<TInput>) | undefined),\n factory: config.factory as unknown as Lite.FlowFactory<\n TOutput,\n TInput,\n Record<string, Lite.Dependency>\n >,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is a Flow.\n *\n * @param value - The value to check\n * @returns True if the value is a Flow, false otherwise\n *\n * @example\n * ```typescript\n * if (isFlow(value)) {\n * await ctx.exec({ flow: value, input: data })\n * }\n * ```\n */\nexport function isFlow(value: unknown): value is Lite.Flow<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[flowSymbol] === true\n )\n}\n","import { presetSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\n/**\n * Creates a preset value for an Atom, overriding its factory within a scope.\n *\n * @param atom - The Atom to preset\n * @param value - The preset value (can be a direct value or another Atom)\n * @returns A Preset instance to be used in scope configuration\n *\n * @example\n * ```typescript\n * const scope = await createScope({\n * presets: [preset(dbAtom, mockDatabase)]\n * })\n * ```\n */\nexport function preset<T>(\n atom: Lite.Atom<T>,\n value: T | Lite.Atom<T>\n): Lite.Preset<T> {\n return {\n [presetSymbol]: true,\n atom,\n value,\n }\n}\n\n/**\n * Type guard to check if a value is a Preset.\n *\n * @param value - The value to check\n * @returns True if the value is a Preset, false otherwise\n *\n * @example\n * ```typescript\n * if (isPreset(value)) {\n * console.log(value.atom, value.value)\n * }\n * ```\n */\nexport function isPreset(value: unknown): value is Lite.Preset<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[presetSymbol] === true\n )\n}\n","import { controllerSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise, AtomState } from \"./types\"\nimport { isAtom, isControllerDep } from \"./atom\"\nimport { ParseError } from \"./errors\"\n\ntype ListenerEvent = 'resolving' | 'resolved' | '*'\n\nclass DataStoreImpl implements Lite.DataStore {\n private readonly map = new Map<symbol, unknown>()\n\n get<T, H extends boolean>(tag: Lite.Tag<T, H>): H extends true ? T : T | undefined {\n if (this.map.has(tag.key)) {\n return this.map.get(tag.key) as T\n }\n if (tag.hasDefault) {\n return tag.defaultValue as T\n }\n return undefined as H extends true ? T : T | undefined\n }\n\n set<T>(tag: Lite.Tag<T, boolean>, value: T): void {\n this.map.set(tag.key, value)\n }\n\n has(tag: Lite.Tag<unknown, boolean>): boolean {\n return this.map.has(tag.key)\n }\n\n delete(tag: Lite.Tag<unknown, boolean>): boolean {\n return this.map.delete(tag.key)\n }\n\n clear(): void {\n this.map.clear()\n }\n}\n\ninterface AtomEntry<T> {\n state: AtomState\n value?: T\n hasValue: boolean\n error?: Error\n cleanups: (() => MaybePromise<void>)[]\n listeners: Map<ListenerEvent, Set<() => void>>\n pendingInvalidate: boolean\n data?: Lite.DataStore\n}\n\nclass SelectHandleImpl<T, S> implements Lite.SelectHandle<S> {\n private listeners = new Set<() => void>()\n private currentValue: S\n private ctrlUnsub: (() => void) | null = null\n\n constructor(\n private ctrl: Lite.Controller<T>,\n private selector: (value: T) => S,\n private eq: (prev: S, next: S) => boolean\n ) {\n if (ctrl.state !== 'resolved') {\n throw new Error(\"Cannot select from unresolved atom\")\n }\n\n this.currentValue = selector(ctrl.get())\n\n this.ctrlUnsub = ctrl.on('resolved', () => {\n const nextValue = this.selector(this.ctrl.get())\n if (!this.eq(this.currentValue, nextValue)) {\n this.currentValue = nextValue\n this.notifyListeners()\n }\n })\n }\n\n get(): S {\n return this.currentValue\n }\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n\n return () => {\n this.listeners.delete(listener)\n if (this.listeners.size === 0) {\n this.cleanup()\n }\n }\n }\n\n private notifyListeners(): void {\n for (const listener of this.listeners) {\n listener()\n }\n }\n\n private cleanup(): void {\n this.ctrlUnsub?.()\n this.ctrlUnsub = null\n this.listeners.clear()\n }\n}\n\nclass ControllerImpl<T> implements Lite.Controller<T> {\n readonly [controllerSymbol] = true\n\n constructor(\n private atom: Lite.Atom<T>,\n private scope: ScopeImpl\n ) {}\n\n get state(): AtomState {\n const entry = this.scope.getEntry(this.atom)\n return entry?.state ?? 'idle'\n }\n\n get(): T {\n const entry = this.scope.getEntry(this.atom)\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n if (entry.state === 'resolving' && entry.hasValue) {\n return entry.value as T\n }\n if (entry.state === 'resolved' && entry.hasValue) {\n return entry.value as T\n }\n throw new Error(\"Atom not resolved\")\n }\n\n async resolve(): Promise<T> {\n return this.scope.resolve(this.atom)\n }\n\n async release(): Promise<void> {\n return this.scope.release(this.atom)\n }\n\n invalidate(): void {\n this.scope.invalidate(this.atom)\n }\n\n on(event: ListenerEvent, listener: () => void): () => void {\n return this.scope.addListener(this.atom, event, listener)\n }\n}\n\nclass ScopeImpl implements Lite.Scope {\n private cache = new Map<Lite.Atom<unknown>, AtomEntry<unknown>>()\n private presets = new Map<Lite.Atom<unknown>, unknown | Lite.Atom<unknown>>()\n private resolving = new Set<Lite.Atom<unknown>>()\n private pending = new Map<Lite.Atom<unknown>, Promise<unknown>>()\n private stateListeners = new Map<AtomState, Map<Lite.Atom<unknown>, Set<() => void>>>()\n private invalidationQueue = new Set<Lite.Atom<unknown>>()\n private invalidationScheduled = false\n private invalidationChain: Set<Lite.Atom<unknown>> | null = null\n private chainPromise: Promise<void> | null = null\n private initialized = false\n readonly extensions: Lite.Extension[]\n readonly tags: Lite.Tagged<unknown>[]\n readonly ready: Promise<void>\n\n private scheduleInvalidation<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry || entry.state === \"idle\") return\n\n if (entry.state === \"resolving\") {\n entry.pendingInvalidate = true\n return\n }\n\n this.invalidationQueue.add(atom)\n\n if (!this.chainPromise) {\n this.invalidationChain = new Set()\n this.invalidationScheduled = true\n this.chainPromise = new Promise<void>((resolve, reject) => {\n queueMicrotask(() => {\n this.processInvalidationChain().then(resolve).catch(reject)\n })\n })\n }\n }\n\n private async processInvalidationChain(): Promise<void> {\n try {\n while (this.invalidationQueue.size > 0) {\n const atom = this.invalidationQueue.values().next().value as Lite.Atom<unknown>\n this.invalidationQueue.delete(atom)\n\n if (this.invalidationChain!.has(atom)) {\n const chainAtoms = Array.from(this.invalidationChain!)\n chainAtoms.push(atom)\n const path = chainAtoms\n .map(a => a.factory?.name || \"<anonymous>\")\n .join(\" → \")\n throw new Error(`Infinite invalidation loop detected: ${path}`)\n }\n\n this.invalidationChain!.add(atom)\n await this.doInvalidateSequential(atom)\n }\n } finally {\n this.invalidationChain = null\n this.chainPromise = null\n this.invalidationScheduled = false\n }\n }\n\n constructor(options?: Lite.ScopeOptions) {\n this.extensions = options?.extensions ?? []\n this.tags = options?.tags ?? []\n\n for (const p of options?.presets ?? []) {\n this.presets.set(p.atom, p.value)\n }\n\n this.ready = this.init()\n }\n\n private async init(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.init) {\n await ext.init(this)\n }\n }\n this.initialized = true\n }\n\n getEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> | undefined {\n return this.cache.get(atom) as AtomEntry<T> | undefined\n }\n\n private getOrCreateEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> {\n let entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) {\n entry = {\n state: 'idle',\n hasValue: false,\n cleanups: [],\n listeners: new Map([\n ['resolving', new Set()],\n ['resolved', new Set()],\n ['*', new Set()],\n ]),\n pendingInvalidate: false,\n }\n this.cache.set(atom, entry as AtomEntry<unknown>)\n }\n return entry\n }\n\n addListener<T>(atom: Lite.Atom<T>, event: ListenerEvent, listener: () => void): () => void {\n const entry = this.getOrCreateEntry(atom)\n const listeners = entry.listeners.get(event)!\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }\n\n private notifyListeners<T>(atom: Lite.Atom<T>, event: 'resolving' | 'resolved'): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const eventListeners = entry.listeners.get(event)\n if (eventListeners) {\n for (const listener of eventListeners) {\n listener()\n }\n }\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private notifyAllListeners<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private emitStateChange(state: AtomState, atom: Lite.Atom<unknown>): void {\n const stateMap = this.stateListeners.get(state)\n if (stateMap) {\n const listeners = stateMap.get(atom)\n if (listeners) {\n for (const listener of listeners) {\n listener()\n }\n }\n }\n }\n\n on(event: AtomState, atom: Lite.Atom<unknown>, listener: () => void): () => void {\n let stateMap = this.stateListeners.get(event)\n if (!stateMap) {\n stateMap = new Map()\n this.stateListeners.set(event, stateMap)\n }\n let listeners = stateMap.get(atom)\n if (!listeners) {\n listeners = new Set()\n stateMap.set(atom, listeners)\n }\n listeners.add(listener)\n\n const capturedStateMap = stateMap\n const capturedListeners = listeners\n\n return () => {\n capturedListeners.delete(listener)\n if (capturedListeners.size === 0) {\n capturedStateMap.delete(atom)\n if (capturedStateMap.size === 0) {\n this.stateListeners.delete(event)\n }\n }\n }\n }\n\n async resolve<T>(atom: Lite.Atom<T>): Promise<T> {\n if (!this.initialized) {\n await this.ready\n }\n\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (entry?.state === 'resolved') {\n return entry.value as T\n }\n\n const pendingPromise = this.pending.get(atom)\n if (pendingPromise) {\n return pendingPromise as Promise<T>\n }\n\n if (this.resolving.has(atom)) {\n throw new Error(\"Circular dependency detected\")\n }\n\n const presetValue = this.presets.get(atom)\n if (presetValue !== undefined) {\n if (isAtom(presetValue)) {\n return this.resolve(presetValue as Lite.Atom<T>)\n }\n const newEntry = this.getOrCreateEntry(atom)\n newEntry.state = 'resolved'\n newEntry.value = presetValue as T\n newEntry.hasValue = true\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n return newEntry.value\n }\n\n this.resolving.add(atom)\n\n const promise = this.doResolve(atom)\n this.pending.set(atom, promise as Promise<unknown>)\n\n try {\n return await promise\n } finally {\n this.resolving.delete(atom)\n this.pending.delete(atom)\n }\n }\n\n private async doResolve<T>(atom: Lite.Atom<T>): Promise<T> {\n const entry = this.getOrCreateEntry(atom)\n\n const wasResolving = entry.state === 'resolving'\n if (!wasResolving) {\n entry.state = 'resolving'\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom, 'resolving')\n }\n\n const resolvedDeps = await this.resolveDeps(atom.deps)\n\n const ctx: Lite.ResolveContext = {\n cleanup: (fn) => entry.cleanups.push(fn),\n invalidate: () => {\n this.scheduleInvalidation(atom)\n },\n scope: this,\n get data() {\n if (!entry.data) {\n entry.data = new DataStoreImpl()\n }\n return entry.data\n },\n }\n\n const factory = atom.factory as (\n ctx: Lite.ResolveContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doResolve = async () => {\n if (atom.deps && Object.keys(atom.deps).length > 0) {\n return factory(ctx, resolvedDeps)\n } else {\n return factory(ctx)\n }\n }\n\n try {\n const value = await this.applyResolveExtensions(atom, doResolve)\n entry.state = 'resolved'\n entry.value = value\n entry.hasValue = true\n entry.error = undefined\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n }\n\n return value\n } catch (err) {\n entry.state = 'failed'\n entry.error = err instanceof Error ? err : new Error(String(err))\n entry.value = undefined\n entry.hasValue = false\n this.emitStateChange('failed', atom)\n this.notifyAllListeners(atom)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.invalidationChain?.delete(atom)\n this.scheduleInvalidation(atom)\n }\n\n throw entry.error\n }\n }\n\n private async applyResolveExtensions<T>(\n atom: Lite.Atom<T>,\n doResolve: () => Promise<T>\n ): Promise<T> {\n let next = doResolve\n\n for (let i = this.extensions.length - 1; i >= 0; i--) {\n const ext = this.extensions[i]\n if (ext?.wrapResolve) {\n const currentNext = next\n next = ext.wrapResolve.bind(ext, currentNext, atom, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n async resolveDeps(\n deps: Record<string, Lite.Dependency> | undefined,\n tagSource?: Lite.Tagged<unknown>[]\n ): Promise<Record<string, unknown>> {\n if (!deps) return {}\n\n const result: Record<string, unknown> = {}\n const tags = tagSource ?? this.tags\n\n for (const [key, dep] of Object.entries(deps)) {\n if (isAtom(dep)) {\n result[key] = await this.resolve(dep)\n } else if (isControllerDep(dep)) {\n result[key] = new ControllerImpl(dep.atom, this)\n } else if (tagExecutorSymbol in (dep as object)) {\n const tagExecutor = dep as Lite.TagExecutor<unknown, boolean>\n\n switch (tagExecutor.mode) {\n case \"required\":\n result[key] = tagExecutor.tag.get(tags)\n break\n case \"optional\":\n result[key] = tagExecutor.tag.find(tags)\n break\n case \"all\":\n result[key] = tagExecutor.tag.collect(tags)\n break\n }\n }\n }\n\n return result\n }\n\n controller<T>(atom: Lite.Atom<T>): Lite.Controller<T> {\n return new ControllerImpl(atom, this)\n }\n\n select<T, S>(\n atom: Lite.Atom<T>,\n selector: (value: T) => S,\n options?: Lite.SelectOptions<S>\n ): Lite.SelectHandle<S> {\n const ctrl = this.controller(atom)\n const eq = options?.eq ?? ((a, b) => a === b)\n return new SelectHandleImpl(ctrl, selector, eq)\n }\n\n invalidate<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n if (entry.state === 'idle') return\n\n if (entry.state === 'resolving') {\n entry.pendingInvalidate = true\n return\n }\n\n this.scheduleInvalidation(atom)\n }\n\n private async doInvalidateSequential<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) return\n if (entry.state === \"idle\") return\n\n const previousValue = entry.value\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n entry.cleanups = []\n\n entry.state = \"resolving\"\n entry.value = previousValue\n entry.error = undefined\n entry.pendingInvalidate = false\n this.pending.delete(atom)\n this.resolving.delete(atom)\n this.emitStateChange(\"resolving\", atom)\n this.notifyListeners(atom, \"resolving\")\n\n await this.resolve(atom)\n }\n\n async release<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n\n this.cache.delete(atom)\n }\n\n async dispose(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.dispose) {\n await ext.dispose(this)\n }\n }\n\n const atoms = Array.from(this.cache.keys())\n for (const atom of atoms) {\n await this.release(atom as Lite.Atom<unknown>)\n }\n }\n\n async flush(): Promise<void> {\n if (this.chainPromise) {\n await this.chainPromise\n }\n }\n\n createContext(options?: Lite.CreateContextOptions): Lite.ExecutionContext {\n return new ExecutionContextImpl(this, options)\n }\n}\n\nclass ExecutionContextImpl implements Lite.ExecutionContext {\n private cleanups: (() => MaybePromise<void>)[] = []\n private closed = false\n private _input: unknown = undefined\n private readonly baseTags: Lite.Tagged<unknown>[]\n\n constructor(\n readonly scope: ScopeImpl,\n options?: Lite.CreateContextOptions\n ) {\n const ctxTags = options?.tags\n this.baseTags = ctxTags?.length\n ? [...ctxTags, ...scope.tags]\n : scope.tags\n }\n\n get input(): unknown {\n return this._input\n }\n\n async exec<T>(options: Lite.ExecFlowOptions<T> | Lite.ExecFnOptions<T>): Promise<T> {\n if (this.closed) {\n throw new Error(\"ExecutionContext is closed\")\n }\n\n if (\"flow\" in options) {\n return this.execFlow(options)\n } else {\n return this.execFn(options)\n }\n }\n\n private async execFlow<T>(options: Lite.ExecFlowOptions<T>): Promise<T> {\n const { flow, input, tags: execTags, name: execName } = options\n\n const hasExtraTags = (execTags?.length ?? 0) > 0 || (flow.tags?.length ?? 0) > 0\n const allTags = hasExtraTags\n ? [...(execTags ?? []), ...this.baseTags, ...(flow.tags ?? [])]\n : this.baseTags\n\n const resolvedDeps = await this.scope.resolveDeps(flow.deps, allTags)\n\n let parsedInput: unknown = input\n if (flow.parse) {\n const label = execName ?? flow.name ?? \"anonymous\"\n try {\n parsedInput = await flow.parse(input)\n } catch (err) {\n throw new ParseError(\n `Failed to parse flow input \"${label}\"`,\n \"flow-input\",\n label,\n err\n )\n }\n }\n\n this._input = parsedInput\n\n const factory = flow.factory as unknown as (\n ctx: Lite.ExecutionContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doExec = async (): Promise<T> => {\n if (flow.deps && Object.keys(flow.deps).length > 0) {\n return factory(this, resolvedDeps)\n } else {\n return factory(this)\n }\n }\n\n return this.applyExecExtensions(flow, doExec)\n }\n\n private execFn<T>(options: Lite.ExecFnOptions<T>): Promise<T> {\n const { fn, params } = options\n const doExec = () => Promise.resolve(fn(...params))\n return this.applyExecExtensions(fn, doExec)\n }\n\n private async applyExecExtensions<T>(\n target: Lite.Flow<T, unknown> | ((...args: unknown[]) => MaybePromise<T>),\n doExec: () => Promise<T>\n ): Promise<T> {\n let next = doExec\n\n for (let i = this.scope.extensions.length - 1; i >= 0; i--) {\n const ext = this.scope.extensions[i]\n if (ext?.wrapExec) {\n const currentNext = next\n next = ext.wrapExec.bind(ext, currentNext, target, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n onClose(fn: () => MaybePromise<void>): void {\n this.cleanups.push(fn)\n }\n\n async close(): Promise<void> {\n if (this.closed) return\n\n this.closed = true\n\n for (let i = this.cleanups.length - 1; i >= 0; i--) {\n const cleanup = this.cleanups[i]\n if (cleanup) await cleanup()\n }\n }\n}\n\n/**\n * Creates a DI container that manages Atom resolution, caching, and lifecycle.\n *\n * The scope is returned synchronously, with a `ready` promise that resolves\n * when all extensions have been initialized. Resolution methods automatically\n * wait for `ready` before proceeding.\n *\n * @param options - Optional configuration for extensions, presets, and tags\n * @returns A Scope instance with a `ready` promise for extension initialization\n *\n * @example\n * ```typescript\n * const scope = createScope({\n * extensions: [loggingExtension],\n * presets: [preset(dbAtom, testDb)]\n * })\n *\n * // Option 1: resolve() waits for ready internally\n * const db = await scope.resolve(dbAtom)\n *\n * // Option 2: explicit wait\n * await scope.ready\n * const db = await scope.resolve(dbAtom)\n * ```\n */\nexport function createScope(options?: Lite.ScopeOptions): Lite.Scope {\n return new ScopeImpl(options)\n}\n","export type { Lite, AtomState } from \"./types\"\nexport {\n atomSymbol,\n flowSymbol,\n tagSymbol,\n taggedSymbol,\n controllerDepSymbol,\n presetSymbol,\n controllerSymbol,\n tagExecutorSymbol,\n typedSymbol,\n} from \"./symbols\"\nexport { tag, tags, isTag, isTagged, isTagExecutor } from \"./tag\"\nexport { atom, isAtom, controller, isControllerDep } from \"./atom\"\nexport { flow, isFlow, typed } from \"./flow\"\nexport { preset, isPreset } from \"./preset\"\nexport { createScope } from \"./scope\"\nexport { ParseError } from \"./errors\"\n\nexport const VERSION = \"0.0.1\"\n"],"mappings":"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"}
|