@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 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?: ExecutionPlugin[];
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 Metrics = {
217
- flowName?: string;
218
- startTime: number;
219
- endTime?: number;
220
- duration?: number;
221
- status: "pending" | "success" | "error" | "timeout" | "cancelled";
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.BaseExecutor<unknown>>(dependencies: D, factory: Core.DependentFn<T, Core.InferOutput<D>>, ...metas: Meta.Meta[]): Core.Executor<T>;
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 function placeholder<V>(...metas: Meta.Meta<unknown>[]): Core.Executor<V>;
266
- //#endregion
267
- //#region src/flow.d.ts
268
- declare function provideFlow<Input, Output>(config: Flow.Config & Flow.Schema<Input, Output>, handler: Flow.NoDependencyFlowFn<Input, Output>): Flow.Executor<Input, Output>;
269
- declare function deriveFlow<D extends ReadonlyArray<Core.BaseExecutor<unknown>> | Record<string, Core.BaseExecutor<unknown>>, Input, Output>({
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
- declare const flow: {
299
- provide: typeof provideFlow;
300
- derive: typeof deriveFlow;
301
- execute: typeof execute;
302
- FlowError: typeof FlowError;
303
- FlowErrorCode: {
304
- readonly VALIDATION: "validation";
305
- readonly TIMEOUT: "timeout";
306
- readonly EXECUTION: "execution";
307
- readonly DEPENDENCY: "dependency";
308
- readonly PLUGIN: "plugin";
309
- readonly SCOPE: "scope";
310
- readonly UNKNOWN: "unknown";
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, FlowErrorType, GeneratorHandler, Meta, PreparedExecutor, SchemaError, ScopeOption, StandardSchemaV1, adapt, collectFromGenerator, createScope, custom, derive, deriveFlow, executorSymbol, findValue, findValues, flow, getValue, isAsyncGenerator, isAsyncGeneratorFunction, isExecutor, isGenerator, isGeneratorFunction, isIterableOrAsyncIterable, isLazyExecutor, isMainExecutor, isPreset, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, name, placeholder, plugin, plugins_d_exports as plugins, prepare, preset, processGenerator, provide, resolves, validate, validateAsync };
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
@@ -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
- function placeholder(...metas) {
201
- return provide(() => {
202
- throw new Error("Placeholder executor cannot be resolved");
203
- }, ...metas);
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
- function provideFlow(config, handler) {
605
- const executor = provide(() => ({
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
- ...config
608
- }), ...config.metas || []);
609
- Object.assign(executor, { ...config });
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 deriveFlow({ dependencies,...config }, handler) {
613
- const executor = derive(dependencies, (dependencies$1) => {
614
- return {
615
- execution: (input, controller) => handler(dependencies$1, input, controller),
616
- input: config.input,
617
- output: config.output,
618
- plugins: config.plugins || []
619
- };
620
- }, ...config.metas || []);
621
- Object.assign(executor, { ...config });
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
- async function execute(executor, input, opt) {
656
- let selfControl = opt?.scope === void 0;
657
- const scope = opt?.scope || createScope();
658
- const pod = scope.pod(...opt?.presets || []);
659
- const flow$1 = await pod.resolve(executor).catch((error) => {
660
- throw FlowError.dependency(`Failed to resolve executor: ${error.message}`, { cause: error });
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 ({ execution, input: input$1, output }, param, opts) => {
666
- let validatedInput = param;
746
+ context: contextWithHelpers,
747
+ safeExecute: async (flowDef, param, opts) => {
667
748
  try {
668
- validatedInput = validate(input$1, param);
669
- } catch (error) {
670
- const wrappedError = FlowError.validation(`Input validation failed:`, { cause: error });
671
- return {
672
- kind: "error",
673
- error: wrappedError
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
- try {
677
- const result = await execution(validatedInput, controller);
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
- const wrappedError = FlowError.execution(`Flow execution failed:`, { cause: error });
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 (context$1, param, opts) => {
691
- const result = await controller.safeExecute(context$1, param, opts);
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
- const initialContext = Object.assign({}, flow$1, { context });
697
- const executionResult = await controller.safeExecute(initialContext, input, opt);
698
- if (selfControl) await scope.dispose();
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: initialContext.context,
846
+ context: flowWithContext.context,
702
847
  result: executionResult
703
848
  };
704
849
  }
705
- const flow = {
706
- provide: provideFlow,
707
- derive: deriveFlow,
708
- execute,
709
- FlowError,
710
- FlowErrorCode
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, derive, deriveFlow, executorSymbol, findValue, findValues, flow, getValue, isAsyncGenerator, isAsyncGeneratorFunction, isExecutor, isGenerator, isGeneratorFunction, isIterableOrAsyncIterable, isLazyExecutor, isMainExecutor, isPreset, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, name, placeholder, plugin, plugins_exports as plugins, prepare, preset, processGenerator, provide, resolves, validate, validateAsync };
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pumped-fn/core-next",
3
- "version": "0.5.49",
3
+ "version": "0.5.50",
4
4
  "description": "Enhanced function utilities for TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",