@pumped-fn/lite 1.0.0 → 1.0.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 CHANGED
@@ -1,5 +1,26 @@
1
1
  # @pumped-fn/lite
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 9ee6ac2: Add comprehensive README documentation for release
8
+
9
+ - Add installation instructions
10
+ - Add quick start guide with complete example
11
+ - Document all core concepts (Atoms, Flows, Controllers, Tags, Presets, Extensions)
12
+ - Add lifecycle diagrams (state machine, resolution flow, invalidation flow)
13
+ - Add complete API reference tables
14
+ - Add comparison with @pumped-fn/core-next
15
+ - Add guidance on when to choose lite vs core-next
16
+
17
+ - 219fce4: Update MIGRATION.md with accurate API documentation
18
+
19
+ - Add Controller.on() event filtering (`'resolved'`, `'resolving'`, `'*'`)
20
+ - Add scope.select() fine-grained subscription example
21
+ - Add Fine-grained select() to feature comparison table
22
+ - Fix Quick Reference table with event filtering syntax
23
+
3
24
  ## 1.0.0
4
25
 
5
26
  ### Major Changes
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  A lightweight effect system for TypeScript with managed lifecycles and minimal reactivity.
4
4
 
5
+ **Zero dependencies** · **<17KB bundle** · **Full TypeScript support**
6
+
5
7
  ## What is an Effect System?
6
8
 
7
9
  An effect system manages **how** and **when** computations run, handling:
@@ -10,6 +12,56 @@ An effect system manages **how** and **when** computations run, handling:
10
12
  - **Side effect isolation** - controlled execution boundaries
11
13
  - **State transitions** - idle → resolving → resolved → failed
12
14
 
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install @pumped-fn/lite
19
+ # or
20
+ pnpm add @pumped-fn/lite
21
+ # or
22
+ yarn add @pumped-fn/lite
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ ```typescript
28
+ import { atom, flow, createScope, tag, tags, controller } from '@pumped-fn/lite'
29
+
30
+ // 1. Define atoms (long-lived, cached dependencies)
31
+ const configAtom = atom({
32
+ factory: () => ({ apiUrl: 'https://api.example.com', timeout: 5000 })
33
+ })
34
+
35
+ const apiClientAtom = atom({
36
+ deps: { config: configAtom },
37
+ factory: (ctx, { config }) => {
38
+ const client = new ApiClient(config.apiUrl, config.timeout)
39
+ ctx.cleanup(() => client.disconnect())
40
+ return client
41
+ }
42
+ })
43
+
44
+ // 2. Define flows (short-lived request handlers)
45
+ const fetchUserFlow = flow({
46
+ deps: { api: apiClientAtom },
47
+ factory: async (ctx, { api }) => {
48
+ const userId = ctx.input as string
49
+ return api.getUser(userId)
50
+ }
51
+ })
52
+
53
+ // 3. Create scope and execute
54
+ const scope = createScope()
55
+ await scope.ready
56
+
57
+ const context = scope.createContext()
58
+ const user = await context.exec({ flow: fetchUserFlow, input: 'user-123' })
59
+ await context.close()
60
+
61
+ // 4. Cleanup when done
62
+ await scope.dispose()
63
+ ```
64
+
13
65
  ## Core Concepts
14
66
 
15
67
  ```
@@ -35,60 +87,412 @@ An effect system manages **how** and **when** computations run, handling:
35
87
  |---------|---------|
36
88
  | **Scope** | Long-lived boundary that manages atom lifecycles |
37
89
  | **Atom** | A managed effect with lifecycle (create, cache, cleanup, recreate) |
38
- | **ExecutionContext** | Short-lived context for running operations with input and tags |
90
+ | **Flow** | Template for short-lived operations with input/output |
91
+ | **ExecutionContext** | Short-lived context for running flows with input and tags |
39
92
  | **Controller** | Handle for observing and controlling an atom's state |
40
93
  | **Tag** | Contextual value passed through execution |
41
94
 
42
- ## Install
95
+ ## Atoms
43
96
 
44
- ```bash
45
- npm install @pumped-fn/lite
46
- ```
97
+ Atoms are long-lived dependencies that are cached within a scope.
47
98
 
48
- ## Quick Example
99
+ ### Basic Atom
49
100
 
50
101
  ```typescript
51
- import { atom, flow, createScope } from '@pumped-fn/lite'
52
-
53
- // Define effects (atoms) - long-lived, cached
54
102
  const dbAtom = atom({
55
103
  factory: async (ctx) => {
56
- const conn = await createConnection()
57
- ctx.cleanup(() => conn.close())
58
- return conn
104
+ const connection = await createConnection()
105
+ ctx.cleanup(() => connection.close())
106
+ return connection
59
107
  }
60
108
  })
109
+ ```
61
110
 
62
- const repoAtom = atom({
111
+ ### Atom with Dependencies
112
+
113
+ ```typescript
114
+ const userRepoAtom = atom({
63
115
  deps: { db: dbAtom },
64
116
  factory: (ctx, { db }) => new UserRepository(db)
65
117
  })
118
+ ```
119
+
120
+ ### Self-Invalidating Atom
121
+
122
+ ```typescript
123
+ const configAtom = atom({
124
+ factory: async (ctx) => {
125
+ const config = await fetchConfig()
126
+
127
+ // Re-fetch every 60 seconds
128
+ const interval = setInterval(() => ctx.invalidate(), 60_000)
129
+ ctx.cleanup(() => clearInterval(interval))
130
+
131
+ return config
132
+ }
133
+ })
134
+ ```
135
+
136
+ ### Per-Atom Private Storage
137
+
138
+ Use `ctx.data` to store data that survives invalidation:
139
+
140
+ ```typescript
141
+ const prevDataTag = tag<Data>({ label: 'prevData' })
142
+
143
+ const pollingAtom = atom({
144
+ factory: async (ctx) => {
145
+ const prev = ctx.data.get(prevDataTag) // Data | undefined
146
+ const current = await fetchData()
147
+
148
+ if (prev && hasChanged(prev, current)) {
149
+ notifyChanges(prev, current)
150
+ }
151
+
152
+ ctx.data.set(prevDataTag, current)
153
+ setTimeout(() => ctx.invalidate(), 5000)
154
+ return current
155
+ }
156
+ })
157
+ ```
158
+
159
+ With default values:
160
+
161
+ ```typescript
162
+ const countTag = tag<number>({ label: 'count', default: 0 })
163
+
164
+ const counterAtom = atom({
165
+ factory: (ctx) => {
166
+ const count = ctx.data.get(countTag) // number (guaranteed!)
167
+ ctx.data.set(countTag, count + 1)
168
+ return count
169
+ }
170
+ })
171
+ ```
172
+
173
+ ## Flows
174
+
175
+ Flows are templates for short-lived operations.
66
176
 
67
- // Define operation template
68
- const getUser = flow({
69
- deps: { repo: repoAtom },
177
+ ### Basic Flow
178
+
179
+ ```typescript
180
+ const createUserFlow = flow({
181
+ deps: { repo: userRepoAtom },
70
182
  factory: async (ctx, { repo }) => {
71
- return repo.findById(ctx.input as string)
183
+ const input = ctx.input as CreateUserInput
184
+ return repo.create(input)
72
185
  }
73
186
  })
187
+ ```
74
188
 
75
- // Create scope (long-lived boundary)
76
- const scope = await createScope()
189
+ ### Executing Flows
77
190
 
78
- // Create ExecutionContext (short-lived, per-operation)
79
- const ctx = scope.createContext()
191
+ ```typescript
192
+ const scope = createScope()
193
+ await scope.ready
80
194
 
81
- // Execute - resolves atoms, runs operation, provides input
82
- const user = await ctx.exec({ flow: getUser, input: 'user-123' })
195
+ const context = scope.createContext()
83
196
 
84
- // ExecutionContext cleanup (operation complete)
85
- await ctx.close()
197
+ // Execute with input
198
+ const user = await context.exec({
199
+ flow: createUserFlow,
200
+ input: { name: 'Alice', email: 'alice@example.com' }
201
+ })
86
202
 
