@pumped-fn/core-next 0.5.44 → 0.5.46
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 +10 -0
- package/README.md +47 -6
- package/dist/index.d.ts +28 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +144 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [0.5.46](https://github.com/pumped-fn/pumped-fn/compare/@pumped-fn/next@0.5.45...@pumped-fn/next@0.5.46) (2025-07-15)
|
|
6
|
+
|
|
7
|
+
## [0.5.45](https://github.com/pumped-fn/pumped-fn/compare/@pumped-fn/next@0.5.44...@pumped-fn/next@0.5.45) (2025-07-15)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* added podscope ([4591aaa](https://github.com/pumped-fn/pumped-fn/commit/4591aaa5e5683738b942b256e991154223cb7ffc))
|
|
13
|
+
* **extra:** added the new flow API (WIP) ([0ecc8bd](https://github.com/pumped-fn/pumped-fn/commit/0ecc8bdd0a2d22efdff6d31a0374aa79f742a75c))
|
|
14
|
+
|
|
5
15
|
## [0.5.44](https://github.com/pumped-fn/pumped-fn/compare/@pumped-fn/next@0.5.43...@pumped-fn/next@0.5.44) (2025-06-27)
|
|
6
16
|
|
|
7
17
|
|
package/README.md
CHANGED
|
@@ -18,11 +18,12 @@ A scope is a simple facility created using `createScope`
|
|
|
18
18
|
- `scope#accessor(executor)` will return a Core.Accessor which can help to `get`, `resolve`, `lookup` or `subscribe`
|
|
19
19
|
|
|
20
20
|
## Executor
|
|
21
|
-
Executor is the container. Executor has
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
21
|
+
Executor is the container. Executor has different access modes for use as dependencies:
|
|
22
|
+
|
|
23
|
+
- **Default**: Returns the resolved value (non-reactive)
|
|
24
|
+
- **`.reactive`**: Returns the resolved value and subscribes to future updates
|
|
25
|
+
- **`.lazy`**: Returns an accessor without resolving the executor (deferred resolution)
|
|
26
|
+
- **`.static`**: Returns an accessor with the executor resolved (controller pattern)
|
|
26
27
|
|
|
27
28
|
## Usage
|
|
28
29
|
|
|
@@ -37,13 +38,53 @@ const derivedValue = derive([counter], ([counter]) => { /* code */ })
|
|
|
37
38
|
|
|
38
39
|
```typescript
|
|
39
40
|
// container can also be reactive, the factory function will be recalled as those dependencies change
|
|
40
|
-
|
|
41
41
|
const derivedValue = derive(counter.reactive, (counter) => /* this code will be called whenever counter got updated */)
|
|
42
42
|
|
|
43
43
|
// to update counter
|
|
44
44
|
scope.update(counter, /* new value */)
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
+
### Controller Pattern with `.static`
|
|
48
|
+
|
|
49
|
+
The `.static` mode provides access to the executor's controller, allowing you to create services that can update state:
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const counter = provide(() => 0)
|
|
53
|
+
|
|
54
|
+
// Create a controller service using .static
|
|
55
|
+
const counterController = derive(counter.static, (counterCtl) => ({
|
|
56
|
+
increment: () => counterCtl.update(current => current + 1),
|
|
57
|
+
decrement: () => counterCtl.update(current => current - 1),
|
|
58
|
+
reset: () => counterCtl.update(0),
|
|
59
|
+
setValue: (value: number) => counterCtl.update(value)
|
|
60
|
+
}))
|
|
61
|
+
|
|
62
|
+
// Usage - no need to access scope directly
|
|
63
|
+
const controller = await scope.resolve(counterController)
|
|
64
|
+
await controller.increment() // Updates counter through its controller
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Lazy Resolution with `.lazy`
|
|
68
|
+
|
|
69
|
+
The `.lazy` mode provides access to the executor's accessor without resolving it, useful for deferred execution:
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
const expensiveComputation = provide(() => {
|
|
73
|
+
console.log('Computing expensive value...')
|
|
74
|
+
return performExpensiveCalculation()
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
// Get lazy accessor - computation hasn't run yet
|
|
78
|
+
const lazyService = derive(expensiveComputation.lazy, (lazyCtl) => ({
|
|
79
|
+
getResult: () => lazyCtl.resolve(), // Only compute when explicitly called
|
|
80
|
+
isResolved: () => lazyCtl.lookup()?.kind === 'resolved'
|
|
81
|
+
}))
|
|
82
|
+
|
|
83
|
+
const service = await scope.resolve(lazyService)
|
|
84
|
+
console.log(service.isResolved()) // false - not computed yet
|
|
85
|
+
const result = await service.getResult() // Now computation runs
|
|
86
|
+
```
|
|
87
|
+
|
|
47
88
|
```typescript
|
|
48
89
|
// life cycle. The cleanup will be called on [scope dispose], [or resource update], [or resource being released]
|
|
49
90
|
const derivedValue = derive(counter.reactive, (counter, controller) => {
|
package/dist/index.d.ts
CHANGED
|
@@ -75,8 +75,11 @@ declare namespace Meta {
|
|
|
75
75
|
}
|
|
76
76
|
declare namespace Core {
|
|
77
77
|
export type Output<T> = T | Promise<T>;
|
|
78
|
+
export type GeneratorOutput<Y, T> = T | Promise<T> | Generator<Y, T> | AsyncGenerator<Y, T>;
|
|
78
79
|
export type NoDependencyFn<T> = (scope: Controller) => Output<T>;
|
|
79
80
|
export type DependentFn<T, D> = (dependencies: D, scope: Controller) => Output<T>;
|
|
81
|
+
export type NoDependencyGeneratorFn<Y, T> = (scope: Controller) => GeneratorOutput<Y, T>;
|
|
82
|
+
export type DependentGeneratorFn<Y, T, D> = (dependencies: D, scope: Controller) => GeneratorOutput<Y, T>;
|
|
80
83
|
export type RecordLike = Record<string, unknown>;
|
|
81
84
|
export type UExecutor = BaseExecutor<unknown>;
|
|
82
85
|
export type Cleanup = () => void | Promise<void>;
|
|
@@ -152,9 +155,10 @@ declare namespace Core {
|
|
|
152
155
|
init?: (scope: Scope) => void | Promise<void>;
|
|
153
156
|
dispose?: (scope: Scope) => void | Promise<void>;
|
|
154
157
|
};
|
|
158
|
+
export interface Pod extends Omit<Core.Scope, "update" | "pod" | "disposePod" | "onChange"> {}
|
|
155
159
|
export interface Scope {
|
|
156
160
|
accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;
|
|
157
|
-
resolve<T>(executor: Core.Executor<T
|
|
161
|
+
resolve<T>(executor: Core.Executor<T>, force?: boolean): Promise<T>;
|
|
158
162
|
resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;
|
|
159
163
|
update<T>(executor: Executor<T>, updateFn: T | ((current: T) => T)): Promise<void>;
|
|
160
164
|
release(executor: Executor<any>, soft?: boolean): Promise<void>;
|
|
@@ -163,6 +167,8 @@ declare namespace Core {
|
|
|
163
167
|
onChange(cb: ChangeCallback): Cleanup;
|
|
164
168
|
onRelease(cb: ReleaseCallback): Cleanup;
|
|
165
169
|
use(middleware: Middleware): Cleanup;
|
|
170
|
+
pod(...presets: Preset<unknown>[]): Pod;
|
|
171
|
+
disposePod(scope: Pod): Promise<void>;
|
|
166
172
|
}
|
|
167
173
|
}
|
|
168
174
|
|
|
@@ -177,6 +183,7 @@ declare function provide<T>(factory: Core.NoDependencyFn<T>, ...metas: Meta.Meta
|
|
|
177
183
|
declare function derive<T, D extends Core.BaseExecutor<unknown>>(dependencies: D, factory: Core.DependentFn<T, Core.InferOutput<D>>, ...metas: Meta.Meta[]): Core.Executor<T>;
|
|
178
184
|
declare function derive<T, D extends ReadonlyArray<Core.BaseExecutor<unknown>> | Record<string, Core.BaseExecutor<unknown>>>(dependencies: { [K in keyof D]: D[K] }, factory: Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>, ...metas: Meta.Meta[]): Core.Executor<T>;
|
|
179
185
|
declare function preset<T>(e: Core.Executor<T> | Escapable<T>, v: T): Core.Preset<T>;
|
|
186
|
+
declare function placeholder<V>(...metas: Meta.Meta<unknown>[]): Core.Executor<V>;
|
|
180
187
|
|
|
181
188
|
//#endregion
|
|
182
189
|
//#region src/meta.d.ts
|
|
@@ -187,6 +194,7 @@ declare function findValue<V>(executor: Meta.MetaContainer | Meta.Meta[] | undef
|
|
|
187
194
|
|
|
188
195
|
//#endregion
|
|
189
196
|
//#region src/scope.d.ts
|
|
197
|
+
declare const podOnly: Meta.Meta<boolean>;
|
|
190
198
|
declare function createScope(...presets: Core.Preset<unknown>[]): Core.Scope;
|
|
191
199
|
declare function middleware(m: Core.Middleware): Core.Middleware;
|
|
192
200
|
|
|
@@ -197,5 +205,23 @@ declare function validateAsync<TSchema extends StandardSchemaV1>(schema: TSchema
|
|
|
197
205
|
declare function custom<T>(): StandardSchemaV1<T, T>;
|
|
198
206
|
|
|
199
207
|
//#endregion
|
|
200
|
-
|
|
208
|
+
//#region src/generator-utils.d.ts
|
|
209
|
+
declare function isGenerator<Y = unknown, T = unknown>(value: unknown): value is Generator<Y, T>;
|
|
210
|
+
declare function isAsyncGenerator<Y = unknown, T = unknown>(value: unknown): value is AsyncGenerator<Y, T>;
|
|
211
|
+
declare function isGeneratorFunction(fn: unknown): fn is GeneratorFunction;
|
|
212
|
+
declare function isAsyncGeneratorFunction(fn: unknown): fn is AsyncGeneratorFunction;
|
|
213
|
+
declare function isIterableOrAsyncIterable(value: unknown): value is Iterable<unknown> | AsyncIterable<unknown>;
|
|
214
|
+
declare function collectFromGenerator<Y, T>(gen: Generator<Y, T> | AsyncGenerator<Y, T>): Promise<{
|
|
215
|
+
yielded: Y[];
|
|
216
|
+
returned: T;
|
|
217
|
+
}>;
|
|
218
|
+
interface GeneratorHandler<Y, T> {
|
|
219
|
+
onYield?: (value: Y, index: number) => void | Promise<void>;
|
|
220
|
+
onReturn?: (value: T) => void | Promise<void>;
|
|
221
|
+
onError?: (error: unknown) => void | Promise<void>;
|
|
222
|
+
}
|
|
223
|
+
declare function processGenerator<Y, T>(gen: Generator<Y, T> | AsyncGenerator<Y, T>, handler: GeneratorHandler<Y, T>): Promise<T>;
|
|
224
|
+
|
|
225
|
+
//#endregion
|
|
226
|
+
export { AdaptedExecutor, Core, Escapable, GeneratorHandler, Meta, PreparedExecutor, SchemaError, StandardSchemaV1, adapt, collectFromGenerator, createScope, custom, derive, executorSymbol, findValue, findValues, getValue, isAsyncGenerator, isAsyncGeneratorFunction, isExecutor, isGenerator, isGeneratorFunction, isIterableOrAsyncIterable, isLazyExecutor, isMainExecutor, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, middleware, placeholder, podOnly, prepare, preset, processGenerator, provide, resolves, validate, validateAsync };
|
|
201
227
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["scope: Core.Scope","executors: { [K in keyof T]: T[K] }","executor: Core.Executor<T>","executor: Core.Executor<(...args: A) => Promise<T> | T>","executorSymbol: unique symbol","metaSymbol: unique symbol","value: unknown","issues: ReadonlyArray<StandardSchemaV1.Issue>","value: V","d: D","source: MetaContainer | Meta[] | undefined","scope: Controller","dependencies: D","cleanup: Cleanup","force?: boolean","soft?: boolean","updateFn: T | ((current: T) => T)","current: T","callback: (value: T) => void","value: T","event: \"resolve\" | \"update\"","executor: Executor<unknown>","resolved: unknown","scope: Scope","event: \"release\"","executor: Core.Executor<T>","eager?: boolean","executor: Executor<T>","executor: Executor<any>","callback: (accessor: Accessor<T>) => void","accessor: Accessor<T>","cb: ChangeCallback","cb: ReleaseCallback","middleware: Middleware","executor: Core.BaseExecutor<unknown>","executor: unknown","input: unknown","factory: Core.NoDependencyFn<T>","dependencies: D","factory: Core.DependentFn<T, Core.InferOutput<D>>","dependencies: { [K in keyof D]: D[K] }","factory: Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>","e: Core.Executor<T> | Escapable<T>","v: T","key: string | symbol","schema: StandardSchemaV1<V>","meta: Meta.Meta<V>","executor: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.MetaFn<V>","m: Core.Middleware","schema: TSchema","data: unknown"],"sources":["../src/helpers.ts","../src/types.ts","../src/executor.ts","../src/meta.ts","../src/scope.ts","../src/ssch.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["scope: Core.Scope","executors: { [K in keyof T]: T[K] }","executor: Core.Executor<T>","executor: Core.Executor<(...args: A) => Promise<T> | T>","executorSymbol: unique symbol","metaSymbol: unique symbol","value: unknown","issues: ReadonlyArray<StandardSchemaV1.Issue>","value: V","d: D","source: MetaContainer | Meta[] | undefined","scope: Controller","dependencies: D","cleanup: Cleanup","force?: boolean","soft?: boolean","updateFn: T | ((current: T) => T)","current: T","callback: (value: T) => void","value: T","event: \"resolve\" | \"update\"","executor: Executor<unknown>","resolved: unknown","scope: Scope","event: \"release\"","executor: Core.Executor<T>","eager?: boolean","executor: Executor<T>","executor: Executor<any>","callback: (accessor: Accessor<T>) => void","accessor: Accessor<T>","cb: ChangeCallback","cb: ReleaseCallback","middleware: Middleware","scope: Pod","executor: Core.BaseExecutor<unknown>","executor: unknown","input: unknown","factory: Core.NoDependencyFn<T>","dependencies: D","factory: Core.DependentFn<T, Core.InferOutput<D>>","dependencies: { [K in keyof D]: D[K] }","factory: Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>","e: Core.Executor<T> | Escapable<T>","v: T","key: string | symbol","schema: StandardSchemaV1<V>","meta: Meta.Meta<V>","executor: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.MetaFn<V>","podOnly: Meta.Meta<boolean>","m: Core.Middleware","schema: TSchema","data: unknown","value: unknown","fn: unknown","gen: Generator<Y, T> | AsyncGenerator<Y, T>","value: Y","index: number","value: T","error: unknown","handler: GeneratorHandler<Y, T>"],"sources":["../src/helpers.ts","../src/types.ts","../src/executor.ts","../src/meta.ts","../src/scope.ts","../src/ssch.ts","../src/generator-utils.ts"],"sourcesContent":[],"mappings":";AAQsB,iBAAA,QAAA,CAAA,UAEhB,KAFgB,CAEV,IAAA,CAAK,QAFK,CAAA,OAAA,CAAA,GAEe,SAFf,CAAA,OAAA,CAAA,CAAA,GAGhB,MAHgB,CAAA,MAAA,EAGD,IAAA,CAAK,QAHJ,CAAA,OAAA,CAAA,GAGwB,SAHxB,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAKb,IAAA,CAAK,KALQ,EAAA,SAAA,EAAA,QAAA,MAMK,CANL,GAMS,CANT,CAMW,CANX,CAAA,EAAA,CAAA,EAOnB,OAPmB,CAAA,QAAA,MAOG,CAPH,GAOO,IAAA,CAAK,WAPZ,CAOwB,CAPxB,CAO0B,CAP1B,CAAA,CAAA,EAAA,CAAA;AAAA,KAmCV,SAnCU,CAAA,CAAA,CAAA,GAAA;EAAA,MAEV,EAAA,GAAK,GAkCD,IAAA,CAAK,QAlCJ,CAkCa,CAlCb,CAAA;CAAA;AAAX,KAqCM,gBArCN,CAAA,CAAA,CAAA,GAAA;EAAA,EAAA,EAsCA,OArCoB,CAqCZ,IAAA,CAAK,WArCO,CAqCK,IAAA,CAAK,QArCV,CAqCmB,CArCnB,CAAA,CAAA,CAAA;EAAA,MAAoB,EAAA,GAAA,GAsC9B,IAAA,CAAK,QAtCyB,CAsChB,CAtCgB,CAAA;CAAA;AAErC,iBAuCO,OAvCF,CAAA,CAAA,CAAA,CAAA,KAAA,EAwCL,IAAA,CAAK,KAxCA,EAAA,QAAA,EAyCF,IAAA,CAAK,QAzCH,CAyCY,CAzCZ,CAAA,CAAA,EA0CX,gBA1CW,CA0CM,IAAA,CAAK,WA1CX,CA0CuB,IAAA,CAAK,QA1C5B,CA0CqC,CA1CrC,CAAA,CAAA,CAAA;AACa,KAsDf,eAtDe,CAAA,UAsDW,KAtDP,CAAA,OAAA,CAAA,EAAA,CAAA,CAAE,GAAA;EACR,CAAA,GAAA,IAAqB,EAsDlC,CAtDkC,CAAA,EAsD9B,OAtD8B,CAsDtB,OAtDsB,CAsDd,CAtDc,CAAA,CAAA;EAAA,MAAE,EAAA,GAAA,GAuDhC,IAAA,CAAK,QAvD2B,CAAA,CAAA,GAAA,IAAA,EAuDR,CAvDQ,EAAA,GAuDF,OAvDE,CAuDM,OAvDN,CAuDc,CAvDd,CAAA,CAAA,CAAA;CAAA;AAA7C,iBA0Da,KA1Db,CAAA,UA0D6B,KA1D7B,CAAA,OAAA,CAAA,EA4BH,CAAA,CAAY,CAAA,KAAA,EA+BH,IAAA,CAAK,KA/BF,EAAA,QAAA,EAgCA,IAAA,CAAK,QAhCL,CAAA,CAAA,GAAA,IAAA,EAgCwB,CAhCxB,EAAA,GAgC8B,OAhC9B,CAgCsC,CAhCtC,CAAA,GAgC2C,CAhC3C,CAAA,CAAA,EAiCT,eAjCS,CAiCO,CAjCP,EAiCU,CAjCV,CAAA;;;;AAnCU,cCNTI,cDMS,EAAA,OAAA,MAAA;AAAA,cCHTC,UDGS,EAAA,OAAA,MAAA;AAEV,UCHK,gBDGA,CAAA,QAAoB,OAAA,EAAA,SCHuB,KDGtD,CAAA,CAAA;EACoB,SAAoB,WAAA,ECHtB,gBAAA,CAAiB,KDGK,CCHC,KDGD,ECHQ,MDGR,CAAA;;AAErC,kBCFgB,gBAAA,CDEX;EAAA,OACa,UAAA,KAAA,CAAA,QAAI,OAAA,EAAA,SCFoB,KDElB,CAAA,CAAA;IACR,SAAqB,OAAA,EAAA,CAAA;IAAA,SAAE,MAAA,EAAA,MAAA;IAAA,SAAnB,QAAK,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GCEzB,MDFyB,CCElB,MDFkB,CAAA,GCER,ODFQ,CCEA,MDFA,CCEO,MDFP,CAAA,CAAA;IAAA,SAA/B,KAAA,CAAA,ECGkB,KDHlB,CCGwB,KDHxB,ECG+B,MDH/B,CAAA,GAAA,SAAA;EAAA;EA4BH,OAAY,KAAA,MAAA,CAAA,MAAA,CAAA,GCtBmB,aDsBnB,CCtBiC,MDsBjC,CAAA,GCtB2C,aDsB3C;EAAA,OAAA,UAAA,aAAA,CAAA,MAAA,CAAA,CAAA;IAAA,SACkB,KAAA,ECpBV,MDoBU;IAAA,SAAd,MAAK,CAAA,EAAA,SAAA;EAAA;EAGrB,OAAY,UAAA,aAAA,CAAA;IAAA,SAAA,MAAA,EClBS,aDkBT,CClBuB,KDkBvB,CAAA;EAAA;EACiC,OAAd,UAAK,KAAA,CAAA;IAAA,SAAtB,OAAK,EAAA,MAAA;IAAA,SAAb,IAAA,CAAA,ECdc,aDcd,CCd4B,WDc5B,GCd0C,WDc1C,CAAA,GAAA,SAAA;EAAA;EACwB,OAAd,UAAK,WAAA,CAAA;IAAA,SAAA,GAAA,ECXH,WDWG;EAGrB;EAAgB,OAAA,UAAA,KAAA,CAAA,QACP,OAAK,EAAA,SCZqC,KDazB,CAAA,CAAA;IAAT,SACkC,KAAA,ECb/B,KDa+B;IAAA,SAAd,MAAK,ECZrB,MDYqB;EAAA;EAAjB,OAAtB,KAAA,UAAA,CAAA,eCTqC,gBDSrC,CAAA,GCTyD,WDSzD,CCRC,MDQD,CAAA,WAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,OAAA,CAAA;EAAA,OAAA,KAAA,WAAA,CAAA,eCLsC,gBDKtC,CAAA,GCL0D,WDK1D,CCJC,MDID,CAAA,WAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,QAAA,CAAA;AAaH;AAAY,cCbC,WAAA,SAAoB,KAAA,CDarB;EAAA,SAA0B,MAAA,ECZZ,aDYY,CCZE,gBAAA,CAAiB,KDYnB,CAAA;EAAA,WAC1B,CAAA,MAAA,ECXU,aDWV,CCXwB,gBAAA,CAAiB,KDWzC,CAAA;;AAAY,kBCJC,IAAA,CDID;EAAA,OAAR,UAAA,aAAA,CAAA;IAAA,KACwB,ECH7B,IDG6B,EAAA,GAAA,SAAA;EAAA;EAAsB,OAAR,UAAA,IAAA,CAAA,IAAA,OAAA,CAAA,CAAA;IAAA,UCCxC,UAAA,CDDgC,EAAA,IAAA;IAAA,SAA9B,GAAK,EAAA,MAAA,GAAA,MAAA;IAAA,SAAA,MAAA,ECGA,gBDHA,CCGiB,CDHjB,CAAA;IAGrB,SAAgB,KAAA,ECCI,CDDJ;EAAA;EAAA,OAAgB,UAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,CAAA,KACvB,ECIG,CDJH,CAAK,ECIE,IDJF,CCIO,CDJP,CAAA;IAAA,SACsB,GAAA,EAAA,MAAA,GAAA,MAAA;IAAA,OAAc,EAAA,CAAA,UCK1B,ODL0B,CCKlB,CDLkB,CAAA,CAAA,CAAA,CAAA,ECKX,CDLW,EAAA,GCKL,CDLK;IAAA,IAAA,EAAR,CAAA,MAAA,ECMvB,aDNuB,GCMP,IDNO,EAAA,GAAA,SAAA,EAAA,GCMgB,CDNhB,EAAA;IAAA,IAAA,EAAa,CAAA,MAAA,ECOpC,aDPoC,GCOpB,IDPoB,EAAA,GAAA,SAAA,EAAA,GCOG,CDPH,GAAA,SAAA;IAAA,GAAA,EAA3C,CAAA,MAAK,ECQC,aDRD,GCQiB,IDRjB,EAAA,GAAA,SAAA,EAAA,GCQwC,CDRxC;EAAA;;AACd,kBCWsB,IAAA,CDXtB;EAAA,OAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GCYuB,CDZvB,GCY2B,ODZ3B,CCYmC,CDZnC,CAAA;mCC1EH,GAwFM,CAxFOD,GAyFP,OAzFOA,CAyFC,CAzFDA,CAAAA,GA0FP,SA1FOA,CA0FG,CA1FHA,EA0FM,CA1FNA,CAAAA,GA2FP,cA3FOA,CA2FQ,CA3FRA,EA2FW,CA3FXA,CAAAA;EAGb,OAAaC,KAAAA,cAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,KAAAA,EA0F6B,UA1F7BA,EAAAA,GA0F4C,MA1F5CA,CA0FmD,CA1FnDA,CAAAA;EAEb,OAAiB,KAAA,WAAA,CAAA,CAAA,EAAA,CAAA,CAA2C,GAAA,CAAA,YACb,EAyF7B,CAzF6B,EAAA,KAAA,EA0FpC,UA1FoC,EAAA,GA2FxC,MA3FwC,CA2FjC,CA3FiC,CAAA;EAAA,OAAO,KAAA,uBAAA,CAAA,CAAA,EAAb,CAAA,CAGzC,GAAyB,CAAA,KAAA,EA2Fd,UA3Fc,EAAA,GA4FlB,eA5FkB,CA4FF,CA5FE,EA4FC,CA5FD,CAAA;EAAA,OAAA,KAAA,oBAAA,CAAA,CAAA,EAC0B,CAAA,EAKnC,CAAA,CAAP,GAAA,CAAA,YAAgC,EAwFvB,CAxFuB,EAAA,KAAA,EAyF9B,UAzF8B,EAAA,GA0FlC,eA1FkC,CA0FlB,CA1FkB,EA0Ff,CA1Fe,CAAA;EAAA,OAAP,KAAA,UAAA,GA2FP,MA3FO,CAAA,MAAA,EAAA,OAAA,CAAA;EAAA,OAAR,KAAA,SAAA,GA4FA,YA5FA,CAAA,OAAA,CAAA;EAAA,OACC,KAAA,OAAA,GAAA,GAAA,GAAA,IAAA,GA6FU,OA7FV,CAAA,IAAA,CAAA;EAAA,OAAO,KAAA,UAAA,GAAA;IAAA,OAAb,EAAA,CAAA,OAAA,EAgGE,OAhGF,EAAA,GAAA,IAAA;IAAA,OAGwB,EAAA,GAAA,GA8F1B,OA9F0B,CAAA,IAAA,CAAA;IAAA,KAAd,EA+FpB,KA/FoB;EAAA,CAAA;EAAwB,OAGnC,KAAA,IAAA,GAAA,MAAA,GAAA,UAAA,GAAA,MAAA,GAAA,QAAA;EAAA,OAKe,UAAA,YAAA,CAAA,CAAA,CAAA,SA4FQ,IAAA,CAAK,aA5Fb,CAAA;IAAA,CA6F9B,cAAA,CA7FgB,EA6FC,IA7FD;IAAA,OAKa,EAyFrB,cAzFqB,CAyFN,CAzFM,CAAA,GAyFD,WAzFC,CAyFW,CAzFX,EAAA,OAAA,CAAA,GAAA,SAAA;IAAA,YAAc,EAAA,SAAA,GA4FxC,SA5FwC,GA6FxC,KA7FwC,CA6FlC,SA7FkC,CAAA,GA8FxC,MA9FwC,CAAA,MAAA,EA8FzB,SA9FyB,CAAA;EAAA;EAA5B,OAIF,UAAA,QAAA,CAAA,CAAA,CAAA,SA6FqB,YA7FrB,CA6FkC,CA7FlC,CAAA,CAAA;IAAA,CA8Fb,cAAA,CA3F8C,EAAA,MAAA;IAAA,OAC/B,EA2FP,cA3FO,CA2FQ,CA3FR,CAAA,GA2Fa,WA3Fb,CA2FyB,CA3FzB,EAAA,OAAA,CAAA;IAAA;IACC,SAGmB,IAAA,EA0FrB,IA1FqB,CA0FhB,CA1FgB,CAAA;IAAA;IACpC,SADwD,QAAA,EA6FrC,QA7FqC,CA6F5B,CA7F4B,CAAA;IAAA;IAInB,SACrC,MAAA,EA2FiB,MA3FjB,CA2FwB,CA3FxB,CAAA;EAAA;EADyD,OAAA,UAAA,QAAA,CAAA,CAAA,CAAA,SA+FtB,YA/FsB,CA+FT,CA/FS,CAAA,CAAA;IAK7D,CA2FK,cAAA,CA3FQ,EAAA,UAAA;IAAA,OAAA,EAAA,SAAA;IAAA,SAC2B,QAAA,EA4FjB,QA5FkC,CA4FzB,CA5FyB,CAAA;EAAA;EAA/B,OAEU,UAAA,IAAA,CAAA,CAAiB,CAAA,SA6FlB,YA7FkB,CA6FL,QA7FK,CA6FI,CA7FJ,CAAA,CAAA,CAAA;IAAA,CA8FhD,cAAA,CA9FiB,EAAA,MAAA;IAAA,OAHW,EAAA,SAAA;IAAA,SAAA,QAAA,EAmGV,QAnGU,CAmGD,CAnGC,CAAA;EAUjC;EAAyB,OAAA,UAAA,MAAA,CAAA,CAAA,CAAA,SA4FY,YA5FZ,CA4FyB,QA5FzB,CA4FkC,CA5FlC,CAAA,CAAA,CAAA;IAAA,CA6FpB,cAAA,CA3FM,EAAA,QAAA;IAAA,OAIG,EAAA,SAAA;IAAA,SAEwB,QAAA,EAuFf,QAvFe,CAuFN,CAvFM,CAAA;EAAA;EAAjB,OACD,KAAA,YAAA,CAAA,CAAA,CAAA,GAAA;IAAA,IAAA,EAIR,SAAA;IAAA,OAAS,EAqFuC,OArFvC,CAqF+C,CArF/C,CAAA;EAAA,CAAA;EAAL,OAEgB,KAAA,aAAA,CAAA,CAAA,CAAA,GAAA;IAAA,IAAA,EAAR,UAAA;IAAA,KAAe,EAoFqB,CApFrB;EAAA,CAAA;EAAM,OAC1B,KAAA,aAAA,GAAA;IAAA,IAAA,EAAgB,UAAA;IAAA,KAAuB,EAAA,OAAA;EAAA,CAAA;EACvC,OAAgB,KAAA,YAAA,CAAA,CAAA,CAAA,GAsF7B,YAtF6B,CAsFhB,CAtFgB,CAAA,GAuF7B,aAvF6B,CAuFf,CAvFe,CAAA,GAwF7B,aAxF6B;EAAA,OAAuB,UAAA,QAAA,CAAA,CAAA,CAAA,SA0FnB,IAAA,CAAK,aA1Fc,CAAA;IAAA,MACxC,EAAA,EAAA,SAAA,GA0FQ,YA1FR,CA0FqB,CA1FrB,CAAA;IAAA,GAAA,EAAgB,EA4FvB,CA5FuB;IAAA,OAAuB,CAAA,KAAA,CAAA,EAAA,OAAA,CAAA,EA6F3B,OA7F2B,CA6FnB,CA7FmB,CAAA;IAAA,OAAA,CAAA,IAAA,CAAA,EAAA,OAAA,CAAA,EA8F5B,OA9F4B,CAAA,IAAA,CAAA;IAIzD,MAAyB,CAAA,QAAA,EA2FJ,CA3FI,GAAA,CAAA,CAAA,OAAA,EA2FW,CA3FX,EAAA,GA2FiB,CA3FjB,CAAA,CAAA,EA2FsB,OA3FtB,CAAA,IAAA,CAAA;IAAA,SAAA,CAAA,QAAA,EAAA,CAAA,KAAA,EA4FO,CA5FP,EAAA,GAAA,IAAA,CAAA,EA4FoB,OA5FpB;EAAA;EACC,OAAY,UAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,CA+FjC,cAAA,CA/FyB,EAAA,QAAA;IAAA,QAExB,EA8FQ,QA9FR,CA8FiB,CA9FjB,CAAA;IAAA,KACQ,EA8FH,CA9FG;EAAA;EAAR,OACU,KAAA,WAAA,CAAA,CAAA,CAAA,GAgGe,CAhGf,SAiGV,QAjGU,CAAA,KAAA,EAAA,CAAA,GAkGV,QAlGU,CAAA,KAAA,EAAA,CAAA,GAmGV,gBAnGU,CAAA,KAAA,EAAA,CAAA,GAoGV,OApGU,CAoGF,CApGE,CAAA,GAqGV,CArGU,SAqGA,IArGA,CAAA,KAAA,EAAA,CAAA,GAqGgB,MArGhB,CAAA,KAAA,EAAA,CAAA,GAsGV,QAtGU,CAsGD,OAtGC,CAsGO,CAtGP,CAAA,CAAA,GAuGV,CAvGU,SAuGA,eAvGA,CAAA,KAAA,EAAA,EAAA,KAAA,EAAA,CAAA,GAAA,CAAA,GAAA,IAAA,EAwGA,CAxGA,EAAA,GAwGM,OAxGN,CAwGc,OAxGd,CAwGsB,CAxGtB,CAAA,CAAA,GAAA,KAAA;EAAA,OAAG,KAAA,KAAA,GAAA,SAAA,GAAA,QAAA,GAAA,SAAA;EAAA,OAAb,KAAA,QAAA,GA4GmB,MA5GnB,CAAA,OAAA,CAAA;EAAA,KAAA,mBACe,GAAA,IAAA,GA4Ge,QA5Gf;EAAA,OAAG,KAAA,cAAA,GAAA,CAAA,KAAA,EAAA,SAAA,GAAA,QAAA,EAAA,QAAA,EAgHV,QAhHU,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAkHb,KAlHa,EAAA,GAmHjB,mBAnHiB;EAAA,OAAlB,KAAA,eAAA,GAAA,CAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAuHQ,QAvHR,CAAA,OAAA,CAAA,EAAA,KAAA,EAwHK,KAxHL,EAAA,GAAA,IAAA,GAyHQ,OAzHR,CAAA,IAAA,CAAA;EAAA,OAEoC,KAAA,UAAA,GAAA;IAAA,IAAA,CAAsB,EAAA,CAAA,KAAA,EA0H7C,KA1H6C,EAAA,GAAA,IAAA,GA0H5B,OA1H4B,CAAA,IAAA,CAAA;IAAA,OAAP,CAAA,EAAA,CAAA,KAAA,EA2HnC,KA3HmC,EAAA,GAAA,IAAA,GA2HlB,OA3HkB,CAAA,IAAA,CAAA;EAAA,CAAA;EAEvC,OACP,UAAA,GAAA,SA4HC,IA5HD,CA4HM,IAAA,CAAK,KA5HX,EAAA,QAAA,GAAA,KAAA,GAAA,YAAA,GAAA,UAAA,CAAA,CAAA,CAAA;EAAA,OACG,UAAA,KAAA,CAAA;IAAA,QAAP,CAAA,CAAA,CAAA,CAAA,QAAA,EA8HmB,IAAA,CAAK,QA9HxB,CA8HiC,CA9HjC,CAAA,EAAA,KAAA,CAAA,EAAA,OAAA,CAAA,EA8HuD,QA9HvD,CA8HgE,CA9HhE,CAAA;IAAA,OAGI,CAAA,CAAA,CAAA,CAAA,QAAA,EA6Hc,IAAA,CAAK,QA7HnB,CA6H4B,CA7H5B,CAAA,EAAA,KAAA,CAAA,EAAA,OAAA,CAAA,EA6HkD,OA7HlD,CA6H0D,CA7H1D,CAAA;IAAA,eACY,CAAA,CAAA,CAAA,CAAA,QAAA,EA6HU,IAAA,CAAK,QA7Hf,CA6HwB,CA7HxB,CAAA,CAAA,EA6H6B,OA7H7B,CA6HqC,QA7HrC,CA6H8C,CA7H9C,CAAA,CAAA;IAAA,MAAG,CAAA,CAAA,CAAA,CAAA,QAAA,EAgIV,QAhIU,CAgID,CAhIC,CAAA,EAAA,QAAA,EAiIV,CAjIU,GAAA,CAAA,CAAA,OAAA,EAiIK,CAjIL,EAAA,GAiIW,CAjIX,CAAA,CAAA,EAkInB,OAlImB,CAAA,IAAA,CAAA;IAAA,OAAnB,CAAA,QAAA,EAoIe,QApIf,CAAA,GAAA,CAAA,EAAA,IAAA,CAAA,EAAA,OAAA,CAAA,EAoI+C,OApI/C,CAAA,IAAA,CAAA;IAAA,OAEW,EAAA,EAoIH,OApIG,CAAA,IAAA,CAAA;IAAA,QACP,CAAA,CAAA,CAAA,CAAA,QAAA,EAsIK,QAtIL,CAsIc,CAtId,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,EAuIgB,QAvIhB,CAuIyB,CAvIzB,CAAA,EAAA,GAAA,IAAA,CAAA,EAwIJ,OAxII;IAAA,QACY,CAAA,EAAA,EAyIN,cAzIM,CAAA,EAyIW,OAzIX;IAAA,SAAG,CAAA,EAAA,EA0IR,eA1IQ,CAAA,EA0IU,OA1IV;IAAA,GAAA,CAAA,UAAnB,EA4Ia,UA5Ib,CAAA,EA4I0B,OA5I1B;IAAA,GAAA,CAAA,GACoB,OAAA,EA6IP,MA7IO,CAAA,OAAA,CAAA,EAAA,CAAA,EA6Ia,GA7Ib;IAAA,UACD,CAAA,KAAA,EA6IJ,GA7II,CAAA,EA6IE,OA7IF,CAAA,IAAA,CAAA;EAAA;;;;;ADrGJ,iBEmEN,cAAA,CFnEM,QAAA,EEoEV,IAAA,CAAK,YFpEK,CAAA,OAAA,CAAA,CAAA,EAAA,QAAA,IEqEP,IAAA,CAAK,IFrEE,CAAA,OAAA,CAAA;AAEV,iBEuEI,kBAAA,CFvEC,QAAA,EEwEL,IAAA,CAAK,YFxEA,CAAA,OAAA,CAAA,CAAA,EAAA,QAAA,IEyEF,IAAA,CAAK,QFzEH,CAAA,OAAA,CAAA;AAAoB,iBE6ErB,gBAAA,CF7EqB,QAAA,EE8EzB,IAAA,CAAK,YF9EoB,CAAA,OAAA,CAAA,CAAA,EAAA,QAAA,IE+EtB,IAAA,CAAK,MF/EiB,CAAA,OAAA,CAAA;AAA/B,iBEmFU,cAAA,CFnFV,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,IEqFS,IAAA,CAAK,QFrFd,CAAA,OAAA,CAAA;AACe,iBEwFL,UFxFU,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IEwF8B,IAAA,CAAK,YFxFnC,CEwFgD,CFxFhD,CAAA;AAAoB,iBE4F9B,OF5F8B,CAAA,CAAA,CAAA,CAAA,OAAA,EE6FnC,IAAA,CAAK,cF7F8B,CE6Ff,CF7Fe,CAAA,EAAA,GAAA,KAAA,EE8FlC,IAAA,CAAK,IF9F6B,EAAA,CAAA,EE+F3C,IAAA,CAAK,QF/FsC,CE+F7B,CF/F6B,CAAA;AAAxC,iBEmGU,MFnGV,CAAA,CAAA,EAEQ,UEiGsB,IAAA,CAAK,YFhGd,CAAA,OAAA,CAAA,CAAA,CAAA,YAAI,EEiGf,CFjGe,EAAA,OAAA,EEkGpB,IAAA,CAAK,WFlGe,CEkGH,CFlGG,EEkGA,IAAA,CAAK,WFlGL,CEkGiB,CFlGjB,CAAA,CAAA,EAAA,GAAA,KAAA,EEmGnB,IAAA,CAAK,IFnGc,EAAA,CAAA,EEoG5B,IAAA,CAAK,QFpGuB,CEoGd,CFpGc,CAAA;AAAE,iBEsGjB,MFtGiB,CAAA,CAAA,EACR,UEwGnB,aFxGwC,CEwG1B,IAAA,CAAK,YFxGqB,CAAA,OAAA,CAAA,CAAA,GEyGxC,MFzGwC,CAAA,MAAA,EEyGzB,IAAA,CAAK,YFzGoB,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,YAAE,EAAA,QAAA,ME2GlB,CF3GkB,GE2Gd,CF3Gc,CE2GZ,CF3GY,CAAA,EAAA,EAAA,OAAA,EE4GrC,IAAA,CAAK,WF5GgC,CE4GpB,CF5GoB,EAAA,QAAA,ME4GH,CF5GG,GE4GC,IAAA,CAAK,WF5GN,CE4GkB,CF5GlB,CE4GoB,CF5GpB,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,KAAA,EE6GpC,IAAA,CAAK,IF7G+B,EAAA,CAAA,EE8G7C,IAAA,CAAK,QF9GwC,CE8G/B,CF9G+B,CAAA;AAAnB,iBE6Hb,MF7HkB,CAAA,CAAA,CAAA,CAAA,CAAA,EE8H7B,IAAA,CAAK,QF9HwB,CE8Hf,CF9He,CAAA,GE8HV,SF9HU,CE8HA,CF9HA,CAAA,EAAA,CAAA,EE+H7B,CF/H6B,CAAA,EEgI/B,IAAA,CAAK,MFhI0B,CEgInB,CFhImB,CAAA;AAA/B,iBE0Ia,WF1Ib,CAAA,CAAA,CAAA,CAAA,GAAA,KAAA,EE0IsC,IAAA,CAAK,IF1I3C,CAAA,OAAA,CAAA,EAAA,CAAA,EE0I6D,IAAA,CAAK,QF1IlE,CE0I2E,CF1I3E,CAAA;;;;AAPmB,cGLT,IHKS,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,MAAA,GAAA,MAAA,EAAA,MAAA,EGHZ,gBHGY,CGHK,CHGL,CAAA,EAAA,GGFnB,IAAA,CAAK,MHEc,CGFP,CHEO,CAAA;AAAA,iBG+DN,QH/DM,CAAA,CAAA,CAAA,CAAA,IAAA,EG+DY,IAAA,CAAK,IH/DjB,CG+DsB,CH/DtB,CAAA,CAAA,EG+D2B,OH/D3B,CG+DmC,CH/DnC,CAAA;AAEV,iBGiEI,UHjEC,CAAA,IAAA,OAAA,CAAA,CAAA,QAAA,EGkEL,IAAA,CAAK,aHlEA,GGkEgB,IAAA,CAAK,IHlErB,EAAA,GAAA,SAAA,EAAA,IAAA,EGmET,IAAA,CAAK,MHnEI,CGmEG,CHnEH,CAAA,CAAA,EGoEd,CHpEc,EAAA;AAAoB,iBG6ErB,SH7EqB,CAAA,CAAA,CAAA,CAAA,QAAA,EG8EzB,IAAA,CAAK,aH9EoB,GG8EJ,IAAA,CAAK,IH9ED,EAAA,GAAA,SAAA,EAAA,IAAA,EG+E7B,IAAA,CAAK,MH/EwB,CG+EjB,CH/EiB,CAAA,CAAA,EGgFlC,CHhFkC,GAAA,SAAA;;;;AAFf,cI2fT6C,OJ3fS,EI2fA,IAAA,CAAK,IJ3fL,CAAA,OAAA,CAAA;AAAA,iBI6fN,WAAA,CJ7fM,GAAA,OAAA,EI6fkB,IAAA,CAAK,MJ7fvB,CAAA,OAAA,CAAA,EAAA,CAAA,EI6f2C,IAAA,CAAK,KJ7fhD;AAEV,iBIkgBI,UAAA,CJlgBC,CAAA,EIkgBa,IAAA,CAAK,UJlgBlB,CAAA,EIkgB+B,IAAA,CAAK,UJlgBpC;;;;AAFK,iBKNN,QLMM,CAAA,gBKNmB,gBLMnB,CAAA,CAAA,MAAA,EKLZ,OLKY,EAAA,IAAA,EAAA,OAAA,CAAA,EKHnB,OLGmB,CKHX,gBAAA,CAAiB,WLGN,CKHkB,OLGlB,CAAA,CAAA;AAAA,iBKUA,aLVA,CAAA,gBKU8B,gBLV9B,CAAA,CAAA,MAAA,EKWZ,OLXY,EAAA,IAAA,EAAA,OAAA,CAAA,EKanB,OLbmB,CKaX,OLbW,CKaH,gBAAA,CAAiB,WLbd,CKa0B,OLb1B,CAAA,CAAA,CAAA;AAEV,iBK6BI,ML7BC,CAAA,CAAA,CAAA,CAAA,CAAA,EK6BY,gBL7BZ,CK6B6B,CL7B7B,EK6BgC,CL7BhC,CAAA;;;;iBMVD,YNQhB,IAAsB,OAAA,EAAA,IAAA,OAAA,CAAA,CAAA,KAEV,EAAA,OAAK,CAAA,EAAA,KAAA,IMRL,SNQK,CMRK,CNQL,EMRQ,CNQR,CAAA;AAAoB,iBMGrB,gBNHqB,CAAA,IAAA,OAA/B,EAAA,IAAA,OACoB,CAAA,CAAA,KAAoB,EAAA,OAAA,CAAA,EAAA,KAAA,IMIlC,cNJkC,CMInB,CNJmB,EMIhB,CNJgB,CAAA;AAAxC,iBMeU,mBAAA,CNfV,EAAA,EAAA,OAAA,CAAA,EAAA,EAAA,IMekD,iBNflD;AAEG,iBMqBO,wBAAA,CNrBF,EAAA,EAAA,OAAA,CAAA,EAAA,EAAA,IMuBL,sBNvBK;AACa,iBM8BX,yBAAA,CN9BW,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IMgCf,QNhCe,CAAA,OAAA,CAAA,GMgCK,aNhCL,CAAA,OAAA,CAAA;AAAI,iBMoCT,oBNpCS,CAAA,CAAA,EAAE,CAAA,CACR,CAAA,GAAA,EMoClB,SNpCuC,CMoC7B,CNpC6B,EMoC1B,CNpC0B,CAAA,GMoCrB,cNpCqB,CMoCN,CNpCM,EMoCH,CNpCG,CAAA,CAAA,EMqC3C,ONrC2C,CAAA;EAAA,OAAE,EMqC1B,CNrC0B,EAAA;EAAA,QAAnB,EMqCQ,CNrCH;CAAA,CAAA;AAA/B,UM6Dc,gBN7Dd,CA4BH,CAAA,EAAY,CAAA,CAAA,CAAA;EACkB,OAAd,CAAA,EAAA,CAAK,KAAA,EMiCD,CNjCC,EAAA,KAAA,EAAA,MAAA,EAAA,GAAA,IAAA,GMiC2B,ONjC3B,CAAA,IAAA,CAAA;EAAA,QAAA,CAAA,EAAA,CAAA,KAAA,EMkCA,CNlCA,EAAA,GAAA,IAAA,GMkCa,ONlCb,CAAA,IAAA,CAAA;EAGrB,OAAY,CAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,GAAA,IAAA,GMgC2B,ONhC3B,CAAA,IAAA,CAAA;;AACiC,iBMkCvB,gBNlCuB,CAAA,CAAA,EAAT,CAAA,CAAjB,CAAA,GAAA,EMmCZ,SNnCD,CMmCW,CNnCX,EMmCc,CNnCd,CAAA,GMmCmB,cNnCnB,CMmCkC,CNnClC,EMmCqC,CNnCrC,CAAA,EAAA,OAAA,EMoCK,gBNpCL,CMoCsB,CNpCtB,EMoCyB,CNpCzB,CAAA,CAAA,EMqCH,ONrCG,CMqCK,CNrCL,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -98,6 +98,11 @@ function preset(e, v) {
|
|
|
98
98
|
executor
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
+
function placeholder(...metas) {
|
|
102
|
+
return provide(() => {
|
|
103
|
+
throw new Error("Placeholder executor cannot be resolved");
|
|
104
|
+
}, ...metas);
|
|
105
|
+
}
|
|
101
106
|
|
|
102
107
|
//#endregion
|
|
103
108
|
//#region src/ssch.ts
|
|
@@ -193,13 +198,68 @@ function findValue(executor, meta$1) {
|
|
|
193
198
|
return values.at(0);
|
|
194
199
|
}
|
|
195
200
|
|
|
201
|
+
//#endregion
|
|
202
|
+
//#region src/generator-utils.ts
|
|
203
|
+
function isGenerator(value) {
|
|
204
|
+
return value != null && typeof value === "object" && typeof value[Symbol.iterator] === "function" && typeof value.next === "function" && typeof value.return === "function" && typeof value.throw === "function";
|
|
205
|
+
}
|
|
206
|
+
function isAsyncGenerator(value) {
|
|
207
|
+
return value != null && typeof value === "object" && typeof value[Symbol.asyncIterator] === "function" && typeof value.next === "function" && typeof value.return === "function" && typeof value.throw === "function";
|
|
208
|
+
}
|
|
209
|
+
function isGeneratorFunction(fn) {
|
|
210
|
+
return typeof fn === "function" && fn.constructor && fn.constructor.name === "GeneratorFunction";
|
|
211
|
+
}
|
|
212
|
+
function isAsyncGeneratorFunction(fn) {
|
|
213
|
+
return typeof fn === "function" && fn.constructor && fn.constructor.name === "AsyncGeneratorFunction";
|
|
214
|
+
}
|
|
215
|
+
function isIterableOrAsyncIterable(value) {
|
|
216
|
+
return isGenerator(value) || isAsyncGenerator(value);
|
|
217
|
+
}
|
|
218
|
+
async function collectFromGenerator(gen) {
|
|
219
|
+
const yielded = [];
|
|
220
|
+
let returned;
|
|
221
|
+
try {
|
|
222
|
+
let result;
|
|
223
|
+
do {
|
|
224
|
+
result = await gen.next();
|
|
225
|
+
if (!result.done) yielded.push(result.value);
|
|
226
|
+
else returned = result.value;
|
|
227
|
+
} while (!result.done);
|
|
228
|
+
return {
|
|
229
|
+
yielded,
|
|
230
|
+
returned
|
|
231
|
+
};
|
|
232
|
+
} catch (error) {
|
|
233
|
+
await gen.return?.(void 0);
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
async function processGenerator(gen, handler) {
|
|
238
|
+
let index = 0;
|
|
239
|
+
try {
|
|
240
|
+
let result;
|
|
241
|
+
do {
|
|
242
|
+
result = await gen.next();
|
|
243
|
+
if (!result.done) await handler.onYield?.(result.value, index++);
|
|
244
|
+
else {
|
|
245
|
+
await handler.onReturn?.(result.value);
|
|
246
|
+
return result.value;
|
|
247
|
+
}
|
|
248
|
+
} while (true);
|
|
249
|
+
} catch (error) {
|
|
250
|
+
await handler.onError?.(error);
|
|
251
|
+
await gen.return?.(void 0);
|
|
252
|
+
throw error;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
196
256
|
//#endregion
|
|
197
257
|
//#region src/scope.ts
|
|
198
258
|
function getExecutor(e) {
|
|
199
259
|
if (isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)) return e.executor;
|
|
200
260
|
return e;
|
|
201
261
|
}
|
|
202
|
-
var
|
|
262
|
+
var BaseScope = class {
|
|
203
263
|
disposed = false;
|
|
204
264
|
cache = new Map();
|
|
205
265
|
cleanups = new Map();
|
|
@@ -208,9 +268,12 @@ var Scope = class {
|
|
|
208
268
|
change: new Set(),
|
|
209
269
|
release: new Set()
|
|
210
270
|
};
|
|
271
|
+
isPod;
|
|
272
|
+
isDisposing = false;
|
|
211
273
|
middlewares = [];
|
|
212
|
-
constructor(
|
|
213
|
-
|
|
274
|
+
constructor(options) {
|
|
275
|
+
this.isPod = options.pod;
|
|
276
|
+
for (const preset$1 of options.initialValues) {
|
|
214
277
|
const accessor = this["~makeAccessor"](preset$1.executor);
|
|
215
278
|
this.cache.set(preset$1.executor, {
|
|
216
279
|
accessor,
|
|
@@ -238,6 +301,8 @@ var Scope = class {
|
|
|
238
301
|
}
|
|
239
302
|
async "~resolveExecutor"(ie, ref) {
|
|
240
303
|
const e = getExecutor(ie);
|
|
304
|
+
const isPodOnly = podOnlyMeta.find(e);
|
|
305
|
+
if (!this.isPod && isPodOnly) throw new Error("Pod-only executors cannot be resolved in the main scope");
|
|
241
306
|
const a = this["~makeAccessor"](e);
|
|
242
307
|
if (isLazyExecutor(ie)) return a;
|
|
243
308
|
if (isReactiveExecutor(ie)) {
|
|
@@ -266,6 +331,7 @@ var Scope = class {
|
|
|
266
331
|
}
|
|
267
332
|
"~makeAccessor"(e) {
|
|
268
333
|
const requestor = isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e) ? e.executor : e;
|
|
334
|
+
if (podOnlyMeta.find(requestor) && this.isPod === false) throw new Error("Cannot resolve pod-only executor outside of a pod scope");
|
|
269
335
|
const cachedAccessor = this.cache.get(requestor);
|
|
270
336
|
if (cachedAccessor) return cachedAccessor.accessor;
|
|
271
337
|
const accessor = {};
|
|
@@ -289,6 +355,10 @@ var Scope = class {
|
|
|
289
355
|
const promise = new Promise((resolve$1, reject) => {
|
|
290
356
|
this["~resolveDependencies"](requestor.dependencies, requestor).then((dependencies) => factory(dependencies, controller)).then(async (result) => {
|
|
291
357
|
let current = result;
|
|
358
|
+
if (isGenerator(result) || isAsyncGenerator(result)) {
|
|
359
|
+
const { returned } = await collectFromGenerator(result);
|
|
360
|
+
current = returned;
|
|
361
|
+
}
|
|
292
362
|
const events = this.onEvents.change;
|
|
293
363
|
for (const event of events) {
|
|
294
364
|
const updated = event("resolve", requestor, current, this);
|
|
@@ -367,6 +437,7 @@ var Scope = class {
|
|
|
367
437
|
return accessor;
|
|
368
438
|
}
|
|
369
439
|
async update(e, u) {
|
|
440
|
+
if (this.isDisposing) return;
|
|
370
441
|
this["~ensureNotDisposed"]();
|
|
371
442
|
this["~triggerCleanup"](e);
|
|
372
443
|
const accessor = this["~makeAccessor"](e);
|
|
@@ -405,6 +476,8 @@ var Scope = class {
|
|
|
405
476
|
}
|
|
406
477
|
async dispose() {
|
|
407
478
|
this["~ensureNotDisposed"]();
|
|
479
|
+
this.isDisposing = true;
|
|
480
|
+
for (const pod of this.pods) await this.disposePod(pod);
|
|
408
481
|
const disposeEvents = this.middlewares.map((m) => m.dispose?.(this) ?? Promise.resolve());
|
|
409
482
|
await Promise.all(disposeEvents);
|
|
410
483
|
const currents = this.cache.keys();
|
|
@@ -418,6 +491,7 @@ var Scope = class {
|
|
|
418
491
|
}
|
|
419
492
|
onUpdate(e, cb) {
|
|
420
493
|
this["~ensureNotDisposed"]();
|
|
494
|
+
if (this.isDisposing) throw new Error("Cannot register update callback on a disposing scope");
|
|
421
495
|
const ou = this.onUpdates.get(e) ?? new Set();
|
|
422
496
|
this.onUpdates.set(e, ou);
|
|
423
497
|
ou.add(cb);
|
|
@@ -432,6 +506,7 @@ var Scope = class {
|
|
|
432
506
|
}
|
|
433
507
|
onChange(callback) {
|
|
434
508
|
this["~ensureNotDisposed"]();
|
|
509
|
+
if (this.isDisposing) throw new Error("Cannot register update callback on a disposing scope");
|
|
435
510
|
this.onEvents["change"].add(callback);
|
|
436
511
|
return () => {
|
|
437
512
|
this["~ensureNotDisposed"]();
|
|
@@ -440,6 +515,7 @@ var Scope = class {
|
|
|
440
515
|
}
|
|
441
516
|
onRelease(cb) {
|
|
442
517
|
this["~ensureNotDisposed"]();
|
|
518
|
+
if (this.isDisposing) throw new Error("Cannot register update callback on a disposing scope");
|
|
443
519
|
this.onEvents["release"].add(cb);
|
|
444
520
|
return () => {
|
|
445
521
|
this["~ensureNotDisposed"]();
|
|
@@ -448,6 +524,7 @@ var Scope = class {
|
|
|
448
524
|
}
|
|
449
525
|
use(middleware$1) {
|
|
450
526
|
this["~ensureNotDisposed"]();
|
|
527
|
+
if (this.isDisposing) throw new Error("Cannot register update callback on a disposing scope");
|
|
451
528
|
this.middlewares.push(middleware$1);
|
|
452
529
|
middleware$1.init?.(this);
|
|
453
530
|
return () => {
|
|
@@ -455,13 +532,75 @@ var Scope = class {
|
|
|
455
532
|
this.middlewares = this.middlewares.filter((m) => m !== middleware$1);
|
|
456
533
|
};
|
|
457
534
|
}
|
|
535
|
+
pods = new Set();
|
|
536
|
+
pod(...preset$1) {
|
|
537
|
+
this["~ensureNotDisposed"]();
|
|
538
|
+
if (this.isDisposing) throw new Error("Cannot register update callback on a disposing scope");
|
|
539
|
+
const pod = new Pod(this, ...preset$1);
|
|
540
|
+
this.pods.add(pod);
|
|
541
|
+
return pod;
|
|
542
|
+
}
|
|
543
|
+
async disposePod(pod) {
|
|
544
|
+
this["~ensureNotDisposed"]();
|
|
545
|
+
if (this.isDisposing) return;
|
|
546
|
+
await pod.dispose();
|
|
547
|
+
this.pods.delete(pod);
|
|
548
|
+
}
|
|
458
549
|
};
|
|
550
|
+
const podOnlyMeta = meta("pumped-fn/space-only", custom());
|
|
551
|
+
const podOnly = podOnlyMeta(true);
|
|
459
552
|
function createScope(...presets) {
|
|
460
|
-
return new
|
|
553
|
+
return new BaseScope({
|
|
554
|
+
pod: false,
|
|
555
|
+
initialValues: presets
|
|
556
|
+
});
|
|
461
557
|
}
|
|
462
558
|
function middleware(m) {
|
|
463
559
|
return m;
|
|
464
560
|
}
|
|
561
|
+
var Pod = class extends BaseScope {
|
|
562
|
+
parentScope;
|
|
563
|
+
constructor(scope, ...presets) {
|
|
564
|
+
super({
|
|
565
|
+
pod: true,
|
|
566
|
+
initialValues: presets
|
|
567
|
+
});
|
|
568
|
+
this.parentScope = scope;
|
|
569
|
+
}
|
|
570
|
+
async resolve(executor, force) {
|
|
571
|
+
const isPodOnly = podOnlyMeta.find(executor);
|
|
572
|
+
if (isPodOnly) return super.resolve(executor, force);
|
|
573
|
+
const accessor = this["~makeAccessor"](executor);
|
|
574
|
+
if (accessor.lookup()) return accessor.get();
|
|
575
|
+
const value = await this.parentScope.resolve(executor, force);
|
|
576
|
+
this["cache"].set(executor, {
|
|
577
|
+
accessor,
|
|
578
|
+
value: {
|
|
579
|
+
kind: "resolved",
|
|
580
|
+
value
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
return value;
|
|
584
|
+
}
|
|
585
|
+
async "~resolveExecutor"(ie, ref) {
|
|
586
|
+
if (isReactiveExecutor(ie)) throw new Error("Reactive executors cannot be used in pod");
|
|
587
|
+
const isPodOnly = podOnlyMeta.find(ie);
|
|
588
|
+
if (isPodOnly) return super["~resolveExecutor"](ie, ref);
|
|
589
|
+
else {
|
|
590
|
+
const t = getExecutor(ie);
|
|
591
|
+
const value = await this.parentScope["~resolveExecutor"](ie, ref);
|
|
592
|
+
const currentAccessor = this["~makeAccessor"](t);
|
|
593
|
+
this.cache.set(t, {
|
|
594
|
+
accessor: currentAccessor,
|
|
595
|
+
value: {
|
|
596
|
+
kind: "resolved",
|
|
597
|
+
value
|
|
598
|
+
}
|
|
599
|
+
});
|
|
600
|
+
return value;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
};
|
|
465
604
|
|
|
466
605
|
//#endregion
|
|
467
606
|
//#region src/helpers.ts
|
|
@@ -497,5 +636,5 @@ function adapt(scope, executor) {
|
|
|
497
636
|
}
|
|
498
637
|
|
|
499
638
|
//#endregion
|
|
500
|
-
export { SchemaError, adapt, createScope, custom, derive, executorSymbol, findValue, findValues, getValue, isExecutor, isLazyExecutor, isMainExecutor, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, middleware, prepare, preset, provide, resolves, validate, validateAsync };
|
|
639
|
+
export { SchemaError, adapt, collectFromGenerator, createScope, custom, derive, executorSymbol, findValue, findValues, getValue, isAsyncGenerator, isAsyncGeneratorFunction, isExecutor, isGenerator, isGeneratorFunction, isIterableOrAsyncIterable, isLazyExecutor, isMainExecutor, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, middleware, placeholder, podOnly, prepare, preset, processGenerator, provide, resolves, validate, validateAsync };
|
|
501
640
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["executorSymbol: unique symbol","metaSymbol: unique symbol","issues: ReadonlyArray<StandardSchemaV1.Issue>","factory: Core.NoDependencyFn<T> | Core.DependentFn<T, unknown>","dependencies:\n | undefined\n | Core.UExecutor\n | Array<Core.UExecutor>\n | Record<string, Core.UExecutor>","metas: Meta.Meta[] | undefined","_: unknown","controller: Core.Controller","f","executor: Core.BaseExecutor<unknown>","executor: unknown","input: unknown","factory: Core.NoDependencyFn<T>","pdependencies:\n | Core.BaseExecutor<D>\n | Array<Core.BaseExecutor<D>>\n | Record<string, Core.BaseExecutor<unknown>>","pfactory:\n | Core.DependentFn<T, Core.InferOutput<D>>\n | Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>","e: Core.Executor<T> | Escapable<T>","v: T","schema: TSchema","data: unknown","key: string | symbol","schema: StandardSchemaV1<V>","value: V","d: Partial<V>","source: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.Meta<V>","meta","executor: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.MetaFn<V>","e: Core.UExecutor","preset","e: UE","ie: Core.UExecutor","ref: UE","ie:\n | undefined\n | Core.UExecutor\n | Core.UExecutor[]\n | Record<string, Core.UExecutor>","r: Record<string, unknown>","cleanup: Core.Cleanup","force: boolean","resolve","soft: boolean","updateFn: unknown | ((current: unknown) => unknown)","cb: (value: unknown) => void","executor: Core.Executor<T>","e: Core.Executor<T>","u: T | ((current: T) => T)","value: T | undefined","e: Core.Executor<unknown>","s: boolean","cb: (a: Core.Accessor<T>) => void | Promise<void>","ou","callback: Core.ChangeCallback","cb: Core.ReleaseCallback","middleware: Core.Middleware","middleware","m: Core.Middleware","scope: Core.Scope","executors: { [K in keyof T]: T[K] }","result","executor: Core.Executor<T>","fn: PreparedExecutor<Core.InferOutput<Core.Executor<T>>>","executor: Core.Executor<(...args: A) => Promise<T> | T>","fn: AdaptedExecutor<A, T>","fn"],"sources":["../src/types.ts","../src/executor.ts","../src/ssch.ts","../src/meta.ts","../src/scope.ts","../src/helpers.ts"],"sourcesContent":["import { AdaptedExecutor, PreparedExecutor } from \"./helpers\";\n\nexport const executorSymbol: unique symbol = Symbol.for(\n \"@pumped-fn/core/executor\"\n);\nexport const metaSymbol: unique symbol = Symbol.for(\"@pumped-fn/core/meta\");\n\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n readonly \"~standard\": StandardSchemaV1.Props<Input, Output>;\n}\n\nexport declare namespace StandardSchemaV1 {\n export interface Props<Input = unknown, Output = Input> {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (\n value: unknown\n ) => Result<Output> | Promise<Result<Output>>;\n readonly types?: Types<Input, Output> | undefined;\n }\n\n export type Result<Output> = SuccessResult<Output> | FailureResult;\n\n export interface SuccessResult<Output> {\n readonly value: Output;\n readonly issues?: undefined;\n }\n\n export interface FailureResult {\n readonly issues: ReadonlyArray<Issue>;\n }\n\n export interface Issue {\n readonly message: string;\n readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;\n }\n\n export interface PathSegment {\n readonly key: PropertyKey;\n }\n\n export interface Types<Input = unknown, Output = Input> {\n readonly input: Input;\n readonly output: Output;\n }\n\n export type InferInput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"input\"];\n\n export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"output\"];\n}\n\nexport class SchemaError extends Error {\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;\n\n constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>) {\n super(issues[0].message);\n this.name = \"SchemaError\";\n this.issues = issues;\n }\n}\n\nexport declare namespace Meta {\n export interface MetaContainer {\n metas: Meta[] | undefined;\n }\n\n export interface Meta<V = unknown> {\n readonly [metaSymbol]: true;\n readonly key: string | symbol;\n readonly schema: StandardSchemaV1<V>;\n readonly value: V;\n }\n\n export interface MetaFn<V> {\n (value: V): Meta<V>;\n readonly key: string | symbol;\n partial: <D extends Partial<V>>(d: D) => D;\n some: (source: MetaContainer | Meta[] | undefined) => V[];\n find: (source: MetaContainer | Meta[] | undefined) => V | undefined;\n get: (source: MetaContainer | Meta[] | undefined) => V;\n }\n}\n\nexport declare namespace Core {\n export type Output<T> = T | Promise<T>;\n\n export type NoDependencyFn<T> = (scope: Controller) => Output<T>;\n export type DependentFn<T, D> = (\n dependencies: D,\n scope: Controller\n ) => Output<T>;\n export type RecordLike = Record<string, unknown>;\n export type UExecutor = BaseExecutor<unknown>;\n\n export type Cleanup = () => void | Promise<void>;\n\n export type Controller = {\n cleanup: (cleanup: Cleanup) => void;\n release: () => Promise<void>;\n scope: Scope;\n };\n\n export type Kind = \"main\" | \"reactive\" | \"lazy\" | \"static\";\n\n export interface BaseExecutor<T> extends Meta.MetaContainer {\n [executorSymbol]: Kind;\n factory: NoDependencyFn<T> | DependentFn<T, unknown> | undefined;\n dependencies:\n | undefined\n | UExecutor\n | Array<UExecutor>\n | Record<string, UExecutor>;\n }\n\n export interface Executor<T> extends BaseExecutor<T> {\n [executorSymbol]: \"main\";\n factory: NoDependencyFn<T> | DependentFn<T, unknown>;\n\n /** Return an executor controller without resolving Executor */\n readonly lazy: Lazy<T>;\n\n /** Return an resolved executor, and mark the user to be reactived for future changes */\n readonly reactive: Reactive<T>;\n\n /** Return an resolved executor with its controller */\n readonly static: Static<T>;\n }\n\n export interface Reactive<T> extends BaseExecutor<T> {\n [executorSymbol]: \"reactive\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Lazy<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"lazy\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Static<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"static\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export type PendingState<T> = { kind: \"pending\"; promise: Promise<T> };\n export type ResolvedState<T> = { kind: \"resolved\"; value: T };\n export type RejectedState = { kind: \"rejected\"; error: unknown };\n\n export type ResolveState<T> =\n | PendingState<T>\n | ResolvedState<T>\n | RejectedState;\n\n export interface Accessor<T> extends Meta.MetaContainer {\n lookup(): undefined | ResolveState<T>;\n\n get(): T;\n resolve(force?: boolean): Promise<T>;\n release(soft?: boolean): Promise<void>;\n update(updateFn: T | ((current: T) => T)): Promise<void>;\n subscribe(callback: (value: T) => void): Cleanup;\n }\n\n export interface Preset<T> {\n [executorSymbol]: \"preset\";\n executor: Executor<T>;\n value: T;\n }\n\n export type InferOutput<T> = T extends\n | Executor<infer U>\n | Reactive<infer U>\n | PreparedExecutor<infer U>\n ? Awaited<U>\n : T extends Lazy<infer U> | Static<infer U>\n ? Accessor<Awaited<U>>\n : T extends AdaptedExecutor<infer A, infer U>\n ? (...args: A) => Promise<Awaited<U>>\n : never;\n\n export type Event = \"resolve\" | \"update\" | \"release\";\n export type Replacer = Preset<unknown>;\n type EventCallbackResult = void | Replacer;\n\n export type ChangeCallback = (\n event: \"resolve\" | \"update\",\n executor: Executor<unknown>,\n resolved: unknown,\n scope: Scope\n ) => EventCallbackResult;\n\n export type ReleaseCallback = (\n event: \"release\",\n executor: Executor<unknown>,\n scope: Scope\n ) => void | Promise<void>;\n\n export type Middleware = {\n init?: (scope: Scope) => void | Promise<void>;\n dispose?: (scope: Scope) => void | Promise<void>;\n };\n\n export interface Scope {\n accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;\n\n resolve<T>(executor: Core.Executor<T>): Promise<T>;\n resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;\n\n update<T>(\n executor: Executor<T>,\n updateFn: T | ((current: T) => T)\n ): Promise<void>;\n\n release(executor: Executor<any>, soft?: boolean): Promise<void>;\n\n dispose(): Promise<void>;\n\n onUpdate<T>(\n executor: Executor<T>,\n callback: (accessor: Accessor<T>) => void\n ): Cleanup;\n\n onChange(cb: ChangeCallback): Cleanup;\n onRelease(cb: ReleaseCallback): Cleanup;\n\n use(middleware: Middleware): Cleanup;\n }\n}\n","import { Core, executorSymbol, Meta } from \"./types\";\nimport type { Escapable } from \"./helpers\";\n\nfunction createExecutor<T>(\n factory: Core.NoDependencyFn<T> | Core.DependentFn<T, unknown>,\n dependencies:\n | undefined\n | Core.UExecutor\n | Array<Core.UExecutor>\n | Record<string, Core.UExecutor>,\n metas: Meta.Meta[] | undefined\n): Core.Executor<T> {\n const executor = {\n [executorSymbol]: \"main\",\n factory: (_: unknown, controller: Core.Controller) => {\n if (dependencies === undefined) {\n const f = factory as Core.NoDependencyFn<T>;\n return f(controller);\n }\n\n const f = factory as Core.DependentFn<T, unknown>;\n return f(_, controller);\n },\n dependencies,\n metas: metas,\n } as unknown as Core.Executor<T>;\n\n const lazyExecutor = {\n [executorSymbol]: \"lazy\",\n dependencies: undefined,\n executor,\n factory: undefined,\n metas: metas,\n } satisfies Core.Lazy<T>;\n\n const reactiveExecutor = {\n [executorSymbol]: \"reactive\",\n executor,\n factory: undefined,\n dependencies: undefined,\n metas: metas,\n } satisfies Core.Reactive<T>;\n\n const staticExecutor = {\n [executorSymbol]: \"static\",\n dependencies: undefined,\n factory: undefined,\n metas: metas,\n executor,\n } satisfies Core.Static<T>;\n\n Object.defineProperties(executor, {\n lazy: {\n value: lazyExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n reactive: {\n value: reactiveExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n static: {\n value: staticExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n });\n\n return executor;\n}\n\nexport function isLazyExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Lazy<unknown> {\n return executor[executorSymbol] === \"lazy\";\n}\n\nexport function isReactiveExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Reactive<unknown> {\n return executor[executorSymbol] === \"reactive\";\n}\n\nexport function isStaticExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Static<unknown> {\n return executor[executorSymbol] === \"static\";\n}\n\nexport function isMainExecutor(\n executor: unknown\n): executor is Core.Executor<unknown> {\n return isExecutor(executor) && executor[executorSymbol] === \"main\";\n}\n\nexport function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T> {\n return typeof input === \"object\" && input !== null && executorSymbol in input;\n}\n\nexport function provide<T>(\n factory: Core.NoDependencyFn<T>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(factory, undefined, metas);\n}\n\nexport function derive<T, D extends Core.BaseExecutor<unknown>>(\n dependencies: D,\n factory: Core.DependentFn<T, Core.InferOutput<D>>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<\n T,\n D extends\n | ReadonlyArray<Core.BaseExecutor<unknown>>\n | Record<string, Core.BaseExecutor<unknown>>\n>(\n dependencies: { [K in keyof D]: D[K] },\n factory: Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<T, D>(\n pdependencies:\n | Core.BaseExecutor<D>\n | Array<Core.BaseExecutor<D>>\n | Record<string, Core.BaseExecutor<unknown>>,\n pfactory:\n | Core.DependentFn<T, Core.InferOutput<D>>\n | Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(pfactory as any, pdependencies, metas);\n}\n\nexport function preset<T>(\n e: Core.Executor<T> | Escapable<T>,\n v: T\n): Core.Preset<T> {\n const executor = isExecutor(e) ? e : e.escape();\n\n return {\n [executorSymbol]: \"preset\",\n value: v,\n executor,\n };\n}\n","import { SchemaError, StandardSchemaV1 } from \"./types\";\n\nexport function validate<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Awaited<StandardSchemaV1.InferOutput<TSchema>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n throw new Error(\"validating async is not supported\");\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n return result.value as any;\n}\n\nexport async function validateAsync<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Promise<Awaited<StandardSchemaV1.InferOutput<TSchema>>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n const result_1 = await result;\n if (result_1.issues) {\n throw new SchemaError(result_1.issues);\n }\n return result_1.value as any;\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n\n return Promise.resolve(result.value as any);\n}\n\nexport function custom<T>(): StandardSchemaV1<T, T> {\n return {\n \"~standard\": {\n vendor: \"pumped-fn\",\n version: 1,\n validate: (value) => {\n return { value: value as T };\n },\n },\n };\n}\n","import { validate } from \"./ssch\";\nimport { metaSymbol, StandardSchemaV1, type Meta } from \"./types\";\n\nexport const meta = <V>(\n key: string | symbol,\n schema: StandardSchemaV1<V>\n): Meta.MetaFn<V> => {\n const _key = typeof key === \"string\" ? Symbol(key) : key;\n\n const fn = (value: V) =>\n ({\n [metaSymbol]: true,\n key: _key,\n schema,\n value,\n } as unknown as Meta.MetaFn<V>);\n\n Object.defineProperty(fn, \"key\", {\n value: _key,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperty(fn, metaSymbol, {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperties(fn, {\n partial: {\n value: (d: Partial<V>) => {\n return Object.assign({}, fn({} as V), d);\n },\n configurable: false,\n enumerable: false,\n writable: false,\n },\n some: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValues(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n find: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValue(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n get: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n getValue(\n findValue(\n source,\n fn as unknown as Meta.MetaFn<unknown>\n ) as Meta.Meta<V>\n ),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n });\n\n return fn as any;\n};\n\nexport function getValue<V>(meta: Meta.Meta<V>): Awaited<V> {\n return validate(meta.schema, meta.value);\n}\n\nexport function findValues<V = unknown>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V[] {\n if (!executor) return [];\n\n const metas = Array.isArray(executor) ? executor : executor.metas ?? [];\n\n const maybeMeta = metas.filter((m) => m.key === meta.key);\n return maybeMeta.map((m) => getValue(m as Meta.Meta<V>));\n}\n\nexport function findValue<V>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V | undefined {\n const values = findValues(executor, meta);\n return values.at(0);\n}\n","import {\n isLazyExecutor,\n isReactiveExecutor,\n isStaticExecutor,\n isMainExecutor,\n isExecutor,\n} from \"./executor\";\nimport { Core } from \"./types\";\n\ntype CacheEntry = {\n accessor: Core.Accessor<unknown>;\n value: Core.ResolveState<unknown>;\n};\n\ntype UE = Core.Executor<unknown>;\ntype OnUpdateFn = (accessor: Core.Accessor<unknown>) => void | Promise<void>;\n\nfunction getExecutor(e: Core.UExecutor): Core.Executor<unknown> {\n if (isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)) {\n return e.executor;\n }\n\n return e as Core.Executor<unknown>;\n}\n\nclass Scope implements Core.Scope {\n private disposed: boolean = false;\n private cache: Map<UE, CacheEntry> = new Map();\n private cleanups = new Map<UE, Set<Core.Cleanup>>();\n private onUpdates = new Map<UE, Set<OnUpdateFn | UE>>();\n private onEvents = {\n change: new Set<Core.ChangeCallback>(),\n release: new Set<Core.ReleaseCallback>(),\n } as const;\n\n private middlewares: Core.Middleware[] = [];\n\n constructor(...presets: Core.Preset<unknown>[]) {\n for (const preset of presets) {\n const accessor = this[\"~makeAccessor\"](preset.executor);\n\n this.cache.set(preset.executor, {\n accessor,\n value: { kind: \"resolved\", value: preset.value },\n });\n }\n }\n\n private async \"~triggerCleanup\"(e: UE): Promise<void> {\n const cs = this.cleanups.get(e);\n if (cs) {\n for (const c of Array.from(cs.values()).reverse()) {\n await c();\n }\n }\n }\n\n private async \"~triggerUpdate\"(e: UE): Promise<void> {\n const ce = this.cache.get(e);\n if (!ce) {\n throw new Error(\"Executor is not yet resolved\");\n }\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n for (const t of Array.from(ou.values())) {\n if (isMainExecutor(t)) {\n if (this.cleanups.has(t)) {\n this[\"~triggerCleanup\"](t);\n }\n\n const a = this.cache.get(t);\n await a!.accessor.resolve(true);\n\n if (this.onUpdates.has(t)) {\n await this[\"~triggerUpdate\"](t);\n }\n } else {\n await t(ce.accessor);\n }\n }\n }\n }\n\n private async \"~resolveExecutor\"(\n ie: Core.UExecutor,\n ref: UE\n ): Promise<unknown> {\n const e = getExecutor(ie);\n const a = this[\"~makeAccessor\"](e);\n\n if (isLazyExecutor(ie)) {\n return a;\n }\n\n if (isReactiveExecutor(ie)) {\n const c = this.onUpdates.get(ie.executor) ?? new Set();\n this.onUpdates.set(ie.executor, c);\n c.add(ref);\n }\n\n await a.resolve(false);\n if (isStaticExecutor(ie)) {\n return a;\n }\n\n return a.get();\n }\n\n private async \"~resolveDependencies\"(\n ie:\n | undefined\n | Core.UExecutor\n | Core.UExecutor[]\n | Record<string, Core.UExecutor>,\n ref: UE\n ): Promise<undefined | unknown | unknown[] | Record<string, unknown>> {\n if (ie === undefined) {\n return undefined;\n }\n\n if (isExecutor(ie)) {\n return this[\"~resolveExecutor\"](ie, ref);\n }\n\n if (Array.isArray(ie)) {\n return await Promise.all(\n ie.map((item) => this[\"~resolveDependencies\"](item, ref))\n );\n }\n\n const r: Record<string, unknown> = {};\n for (const k of Object.keys(ie)) {\n const t = ie[k];\n const rd = await this[\"~resolveDependencies\"](t, ref);\n\n r[k] = rd;\n }\n\n return r;\n }\n\n private \"~ensureNotDisposed\"(): void {\n if (this.disposed) {\n throw new Error(\"Scope is disposed\");\n }\n }\n\n private \"~makeAccessor\"(e: Core.UExecutor): Core.Accessor<unknown> {\n const requestor =\n isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)\n ? e.executor\n : (e as UE);\n\n const cachedAccessor = this.cache.get(requestor);\n if (cachedAccessor) {\n return cachedAccessor.accessor;\n }\n\n const accessor = {} as Core.Accessor<unknown>;\n const factory = requestor.factory;\n const controller = {\n cleanup: (cleanup: Core.Cleanup) => {\n const currentSet = this.cleanups.get(requestor) ?? new Set();\n this.cleanups.set(requestor, currentSet);\n\n currentSet.add(cleanup);\n },\n release: async () => this.release(requestor),\n scope: this,\n };\n\n const resolve = (force: boolean): Promise<unknown> => {\n this[\"~ensureNotDisposed\"]();\n\n const entry = this.cache.get(requestor)!;\n const cached = entry?.value;\n\n if (cached && !force) {\n if (cached.kind === \"resolved\") {\n return Promise.resolve(cached.value);\n } else if (cached.kind === \"rejected\") {\n throw cached.error;\n } else {\n return cached.promise;\n }\n }\n\n const promise = new Promise((resolve, reject) => {\n this[\"~resolveDependencies\"](requestor.dependencies, requestor)\n .then((dependencies) => factory(dependencies as any, controller))\n .then(async (result) => {\n let current = result;\n\n const events = this.onEvents.change;\n for (const event of events) {\n const updated = event(\"resolve\", requestor, current, this);\n if (updated !== undefined && updated.executor === requestor) {\n current = updated.value;\n }\n }\n\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"resolved\", value: current },\n });\n\n resolve(current);\n })\n .catch((error) => {\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"rejected\", error },\n });\n\n reject(error);\n });\n });\n\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"pending\", promise },\n });\n return promise;\n };\n\n return Object.assign(accessor, {\n get: () => {\n this[\"~ensureNotDisposed\"]();\n\n const cacheEntry = this.cache.get(requestor)?.value;\n\n if (!cacheEntry || cacheEntry.kind === \"pending\") {\n throw new Error(\"Executor is not resolved\");\n }\n\n if (cacheEntry.kind === \"rejected\") {\n throw cacheEntry.error;\n }\n\n return cacheEntry.value;\n },\n lookup: () => {\n this[\"~ensureNotDisposed\"]();\n\n const cacheEntry = this.cache.get(requestor);\n\n if (!cacheEntry) {\n return undefined;\n }\n\n return cacheEntry.value;\n },\n metas: e.metas,\n resolve,\n release: async (soft: boolean = false) => {\n this.release(requestor, soft);\n },\n update: (updateFn: unknown | ((current: unknown) => unknown)) => {\n return this.update(requestor, updateFn);\n },\n subscribe: (cb: (value: unknown) => void) => {\n this[\"~ensureNotDisposed\"]();\n return this.onUpdate(requestor, cb);\n },\n } satisfies Partial<Core.Accessor<unknown>>);\n }\n\n accessor<T>(executor: Core.Executor<T>): Core.Accessor<T> {\n this[\"~ensureNotDisposed\"]();\n return this[\"~makeAccessor\"](executor) as Core.Accessor<T>;\n }\n\n async resolve<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<T> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor.get() as T;\n }\n\n async resolveAccessor<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<Core.Accessor<T>> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor as Core.Accessor<T>;\n }\n\n async update<T>(\n e: Core.Executor<T>,\n u: T | ((current: T) => T)\n ): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n this[\"~triggerCleanup\"](e);\n const accessor = this[\"~makeAccessor\"](e);\n\n let value: T | undefined;\n\n if (typeof u === \"function\") {\n const fn = u as (current: T) => T;\n value = fn(accessor.get() as T);\n } else {\n value = u;\n }\n\n const events = this.onEvents.change;\n for (const event of events) {\n const updated = event(\"update\", e, value, this);\n if (updated !== undefined && e === updated.executor) {\n value = updated.value as any;\n }\n }\n\n this.cache.set(e, {\n accessor,\n value: { kind: \"resolved\", value },\n });\n\n await this[\"~triggerUpdate\"](e);\n }\n\n async release(e: Core.Executor<unknown>, s: boolean = false): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n\n const ce = this.cache.get(e);\n if (!ce && !s) {\n throw new Error(\"Executor is not yet resolved\");\n }\n\n await this[\"~triggerCleanup\"](e);\n const events = this.onEvents.release;\n for (const event of events) {\n await event(\"release\", e, this);\n }\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n for (const t of Array.from(ou.values())) {\n if (isMainExecutor(t)) {\n await this.release(t, true);\n }\n }\n\n this.onUpdates.delete(e);\n }\n\n this.cache.delete(e);\n }\n\n async dispose(): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n\n const disposeEvents = this.middlewares.map(\n (m) => m.dispose?.(this) ?? Promise.resolve()\n );\n await Promise.all(disposeEvents);\n\n const currents = this.cache.keys();\n for (const current of currents) {\n await this.release(current, true);\n }\n\n this.disposed = true;\n this.cache.clear();\n this.cleanups.clear();\n this.onUpdates.clear();\n this.onEvents.change.clear();\n this.onEvents.release.clear();\n }\n\n onUpdate<T>(\n e: Core.Executor<T>,\n cb: (a: Core.Accessor<T>) => void | Promise<void>\n ): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e) ?? new Set();\n this.onUpdates.set(e, ou);\n ou.add(cb as any);\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n ou.delete(cb as any);\n if (ou.size === 0) {\n this.onUpdates.delete(e);\n }\n }\n };\n }\n\n onChange(callback: Core.ChangeCallback): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n\n this.onEvents[\"change\"].add(callback as any);\n return () => {\n this[\"~ensureNotDisposed\"]();\n this.onEvents[\"change\"].delete(callback as any);\n };\n }\n\n onRelease(cb: Core.ReleaseCallback): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n\n this.onEvents[\"release\"].add(cb);\n return () => {\n this[\"~ensureNotDisposed\"]();\n this.onEvents[\"release\"].delete(cb);\n };\n }\n\n use(middleware: Core.Middleware): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n this.middlewares.push(middleware);\n\n middleware.init?.(this);\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n this.middlewares = this.middlewares.filter((m) => m !== middleware);\n };\n }\n}\n\nexport function createScope(...presets: Core.Preset<unknown>[]): Core.Scope {\n return new Scope(...presets);\n}\n\nexport function middleware(m: Core.Middleware): Core.Middleware {\n return m;\n}\n","import {\n isExecutor,\n isLazyExecutor,\n isReactiveExecutor,\n isStaticExecutor,\n} from \"./executor\";\nimport { Core } from \"./types\";\n\nexport async function resolves<\n T extends\n | Array<Core.Executor<unknown> | Escapable<unknown>>\n | Record<string, Core.Executor<unknown> | Escapable<unknown>>\n>(\n scope: Core.Scope,\n executors: { [K in keyof T]: T[K] }\n): Promise<{ [K in keyof T]: Core.InferOutput<T[K]> }> {\n const objectOutput = {};\n const arrayOutput = [];\n\n const isArray = Array.isArray(executors);\n\n for (const [index, executor] of Object.entries(executors)) {\n const target = !isExecutor(executor)\n ? executor.escape()\n : isLazyExecutor(executor) ||\n isReactiveExecutor(executor) ||\n isStaticExecutor(executor)\n ? executor.executor\n : (executor as Core.Executor<unknown>);\n\n const result = await scope.resolve(target);\n\n if (isArray) {\n arrayOutput.push(result);\n } else {\n Object.assign(objectOutput, { [index]: result });\n }\n }\n\n const result = isArray ? arrayOutput : objectOutput;\n return result as { [K in keyof T]: Core.InferOutput<T[K]> };\n}\n\nexport type Escapable<T> = {\n escape: () => Core.Executor<T>;\n};\n\nexport type PreparedExecutor<T> = {\n (): Promise<Core.InferOutput<Core.Executor<T>>>;\n escape: () => Core.Executor<T>;\n};\n\nexport function prepare<T>(\n scope: Core.Scope,\n executor: Core.Executor<T>\n): PreparedExecutor<Core.InferOutput<Core.Executor<T>>> {\n const fn: PreparedExecutor<Core.InferOutput<Core.Executor<T>>> =\n (async () => {\n return await scope.resolve(executor);\n }) as any;\n\n return Object.assign(fn, {\n escape: () => {\n return executor;\n },\n });\n}\n\nexport type AdaptedExecutor<A extends Array<unknown>, T> = {\n (...args: A): Promise<Awaited<T>>;\n escape: () => Core.Executor<(...args: A) => Promise<Awaited<T>>>;\n};\n\nexport function adapt<A extends Array<unknown>, T>(\n scope: Core.Scope,\n executor: Core.Executor<(...args: A) => Promise<T> | T>\n): AdaptedExecutor<A, T> {\n const fn: AdaptedExecutor<A, T> = (async (...args: A) => {\n const fn = await scope.resolve(executor);\n return await fn(...args);\n }) as any;\n\n return Object.assign(fn, {\n escape: () => {\n return executor;\n },\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["executorSymbol: unique symbol","metaSymbol: unique symbol","issues: ReadonlyArray<StandardSchemaV1.Issue>","factory: Core.NoDependencyFn<T> | Core.DependentFn<T, unknown>","dependencies:\n | undefined\n | Core.UExecutor\n | Array<Core.UExecutor>\n | Record<string, Core.UExecutor>","metas: Meta.Meta[] | undefined","_: unknown","controller: Core.Controller","f","executor: Core.BaseExecutor<unknown>","executor: unknown","input: unknown","factory: Core.NoDependencyFn<T>","pdependencies:\n | Core.BaseExecutor<D>\n | Array<Core.BaseExecutor<D>>\n | Record<string, Core.BaseExecutor<unknown>>","pfactory:\n | Core.DependentFn<T, Core.InferOutput<D>>\n | Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>","e: Core.Executor<T> | Escapable<T>","v: T","schema: TSchema","data: unknown","key: string | symbol","schema: StandardSchemaV1<V>","value: V","d: Partial<V>","source: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.Meta<V>","meta","executor: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.MetaFn<V>","value: unknown","fn: unknown","gen: Generator<Y, T> | AsyncGenerator<Y, T>","yielded: Y[]","returned: T","result: IteratorResult<Y, T>","handler: GeneratorHandler<Y, T>","e: Core.UExecutor","options: {\n initialValues: Core.Preset<unknown>[];\n pod: boolean;\n }","preset","e: UE","ie: Core.UExecutor","ref: UE","ie:\n | undefined\n | Core.UExecutor\n | Core.UExecutor[]\n | Record<string, Core.UExecutor>","r: Record<string, unknown>","cleanup: Core.Cleanup","force: boolean","resolve","soft: boolean","updateFn: unknown | ((current: unknown) => unknown)","cb: (value: unknown) => void","executor: Core.Executor<T>","e: Core.Executor<T>","u: T | ((current: T) => T)","value: T | undefined","e: Core.Executor<unknown>","s: boolean","cb: (a: Core.Accessor<T>) => void | Promise<void>","ou","callback: Core.ChangeCallback","cb: Core.ReleaseCallback","middleware: Core.Middleware","middleware","pod: Core.Pod","podOnlyMeta: Meta.MetaFn<boolean>","podOnly: Meta.Meta<boolean>","m: Core.Middleware","scope: BaseScope","force?: boolean","scope: Core.Scope","executors: { [K in keyof T]: T[K] }","result","executor: Core.Executor<T>","fn: PreparedExecutor<Core.InferOutput<Core.Executor<T>>>","executor: Core.Executor<(...args: A) => Promise<T> | T>","fn: AdaptedExecutor<A, T>","fn"],"sources":["../src/types.ts","../src/executor.ts","../src/ssch.ts","../src/meta.ts","../src/generator-utils.ts","../src/scope.ts","../src/helpers.ts"],"sourcesContent":["import { AdaptedExecutor, PreparedExecutor } from \"./helpers\";\n\nexport const executorSymbol: unique symbol = Symbol.for(\n \"@pumped-fn/core/executor\"\n);\nexport const metaSymbol: unique symbol = Symbol.for(\"@pumped-fn/core/meta\");\n\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n readonly \"~standard\": StandardSchemaV1.Props<Input, Output>;\n}\n\nexport declare namespace StandardSchemaV1 {\n export interface Props<Input = unknown, Output = Input> {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (\n value: unknown\n ) => Result<Output> | Promise<Result<Output>>;\n readonly types?: Types<Input, Output> | undefined;\n }\n\n export type Result<Output> = SuccessResult<Output> | FailureResult;\n\n export interface SuccessResult<Output> {\n readonly value: Output;\n readonly issues?: undefined;\n }\n\n export interface FailureResult {\n readonly issues: ReadonlyArray<Issue>;\n }\n\n export interface Issue {\n readonly message: string;\n readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;\n }\n\n export interface PathSegment {\n readonly key: PropertyKey;\n }\n\n export interface Types<Input = unknown, Output = Input> {\n readonly input: Input;\n readonly output: Output;\n }\n\n export type InferInput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"input\"];\n\n export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"output\"];\n}\n\nexport class SchemaError extends Error {\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;\n\n constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>) {\n super(issues[0].message);\n this.name = \"SchemaError\";\n this.issues = issues;\n }\n}\n\nexport declare namespace Meta {\n export interface MetaContainer {\n metas: Meta[] | undefined;\n }\n\n export interface Meta<V = unknown> {\n readonly [metaSymbol]: true;\n readonly key: string | symbol;\n readonly schema: StandardSchemaV1<V>;\n readonly value: V;\n }\n\n export interface MetaFn<V> {\n (value: V): Meta<V>;\n readonly key: string | symbol;\n partial: <D extends Partial<V>>(d: D) => D;\n some: (source: MetaContainer | Meta[] | undefined) => V[];\n find: (source: MetaContainer | Meta[] | undefined) => V | undefined;\n get: (source: MetaContainer | Meta[] | undefined) => V;\n }\n}\n\nexport declare namespace Core {\n export type Output<T> = T | Promise<T>;\n export type GeneratorOutput<Y, T> =\n | T\n | Promise<T>\n | Generator<Y, T>\n | AsyncGenerator<Y, T>;\n\n export type NoDependencyFn<T> = (scope: Controller) => Output<T>;\n export type DependentFn<T, D> = (\n dependencies: D,\n scope: Controller\n ) => Output<T>;\n\n export type NoDependencyGeneratorFn<Y, T> = (\n scope: Controller\n ) => GeneratorOutput<Y, T>;\n export type DependentGeneratorFn<Y, T, D> = (\n dependencies: D,\n scope: Controller\n ) => GeneratorOutput<Y, T>;\n export type RecordLike = Record<string, unknown>;\n export type UExecutor = BaseExecutor<unknown>;\n\n export type Cleanup = () => void | Promise<void>;\n\n export type Controller = {\n cleanup: (cleanup: Cleanup) => void;\n release: () => Promise<void>;\n scope: Scope;\n };\n\n export type Kind = \"main\" | \"reactive\" | \"lazy\" | \"static\";\n\n export interface BaseExecutor<T> extends Meta.MetaContainer {\n [executorSymbol]: Kind;\n factory: NoDependencyFn<T> | DependentFn<T, unknown> | undefined;\n dependencies:\n | undefined\n | UExecutor\n | Array<UExecutor>\n | Record<string, UExecutor>;\n }\n\n export interface Executor<T> extends BaseExecutor<T> {\n [executorSymbol]: \"main\";\n factory: NoDependencyFn<T> | DependentFn<T, unknown>;\n\n /** Return an executor controller without resolving Executor */\n readonly lazy: Lazy<T>;\n\n /** Return an resolved executor, and mark the user to be reactived for future changes */\n readonly reactive: Reactive<T>;\n\n /** Return an resolved executor with its controller */\n readonly static: Static<T>;\n }\n\n export interface Reactive<T> extends BaseExecutor<T> {\n [executorSymbol]: \"reactive\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Lazy<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"lazy\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Static<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"static\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export type PendingState<T> = { kind: \"pending\"; promise: Promise<T> };\n export type ResolvedState<T> = { kind: \"resolved\"; value: T };\n export type RejectedState = { kind: \"rejected\"; error: unknown };\n\n export type ResolveState<T> =\n | PendingState<T>\n | ResolvedState<T>\n | RejectedState;\n\n export interface Accessor<T> extends Meta.MetaContainer {\n lookup(): undefined | ResolveState<T>;\n\n get(): T;\n resolve(force?: boolean): Promise<T>;\n release(soft?: boolean): Promise<void>;\n update(updateFn: T | ((current: T) => T)): Promise<void>;\n subscribe(callback: (value: T) => void): Cleanup;\n }\n\n export interface Preset<T> {\n [executorSymbol]: \"preset\";\n executor: Executor<T>;\n value: T;\n }\n\n export type InferOutput<T> = T extends\n | Executor<infer U>\n | Reactive<infer U>\n | PreparedExecutor<infer U>\n ? Awaited<U>\n : T extends Lazy<infer U> | Static<infer U>\n ? Accessor<Awaited<U>>\n : T extends AdaptedExecutor<infer A, infer U>\n ? (...args: A) => Promise<Awaited<U>>\n : never;\n\n export type Event = \"resolve\" | \"update\" | \"release\";\n export type Replacer = Preset<unknown>;\n type EventCallbackResult = void | Replacer;\n\n export type ChangeCallback = (\n event: \"resolve\" | \"update\",\n executor: Executor<unknown>,\n resolved: unknown,\n scope: Scope\n ) => EventCallbackResult;\n\n export type ReleaseCallback = (\n event: \"release\",\n executor: Executor<unknown>,\n scope: Scope\n ) => void | Promise<void>;\n\n export type Middleware = {\n init?: (scope: Scope) => void | Promise<void>;\n dispose?: (scope: Scope) => void | Promise<void>;\n };\n\n export interface Pod\n extends Omit<Core.Scope, \"update\" | \"pod\" | \"disposePod\" | \"onChange\"> {}\n\n export interface Scope {\n accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;\n\n resolve<T>(executor: Core.Executor<T>, force?: boolean): Promise<T>;\n resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;\n\n update<T>(\n executor: Executor<T>,\n updateFn: T | ((current: T) => T)\n ): Promise<void>;\n\n release(executor: Executor<any>, soft?: boolean): Promise<void>;\n\n dispose(): Promise<void>;\n\n onUpdate<T>(\n executor: Executor<T>,\n callback: (accessor: Accessor<T>) => void\n ): Cleanup;\n\n onChange(cb: ChangeCallback): Cleanup;\n onRelease(cb: ReleaseCallback): Cleanup;\n\n use(middleware: Middleware): Cleanup;\n\n pod(...presets: Preset<unknown>[]): Pod;\n disposePod(scope: Pod): Promise<void>;\n }\n}\n","import { Core, executorSymbol, Meta } from \"./types\";\nimport type { Escapable } from \"./helpers\";\n\nfunction createExecutor<T>(\n factory: Core.NoDependencyFn<T> | Core.DependentFn<T, unknown>,\n dependencies:\n | undefined\n | Core.UExecutor\n | Array<Core.UExecutor>\n | Record<string, Core.UExecutor>,\n metas: Meta.Meta[] | undefined\n): Core.Executor<T> {\n const executor = {\n [executorSymbol]: \"main\",\n factory: (_: unknown, controller: Core.Controller) => {\n if (dependencies === undefined) {\n const f = factory as Core.NoDependencyFn<T>;\n return f(controller);\n }\n\n const f = factory as Core.DependentFn<T, unknown>;\n return f(_, controller);\n },\n dependencies,\n metas: metas,\n } as unknown as Core.Executor<T>;\n\n const lazyExecutor = {\n [executorSymbol]: \"lazy\",\n dependencies: undefined,\n executor,\n factory: undefined,\n metas: metas,\n } satisfies Core.Lazy<T>;\n\n const reactiveExecutor = {\n [executorSymbol]: \"reactive\",\n executor,\n factory: undefined,\n dependencies: undefined,\n metas: metas,\n } satisfies Core.Reactive<T>;\n\n const staticExecutor = {\n [executorSymbol]: \"static\",\n dependencies: undefined,\n factory: undefined,\n metas: metas,\n executor,\n } satisfies Core.Static<T>;\n\n Object.defineProperties(executor, {\n lazy: {\n value: lazyExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n reactive: {\n value: reactiveExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n static: {\n value: staticExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n });\n\n return executor;\n}\n\nexport function isLazyExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Lazy<unknown> {\n return executor[executorSymbol] === \"lazy\";\n}\n\nexport function isReactiveExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Reactive<unknown> {\n return executor[executorSymbol] === \"reactive\";\n}\n\nexport function isStaticExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Static<unknown> {\n return executor[executorSymbol] === \"static\";\n}\n\nexport function isMainExecutor(\n executor: unknown\n): executor is Core.Executor<unknown> {\n return isExecutor(executor) && executor[executorSymbol] === \"main\";\n}\n\nexport function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T> {\n return typeof input === \"object\" && input !== null && executorSymbol in input;\n}\n\nexport function provide<T>(\n factory: Core.NoDependencyFn<T>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(factory, undefined, metas);\n}\n\nexport function derive<T, D extends Core.BaseExecutor<unknown>>(\n dependencies: D,\n factory: Core.DependentFn<T, Core.InferOutput<D>>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<\n T,\n D extends\n | ReadonlyArray<Core.BaseExecutor<unknown>>\n | Record<string, Core.BaseExecutor<unknown>>\n>(\n dependencies: { [K in keyof D]: D[K] },\n factory: Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<T, D>(\n pdependencies:\n | Core.BaseExecutor<D>\n | Array<Core.BaseExecutor<D>>\n | Record<string, Core.BaseExecutor<unknown>>,\n pfactory:\n | Core.DependentFn<T, Core.InferOutput<D>>\n | Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(pfactory as any, pdependencies, metas);\n}\n\nexport function preset<T>(\n e: Core.Executor<T> | Escapable<T>,\n v: T\n): Core.Preset<T> {\n const executor = isExecutor(e) ? e : e.escape();\n\n return {\n [executorSymbol]: \"preset\",\n value: v,\n executor,\n };\n}\n\nexport function placeholder<V>(...metas: Meta.Meta<unknown>[]): Core.Executor<V> {\n return provide<V>(() => {\n throw new Error(\"Placeholder executor cannot be resolved\");\n }, ...metas);\n}","import { SchemaError, StandardSchemaV1 } from \"./types\";\n\nexport function validate<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Awaited<StandardSchemaV1.InferOutput<TSchema>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n throw new Error(\"validating async is not supported\");\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n return result.value as any;\n}\n\nexport async function validateAsync<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Promise<Awaited<StandardSchemaV1.InferOutput<TSchema>>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n const result_1 = await result;\n if (result_1.issues) {\n throw new SchemaError(result_1.issues);\n }\n return result_1.value as any;\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n\n return Promise.resolve(result.value as any);\n}\n\nexport function custom<T>(): StandardSchemaV1<T, T> {\n return {\n \"~standard\": {\n vendor: \"pumped-fn\",\n version: 1,\n validate: (value) => {\n return { value: value as T };\n },\n },\n };\n}\n","import { validate } from \"./ssch\";\nimport { metaSymbol, StandardSchemaV1, type Meta } from \"./types\";\n\nexport const meta = <V>(\n key: string | symbol,\n schema: StandardSchemaV1<V>\n): Meta.MetaFn<V> => {\n const _key = typeof key === \"string\" ? Symbol(key) : key;\n\n const fn = (value: V) =>\n ({\n [metaSymbol]: true,\n key: _key,\n schema,\n value,\n } as unknown as Meta.MetaFn<V>);\n\n Object.defineProperty(fn, \"key\", {\n value: _key,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperty(fn, metaSymbol, {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperties(fn, {\n partial: {\n value: (d: Partial<V>) => {\n return Object.assign({}, fn({} as V), d);\n },\n configurable: false,\n enumerable: false,\n writable: false,\n },\n some: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValues(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n find: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValue(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n get: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n getValue(\n findValue(\n source,\n fn as unknown as Meta.MetaFn<unknown>\n ) as Meta.Meta<V>\n ),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n });\n\n return fn as any;\n};\n\nexport function getValue<V>(meta: Meta.Meta<V>): Awaited<V> {\n return validate(meta.schema, meta.value);\n}\n\nexport function findValues<V = unknown>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V[] {\n if (!executor) return [];\n\n const metas = Array.isArray(executor) ? executor : executor.metas ?? [];\n\n const maybeMeta = metas.filter((m) => m.key === meta.key);\n return maybeMeta.map((m) => getValue(m as Meta.Meta<V>));\n}\n\nexport function findValue<V>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V | undefined {\n const values = findValues(executor, meta);\n return values.at(0);\n}\n","export function isGenerator<Y = unknown, T = unknown>(\n value: unknown\n): value is Generator<Y, T> {\n return (\n value != null &&\n typeof value === \"object\" &&\n typeof (value as any)[Symbol.iterator] === \"function\" &&\n typeof (value as any).next === \"function\" &&\n typeof (value as any).return === \"function\" &&\n typeof (value as any).throw === \"function\"\n );\n}\n\nexport function isAsyncGenerator<Y = unknown, T = unknown>(\n value: unknown\n): value is AsyncGenerator<Y, T> {\n return (\n value != null &&\n typeof value === \"object\" &&\n typeof (value as any)[Symbol.asyncIterator] === \"function\" &&\n typeof (value as any).next === \"function\" &&\n typeof (value as any).return === \"function\" &&\n typeof (value as any).throw === \"function\"\n );\n}\n\nexport function isGeneratorFunction(fn: unknown): fn is GeneratorFunction {\n return (\n typeof fn === \"function\" &&\n fn.constructor &&\n fn.constructor.name === \"GeneratorFunction\"\n );\n}\n\nexport function isAsyncGeneratorFunction(\n fn: unknown\n): fn is AsyncGeneratorFunction {\n return (\n typeof fn === \"function\" &&\n fn.constructor &&\n fn.constructor.name === \"AsyncGeneratorFunction\"\n );\n}\n\nexport function isIterableOrAsyncIterable(\n value: unknown\n): value is Iterable<unknown> | AsyncIterable<unknown> {\n return isGenerator(value) || isAsyncGenerator(value);\n}\n\nexport async function collectFromGenerator<Y, T>(\n gen: Generator<Y, T> | AsyncGenerator<Y, T>\n): Promise<{ yielded: Y[]; returned: T }> {\n const yielded: Y[] = [];\n let returned: T;\n\n try {\n let result: IteratorResult<Y, T>;\n \n do {\n result = await gen.next();\n if (!result.done) {\n yielded.push(result.value);\n } else {\n returned = result.value;\n }\n } while (!result.done);\n\n return { yielded, returned: returned! };\n } catch (error) {\n // Ensure generator is closed on error\n await gen.return?.(undefined as any);\n throw error;\n }\n}\n\nexport interface GeneratorHandler<Y, T> {\n onYield?: (value: Y, index: number) => void | Promise<void>;\n onReturn?: (value: T) => void | Promise<void>;\n onError?: (error: unknown) => void | Promise<void>;\n}\n\nexport async function processGenerator<Y, T>(\n gen: Generator<Y, T> | AsyncGenerator<Y, T>,\n handler: GeneratorHandler<Y, T>\n): Promise<T> {\n let index = 0;\n \n try {\n let result: IteratorResult<Y, T>;\n \n do {\n result = await gen.next();\n \n if (!result.done) {\n await handler.onYield?.(result.value, index++);\n } else {\n await handler.onReturn?.(result.value);\n return result.value;\n }\n } while (true);\n } catch (error) {\n await handler.onError?.(error);\n // Ensure generator is closed\n await gen.return?.(undefined as any);\n throw error;\n }\n}","import {\n isLazyExecutor,\n isReactiveExecutor,\n isStaticExecutor,\n isMainExecutor,\n isExecutor,\n} from \"./executor\";\nimport { Core, Meta } from \"./types\";\nimport {\n isGenerator,\n isAsyncGenerator,\n collectFromGenerator,\n} from \"./generator-utils\";\nimport { meta } from \"./meta\";\nimport { custom } from \"./ssch\";\n\ntype CacheEntry = {\n accessor: Core.Accessor<unknown>;\n value: Core.ResolveState<unknown>;\n};\n\ntype UE = Core.Executor<unknown>;\ntype OnUpdateFn = (accessor: Core.Accessor<unknown>) => void | Promise<void>;\n\nfunction getExecutor(e: Core.UExecutor): Core.Executor<unknown> {\n if (isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)) {\n return e.executor;\n }\n\n return e as Core.Executor<unknown>;\n}\n\nclass BaseScope implements Core.Scope {\n protected disposed: boolean = false;\n protected cache: Map<UE, CacheEntry> = new Map();\n protected cleanups = new Map<UE, Set<Core.Cleanup>>();\n protected onUpdates = new Map<UE, Set<OnUpdateFn | UE>>();\n protected onEvents = {\n change: new Set<Core.ChangeCallback>(),\n release: new Set<Core.ReleaseCallback>(),\n } as const;\n protected isPod: boolean;\n private isDisposing = false;\n\n protected middlewares: Core.Middleware[] = [];\n\n constructor(options: {\n initialValues: Core.Preset<unknown>[];\n pod: boolean;\n }) {\n this.isPod = options.pod;\n for (const preset of options.initialValues) {\n const accessor = this[\"~makeAccessor\"](preset.executor);\n\n this.cache.set(preset.executor, {\n accessor,\n value: { kind: \"resolved\", value: preset.value },\n });\n }\n }\n\n protected async \"~triggerCleanup\"(e: UE): Promise<void> {\n const cs = this.cleanups.get(e);\n if (cs) {\n for (const c of Array.from(cs.values()).reverse()) {\n await c();\n }\n }\n }\n\n protected async \"~triggerUpdate\"(e: UE): Promise<void> {\n const ce = this.cache.get(e);\n if (!ce) {\n throw new Error(\"Executor is not yet resolved\");\n }\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n for (const t of Array.from(ou.values())) {\n if (isMainExecutor(t)) {\n if (this.cleanups.has(t)) {\n this[\"~triggerCleanup\"](t);\n }\n\n const a = this.cache.get(t);\n await a!.accessor.resolve(true);\n\n if (this.onUpdates.has(t)) {\n await this[\"~triggerUpdate\"](t);\n }\n } else {\n await t(ce.accessor);\n }\n }\n }\n }\n\n protected async \"~resolveExecutor\"(\n ie: Core.UExecutor,\n ref: UE\n ): Promise<unknown> {\n const e = getExecutor(ie);\n const isPodOnly = podOnlyMeta.find(e);\n\n if (!this.isPod && isPodOnly) {\n throw new Error(\n \"Pod-only executors cannot be resolved in the main scope\"\n );\n }\n\n const a = this[\"~makeAccessor\"](e);\n\n if (isLazyExecutor(ie)) {\n return a;\n }\n\n if (isReactiveExecutor(ie)) {\n const c = this.onUpdates.get(ie.executor) ?? new Set();\n this.onUpdates.set(ie.executor, c);\n c.add(ref);\n }\n\n await a.resolve(false);\n if (isStaticExecutor(ie)) {\n return a;\n }\n\n return a.get();\n }\n\n protected async \"~resolveDependencies\"(\n ie:\n | undefined\n | Core.UExecutor\n | Core.UExecutor[]\n | Record<string, Core.UExecutor>,\n ref: UE\n ): Promise<undefined | unknown | unknown[] | Record<string, unknown>> {\n if (ie === undefined) {\n return undefined;\n }\n\n if (isExecutor(ie)) {\n return this[\"~resolveExecutor\"](ie, ref);\n }\n\n if (Array.isArray(ie)) {\n return await Promise.all(\n ie.map((item) => this[\"~resolveDependencies\"](item, ref))\n );\n }\n\n const r: Record<string, unknown> = {};\n for (const k of Object.keys(ie)) {\n const t = ie[k];\n const rd = await this[\"~resolveDependencies\"](t, ref);\n\n r[k] = rd;\n }\n\n return r;\n }\n\n protected \"~ensureNotDisposed\"(): void {\n if (this.disposed) {\n throw new Error(\"Scope is disposed\");\n }\n }\n\n protected \"~makeAccessor\"(e: Core.UExecutor): Core.Accessor<unknown> {\n const requestor =\n isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)\n ? e.executor\n : (e as UE);\n\n if (podOnlyMeta.find(requestor) && this.isPod === false) {\n throw new Error(\n \"Cannot resolve pod-only executor outside of a pod scope\"\n );\n }\n\n const cachedAccessor = this.cache.get(requestor);\n if (cachedAccessor) {\n return cachedAccessor.accessor;\n }\n\n const accessor = {} as Core.Accessor<unknown>;\n const factory = requestor.factory;\n const controller = {\n cleanup: (cleanup: Core.Cleanup) => {\n const currentSet = this.cleanups.get(requestor) ?? new Set();\n this.cleanups.set(requestor, currentSet);\n\n currentSet.add(cleanup);\n },\n release: async () => this.release(requestor),\n scope: this,\n };\n\n const resolve = (force: boolean): Promise<unknown> => {\n this[\"~ensureNotDisposed\"]();\n\n const entry = this.cache.get(requestor)!;\n const cached = entry?.value;\n\n if (cached && !force) {\n if (cached.kind === \"resolved\") {\n return Promise.resolve(cached.value);\n } else if (cached.kind === \"rejected\") {\n throw cached.error;\n } else {\n return cached.promise;\n }\n }\n\n const promise = new Promise((resolve, reject) => {\n this[\"~resolveDependencies\"](requestor.dependencies, requestor)\n .then((dependencies) => factory(dependencies as any, controller))\n .then(async (result) => {\n let current = result;\n\n // Handle generator results\n if (isGenerator(result) || isAsyncGenerator(result)) {\n const { returned } = await collectFromGenerator(result);\n current = returned;\n }\n\n const events = this.onEvents.change;\n for (const event of events) {\n const updated = event(\"resolve\", requestor, current, this);\n if (updated !== undefined && updated.executor === requestor) {\n current = updated.value;\n }\n }\n\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"resolved\", value: current },\n });\n\n resolve(current);\n })\n .catch((error) => {\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"rejected\", error },\n });\n\n reject(error);\n });\n });\n\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"pending\", promise },\n });\n return promise;\n };\n\n return Object.assign(accessor, {\n get: () => {\n this[\"~ensureNotDisposed\"]();\n\n const cacheEntry = this.cache.get(requestor)?.value;\n\n if (!cacheEntry || cacheEntry.kind === \"pending\") {\n throw new Error(\"Executor is not resolved\");\n }\n\n if (cacheEntry.kind === \"rejected\") {\n throw cacheEntry.error;\n }\n\n return cacheEntry.value;\n },\n lookup: () => {\n this[\"~ensureNotDisposed\"]();\n\n const cacheEntry = this.cache.get(requestor);\n\n if (!cacheEntry) {\n return undefined;\n }\n\n return cacheEntry.value;\n },\n metas: e.metas,\n resolve,\n release: async (soft: boolean = false) => {\n this.release(requestor, soft);\n },\n update: (updateFn: unknown | ((current: unknown) => unknown)) => {\n return this.update(requestor, updateFn);\n },\n subscribe: (cb: (value: unknown) => void) => {\n this[\"~ensureNotDisposed\"]();\n return this.onUpdate(requestor, cb);\n },\n } satisfies Partial<Core.Accessor<unknown>>);\n }\n\n accessor<T>(executor: Core.Executor<T>): Core.Accessor<T> {\n this[\"~ensureNotDisposed\"]();\n return this[\"~makeAccessor\"](executor) as Core.Accessor<T>;\n }\n\n async resolve<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<T> {\n this[\"~ensureNotDisposed\"]();\n\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor.get() as T;\n }\n\n async resolveAccessor<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<Core.Accessor<T>> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor as Core.Accessor<T>;\n }\n\n async update<T>(\n e: Core.Executor<T>,\n u: T | ((current: T) => T)\n ): Promise<void> {\n if (this.isDisposing) {\n return;\n }\n\n this[\"~ensureNotDisposed\"]();\n this[\"~triggerCleanup\"](e);\n const accessor = this[\"~makeAccessor\"](e);\n\n let value: T | undefined;\n\n if (typeof u === \"function\") {\n const fn = u as (current: T) => T;\n value = fn(accessor.get() as T);\n } else {\n value = u;\n }\n\n const events = this.onEvents.change;\n for (const event of events) {\n const updated = event(\"update\", e, value, this);\n if (updated !== undefined && e === updated.executor) {\n value = updated.value as any;\n }\n }\n\n this.cache.set(e, {\n accessor,\n value: { kind: \"resolved\", value },\n });\n\n await this[\"~triggerUpdate\"](e);\n }\n\n async release(e: Core.Executor<unknown>, s: boolean = false): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n\n const ce = this.cache.get(e);\n if (!ce && !s) {\n throw new Error(\"Executor is not yet resolved\");\n }\n\n await this[\"~triggerCleanup\"](e);\n const events = this.onEvents.release;\n for (const event of events) {\n await event(\"release\", e, this);\n }\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n for (const t of Array.from(ou.values())) {\n if (isMainExecutor(t)) {\n await this.release(t, true);\n }\n }\n\n this.onUpdates.delete(e);\n }\n\n this.cache.delete(e);\n }\n\n async dispose(): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n this.isDisposing = true;\n\n for (const pod of this.pods) {\n await this.disposePod(pod);\n }\n\n const disposeEvents = this.middlewares.map(\n (m) => m.dispose?.(this) ?? Promise.resolve()\n );\n await Promise.all(disposeEvents);\n\n const currents = this.cache.keys();\n for (const current of currents) {\n await this.release(current, true);\n }\n\n this.disposed = true;\n this.cache.clear();\n this.cleanups.clear();\n this.onUpdates.clear();\n this.onEvents.change.clear();\n this.onEvents.release.clear();\n }\n\n onUpdate<T>(\n e: Core.Executor<T>,\n cb: (a: Core.Accessor<T>) => void | Promise<void>\n ): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n if (this.isDisposing) {\n throw new Error(\"Cannot register update callback on a disposing scope\");\n }\n\n const ou = this.onUpdates.get(e) ?? new Set();\n this.onUpdates.set(e, ou);\n ou.add(cb as any);\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n ou.delete(cb as any);\n if (ou.size === 0) {\n this.onUpdates.delete(e);\n }\n }\n };\n }\n\n onChange(callback: Core.ChangeCallback): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n if (this.isDisposing) {\n throw new Error(\"Cannot register update callback on a disposing scope\");\n }\n\n this.onEvents[\"change\"].add(callback as any);\n return () => {\n this[\"~ensureNotDisposed\"]();\n this.onEvents[\"change\"].delete(callback as any);\n };\n }\n\n onRelease(cb: Core.ReleaseCallback): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n if (this.isDisposing) {\n throw new Error(\"Cannot register update callback on a disposing scope\");\n }\n\n this.onEvents[\"release\"].add(cb);\n return () => {\n this[\"~ensureNotDisposed\"]();\n this.onEvents[\"release\"].delete(cb);\n };\n }\n\n use(middleware: Core.Middleware): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n if (this.isDisposing) {\n throw new Error(\"Cannot register update callback on a disposing scope\");\n }\n\n this.middlewares.push(middleware);\n\n middleware.init?.(this);\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n this.middlewares = this.middlewares.filter((m) => m !== middleware);\n };\n }\n\n private pods: Set<Core.Pod> = new Set();\n\n pod(...preset: Core.Preset<unknown>[]): Core.Pod {\n this[\"~ensureNotDisposed\"]();\n if (this.isDisposing) {\n throw new Error(\"Cannot register update callback on a disposing scope\");\n }\n\n const pod = new Pod(this, ...preset);\n this.pods.add(pod);\n return pod;\n }\n\n async disposePod(pod: Core.Pod): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n if (this.isDisposing) {\n return;\n }\n\n await pod.dispose();\n this.pods.delete(pod);\n }\n}\n\nconst podOnlyMeta: Meta.MetaFn<boolean> = meta(\n \"pumped-fn/space-only\",\n custom<boolean>()\n);\n\nexport const podOnly: Meta.Meta<boolean> = podOnlyMeta(true);\n\nexport function createScope(...presets: Core.Preset<unknown>[]): Core.Scope {\n return new BaseScope({\n pod: false,\n initialValues: presets,\n });\n}\n\nexport function middleware(m: Core.Middleware): Core.Middleware {\n return m;\n}\n\nclass Pod extends BaseScope implements Core.Pod {\n private parentScope: BaseScope;\n\n constructor(scope: BaseScope, ...presets: Core.Preset<unknown>[]) {\n super({\n pod: true,\n initialValues: presets,\n });\n this.parentScope = scope;\n }\n\n async resolve<T>(executor: Core.Executor<T>, force?: boolean): Promise<T> {\n const isPodOnly = podOnlyMeta.find(executor);\n\n if (isPodOnly) {\n return super.resolve(executor, force);\n }\n\n const accessor = this[\"~makeAccessor\"](executor);\n if (accessor.lookup()) {\n return accessor.get() as T;\n }\n\n const value = await this.parentScope.resolve(executor, force);\n this[\"cache\"].set(executor, {\n accessor,\n value: { kind: \"resolved\", value },\n });\n\n return value;\n }\n\n protected async \"~resolveExecutor\"(\n ie: Core.UExecutor,\n ref: UE\n ): Promise<unknown> {\n if (isReactiveExecutor(ie)) {\n throw new Error(\"Reactive executors cannot be used in pod\");\n }\n\n const isPodOnly = podOnlyMeta.find(ie);\n\n if (isPodOnly) {\n return super[\"~resolveExecutor\"](ie, ref);\n } else {\n const t = getExecutor(ie);\n const value = await this.parentScope[\"~resolveExecutor\"](ie, ref);\n const currentAccessor = this[\"~makeAccessor\"](t);\n\n this.cache.set(t, {\n accessor: currentAccessor,\n value: { kind: \"resolved\", value },\n });\n\n return value;\n }\n }\n}\n","import {\n isExecutor,\n isLazyExecutor,\n isReactiveExecutor,\n isStaticExecutor,\n} from \"./executor\";\nimport { Core } from \"./types\";\n\nexport async function resolves<\n T extends\n | Array<Core.Executor<unknown> | Escapable<unknown>>\n | Record<string, Core.Executor<unknown> | Escapable<unknown>>\n>(\n scope: Core.Scope,\n executors: { [K in keyof T]: T[K] }\n): Promise<{ [K in keyof T]: Core.InferOutput<T[K]> }> {\n const objectOutput = {};\n const arrayOutput = [];\n\n const isArray = Array.isArray(executors);\n\n for (const [index, executor] of Object.entries(executors)) {\n const target = !isExecutor(executor)\n ? executor.escape()\n : isLazyExecutor(executor) ||\n isReactiveExecutor(executor) ||\n isStaticExecutor(executor)\n ? executor.executor\n : (executor as Core.Executor<unknown>);\n\n const result = await scope.resolve(target);\n\n if (isArray) {\n arrayOutput.push(result);\n } else {\n Object.assign(objectOutput, { [index]: result });\n }\n }\n\n const result = isArray ? arrayOutput : objectOutput;\n return result as { [K in keyof T]: Core.InferOutput<T[K]> };\n}\n\nexport type Escapable<T> = {\n escape: () => Core.Executor<T>;\n};\n\nexport type PreparedExecutor<T> = {\n (): Promise<Core.InferOutput<Core.Executor<T>>>;\n escape: () => Core.Executor<T>;\n};\n\nexport function prepare<T>(\n scope: Core.Scope,\n executor: Core.Executor<T>\n): PreparedExecutor<Core.InferOutput<Core.Executor<T>>> {\n const fn: PreparedExecutor<Core.InferOutput<Core.Executor<T>>> =\n (async () => {\n return await scope.resolve(executor);\n }) as any;\n\n return Object.assign(fn, {\n escape: () => {\n return executor;\n },\n });\n}\n\nexport type AdaptedExecutor<A extends Array<unknown>, T> = {\n (...args: A): Promise<Awaited<T>>;\n escape: () => Core.Executor<(...args: A) => Promise<Awaited<T>>>;\n};\n\nexport function adapt<A extends Array<unknown>, T>(\n scope: Core.Scope,\n executor: Core.Executor<(...args: A) => Promise<T> | T>\n): AdaptedExecutor<A, T> {\n const fn: AdaptedExecutor<A, T> = (async (...args: A) => {\n const fn = await scope.resolve(executor);\n return await fn(...args);\n }) as any;\n\n return Object.assign(fn, {\n escape: () => {\n return executor;\n },\n });\n}\n"],"mappings":"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"}
|