@pumped-fn/core-next 0.5.49 → 0.5.50
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/dist/index.d.ts +56 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +213 -52
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -149,7 +149,7 @@ declare namespace Core {
|
|
|
149
149
|
executor: Executor<T>;
|
|
150
150
|
value: T;
|
|
151
151
|
}
|
|
152
|
-
export type InferOutput<T> = T extends Executor<infer U> | Reactive<infer U> | PreparedExecutor<infer U> ? Awaited<U> : T extends Lazy<infer U> | Static<infer U> ? Accessor<Awaited<U>> : T extends AdaptedExecutor<infer A, infer U> ? (...args: A) => Promise<Awaited<U>> : never;
|
|
152
|
+
export type InferOutput<T> = T extends Executor<infer U> | Reactive<infer U> | PreparedExecutor<infer U> ? Awaited<U> : T extends Lazy<infer U> | Static<infer U> ? Accessor<Awaited<U>> : T extends AdaptedExecutor<infer A, infer U> ? (...args: A) => Promise<Awaited<U>> : T extends Array<Core.BaseExecutor<unknown>> | Record<string, Core.BaseExecutor<unknown>> ? { [K in keyof T]: InferOutput<T[K]> } : never;
|
|
153
153
|
export type Event = "resolve" | "update" | "release";
|
|
154
154
|
export type Replacer = Preset<unknown>;
|
|
155
155
|
type EventCallbackResult = void | Replacer;
|
|
@@ -161,9 +161,11 @@ declare namespace Core {
|
|
|
161
161
|
}) => void | Promise<void>;
|
|
162
162
|
dispose?: (scope: Scope) => void | Promise<void>;
|
|
163
163
|
};
|
|
164
|
+
export type DependencyLike = Core.BaseExecutor<unknown> | Core.BaseExecutor<unknown>[] | Record<string, Core.BaseExecutor<unknown>>;
|
|
164
165
|
export interface Pod extends Omit<Core.Scope, "update" | "pod" | "disposePod" | "onChange"> {}
|
|
165
166
|
export interface Scope {
|
|
166
167
|
accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;
|
|
168
|
+
entries(): [Core.Executor<unknown>, Core.Accessor<unknown>][];
|
|
167
169
|
resolve<T>(executor: Core.Executor<T>, force?: boolean): Promise<T>;
|
|
168
170
|
resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;
|
|
169
171
|
update<T>(executor: Executor<T>, updateFn: T | ((current: T) => T)): Promise<void>;
|
|
@@ -185,7 +187,7 @@ declare namespace Flow {
|
|
|
185
187
|
scope?: Core.Scope;
|
|
186
188
|
name?: string;
|
|
187
189
|
description?: string;
|
|
188
|
-
plugins?:
|
|
190
|
+
plugins?: FlowPlugin[];
|
|
189
191
|
presets?: Core.Preset<unknown>[];
|
|
190
192
|
};
|
|
191
193
|
type Controller = {
|
|
@@ -198,7 +200,10 @@ declare namespace Flow {
|
|
|
198
200
|
type DependentFlowFn<D, Input, Output> = (dependency: D, input: Input, context: Controller & {
|
|
199
201
|
context: ExecutionContext;
|
|
200
202
|
}) => Output | Promise<Output>;
|
|
201
|
-
type FlowPlugin = {
|
|
203
|
+
type FlowPlugin = {
|
|
204
|
+
name: string;
|
|
205
|
+
wrap<T>(context: ExecutionContext, execute: () => Promise<T>): Promise<T>;
|
|
206
|
+
};
|
|
202
207
|
type Flow<Input, Output> = {
|
|
203
208
|
execution: NoDependencyFlowFn<Input, Output>;
|
|
204
209
|
} & Config & Schema<Input, Output>;
|
|
@@ -213,28 +218,12 @@ declare namespace Flow {
|
|
|
213
218
|
metas?: Meta.Meta[];
|
|
214
219
|
};
|
|
215
220
|
type Executor<Input, Output> = Core.Executor<Flow<Input, Output>> & Config & Schema<Input, Output>;
|
|
216
|
-
type
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
error?: unknown;
|
|
223
|
-
attempts?: number;
|
|
224
|
-
retryDelays?: number[];
|
|
225
|
-
inputSize?: number;
|
|
226
|
-
outputSize?: number;
|
|
227
|
-
timeout?: number;
|
|
228
|
-
};
|
|
229
|
-
type ExecutionStats = {
|
|
230
|
-
id: string;
|
|
231
|
-
flowName?: string;
|
|
232
|
-
parentId?: string;
|
|
233
|
-
metrics: Metrics;
|
|
234
|
-
children: ExecutionStats[];
|
|
235
|
-
};
|
|
236
|
-
type ExecutionContext = {
|
|
237
|
-
data: Record<string, any>;
|
|
221
|
+
type ExecutionContext<Input = any, Output = any> = {
|
|
222
|
+
data: Map<unknown, unknown>;
|
|
223
|
+
parent?: ExecutionContext;
|
|
224
|
+
scope: Core.Scope;
|
|
225
|
+
plugins: FlowPlugin[];
|
|
226
|
+
flow: Flow<Input, Output>;
|
|
238
227
|
};
|
|
239
228
|
type Success<T> = {
|
|
240
229
|
kind: "success";
|
|
@@ -250,6 +239,10 @@ declare namespace Flow {
|
|
|
250
239
|
result: Result<Output>;
|
|
251
240
|
};
|
|
252
241
|
}
|
|
242
|
+
declare namespace Multi {
|
|
243
|
+
type Key = unknown;
|
|
244
|
+
type MultiExecutor<T, K> = Core.Executor<(k: K) => Promise<T>>;
|
|
245
|
+
}
|
|
253
246
|
//#endregion
|
|
254
247
|
//#region src/executor.d.ts
|
|
255
248
|
declare function isLazyExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Lazy<unknown>;
|
|
@@ -259,14 +252,31 @@ declare function isMainExecutor(executor: unknown): executor is Core.Executor<un
|
|
|
259
252
|
declare function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T>;
|
|
260
253
|
declare function isPreset(input: unknown): input is Core.Preset<unknown>;
|
|
261
254
|
declare function provide<T>(factory: Core.NoDependencyFn<T>, ...metas: Meta.Meta[]): Core.Executor<T>;
|
|
262
|
-
declare function derive<T, D extends Core.
|
|
263
|
-
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>;
|
|
255
|
+
declare function derive<T, D extends Core.DependencyLike>(pdependencies: D, pfactory: Core.DependentFn<T, Core.InferOutput<D>>, ...metas: Meta.Meta[]): Core.Executor<T>;
|
|
264
256
|
declare function preset<T>(e: Core.Executor<T> | Escapable<T>, v: T): Core.Preset<T>;
|
|
265
|
-
declare
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
257
|
+
declare namespace multi_d_exports {
|
|
258
|
+
export { DependentFn$1 as DependentFn, derive$2 as derive, provide$2 as provide };
|
|
259
|
+
}
|
|
260
|
+
type MultiExecutor<T, K> = Core.Executor<(k: K) => Core.Accessor<T>> & ((key: K) => Core.Executor<T>) & {
|
|
261
|
+
release: (scope: Core.Scope) => Promise<void>;
|
|
262
|
+
id: Meta.MetaFn<unknown>;
|
|
263
|
+
};
|
|
264
|
+
type DependentFn$1<T, K, D> = (dependencies: D, key: K, scope: Core.Controller) => Core.Output<T>;
|
|
265
|
+
type Option<K> = {
|
|
266
|
+
keySchema: StandardSchemaV1<K>;
|
|
267
|
+
/** Key transform will be used to store and retrieve */
|
|
268
|
+
keyTransform?: (key: K) => unknown;
|
|
269
|
+
};
|
|
270
|
+
type DeriveOption<K, D extends Core.DependencyLike> = Option<K> & {
|
|
271
|
+
dependencies: D;
|
|
272
|
+
};
|
|
273
|
+
declare function provide$2<T, K>(option: Option<K>, valueFn: (key: K, controller: Core.Controller) => T | Promise<T>, ...metas: Meta.Meta[]): MultiExecutor<T, K>;
|
|
274
|
+
declare function derive$2<T, K, D extends Core.DependencyLike>(option: DeriveOption<K, D>, valueFn: DependentFn$1<T, K, Core.InferOutput<D>>, ...metas: Meta.Meta[]): MultiExecutor<T, K>;
|
|
275
|
+
declare namespace flow_d_exports {
|
|
276
|
+
export { FlowError, FlowErrorCode, FlowErrorType, derive$1 as derive, execute, provide$1 as provide };
|
|
277
|
+
}
|
|
278
|
+
declare function provide$1<Input, Output>(config: Flow.Config & Flow.Schema<Input, Output>, handler: Flow.NoDependencyFlowFn<Input, Output>): Flow.Executor<Input, Output>;
|
|
279
|
+
declare function derive$1<D extends ReadonlyArray<Core.BaseExecutor<unknown>> | Record<string, Core.BaseExecutor<unknown>>, Input, Output>({
|
|
270
280
|
dependencies,
|
|
271
281
|
...config
|
|
272
282
|
}: {
|
|
@@ -295,21 +305,19 @@ declare class FlowError extends Error {
|
|
|
295
305
|
static dependency(message: string, details?: any): FlowError;
|
|
296
306
|
}
|
|
297
307
|
declare function execute<Input, Output>(executor: Flow.Executor<Input, Output>, input: Input, opt?: Flow.ExecuteOpt): Promise<Flow.ExecutionResult<Output>>;
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
};
|
|
312
|
-
};
|
|
308
|
+
//#endregion
|
|
309
|
+
//#region src/data-accessor.d.ts
|
|
310
|
+
interface DataStore {
|
|
311
|
+
get(key: unknown): unknown;
|
|
312
|
+
set(key: unknown, value: unknown): unknown;
|
|
313
|
+
}
|
|
314
|
+
interface DataAccessor<T> {
|
|
315
|
+
readonly key: symbol;
|
|
316
|
+
get(store: DataStore): T;
|
|
317
|
+
find(store: DataStore): T | undefined;
|
|
318
|
+
set(store: DataStore, value: T): void;
|
|
319
|
+
}
|
|
320
|
+
declare const dataAccessor: <T>(key: string | symbol, schema: StandardSchemaV1<T>) => DataAccessor<T>;
|
|
313
321
|
//#endregion
|
|
314
322
|
//#region src/generator-utils.d.ts
|
|
315
323
|
declare function isGenerator<Y = unknown, T = unknown>(value: unknown): value is Generator<Y, T>;
|
|
@@ -367,5 +375,5 @@ declare const eager: {
|
|
|
367
375
|
//#region src/index.d.ts
|
|
368
376
|
declare const name: Meta.MetaFn<string>;
|
|
369
377
|
//#endregion
|
|
370
|
-
export { AdaptedExecutor, Core, Escapable, Flow, FlowError, FlowErrorCode,
|
|
378
|
+
export { AdaptedExecutor, Core, type DataAccessor, type DataStore, Escapable, Flow, FlowError, FlowErrorCode, GeneratorHandler, Meta, Multi, PreparedExecutor, SchemaError, ScopeOption, StandardSchemaV1, adapt, collectFromGenerator, createScope, custom, dataAccessor, derive, executorSymbol, findValue, findValues, flow_d_exports as flow, getValue, isAsyncGenerator, isAsyncGeneratorFunction, isExecutor, isGenerator, isGeneratorFunction, isIterableOrAsyncIterable, isLazyExecutor, isMainExecutor, isPreset, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, multi_d_exports as multi, name, plugin, plugins_d_exports as plugins, prepare, preset, processGenerator, provide, resolves, validate, validateAsync };
|
|
371
379
|
//# 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","value?: V","scope: Controller","dependencies: D","cleanup: Cleanup","force?: boolean","soft?: boolean","updateFn: T | ((current: T) => T)","current: T","value: T","callback: (value: T) => void","event: \"resolve\" | \"update\"","executor: Executor<unknown>","resolved: unknown","scope: Scope","event: \"release\"","initialOpt: { registry: Core.Executor<unknown>[]}","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: Plugin","scope: Pod","input: Flow<Input, Output>","param: Input","opt?: ExecuteOpt","input: Input","context: Controller & { context: ExecutionContext }","dependency: D","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","config: Flow.Config & Flow.Schema<Input, Output>","handler: Flow.NoDependencyFlowFn<Input, Output>","handler: Flow.DependentFlowFn<\n { [K in keyof D]: Core.InferOutput<D[K]> },\n Input,\n Output\n >","message: string","type: FlowErrorType","details?: any","executor: Flow.Executor<Input, Output>","input: Input","opt?: Flow.ExecuteOpt","flow: {\n provide: typeof provideFlow;\n derive: typeof deriveFlow;\n execute: typeof execute;\n FlowError: typeof FlowError;\n FlowErrorCode: {\n readonly VALIDATION: \"validation\";\n readonly TIMEOUT: \"timeout\";\n readonly EXECUTION: \"execution\";\n readonly DEPENDENCY: \"dependency\";\n readonly PLUGIN: \"plugin\";\n readonly SCOPE: \"scope\";\n readonly UNKNOWN: \"unknown\";\n };\n}","value: unknown","fn: unknown","gen: Generator<Y, T> | AsyncGenerator<Y, T>","value: Y","index: number","value: T","error: unknown","handler: GeneratorHandler<Y, T>","key: string | symbol","schema: StandardSchemaV1<V>","meta: Meta.Meta<V>","executor: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.MetaFn<V>","opt: ScopeOption","m: Core.Plugin","schema: TSchema","data: unknown","eager: {\n meta: Meta.MetaFn<boolean>;\n plugin: () => Core.Plugin;\n}","name: Meta.MetaFn<string>"],"sources":["../src/helpers.ts","../src/types.ts","../src/executor.ts","../src/flow.ts","../src/generator-utils.ts","../src/meta.ts","../src/scope.ts","../src/ssch.ts","../src/plugins.ts","../src/index.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","value?: V","scope: Controller","dependencies: D","cleanup: Cleanup","force?: boolean","soft?: boolean","updateFn: T | ((current: T) => T)","current: T","value: T","callback: (value: T) => void","event: \"resolve\" | \"update\"","executor: Executor<unknown>","resolved: unknown","scope: Scope","event: \"release\"","initialOpt: { registry: Core.Executor<unknown>[]}","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: Plugin","scope: Pod","input: Flow<Input, Output>","param: Input","opt?: ExecuteOpt","input: Input","context: Controller & { context: ExecutionContext }","dependency: D","context: ExecutionContext","execute: () => Promise<T>","k: K","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","executor: Core.BaseExecutor<unknown>","executor: unknown","input: unknown","factory: Core.NoDependencyFn<T>","pdependencies: D","pfactory: Core.DependentFn<T, Core.InferOutput<D>>","e: Core.Executor<T> | Escapable<T>","v: T","k: K","key: K","scope: Core.Scope","dependencies: D","scope: Core.Controller","option: Option<K>","valueFn: (key: K, controller: Core.Controller) => T | Promise<T>","controller: Core.Controller","option: DeriveOption<K, D>","valueFn: DependentFn<T, K, Core.InferOutput<D>>","config: Flow.Config & Flow.Schema<Input, Output>","handler: Flow.NoDependencyFlowFn<Input, Output>","handler: Flow.DependentFlowFn<\n { [K in keyof D]: Core.InferOutput<D[K]> },\n Input,\n Output\n >","message: string","type: FlowErrorType","details?: any","executor: Flow.Executor<Input, Output>","input: Input","opt?: Flow.ExecuteOpt","key: unknown","value: unknown","store: DataStore","value: T","key: string | symbol","schema: StandardSchemaV1<T>","value: unknown","fn: unknown","gen: Generator<Y, T> | AsyncGenerator<Y, T>","value: Y","index: number","value: T","error: unknown","handler: GeneratorHandler<Y, T>","key: string | symbol","schema: StandardSchemaV1<V>","meta: Meta.Meta<V>","executor: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.MetaFn<V>","opt: ScopeOption","m: Core.Plugin","schema: TSchema","data: unknown","eager: {\n meta: Meta.MetaFn<boolean>;\n plugin: () => Core.Plugin;\n}","name: Meta.MetaFn<string>"],"sources":["../src/helpers.ts","../src/types.ts","../src/executor.ts","../src/multi.ts","../src/flow.ts","../src/data-accessor.ts","../src/generator-utils.ts","../src/meta.ts","../src/scope.ts","../src/ssch.ts","../src/plugins.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -197,10 +197,69 @@ function preset(e, v) {
|
|
|
197
197
|
executor
|
|
198
198
|
};
|
|
199
199
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
200
|
+
|
|
201
|
+
//#endregion
|
|
202
|
+
//#region src/multi.ts
|
|
203
|
+
var multi_exports = {};
|
|
204
|
+
__export(multi_exports, {
|
|
205
|
+
derive: () => derive$2,
|
|
206
|
+
provide: () => provide$2
|
|
207
|
+
});
|
|
208
|
+
function createMultiExecutor(option, poolId, keyPool, createNewExecutor, providerMetas) {
|
|
209
|
+
const processKey = (key) => {
|
|
210
|
+
const validatedKey = validate(option.keySchema, key);
|
|
211
|
+
const transformedKey = option.keyTransform ? option.keyTransform(validatedKey) : validatedKey;
|
|
212
|
+
return {
|
|
213
|
+
validatedKey,
|
|
214
|
+
transformedKey
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
const newProvider = (key) => {
|
|
218
|
+
const { transformedKey } = processKey(key);
|
|
219
|
+
const executor = createNewExecutor(key);
|
|
220
|
+
keyPool.set(transformedKey, executor);
|
|
221
|
+
return executor;
|
|
222
|
+
};
|
|
223
|
+
const provider = createExecutor((ctl) => {
|
|
224
|
+
return (key) => {
|
|
225
|
+
const { transformedKey } = processKey(key);
|
|
226
|
+
let executor = keyPool.get(transformedKey);
|
|
227
|
+
if (!executor) executor = newProvider(key);
|
|
228
|
+
return ctl.scope.accessor(executor);
|
|
229
|
+
};
|
|
230
|
+
}, void 0, providerMetas);
|
|
231
|
+
const multiExecutor = (key) => {
|
|
232
|
+
const { transformedKey } = processKey(key);
|
|
233
|
+
return keyPool.get(transformedKey) || newProvider(key);
|
|
234
|
+
};
|
|
235
|
+
Object.assign(multiExecutor, provider);
|
|
236
|
+
multiExecutor.release = async (scope) => {
|
|
237
|
+
const entries = scope.entries();
|
|
238
|
+
for (const [executor] of entries) {
|
|
239
|
+
const check = poolId.some ? poolId.some(executor) : poolId.find(executor);
|
|
240
|
+
if (check && (Array.isArray(check) ? check.length > 0 : check)) await scope.release(executor);
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
multiExecutor.id = poolId;
|
|
244
|
+
return multiExecutor;
|
|
245
|
+
}
|
|
246
|
+
function provide$2(option, valueFn, ...metas) {
|
|
247
|
+
const poolId = meta(Symbol(), custom());
|
|
248
|
+
const keyPool = new Map();
|
|
249
|
+
const createNewExecutor = (key) => {
|
|
250
|
+
const validatedKey = validate(option.keySchema, key);
|
|
251
|
+
return createExecutor((ctl) => valueFn(validatedKey, ctl), void 0, [poolId(void 0), ...metas]);
|
|
252
|
+
};
|
|
253
|
+
return createMultiExecutor(option, poolId, keyPool, createNewExecutor, [poolId(void 0), ...metas]);
|
|
254
|
+
}
|
|
255
|
+
function derive$2(option, valueFn, ...metas) {
|
|
256
|
+
const poolId = meta(Symbol(), custom());
|
|
257
|
+
const keyPool = new Map();
|
|
258
|
+
const createNewExecutor = (key) => {
|
|
259
|
+
const validatedKey = validate(option.keySchema, key);
|
|
260
|
+
return createExecutor((dependencies, ctl) => valueFn(dependencies, validatedKey, ctl), option.dependencies, metas);
|
|
261
|
+
};
|
|
262
|
+
return createMultiExecutor(option, poolId, keyPool, createNewExecutor, metas);
|
|
204
263
|
}
|
|
205
264
|
|
|
206
265
|
//#endregion
|
|
@@ -423,6 +482,11 @@ var BaseScope = class {
|
|
|
423
482
|
this["~ensureNotDisposed"]();
|
|
424
483
|
return this["~makeAccessor"](executor);
|
|
425
484
|
}
|
|
485
|
+
entries() {
|
|
486
|
+
return Array.from(this.cache.entries()).map(([executor, entry]) => {
|
|
487
|
+
return [executor, entry.accessor];
|
|
488
|
+
});
|
|
489
|
+
}
|
|
426
490
|
async resolve(executor, force = false) {
|
|
427
491
|
this["~ensureNotDisposed"]();
|
|
428
492
|
const accessor = this["~makeAccessor"](executor);
|
|
@@ -601,24 +665,38 @@ var Pod = class extends BaseScope {
|
|
|
601
665
|
|
|
602
666
|
//#endregion
|
|
603
667
|
//#region src/flow.ts
|
|
604
|
-
|
|
605
|
-
|
|
668
|
+
var flow_exports = {};
|
|
669
|
+
__export(flow_exports, {
|
|
670
|
+
FlowError: () => FlowError,
|
|
671
|
+
FlowErrorCode: () => FlowErrorCode,
|
|
672
|
+
derive: () => derive$1,
|
|
673
|
+
execute: () => execute,
|
|
674
|
+
provide: () => provide$1
|
|
675
|
+
});
|
|
676
|
+
function provide$1(config, handler) {
|
|
677
|
+
const executor = createExecutor(() => ({
|
|
606
678
|
execution: handler,
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
679
|
+
input: config.input,
|
|
680
|
+
output: config.output,
|
|
681
|
+
plugins: config.plugins || [],
|
|
682
|
+
metas: config.metas || [],
|
|
683
|
+
name: config.name,
|
|
684
|
+
description: config.description
|
|
685
|
+
}), void 0, config.metas || []);
|
|
686
|
+
Object.assign(executor, config);
|
|
610
687
|
return executor;
|
|
611
688
|
}
|
|
612
|
-
function
|
|
613
|
-
const executor =
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
689
|
+
function derive$1({ dependencies,...config }, handler) {
|
|
690
|
+
const executor = createExecutor((deps) => ({
|
|
691
|
+
execution: (input, controller) => handler(deps, input, controller),
|
|
692
|
+
input: config.input,
|
|
693
|
+
output: config.output,
|
|
694
|
+
plugins: config.plugins || [],
|
|
695
|
+
metas: config.metas || [],
|
|
696
|
+
name: config.name,
|
|
697
|
+
description: config.description
|
|
698
|
+
}), dependencies, config.metas || []);
|
|
699
|
+
Object.assign(executor, config);
|
|
622
700
|
return executor;
|
|
623
701
|
}
|
|
624
702
|
const FlowErrorCode = {
|
|
@@ -652,62 +730,145 @@ var FlowError = class FlowError extends Error {
|
|
|
652
730
|
return new FlowError(message, FlowErrorCode.DEPENDENCY, details);
|
|
653
731
|
}
|
|
654
732
|
};
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
733
|
+
function createController(context) {
|
|
734
|
+
const contextWithHelpers = Object.assign(context, {
|
|
735
|
+
get(key) {
|
|
736
|
+
return context.data.get(key);
|
|
737
|
+
},
|
|
738
|
+
set(key, value) {
|
|
739
|
+
context.data.set(key, value);
|
|
740
|
+
},
|
|
741
|
+
has(key) {
|
|
742
|
+
return context.data.has(key);
|
|
743
|
+
}
|
|
661
744
|
});
|
|
662
|
-
const context = { data: {} };
|
|
663
745
|
const controller = {
|
|
664
|
-
context,
|
|
665
|
-
safeExecute: async (
|
|
666
|
-
let validatedInput = param;
|
|
746
|
+
context: contextWithHelpers,
|
|
747
|
+
safeExecute: async (flowDef, param, opts) => {
|
|
667
748
|
try {
|
|
668
|
-
validatedInput = validate(input
|
|
669
|
-
|
|
670
|
-
const
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
749
|
+
const validatedInput = validate(flowDef.input, param);
|
|
750
|
+
const childData = new Map(context.data);
|
|
751
|
+
const childContext = {
|
|
752
|
+
data: childData,
|
|
753
|
+
parent: context,
|
|
754
|
+
scope: context.scope,
|
|
755
|
+
plugins: [...context.plugins, ...opts?.plugins || []],
|
|
756
|
+
flow: flowDef
|
|
674
757
|
};
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
758
|
+
const childController = createController(childContext);
|
|
759
|
+
let execution = async () => flowDef.execution(validatedInput, childController);
|
|
760
|
+
for (let i = childContext.plugins.length - 1; i >= 0; i--) {
|
|
761
|
+
const plugin$1 = childContext.plugins[i];
|
|
762
|
+
const prevExecution = execution;
|
|
763
|
+
execution = () => plugin$1.wrap(childContext, prevExecution);
|
|
764
|
+
}
|
|
765
|
+
const result = await execution();
|
|
678
766
|
return {
|
|
679
767
|
kind: "success",
|
|
680
768
|
value: result
|
|
681
769
|
};
|
|
682
770
|
} catch (error) {
|
|
683
|
-
|
|
771
|
+
if (error instanceof FlowError) return {
|
|
772
|
+
kind: "error",
|
|
773
|
+
error
|
|
774
|
+
};
|
|
775
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
776
|
+
const errorType = errorMessage.includes("validation") ? FlowErrorCode.VALIDATION : FlowErrorCode.EXECUTION;
|
|
777
|
+
const wrappedError = new FlowError(errorType === FlowErrorCode.VALIDATION ? "Input validation failed" : "Flow execution failed", errorType, { cause: error });
|
|
684
778
|
return {
|
|
685
779
|
kind: "error",
|
|
686
780
|
error: wrappedError
|
|
687
781
|
};
|
|
688
782
|
}
|
|
689
783
|
},
|
|
690
|
-
execute: async (
|
|
691
|
-
const result = await controller.safeExecute(
|
|
784
|
+
execute: async (flowDef, param, opts) => {
|
|
785
|
+
const result = await controller.safeExecute(flowDef, param, opts);
|
|
692
786
|
if (result.kind === "error") throw result.error;
|
|
693
787
|
return result.value;
|
|
694
788
|
}
|
|
695
789
|
};
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
790
|
+
return controller;
|
|
791
|
+
}
|
|
792
|
+
async function execute(executor, input, opt) {
|
|
793
|
+
const isOwnScope = !opt?.scope;
|
|
794
|
+
const scope = opt?.scope || createScope();
|
|
795
|
+
const pod = scope.pod(...opt?.presets || []);
|
|
796
|
+
let flow;
|
|
797
|
+
try {
|
|
798
|
+
flow = await pod.resolve(executor);
|
|
799
|
+
} catch (error) {
|
|
800
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
801
|
+
throw FlowError.dependency(`Failed to resolve executor: ${errorMessage}`, { cause: error });
|
|
802
|
+
}
|
|
803
|
+
const context = {
|
|
804
|
+
data: new Map(),
|
|
805
|
+
scope,
|
|
806
|
+
plugins: opt?.plugins || [],
|
|
807
|
+
flow
|
|
808
|
+
};
|
|
809
|
+
const controller = createController(context);
|
|
810
|
+
const flowWithContext = {
|
|
811
|
+
...flow,
|
|
812
|
+
context
|
|
813
|
+
};
|
|
814
|
+
let executionResult;
|
|
815
|
+
try {
|
|
816
|
+
const validatedInput = validate(flow.input, input);
|
|
817
|
+
let execution = async () => flow.execution(validatedInput, controller);
|
|
818
|
+
for (let i = context.plugins.length - 1; i >= 0; i--) {
|
|
819
|
+
const plugin$1 = context.plugins[i];
|
|
820
|
+
const prevExecution = execution;
|
|
821
|
+
execution = () => plugin$1.wrap(context, prevExecution);
|
|
822
|
+
}
|
|
823
|
+
const result = await execution();
|
|
824
|
+
executionResult = {
|
|
825
|
+
kind: "success",
|
|
826
|
+
value: result
|
|
827
|
+
};
|
|
828
|
+
} catch (error) {
|
|
829
|
+
if (error instanceof FlowError) executionResult = {
|
|
830
|
+
kind: "error",
|
|
831
|
+
error
|
|
832
|
+
};
|
|
833
|
+
else {
|
|
834
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
835
|
+
const errorType = errorMessage.includes("validation") ? FlowErrorCode.VALIDATION : FlowErrorCode.EXECUTION;
|
|
836
|
+
const wrappedError = new FlowError(errorType === FlowErrorCode.VALIDATION ? "Input validation failed" : "Flow execution failed", errorType, { cause: error });
|
|
837
|
+
executionResult = {
|
|
838
|
+
kind: "error",
|
|
839
|
+
error: wrappedError
|
|
840
|
+
};
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
if (isOwnScope) await scope.dispose();
|
|
699
844
|
else await scope.disposePod(pod);
|
|
700
845
|
return {
|
|
701
|
-
context:
|
|
846
|
+
context: flowWithContext.context,
|
|
702
847
|
result: executionResult
|
|
703
848
|
};
|
|
704
849
|
}
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
850
|
+
|
|
851
|
+
//#endregion
|
|
852
|
+
//#region src/data-accessor.ts
|
|
853
|
+
const dataAccessor = (key, schema) => {
|
|
854
|
+
const _key = typeof key === "string" ? Symbol(key) : key;
|
|
855
|
+
return {
|
|
856
|
+
key: _key,
|
|
857
|
+
get(store) {
|
|
858
|
+
const value = store.get(_key);
|
|
859
|
+
if (value === void 0) throw new Error(`Data not found for key: ${String(key)}`);
|
|
860
|
+
return validate(schema, value);
|
|
861
|
+
},
|
|
862
|
+
find(store) {
|
|
863
|
+
const maybeValue = store.get(_key);
|
|
864
|
+
if (maybeValue) return validate(schema, maybeValue);
|
|
865
|
+
return void 0;
|
|
866
|
+
},
|
|
867
|
+
set(store, value) {
|
|
868
|
+
const validated = validate(schema, value);
|
|
869
|
+
store.set(_key, validated);
|
|
870
|
+
}
|
|
871
|
+
};
|
|
711
872
|
};
|
|
712
873
|
|
|
713
874
|
//#endregion
|
|
@@ -762,5 +923,5 @@ const eager = {
|
|
|
762
923
|
const name = meta("pumped-fn/name", custom());
|
|
763
924
|
|
|
764
925
|
//#endregion
|
|
765
|
-
export { FlowError, FlowErrorCode, SchemaError, adapt, collectFromGenerator, createScope, custom,
|
|
926
|
+
export { FlowError, FlowErrorCode, SchemaError, adapt, collectFromGenerator, createScope, custom, dataAccessor, derive, executorSymbol, findValue, findValues, flow_exports as flow, getValue, isAsyncGenerator, isAsyncGeneratorFunction, isExecutor, isGenerator, isGeneratorFunction, isIterableOrAsyncIterable, isLazyExecutor, isMainExecutor, isPreset, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, multi_exports as multi, name, plugin, plugins_exports as plugins, prepare, preset, processGenerator, provide, resolves, validate, validateAsync };
|
|
766
927
|
//# 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>","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>","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","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?: ScopeOption","preset","plugin","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","value: T","e: Core.Executor<unknown>","s: boolean","cb: (a: Core.Accessor<T>) => void | Promise<void>","ou","callback: Core.ChangeCallback","cb: Core.ReleaseCallback","plugin: Core.Plugin","pod: Core.Pod","m: Core.Plugin","scope: BaseScope","option?: ScopeOption","force?: boolean","config: Flow.Config & Flow.Schema<Input, Output>","handler: Flow.NoDependencyFlowFn<Input, Output>","executor: Flow.Executor<Input, Output>","handler: Flow.DependentFlowFn<\n { [K in keyof D]: Core.InferOutput<D[K]> },\n Input,\n Output\n >","dependencies: unknown","dependencies","message: string","type: FlowErrorType","details?: any","input: Input","opt?: Flow.ExecuteOpt","flow","context: Flow.ExecutionContext","controller: Flow.Controller & { context: Flow.ExecutionContext }","input","context","flow: {\n provide: typeof provideFlow;\n derive: typeof deriveFlow;\n execute: typeof execute;\n FlowError: typeof FlowError;\n FlowErrorCode: {\n readonly VALIDATION: \"validation\";\n readonly TIMEOUT: \"timeout\";\n readonly EXECUTION: \"execution\";\n readonly DEPENDENCY: \"dependency\";\n readonly PLUGIN: \"plugin\";\n readonly SCOPE: \"scope\";\n readonly UNKNOWN: \"unknown\";\n };\n}","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","eager: {\n meta: Meta.MetaFn<boolean>;\n plugin: () => Core.Plugin;\n}","name: Meta.MetaFn<string>"],"sources":["../src/types.ts","../src/ssch.ts","../src/meta.ts","../src/executor.ts","../src/generator-utils.ts","../src/scope.ts","../src/flow.ts","../src/helpers.ts","../src/plugins.ts","../src/index.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 export interface DefaultMetaFn<V> extends MetaFn<V> {\n (value?: V): Meta<V>\n defaultValue: 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 set(value: 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 | Promise<EventCallbackResult>;\n\n export type ReleaseCallback = (\n event: \"release\",\n executor: Executor<unknown>,\n scope: Scope\n ) => void | Promise<void>;\n\n export type Plugin = {\n init?: (scope: Scope, initialOpt: { registry: Core.Executor<unknown>[]}) => 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 set<T>(executor: Executor<T>, value: T): 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: Plugin): Cleanup;\n\n pod(...presets: Preset<unknown>[]): Pod;\n disposePod(scope: Pod): Promise<void>;\n }\n}\n\nexport namespace Flow {\n\n export type Context = {}\n\n export type ExecutionPlugin = {}\n export type ExecuteOpt = {\n scope?: Core.Scope\n name?: string\n description?: string\n plugins?: ExecutionPlugin[]\n presets?: Core.Preset<unknown>[]\n }\n\n export type Controller = {\n execute: <Input, Output>(\n input: Flow<Input, Output>,\n param: Input,\n opt?: ExecuteOpt\n ) => Promise<Output>\n safeExecute: <Input, Output>(\n input: Flow<Input, Output>,\n param: Input,\n opt?: ExecuteOpt\n ) => Promise<Result<Output>>;\n }\n\n export type NoDependencyFlowFn<Input, Output> = (\n input: Input,\n context: Controller & { context: ExecutionContext }\n ) => Output | Promise<Output>;\n\n export type DependentFlowFn<D, Input, Output> = (\n dependency: D,\n input: Input,\n context: Controller & { context: ExecutionContext }\n ) => Output | Promise<Output>\n\n export type FlowPlugin = {}\n\n export type Flow<Input, Output> = {\n execution: NoDependencyFlowFn<Input, Output>;\n } & Config & Schema<Input, Output>\n\n export type Schema<Input, Output> = {\n input: StandardSchemaV1<Input>;\n output: StandardSchemaV1<Output>;\n }\n\n export type Config = {\n name?: string\n description?: string\n plugins?: FlowPlugin[]\n metas?: Meta.Meta[]\n }\n\n export type Executor<Input, Output> = Core.Executor<Flow<Input, Output>> & Config & Schema<Input, Output>\n\n export type Metrics = {\n flowName?: string;\n startTime: number;\n endTime?: number;\n duration?: number;\n status: \"pending\" | \"success\" | \"error\" | \"timeout\" | \"cancelled\";\n error?: unknown;\n attempts?: number;\n retryDelays?: number[];\n inputSize?: number;\n outputSize?: number;\n timeout?: number;\n };\n\n export type ExecutionStats = {\n id: string;\n flowName?: string;\n parentId?: string;\n metrics: Metrics;\n children: ExecutionStats[];\n };\n\n export type ExecutionContext = {\n data: Record<string, any>;\n };\n\n export type Success<T> = { kind: \"success\"; value: T };\n export type Error = { kind: \"error\"; error: unknown };\n\n export type Result<T> = Success<T> | Error;\n\n export type ExecutionResult<Output> = {\n context: ExecutionContext;\n result: Result<Output>;\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 { 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 isPreset(input: unknown): input is Core.Preset<unknown> {\n return (\n typeof input === \"object\" &&\n input !== null &&\n executorSymbol in input &&\n (input as Core.Preset<unknown>)[executorSymbol] === \"preset\"\n );\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}","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 isPreset,\n} from \"./executor\";\nimport { Core } from \"./types\";\nimport {\n isGenerator,\n isAsyncGenerator,\n collectFromGenerator,\n} from \"./generator-utils\";\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 plugins: Core.Plugin[] = [];\n protected registry: Core.Executor<unknown>[] = [];\n\n constructor(options?: ScopeOption) {\n this.isPod = options?.pod || false;\n if (options?.registry) {\n this.registry = [...options.registry]\n }\n\n if (options?.initialValues) {\n for (const preset of options.initialValues) {\n this.set(preset.executor, preset.value);\n }\n }\n\n if (options?.plugins) {\n for (const plugin of options.plugins) {\n this.use(plugin);\n }\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 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 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 = await 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 set: async (value): Promise<void> => {\n return this.update(requestor, value)\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 = await 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 set<T>(e: Core.Executor<T>, value: T): Promise<void> {\n return this.update(e, value)\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.plugins.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(plugin: Core.Plugin): 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.plugins.push(plugin);\n plugin.init?.(this, { registry: this.registry });\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n this.plugins = this.plugins.filter((m) => m !== plugin);\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, { initialValues: 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\nexport type ScopeOption = {\n pod?: boolean\n initialValues?: Core.Preset<unknown>[]\n registry?: Core.Executor<unknown>[]\n plugins?: Core.Plugin[]\n}\n\nexport function createScope(): Core.Scope\nexport function createScope(opt: ScopeOption): Core.Scope\n\n/**\n * @deprecated\n * \n * Use the version with ScopeOption instead\n * @param presets \n */\nexport function createScope(...presets: Core.Preset<unknown>[]): Core.Scope;\n\nexport function createScope(...opt: [ScopeOption | undefined] | Core.Preset<unknown>[]): Core.Scope {\n if (opt.at(0) === undefined) {\n return new BaseScope()\n }\n\n if (opt.length === 1 && !isPreset(opt[0])) {\n return new BaseScope(opt[0]);\n }\n\n return new BaseScope({\n initialValues: opt as Core.Preset<unknown>[],\n });\n}\n\nexport function plugin(m: Core.Plugin): Core.Plugin {\n return m;\n}\n\nclass Pod extends BaseScope implements Core.Pod {\n private parentScope: BaseScope;\n\n constructor(scope: BaseScope, option?: ScopeOption) {\n super(option);\n this.parentScope = scope;\n }\n\n /**\n * Expect to resolve everything in pod. Unless it's already resolved in the main\n * @param executor\n * @param force\n * @returns\n */\n async resolve<T>(executor: Core.Executor<T>, force?: boolean): Promise<T> {\n if (this.cache.has(executor)) {\n return super.resolve(executor, force);\n }\n\n if (this.parentScope[\"cache\"].has(executor)) {\n const { value } = this.parentScope[\"cache\"].get(executor)!;\n const accessor = super[\"~makeAccessor\"](executor);\n\n this[\"cache\"].set(executor, {\n accessor,\n value,\n });\n\n if (value.kind === \"rejected\") {\n throw value.error;\n }\n\n if (value.kind === \"resolved\") {\n return value.value as T;\n }\n\n if (value.kind === \"pending\") {\n return (await value.promise) as T;\n }\n }\n\n return await super.resolve(executor, force);\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 t = getExecutor(ie);\n const a = this[\"~makeAccessor\"](t);\n\n if (this.parentScope[\"cache\"].has(t)) {\n const { value } = this.parentScope[\"cache\"].get(t)!;\n this[\"cache\"].set(t, {\n accessor: a,\n value,\n });\n }\n\n return await super[\"~resolveExecutor\"](ie, ref);\n }\n}\n","import type { Core, Flow } from \"./types\";\nimport { provide as coreProvide, derive as coreDerive } from \"./executor\";\nimport { createScope } from \"./scope\";\nimport { validate } from \"./ssch\";\n\nfunction provideFlow<Input, Output>(\n config: Flow.Config & Flow.Schema<Input, Output>,\n handler: Flow.NoDependencyFlowFn<Input, Output>\n): Flow.Executor<Input, Output> {\n const executor: Flow.Executor<Input, Output> = coreProvide(\n () => ({\n execution: handler,\n ...config,\n }),\n ...(config.metas || [])\n ) as any;\n\n Object.assign(executor, { ...config });\n\n return executor;\n}\n\nexport function deriveFlow<\n D extends\n | ReadonlyArray<Core.BaseExecutor<unknown>>\n | Record<string, Core.BaseExecutor<unknown>>,\n Input,\n Output\n>(\n {\n dependencies,\n ...config\n }: {\n dependencies: { [K in keyof D]: D[K] };\n } & Flow.Config &\n Flow.Schema<Input, Output>,\n handler: Flow.DependentFlowFn<\n { [K in keyof D]: Core.InferOutput<D[K]> },\n Input,\n Output\n >\n): Flow.Executor<Input, Output> {\n const executor: Flow.Executor<Input, Output> = coreDerive(\n dependencies as any,\n ((dependencies: unknown): Flow.Flow<Input, Output> => {\n return {\n execution: (input, controller) =>\n handler(dependencies as any, input, controller),\n input: config.input,\n output: config.output,\n plugins: config.plugins || [],\n };\n }) as any,\n ...(config.metas || [])\n ) as any;\n\n Object.assign(executor, {\n ...config,\n });\n\n return executor;\n}\n\n// Error codes as constants instead of enum\nexport const FlowErrorCode = {\n VALIDATION: \"validation\",\n TIMEOUT: \"timeout\",\n EXECUTION: \"execution\",\n DEPENDENCY: \"dependency\",\n PLUGIN: \"plugin\",\n SCOPE: \"scope\",\n UNKNOWN: \"unknown\",\n} as const;\n\nexport type FlowErrorType = (typeof FlowErrorCode)[keyof typeof FlowErrorCode];\n\n// Single error class with type parameter\nexport class FlowError extends Error {\n type: FlowErrorType;\n details?: any;\n\n constructor(message: string, type: FlowErrorType, details?: any) {\n super(message);\n this.name = \"FlowError\";\n this.type = type;\n this.details = details;\n }\n\n // Helper functions to create specific error types\n static validation(message: string, details?: any): FlowError {\n return new FlowError(message, FlowErrorCode.VALIDATION, details);\n }\n\n static timeout(\n message: string = \"Operation timed out\",\n details?: any\n ): FlowError {\n return new FlowError(message, FlowErrorCode.TIMEOUT, details);\n }\n\n static execution(message: string, details?: any): FlowError {\n return new FlowError(message, FlowErrorCode.EXECUTION, details);\n }\n\n static dependency(message: string, details?: any): FlowError {\n return new FlowError(message, FlowErrorCode.DEPENDENCY, details);\n }\n}\n\nasync function execute<Input, Output>(\n executor: Flow.Executor<Input, Output>,\n input: Input,\n opt?: Flow.ExecuteOpt\n): Promise<Flow.ExecutionResult<Output>> {\n let selfControl = opt?.scope === undefined;\n const scope = opt?.scope || createScope();\n\n const pod = scope.pod(...(opt?.presets || []));\n\n const flow = await pod.resolve(executor).catch((error) => {\n throw FlowError.dependency(`Failed to resolve executor: ${error.message}`, {\n cause: error,\n });\n });\n\n const context: Flow.ExecutionContext = {\n data: {},\n };\n\n const controller: Flow.Controller & { context: Flow.ExecutionContext } = {\n context: context,\n safeExecute: async ({ execution, input, output }, param, opts) => {\n let validatedInput = param;\n\n try {\n validatedInput = validate(input, param);\n } catch (error) {\n const wrappedError = FlowError.validation(`Input validation failed:`, {\n cause: error,\n });\n return { kind: \"error\", error: wrappedError };\n }\n\n try {\n const result = await execution(validatedInput, controller);\n return { kind: \"success\", value: result };\n } catch (error) {\n const wrappedError = FlowError.execution(`Flow execution failed:`, {\n cause: error,\n });\n return { kind: \"error\", error: wrappedError };\n }\n },\n execute: async (context, param, opts) => {\n const result = await controller.safeExecute(context, param, opts);\n\n if (result.kind === \"error\") {\n throw result.error;\n }\n\n return result.value;\n },\n };\n\n const initialContext = Object.assign({}, flow, { context });\n\n const executionResult = await controller.safeExecute(\n initialContext,\n input,\n opt\n );\n\n if (selfControl) {\n await scope.dispose();\n } else {\n await scope.disposePod(pod);\n }\n\n return {\n context: initialContext.context,\n result: executionResult,\n };\n}\n\nexport const flow: {\n provide: typeof provideFlow;\n derive: typeof deriveFlow;\n execute: typeof execute;\n FlowError: typeof FlowError;\n FlowErrorCode: {\n readonly VALIDATION: \"validation\";\n readonly TIMEOUT: \"timeout\";\n readonly EXECUTION: \"execution\";\n readonly DEPENDENCY: \"dependency\";\n readonly PLUGIN: \"plugin\";\n readonly SCOPE: \"scope\";\n readonly UNKNOWN: \"unknown\";\n };\n} = {\n provide: provideFlow,\n derive: deriveFlow,\n execute: execute,\n FlowError: FlowError,\n FlowErrorCode: FlowErrorCode,\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","import { Core, Meta } from \"./types\"\nimport { meta } from \"./meta\"\nimport { custom } from \"./ssch\"\n\nexport const eager: {\n meta: Meta.MetaFn<boolean>;\n plugin: () => Core.Plugin;\n} = {\n meta: meta(Symbol.for('@pumped-fn/plugin/eager'), custom<boolean>()),\n plugin: (): Core.Plugin => ({\n init(scope, { registry }) {\n\n for (const executor of registry) {\n const isEager = eager.meta.find(executor);\n if (isEager) {\n scope.resolve(executor)\n }\n }\n },\n })\n}\n","import { meta } from \"./meta\";\nimport { custom } from \"./ssch\";\nimport type { Meta } from \"./types\";\n\nexport * from \"./executor\";\nexport * from \"./flow\";\nexport * from \"./generator-utils\";\nexport * from \"./helpers\";\nexport * from \"./meta\";\nexport * from \"./scope\";\nexport * from \"./ssch\";\nexport * from \"./types\";\n\nexport const name: Meta.MetaFn<string> = meta(\n\t\"pumped-fn/name\",\n\tcustom<string>(),\n);\n\nexport * as plugins from \"./plugins\""],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["executorSymbol: unique symbol","metaSymbol: unique symbol","issues: ReadonlyArray<StandardSchemaV1.Issue>","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>","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: D","pfactory: Core.DependentFn<T, Core.InferOutput<D>>","e: Core.Executor<T> | Escapable<T>","v: T","option: Option<K>","poolId: Meta.MetaFn<any>","keyPool: Map<unknown, Core.Executor<T>>","createNewExecutor: (key: K) => Core.Executor<T>","providerMetas: Meta.Meta[]","key: K","ctl: Core.Controller","multiExecutor: MultiExecutor<T, K>","scope: Core.Scope","provide","valueFn: (key: K, controller: Core.Controller) => T | Promise<T>","derive","option: DeriveOption<K, D>","valueFn: DependentFn<T, K, Core.InferOutput<D>>","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?: ScopeOption","preset","plugin","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","value: T","e: Core.Executor<unknown>","s: boolean","cb: (a: Core.Accessor<T>) => void | Promise<void>","ou","callback: Core.ChangeCallback","cb: Core.ReleaseCallback","plugin: Core.Plugin","pod: Core.Pod","m: Core.Plugin","scope: BaseScope","option?: ScopeOption","force?: boolean","provide","config: Flow.Config & Flow.Schema<Input, Output>","handler: Flow.NoDependencyFlowFn<Input, Output>","derive","handler: Flow.DependentFlowFn<\n { [K in keyof D]: Core.InferOutput<D[K]> },\n Input,\n Output\n >","deps: unknown","message: string","type: FlowErrorType","details?: any","context: Flow.ExecutionContext","key: any","value: any","controller: Flow.Controller & { context: typeof contextWithHelpers }","childContext: Flow.ExecutionContext","plugin","executor: Flow.Executor<Input, Output>","input: Input","opt?: Flow.ExecuteOpt","flow: Flow.Flow<Input, Output>","executionResult: Flow.Result<Output>","key: string | symbol","schema: StandardSchemaV1<T>","store: DataStore","value: T","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","eager: {\n meta: Meta.MetaFn<boolean>;\n plugin: () => Core.Plugin;\n}","name: Meta.MetaFn<string>"],"sources":["../src/types.ts","../src/ssch.ts","../src/meta.ts","../src/executor.ts","../src/multi.ts","../src/generator-utils.ts","../src/scope.ts","../src/flow.ts","../src/data-accessor.ts","../src/helpers.ts","../src/plugins.ts","../src/index.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 export interface DefaultMetaFn<V> extends MetaFn<V> {\n (value?: V): Meta<V>\n defaultValue: 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 set(value: 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 : T extends Array<Core.BaseExecutor<unknown>> | Record<string, Core.BaseExecutor<unknown>>\n ? { [K in keyof T]: InferOutput<T[K]> }\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 | Promise<EventCallbackResult>;\n\n export type ReleaseCallback = (\n event: \"release\",\n executor: Executor<unknown>,\n scope: Scope\n ) => void | Promise<void>;\n\n export type Plugin = {\n init?: (scope: Scope, initialOpt: { registry: Core.Executor<unknown>[]}) => void | Promise<void>;\n dispose?: (scope: Scope) => void | Promise<void>;\n };\n\n export type DependencyLike = Core.BaseExecutor<unknown> | Core.BaseExecutor<unknown>[] | Record<string, Core.BaseExecutor<unknown>>;\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 entries(): [Core.Executor<unknown>, Core.Accessor<unknown>][];\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 set<T>(executor: Executor<T>, value: T): 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: Plugin): Cleanup;\n\n pod(...presets: Preset<unknown>[]): Pod;\n disposePod(scope: Pod): Promise<void>;\n }\n}\n\nexport namespace Flow {\n\n export type Context = {}\n\n export type ExecutionPlugin = {}\n export type ExecuteOpt = {\n scope?: Core.Scope\n name?: string\n description?: string\n plugins?: FlowPlugin[]\n presets?: Core.Preset<unknown>[]\n }\n\n export type Controller = {\n execute: <Input, Output>(\n input: Flow<Input, Output>,\n param: Input,\n opt?: ExecuteOpt\n ) => Promise<Output>\n safeExecute: <Input, Output>(\n input: Flow<Input, Output>,\n param: Input,\n opt?: ExecuteOpt\n ) => Promise<Result<Output>>;\n }\n\n export type NoDependencyFlowFn<Input, Output> = (\n input: Input,\n context: Controller & { context: ExecutionContext }\n ) => Output | Promise<Output>;\n\n export type DependentFlowFn<D, Input, Output> = (\n dependency: D,\n input: Input,\n context: Controller & { context: ExecutionContext }\n ) => Output | Promise<Output>\n\n export type FlowPlugin = {\n name: string;\n wrap<T>(\n context: ExecutionContext,\n execute: () => Promise<T>\n ): Promise<T>;\n }\n\n export type Flow<Input, Output> = {\n execution: NoDependencyFlowFn<Input, Output>;\n } & Config & Schema<Input, Output>\n\n export type Schema<Input, Output> = {\n input: StandardSchemaV1<Input>;\n output: StandardSchemaV1<Output>;\n }\n\n export type Config = {\n name?: string\n description?: string\n plugins?: FlowPlugin[]\n metas?: Meta.Meta[]\n }\n\n export type Executor<Input, Output> = Core.Executor<Flow<Input, Output>> & Config & Schema<Input, Output>\n\n export type ExecutionContext<Input = any, Output = any> = {\n data: Map<unknown, unknown>;\n parent?: ExecutionContext;\n scope: Core.Scope;\n plugins: FlowPlugin[];\n flow: Flow<Input, Output>; // The flow being executed\n };\n\n export type Success<T> = { kind: \"success\"; value: T };\n export type Error = { kind: \"error\"; error: unknown };\n\n export type Result<T> = Success<T> | Error;\n\n export type ExecutionResult<Output> = {\n context: ExecutionContext;\n result: Result<Output>;\n };\n}\n\nexport namespace Multi {\n export type Key = unknown\n export type MultiExecutor<T, K> = Core.Executor<(k: K) => Promise<T>>\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 { Core, executorSymbol, Meta } from \"./types\";\nimport type { Escapable } from \"./helpers\";\n\nexport function 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 isPreset(input: unknown): input is Core.Preset<unknown> {\n return (\n typeof input === \"object\" &&\n input !== null &&\n executorSymbol in input &&\n (input as Core.Preset<unknown>)[executorSymbol] === \"preset\"\n );\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.DependencyLike>(\n pdependencies: D,\n pfactory: Core.DependentFn<T, Core.InferOutput<D>>,\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}","/** facilities to add multiple instances (key set) */\nimport { createExecutor } from \"./executor\"\nimport { meta } from \"./meta\";\nimport { custom, validate } from \"./ssch\";\nimport { Core, Meta } from \"./types\"\nimport { type StandardSchemaV1 } from \"./types\";\n\ntype MultiExecutor<T, K> = Core.Executor<(k: K) => Core.Accessor<T>> & ((key: K) => Core.Executor<T>) & {\n release: (scope: Core.Scope) => Promise<void>\n id: Meta.MetaFn<unknown>\n}\n\nexport type DependentFn<T, K, D> = (\n dependencies: D,\n key: K,\n scope: Core.Controller,\n) => Core.Output<T>;\n\ntype Option<K> = {\n keySchema: StandardSchemaV1<K>,\n /** Key transform will be used to store and retrieve */\n keyTransform?: (key: K) => unknown\n}\n\ntype DeriveOption<K, D extends Core.DependencyLike> = Option<K> & {\n dependencies: D\n}\n\nfunction createMultiExecutor<T, K>(\n option: Option<K>,\n poolId: Meta.MetaFn<any>,\n keyPool: Map<unknown, Core.Executor<T>>,\n createNewExecutor: (key: K) => Core.Executor<T>,\n providerMetas: Meta.Meta[]\n): MultiExecutor<T, K> {\n const processKey = (key: K) => {\n const validatedKey = validate(option.keySchema, key);\n const transformedKey = option.keyTransform ? option.keyTransform(validatedKey) : validatedKey;\n return { validatedKey, transformedKey };\n };\n\n const newProvider = (key: K) => {\n const { transformedKey } = processKey(key);\n const executor = createNewExecutor(key);\n keyPool.set(transformedKey, executor);\n return executor;\n };\n\n const provider = createExecutor(\n (ctl: Core.Controller) => {\n return (key: K) => {\n const { transformedKey } = processKey(key);\n let executor = keyPool.get(transformedKey);\n if (!executor) {\n executor = newProvider(key);\n }\n return ctl.scope.accessor(executor)\n };\n }, undefined, providerMetas);\n\n const multiExecutor: MultiExecutor<T, K> = ((key: K) => {\n const { transformedKey } = processKey(key);\n return keyPool.get(transformedKey) || newProvider(key);\n }) as any;\n\n Object.assign(multiExecutor, provider);\n multiExecutor.release = async (scope: Core.Scope) => {\n const entries = scope.entries()\n for (const [executor] of entries) {\n const check = poolId.some ? poolId.some(executor) : poolId.find(executor);\n if (check && (Array.isArray(check) ? check.length > 0 : check)) {\n await scope.release(executor);\n }\n }\n }\n multiExecutor.id = poolId as any;\n\n return multiExecutor;\n}\n\nexport function provide<T, K>(\n option: Option<K>,\n valueFn: (key: K, controller: Core.Controller) => T | Promise<T>,\n ...metas: Meta.Meta[]\n): MultiExecutor<T, K> {\n const poolId = meta(Symbol(), custom<undefined>())\n const keyPool = new Map<unknown, Core.Executor<T>>();\n\n const createNewExecutor = (key: K) => {\n const validatedKey = validate(option.keySchema, key);\n return createExecutor(\n (ctl: Core.Controller) => valueFn(validatedKey, ctl),\n undefined,\n [poolId(undefined), ...metas]\n );\n };\n\n return createMultiExecutor(option, poolId, keyPool, createNewExecutor, [poolId(undefined), ...metas]);\n}\n\nexport function derive<T, K, D extends Core.DependencyLike>(\n option: DeriveOption<K, D>,\n valueFn: DependentFn<T, K, Core.InferOutput<D>>,\n ...metas: Meta.Meta[]\n): MultiExecutor<T, K> {\n const poolId = meta(Symbol(), custom<void>())\n const keyPool = new Map<unknown, Core.Executor<T>>();\n\n const createNewExecutor = (key: K) => {\n const validatedKey = validate(option.keySchema, key);\n return createExecutor(\n (dependencies, ctl) => valueFn(dependencies as any, validatedKey, ctl),\n option.dependencies,\n metas\n );\n };\n\n return createMultiExecutor(option, poolId, keyPool, createNewExecutor, metas);\n}\n\n// code may look like this\n// const multi = provide(schema <K>, (key: K) => { /// value: T}) --> MultiExecutor<T,K>\n// const hardcodedMulti = multi({ key }) // Core.Executor<T>","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 isPreset,\n} from \"./executor\";\nimport { Core } from \"./types\";\nimport {\n isGenerator,\n isAsyncGenerator,\n collectFromGenerator,\n} from \"./generator-utils\";\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 plugins: Core.Plugin[] = [];\n protected registry: Core.Executor<unknown>[] = [];\n\n constructor(options?: ScopeOption) {\n this.isPod = options?.pod || false;\n if (options?.registry) {\n this.registry = [...options.registry]\n }\n\n if (options?.initialValues) {\n for (const preset of options.initialValues) {\n this.set(preset.executor, preset.value);\n }\n }\n\n if (options?.plugins) {\n for (const plugin of options.plugins) {\n this.use(plugin);\n }\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 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 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 = await 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 set: async (value): Promise<void> => {\n return this.update(requestor, value)\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 entries(): Array<[UE, Core.Accessor<unknown>]> {\n return Array.from(this.cache.entries()).map(([executor, entry]) => {\n return [executor, entry.accessor];\n });\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 = await 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 set<T>(e: Core.Executor<T>, value: T): Promise<void> {\n return this.update(e, value)\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.plugins.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(plugin: Core.Plugin): 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.plugins.push(plugin);\n plugin.init?.(this, { registry: this.registry });\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n this.plugins = this.plugins.filter((m) => m !== plugin);\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, { initialValues: 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\nexport type ScopeOption = {\n pod?: boolean\n initialValues?: Core.Preset<unknown>[]\n registry?: Core.Executor<unknown>[]\n plugins?: Core.Plugin[]\n}\n\nexport function createScope(): Core.Scope\nexport function createScope(opt: ScopeOption): Core.Scope\n\n/**\n * @deprecated\n * \n * Use the version with ScopeOption instead\n * @param presets \n */\nexport function createScope(...presets: Core.Preset<unknown>[]): Core.Scope;\n\nexport function createScope(...opt: [ScopeOption | undefined] | Core.Preset<unknown>[]): Core.Scope {\n if (opt.at(0) === undefined) {\n return new BaseScope()\n }\n\n if (opt.length === 1 && !isPreset(opt[0])) {\n return new BaseScope(opt[0]);\n }\n\n return new BaseScope({\n initialValues: opt as Core.Preset<unknown>[],\n });\n}\n\nexport function plugin(m: Core.Plugin): Core.Plugin {\n return m;\n}\n\nclass Pod extends BaseScope implements Core.Pod {\n private parentScope: BaseScope;\n\n constructor(scope: BaseScope, option?: ScopeOption) {\n super(option);\n this.parentScope = scope;\n }\n\n /**\n * Expect to resolve everything in pod. Unless it's already resolved in the main\n * @param executor\n * @param force\n * @returns\n */\n async resolve<T>(executor: Core.Executor<T>, force?: boolean): Promise<T> {\n if (this.cache.has(executor)) {\n return super.resolve(executor, force);\n }\n\n if (this.parentScope[\"cache\"].has(executor)) {\n const { value } = this.parentScope[\"cache\"].get(executor)!;\n const accessor = super[\"~makeAccessor\"](executor);\n\n this[\"cache\"].set(executor, {\n accessor,\n value,\n });\n\n if (value.kind === \"rejected\") {\n throw value.error;\n }\n\n if (value.kind === \"resolved\") {\n return value.value as T;\n }\n\n if (value.kind === \"pending\") {\n return (await value.promise) as T;\n }\n }\n\n return await super.resolve(executor, force);\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 t = getExecutor(ie);\n const a = this[\"~makeAccessor\"](t);\n\n if (this.parentScope[\"cache\"].has(t)) {\n const { value } = this.parentScope[\"cache\"].get(t)!;\n this[\"cache\"].set(t, {\n accessor: a,\n value,\n });\n }\n\n return await super[\"~resolveExecutor\"](ie, ref);\n }\n}\n","import type { Core, Flow } from \"./types\";\nimport { createExecutor } from \"./executor\";\nimport { createScope } from \"./scope\";\nimport { validate } from \"./ssch\";\n\nexport function provide<Input, Output>(\n config: Flow.Config & Flow.Schema<Input, Output>,\n handler: Flow.NoDependencyFlowFn<Input, Output>\n): Flow.Executor<Input, Output> {\n const executor = createExecutor(\n (): Flow.Flow<Input, Output> => ({\n execution: handler,\n input: config.input,\n output: config.output,\n plugins: config.plugins || [],\n metas: config.metas || [], // Include metas in the resolved flow\n name: config.name,\n description: config.description\n }),\n undefined,\n config.metas || []\n ) as Flow.Executor<Input, Output>;\n\n Object.assign(executor, config);\n return executor;\n}\n\nexport function derive<\n D extends\n | ReadonlyArray<Core.BaseExecutor<unknown>>\n | Record<string, Core.BaseExecutor<unknown>>,\n Input,\n Output\n>(\n {\n dependencies,\n ...config\n }: {\n dependencies: { [K in keyof D]: D[K] };\n } & Flow.Config &\n Flow.Schema<Input, Output>,\n handler: Flow.DependentFlowFn<\n { [K in keyof D]: Core.InferOutput<D[K]> },\n Input,\n Output\n >\n): Flow.Executor<Input, Output> {\n const executor = createExecutor(\n (deps: unknown): Flow.Flow<Input, Output> => ({\n execution: (input, controller) =>\n handler(deps as any, input, controller),\n input: config.input,\n output: config.output,\n plugins: config.plugins || [],\n metas: config.metas || [], // Include metas in the resolved flow\n name: config.name,\n description: config.description\n }),\n dependencies as any,\n config.metas || []\n ) as Flow.Executor<Input, Output>;\n\n Object.assign(executor, config);\n return executor;\n}\n\n// Error codes as constants instead of enum\nexport const FlowErrorCode = {\n VALIDATION: \"validation\",\n TIMEOUT: \"timeout\",\n EXECUTION: \"execution\",\n DEPENDENCY: \"dependency\",\n PLUGIN: \"plugin\",\n SCOPE: \"scope\",\n UNKNOWN: \"unknown\",\n} as const;\n\nexport type FlowErrorType = (typeof FlowErrorCode)[keyof typeof FlowErrorCode];\n\n// Single error class with type parameter\nexport class FlowError extends Error {\n type: FlowErrorType;\n details?: any;\n\n constructor(message: string, type: FlowErrorType, details?: any) {\n super(message);\n this.name = \"FlowError\";\n this.type = type;\n this.details = details;\n }\n\n // Helper functions to create specific error types\n static validation(message: string, details?: any): FlowError {\n return new FlowError(message, FlowErrorCode.VALIDATION, details);\n }\n\n static timeout(\n message: string = \"Operation timed out\",\n details?: any\n ): FlowError {\n return new FlowError(message, FlowErrorCode.TIMEOUT, details);\n }\n\n static execution(message: string, details?: any): FlowError {\n return new FlowError(message, FlowErrorCode.EXECUTION, details);\n }\n\n static dependency(message: string, details?: any): FlowError {\n return new FlowError(message, FlowErrorCode.DEPENDENCY, details);\n }\n}\n\nfunction createController(\n context: Flow.ExecutionContext\n): Flow.Controller & { \n context: Flow.ExecutionContext & {\n get(key: any): any;\n set(key: any, value: any): void;\n has(key: any): boolean;\n }\n} {\n // Add context helper methods\n const contextWithHelpers = Object.assign(context, {\n get(key: any): any {\n return context.data.get(key);\n },\n set(key: any, value: any): void {\n context.data.set(key, value);\n },\n has(key: any): boolean {\n return context.data.has(key);\n }\n });\n\n const controller: Flow.Controller & { context: typeof contextWithHelpers } = {\n context: contextWithHelpers,\n safeExecute: async (flowDef, param, opts) => {\n try {\n const validatedInput = validate(flowDef.input, param);\n \n // Always create child controller for nested executions\n // Copy parent's data to child (Map doesn't support prototype chain for get/set)\n const childData = new Map(context.data);\n \n const childContext: Flow.ExecutionContext = {\n data: childData,\n parent: context,\n scope: context.scope,\n plugins: [...context.plugins, ...(opts?.plugins || [])], // Merge plugins from opts\n flow: flowDef // Store the flow being executed\n };\n const childController = createController(childContext);\n \n // Wrap execution with all plugins (including opts plugins)\n let execution = async () => flowDef.execution(validatedInput, childController);\n \n // Apply plugins in reverse order (last plugin is innermost)\n for (let i = childContext.plugins.length - 1; i >= 0; i--) {\n const plugin = childContext.plugins[i];\n const prevExecution = execution;\n execution = () => plugin.wrap(childContext, prevExecution);\n }\n \n const result = await execution();\n return { kind: \"success\", value: result };\n } catch (error) {\n if (error instanceof FlowError) {\n return { kind: \"error\", error };\n }\n \n const errorMessage = error instanceof Error ? error.message : String(error);\n const errorType = errorMessage.includes(\"validation\") \n ? FlowErrorCode.VALIDATION \n : FlowErrorCode.EXECUTION;\n \n const wrappedError = new FlowError(\n errorType === FlowErrorCode.VALIDATION \n ? \"Input validation failed\" \n : \"Flow execution failed\",\n errorType,\n { cause: error }\n );\n return { kind: \"error\", error: wrappedError };\n }\n },\n execute: async (flowDef, param, opts) => {\n const result = await controller.safeExecute(flowDef, param, opts);\n if (result.kind === \"error\") {\n throw result.error;\n }\n return result.value;\n },\n };\n \n return controller;\n}\n\nexport async function execute<Input, Output>(\n executor: Flow.Executor<Input, Output>,\n input: Input,\n opt?: Flow.ExecuteOpt\n): Promise<Flow.ExecutionResult<Output>> {\n const isOwnScope = !opt?.scope;\n const scope = opt?.scope || createScope();\n const pod = scope.pod(...(opt?.presets || []));\n\n let flow: Flow.Flow<Input, Output>;\n try {\n flow = await pod.resolve(executor);\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n throw FlowError.dependency(`Failed to resolve executor: ${errorMessage}`, {\n cause: error,\n });\n }\n\n const context: Flow.ExecutionContext = { \n data: new Map(),\n scope,\n plugins: opt?.plugins || [],\n flow // Store the flow being executed\n };\n const controller = createController(context);\n const flowWithContext = { ...flow, context };\n\n // Execute root flow directly with the root controller (no child context)\n let executionResult: Flow.Result<Output>;\n try {\n const validatedInput = validate(flow.input, input);\n \n // Wrap root execution with plugins\n let execution = async () => flow.execution(validatedInput, controller);\n \n // Apply plugins in reverse order (last plugin is innermost)\n for (let i = context.plugins.length - 1; i >= 0; i--) {\n const plugin = context.plugins[i];\n const prevExecution = execution;\n execution = () => plugin.wrap(context, prevExecution);\n }\n \n const result = await execution();\n executionResult = { kind: \"success\", value: result };\n } catch (error) {\n if (error instanceof FlowError) {\n executionResult = { kind: \"error\", error };\n } else {\n const errorMessage = error instanceof Error ? error.message : String(error);\n const errorType = errorMessage.includes(\"validation\") \n ? FlowErrorCode.VALIDATION \n : FlowErrorCode.EXECUTION;\n \n const wrappedError = new FlowError(\n errorType === FlowErrorCode.VALIDATION \n ? \"Input validation failed\" \n : \"Flow execution failed\",\n errorType,\n { cause: error }\n );\n executionResult = { kind: \"error\", error: wrappedError };\n }\n }\n\n if (isOwnScope) {\n await scope.dispose();\n } else {\n await scope.disposePod(pod);\n }\n\n return {\n context: flowWithContext.context,\n result: executionResult,\n };\n}\n\n","import type { StandardSchemaV1 } from \"./types\";\nimport { validate } from \"./ssch\";\n\nexport interface DataStore {\n get(key: unknown): unknown;\n set(key: unknown, value: unknown): unknown;\n}\n\nexport interface DataAccessor<T> {\n readonly key: symbol;\n get(store: DataStore): T;\n find(store: DataStore): T | undefined;\n set(store: DataStore, value: T): void;\n}\n\nexport const dataAccessor = <T>(\n key: string | symbol,\n schema: StandardSchemaV1<T>\n): DataAccessor<T> => {\n const _key = typeof key === 'string' ? Symbol(key) : key;\n \n return {\n key: _key,\n \n get(store: DataStore): T {\n const value = store.get(_key);\n if (value === undefined) {\n throw new Error(`Data not found for key: ${String(key)}`);\n }\n\n return validate(schema, value);\n },\n \n find(store: DataStore): T | undefined {\n const maybeValue = store.get(_key);\n if (maybeValue) {\n return validate(schema, maybeValue)\n }\n\n return undefined\n },\n \n set(store: DataStore, value: T): void {\n const validated = validate(schema, value);\n store.set(_key, validated);\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","import { Core, Meta } from \"./types\"\nimport { meta } from \"./meta\"\nimport { custom } from \"./ssch\"\n\nexport const eager: {\n meta: Meta.MetaFn<boolean>;\n plugin: () => Core.Plugin;\n} = {\n meta: meta(Symbol.for('@pumped-fn/plugin/eager'), custom<boolean>()),\n plugin: (): Core.Plugin => ({\n init(scope, { registry }) {\n\n for (const executor of registry) {\n const isEager = eager.meta.find(executor);\n if (isEager) {\n scope.resolve(executor)\n }\n }\n },\n })\n}\n","import { meta } from \"./meta\";\nimport { custom } from \"./ssch\";\nimport type { Meta } from \"./types\";\n\nexport { derive, provide, preset, isExecutor, isLazyExecutor, isMainExecutor, isPreset, isReactiveExecutor, isStaticExecutor } from \"./executor\";\nexport * as multi from \"./multi\"\nexport * as flow from \"./flow\";\nexport { FlowError, FlowErrorCode } from \"./flow\";\nexport { dataAccessor } from \"./data-accessor\";\nexport type { DataAccessor, DataStore } from \"./data-accessor\";\nexport * from \"./generator-utils\";\nexport * from \"./helpers\";\nexport * from \"./meta\";\nexport * from \"./scope\";\nexport * from \"./ssch\";\nexport * from \"./types\";\n\nexport const name: Meta.MetaFn<string> = meta(\n\t\"pumped-fn/name\",\n\tcustom<string>(),\n);\n\nexport * as plugins from \"./plugins\""],"mappings":"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"}
|