87
- // Scope cleanup (application shutdown)
88
- await scope.dispose()
203
+ // Always close the context when done
204
+ await context.close()
205
+ ```
206
+
207
+ ### Flow with Tags
208
+
209
+ ```typescript
210
+ const requestIdTag = tag<string>({ label: 'requestId' })
211
+
212
+ const loggingFlow = flow({
213
+ deps: { requestId: tags.required(requestIdTag) },
214
+ factory: (ctx, { requestId }) => {
215
+ console.log(`[${requestId}] Processing request`)
216
+ return processRequest(ctx.input)
217
+ }
218
+ })
219
+
220
+ // Pass tags at execution time
221
+ const context = scope.createContext()
222
+ await context.exec({
223
+ flow: loggingFlow,
224
+ input: data,
225
+ tags: [requestIdTag('req-abc-123')]
226
+ })
227
+ ```
228
+
229
+ ## Controllers
230
+
231
+ Controllers provide reactive access to atom state.
232
+
233
+ ### Basic Usage
234
+
235
+ ```typescript
236
+ const ctrl = scope.controller(configAtom)
237
+
238
+ // Access state
239
+ console.log(ctrl.state) // 'idle' | 'resolving' | 'resolved' | 'failed'
240
+
241
+ // Get resolved value (throws if not resolved)
242
+ const config = ctrl.get()
243
+
244
+ // Resolve and wait
245
+ const config = await ctrl.resolve()
246
+
247
+ // Manual invalidation
248
+ ctrl.invalidate()
249
+ ```
250
+
251
+ ### Subscribing to Changes
252
+
253
+ ```typescript
254
+ // Subscribe to specific events
255
+ ctrl.on('resolved', () => {
256
+ console.log('Config updated:', ctrl.get())
257
+ })
258
+
259
+ ctrl.on('resolving', () => {
260
+ console.log('Config is refreshing...')
261
+ })
262
+
263
+ // Subscribe to all state changes
264
+ ctrl.on('*', () => {
265
+ console.log('State changed:', ctrl.state)
266
+ })
267
+ ```
268
+
269
+ ### Controller as Dependency
270
+
271
+ Use `controller()` to get a Controller instead of the resolved value:
272
+
273
+ ```typescript
274
+ const appAtom = atom({
275
+ deps: { config: controller(configAtom) },
276
+ factory: (ctx, { config }) => {
277
+ // Subscribe to config changes
278
+ config.on('resolved', () => {
279
+ console.log('Config updated, reinitializing...')
280
+ ctx.invalidate()
281
+ })
282
+
283
+ return new App(config.get())
284
+ }
285
+ })
286
+ ```
287
+
288
+ ### Fine-Grained Reactivity with select()
289
+
290
+ ```typescript
291
+ const portSelect = scope.select(
292
+ configAtom,
293
+ (config) => config.port,
294
+ { eq: (a, b) => a === b } // Optional custom equality
295
+ )
296
+
297
+ portSelect.subscribe(() => {
298
+ console.log('Port changed:', portSelect.get())
299
+ })
300
+ ```
301
+
302
+ ## Tags
303
+
304
+ Tags pass contextual values through execution without explicit wiring.
305
+
306
+ ### Creating Tags
307
+
308
+ ```typescript
309
+ const tenantIdTag = tag<string>({ label: 'tenantId' })
310
+ const userRolesTag = tag<string[]>({ label: 'userRoles', default: [] })
311
+ ```
312
+
313
+ ### Using Tags as Dependencies
314
+
315
+ ```typescript
316
+ // Required - throws if not found
317
+ const tenantAtom = atom({
318
+ deps: { tenantId: tags.required(tenantIdTag) },
319
+ factory: (ctx, { tenantId }) => loadTenantData(tenantId)
320
+ })
321
+
322
+ // Optional - undefined if not found
323
+ const optionalAtom = atom({
324
+ deps: { tenantId: tags.optional(tenantIdTag) },
325
+ factory: (ctx, { tenantId }) => {
326
+ if (tenantId) {
327
+ return loadTenantData(tenantId)
328
+ }
329
+ return loadDefaultData()
330
+ }
331
+ })
332
+
333
+ // Collect all - returns array of all matching tags
334
+ const multiAtom = atom({
335
+ deps: { roles: tags.all(userRolesTag) },
336
+ factory: (ctx, { roles }) => roles.flat() // string[][]
337
+ })
338
+ ```
339
+
340
+ ### Passing Tags
341
+
342
+ ```typescript
343
+ // At scope creation
344
+ const scope = createScope({
345
+ tags: [tenantIdTag('tenant-123')]
346
+ })
347
+
348
+ // At context creation
349
+ const context = scope.createContext({
350
+ tags: [userRolesTag(['admin', 'user'])]
351
+ })
352
+
353
+ // At execution time
354
+ await context.exec({
355
+ flow: myFlow,
356
+ input: data,
357
+ tags: [requestIdTag('req-456')]
358
+ })
89
359
  ```
90
360
 
91
- ## Effect Lifecycle
361
+ ### Direct Tag Methods
362
+
363
+ ```typescript
364
+ const tags = [tenantIdTag('tenant-123'), userRolesTag(['admin'])]
365
+
366
+ // Get (throws if not found for tags without default)
367
+ const tenantId = tenantIdTag.get(tags)
368
+
369
+ // Find (returns undefined if not found)
370
+ const roles = userRolesTag.find(tags)
371
+
372
+ // Collect all matching values
373
+ const allRoles = userRolesTag.collect(tags)
374
+ ```
375
+
376
+ ## Presets
377
+
378
+ Presets inject or redirect atom values, useful for testing.
379
+
380
+ ### Value Injection
381
+
382
+ ```typescript
383
+ const mockDb = { query: jest.fn() }
384
+
385
+ const scope = createScope({
386
+ presets: [preset(dbAtom, mockDb)]
387
+ })
388
+
389
+ // resolves to mockDb without calling factory
390
+ const db = await scope.resolve(dbAtom)
391
+ ```
392
+
393
+ ### Atom Redirection
394
+
395
+ ```typescript
396
+ const testConfigAtom = atom({
397
+ factory: () => ({ apiUrl: 'http://localhost:3000' })
398
+ })
399
+
400
+ const scope = createScope({
401
+ presets: [preset(configAtom, testConfigAtom)]
402
+ })
403
+
404
+ // resolves testConfigAtom instead of configAtom
405
+ const config = await scope.resolve(configAtom)
406
+ ```
407
+
408
+ ## Extensions
409
+
410
+ Extensions provide cross-cutting behavior via AOP-style hooks.
411
+
412
+ ### Extension Interface
413
+
414
+ ```typescript
415
+ interface Extension {
416
+ readonly name: string
417
+ init?(scope: Scope): MaybePromise<void>
418
+ wrapResolve?<T>(next: () => Promise<T>, atom: Atom<T>, scope: Scope): Promise<T>
419
+ wrapExec?<T>(next: () => Promise<T>, target: Flow | Function, ctx: ExecutionContext): Promise<T>
420
+ dispose?(scope: Scope): MaybePromise<void>
421
+ }
422
+ ```
423
+
424
+ ### Example: Logging Extension
425
+
426
+ ```typescript
427
+ const loggingExtension: Lite.Extension = {
428
+ name: 'logging',
429
+
430
+ init: (scope) => {
431
+ console.log('Scope initialized')
432
+ },
433
+
434
+ wrapResolve: async (next, atom, scope) => {
435
+ const start = performance.now()
436
+ console.log('Resolving atom...')
437
+
438
+ try {
439
+ const result = await next()
440
+ console.log(`Resolved in ${performance.now() - start}ms`)
441
+ return result
442
+ } catch (error) {
443
+ console.error('Resolution failed:', error)
444
+ throw error
445
+ }
446
+ },
447
+
448
+ wrapExec: async (next, target, ctx) => {
449
+ console.log('Executing:', 'flow' in target ? 'flow' : 'function')
450
+ return next()
451
+ },
452
+
453
+ dispose: (scope) => {
454
+ console.log('Scope disposed')
455
+ }
456
+ }
457
+
458
+ const scope = createScope({ extensions: [loggingExtension] })
459
+ ```
460
+
461
+ ### Example: Metrics Extension
462
+
463
+ ```typescript
464
+ const metricsExtension: Lite.Extension = {
465
+ name: 'metrics',
466
+
467
+ wrapResolve: async (next, atom, scope) => {
468
+ const start = performance.now()
469
+ try {
470
+ const result = await next()
471
+ metrics.recordResolution(atom, performance.now() - start, 'success')
472
+ return result
473
+ } catch (error) {
474
+ metrics.recordResolution(atom, performance.now() - start, 'error')
475
+ throw error
476
+ }
477
+ },
478
+
479
+ wrapExec: async (next, target, ctx) => {
480
+ const start = performance.now()
481
+ try {
482
+ const result = await next()
483
+ metrics.recordExecution(target, performance.now() - start, 'success')
484
+ return result
485
+ } catch (error) {
486
+ metrics.recordExecution(target, performance.now() - start, 'error')
487
+ throw error
488
+ }
489
+ }
490
+ }
491
+ ```
492
+
493
+ ## Lifecycle
494
+
495
+ ### Effect Lifecycle
92
496
 
93
497
  ```mermaid
94
498
  stateDiagram-v2
@@ -102,7 +506,7 @@ stateDiagram-v2
102
506
  failed --> idle: release()
103
507
  ```
104
508
 
105
- ## Resolution Flow
509
+ ### Resolution Flow
106
510
 
107
511
  ```mermaid
108
512
  sequenceDiagram
@@ -126,9 +530,7 @@ sequenceDiagram
126
530
  Atom-->>App: value
127
531
  ```
128
532
 
129
- ## Invalidation (Re-execution)
130
-
131
- Atoms can be invalidated to re-run their effect:
533
+ ### Invalidation Flow
132
534
 
133
535
  ```mermaid
134
536
  sequenceDiagram
@@ -145,7 +547,7 @@ sequenceDiagram
145
547
  Note over Queue: queueMicrotask (batched)
146
548
 
147
549
  Queue->>Scope: flush
148
- Scope->>Scope: run cleanups
550
+ Scope->>Scope: run cleanups (LIFO)
149
551
  Scope->>Scope: state = resolving
150
552
  Scope->>Factory: factory(ctx, deps)
151
553
  Factory-->>Scope: new value
@@ -153,117 +555,114 @@ sequenceDiagram
153
555
  Scope->>Scope: notify listeners
154
556
  ```
155
557
 
156
- Invalidations are **batched** via microtask queue - multiple invalidations in one tick become a single re-execution.
157
-
158
- ## Controller Pattern
159
-
160
- Controllers provide a handle to observe and control atom state:
161
-
162
- ```typescript
163
- const configAtom = atom({
164
- factory: async (ctx) => {
165
- const config = await fetchConfig()
166
- setTimeout(() => ctx.invalidate(), 60000) // refresh every minute
167
- return config
168
- }
169
- })
170
-
171
- const appAtom = atom({
172
- deps: { config: controller(configAtom) }, // controller, not direct
173
- factory: (ctx, { config }) => {
174
- // Subscribe to config changes (must specify event type)
175
- config.on('resolved', () => {
176
- console.log('config updated:', config.get())
177
- ctx.invalidate() // re-run this atom too
178
- })
179
-
180
- return new App(config.get())
181
- }
182
- })
183
- ```
184
-
185
- ## Per-Atom Private Storage
186
-
187
- The `ctx.data` Map provides private storage that survives invalidation but clears on release. Useful for internal state that shouldn't be exposed:
188
-
189
- ```typescript
190
- const pollingAtom = atom({
191
- factory: async (ctx) => {
192
- const prev = ctx.data.get('prev') as Data | undefined
193
- const current = await fetchData()
194
-
195
- if (prev && current !== prev) {
196
- console.log('Data changed!')
197
- }
198
- ctx.data.set('prev', current)
199
-
200
- setTimeout(() => ctx.invalidate(), 5000)
201
- return current
202
- }
203
- })
204
- ```
205
-
206
- | Event | `ctx.data` Behavior |
207
- |-------|---------------------|
208
- | First access | Map created lazily |
209
- | `invalidate()` | Map preserved |
210
- | `release()` | Map cleared |
211
-
212
- ## Tags (Contextual Values)
213
-
214
- Tags pass contextual values through execution without explicit wiring:
215
-
216
- ```typescript
217
- const requestIdTag = tag<string>({ label: 'requestId' })
558
+ ## API Reference
218
559
 
219
- const loggingAtom = atom({
220
- deps: { requestId: tags.required(requestIdTag) },
221
- factory: (ctx, { requestId }) => new Logger(requestId)
222
- })
560
+ ### Factory Functions
223
561
 
224
- // Pass tags when creating ExecutionContext or at exec time
225
- const ctx = scope.createContext({ tags: [requestIdTag('req-abc-123')] })
226
- await ctx.exec({ flow: myFlow, input: data })
562
+ | Function | Description |
563
+ |----------|-------------|
564
+ | `createScope(options?)` | Create DI container (returns Scope with `ready` promise) |
565
+ | `atom(config)` | Define long-lived cached dependency |
566
+ | `flow(config)` | Define short-lived operation template |
567
+ | `tag(config)` | Define contextual value |
568
+ | `controller(atom)` | Create controller dependency helper |
569
+ | `preset(atom, value)` | Create value injection preset |
570
+
571
+ ### Scope Methods
572
+
573
+ | Method | Description |
574
+ |--------|-------------|
575
+ | `scope.ready` | Promise that resolves when extensions are initialized |
576
+ | `scope.resolve(atom)` | Resolve atom and return cached value |
577
+ | `scope.controller(atom)` | Get Controller for atom |
578
+ | `scope.select(atom, selector, options?)` | Create fine-grained subscription |
579
+ | `scope.release(atom)` | Release atom (run cleanups, remove from cache) |
580
+ | `scope.dispose()` | Dispose scope (release all atoms, cleanup extensions) |
581
+ | `scope.createContext(options?)` | Create ExecutionContext for flows |
582
+ | `scope.on(event, atom, listener)` | Subscribe to atom state changes |
583
+
584
+ ### Controller Methods
585
+
586
+ | Method | Description |
587
+ |--------|-------------|
588
+ | `ctrl.state` | Current state: `'idle'` \| `'resolving'` \| `'resolved'` \| `'failed'` |
589
+ | `ctrl.get()` | Get resolved value (throws if not resolved) |
590
+ | `ctrl.resolve()` | Resolve and return value |
591
+ | `ctrl.release()` | Release atom |
592
+ | `ctrl.invalidate()` | Trigger re-resolution |
593
+ | `ctrl.on(event, listener)` | Subscribe: `'resolved'` \| `'resolving'` \| `'*'` |
594
+
595
+ ### ExecutionContext Methods
596
+
597
+ | Method | Description |
598
+ |--------|-------------|
599
+ | `ctx.input` | Current execution input |
600
+ | `ctx.scope` | Parent scope |
601
+ | `ctx.exec(options)` | Execute flow or function |
602
+ | `ctx.onClose(fn)` | Register cleanup for context close |
603
+ | `ctx.close()` | Close context and run cleanups |
604
+
605
+ ### ResolveContext Methods
606
+
607
+ | Method | Description |
608
+ |--------|-------------|
609
+ | `ctx.cleanup(fn)` | Register cleanup for atom invalidation/release |
610
+ | `ctx.invalidate()` | Schedule self-invalidation |
611
+ | `ctx.scope` | Parent scope |
612
+ | `ctx.data` | Per-atom DataStore (survives invalidation) |
613
+
614
+ ### Type Guards
227
615
 
228
- // Or per-execution
229
- await ctx.exec({
230
- flow: myFlow,
231
- input: data,
232
- tags: [requestIdTag('req-xyz-456')]
233
- })
234
- ```
616
+ | Function | Description |
617
+ |----------|-------------|
618
+ | `isAtom(value)` | Check if value is Atom |
619
+ | `isFlow(value)` | Check if value is Flow |
620
+ | `isTag(value)` | Check if value is Tag |
621
+ | `isTagged(value)` | Check if value is Tagged |
622
+ | `isPreset(value)` | Check if value is Preset |
623
+ | `isControllerDep(value)` | Check if value is ControllerDep |
235
624
 
236
- ## Extensions (Cross-cutting Effects)
625
+ ### Types
237
626
 
238
- Wrap resolution and execution with cross-cutting behavior:
627
+ All types are available under the `Lite` namespace:
239
628
 
240
629
  ```typescript
241
- const timingExtension: Lite.Extension = {
242
- name: 'timing',
243
- wrapResolve: async (next, atom, scope) => {
244
- const start = performance.now()
245
- const result = await next()
246
- console.log(`resolved in ${performance.now() - start}ms`)
247
- return result
248
- }
249
- }
630
+ import type { Lite } from '@pumped-fn/lite'
250
631
 
251
- const scope = await createScope({ extensions: [timingExtension] })
632
+ const myAtom: Lite.Atom<Config> = atom({ factory: () => loadConfig() })
633
+ const myController: Lite.Controller<Config> = scope.controller(myAtom)
634
+ const myTag: Lite.Tag<string> = tag({ label: 'myTag' })
252
635
  ```
253
636
 
254
- ## API Reference
255
-
256
- | Function | Description |
257
- |----------|-------------|
258
- | `createScope(options?)` | Create execution boundary |
259
- | `atom(config)` | Define managed effect (long-lived) |
260
- | `flow(config)` | Define operation template (used by ExecutionContext) |
261
- | `tag(config)` | Define contextual value |
262
- | `controller(atom)` | Wrap atom for deferred resolution |
263
- | `preset(atom, value)` | Override atom value in scope |
264
- | `scope.createContext(options?)` | Create ExecutionContext for operations |
265
- | `ctx.exec(options)` | Execute operation with input and tags |
266
- | `ctx.close()` | Cleanup ExecutionContext resources |
637
+ ## Comparison with @pumped-fn/core-next
638
+
639
+ | Feature | @pumped-fn/lite | @pumped-fn/core-next |
640
+ |---------|-----------------|----------------------|
641
+ | Atoms/Executors | `atom()` | `provide()`, `derive()` |
642
+ | Flows | `flow()` | `flow()` |
643
+ | Tags | `tag()`, `tags.*` | `tag()`, `tags.*` |
644
+ | Extensions | Simple 4-hook interface | Full lifecycle hooks |
645
+ | Schema validation | No | StandardSchema |
646
+ | Journaling | No | Yes |
647
+ | Multi-executor pools | No | `multi()` |
648
+ | Enhanced Promise | No | `Promised` class |
649
+ | Error classes | Simple Error | Rich hierarchy |
650
+ | Controller reactivity | ✅ Built-in | No |
651
+ | Self-invalidation | ✅ Built-in | No |
652
+ | Fine-grained select() | ✅ Built-in | No |
653
+ | Bundle size | <17KB | ~75KB |
654
+
655
+ **Choose `@pumped-fn/lite` when:**
656
+ - Bundle size matters
657
+ - You need built-in reactivity (Controller pattern)
658
+ - You want a minimal API surface
659
+ - Schema validation can be done manually
660
+
661
+ **Choose `@pumped-fn/core-next` when:**
662
+ - You need StandardSchema validation
663
+ - You need multi-executor pools
664
+ - You need journaling/debugging features
665
+ - You need rich error context
267
666
 
268
667
  ## Design Principles
269
668
 
@@ -271,6 +670,7 @@ const scope = await createScope({ extensions: [timingExtension] })
271
670
  2. **Zero dependencies** - No runtime dependencies
272
671
  3. **Explicit lifecycle** - No magic, clear state transitions
273
672
  4. **Composable** - Effects compose through deps
673
+ 5. **Type-safe** - Full TypeScript inference
274
674
 
275
675
  ## License
276
676
 
package/dist/index.cjs CHANGED
@@ -263,6 +263,25 @@ function isPreset(value) {
263
263
 
264
264
  //#endregion
265
265
  //#region src/scope.ts
266
+ var DataStoreImpl = class {
267
+ map = /* @__PURE__ */ new Map();
268
+ get(tag$1) {
269
+ if (this.map.has(tag$1.key)) return this.map.get(tag$1.key);
270
+ if (tag$1.hasDefault) return tag$1.defaultValue;
271
+ }
272
+ set(tag$1, value) {
273
+ this.map.set(tag$1.key, value);
274
+ }
275
+ has(tag$1) {
276
+ return this.map.has(tag$1.key);
277
+ }
278
+ delete(tag$1) {
279
+ return this.map.delete(tag$1.key);
280
+ }
281
+ clear() {
282
+ this.map.clear();
283
+ }
284
+ };
266
285
  var SelectHandleImpl = class {
267
286
  listeners = /* @__PURE__ */ new Set();
268
287
  currentValue;
@@ -479,7 +498,7 @@ var ScopeImpl = class {
479
498
  },
480
499
  scope: this,
481
500
  get data() {
482
- if (!entry.data) entry.data = /* @__PURE__ */ new Map();
501
+ if (!entry.data) entry.data = new DataStoreImpl();
483
502
  return entry.data;
484
503
  }
485
504
  };
package/dist/index.d.cts CHANGED
@@ -42,11 +42,18 @@ declare namespace Lite {
42
42
  readonly deps?: Record<string, Dependency>;
43
43
  readonly tags?: Tagged<unknown>[];
44
44
  }
45
+ interface DataStore {
46
+ get<T, H extends boolean>(tag: Tag<T, H>): H extends true ? T : T | undefined;
47
+ set<T>(tag: Tag<T, boolean>, value: T): void;
48
+ has(tag: Tag<unknown, boolean>): boolean;
49
+ delete(tag: Tag<unknown, boolean>): boolean;
50
+ clear(): void;
51
+ }
45
52
  interface ResolveContext {
46
53
  cleanup(fn: () => MaybePromise<void>): void;
47
54
  invalidate(): void;
48
55
  readonly scope: Scope;
49
- readonly data: Map<string, unknown>;
56
+ readonly data: DataStore;
50
57
  }
51
58
  interface ExecutionContext {
52
59
  readonly input: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -42,11 +42,18 @@ declare namespace Lite {
42
42
  readonly deps?: Record<string, Dependency>;
43
43
  readonly tags?: Tagged<unknown>[];
44
44
  }
45
+ interface DataStore {
46
+ get<T, H extends boolean>(tag: Tag<T, H>): H extends true ? T : T | undefined;
47
+ set<T>(tag: Tag<T, boolean>, value: T): void;
48
+ has(tag: Tag<unknown, boolean>): boolean;
49
+ delete(tag: Tag<unknown, boolean>): boolean;
50
+ clear(): void;
51
+ }
45
52
  interface ResolveContext {
46
53
  cleanup(fn: () => MaybePromise<void>): void;
47
54
  invalidate(): void;
48
55
  readonly scope: Scope;
49
- readonly data: Map<string, unknown>;
56
+ readonly data: DataStore;
50
57
  }
51
58
  interface ExecutionContext {
52
59
  readonly input: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/symbols.ts","../src/types.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -262,6 +262,25 @@ function isPreset(value) {
262
262
 
263
263
  //#endregion
264
264
  //#region src/scope.ts
265
+ var DataStoreImpl = class {
266
+ map = /* @__PURE__ */ new Map();
267
+ get(tag$1) {
268
+ if (this.map.has(tag$1.key)) return this.map.get(tag$1.key);
269
+ if (tag$1.hasDefault) return tag$1.defaultValue;
270
+ }
271
+ set(tag$1, value) {
272
+ this.map.set(tag$1.key, value);
273
+ }
274
+ has(tag$1) {
275
+ return this.map.has(tag$1.key);
276
+ }
277
+ delete(tag$1) {
278
+ return this.map.delete(tag$1.key);
279
+ }
280
+ clear() {
281
+ this.map.clear();
282
+ }
283
+ };
265
284
  var SelectHandleImpl = class {
266
285
  listeners = /* @__PURE__ */ new Set();
267
286
  currentValue;
@@ -478,7 +497,7 @@ var ScopeImpl = class {
478
497
  },
479
498
  scope: this,
480
499
  get data() {
481
- if (!entry.data) entry.data = /* @__PURE__ */ new Map();
500
+ if (!entry.data) entry.data = new DataStoreImpl();
482
501
  return entry.data;
483
502
  }
484
503
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["atomSymbol: unique symbol","flowSymbol: unique symbol","tagSymbol: unique symbol","taggedSymbol: unique symbol","controllerDepSymbol: unique symbol","presetSymbol: unique symbol","controllerSymbol: unique symbol","tagExecutorSymbol: unique symbol","tags","result: T[]","ctrl: Lite.Controller<T>","selector: (value: T) => S","eq: (prev: S, next: S) => boolean","atom: Lite.Atom<T>","scope: ScopeImpl","atom","ctx: Lite.ResolveContext","result: Record<string, unknown>","tags","flow"],"sources":["../src/symbols.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":["export const atomSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/atom\")\nexport const flowSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/flow\")\nexport const tagSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag\")\nexport const taggedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tagged\")\nexport const controllerDepSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller-dep\")\nexport const presetSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/preset\")\nexport const controllerSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller\")\nexport const tagExecutorSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag-executor\")\n","import { tagSymbol, taggedSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\nexport interface TagOptions<T, HasDefault extends boolean> {\n label: string\n default?: HasDefault extends true ? T : never\n}\n\n/**\n * Creates a metadata tag for attaching and retrieving typed values from Atoms and Flows.\n *\n * @param options - Configuration object with label and optional default value\n * @returns A Tag instance that can create tagged values and query them from sources\n *\n * @example\n * ```typescript\n * const nameTag = tag<string>({ label: \"name\" })\n * const myAtom = atom({\n * factory: (ctx) => \"value\",\n * tags: [nameTag(\"MyAtom\")]\n * })\n * ```\n */\nexport function tag<T>(options: { label: string }): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: TagOptions<T, boolean>): Lite.Tag<T, boolean> {\n const key = Symbol.for(`@pumped-fn/lite/tag/${options.label}`)\n const hasDefault = \"default\" in options\n const defaultValue = hasDefault ? options.default : undefined\n\n function createTagged(value: T): Lite.Tagged<T> {\n return {\n [taggedSymbol]: true,\n key,\n value,\n }\n }\n\n function get(source: Lite.TagSource): T {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n throw new Error(`Tag \"${options.label}\" not found and has no default`)\n }\n\n function find(source: Lite.TagSource): T | undefined {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n return undefined\n }\n\n function collect(source: Lite.TagSource): T[] {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n const result: T[] = []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) result.push(tags[i]!.value as unknown as T)\n }\n return result\n }\n\n return Object.assign(createTagged, {\n [tagSymbol]: true as const,\n key,\n label: options.label,\n hasDefault,\n defaultValue,\n get,\n find,\n collect,\n }) as unknown as Lite.Tag<T, boolean>\n}\n\n/**\n * Type guard to check if a value is a Tag.\n *\n * @param value - The value to check\n * @returns True if the value is a Tag, false otherwise\n *\n * @example\n * ```typescript\n * if (isTag(value)) {\n * const tagged = value(\"myValue\")\n * }\n * ```\n */\nexport function isTag(value: unknown): value is Lite.Tag<unknown, boolean> {\n return (\n typeof value === \"function\" &&\n (value as unknown as Record<symbol, unknown>)[tagSymbol] === true\n )\n}\n\n/**\n * Type guard to check if a value is a Tagged value.\n *\n * @param value - The value to check\n * @returns True if the value is a Tagged value, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagged(value)) {\n * console.log(value.key, value.value)\n * }\n * ```\n */\nexport function isTagged(value: unknown): value is Lite.Tagged<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[taggedSymbol] === true\n )\n}\n\n/**\n * Tag execution helpers for declaring how tags should be resolved from dependency sources.\n */\nexport const tags = {\n /**\n * Creates a required tag executor that throws if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that requires the tag to be present\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.required(nameTag) },\n * factory: (ctx, { name }) => `Hello ${name}`\n * })\n * ```\n */\n required<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"required\" }\n },\n\n /**\n * Creates an optional tag executor that returns undefined if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that allows the tag to be absent\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.optional(nameTag) },\n * factory: (ctx, { name }) => name ?? \"Anonymous\"\n * })\n * ```\n */\n optional<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T | undefined, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"optional\" }\n },\n\n /**\n * Creates a tag executor that collects all values for the given tag.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that returns an array of all matching tag values\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { names: tags.all(nameTag) },\n * factory: (ctx, { names }) => names.join(\", \")\n * })\n * ```\n */\n all<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T[], T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"all\" }\n },\n}\n\n/**\n * Type guard to check if a value is a TagExecutor.\n *\n * @param value - The value to check\n * @returns True if the value is a TagExecutor, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagExecutor(value)) {\n * console.log(value.mode, value.tag)\n * }\n * ```\n */\nexport function isTagExecutor(value: unknown): value is Lite.TagExecutor<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n tagExecutorSymbol in value\n )\n}\n","import { atomSymbol, controllerDepSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface AtomConfig<T, D extends Record<string, Lite.Dependency>> {\n deps?: D\n factory: Lite.AtomFactory<T, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a long-lived dependency that can be resolved and reused within a scope.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns An Atom instance that can be resolved to produce a value of type T\n *\n * @example\n * ```typescript\n * const dbAtom = atom({\n * factory: async (ctx) => createDatabase()\n * })\n * ```\n */\nexport function atom<T>(config: {\n deps?: undefined\n factory: (ctx: Lite.ResolveContext) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<\n T,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<T, D extends Record<string, Lite.Dependency>>(\n config: AtomConfig<T, D>\n): Lite.Atom<T> {\n return {\n [atomSymbol]: true,\n factory: config.factory as unknown as Lite.AtomFactory<T, Record<string, Lite.Dependency>>,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is an Atom.\n *\n * @param value - The value to check\n * @returns True if the value is an Atom, false otherwise\n *\n * @example\n * ```typescript\n * if (isAtom(value)) {\n * await scope.resolve(value)\n * }\n * ```\n */\nexport function isAtom(value: unknown): value is Lite.Atom<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[atomSymbol] === true\n )\n}\n\n/**\n * Wraps an Atom to receive a Controller instead of the resolved value.\n * The Controller provides full lifecycle control: get, resolve, release, invalidate, and subscribe.\n *\n * @param atom - The Atom to wrap\n * @returns A ControllerDep that resolves to a Controller for the Atom\n *\n * @example\n * ```typescript\n * const configAtom = atom({ factory: () => fetchConfig() })\n * const serverAtom = atom({\n * deps: { config: controller(configAtom) },\n * factory: (ctx, { config }) => {\n * const unsub = config.on(() => ctx.invalidate())\n * ctx.cleanup(unsub)\n * return createServer(config.get().port)\n * }\n * })\n * ```\n */\nexport function controller<T>(atom: Lite.Atom<T>): Lite.ControllerDep<T> {\n return {\n [controllerDepSymbol]: true,\n atom,\n }\n}\n\n/**\n * Type guard to check if a value is a ControllerDep wrapper.\n *\n * @param value - The value to check\n * @returns True if the value is a ControllerDep wrapper, false otherwise\n *\n * @example\n * ```typescript\n * if (isControllerDep(dep)) {\n * const ctrl = scope.controller(dep.atom)\n * }\n * ```\n */\nexport function isControllerDep(value: unknown): value is Lite.ControllerDep<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[controllerDepSymbol] === true\n )\n}\n","import { flowSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface FlowConfig<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n> {\n deps?: D\n factory: Lite.FlowFactory<TOutput, TInput, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a short-lived execution unit that processes input and produces output.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns A Flow instance that can be executed within an execution context\n *\n * @example\n * ```typescript\n * const processUser = flow({\n * factory: async (ctx) => {\n * const userId = ctx.input\n * return await fetchUser(userId)\n * }\n * })\n * ```\n */\nexport function flow<TOutput, TInput = unknown>(config: {\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ExecutionContext, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n>(config: FlowConfig<TOutput, TInput, D>): Lite.Flow<TOutput, TInput> {\n return {\n [flowSymbol]: true,\n factory: config.factory as unknown as Lite.FlowFactory<\n TOutput,\n TInput,\n Record<string, Lite.Dependency>\n >,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is a Flow.\n *\n * @param value - The value to check\n * @returns True if the value is a Flow, false otherwise\n *\n * @example\n * ```typescript\n * if (isFlow(value)) {\n * await ctx.exec({ flow: value, input: data })\n * }\n * ```\n */\nexport function isFlow(value: unknown): value is Lite.Flow<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[flowSymbol] === true\n )\n}\n","import { presetSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\n/**\n * Creates a preset value for an Atom, overriding its factory within a scope.\n *\n * @param atom - The Atom to preset\n * @param value - The preset value (can be a direct value or another Atom)\n * @returns A Preset instance to be used in scope configuration\n *\n * @example\n * ```typescript\n * const scope = await createScope({\n * presets: [preset(dbAtom, mockDatabase)]\n * })\n * ```\n */\nexport function preset<T>(\n atom: Lite.Atom<T>,\n value: T | Lite.Atom<T>\n): Lite.Preset<T> {\n return {\n [presetSymbol]: true,\n atom,\n value,\n }\n}\n\n/**\n * Type guard to check if a value is a Preset.\n *\n * @param value - The value to check\n * @returns True if the value is a Preset, false otherwise\n *\n * @example\n * ```typescript\n * if (isPreset(value)) {\n * console.log(value.atom, value.value)\n * }\n * ```\n */\nexport function isPreset(value: unknown): value is Lite.Preset<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[presetSymbol] === true\n )\n}\n","import { controllerSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise, AtomState } from \"./types\"\nimport { isAtom, isControllerDep } from \"./atom\"\n\ntype ListenerEvent = 'resolving' | 'resolved' | '*'\n\ninterface AtomEntry<T> {\n state: AtomState\n value?: T\n hasValue: boolean\n error?: Error\n cleanups: (() => MaybePromise<void>)[]\n listeners: Map<ListenerEvent, Set<() => void>>\n pendingInvalidate: boolean\n data?: Map<string, unknown>\n}\n\nclass SelectHandleImpl<T, S> implements Lite.SelectHandle<S> {\n private listeners = new Set<() => void>()\n private currentValue: S\n private ctrlUnsub: (() => void) | null = null\n\n constructor(\n private ctrl: Lite.Controller<T>,\n private selector: (value: T) => S,\n private eq: (prev: S, next: S) => boolean\n ) {\n if (ctrl.state !== 'resolved') {\n throw new Error(\"Cannot select from unresolved atom\")\n }\n\n this.currentValue = selector(ctrl.get())\n\n this.ctrlUnsub = ctrl.on('resolved', () => {\n const nextValue = this.selector(this.ctrl.get())\n if (!this.eq(this.currentValue, nextValue)) {\n this.currentValue = nextValue\n this.notifyListeners()\n }\n })\n }\n\n get(): S {\n return this.currentValue\n }\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n\n return () => {\n this.listeners.delete(listener)\n if (this.listeners.size === 0) {\n this.cleanup()\n }\n }\n }\n\n private notifyListeners(): void {\n for (const listener of this.listeners) {\n listener()\n }\n }\n\n private cleanup(): void {\n this.ctrlUnsub?.()\n this.ctrlUnsub = null\n this.listeners.clear()\n }\n}\n\nclass ControllerImpl<T> implements Lite.Controller<T> {\n readonly [controllerSymbol] = true\n\n constructor(\n private atom: Lite.Atom<T>,\n private scope: ScopeImpl\n ) {}\n\n get state(): AtomState {\n const entry = this.scope.getEntry(this.atom)\n return entry?.state ?? 'idle'\n }\n\n get(): T {\n const entry = this.scope.getEntry(this.atom)\n if (!entry || entry.state === 'idle') {\n throw new Error(\"Atom not resolved\")\n }\n if (entry.state === 'failed' && entry.error) {\n throw entry.error\n }\n if (entry.state === 'resolving' && entry.hasValue) {\n return entry.value as T\n }\n if (entry.state === 'resolved' && entry.hasValue) {\n return entry.value as T\n }\n throw new Error(\"Atom not resolved\")\n }\n\n async resolve(): Promise<T> {\n return this.scope.resolve(this.atom)\n }\n\n async release(): Promise<void> {\n return this.scope.release(this.atom)\n }\n\n invalidate(): void {\n this.scope.invalidate(this.atom)\n }\n\n on(event: ListenerEvent, listener: () => void): () => void {\n return this.scope.addListener(this.atom, event, listener)\n }\n}\n\nclass ScopeImpl implements Lite.Scope {\n private cache = new Map<Lite.Atom<unknown>, AtomEntry<unknown>>()\n private presets = new Map<Lite.Atom<unknown>, unknown | Lite.Atom<unknown>>()\n private resolving = new Set<Lite.Atom<unknown>>()\n private pending = new Map<Lite.Atom<unknown>, Promise<unknown>>()\n private stateListeners = new Map<AtomState, Map<Lite.Atom<unknown>, Set<() => void>>>()\n private invalidationQueue = new Set<Lite.Atom<unknown>>()\n private invalidationScheduled = false\n private initialized = false\n readonly extensions: Lite.Extension[]\n readonly tags: Lite.Tagged<unknown>[]\n readonly ready: Promise<void>\n\n private scheduleInvalidation<T>(atom: Lite.Atom<T>): void {\n this.invalidationQueue.add(atom)\n if (!this.invalidationScheduled) {\n this.invalidationScheduled = true\n queueMicrotask(() => this.flushInvalidations())\n }\n }\n\n private flushInvalidations(): void {\n this.invalidationScheduled = false\n const atoms = [...this.invalidationQueue]\n this.invalidationQueue.clear()\n for (const atom of atoms) {\n this.invalidate(atom)\n }\n }\n\n constructor(options?: Lite.ScopeOptions) {\n this.extensions = options?.extensions ?? []\n this.tags = options?.tags ?? []\n\n for (const p of options?.presets ?? []) {\n this.presets.set(p.atom, p.value)\n }\n\n this.ready = this.init()\n }\n\n private async init(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.init) {\n await ext.init(this)\n }\n }\n this.initialized = true\n }\n\n getEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> | undefined {\n return this.cache.get(atom) as AtomEntry<T> | undefined\n }\n\n private getOrCreateEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> {\n let entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) {\n entry = {\n state: 'idle',\n hasValue: false,\n cleanups: [],\n listeners: new Map([\n ['resolving', new Set()],\n ['resolved', new Set()],\n ['*', new Set()],\n ]),\n pendingInvalidate: false,\n }\n this.cache.set(atom, entry as AtomEntry<unknown>)\n }\n return entry\n }\n\n addListener<T>(atom: Lite.Atom<T>, event: ListenerEvent, listener: () => void): () => void {\n const entry = this.getOrCreateEntry(atom)\n const listeners = entry.listeners.get(event)!\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }\n\n private notifyListeners<T>(atom: Lite.Atom<T>, event: 'resolving' | 'resolved'): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const eventListeners = entry.listeners.get(event)\n if (eventListeners) {\n for (const listener of eventListeners) {\n listener()\n }\n }\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private notifyAllListeners<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private emitStateChange(state: AtomState, atom: Lite.Atom<unknown>): void {\n const stateMap = this.stateListeners.get(state)\n if (stateMap) {\n const listeners = stateMap.get(atom)\n if (listeners) {\n for (const listener of listeners) {\n listener()\n }\n }\n }\n }\n\n on(event: AtomState, atom: Lite.Atom<unknown>, listener: () => void): () => void {\n let stateMap = this.stateListeners.get(event)\n if (!stateMap) {\n stateMap = new Map()\n this.stateListeners.set(event, stateMap)\n }\n let listeners = stateMap.get(atom)\n if (!listeners) {\n listeners = new Set()\n stateMap.set(atom, listeners)\n }\n listeners.add(listener)\n\n const capturedStateMap = stateMap\n const capturedListeners = listeners\n\n return () => {\n capturedListeners.delete(listener)\n if (capturedListeners.size === 0) {\n capturedStateMap.delete(atom)\n if (capturedStateMap.size === 0) {\n this.stateListeners.delete(event)\n }\n }\n }\n }\n\n async resolve<T>(atom: Lite.Atom<T>): Promise<T> {\n if (!this.initialized) {\n await this.ready\n }\n\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (entry?.state === 'resolved') {\n return entry.value as T\n }\n\n const pendingPromise = this.pending.get(atom)\n if (pendingPromise) {\n return pendingPromise as Promise<T>\n }\n\n if (this.resolving.has(atom)) {\n throw new Error(\"Circular dependency detected\")\n }\n\n const presetValue = this.presets.get(atom)\n if (presetValue !== undefined) {\n if (isAtom(presetValue)) {\n return this.resolve(presetValue as Lite.Atom<T>)\n }\n const newEntry = this.getOrCreateEntry(atom)\n newEntry.state = 'resolved'\n newEntry.value = presetValue as T\n newEntry.hasValue = true\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n return newEntry.value\n }\n\n this.resolving.add(atom)\n\n const promise = this.doResolve(atom)\n this.pending.set(atom, promise as Promise<unknown>)\n\n try {\n return await promise\n } finally {\n this.resolving.delete(atom)\n this.pending.delete(atom)\n }\n }\n\n private async doResolve<T>(atom: Lite.Atom<T>): Promise<T> {\n const entry = this.getOrCreateEntry(atom)\n\n const wasResolving = entry.state === 'resolving'\n if (!wasResolving) {\n entry.state = 'resolving'\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom, 'resolving')\n }\n\n const resolvedDeps = await this.resolveDeps(atom.deps)\n\n const ctx: Lite.ResolveContext = {\n cleanup: (fn) => entry.cleanups.push(fn),\n invalidate: () => {\n this.scheduleInvalidation(atom)\n },\n scope: this,\n get data() {\n if (!entry.data) {\n entry.data = new Map()\n }\n return entry.data\n },\n }\n\n const factory = atom.factory as (\n ctx: Lite.ResolveContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doResolve = async () => {\n if (atom.deps && Object.keys(atom.deps).length > 0) {\n return factory(ctx, resolvedDeps)\n } else {\n return factory(ctx)\n }\n }\n\n try {\n const value = await this.applyResolveExtensions(atom, doResolve)\n entry.state = 'resolved'\n entry.value = value\n entry.hasValue = true\n entry.error = undefined\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.scheduleInvalidation(atom)\n }\n\n return value\n } catch (err) {\n entry.state = 'failed'\n entry.error = err instanceof Error ? err : new Error(String(err))\n entry.value = undefined\n entry.hasValue = false\n this.emitStateChange('failed', atom)\n this.notifyAllListeners(atom)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.scheduleInvalidation(atom)\n }\n\n throw entry.error\n }\n }\n\n private async applyResolveExtensions<T>(\n atom: Lite.Atom<T>,\n doResolve: () => Promise<T>\n ): Promise<T> {\n let next = doResolve\n\n for (let i = this.extensions.length - 1; i >= 0; i--) {\n const ext = this.extensions[i]\n if (ext?.wrapResolve) {\n const currentNext = next\n next = ext.wrapResolve.bind(ext, currentNext, atom, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n async resolveDeps(\n deps: Record<string, Lite.Dependency> | undefined,\n tagSource?: Lite.Tagged<unknown>[]\n ): Promise<Record<string, unknown>> {\n if (!deps) return {}\n\n const result: Record<string, unknown> = {}\n const tags = tagSource ?? this.tags\n\n for (const [key, dep] of Object.entries(deps)) {\n if (isAtom(dep)) {\n result[key] = await this.resolve(dep)\n } else if (isControllerDep(dep)) {\n result[key] = new ControllerImpl(dep.atom, this)\n } else if (tagExecutorSymbol in (dep as object)) {\n const tagExecutor = dep as Lite.TagExecutor<unknown, boolean>\n\n switch (tagExecutor.mode) {\n case \"required\":\n result[key] = tagExecutor.tag.get(tags)\n break\n case \"optional\":\n result[key] = tagExecutor.tag.find(tags)\n break\n case \"all\":\n result[key] = tagExecutor.tag.collect(tags)\n break\n }\n }\n }\n\n return result\n }\n\n controller<T>(atom: Lite.Atom<T>): Lite.Controller<T> {\n return new ControllerImpl(atom, this)\n }\n\n select<T, S>(\n atom: Lite.Atom<T>,\n selector: (value: T) => S,\n options?: Lite.SelectOptions<S>\n ): Lite.SelectHandle<S> {\n const ctrl = this.controller(atom)\n const eq = options?.eq ?? ((a, b) => a === b)\n return new SelectHandleImpl(ctrl, selector, eq)\n }\n\n invalidate<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n if (entry.state === 'idle') return\n\n if (entry.state === 'resolving') {\n entry.pendingInvalidate = true\n return\n }\n\n this.doInvalidate(atom, entry as AtomEntry<T>)\n }\n\n private async doInvalidate<T>(atom: Lite.Atom<T>, entry: AtomEntry<T>): Promise<void> {\n const previousValue = entry.value\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n entry.cleanups = []\n entry.state = 'resolving'\n entry.value = previousValue\n entry.error = undefined\n entry.pendingInvalidate = false\n this.pending.delete(atom)\n this.resolving.delete(atom)\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom, 'resolving')\n\n this.resolve(atom).catch(() => {})\n }\n\n async release<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n\n this.cache.delete(atom)\n }\n\n async dispose(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.dispose) {\n await ext.dispose(this)\n }\n }\n\n const atoms = Array.from(this.cache.keys())\n for (const atom of atoms) {\n await this.release(atom as Lite.Atom<unknown>)\n }\n }\n\n createContext(options?: Lite.CreateContextOptions): Lite.ExecutionContext {\n return new ExecutionContextImpl(this, options)\n }\n}\n\nclass ExecutionContextImpl implements Lite.ExecutionContext {\n private cleanups: (() => MaybePromise<void>)[] = []\n private closed = false\n private _input: unknown = undefined\n private readonly baseTags: Lite.Tagged<unknown>[]\n\n constructor(\n readonly scope: ScopeImpl,\n options?: Lite.CreateContextOptions\n ) {\n const ctxTags = options?.tags\n this.baseTags = ctxTags?.length\n ? [...ctxTags, ...scope.tags]\n : scope.tags\n }\n\n get input(): unknown {\n return this._input\n }\n\n async exec<T>(options: Lite.ExecFlowOptions<T> | Lite.ExecFnOptions<T>): Promise<T> {\n if (this.closed) {\n throw new Error(\"ExecutionContext is closed\")\n }\n\n if (\"flow\" in options) {\n return this.execFlow(options)\n } else {\n return this.execFn(options)\n }\n }\n\n private async execFlow<T>(options: Lite.ExecFlowOptions<T>): Promise<T> {\n const { flow, input, tags: execTags } = options\n\n const hasExtraTags = (execTags?.length ?? 0) > 0 || (flow.tags?.length ?? 0) > 0\n const allTags = hasExtraTags\n ? [...(execTags ?? []), ...this.baseTags, ...(flow.tags ?? [])]\n : this.baseTags\n\n const resolvedDeps = await this.scope.resolveDeps(flow.deps, allTags)\n\n this._input = input\n\n const factory = flow.factory as unknown as (\n ctx: Lite.ExecutionContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doExec = async (): Promise<T> => {\n if (flow.deps && Object.keys(flow.deps).length > 0) {\n return factory(this, resolvedDeps)\n } else {\n return factory(this)\n }\n }\n\n return this.applyExecExtensions(flow, doExec)\n }\n\n private execFn<T>(options: Lite.ExecFnOptions<T>): Promise<T> {\n const { fn, params } = options\n const doExec = () => Promise.resolve(fn(...params))\n return this.applyExecExtensions(fn, doExec)\n }\n\n private async applyExecExtensions<T>(\n target: Lite.Flow<T, unknown> | ((...args: unknown[]) => MaybePromise<T>),\n doExec: () => Promise<T>\n ): Promise<T> {\n let next = doExec\n\n for (let i = this.scope.extensions.length - 1; i >= 0; i--) {\n const ext = this.scope.extensions[i]\n if (ext?.wrapExec) {\n const currentNext = next\n next = ext.wrapExec.bind(ext, currentNext, target, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n onClose(fn: () => MaybePromise<void>): void {\n this.cleanups.push(fn)\n }\n\n async close(): Promise<void> {\n if (this.closed) return\n\n this.closed = true\n\n for (let i = this.cleanups.length - 1; i >= 0; i--) {\n const cleanup = this.cleanups[i]\n if (cleanup) await cleanup()\n }\n }\n}\n\n/**\n * Creates a DI container that manages Atom resolution, caching, and lifecycle.\n *\n * The scope is returned synchronously, with a `ready` promise that resolves\n * when all extensions have been initialized. Resolution methods automatically\n * wait for `ready` before proceeding.\n *\n * @param options - Optional configuration for extensions, presets, and tags\n * @returns A Scope instance with a `ready` promise for extension initialization\n *\n * @example\n * ```typescript\n * const scope = createScope({\n * extensions: [loggingExtension],\n * presets: [preset(dbAtom, testDb)]\n * })\n *\n * // Option 1: resolve() waits for ready internally\n * const db = await scope.resolve(dbAtom)\n *\n * // Option 2: explicit wait\n * await scope.ready\n * const db = await scope.resolve(dbAtom)\n * ```\n */\nexport function createScope(options?: Lite.ScopeOptions): Lite.Scope {\n return new ScopeImpl(options)\n}\n","export type { Lite, AtomState } from \"./types\"\nexport {\n atomSymbol,\n flowSymbol,\n tagSymbol,\n taggedSymbol,\n controllerDepSymbol,\n presetSymbol,\n controllerSymbol,\n tagExecutorSymbol,\n} from \"./symbols\"\nexport { tag, tags, isTag, isTagged, isTagExecutor } from \"./tag\"\nexport { atom, isAtom, controller, isControllerDep } from \"./atom\"\nexport { flow, isFlow } from \"./flow\"\nexport { preset, isPreset } from \"./preset\"\nexport { createScope } from \"./scope\"\n\nexport const VERSION = \"0.0.1\"\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["atomSymbol: unique symbol","flowSymbol: unique symbol","tagSymbol: unique symbol","taggedSymbol: unique symbol","controllerDepSymbol: unique symbol","presetSymbol: unique symbol","controllerSymbol: unique symbol","tagExecutorSymbol: unique symbol","tags","result: T[]","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"],"sources":["../src/symbols.ts","../src/tag.ts","../src/atom.ts","../src/flow.ts","../src/preset.ts","../src/scope.ts","../src/index.ts"],"sourcesContent":["export const atomSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/atom\")\nexport const flowSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/flow\")\nexport const tagSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag\")\nexport const taggedSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tagged\")\nexport const controllerDepSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller-dep\")\nexport const presetSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/preset\")\nexport const controllerSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/controller\")\nexport const tagExecutorSymbol: unique symbol = Symbol.for(\"@pumped-fn/lite/tag-executor\")\n","import { tagSymbol, taggedSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\nexport interface TagOptions<T, HasDefault extends boolean> {\n label: string\n default?: HasDefault extends true ? T : never\n}\n\n/**\n * Creates a metadata tag for attaching and retrieving typed values from Atoms and Flows.\n *\n * @param options - Configuration object with label and optional default value\n * @returns A Tag instance that can create tagged values and query them from sources\n *\n * @example\n * ```typescript\n * const nameTag = tag<string>({ label: \"name\" })\n * const myAtom = atom({\n * factory: (ctx) => \"value\",\n * tags: [nameTag(\"MyAtom\")]\n * })\n * ```\n */\nexport function tag<T>(options: { label: string }): Lite.Tag<T, false>\nexport function tag<T>(options: {\n label: string\n default: T\n}): Lite.Tag<T, true>\nexport function tag<T>(options: TagOptions<T, boolean>): Lite.Tag<T, boolean> {\n const key = Symbol.for(`@pumped-fn/lite/tag/${options.label}`)\n const hasDefault = \"default\" in options\n const defaultValue = hasDefault ? options.default : undefined\n\n function createTagged(value: T): Lite.Tagged<T> {\n return {\n [taggedSymbol]: true,\n key,\n value,\n }\n }\n\n function get(source: Lite.TagSource): T {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n throw new Error(`Tag \"${options.label}\" not found and has no default`)\n }\n\n function find(source: Lite.TagSource): T | undefined {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) return tags[i]!.value as unknown as T\n }\n if (hasDefault) return defaultValue as unknown as T\n return undefined\n }\n\n function collect(source: Lite.TagSource): T[] {\n const tags = Array.isArray(source) ? source : source.tags ?? []\n const result: T[] = []\n for (let i = 0; i < tags.length; i++) {\n if (tags[i]!.key === key) result.push(tags[i]!.value as unknown as T)\n }\n return result\n }\n\n return Object.assign(createTagged, {\n [tagSymbol]: true as const,\n key,\n label: options.label,\n hasDefault,\n defaultValue,\n get,\n find,\n collect,\n }) as unknown as Lite.Tag<T, boolean>\n}\n\n/**\n * Type guard to check if a value is a Tag.\n *\n * @param value - The value to check\n * @returns True if the value is a Tag, false otherwise\n *\n * @example\n * ```typescript\n * if (isTag(value)) {\n * const tagged = value(\"myValue\")\n * }\n * ```\n */\nexport function isTag(value: unknown): value is Lite.Tag<unknown, boolean> {\n return (\n typeof value === \"function\" &&\n (value as unknown as Record<symbol, unknown>)[tagSymbol] === true\n )\n}\n\n/**\n * Type guard to check if a value is a Tagged value.\n *\n * @param value - The value to check\n * @returns True if the value is a Tagged value, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagged(value)) {\n * console.log(value.key, value.value)\n * }\n * ```\n */\nexport function isTagged(value: unknown): value is Lite.Tagged<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[taggedSymbol] === true\n )\n}\n\n/**\n * Tag execution helpers for declaring how tags should be resolved from dependency sources.\n */\nexport const tags = {\n /**\n * Creates a required tag executor that throws if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that requires the tag to be present\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.required(nameTag) },\n * factory: (ctx, { name }) => `Hello ${name}`\n * })\n * ```\n */\n required<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"required\" }\n },\n\n /**\n * Creates an optional tag executor that returns undefined if the tag is not found.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that allows the tag to be absent\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { name: tags.optional(nameTag) },\n * factory: (ctx, { name }) => name ?? \"Anonymous\"\n * })\n * ```\n */\n optional<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T | undefined, T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"optional\" }\n },\n\n /**\n * Creates a tag executor that collects all values for the given tag.\n *\n * @param tag - The tag to execute\n * @returns A tag executor that returns an array of all matching tag values\n *\n * @example\n * ```typescript\n * const myAtom = atom({\n * deps: { names: tags.all(nameTag) },\n * factory: (ctx, { names }) => names.join(\", \")\n * })\n * ```\n */\n all<T>(tag: Lite.Tag<T, boolean>): Lite.TagExecutor<T[], T> {\n return { [tagExecutorSymbol]: true, tag, mode: \"all\" }\n },\n}\n\n/**\n * Type guard to check if a value is a TagExecutor.\n *\n * @param value - The value to check\n * @returns True if the value is a TagExecutor, false otherwise\n *\n * @example\n * ```typescript\n * if (isTagExecutor(value)) {\n * console.log(value.mode, value.tag)\n * }\n * ```\n */\nexport function isTagExecutor(value: unknown): value is Lite.TagExecutor<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n tagExecutorSymbol in value\n )\n}\n","import { atomSymbol, controllerDepSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface AtomConfig<T, D extends Record<string, Lite.Dependency>> {\n deps?: D\n factory: Lite.AtomFactory<T, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a long-lived dependency that can be resolved and reused within a scope.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns An Atom instance that can be resolved to produce a value of type T\n *\n * @example\n * ```typescript\n * const dbAtom = atom({\n * factory: async (ctx) => createDatabase()\n * })\n * ```\n */\nexport function atom<T>(config: {\n deps?: undefined\n factory: (ctx: Lite.ResolveContext) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<\n T,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ResolveContext, deps: Lite.InferDeps<D>) => MaybePromise<T>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Atom<T>\n\nexport function atom<T, D extends Record<string, Lite.Dependency>>(\n config: AtomConfig<T, D>\n): Lite.Atom<T> {\n return {\n [atomSymbol]: true,\n factory: config.factory as unknown as Lite.AtomFactory<T, Record<string, Lite.Dependency>>,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is an Atom.\n *\n * @param value - The value to check\n * @returns True if the value is an Atom, false otherwise\n *\n * @example\n * ```typescript\n * if (isAtom(value)) {\n * await scope.resolve(value)\n * }\n * ```\n */\nexport function isAtom(value: unknown): value is Lite.Atom<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[atomSymbol] === true\n )\n}\n\n/**\n * Wraps an Atom to receive a Controller instead of the resolved value.\n * The Controller provides full lifecycle control: get, resolve, release, invalidate, and subscribe.\n *\n * @param atom - The Atom to wrap\n * @returns A ControllerDep that resolves to a Controller for the Atom\n *\n * @example\n * ```typescript\n * const configAtom = atom({ factory: () => fetchConfig() })\n * const serverAtom = atom({\n * deps: { config: controller(configAtom) },\n * factory: (ctx, { config }) => {\n * const unsub = config.on(() => ctx.invalidate())\n * ctx.cleanup(unsub)\n * return createServer(config.get().port)\n * }\n * })\n * ```\n */\nexport function controller<T>(atom: Lite.Atom<T>): Lite.ControllerDep<T> {\n return {\n [controllerDepSymbol]: true,\n atom,\n }\n}\n\n/**\n * Type guard to check if a value is a ControllerDep wrapper.\n *\n * @param value - The value to check\n * @returns True if the value is a ControllerDep wrapper, false otherwise\n *\n * @example\n * ```typescript\n * if (isControllerDep(dep)) {\n * const ctrl = scope.controller(dep.atom)\n * }\n * ```\n */\nexport function isControllerDep(value: unknown): value is Lite.ControllerDep<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[controllerDepSymbol] === true\n )\n}\n","import { flowSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise } from \"./types\"\n\nexport interface FlowConfig<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n> {\n deps?: D\n factory: Lite.FlowFactory<TOutput, TInput, D>\n tags?: Lite.Tagged<unknown>[]\n}\n\n/**\n * Creates a short-lived execution unit that processes input and produces output.\n *\n * @param config - Configuration object containing factory function, optional dependencies, and tags\n * @returns A Flow instance that can be executed within an execution context\n *\n * @example\n * ```typescript\n * const processUser = flow({\n * factory: async (ctx) => {\n * const userId = ctx.input\n * return await fetchUser(userId)\n * }\n * })\n * ```\n */\nexport function flow<TOutput, TInput = unknown>(config: {\n deps?: undefined\n factory: (ctx: Lite.ExecutionContext) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n const D extends Record<string, Lite.Atom<unknown> | Lite.ControllerDep<unknown> | { mode: string }>,\n>(config: {\n deps: D\n factory: (ctx: Lite.ExecutionContext, deps: Lite.InferDeps<D>) => MaybePromise<TOutput>\n tags?: Lite.Tagged<unknown>[]\n}): Lite.Flow<TOutput, TInput>\n\nexport function flow<\n TOutput,\n TInput,\n D extends Record<string, Lite.Dependency>,\n>(config: FlowConfig<TOutput, TInput, D>): Lite.Flow<TOutput, TInput> {\n return {\n [flowSymbol]: true,\n factory: config.factory as unknown as Lite.FlowFactory<\n TOutput,\n TInput,\n Record<string, Lite.Dependency>\n >,\n deps: config.deps as unknown as Record<string, Lite.Dependency> | undefined,\n tags: config.tags,\n }\n}\n\n/**\n * Type guard to check if a value is a Flow.\n *\n * @param value - The value to check\n * @returns True if the value is a Flow, false otherwise\n *\n * @example\n * ```typescript\n * if (isFlow(value)) {\n * await ctx.exec({ flow: value, input: data })\n * }\n * ```\n */\nexport function isFlow(value: unknown): value is Lite.Flow<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[flowSymbol] === true\n )\n}\n","import { presetSymbol } from \"./symbols\"\nimport type { Lite } from \"./types\"\n\n/**\n * Creates a preset value for an Atom, overriding its factory within a scope.\n *\n * @param atom - The Atom to preset\n * @param value - The preset value (can be a direct value or another Atom)\n * @returns A Preset instance to be used in scope configuration\n *\n * @example\n * ```typescript\n * const scope = await createScope({\n * presets: [preset(dbAtom, mockDatabase)]\n * })\n * ```\n */\nexport function preset<T>(\n atom: Lite.Atom<T>,\n value: T | Lite.Atom<T>\n): Lite.Preset<T> {\n return {\n [presetSymbol]: true,\n atom,\n value,\n }\n}\n\n/**\n * Type guard to check if a value is a Preset.\n *\n * @param value - The value to check\n * @returns True if the value is a Preset, false otherwise\n *\n * @example\n * ```typescript\n * if (isPreset(value)) {\n * console.log(value.atom, value.value)\n * }\n * ```\n */\nexport function isPreset(value: unknown): value is Lite.Preset<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as Record<symbol, unknown>)[presetSymbol] === true\n )\n}\n","import { controllerSymbol, tagExecutorSymbol } from \"./symbols\"\nimport type { Lite, MaybePromise, AtomState } from \"./types\"\nimport { isAtom, isControllerDep } from \"./atom\"\n\ntype ListenerEvent = 'resolving' | 'resolved' | '*'\n\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 initialized = false\n readonly extensions: Lite.Extension[]\n readonly tags: Lite.Tagged<unknown>[]\n readonly ready: Promise<void>\n\n private scheduleInvalidation<T>(atom: Lite.Atom<T>): void {\n this.invalidationQueue.add(atom)\n if (!this.invalidationScheduled) {\n this.invalidationScheduled = true\n queueMicrotask(() => this.flushInvalidations())\n }\n }\n\n private flushInvalidations(): void {\n this.invalidationScheduled = false\n const atoms = [...this.invalidationQueue]\n this.invalidationQueue.clear()\n for (const atom of atoms) {\n this.invalidate(atom)\n }\n }\n\n constructor(options?: Lite.ScopeOptions) {\n this.extensions = options?.extensions ?? []\n this.tags = options?.tags ?? []\n\n for (const p of options?.presets ?? []) {\n this.presets.set(p.atom, p.value)\n }\n\n this.ready = this.init()\n }\n\n private async init(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.init) {\n await ext.init(this)\n }\n }\n this.initialized = true\n }\n\n getEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> | undefined {\n return this.cache.get(atom) as AtomEntry<T> | undefined\n }\n\n private getOrCreateEntry<T>(atom: Lite.Atom<T>): AtomEntry<T> {\n let entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (!entry) {\n entry = {\n state: 'idle',\n hasValue: false,\n cleanups: [],\n listeners: new Map([\n ['resolving', new Set()],\n ['resolved', new Set()],\n ['*', new Set()],\n ]),\n pendingInvalidate: false,\n }\n this.cache.set(atom, entry as AtomEntry<unknown>)\n }\n return entry\n }\n\n addListener<T>(atom: Lite.Atom<T>, event: ListenerEvent, listener: () => void): () => void {\n const entry = this.getOrCreateEntry(atom)\n const listeners = entry.listeners.get(event)!\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n }\n\n private notifyListeners<T>(atom: Lite.Atom<T>, event: 'resolving' | 'resolved'): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const eventListeners = entry.listeners.get(event)\n if (eventListeners) {\n for (const listener of eventListeners) {\n listener()\n }\n }\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private notifyAllListeners<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n const allListeners = entry.listeners.get('*')\n if (allListeners) {\n for (const listener of allListeners) {\n listener()\n }\n }\n }\n\n private emitStateChange(state: AtomState, atom: Lite.Atom<unknown>): void {\n const stateMap = this.stateListeners.get(state)\n if (stateMap) {\n const listeners = stateMap.get(atom)\n if (listeners) {\n for (const listener of listeners) {\n listener()\n }\n }\n }\n }\n\n on(event: AtomState, atom: Lite.Atom<unknown>, listener: () => void): () => void {\n let stateMap = this.stateListeners.get(event)\n if (!stateMap) {\n stateMap = new Map()\n this.stateListeners.set(event, stateMap)\n }\n let listeners = stateMap.get(atom)\n if (!listeners) {\n listeners = new Set()\n stateMap.set(atom, listeners)\n }\n listeners.add(listener)\n\n const capturedStateMap = stateMap\n const capturedListeners = listeners\n\n return () => {\n capturedListeners.delete(listener)\n if (capturedListeners.size === 0) {\n capturedStateMap.delete(atom)\n if (capturedStateMap.size === 0) {\n this.stateListeners.delete(event)\n }\n }\n }\n }\n\n async resolve<T>(atom: Lite.Atom<T>): Promise<T> {\n if (!this.initialized) {\n await this.ready\n }\n\n const entry = this.cache.get(atom) as AtomEntry<T> | undefined\n if (entry?.state === 'resolved') {\n return entry.value as T\n }\n\n const pendingPromise = this.pending.get(atom)\n if (pendingPromise) {\n return pendingPromise as Promise<T>\n }\n\n if (this.resolving.has(atom)) {\n throw new Error(\"Circular dependency detected\")\n }\n\n const presetValue = this.presets.get(atom)\n if (presetValue !== undefined) {\n if (isAtom(presetValue)) {\n return this.resolve(presetValue as Lite.Atom<T>)\n }\n const newEntry = this.getOrCreateEntry(atom)\n newEntry.state = 'resolved'\n newEntry.value = presetValue as T\n newEntry.hasValue = true\n this.emitStateChange('resolved', atom)\n this.notifyListeners(atom, 'resolved')\n return newEntry.value\n }\n\n this.resolving.add(atom)\n\n const promise = this.doResolve(atom)\n this.pending.set(atom, promise as Promise<unknown>)\n\n try {\n return await promise\n } finally {\n this.resolving.delete(atom)\n this.pending.delete(atom)\n }\n }\n\n private async doResolve<T>(atom: Lite.Atom<T>): Promise<T> {\n const entry = this.getOrCreateEntry(atom)\n\n const wasResolving = entry.state === 'resolving'\n if (!wasResolving) {\n entry.state = 'resolving'\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom, 'resolving')\n }\n\n const resolvedDeps = await this.resolveDeps(atom.deps)\n\n const ctx: Lite.ResolveContext = {\n cleanup: (fn) => entry.cleanups.push(fn),\n invalidate: () => {\n this.scheduleInvalidation(atom)\n },\n scope: this,\n get data() {\n if (!entry.data) {\n entry.data = new 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.scheduleInvalidation(atom)\n }\n\n return value\n } catch (err) {\n entry.state = 'failed'\n entry.error = err instanceof Error ? err : new Error(String(err))\n entry.value = undefined\n entry.hasValue = false\n this.emitStateChange('failed', atom)\n this.notifyAllListeners(atom)\n\n if (entry.pendingInvalidate) {\n entry.pendingInvalidate = false\n this.scheduleInvalidation(atom)\n }\n\n throw entry.error\n }\n }\n\n private async applyResolveExtensions<T>(\n atom: Lite.Atom<T>,\n doResolve: () => Promise<T>\n ): Promise<T> {\n let next = doResolve\n\n for (let i = this.extensions.length - 1; i >= 0; i--) {\n const ext = this.extensions[i]\n if (ext?.wrapResolve) {\n const currentNext = next\n next = ext.wrapResolve.bind(ext, currentNext, atom, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n async resolveDeps(\n deps: Record<string, Lite.Dependency> | undefined,\n tagSource?: Lite.Tagged<unknown>[]\n ): Promise<Record<string, unknown>> {\n if (!deps) return {}\n\n const result: Record<string, unknown> = {}\n const tags = tagSource ?? this.tags\n\n for (const [key, dep] of Object.entries(deps)) {\n if (isAtom(dep)) {\n result[key] = await this.resolve(dep)\n } else if (isControllerDep(dep)) {\n result[key] = new ControllerImpl(dep.atom, this)\n } else if (tagExecutorSymbol in (dep as object)) {\n const tagExecutor = dep as Lite.TagExecutor<unknown, boolean>\n\n switch (tagExecutor.mode) {\n case \"required\":\n result[key] = tagExecutor.tag.get(tags)\n break\n case \"optional\":\n result[key] = tagExecutor.tag.find(tags)\n break\n case \"all\":\n result[key] = tagExecutor.tag.collect(tags)\n break\n }\n }\n }\n\n return result\n }\n\n controller<T>(atom: Lite.Atom<T>): Lite.Controller<T> {\n return new ControllerImpl(atom, this)\n }\n\n select<T, S>(\n atom: Lite.Atom<T>,\n selector: (value: T) => S,\n options?: Lite.SelectOptions<S>\n ): Lite.SelectHandle<S> {\n const ctrl = this.controller(atom)\n const eq = options?.eq ?? ((a, b) => a === b)\n return new SelectHandleImpl(ctrl, selector, eq)\n }\n\n invalidate<T>(atom: Lite.Atom<T>): void {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n if (entry.state === 'idle') return\n\n if (entry.state === 'resolving') {\n entry.pendingInvalidate = true\n return\n }\n\n this.doInvalidate(atom, entry as AtomEntry<T>)\n }\n\n private async doInvalidate<T>(atom: Lite.Atom<T>, entry: AtomEntry<T>): Promise<void> {\n const previousValue = entry.value\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n entry.cleanups = []\n entry.state = 'resolving'\n entry.value = previousValue\n entry.error = undefined\n entry.pendingInvalidate = false\n this.pending.delete(atom)\n this.resolving.delete(atom)\n this.emitStateChange('resolving', atom)\n this.notifyListeners(atom, 'resolving')\n\n this.resolve(atom).catch(() => {})\n }\n\n async release<T>(atom: Lite.Atom<T>): Promise<void> {\n const entry = this.cache.get(atom)\n if (!entry) return\n\n for (let i = entry.cleanups.length - 1; i >= 0; i--) {\n const cleanup = entry.cleanups[i]\n if (cleanup) await cleanup()\n }\n\n this.cache.delete(atom)\n }\n\n async dispose(): Promise<void> {\n for (const ext of this.extensions) {\n if (ext.dispose) {\n await ext.dispose(this)\n }\n }\n\n const atoms = Array.from(this.cache.keys())\n for (const atom of atoms) {\n await this.release(atom as Lite.Atom<unknown>)\n }\n }\n\n createContext(options?: Lite.CreateContextOptions): Lite.ExecutionContext {\n return new ExecutionContextImpl(this, options)\n }\n}\n\nclass ExecutionContextImpl implements Lite.ExecutionContext {\n private cleanups: (() => MaybePromise<void>)[] = []\n private closed = false\n private _input: unknown = undefined\n private readonly baseTags: Lite.Tagged<unknown>[]\n\n constructor(\n readonly scope: ScopeImpl,\n options?: Lite.CreateContextOptions\n ) {\n const ctxTags = options?.tags\n this.baseTags = ctxTags?.length\n ? [...ctxTags, ...scope.tags]\n : scope.tags\n }\n\n get input(): unknown {\n return this._input\n }\n\n async exec<T>(options: Lite.ExecFlowOptions<T> | Lite.ExecFnOptions<T>): Promise<T> {\n if (this.closed) {\n throw new Error(\"ExecutionContext is closed\")\n }\n\n if (\"flow\" in options) {\n return this.execFlow(options)\n } else {\n return this.execFn(options)\n }\n }\n\n private async execFlow<T>(options: Lite.ExecFlowOptions<T>): Promise<T> {\n const { flow, input, tags: execTags } = options\n\n const hasExtraTags = (execTags?.length ?? 0) > 0 || (flow.tags?.length ?? 0) > 0\n const allTags = hasExtraTags\n ? [...(execTags ?? []), ...this.baseTags, ...(flow.tags ?? [])]\n : this.baseTags\n\n const resolvedDeps = await this.scope.resolveDeps(flow.deps, allTags)\n\n this._input = input\n\n const factory = flow.factory as unknown as (\n ctx: Lite.ExecutionContext,\n deps?: Record<string, unknown>\n ) => MaybePromise<T>\n\n const doExec = async (): Promise<T> => {\n if (flow.deps && Object.keys(flow.deps).length > 0) {\n return factory(this, resolvedDeps)\n } else {\n return factory(this)\n }\n }\n\n return this.applyExecExtensions(flow, doExec)\n }\n\n private execFn<T>(options: Lite.ExecFnOptions<T>): Promise<T> {\n const { fn, params } = options\n const doExec = () => Promise.resolve(fn(...params))\n return this.applyExecExtensions(fn, doExec)\n }\n\n private async applyExecExtensions<T>(\n target: Lite.Flow<T, unknown> | ((...args: unknown[]) => MaybePromise<T>),\n doExec: () => Promise<T>\n ): Promise<T> {\n let next = doExec\n\n for (let i = this.scope.extensions.length - 1; i >= 0; i--) {\n const ext = this.scope.extensions[i]\n if (ext?.wrapExec) {\n const currentNext = next\n next = ext.wrapExec.bind(ext, currentNext, target, this) as () => Promise<T>\n }\n }\n\n return next()\n }\n\n onClose(fn: () => MaybePromise<void>): void {\n this.cleanups.push(fn)\n }\n\n async close(): Promise<void> {\n if (this.closed) return\n\n this.closed = true\n\n for (let i = this.cleanups.length - 1; i >= 0; i--) {\n const cleanup = this.cleanups[i]\n if (cleanup) await cleanup()\n }\n }\n}\n\n/**\n * Creates a DI container that manages Atom resolution, caching, and lifecycle.\n *\n * The scope is returned synchronously, with a `ready` promise that resolves\n * when all extensions have been initialized. Resolution methods automatically\n * wait for `ready` before proceeding.\n *\n * @param options - Optional configuration for extensions, presets, and tags\n * @returns A Scope instance with a `ready` promise for extension initialization\n *\n * @example\n * ```typescript\n * const scope = createScope({\n * extensions: [loggingExtension],\n * presets: [preset(dbAtom, testDb)]\n * })\n *\n * // Option 1: resolve() waits for ready internally\n * const db = await scope.resolve(dbAtom)\n *\n * // Option 2: explicit wait\n * await scope.ready\n * const db = await scope.resolve(dbAtom)\n * ```\n */\nexport function createScope(options?: Lite.ScopeOptions): Lite.Scope {\n return new ScopeImpl(options)\n}\n","export type { Lite, AtomState } from \"./types\"\nexport {\n atomSymbol,\n flowSymbol,\n tagSymbol,\n taggedSymbol,\n controllerDepSymbol,\n presetSymbol,\n controllerSymbol,\n tagExecutorSymbol,\n} from \"./symbols\"\nexport { tag, tags, isTag, isTagged, isTagExecutor } from \"./tag\"\nexport { atom, isAtom, controller, isControllerDep } from \"./atom\"\nexport { flow, isFlow } from \"./flow\"\nexport { preset, isPreset } from \"./preset\"\nexport { createScope } from \"./scope\"\n\nexport const VERSION = \"0.0.1\"\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pumped-fn/lite",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Lightweight dependency injection with minimal reactivity",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",