@pumped-fn/core-next 0.5.40 → 0.5.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [0.5.42](https://github.com/pumped-fn/pumped-fn/compare/@pumped-fn/next@0.5.41...@pumped-fn/next@0.5.42) (2025-06-17)
6
+
7
+ ## [0.5.41](https://github.com/pumped-fn/pumped-fn/compare/@pumped-fn/next@0.5.39...@pumped-fn/next@0.5.41) (2025-05-23)
8
+
9
+
10
+ ### Features
11
+
12
+ * added preset to scope, now preset can be used to test ([f501c68](https://github.com/pumped-fn/pumped-fn/commit/f501c68588402624c545649c7da51ecbd502875f))
13
+ * removed reset API ([36c5e77](https://github.com/pumped-fn/pumped-fn/commit/36c5e774073b7a94573cebbe7a82a88f64e7a384))
14
+
5
15
  ## [0.5.40](https://github.com/pumped-fn/pumped-fn/compare/@pumped-fn/next@0.5.39...@pumped-fn/next@0.5.40) (2025-05-19)
6
16
 
7
17
 
package/README.md CHANGED
@@ -1,23 +1,3 @@
1
- DO NOT GIVE ME HIGH LEVEL STUFF, IF I ASK FOR FIX OR
2
- EXPLANATION, I WANT ACTUAL CODE OR EXPLANATION!!! I DONT
3
- WANT "Here's how you can blablabla"
4
- Be casual unless otherwise specified
5
- Be terse
6
- Suggest solutions that I didn't think about—anticipate my needs
7
- Treat me as an expert
8
- Be accurate and thorough
9
- Give the answer immediately. Provide detailed explanations and restate
10
- my query in your own words if necessary after giving the answer
11
- Value good arguments over authorities, the source is irrelevant
12
- Consider new technologies and contrarian ideas, not just the
13
- conventional wisdom
14
- You may use high levels of speculation or prediction, just flag it for me
15
- No moral lectures
16
- Discuss safety only when it's crucial and non-obvious
17
- If your content policy is an issue, provide the closest acceptable
18
- response and exp
19
-
20
-
21
1
  # Pumped fn
22
2
 
23
3
  Minimal set of library providing functional encapsulation.
package/dist/index.d.ts CHANGED
@@ -1,129 +1,144 @@
1
+ //#region src/types.d.ts
1
2
  declare const executorSymbol: unique symbol;
2
3
  declare const metaSymbol: unique symbol;
3
4
  interface StandardSchemaV1<Input = unknown, Output = Input> {
4
- readonly "~standard": StandardSchemaV1.Props<Input, Output>;
5
+ readonly "~standard": StandardSchemaV1.Props<Input, Output>;
5
6
  }
6
7
  declare namespace StandardSchemaV1 {
7
- interface Props<Input = unknown, Output = Input> {
8
- readonly version: 1;
9
- readonly vendor: string;
10
- readonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;
11
- readonly types?: Types<Input, Output> | undefined;
12
- }
13
- type Result<Output> = SuccessResult<Output> | FailureResult;
14
- interface SuccessResult<Output> {
15
- readonly value: Output;
16
- readonly issues?: undefined;
17
- }
18
- interface FailureResult {
19
- readonly issues: ReadonlyArray<Issue>;
20
- }
21
- interface Issue {
22
- readonly message: string;
23
- readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
24
- }
25
- interface PathSegment {
26
- readonly key: PropertyKey;
27
- }
28
- interface Types<Input = unknown, Output = Input> {
29
- readonly input: Input;
30
- readonly output: Output;
31
- }
32
- type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["input"];
33
- type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
8
+ export interface Props<Input = unknown, Output = Input> {
9
+ readonly version: 1;
10
+ readonly vendor: string;
11
+ readonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;
12
+ readonly types?: Types<Input, Output> | undefined;
13
+ }
14
+ export type Result<Output> = SuccessResult<Output> | FailureResult;
15
+ export interface SuccessResult<Output> {
16
+ readonly value: Output;
17
+ readonly issues?: undefined;
18
+ }
19
+ export interface FailureResult {
20
+ readonly issues: ReadonlyArray<Issue>;
21
+ }
22
+ export interface Issue {
23
+ readonly message: string;
24
+ readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
25
+ }
26
+ export interface PathSegment {
27
+ readonly key: PropertyKey;
28
+ }
29
+ export interface Types<Input = unknown, Output = Input> {
30
+ readonly input: Input;
31
+ readonly output: Output;
32
+ }
33
+ export type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["input"];
34
+ export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
34
35
  }
35
36
  declare class SchemaError extends Error {
36
- readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
37
- constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>);
37
+ readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
38
+ constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>);
38
39
  }
39
40
  declare namespace Meta {
40
- interface MetaContainer {
41
- metas: Meta[] | undefined;
42
- }
43
- interface Meta<V = unknown> {
44
- readonly [metaSymbol]: true;
45
- readonly key: string | symbol;
46
- readonly schema: StandardSchemaV1<V>;
47
- readonly value: V;
48
- }
49
- interface MetaFn<V> {
50
- (value: V): Meta<V>;
51
- readonly key: string | symbol;
52
- partial: <D extends Partial<V>>(d: D) => D;
53
- some: (source: MetaContainer | Meta[] | undefined) => V[];
54
- find: (source: MetaContainer | Meta[] | undefined) => V | undefined;
55
- get: (source: MetaContainer | Meta[] | undefined) => V;
56
- }
41
+ export interface MetaContainer {
42
+ metas: Meta[] | undefined;
43
+ }
44
+ export interface Meta<V = unknown> {
45
+ readonly [metaSymbol]: true;
46
+ readonly key: string | symbol;
47
+ readonly schema: StandardSchemaV1<V>;
48
+ readonly value: V;
49
+ }
50
+ export interface MetaFn<V> {
51
+ (value: V): Meta<V>;
52
+ readonly key: string | symbol;
53
+ partial: <D extends Partial<V>>(d: D) => D;
54
+ some: (source: MetaContainer | Meta[] | undefined) => V[];
55
+ find: (source: MetaContainer | Meta[] | undefined) => V | undefined;
56
+ get: (source: MetaContainer | Meta[] | undefined) => V;
57
+ }
57
58
  }
58
59
  declare namespace Core {
59
- type Output<T> = T | Promise<T>;
60
- type NoDependencyFn<T> = (scope: Controller) => Output<T>;
61
- type DependentFn<T, D> = (dependencies: D, scope: Controller) => Output<T>;
62
- type RecordLike = Record<string, unknown>;
63
- type UExecutor = BaseExecutor<unknown>;
64
- type Cleanup = () => void | Promise<void>;
65
- type Controller = {
66
- cleanup: (cleanup: Cleanup) => void;
67
- release: () => Promise<void>;
68
- scope: Scope;
69
- };
70
- type Kind = "main" | "reactive" | "lazy" | "static";
71
- interface BaseExecutor<T> extends Meta.MetaContainer {
72
- [executorSymbol]: Kind;
73
- factory: NoDependencyFn<T> | DependentFn<T, unknown> | undefined;
74
- dependencies: undefined | UExecutor | Array<UExecutor> | Record<string, UExecutor>;
75
- }
76
- interface Executor<T> extends BaseExecutor<T> {
77
- [executorSymbol]: "main";
78
- factory: NoDependencyFn<T> | DependentFn<T, unknown>;
79
- /** Return an executor controller without resolving Executor */
80
- readonly lazy: Lazy<T>;
81
- /** Return an resolved executor, and mark the user to be reactived for future changes */
82
- readonly reactive: Reactive<T>;
83
- /** Return an resolved executor with its controller */
84
- readonly static: Static<T>;
85
- }
86
- interface Reactive<T> extends BaseExecutor<T> {
87
- [executorSymbol]: "reactive";
88
- factory: undefined;
89
- readonly executor: Executor<T>;
90
- }
91
- interface Lazy<T> extends BaseExecutor<Accessor<T>> {
92
- [executorSymbol]: "lazy";
93
- factory: undefined;
94
- readonly executor: Executor<T>;
95
- }
96
- interface Static<T> extends BaseExecutor<Accessor<T>> {
97
- [executorSymbol]: "static";
98
- factory: undefined;
99
- readonly executor: Executor<T>;
100
- }
101
- interface Accessor<T> extends Meta.MetaContainer {
102
- lookup(): T;
103
- get(): T;
104
- resolve(force?: boolean): Promise<T>;
105
- release(soft?: boolean): Promise<void>;
106
- update(updateFn: T | ((current: T) => T)): Promise<void>;
107
- subscribe(callback: (value: T) => void): Cleanup;
108
- }
109
- interface Preset<T> {
110
- [executorSymbol]: "preset";
111
- executor: Executor<T>;
112
- value: T;
113
- }
114
- type InferOutput<T> = T extends Executor<infer U> | Reactive<infer U> ? Awaited<U> : T extends Lazy<infer U> | Static<infer U> ? Accessor<Awaited<U>> : never;
115
- interface Scope {
116
- accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;
117
- resolve<T>(executor: Core.Executor<T>): Promise<T>;
118
- resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;
119
- update<T>(executor: Executor<T>, updateFn: T | ((current: T) => T)): Promise<void>;
120
- reset<T>(executor: Executor<T>): Promise<void>;
121
- release(executor: Executor<any>, soft?: boolean): Promise<void>;
122
- dispose(): Promise<void>;
123
- onUpdate<T>(executor: Executor<T>, callback: (accessor: Accessor<T>) => void): Cleanup;
124
- }
60
+ export type Output<T> = T | Promise<T>;
61
+ export type NoDependencyFn<T> = (scope: Controller) => Output<T>;
62
+ export type DependentFn<T, D> = (dependencies: D, scope: Controller) => Output<T>;
63
+ export type RecordLike = Record<string, unknown>;
64
+ export type UExecutor = BaseExecutor<unknown>;
65
+ export type Cleanup = () => void | Promise<void>;
66
+ export type Controller = {
67
+ cleanup: (cleanup: Cleanup) => void;
68
+ release: () => Promise<void>;
69
+ scope: Scope;
70
+ };
71
+ export type Kind = "main" | "reactive" | "lazy" | "static";
72
+ export interface BaseExecutor<T> extends Meta.MetaContainer {
73
+ [executorSymbol]: Kind;
74
+ factory: NoDependencyFn<T> | DependentFn<T, unknown> | undefined;
75
+ dependencies: undefined | UExecutor | Array<UExecutor> | Record<string, UExecutor>;
76
+ }
77
+ export interface Executor<T> extends BaseExecutor<T> {
78
+ [executorSymbol]: "main";
79
+ factory: NoDependencyFn<T> | DependentFn<T, unknown>;
80
+ /** Return an executor controller without resolving Executor */
81
+ readonly lazy: Lazy<T>;
82
+ /** Return an resolved executor, and mark the user to be reactived for future changes */
83
+ readonly reactive: Reactive<T>;
84
+ /** Return an resolved executor with its controller */
85
+ readonly static: Static<T>;
86
+ }
87
+ export interface Reactive<T> extends BaseExecutor<T> {
88
+ [executorSymbol]: "reactive";
89
+ factory: undefined;
90
+ readonly executor: Executor<T>;
91
+ }
92
+ export interface Lazy<T> extends BaseExecutor<Accessor<T>> {
93
+ [executorSymbol]: "lazy";
94
+ factory: undefined;
95
+ readonly executor: Executor<T>;
96
+ }
97
+ export interface Static<T> extends BaseExecutor<Accessor<T>> {
98
+ [executorSymbol]: "static";
99
+ factory: undefined;
100
+ readonly executor: Executor<T>;
101
+ }
102
+ export type PendingState<T> = {
103
+ kind: "pending";
104
+ promise: Promise<T>;
105
+ };
106
+ export type ResolvedState<T> = {
107
+ kind: "resolved";
108
+ value: T;
109
+ };
110
+ export type RejectedState = {
111
+ kind: "rejected";
112
+ error: unknown;
113
+ };
114
+ export type ResolveState<T> = PendingState<T> | ResolvedState<T> | RejectedState;
115
+ export interface Accessor<T> extends Meta.MetaContainer {
116
+ lookup(): undefined | ResolveState<T>;
117
+ get(): T;
118
+ resolve(force?: boolean): Promise<T>;
119
+ release(soft?: boolean): Promise<void>;
120
+ update(updateFn: T | ((current: T) => T)): Promise<void>;
121
+ subscribe(callback: (value: T) => void): Cleanup;
122
+ }
123
+ export interface Preset<T> {
124
+ [executorSymbol]: "preset";
125
+ executor: Executor<T>;
126
+ value: T;
127
+ }
128
+ export type InferOutput<T> = T extends Executor<infer U> | Reactive<infer U> ? Awaited<U> : T extends Lazy<infer U> | Static<infer U> ? Accessor<Awaited<U>> : never;
129
+ export interface Scope {
130
+ accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;
131
+ resolve<T>(executor: Core.Executor<T>): Promise<T>;
132
+ resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;
133
+ update<T>(executor: Executor<T>, updateFn: T | ((current: T) => T)): Promise<void>;
134
+ release(executor: Executor<any>, soft?: boolean): Promise<void>;
135
+ dispose(): Promise<void>;
136
+ onUpdate<T>(executor: Executor<T>, callback: (accessor: Accessor<T>) => void): Cleanup;
137
+ }
125
138
  }
126
139
 
140
+ //#endregion
141
+ //#region src/executor.d.ts
127
142
  declare function isLazyExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Lazy<unknown>;
128
143
  declare function isReactiveExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Reactive<unknown>;
129
144
  declare function isStaticExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Static<unknown>;
@@ -131,22 +146,30 @@ declare function isMainExecutor(executor: unknown): executor is Core.Executor<un
131
146
  declare function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T>;
132
147
  declare function provide<T>(factory: Core.NoDependencyFn<T>, ...metas: Meta.Meta[]): Core.Executor<T>;
133
148
  declare function derive<T, D extends Core.BaseExecutor<unknown>>(dependencies: D, factory: Core.DependentFn<T, Core.InferOutput<D>>, ...metas: Meta.Meta[]): Core.Executor<T>;
134
- declare function derive<T, D extends ReadonlyArray<Core.BaseExecutor<unknown>> | Record<string, Core.BaseExecutor<unknown>>>(dependencies: {
135
- [K in keyof D]: D[K];
136
- }, factory: Core.DependentFn<T, {
137
- [K in keyof D]: Core.InferOutput<D[K]>;
138
- }>, ...metas: Meta.Meta[]): Core.Executor<T>;
149
+ 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>;
139
150
  declare function preset<T>(e: Core.Executor<T>, v: T): Core.Preset<T>;
140
151
 
152
+ //#endregion
153
+ //#region src/meta.d.ts
141
154
  declare const meta: <V>(key: string | symbol, schema: StandardSchemaV1<V>) => Meta.MetaFn<V>;
142
155
  declare function getValue<V>(meta: Meta.Meta<V>): Awaited<V>;
143
156
  declare function findValues<V = unknown>(executor: Meta.MetaContainer | Meta.Meta[] | undefined, meta: Meta.MetaFn<V>): V[];
144
157
  declare function findValue<V>(executor: Meta.MetaContainer | Meta.Meta[] | undefined, meta: Meta.MetaFn<V>): V | undefined;
145
158
 
159
+ //#endregion
160
+ //#region src/scope.d.ts
146
161
  declare function createScope(...presets: Core.Preset<unknown>[]): Core.Scope;
147
162
 
163
+ //#endregion
164
+ //#region src/ssch.d.ts
148
165
  declare function validate<TSchema extends StandardSchemaV1>(schema: TSchema, data: unknown): Awaited<StandardSchemaV1.InferOutput<TSchema>>;
149
166
  declare function validateAsync<TSchema extends StandardSchemaV1>(schema: TSchema, data: unknown): Promise<Awaited<StandardSchemaV1.InferOutput<TSchema>>>;
150
167
  declare function custom<T>(): StandardSchemaV1<T, T>;
151
168
 
152
- export { Core, Meta, SchemaError, StandardSchemaV1, createScope, custom, derive, executorSymbol, findValue, findValues, getValue, isExecutor, isLazyExecutor, isMainExecutor, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, preset, provide, validate, validateAsync };
169
+ //#endregion
170
+ //#region src/helpers.d.ts
171
+ declare function resolves<T extends Array<Core.Executor<unknown>> | Record<string, Core.Executor<unknown>>>(scope: Core.Scope, executors: { [K in keyof T]: T[K] }): Promise<{ [K in keyof T]: Core.InferOutput<T[K]> }>;
172
+
173
+ //#endregion
174
+ export { Core, Meta, SchemaError, StandardSchemaV1, createScope, custom, derive, executorSymbol, findValue, findValues, getValue, isExecutor, isLazyExecutor, isMainExecutor, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, preset, provide, resolves, validate, validateAsync };
175
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":["executorSymbol: unique symbol","metaSymbol: unique symbol","value: unknown","issues: ReadonlyArray<StandardSchemaV1.Issue>","value: V","d: D","source: MetaContainer | Meta[] | undefined","scope: Controller","dependencies: D","cleanup: Cleanup","force?: boolean","soft?: boolean","updateFn: T | ((current: T) => T)","current: T","callback: (value: T) => void","value: T","executor: Core.Executor<T>","eager?: boolean","executor: Executor<T>","executor: Executor<any>","callback: (accessor: Accessor<T>) => void","accessor: Accessor<T>","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>","v: T","key: string | symbol","schema: StandardSchemaV1<V>","meta: Meta.Meta<V>","executor: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.MetaFn<V>","schema: TSchema","data: unknown","scope: Core.Scope","executors: { [K in keyof T]: T[K] }"],"sources":["../src/types.ts","../src/executor.ts","../src/meta.ts","../src/scope.ts","../src/ssch.ts","../src/helpers.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1,437 @@
1
- var c=Symbol.for("@pumped-fn/core/executor"),h=Symbol.for("@pumped-fn/core/meta"),d=class extends Error{issues;constructor(e){super(e[0].message),this.name="SchemaError",this.issues=e}};function E(r,e,t){let n={[c]:"main",factory:(m,a)=>e===void 0?r(a):r(m,a),dependencies:e,metas:t},o={[c]:"lazy",dependencies:void 0,executor:n,factory:void 0,metas:t},s={[c]:"reactive",executor:n,factory:void 0,dependencies:void 0,metas:t},l={[c]:"static",dependencies:void 0,factory:void 0,metas:t,executor:n};return Object.defineProperties(n,{lazy:{value:o,writable:!1,configurable:!1,enumerable:!1},reactive:{value:s,writable:!1,configurable:!1,enumerable:!1},static:{value:l,writable:!1,configurable:!1,enumerable:!1}}),n}function f(r){return r[c]==="lazy"}function x(r){return r[c]==="reactive"}function y(r){return r[c]==="static"}function v(r){return T(r)&&r[c]==="main"}function T(r){return typeof r=="object"&&r!==null&&c in r}function F(r,...e){return E(r,void 0,e)}function R(r,e,...t){return E(e,r,t)}function I(r,e){return{[c]:"preset",value:e,executor:r}}function k(r,e){let t=r["~standard"].validate(e);if("then"in t)throw new Error("validating async is not supported");if(t.issues)throw new d(t.issues);return t.value}async function j(r,e){let t=r["~standard"].validate(e);if("then"in t){let n=await t;if(n.issues)throw new d(n.issues);return n.value}if(t.issues)throw new d(t.issues);return Promise.resolve(t.value)}function K(){return{"~standard":{vendor:"pumped-fn",version:1,validate:r=>({value:r})}}}var H=(r,e)=>{let t=typeof r=="string"?Symbol(r):r,n=o=>({[h]:!0,key:t,schema:e,value:o});return Object.defineProperty(n,"key",{value:t,configurable:!1,enumerable:!1,writable:!1}),Object.defineProperty(n,h,{value:!0,configurable:!1,enumerable:!1,writable:!1}),Object.defineProperties(n,{partial:{value:o=>Object.assign({},n({}),o),configurable:!1,enumerable:!1,writable:!1},some:{value:o=>b(o,n),configurable:!1,enumerable:!1,writable:!1},find:{value:o=>S(o,n),configurable:!1,enumerable:!1,writable:!1},get:{value:o=>M(S(o,n)),configurable:!1,enumerable:!1,writable:!1}}),n};function M(r){return k(r.schema,r.value)}function b(r,e){return r?(Array.isArray(r)?r:r.metas??[]).filter(o=>o.key===e.key).map(o=>M(o)):[]}function S(r,e){return b(r,e).at(0)}function P(r){return f(r)||x(r)||y(r)?r.executor:r}var w=class{disposed=!1;cache=new Map;cleanups=new Map;onUpdates=new Map;constructor(...e){for(let t of e){let n=this["~makeAccessor"](t.executor);this.cache.set(t.executor,{accessor:n,value:{kind:"resolved",value:t.value}})}}async"~triggerCleanup"(e){let t=this.cleanups.get(e);if(t)for(let n of Array.from(t.values()).reverse())await n()}async"~triggerUpdate"(e){let t=this.cache.get(e);if(!t)throw new Error("Executor is not yet resolved");let n=this.onUpdates.get(e);if(n)for(let o of Array.from(n.values()))v(o)?(this.cleanups.has(o)&&this["~triggerCleanup"](o),await this.cache.get(o).accessor.resolve(!0),this.onUpdates.has(o)&&await this["~triggerUpdate"](o)):await o(t.accessor)}async"~resolveExecutor"(e,t){let n=P(e),o=this["~makeAccessor"](n);if(f(e))return o;if(x(e)){let s=this.onUpdates.get(e.executor)??new Set;this.onUpdates.set(e.executor,s),s.add(t)}return await o.resolve(!1),y(e)?o:o.get()}async"~resolveDependencies"(e,t){if(e===void 0)return;if(T(e))return this["~resolveExecutor"](e,t);if(Array.isArray(e))return await Promise.all(e.map(o=>this["~resolveDependencies"](o,t)));let n={};for(let o of Object.keys(e)){let s=e[o],l=await this["~resolveDependencies"](s,t);n[o]=l}return n}"~ensureNotDisposed"(){if(this.disposed)throw new Error("Scope is disposed")}"~makeAccessor"(e){let t=f(e)||x(e)||y(e)?e.executor:e,n=this.cache.get(t);if(n)return n.accessor;let o={},s=t.factory,l={cleanup:a=>{let p=this.cleanups.get(t)??new Set;this.cleanups.set(t,p),p.add(a)},release:async()=>this.release(t),scope:this},m=a=>{this["~ensureNotDisposed"]();let u=this.cache.get(t)?.value;if(u&&!a){if(u.kind==="resolved")return Promise.resolve(u.value);if(u.kind==="rejected")throw u.error;return u.promise}let C=new Promise((g,D)=>{this["~resolveDependencies"](t.dependencies,t).then(i=>s(i,l)).then(i=>{this.cache.set(t,{accessor:o,value:{kind:"resolved",value:i}}),g(i)}).catch(i=>{this.cache.set(t,{accessor:o,value:{kind:"rejected",error:i}}),D(i)})});return this.cache.set(t,{accessor:o,value:{kind:"resolving",promise:C}}),C};return Object.assign(o,{get:()=>{this["~ensureNotDisposed"]();let a=this.cache.get(t)?.value;if(!a||a.kind==="resolving")throw new Error("Executor is not resolved");if(a.kind==="rejected")throw a.error;return a.value},lookup:()=>(this["~ensureNotDisposed"](),this.cache.get(t)?.value),metas:e.metas,resolve:m,release:async(a=!1)=>{this.release(t,a)},update:a=>this.update(t,a),subscribe:a=>(this["~ensureNotDisposed"](),this.onUpdate(t,a))})}accessor(e){return this["~ensureNotDisposed"](),this["~makeAccessor"](e)}async resolve(e,t=!1){this["~ensureNotDisposed"]();let n=this["~makeAccessor"](e);return await n.resolve(t),n.get()}async resolveAccessor(e,t=!1){this["~ensureNotDisposed"]();let n=this["~makeAccessor"](e);return await n.resolve(t),n}async update(e,t){this["~ensureNotDisposed"](),this["~triggerCleanup"](e);let n=this["~makeAccessor"](e);if(typeof t=="function"){let s=t(n.get());this.cache.set(e,{accessor:n,value:{kind:"resolved",value:s}})}else this.cache.set(e,{accessor:n,value:{kind:"resolved",value:t}});await this["~triggerUpdate"](e)}async reset(e){if(this.disposed)throw new Error("Scope is disposed");await this.release(e,!0),await this.resolve(e,!0)}async release(e,t=!1){if(this["~ensureNotDisposed"](),!this.cache.get(e)&&!t)throw new Error("Executor is not yet resolved");await this["~triggerCleanup"](e);let o=this.onUpdates.get(e);if(o){for(let s of Array.from(o.values()))v(s)&&await this.release(s,!0);this.onUpdates.delete(e)}this.cache.delete(e)}async dispose(){this["~ensureNotDisposed"]();let e=this.cache.keys();for(let t of e)await this.release(t,!0);this.disposed=!0,this.cache.clear(),this.cleanups.clear()}onUpdate(e,t){this["~ensureNotDisposed"]();let n=this.onUpdates.get(e)??new Set;return this.onUpdates.set(e,n),n.add(t),()=>{this["~ensureNotDisposed"]();let o=this.onUpdates.get(e);o&&(o.delete(t),o.size===0&&this.onUpdates.delete(e))}}};function W(...r){return new w(...r)}export{d as SchemaError,W as createScope,K as custom,R as derive,c as executorSymbol,S as findValue,b as findValues,M as getValue,T as isExecutor,f as isLazyExecutor,v as isMainExecutor,x as isReactiveExecutor,y as isStaticExecutor,H as meta,h as metaSymbol,I as preset,F as provide,k as validate,j as validateAsync};
1
+ //#region src/types.ts
2
+ const executorSymbol = Symbol.for("@pumped-fn/core/executor");
3
+ const metaSymbol = Symbol.for("@pumped-fn/core/meta");
4
+ var SchemaError = class extends Error {
5
+ issues;
6
+ constructor(issues) {
7
+ super(issues[0].message);
8
+ this.name = "SchemaError";
9
+ this.issues = issues;
10
+ }
11
+ };
12
+
13
+ //#endregion
14
+ //#region src/executor.ts
15
+ function createExecutor(factory, dependencies, metas) {
16
+ const executor = {
17
+ [executorSymbol]: "main",
18
+ factory: (_, controller) => {
19
+ if (dependencies === void 0) {
20
+ const f$1 = factory;
21
+ return f$1(controller);
22
+ }
23
+ const f = factory;
24
+ return f(_, controller);
25
+ },
26
+ dependencies,
27
+ metas
28
+ };
29
+ const lazyExecutor = {
30
+ [executorSymbol]: "lazy",
31
+ dependencies: void 0,
32
+ executor,
33
+ factory: void 0,
34
+ metas
35
+ };
36
+ const reactiveExecutor = {
37
+ [executorSymbol]: "reactive",
38
+ executor,
39
+ factory: void 0,
40
+ dependencies: void 0,
41
+ metas
42
+ };
43
+ const staticExecutor = {
44
+ [executorSymbol]: "static",
45
+ dependencies: void 0,
46
+ factory: void 0,
47
+ metas,
48
+ executor
49
+ };
50
+ Object.defineProperties(executor, {
51
+ lazy: {
52
+ value: lazyExecutor,
53
+ writable: false,
54
+ configurable: false,
55
+ enumerable: false
56
+ },
57
+ reactive: {
58
+ value: reactiveExecutor,
59
+ writable: false,
60
+ configurable: false,
61
+ enumerable: false
62
+ },
63
+ static: {
64
+ value: staticExecutor,
65
+ writable: false,
66
+ configurable: false,
67
+ enumerable: false
68
+ }
69
+ });
70
+ return executor;
71
+ }
72
+ function isLazyExecutor(executor) {
73
+ return executor[executorSymbol] === "lazy";
74
+ }
75
+ function isReactiveExecutor(executor) {
76
+ return executor[executorSymbol] === "reactive";
77
+ }
78
+ function isStaticExecutor(executor) {
79
+ return executor[executorSymbol] === "static";
80
+ }
81
+ function isMainExecutor(executor) {
82
+ return isExecutor(executor) && executor[executorSymbol] === "main";
83
+ }
84
+ function isExecutor(input) {
85
+ return typeof input === "object" && input !== null && executorSymbol in input;
86
+ }
87
+ function provide(factory, ...metas) {
88
+ return createExecutor(factory, void 0, metas);
89
+ }
90
+ function derive(pdependencies, pfactory, ...metas) {
91
+ return createExecutor(pfactory, pdependencies, metas);
92
+ }
93
+ function preset(e, v) {
94
+ return {
95
+ [executorSymbol]: "preset",
96
+ value: v,
97
+ executor: e
98
+ };
99
+ }
100
+
101
+ //#endregion
102
+ //#region src/ssch.ts
103
+ function validate(schema, data) {
104
+ const result = schema["~standard"].validate(data);
105
+ if ("then" in result) throw new Error("validating async is not supported");
106
+ if (result.issues) throw new SchemaError(result.issues);
107
+ return result.value;
108
+ }
109
+ async function validateAsync(schema, data) {
110
+ const result = schema["~standard"].validate(data);
111
+ if ("then" in result) {
112
+ const result_1 = await result;
113
+ if (result_1.issues) throw new SchemaError(result_1.issues);
114
+ return result_1.value;
115
+ }
116
+ if (result.issues) throw new SchemaError(result.issues);
117
+ return Promise.resolve(result.value);
118
+ }
119
+ function custom() {
120
+ return { "~standard": {
121
+ vendor: "pumped-fn",
122
+ version: 1,
123
+ validate: (value) => {
124
+ return { value };
125
+ }
126
+ } };
127
+ }
128
+
129
+ //#endregion
130
+ //#region src/meta.ts
131
+ const meta = (key, schema) => {
132
+ const _key = typeof key === "string" ? Symbol(key) : key;
133
+ const fn = (value) => ({
134
+ [metaSymbol]: true,
135
+ key: _key,
136
+ schema,
137
+ value
138
+ });
139
+ Object.defineProperty(fn, "key", {
140
+ value: _key,
141
+ configurable: false,
142
+ enumerable: false,
143
+ writable: false
144
+ });
145
+ Object.defineProperty(fn, metaSymbol, {
146
+ value: true,
147
+ configurable: false,
148
+ enumerable: false,
149
+ writable: false
150
+ });
151
+ Object.defineProperties(fn, {
152
+ partial: {
153
+ value: (d) => {
154
+ return Object.assign({}, fn({}), d);
155
+ },
156
+ configurable: false,
157
+ enumerable: false,
158
+ writable: false
159
+ },
160
+ some: {
161
+ value: (source) => findValues(source, fn),
162
+ configurable: false,
163
+ enumerable: false,
164
+ writable: false
165
+ },
166
+ find: {
167
+ value: (source) => findValue(source, fn),
168
+ configurable: false,
169
+ enumerable: false,
170
+ writable: false
171
+ },
172
+ get: {
173
+ value: (source) => getValue(findValue(source, fn)),
174
+ configurable: false,
175
+ enumerable: false,
176
+ writable: false
177
+ }
178
+ });
179
+ return fn;
180
+ };
181
+ function getValue(meta$1) {
182
+ return validate(meta$1.schema, meta$1.value);
183
+ }
184
+ function findValues(executor, meta$1) {
185
+ if (!executor) return [];
186
+ const metas = Array.isArray(executor) ? executor : executor.metas ?? [];
187
+ const maybeMeta = metas.filter((m) => m.key === meta$1.key);
188
+ return maybeMeta.map((m) => getValue(m));
189
+ }
190
+ function findValue(executor, meta$1) {
191
+ const values = findValues(executor, meta$1);
192
+ return values.at(0);
193
+ }
194
+
195
+ //#endregion
196
+ //#region src/scope.ts
197
+ function getExecutor(e) {
198
+ if (isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)) return e.executor;
199
+ return e;
200
+ }
201
+ var Scope = class {
202
+ disposed = false;
203
+ cache = new Map();
204
+ cleanups = new Map();
205
+ onUpdates = new Map();
206
+ constructor(...presets) {
207
+ for (const preset$1 of presets) {
208
+ const accessor = this["~makeAccessor"](preset$1.executor);
209
+ this.cache.set(preset$1.executor, {
210
+ accessor,
211
+ value: {
212
+ kind: "resolved",
213
+ value: preset$1.value
214
+ }
215
+ });
216
+ }
217
+ }
218
+ async "~triggerCleanup"(e) {
219
+ const cs = this.cleanups.get(e);
220
+ if (cs) for (const c of Array.from(cs.values()).reverse()) await c();
221
+ }
222
+ async "~triggerUpdate"(e) {
223
+ const ce = this.cache.get(e);
224
+ if (!ce) throw new Error("Executor is not yet resolved");
225
+ const ou = this.onUpdates.get(e);
226
+ if (ou) for (const t of Array.from(ou.values())) if (isMainExecutor(t)) {
227
+ if (this.cleanups.has(t)) this["~triggerCleanup"](t);
228
+ const a = this.cache.get(t);
229
+ await a.accessor.resolve(true);
230
+ if (this.onUpdates.has(t)) await this["~triggerUpdate"](t);
231
+ } else await t(ce.accessor);
232
+ }
233
+ async "~resolveExecutor"(ie, ref) {
234
+ const e = getExecutor(ie);
235
+ const a = this["~makeAccessor"](e);
236
+ if (isLazyExecutor(ie)) return a;
237
+ if (isReactiveExecutor(ie)) {
238
+ const c = this.onUpdates.get(ie.executor) ?? new Set();
239
+ this.onUpdates.set(ie.executor, c);
240
+ c.add(ref);
241
+ }
242
+ await a.resolve(false);
243
+ if (isStaticExecutor(ie)) return a;
244
+ return a.get();
245
+ }
246
+ async "~resolveDependencies"(ie, ref) {
247
+ if (ie === void 0) return void 0;
248
+ if (isExecutor(ie)) return this["~resolveExecutor"](ie, ref);
249
+ if (Array.isArray(ie)) return await Promise.all(ie.map((item) => this["~resolveDependencies"](item, ref)));
250
+ const r = {};
251
+ for (const k of Object.keys(ie)) {
252
+ const t = ie[k];
253
+ const rd = await this["~resolveDependencies"](t, ref);
254
+ r[k] = rd;
255
+ }
256
+ return r;
257
+ }
258
+ "~ensureNotDisposed"() {
259
+ if (this.disposed) throw new Error("Scope is disposed");
260
+ }
261
+ "~makeAccessor"(e) {
262
+ const requestor = isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e) ? e.executor : e;
263
+ const cachedAccessor = this.cache.get(requestor);
264
+ if (cachedAccessor) return cachedAccessor.accessor;
265
+ const accessor = {};
266
+ const factory = requestor.factory;
267
+ const controller = {
268
+ cleanup: (cleanup) => {
269
+ const currentSet = this.cleanups.get(requestor) ?? new Set();
270
+ this.cleanups.set(requestor, currentSet);
271
+ currentSet.add(cleanup);
272
+ },
273
+ release: async () => this.release(requestor),
274
+ scope: this
275
+ };
276
+ const resolve = (force) => {
277
+ this["~ensureNotDisposed"]();
278
+ const entry = this.cache.get(requestor);
279
+ const cached = entry?.value;
280
+ if (cached && !force) if (cached.kind === "resolved") return Promise.resolve(cached.value);
281
+ else if (cached.kind === "rejected") throw cached.error;
282
+ else return cached.promise;
283
+ const promise = new Promise((resolve$1, reject) => {
284
+ this["~resolveDependencies"](requestor.dependencies, requestor).then((dependencies) => factory(dependencies, controller)).then((result) => {
285
+ this.cache.set(requestor, {
286
+ accessor,
287
+ value: {
288
+ kind: "resolved",
289
+ value: result
290
+ }
291
+ });
292
+ resolve$1(result);
293
+ }).catch((error) => {
294
+ this.cache.set(requestor, {
295
+ accessor,
296
+ value: {
297
+ kind: "rejected",
298
+ error
299
+ }
300
+ });
301
+ reject(error);
302
+ });
303
+ });
304
+ this.cache.set(requestor, {
305
+ accessor,
306
+ value: {
307
+ kind: "pending",
308
+ promise
309
+ }
310
+ });
311
+ return promise;
312
+ };
313
+ return Object.assign(accessor, {
314
+ get: () => {
315
+ this["~ensureNotDisposed"]();
316
+ const cacheEntry = this.cache.get(requestor)?.value;
317
+ if (!cacheEntry || cacheEntry.kind === "pending") throw new Error("Executor is not resolved");
318
+ if (cacheEntry.kind === "rejected") throw cacheEntry.error;
319
+ return cacheEntry.value;
320
+ },
321
+ lookup: () => {
322
+ this["~ensureNotDisposed"]();
323
+ const cacheEntry = this.cache.get(requestor);
324
+ if (!cacheEntry) return void 0;
325
+ return cacheEntry.value;
326
+ },
327
+ metas: e.metas,
328
+ resolve,
329
+ release: async (soft = false) => {
330
+ this.release(requestor, soft);
331
+ },
332
+ update: (updateFn) => {
333
+ return this.update(requestor, updateFn);
334
+ },
335
+ subscribe: (cb) => {
336
+ this["~ensureNotDisposed"]();
337
+ return this.onUpdate(requestor, cb);
338
+ }
339
+ });
340
+ }
341
+ accessor(executor) {
342
+ this["~ensureNotDisposed"]();
343
+ return this["~makeAccessor"](executor);
344
+ }
345
+ async resolve(executor, force = false) {
346
+ this["~ensureNotDisposed"]();
347
+ const accessor = this["~makeAccessor"](executor);
348
+ await accessor.resolve(force);
349
+ return accessor.get();
350
+ }
351
+ async resolveAccessor(executor, force = false) {
352
+ this["~ensureNotDisposed"]();
353
+ const accessor = this["~makeAccessor"](executor);
354
+ await accessor.resolve(force);
355
+ return accessor;
356
+ }
357
+ async update(e, u) {
358
+ this["~ensureNotDisposed"]();
359
+ this["~triggerCleanup"](e);
360
+ const accessor = this["~makeAccessor"](e);
361
+ if (typeof u === "function") {
362
+ const fn = u;
363
+ const n = fn(accessor.get());
364
+ this.cache.set(e, {
365
+ accessor,
366
+ value: {
367
+ kind: "resolved",
368
+ value: n
369
+ }
370
+ });
371
+ } else this.cache.set(e, {
372
+ accessor,
373
+ value: {
374
+ kind: "resolved",
375
+ value: u
376
+ }
377
+ });
378
+ await this["~triggerUpdate"](e);
379
+ }
380
+ async release(e, s = false) {
381
+ this["~ensureNotDisposed"]();
382
+ const ce = this.cache.get(e);
383
+ if (!ce && !s) throw new Error("Executor is not yet resolved");
384
+ await this["~triggerCleanup"](e);
385
+ const ou = this.onUpdates.get(e);
386
+ if (ou) {
387
+ for (const t of Array.from(ou.values())) if (isMainExecutor(t)) await this.release(t, true);
388
+ this.onUpdates.delete(e);
389
+ }
390
+ this.cache.delete(e);
391
+ }
392
+ async dispose() {
393
+ this["~ensureNotDisposed"]();
394
+ const currents = this.cache.keys();
395
+ for (const current of currents) await this.release(current, true);
396
+ this.disposed = true;
397
+ this.cache.clear();
398
+ this.cleanups.clear();
399
+ }
400
+ onUpdate(e, cb) {
401
+ this["~ensureNotDisposed"]();
402
+ const ou = this.onUpdates.get(e) ?? new Set();
403
+ this.onUpdates.set(e, ou);
404
+ ou.add(cb);
405
+ return () => {
406
+ this["~ensureNotDisposed"]();
407
+ const ou$1 = this.onUpdates.get(e);
408
+ if (ou$1) {
409
+ ou$1.delete(cb);
410
+ if (ou$1.size === 0) this.onUpdates.delete(e);
411
+ }
412
+ };
413
+ }
414
+ };
415
+ function createScope(...presets) {
416
+ return new Scope(...presets);
417
+ }
418
+
419
+ //#endregion
420
+ //#region src/helpers.ts
421
+ async function resolves(scope, executors) {
422
+ const objectOutput = {};
423
+ const arrayOutput = [];
424
+ const isArray = Array.isArray(executors);
425
+ for (const [index, executor] of Object.entries(executors)) {
426
+ const target = isLazyExecutor(executor) || isReactiveExecutor(executor) || isStaticExecutor(executor) ? executor.executor : executor;
427
+ const result$1 = await scope.resolve(target);
428
+ if (isArray) arrayOutput.push(result$1);
429
+ else Object.assign(objectOutput, { [index]: result$1 });
430
+ }
431
+ const result = isArray ? arrayOutput : objectOutput;
432
+ return result;
433
+ }
434
+
435
+ //#endregion
436
+ export { SchemaError, createScope, custom, derive, executorSymbol, findValue, findValues, getValue, isExecutor, isLazyExecutor, isMainExecutor, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, preset, provide, resolves, validate, validateAsync };
2
437
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts","../src/executor.ts","../src/ssch.ts","../src/meta.ts","../src/scope.ts"],"sourcesContent":["export const executorSymbol = Symbol.for(\"@pumped-fn/core/executor\");\nexport const metaSymbol = Symbol.for(\"@pumped-fn/core/meta\");\n\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n readonly \"~standard\": StandardSchemaV1.Props<Input, Output>;\n}\n\nexport declare namespace StandardSchemaV1 {\n export interface Props<Input = unknown, Output = Input> {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (\n value: unknown\n ) => Result<Output> | Promise<Result<Output>>;\n readonly types?: Types<Input, Output> | undefined;\n }\n\n export type Result<Output> = SuccessResult<Output> | FailureResult;\n\n export interface SuccessResult<Output> {\n readonly value: Output;\n readonly issues?: undefined;\n }\n\n export interface FailureResult {\n readonly issues: ReadonlyArray<Issue>;\n }\n\n export interface Issue {\n readonly message: string;\n readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;\n }\n\n export interface PathSegment {\n readonly key: PropertyKey;\n }\n\n export interface Types<Input = unknown, Output = Input> {\n readonly input: Input;\n readonly output: Output;\n }\n\n export type InferInput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"input\"];\n\n export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"output\"];\n}\n\nexport class SchemaError extends Error {\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;\n\n constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>) {\n super(issues[0].message);\n this.name = \"SchemaError\";\n this.issues = issues;\n }\n}\n\nexport declare namespace Meta {\n export interface MetaContainer {\n metas: Meta[] | undefined;\n }\n\n export interface Meta<V = unknown> {\n readonly [metaSymbol]: true;\n readonly key: string | symbol;\n readonly schema: StandardSchemaV1<V>;\n readonly value: V;\n }\n\n export interface MetaFn<V> {\n (value: V): Meta<V>;\n readonly key: string | symbol;\n partial: <D extends Partial<V>>(d: D) => D;\n some: (source: MetaContainer | Meta[] | undefined) => V[];\n find: (source: MetaContainer | Meta[] | undefined) => V | undefined;\n get: (source: MetaContainer | Meta[] | undefined) => V;\n }\n}\n\nexport declare namespace Core {\n export type Output<T> = T | Promise<T>;\n\n export type NoDependencyFn<T> = (scope: Controller) => Output<T>;\n export type DependentFn<T, D> = (\n dependencies: D,\n scope: Controller\n ) => Output<T>;\n export type RecordLike = Record<string, unknown>;\n export type UExecutor = BaseExecutor<unknown>;\n\n export type Cleanup = () => void | Promise<void>;\n\n export type Controller = {\n cleanup: (cleanup: Cleanup) => void;\n release: () => Promise<void>;\n scope: Scope;\n };\n\n export type Kind = \"main\" | \"reactive\" | \"lazy\" | \"static\";\n\n export interface BaseExecutor<T> extends Meta.MetaContainer {\n [executorSymbol]: Kind;\n factory: NoDependencyFn<T> | DependentFn<T, unknown> | undefined;\n dependencies:\n | undefined\n | UExecutor\n | Array<UExecutor>\n | Record<string, UExecutor>;\n }\n\n export interface Executor<T> extends BaseExecutor<T> {\n [executorSymbol]: \"main\";\n factory: NoDependencyFn<T> | DependentFn<T, unknown>;\n\n /** Return an executor controller without resolving Executor */\n readonly lazy: Lazy<T>;\n\n /** Return an resolved executor, and mark the user to be reactived for future changes */\n readonly reactive: Reactive<T>;\n\n /** Return an resolved executor with its controller */\n readonly static: Static<T>;\n }\n\n export interface Reactive<T> extends BaseExecutor<T> {\n [executorSymbol]: \"reactive\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Lazy<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"lazy\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Static<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"static\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Accessor<T> extends Meta.MetaContainer {\n lookup(): T;\n get(): T;\n resolve(force?: boolean): Promise<T>;\n release(soft?: boolean): Promise<void>;\n update(updateFn: T | ((current: T) => T)): Promise<void>;\n subscribe(callback: (value: T) => void): Cleanup;\n }\n\n export interface Preset<T> {\n [executorSymbol]: \"preset\";\n executor: Executor<T>;\n value: T;\n }\n\n export type InferOutput<T> = T extends Executor<infer U> | Reactive<infer U>\n ? Awaited<U>\n : T extends Lazy<infer U> | Static<infer U>\n ? Accessor<Awaited<U>>\n : never;\n\n export interface Scope {\n accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;\n\n resolve<T>(executor: Core.Executor<T>): Promise<T>;\n resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;\n\n update<T>(\n executor: Executor<T>,\n updateFn: T | ((current: T) => T)\n ): Promise<void>;\n\n reset<T>(executor: Executor<T>): Promise<void>;\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 // onRelease<T>(executor: Executor<T>, callback: () => void): () => void;\n }\n}\n","import { Core, executorSymbol, Meta } from \"./types\";\n\nfunction createExecutor<T>(\n factory: Core.NoDependencyFn<T> | Core.DependentFn<T, unknown>,\n dependencies:\n | undefined\n | Core.UExecutor\n | Array<Core.UExecutor>\n | Record<string, Core.UExecutor>,\n metas: Meta.Meta[] | undefined\n): Core.Executor<T> {\n const executor = {\n [executorSymbol]: \"main\",\n factory: (_: unknown, controller: Core.Controller) => {\n if (dependencies === undefined) {\n const f = factory as Core.NoDependencyFn<T>;\n return f(controller);\n }\n\n const f = factory as Core.DependentFn<T, unknown>;\n return f(_, controller);\n },\n dependencies,\n metas: metas,\n } as unknown as Core.Executor<T>;\n\n const lazyExecutor = {\n [executorSymbol]: \"lazy\",\n dependencies: undefined,\n executor,\n factory: undefined,\n metas: metas,\n } satisfies Core.Lazy<T>;\n\n const reactiveExecutor = {\n [executorSymbol]: \"reactive\",\n executor,\n factory: undefined,\n dependencies: undefined,\n metas: metas,\n } satisfies Core.Reactive<T>;\n\n const staticExecutor = {\n [executorSymbol]: \"static\",\n dependencies: undefined,\n factory: undefined,\n metas: metas,\n executor,\n } satisfies Core.Static<T>;\n\n Object.defineProperties(executor, {\n lazy: {\n value: lazyExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n reactive: {\n value: reactiveExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n static: {\n value: staticExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n });\n\n return executor;\n}\n\nexport function isLazyExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Lazy<unknown> {\n return executor[executorSymbol] === \"lazy\";\n}\n\nexport function isReactiveExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Reactive<unknown> {\n return executor[executorSymbol] === \"reactive\";\n}\n\nexport function isStaticExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Static<unknown> {\n return executor[executorSymbol] === \"static\";\n}\n\nexport function isMainExecutor(\n executor: unknown\n): executor is Core.Executor<unknown> {\n return isExecutor(executor) && executor[executorSymbol] === \"main\";\n}\n\nexport function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T> {\n return typeof input === \"object\" && input !== null && executorSymbol in input;\n}\n\nexport function provide<T>(\n factory: Core.NoDependencyFn<T>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(factory, undefined, metas);\n}\n\nexport function derive<T, D extends Core.BaseExecutor<unknown>>(\n dependencies: D,\n factory: Core.DependentFn<T, Core.InferOutput<D>>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<\n T,\n D extends\n | ReadonlyArray<Core.BaseExecutor<unknown>>\n | Record<string, Core.BaseExecutor<unknown>>\n>(\n dependencies: { [K in keyof D]: D[K] },\n factory: Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<T, D>(\n pdependencies:\n | Core.BaseExecutor<D>\n | Array<Core.BaseExecutor<D>>\n | Record<string, Core.BaseExecutor<unknown>>,\n pfactory:\n | Core.DependentFn<T, Core.InferOutput<D>>\n | Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(pfactory as any, pdependencies, metas);\n}\n\nexport function preset<T>(e: Core.Executor<T>, v: T): Core.Preset<T> {\n return {\n [executorSymbol]: \"preset\",\n value: v,\n executor: e,\n };\n}\n","import { SchemaError, StandardSchemaV1 } from \"./types\";\n\nexport function validate<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Awaited<StandardSchemaV1.InferOutput<TSchema>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n throw new Error(\"validating async is not supported\");\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n return result.value as any;\n}\n\nexport async function validateAsync<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Promise<Awaited<StandardSchemaV1.InferOutput<TSchema>>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n const result_1 = await result;\n if (result_1.issues) {\n throw new SchemaError(result_1.issues);\n }\n return result_1.value as any;\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n\n return Promise.resolve(result.value as any);\n}\n\nexport function custom<T>(): StandardSchemaV1<T, T> {\n return {\n \"~standard\": {\n vendor: \"pumped-fn\",\n version: 1,\n validate: (value) => {\n return { value: value as T };\n },\n },\n };\n}\n","import { validate } from \"./ssch\";\nimport { metaSymbol, StandardSchemaV1, type Meta } from \"./types\";\n\nexport const meta = <V>(\n key: string | symbol,\n schema: StandardSchemaV1<V>\n): Meta.MetaFn<V> => {\n const _key = typeof key === \"string\" ? Symbol(key) : key;\n\n const fn = (value: V) =>\n ({\n [metaSymbol]: true,\n key: _key,\n schema,\n value,\n } as unknown as Meta.MetaFn<V>);\n\n Object.defineProperty(fn, \"key\", {\n value: _key,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperty(fn, metaSymbol, {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperties(fn, {\n partial: {\n value: (d: Partial<V>) => {\n return Object.assign({}, fn({} as V), d);\n },\n configurable: false,\n enumerable: false,\n writable: false,\n },\n some: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValues(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n find: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValue(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n get: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n getValue(\n findValue(\n source,\n fn as unknown as Meta.MetaFn<unknown>\n ) as Meta.Meta<V>\n ),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n });\n\n return fn as any;\n};\n\nexport function getValue<V>(meta: Meta.Meta<V>) {\n return validate(meta.schema, meta.value);\n}\n\nexport function findValues<V = unknown>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V[] {\n if (!executor) return [];\n\n const metas = Array.isArray(executor) ? executor : executor.metas ?? [];\n\n const maybeMeta = metas.filter((m) => m.key === meta.key);\n return maybeMeta.map((m) => getValue(m as Meta.Meta<V>));\n}\n\nexport function findValue<V>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V | undefined {\n const values = findValues(executor, meta);\n return values.at(0);\n}\n","import {\n isLazyExecutor,\n isReactiveExecutor,\n isStaticExecutor,\n isMainExecutor,\n isExecutor,\n} from \"./executor\";\nimport { Core } from \"./types\";\n\ntype CacheEntry = {\n accessor: Core.Accessor<unknown>;\n value:\n | { kind: \"resolving\"; promise: Promise<unknown> }\n | { kind: \"resolved\"; value: unknown }\n | { kind: \"rejected\"; error: unknown };\n};\n\ntype UE = Core.Executor<unknown>;\ntype OnUpdateFn = (accessor: Core.Accessor<unknown>) => void | Promise<void>;\n\nfunction getExecutor(e: Core.UExecutor): Core.Executor<unknown> {\n if (isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)) {\n return e.executor;\n }\n\n return e as Core.Executor<unknown>;\n}\n\nclass Scope implements Core.Scope {\n private disposed: boolean = false;\n private cache: Map<UE, CacheEntry> = new Map();\n private cleanups = new Map<UE, Set<Core.Cleanup>>();\n private onUpdates = new Map<UE, Set<OnUpdateFn | UE>>();\n\n constructor(...presets: Core.Preset<unknown>[]) {\n for (const preset of presets) {\n const accessor = this[\"~makeAccessor\"](preset.executor);\n\n this.cache.set(preset.executor, {\n accessor,\n value: { kind: \"resolved\", value: preset.value },\n });\n }\n }\n\n private async \"~triggerCleanup\"(e: UE): Promise<void> {\n const cs = this.cleanups.get(e);\n if (cs) {\n for (const c of Array.from(cs.values()).reverse()) {\n await c();\n }\n }\n }\n\n private async \"~triggerUpdate\"(e: UE): Promise<void> {\n const ce = this.cache.get(e);\n if (!ce) {\n throw new Error(\"Executor is not yet resolved\");\n }\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n for (const t of Array.from(ou.values())) {\n if (isMainExecutor(t)) {\n if (this.cleanups.has(t)) {\n this[\"~triggerCleanup\"](t);\n }\n\n const a = this.cache.get(t);\n await a!.accessor.resolve(true);\n\n if (this.onUpdates.has(t)) {\n await this[\"~triggerUpdate\"](t);\n }\n } else {\n await t(ce.accessor);\n }\n }\n }\n }\n\n private async \"~resolveExecutor\"(\n ie: Core.UExecutor,\n ref: UE\n ): Promise<unknown> {\n const e = getExecutor(ie);\n const a = this[\"~makeAccessor\"](e);\n\n if (isLazyExecutor(ie)) {\n return a;\n }\n\n if (isReactiveExecutor(ie)) {\n const c = this.onUpdates.get(ie.executor) ?? new Set();\n this.onUpdates.set(ie.executor, c);\n c.add(ref);\n }\n\n await a.resolve(false);\n if (isStaticExecutor(ie)) {\n return a;\n }\n\n return a.get();\n }\n\n private async \"~resolveDependencies\"(\n ie:\n | undefined\n | Core.UExecutor\n | Core.UExecutor[]\n | Record<string, Core.UExecutor>,\n ref: UE\n ): Promise<undefined | unknown | unknown[] | Record<string, unknown>> {\n if (ie === undefined) {\n return undefined;\n }\n\n if (isExecutor(ie)) {\n return this[\"~resolveExecutor\"](ie, ref);\n }\n\n if (Array.isArray(ie)) {\n return await Promise.all(\n ie.map((item) => this[\"~resolveDependencies\"](item, ref))\n );\n }\n\n const r: Record<string, unknown> = {};\n for (const k of Object.keys(ie)) {\n const t = ie[k];\n const rd = await this[\"~resolveDependencies\"](t, ref);\n\n r[k] = rd;\n }\n\n return r;\n }\n\n private \"~ensureNotDisposed\"(): void {\n if (this.disposed) {\n throw new Error(\"Scope is disposed\");\n }\n }\n\n private \"~makeAccessor\"(e: Core.UExecutor): Core.Accessor<unknown> {\n const requestor =\n isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)\n ? e.executor\n : (e as UE);\n\n const cachedAccessor = this.cache.get(requestor);\n if (cachedAccessor) {\n return cachedAccessor.accessor;\n }\n\n const accessor = {} as Core.Accessor<unknown>;\n const factory = requestor.factory;\n const controller = {\n cleanup: (cleanup: Core.Cleanup) => {\n const currentSet = this.cleanups.get(requestor) ?? new Set();\n this.cleanups.set(requestor, currentSet);\n\n currentSet.add(cleanup);\n },\n release: async () => this.release(requestor),\n scope: this,\n };\n\n const resolve = (force: boolean): Promise<unknown> => {\n this[\"~ensureNotDisposed\"]();\n\n const entry = this.cache.get(requestor)!;\n const cached = entry?.value;\n\n if (cached && !force) {\n if (cached.kind === \"resolved\") {\n return Promise.resolve(cached.value);\n } else if (cached.kind === \"rejected\") {\n throw cached.error;\n } else {\n return cached.promise;\n }\n }\n\n const promise = new Promise((resolve, reject) => {\n this[\"~resolveDependencies\"](requestor.dependencies, requestor)\n .then((dependencies) => factory(dependencies as any, controller))\n .then((result) => {\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"resolved\", value: result },\n });\n\n resolve(result);\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: \"resolving\", 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 === \"resolving\") {\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 return this.cache.get(requestor)?.value;\n },\n metas: e.metas,\n resolve,\n release: async (soft: boolean = false) => {\n this.release(requestor, soft);\n },\n update: (updateFn: unknown | ((current: unknown) => unknown)) => {\n return this.update(requestor, updateFn);\n },\n subscribe: (cb: (value: unknown) => void) => {\n this[\"~ensureNotDisposed\"]();\n return this.onUpdate(requestor, cb);\n },\n } satisfies Partial<Core.Accessor<unknown>>);\n }\n\n accessor<T>(executor: Core.Executor<T>): Core.Accessor<T> {\n this[\"~ensureNotDisposed\"]();\n return this[\"~makeAccessor\"](executor) as Core.Accessor<T>;\n }\n\n async resolve<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<T> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor.get() as T;\n }\n\n async resolveAccessor<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<Core.Accessor<T>> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor as Core.Accessor<T>;\n }\n\n async update<T>(\n e: Core.Executor<T>,\n u: T | ((current: T) => T)\n ): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n this[\"~triggerCleanup\"](e);\n const accessor = this[\"~makeAccessor\"](e);\n\n if (typeof u === \"function\") {\n const fn = u as (current: T) => T;\n const n = fn(accessor.get() as T);\n this.cache.set(e, {\n accessor,\n value: { kind: \"resolved\", value: n },\n });\n } else {\n this.cache.set(e, {\n accessor,\n value: { kind: \"resolved\", value: u },\n });\n }\n\n await this[\"~triggerUpdate\"](e);\n }\n\n async reset<T>(executor: Core.Executor<T>): Promise<void> {\n if (this.disposed) {\n throw new Error(\"Scope is disposed\");\n }\n\n await this.release(executor, true);\n await this.resolve(executor, true);\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\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 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 }\n\n onUpdate<T>(\n e: Core.Executor<T>,\n cb: (a: Core.Accessor<T>) => void | Promise<void>\n ): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e) ?? new Set();\n this.onUpdates.set(e, ou);\n ou.add(cb as any);\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n ou.delete(cb as any);\n if (ou.size === 0) {\n this.onUpdates.delete(e);\n }\n }\n };\n }\n}\n\nexport function createScope(...presets: Core.Preset<unknown>[]): Core.Scope {\n return new Scope(...presets);\n}\n"],"mappings":"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","names":["executorSymbol","metaSymbol","SchemaError","issues","createExecutor","factory","dependencies","metas","executor","executorSymbol","_","controller","lazyExecutor","reactiveExecutor","staticExecutor","isLazyExecutor","isReactiveExecutor","isStaticExecutor","isMainExecutor","isExecutor","input","provide","derive","pdependencies","pfactory","preset","e","v","validate","schema","data","result","SchemaError","validateAsync","result_1","custom","value","meta","key","schema","_key","fn","value","metaSymbol","d","source","findValues","findValue","getValue","validate","executor","m","getExecutor","e","isLazyExecutor","isReactiveExecutor","isStaticExecutor","Scope","presets","preset","accessor","cs","c","ce","ou","t","isMainExecutor","ie","ref","a","isExecutor","item","r","k","rd","requestor","cachedAccessor","factory","controller","cleanup","currentSet","resolve","force","cached","promise","reject","dependencies","result","error","cacheEntry","soft","updateFn","cb","executor","u","n","s","currents","current","createScope"]}
1
+ {"version":3,"file":"index.js","names":["executorSymbol: unique symbol","metaSymbol: unique symbol","issues: ReadonlyArray<StandardSchemaV1.Issue>","factory: Core.NoDependencyFn<T> | Core.DependentFn<T, unknown>","dependencies:\n | undefined\n | Core.UExecutor\n | Array<Core.UExecutor>\n | Record<string, Core.UExecutor>","metas: Meta.Meta[] | undefined","_: unknown","controller: Core.Controller","f","executor: Core.BaseExecutor<unknown>","executor: unknown","input: unknown","factory: Core.NoDependencyFn<T>","pdependencies:\n | Core.BaseExecutor<D>\n | Array<Core.BaseExecutor<D>>\n | Record<string, Core.BaseExecutor<unknown>>","pfactory:\n | Core.DependentFn<T, Core.InferOutput<D>>\n | Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>","e: Core.Executor<T>","v: T","schema: TSchema","data: unknown","key: string | symbol","schema: StandardSchemaV1<V>","value: V","d: Partial<V>","source: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.Meta<V>","meta","executor: Meta.MetaContainer | Meta.Meta[] | undefined","meta: Meta.MetaFn<V>","e: Core.UExecutor","preset","e: UE","ie: Core.UExecutor","ref: UE","ie:\n | undefined\n | Core.UExecutor\n | Core.UExecutor[]\n | Record<string, Core.UExecutor>","r: Record<string, unknown>","cleanup: Core.Cleanup","force: boolean","resolve","soft: boolean","updateFn: unknown | ((current: unknown) => unknown)","cb: (value: unknown) => void","executor: Core.Executor<T>","e: Core.Executor<T>","u: T | ((current: T) => T)","e: Core.Executor<unknown>","s: boolean","cb: (a: Core.Accessor<T>) => void | Promise<void>","ou","scope: Core.Scope","executors: { [K in keyof T]: T[K] }","result"],"sources":["../src/types.ts","../src/executor.ts","../src/ssch.ts","../src/meta.ts","../src/scope.ts","../src/helpers.ts"],"sourcesContent":["export const executorSymbol: unique symbol = Symbol.for(\n \"@pumped-fn/core/executor\"\n);\nexport const metaSymbol: unique symbol = Symbol.for(\"@pumped-fn/core/meta\");\n\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n readonly \"~standard\": StandardSchemaV1.Props<Input, Output>;\n}\n\nexport declare namespace StandardSchemaV1 {\n export interface Props<Input = unknown, Output = Input> {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (\n value: unknown\n ) => Result<Output> | Promise<Result<Output>>;\n readonly types?: Types<Input, Output> | undefined;\n }\n\n export type Result<Output> = SuccessResult<Output> | FailureResult;\n\n export interface SuccessResult<Output> {\n readonly value: Output;\n readonly issues?: undefined;\n }\n\n export interface FailureResult {\n readonly issues: ReadonlyArray<Issue>;\n }\n\n export interface Issue {\n readonly message: string;\n readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;\n }\n\n export interface PathSegment {\n readonly key: PropertyKey;\n }\n\n export interface Types<Input = unknown, Output = Input> {\n readonly input: Input;\n readonly output: Output;\n }\n\n export type InferInput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"input\"];\n\n export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"output\"];\n}\n\nexport class SchemaError extends Error {\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;\n\n constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>) {\n super(issues[0].message);\n this.name = \"SchemaError\";\n this.issues = issues;\n }\n}\n\nexport declare namespace Meta {\n export interface MetaContainer {\n metas: Meta[] | undefined;\n }\n\n export interface Meta<V = unknown> {\n readonly [metaSymbol]: true;\n readonly key: string | symbol;\n readonly schema: StandardSchemaV1<V>;\n readonly value: V;\n }\n\n export interface MetaFn<V> {\n (value: V): Meta<V>;\n readonly key: string | symbol;\n partial: <D extends Partial<V>>(d: D) => D;\n some: (source: MetaContainer | Meta[] | undefined) => V[];\n find: (source: MetaContainer | Meta[] | undefined) => V | undefined;\n get: (source: MetaContainer | Meta[] | undefined) => V;\n }\n}\n\nexport declare namespace Core {\n export type Output<T> = T | Promise<T>;\n\n export type NoDependencyFn<T> = (scope: Controller) => Output<T>;\n export type DependentFn<T, D> = (\n dependencies: D,\n scope: Controller\n ) => Output<T>;\n export type RecordLike = Record<string, unknown>;\n export type UExecutor = BaseExecutor<unknown>;\n\n export type Cleanup = () => void | Promise<void>;\n\n export type Controller = {\n cleanup: (cleanup: Cleanup) => void;\n release: () => Promise<void>;\n scope: Scope;\n };\n\n export type Kind = \"main\" | \"reactive\" | \"lazy\" | \"static\";\n\n export interface BaseExecutor<T> extends Meta.MetaContainer {\n [executorSymbol]: Kind;\n factory: NoDependencyFn<T> | DependentFn<T, unknown> | undefined;\n dependencies:\n | undefined\n | UExecutor\n | Array<UExecutor>\n | Record<string, UExecutor>;\n }\n\n export interface Executor<T> extends BaseExecutor<T> {\n [executorSymbol]: \"main\";\n factory: NoDependencyFn<T> | DependentFn<T, unknown>;\n\n /** Return an executor controller without resolving Executor */\n readonly lazy: Lazy<T>;\n\n /** Return an resolved executor, and mark the user to be reactived for future changes */\n readonly reactive: Reactive<T>;\n\n /** Return an resolved executor with its controller */\n readonly static: Static<T>;\n }\n\n export interface Reactive<T> extends BaseExecutor<T> {\n [executorSymbol]: \"reactive\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Lazy<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"lazy\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Static<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"static\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export type PendingState<T> = { kind: \"pending\"; promise: Promise<T> };\n export type ResolvedState<T> = { kind: \"resolved\"; value: T };\n export type RejectedState = { kind: \"rejected\"; error: unknown };\n\n export type ResolveState<T> =\n | PendingState<T>\n | ResolvedState<T>\n | RejectedState;\n\n export interface Accessor<T> extends Meta.MetaContainer {\n lookup(): undefined | ResolveState<T>;\n\n get(): T;\n resolve(force?: boolean): Promise<T>;\n release(soft?: boolean): Promise<void>;\n update(updateFn: T | ((current: T) => T)): Promise<void>;\n subscribe(callback: (value: T) => void): Cleanup;\n }\n\n export interface Preset<T> {\n [executorSymbol]: \"preset\";\n executor: Executor<T>;\n value: T;\n }\n\n export type InferOutput<T> = T extends Executor<infer U> | Reactive<infer U>\n ? Awaited<U>\n : T extends Lazy<infer U> | Static<infer U>\n ? Accessor<Awaited<U>>\n : never;\n\n export interface Scope {\n accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;\n\n resolve<T>(executor: Core.Executor<T>): Promise<T>;\n resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;\n\n update<T>(\n executor: Executor<T>,\n updateFn: T | ((current: T) => T)\n ): Promise<void>;\n\n release(executor: Executor<any>, soft?: boolean): Promise<void>;\n\n dispose(): Promise<void>;\n\n onUpdate<T>(\n executor: Executor<T>,\n callback: (accessor: Accessor<T>) => void\n ): Cleanup;\n // onRelease<T>(executor: Executor<T>, callback: () => void): () => void;\n }\n}\n","import { Core, executorSymbol, Meta } from \"./types\";\n\nfunction createExecutor<T>(\n factory: Core.NoDependencyFn<T> | Core.DependentFn<T, unknown>,\n dependencies:\n | undefined\n | Core.UExecutor\n | Array<Core.UExecutor>\n | Record<string, Core.UExecutor>,\n metas: Meta.Meta[] | undefined\n): Core.Executor<T> {\n const executor = {\n [executorSymbol]: \"main\",\n factory: (_: unknown, controller: Core.Controller) => {\n if (dependencies === undefined) {\n const f = factory as Core.NoDependencyFn<T>;\n return f(controller);\n }\n\n const f = factory as Core.DependentFn<T, unknown>;\n return f(_, controller);\n },\n dependencies,\n metas: metas,\n } as unknown as Core.Executor<T>;\n\n const lazyExecutor = {\n [executorSymbol]: \"lazy\",\n dependencies: undefined,\n executor,\n factory: undefined,\n metas: metas,\n } satisfies Core.Lazy<T>;\n\n const reactiveExecutor = {\n [executorSymbol]: \"reactive\",\n executor,\n factory: undefined,\n dependencies: undefined,\n metas: metas,\n } satisfies Core.Reactive<T>;\n\n const staticExecutor = {\n [executorSymbol]: \"static\",\n dependencies: undefined,\n factory: undefined,\n metas: metas,\n executor,\n } satisfies Core.Static<T>;\n\n Object.defineProperties(executor, {\n lazy: {\n value: lazyExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n reactive: {\n value: reactiveExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n static: {\n value: staticExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n });\n\n return executor;\n}\n\nexport function isLazyExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Lazy<unknown> {\n return executor[executorSymbol] === \"lazy\";\n}\n\nexport function isReactiveExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Reactive<unknown> {\n return executor[executorSymbol] === \"reactive\";\n}\n\nexport function isStaticExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Static<unknown> {\n return executor[executorSymbol] === \"static\";\n}\n\nexport function isMainExecutor(\n executor: unknown\n): executor is Core.Executor<unknown> {\n return isExecutor(executor) && executor[executorSymbol] === \"main\";\n}\n\nexport function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T> {\n return typeof input === \"object\" && input !== null && executorSymbol in input;\n}\n\nexport function provide<T>(\n factory: Core.NoDependencyFn<T>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(factory, undefined, metas);\n}\n\nexport function derive<T, D extends Core.BaseExecutor<unknown>>(\n dependencies: D,\n factory: Core.DependentFn<T, Core.InferOutput<D>>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<\n T,\n D extends\n | ReadonlyArray<Core.BaseExecutor<unknown>>\n | Record<string, Core.BaseExecutor<unknown>>\n>(\n dependencies: { [K in keyof D]: D[K] },\n factory: Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<T, D>(\n pdependencies:\n | Core.BaseExecutor<D>\n | Array<Core.BaseExecutor<D>>\n | Record<string, Core.BaseExecutor<unknown>>,\n pfactory:\n | Core.DependentFn<T, Core.InferOutput<D>>\n | Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(pfactory as any, pdependencies, metas);\n}\n\nexport function preset<T>(e: Core.Executor<T>, v: T): Core.Preset<T> {\n return {\n [executorSymbol]: \"preset\",\n value: v,\n executor: e,\n };\n}\n","import { SchemaError, StandardSchemaV1 } from \"./types\";\n\nexport function validate<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Awaited<StandardSchemaV1.InferOutput<TSchema>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n throw new Error(\"validating async is not supported\");\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n return result.value as any;\n}\n\nexport async function validateAsync<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Promise<Awaited<StandardSchemaV1.InferOutput<TSchema>>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n const result_1 = await result;\n if (result_1.issues) {\n throw new SchemaError(result_1.issues);\n }\n return result_1.value as any;\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n\n return Promise.resolve(result.value as any);\n}\n\nexport function custom<T>(): StandardSchemaV1<T, T> {\n return {\n \"~standard\": {\n vendor: \"pumped-fn\",\n version: 1,\n validate: (value) => {\n return { value: value as T };\n },\n },\n };\n}\n","import { validate } from \"./ssch\";\nimport { metaSymbol, StandardSchemaV1, type Meta } from \"./types\";\n\nexport const meta = <V>(\n key: string | symbol,\n schema: StandardSchemaV1<V>\n): Meta.MetaFn<V> => {\n const _key = typeof key === \"string\" ? Symbol(key) : key;\n\n const fn = (value: V) =>\n ({\n [metaSymbol]: true,\n key: _key,\n schema,\n value,\n } as unknown as Meta.MetaFn<V>);\n\n Object.defineProperty(fn, \"key\", {\n value: _key,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperty(fn, metaSymbol, {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperties(fn, {\n partial: {\n value: (d: Partial<V>) => {\n return Object.assign({}, fn({} as V), d);\n },\n configurable: false,\n enumerable: false,\n writable: false,\n },\n some: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValues(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n find: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValue(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n get: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n getValue(\n findValue(\n source,\n fn as unknown as Meta.MetaFn<unknown>\n ) as Meta.Meta<V>\n ),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n });\n\n return fn as any;\n};\n\nexport function getValue<V>(meta: Meta.Meta<V>): Awaited<V> {\n return validate(meta.schema, meta.value);\n}\n\nexport function findValues<V = unknown>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V[] {\n if (!executor) return [];\n\n const metas = Array.isArray(executor) ? executor : executor.metas ?? [];\n\n const maybeMeta = metas.filter((m) => m.key === meta.key);\n return maybeMeta.map((m) => getValue(m as Meta.Meta<V>));\n}\n\nexport function findValue<V>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V | undefined {\n const values = findValues(executor, meta);\n return values.at(0);\n}\n","import {\n isLazyExecutor,\n isReactiveExecutor,\n isStaticExecutor,\n isMainExecutor,\n isExecutor,\n} from \"./executor\";\nimport { Core } from \"./types\";\n\ntype CacheEntry = {\n accessor: Core.Accessor<unknown>;\n value: Core.ResolveState<unknown>;\n};\n\ntype UE = Core.Executor<unknown>;\ntype OnUpdateFn = (accessor: Core.Accessor<unknown>) => void | Promise<void>;\n\nfunction getExecutor(e: Core.UExecutor): Core.Executor<unknown> {\n if (isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)) {\n return e.executor;\n }\n\n return e as Core.Executor<unknown>;\n}\n\nclass Scope implements Core.Scope {\n private disposed: boolean = false;\n private cache: Map<UE, CacheEntry> = new Map();\n private cleanups = new Map<UE, Set<Core.Cleanup>>();\n private onUpdates = new Map<UE, Set<OnUpdateFn | UE>>();\n\n constructor(...presets: Core.Preset<unknown>[]) {\n for (const preset of presets) {\n const accessor = this[\"~makeAccessor\"](preset.executor);\n\n this.cache.set(preset.executor, {\n accessor,\n value: { kind: \"resolved\", value: preset.value },\n });\n }\n }\n\n private async \"~triggerCleanup\"(e: UE): Promise<void> {\n const cs = this.cleanups.get(e);\n if (cs) {\n for (const c of Array.from(cs.values()).reverse()) {\n await c();\n }\n }\n }\n\n private async \"~triggerUpdate\"(e: UE): Promise<void> {\n const ce = this.cache.get(e);\n if (!ce) {\n throw new Error(\"Executor is not yet resolved\");\n }\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n for (const t of Array.from(ou.values())) {\n if (isMainExecutor(t)) {\n if (this.cleanups.has(t)) {\n this[\"~triggerCleanup\"](t);\n }\n\n const a = this.cache.get(t);\n await a!.accessor.resolve(true);\n\n if (this.onUpdates.has(t)) {\n await this[\"~triggerUpdate\"](t);\n }\n } else {\n await t(ce.accessor);\n }\n }\n }\n }\n\n private async \"~resolveExecutor\"(\n ie: Core.UExecutor,\n ref: UE\n ): Promise<unknown> {\n const e = getExecutor(ie);\n const a = this[\"~makeAccessor\"](e);\n\n if (isLazyExecutor(ie)) {\n return a;\n }\n\n if (isReactiveExecutor(ie)) {\n const c = this.onUpdates.get(ie.executor) ?? new Set();\n this.onUpdates.set(ie.executor, c);\n c.add(ref);\n }\n\n await a.resolve(false);\n if (isStaticExecutor(ie)) {\n return a;\n }\n\n return a.get();\n }\n\n private async \"~resolveDependencies\"(\n ie:\n | undefined\n | Core.UExecutor\n | Core.UExecutor[]\n | Record<string, Core.UExecutor>,\n ref: UE\n ): Promise<undefined | unknown | unknown[] | Record<string, unknown>> {\n if (ie === undefined) {\n return undefined;\n }\n\n if (isExecutor(ie)) {\n return this[\"~resolveExecutor\"](ie, ref);\n }\n\n if (Array.isArray(ie)) {\n return await Promise.all(\n ie.map((item) => this[\"~resolveDependencies\"](item, ref))\n );\n }\n\n const r: Record<string, unknown> = {};\n for (const k of Object.keys(ie)) {\n const t = ie[k];\n const rd = await this[\"~resolveDependencies\"](t, ref);\n\n r[k] = rd;\n }\n\n return r;\n }\n\n private \"~ensureNotDisposed\"(): void {\n if (this.disposed) {\n throw new Error(\"Scope is disposed\");\n }\n }\n\n private \"~makeAccessor\"(e: Core.UExecutor): Core.Accessor<unknown> {\n const requestor =\n isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)\n ? e.executor\n : (e as UE);\n\n const cachedAccessor = this.cache.get(requestor);\n if (cachedAccessor) {\n return cachedAccessor.accessor;\n }\n\n const accessor = {} as Core.Accessor<unknown>;\n const factory = requestor.factory;\n const controller = {\n cleanup: (cleanup: Core.Cleanup) => {\n const currentSet = this.cleanups.get(requestor) ?? new Set();\n this.cleanups.set(requestor, currentSet);\n\n currentSet.add(cleanup);\n },\n release: async () => this.release(requestor),\n scope: this,\n };\n\n const resolve = (force: boolean): Promise<unknown> => {\n this[\"~ensureNotDisposed\"]();\n\n const entry = this.cache.get(requestor)!;\n const cached = entry?.value;\n\n if (cached && !force) {\n if (cached.kind === \"resolved\") {\n return Promise.resolve(cached.value);\n } else if (cached.kind === \"rejected\") {\n throw cached.error;\n } else {\n return cached.promise;\n }\n }\n\n const promise = new Promise((resolve, reject) => {\n this[\"~resolveDependencies\"](requestor.dependencies, requestor)\n .then((dependencies) => factory(dependencies as any, controller))\n .then((result) => {\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"resolved\", value: result },\n });\n\n resolve(result);\n })\n .catch((error) => {\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"rejected\", error },\n });\n\n reject(error);\n });\n });\n\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"pending\", promise },\n });\n return promise;\n };\n\n return Object.assign(accessor, {\n get: () => {\n this[\"~ensureNotDisposed\"]();\n\n const cacheEntry = this.cache.get(requestor)?.value;\n\n if (!cacheEntry || cacheEntry.kind === \"pending\") {\n throw new Error(\"Executor is not resolved\");\n }\n\n if (cacheEntry.kind === \"rejected\") {\n throw cacheEntry.error;\n }\n\n return cacheEntry.value;\n },\n lookup: () => {\n this[\"~ensureNotDisposed\"]();\n\n const cacheEntry = this.cache.get(requestor);\n\n if (!cacheEntry) {\n return undefined;\n }\n\n return cacheEntry.value;\n },\n metas: e.metas,\n resolve,\n release: async (soft: boolean = false) => {\n this.release(requestor, soft);\n },\n update: (updateFn: unknown | ((current: unknown) => unknown)) => {\n return this.update(requestor, updateFn);\n },\n subscribe: (cb: (value: unknown) => void) => {\n this[\"~ensureNotDisposed\"]();\n return this.onUpdate(requestor, cb);\n },\n } satisfies Partial<Core.Accessor<unknown>>);\n }\n\n accessor<T>(executor: Core.Executor<T>): Core.Accessor<T> {\n this[\"~ensureNotDisposed\"]();\n return this[\"~makeAccessor\"](executor) as Core.Accessor<T>;\n }\n\n async resolve<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<T> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor.get() as T;\n }\n\n async resolveAccessor<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<Core.Accessor<T>> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor as Core.Accessor<T>;\n }\n\n async update<T>(\n e: Core.Executor<T>,\n u: T | ((current: T) => T)\n ): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n this[\"~triggerCleanup\"](e);\n const accessor = this[\"~makeAccessor\"](e);\n\n if (typeof u === \"function\") {\n const fn = u as (current: T) => T;\n const n = fn(accessor.get() as T);\n this.cache.set(e, {\n accessor,\n value: { kind: \"resolved\", value: n },\n });\n } else {\n this.cache.set(e, {\n accessor,\n value: { kind: \"resolved\", value: u },\n });\n }\n\n await this[\"~triggerUpdate\"](e);\n }\n\n async release(e: Core.Executor<unknown>, s: boolean = false): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n\n const ce = this.cache.get(e);\n if (!ce && !s) {\n throw new Error(\"Executor is not yet resolved\");\n }\n\n await this[\"~triggerCleanup\"](e);\n\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 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 }\n\n onUpdate<T>(\n e: Core.Executor<T>,\n cb: (a: Core.Accessor<T>) => void | Promise<void>\n ): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e) ?? new Set();\n this.onUpdates.set(e, ou);\n ou.add(cb as any);\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n ou.delete(cb as any);\n if (ou.size === 0) {\n this.onUpdates.delete(e);\n }\n }\n };\n }\n}\n\nexport function createScope(...presets: Core.Preset<unknown>[]): Core.Scope {\n return new Scope(...presets);\n}\n","import {\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>>\n | Record<string, Core.Executor<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 =\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"],"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.40",
3
+ "version": "0.5.42",
4
4
  "description": "Enhanced function utilities for TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  "CHANGELOG.md"
21
21
  ],
22
22
  "scripts": {
23
- "build": "tsup",
23
+ "build": "tsdown",
24
24
  "test": "vitest run",
25
25
  "test:watch": "vitest watch",
26
26
  "typecheck": "tsc --noEmit",
@@ -29,9 +29,8 @@
29
29
  "release": "pnpm build && pnpm pump && npm publish --access public"
30
30
  },
31
31
  "devDependencies": {
32
- "tsup": "^8.4.0",
33
32
  "typescript": "^5.8.3",
34
- "vitest": "^1.0.0"
33
+ "vitest": "^1.6.1"
35
34
  },
36
35
  "engines": {
37
36
  "node": ">=18"
@@ -57,5 +56,8 @@
57
56
  "publish": true
58
57
  }
59
58
  },
60
- "license": "MIT"
59
+ "license": "MIT",
60
+ "dependencies": {
61
+ "tsdown": "^0.11.13"
62
+ }
61
63
  }
package/dist/index.cjs DELETED
@@ -1,2 +0,0 @@
1
- "use strict";var w=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var O=(r,e)=>{for(var t in e)w(r,t,{get:e[t],enumerable:!0})},F=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of A(e))!V.call(r,n)&&n!==t&&w(r,n,{get:()=>e[n],enumerable:!(o=U(e,n))||o.enumerable});return r};var R=r=>F(w({},"__esModule",{value:!0}),r);var q={};O(q,{SchemaError:()=>d,createScope:()=>_,custom:()=>j,derive:()=>N,executorSymbol:()=>c,findValue:()=>E,findValues:()=>S,getValue:()=>k,isExecutor:()=>v,isLazyExecutor:()=>p,isMainExecutor:()=>h,isReactiveExecutor:()=>f,isStaticExecutor:()=>x,meta:()=>K,metaSymbol:()=>m,preset:()=>B,provide:()=>I,validate:()=>C,validateAsync:()=>z});module.exports=R(q);var c=Symbol.for("@pumped-fn/core/executor"),m=Symbol.for("@pumped-fn/core/meta"),d=class extends Error{issues;constructor(e){super(e[0].message),this.name="SchemaError",this.issues=e}};function g(r,e,t){let o={[c]:"main",factory:(T,a)=>e===void 0?r(a):r(T,a),dependencies:e,metas:t},n={[c]:"lazy",dependencies:void 0,executor:o,factory:void 0,metas:t},s={[c]:"reactive",executor:o,factory:void 0,dependencies:void 0,metas:t},l={[c]:"static",dependencies:void 0,factory:void 0,metas:t,executor:o};return Object.defineProperties(o,{lazy:{value:n,writable:!1,configurable:!1,enumerable:!1},reactive:{value:s,writable:!1,configurable:!1,enumerable:!1},static:{value:l,writable:!1,configurable:!1,enumerable:!1}}),o}function p(r){return r[c]==="lazy"}function f(r){return r[c]==="reactive"}function x(r){return r[c]==="static"}function h(r){return v(r)&&r[c]==="main"}function v(r){return typeof r=="object"&&r!==null&&c in r}function I(r,...e){return g(r,void 0,e)}function N(r,e,...t){return g(e,r,t)}function B(r,e){return{[c]:"preset",value:e,executor:r}}function C(r,e){let t=r["~standard"].validate(e);if("then"in t)throw new Error("validating async is not supported");if(t.issues)throw new d(t.issues);return t.value}async function z(r,e){let t=r["~standard"].validate(e);if("then"in t){let o=await t;if(o.issues)throw new d(o.issues);return o.value}if(t.issues)throw new d(t.issues);return Promise.resolve(t.value)}function j(){return{"~standard":{vendor:"pumped-fn",version:1,validate:r=>({value:r})}}}var K=(r,e)=>{let t=typeof r=="string"?Symbol(r):r,o=n=>({[m]:!0,key:t,schema:e,value:n});return Object.defineProperty(o,"key",{value:t,configurable:!1,enumerable:!1,writable:!1}),Object.defineProperty(o,m,{value:!0,configurable:!1,enumerable:!1,writable:!1}),Object.defineProperties(o,{partial:{value:n=>Object.assign({},o({}),n),configurable:!1,enumerable:!1,writable:!1},some:{value:n=>S(n,o),configurable:!1,enumerable:!1,writable:!1},find:{value:n=>E(n,o),configurable:!1,enumerable:!1,writable:!1},get:{value:n=>k(E(n,o)),configurable:!1,enumerable:!1,writable:!1}}),o};function k(r){return C(r.schema,r.value)}function S(r,e){return r?(Array.isArray(r)?r:r.metas??[]).filter(n=>n.key===e.key).map(n=>k(n)):[]}function E(r,e){return S(r,e).at(0)}function L(r){return p(r)||f(r)||x(r)?r.executor:r}var M=class{disposed=!1;cache=new Map;cleanups=new Map;onUpdates=new Map;constructor(...e){for(let t of e){let o=this["~makeAccessor"](t.executor);this.cache.set(t.executor,{accessor:o,value:{kind:"resolved",value:t.value}})}}async"~triggerCleanup"(e){let t=this.cleanups.get(e);if(t)for(let o of Array.from(t.values()).reverse())await o()}async"~triggerUpdate"(e){let t=this.cache.get(e);if(!t)throw new Error("Executor is not yet resolved");let o=this.onUpdates.get(e);if(o)for(let n of Array.from(o.values()))h(n)?(this.cleanups.has(n)&&this["~triggerCleanup"](n),await this.cache.get(n).accessor.resolve(!0),this.onUpdates.has(n)&&await this["~triggerUpdate"](n)):await n(t.accessor)}async"~resolveExecutor"(e,t){let o=L(e),n=this["~makeAccessor"](o);if(p(e))return n;if(f(e)){let s=this.onUpdates.get(e.executor)??new Set;this.onUpdates.set(e.executor,s),s.add(t)}return await n.resolve(!1),x(e)?n:n.get()}async"~resolveDependencies"(e,t){if(e===void 0)return;if(v(e))return this["~resolveExecutor"](e,t);if(Array.isArray(e))return await Promise.all(e.map(n=>this["~resolveDependencies"](n,t)));let o={};for(let n of Object.keys(e)){let s=e[n],l=await this["~resolveDependencies"](s,t);o[n]=l}return o}"~ensureNotDisposed"(){if(this.disposed)throw new Error("Scope is disposed")}"~makeAccessor"(e){let t=p(e)||f(e)||x(e)?e.executor:e,o=this.cache.get(t);if(o)return o.accessor;let n={},s=t.factory,l={cleanup:a=>{let y=this.cleanups.get(t)??new Set;this.cleanups.set(t,y),y.add(a)},release:async()=>this.release(t),scope:this},T=a=>{this["~ensureNotDisposed"]();let u=this.cache.get(t)?.value;if(u&&!a){if(u.kind==="resolved")return Promise.resolve(u.value);if(u.kind==="rejected")throw u.error;return u.promise}let b=new Promise((D,P)=>{this["~resolveDependencies"](t.dependencies,t).then(i=>s(i,l)).then(i=>{this.cache.set(t,{accessor:n,value:{kind:"resolved",value:i}}),D(i)}).catch(i=>{this.cache.set(t,{accessor:n,value:{kind:"rejected",error:i}}),P(i)})});return this.cache.set(t,{accessor:n,value:{kind:"resolving",promise:b}}),b};return Object.assign(n,{get:()=>{this["~ensureNotDisposed"]();let a=this.cache.get(t)?.value;if(!a||a.kind==="resolving")throw new Error("Executor is not resolved");if(a.kind==="rejected")throw a.error;return a.value},lookup:()=>(this["~ensureNotDisposed"](),this.cache.get(t)?.value),metas:e.metas,resolve:T,release:async(a=!1)=>{this.release(t,a)},update:a=>this.update(t,a),subscribe:a=>(this["~ensureNotDisposed"](),this.onUpdate(t,a))})}accessor(e){return this["~ensureNotDisposed"](),this["~makeAccessor"](e)}async resolve(e,t=!1){this["~ensureNotDisposed"]();let o=this["~makeAccessor"](e);return await o.resolve(t),o.get()}async resolveAccessor(e,t=!1){this["~ensureNotDisposed"]();let o=this["~makeAccessor"](e);return await o.resolve(t),o}async update(e,t){this["~ensureNotDisposed"](),this["~triggerCleanup"](e);let o=this["~makeAccessor"](e);if(typeof t=="function"){let s=t(o.get());this.cache.set(e,{accessor:o,value:{kind:"resolved",value:s}})}else this.cache.set(e,{accessor:o,value:{kind:"resolved",value:t}});await this["~triggerUpdate"](e)}async reset(e){if(this.disposed)throw new Error("Scope is disposed");await this.release(e,!0),await this.resolve(e,!0)}async release(e,t=!1){if(this["~ensureNotDisposed"](),!this.cache.get(e)&&!t)throw new Error("Executor is not yet resolved");await this["~triggerCleanup"](e);let n=this.onUpdates.get(e);if(n){for(let s of Array.from(n.values()))h(s)&&await this.release(s,!0);this.onUpdates.delete(e)}this.cache.delete(e)}async dispose(){this["~ensureNotDisposed"]();let e=this.cache.keys();for(let t of e)await this.release(t,!0);this.disposed=!0,this.cache.clear(),this.cleanups.clear()}onUpdate(e,t){this["~ensureNotDisposed"]();let o=this.onUpdates.get(e)??new Set;return this.onUpdates.set(e,o),o.add(t),()=>{this["~ensureNotDisposed"]();let n=this.onUpdates.get(e);n&&(n.delete(t),n.size===0&&this.onUpdates.delete(e))}}};function _(...r){return new M(...r)}0&&(module.exports={SchemaError,createScope,custom,derive,executorSymbol,findValue,findValues,getValue,isExecutor,isLazyExecutor,isMainExecutor,isReactiveExecutor,isStaticExecutor,meta,metaSymbol,preset,provide,validate,validateAsync});
2
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/types.ts","../src/executor.ts","../src/ssch.ts","../src/meta.ts","../src/scope.ts"],"sourcesContent":["export * from \"./executor\";\nexport * from \"./meta\";\nexport * from \"./scope\";\nexport * from \"./types\";\nexport * from \"./ssch\";\n","export const executorSymbol = Symbol.for(\"@pumped-fn/core/executor\");\nexport const metaSymbol = Symbol.for(\"@pumped-fn/core/meta\");\n\nexport interface StandardSchemaV1<Input = unknown, Output = Input> {\n readonly \"~standard\": StandardSchemaV1.Props<Input, Output>;\n}\n\nexport declare namespace StandardSchemaV1 {\n export interface Props<Input = unknown, Output = Input> {\n readonly version: 1;\n readonly vendor: string;\n readonly validate: (\n value: unknown\n ) => Result<Output> | Promise<Result<Output>>;\n readonly types?: Types<Input, Output> | undefined;\n }\n\n export type Result<Output> = SuccessResult<Output> | FailureResult;\n\n export interface SuccessResult<Output> {\n readonly value: Output;\n readonly issues?: undefined;\n }\n\n export interface FailureResult {\n readonly issues: ReadonlyArray<Issue>;\n }\n\n export interface Issue {\n readonly message: string;\n readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;\n }\n\n export interface PathSegment {\n readonly key: PropertyKey;\n }\n\n export interface Types<Input = unknown, Output = Input> {\n readonly input: Input;\n readonly output: Output;\n }\n\n export type InferInput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"input\"];\n\n export type InferOutput<Schema extends StandardSchemaV1> = NonNullable<\n Schema[\"~standard\"][\"types\"]\n >[\"output\"];\n}\n\nexport class SchemaError extends Error {\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;\n\n constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>) {\n super(issues[0].message);\n this.name = \"SchemaError\";\n this.issues = issues;\n }\n}\n\nexport declare namespace Meta {\n export interface MetaContainer {\n metas: Meta[] | undefined;\n }\n\n export interface Meta<V = unknown> {\n readonly [metaSymbol]: true;\n readonly key: string | symbol;\n readonly schema: StandardSchemaV1<V>;\n readonly value: V;\n }\n\n export interface MetaFn<V> {\n (value: V): Meta<V>;\n readonly key: string | symbol;\n partial: <D extends Partial<V>>(d: D) => D;\n some: (source: MetaContainer | Meta[] | undefined) => V[];\n find: (source: MetaContainer | Meta[] | undefined) => V | undefined;\n get: (source: MetaContainer | Meta[] | undefined) => V;\n }\n}\n\nexport declare namespace Core {\n export type Output<T> = T | Promise<T>;\n\n export type NoDependencyFn<T> = (scope: Controller) => Output<T>;\n export type DependentFn<T, D> = (\n dependencies: D,\n scope: Controller\n ) => Output<T>;\n export type RecordLike = Record<string, unknown>;\n export type UExecutor = BaseExecutor<unknown>;\n\n export type Cleanup = () => void | Promise<void>;\n\n export type Controller = {\n cleanup: (cleanup: Cleanup) => void;\n release: () => Promise<void>;\n scope: Scope;\n };\n\n export type Kind = \"main\" | \"reactive\" | \"lazy\" | \"static\";\n\n export interface BaseExecutor<T> extends Meta.MetaContainer {\n [executorSymbol]: Kind;\n factory: NoDependencyFn<T> | DependentFn<T, unknown> | undefined;\n dependencies:\n | undefined\n | UExecutor\n | Array<UExecutor>\n | Record<string, UExecutor>;\n }\n\n export interface Executor<T> extends BaseExecutor<T> {\n [executorSymbol]: \"main\";\n factory: NoDependencyFn<T> | DependentFn<T, unknown>;\n\n /** Return an executor controller without resolving Executor */\n readonly lazy: Lazy<T>;\n\n /** Return an resolved executor, and mark the user to be reactived for future changes */\n readonly reactive: Reactive<T>;\n\n /** Return an resolved executor with its controller */\n readonly static: Static<T>;\n }\n\n export interface Reactive<T> extends BaseExecutor<T> {\n [executorSymbol]: \"reactive\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Lazy<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"lazy\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Static<T> extends BaseExecutor<Accessor<T>> {\n [executorSymbol]: \"static\";\n factory: undefined;\n readonly executor: Executor<T>;\n }\n\n export interface Accessor<T> extends Meta.MetaContainer {\n lookup(): T;\n get(): T;\n resolve(force?: boolean): Promise<T>;\n release(soft?: boolean): Promise<void>;\n update(updateFn: T | ((current: T) => T)): Promise<void>;\n subscribe(callback: (value: T) => void): Cleanup;\n }\n\n export interface Preset<T> {\n [executorSymbol]: \"preset\";\n executor: Executor<T>;\n value: T;\n }\n\n export type InferOutput<T> = T extends Executor<infer U> | Reactive<infer U>\n ? Awaited<U>\n : T extends Lazy<infer U> | Static<infer U>\n ? Accessor<Awaited<U>>\n : never;\n\n export interface Scope {\n accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;\n\n resolve<T>(executor: Core.Executor<T>): Promise<T>;\n resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;\n\n update<T>(\n executor: Executor<T>,\n updateFn: T | ((current: T) => T)\n ): Promise<void>;\n\n reset<T>(executor: Executor<T>): Promise<void>;\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 // onRelease<T>(executor: Executor<T>, callback: () => void): () => void;\n }\n}\n","import { Core, executorSymbol, Meta } from \"./types\";\n\nfunction createExecutor<T>(\n factory: Core.NoDependencyFn<T> | Core.DependentFn<T, unknown>,\n dependencies:\n | undefined\n | Core.UExecutor\n | Array<Core.UExecutor>\n | Record<string, Core.UExecutor>,\n metas: Meta.Meta[] | undefined\n): Core.Executor<T> {\n const executor = {\n [executorSymbol]: \"main\",\n factory: (_: unknown, controller: Core.Controller) => {\n if (dependencies === undefined) {\n const f = factory as Core.NoDependencyFn<T>;\n return f(controller);\n }\n\n const f = factory as Core.DependentFn<T, unknown>;\n return f(_, controller);\n },\n dependencies,\n metas: metas,\n } as unknown as Core.Executor<T>;\n\n const lazyExecutor = {\n [executorSymbol]: \"lazy\",\n dependencies: undefined,\n executor,\n factory: undefined,\n metas: metas,\n } satisfies Core.Lazy<T>;\n\n const reactiveExecutor = {\n [executorSymbol]: \"reactive\",\n executor,\n factory: undefined,\n dependencies: undefined,\n metas: metas,\n } satisfies Core.Reactive<T>;\n\n const staticExecutor = {\n [executorSymbol]: \"static\",\n dependencies: undefined,\n factory: undefined,\n metas: metas,\n executor,\n } satisfies Core.Static<T>;\n\n Object.defineProperties(executor, {\n lazy: {\n value: lazyExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n reactive: {\n value: reactiveExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n static: {\n value: staticExecutor,\n writable: false,\n configurable: false,\n enumerable: false,\n },\n });\n\n return executor;\n}\n\nexport function isLazyExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Lazy<unknown> {\n return executor[executorSymbol] === \"lazy\";\n}\n\nexport function isReactiveExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Reactive<unknown> {\n return executor[executorSymbol] === \"reactive\";\n}\n\nexport function isStaticExecutor(\n executor: Core.BaseExecutor<unknown>\n): executor is Core.Static<unknown> {\n return executor[executorSymbol] === \"static\";\n}\n\nexport function isMainExecutor(\n executor: unknown\n): executor is Core.Executor<unknown> {\n return isExecutor(executor) && executor[executorSymbol] === \"main\";\n}\n\nexport function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T> {\n return typeof input === \"object\" && input !== null && executorSymbol in input;\n}\n\nexport function provide<T>(\n factory: Core.NoDependencyFn<T>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(factory, undefined, metas);\n}\n\nexport function derive<T, D extends Core.BaseExecutor<unknown>>(\n dependencies: D,\n factory: Core.DependentFn<T, Core.InferOutput<D>>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<\n T,\n D extends\n | ReadonlyArray<Core.BaseExecutor<unknown>>\n | Record<string, Core.BaseExecutor<unknown>>\n>(\n dependencies: { [K in keyof D]: D[K] },\n factory: Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T>;\n\nexport function derive<T, D>(\n pdependencies:\n | Core.BaseExecutor<D>\n | Array<Core.BaseExecutor<D>>\n | Record<string, Core.BaseExecutor<unknown>>,\n pfactory:\n | Core.DependentFn<T, Core.InferOutput<D>>\n | Core.DependentFn<T, { [K in keyof D]: Core.InferOutput<D[K]> }>,\n ...metas: Meta.Meta[]\n): Core.Executor<T> {\n return createExecutor(pfactory as any, pdependencies, metas);\n}\n\nexport function preset<T>(e: Core.Executor<T>, v: T): Core.Preset<T> {\n return {\n [executorSymbol]: \"preset\",\n value: v,\n executor: e,\n };\n}\n","import { SchemaError, StandardSchemaV1 } from \"./types\";\n\nexport function validate<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Awaited<StandardSchemaV1.InferOutput<TSchema>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n throw new Error(\"validating async is not supported\");\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n return result.value as any;\n}\n\nexport async function validateAsync<TSchema extends StandardSchemaV1>(\n schema: TSchema,\n data: unknown\n): Promise<Awaited<StandardSchemaV1.InferOutput<TSchema>>> {\n const result = schema[\"~standard\"].validate(data);\n\n if (\"then\" in result) {\n const result_1 = await result;\n if (result_1.issues) {\n throw new SchemaError(result_1.issues);\n }\n return result_1.value as any;\n }\n\n if (result.issues) {\n throw new SchemaError(result.issues);\n }\n\n return Promise.resolve(result.value as any);\n}\n\nexport function custom<T>(): StandardSchemaV1<T, T> {\n return {\n \"~standard\": {\n vendor: \"pumped-fn\",\n version: 1,\n validate: (value) => {\n return { value: value as T };\n },\n },\n };\n}\n","import { validate } from \"./ssch\";\nimport { metaSymbol, StandardSchemaV1, type Meta } from \"./types\";\n\nexport const meta = <V>(\n key: string | symbol,\n schema: StandardSchemaV1<V>\n): Meta.MetaFn<V> => {\n const _key = typeof key === \"string\" ? Symbol(key) : key;\n\n const fn = (value: V) =>\n ({\n [metaSymbol]: true,\n key: _key,\n schema,\n value,\n } as unknown as Meta.MetaFn<V>);\n\n Object.defineProperty(fn, \"key\", {\n value: _key,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperty(fn, metaSymbol, {\n value: true,\n configurable: false,\n enumerable: false,\n writable: false,\n });\n\n Object.defineProperties(fn, {\n partial: {\n value: (d: Partial<V>) => {\n return Object.assign({}, fn({} as V), d);\n },\n configurable: false,\n enumerable: false,\n writable: false,\n },\n some: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValues(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n find: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n findValue(source, fn as unknown as Meta.MetaFn<unknown>),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n get: {\n value: (source: Meta.MetaContainer | Meta.Meta[] | undefined) =>\n getValue(\n findValue(\n source,\n fn as unknown as Meta.MetaFn<unknown>\n ) as Meta.Meta<V>\n ),\n configurable: false,\n enumerable: false,\n writable: false,\n },\n });\n\n return fn as any;\n};\n\nexport function getValue<V>(meta: Meta.Meta<V>) {\n return validate(meta.schema, meta.value);\n}\n\nexport function findValues<V = unknown>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V[] {\n if (!executor) return [];\n\n const metas = Array.isArray(executor) ? executor : executor.metas ?? [];\n\n const maybeMeta = metas.filter((m) => m.key === meta.key);\n return maybeMeta.map((m) => getValue(m as Meta.Meta<V>));\n}\n\nexport function findValue<V>(\n executor: Meta.MetaContainer | Meta.Meta[] | undefined,\n meta: Meta.MetaFn<V>\n): V | undefined {\n const values = findValues(executor, meta);\n return values.at(0);\n}\n","import {\n isLazyExecutor,\n isReactiveExecutor,\n isStaticExecutor,\n isMainExecutor,\n isExecutor,\n} from \"./executor\";\nimport { Core } from \"./types\";\n\ntype CacheEntry = {\n accessor: Core.Accessor<unknown>;\n value:\n | { kind: \"resolving\"; promise: Promise<unknown> }\n | { kind: \"resolved\"; value: unknown }\n | { kind: \"rejected\"; error: unknown };\n};\n\ntype UE = Core.Executor<unknown>;\ntype OnUpdateFn = (accessor: Core.Accessor<unknown>) => void | Promise<void>;\n\nfunction getExecutor(e: Core.UExecutor): Core.Executor<unknown> {\n if (isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)) {\n return e.executor;\n }\n\n return e as Core.Executor<unknown>;\n}\n\nclass Scope implements Core.Scope {\n private disposed: boolean = false;\n private cache: Map<UE, CacheEntry> = new Map();\n private cleanups = new Map<UE, Set<Core.Cleanup>>();\n private onUpdates = new Map<UE, Set<OnUpdateFn | UE>>();\n\n constructor(...presets: Core.Preset<unknown>[]) {\n for (const preset of presets) {\n const accessor = this[\"~makeAccessor\"](preset.executor);\n\n this.cache.set(preset.executor, {\n accessor,\n value: { kind: \"resolved\", value: preset.value },\n });\n }\n }\n\n private async \"~triggerCleanup\"(e: UE): Promise<void> {\n const cs = this.cleanups.get(e);\n if (cs) {\n for (const c of Array.from(cs.values()).reverse()) {\n await c();\n }\n }\n }\n\n private async \"~triggerUpdate\"(e: UE): Promise<void> {\n const ce = this.cache.get(e);\n if (!ce) {\n throw new Error(\"Executor is not yet resolved\");\n }\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n for (const t of Array.from(ou.values())) {\n if (isMainExecutor(t)) {\n if (this.cleanups.has(t)) {\n this[\"~triggerCleanup\"](t);\n }\n\n const a = this.cache.get(t);\n await a!.accessor.resolve(true);\n\n if (this.onUpdates.has(t)) {\n await this[\"~triggerUpdate\"](t);\n }\n } else {\n await t(ce.accessor);\n }\n }\n }\n }\n\n private async \"~resolveExecutor\"(\n ie: Core.UExecutor,\n ref: UE\n ): Promise<unknown> {\n const e = getExecutor(ie);\n const a = this[\"~makeAccessor\"](e);\n\n if (isLazyExecutor(ie)) {\n return a;\n }\n\n if (isReactiveExecutor(ie)) {\n const c = this.onUpdates.get(ie.executor) ?? new Set();\n this.onUpdates.set(ie.executor, c);\n c.add(ref);\n }\n\n await a.resolve(false);\n if (isStaticExecutor(ie)) {\n return a;\n }\n\n return a.get();\n }\n\n private async \"~resolveDependencies\"(\n ie:\n | undefined\n | Core.UExecutor\n | Core.UExecutor[]\n | Record<string, Core.UExecutor>,\n ref: UE\n ): Promise<undefined | unknown | unknown[] | Record<string, unknown>> {\n if (ie === undefined) {\n return undefined;\n }\n\n if (isExecutor(ie)) {\n return this[\"~resolveExecutor\"](ie, ref);\n }\n\n if (Array.isArray(ie)) {\n return await Promise.all(\n ie.map((item) => this[\"~resolveDependencies\"](item, ref))\n );\n }\n\n const r: Record<string, unknown> = {};\n for (const k of Object.keys(ie)) {\n const t = ie[k];\n const rd = await this[\"~resolveDependencies\"](t, ref);\n\n r[k] = rd;\n }\n\n return r;\n }\n\n private \"~ensureNotDisposed\"(): void {\n if (this.disposed) {\n throw new Error(\"Scope is disposed\");\n }\n }\n\n private \"~makeAccessor\"(e: Core.UExecutor): Core.Accessor<unknown> {\n const requestor =\n isLazyExecutor(e) || isReactiveExecutor(e) || isStaticExecutor(e)\n ? e.executor\n : (e as UE);\n\n const cachedAccessor = this.cache.get(requestor);\n if (cachedAccessor) {\n return cachedAccessor.accessor;\n }\n\n const accessor = {} as Core.Accessor<unknown>;\n const factory = requestor.factory;\n const controller = {\n cleanup: (cleanup: Core.Cleanup) => {\n const currentSet = this.cleanups.get(requestor) ?? new Set();\n this.cleanups.set(requestor, currentSet);\n\n currentSet.add(cleanup);\n },\n release: async () => this.release(requestor),\n scope: this,\n };\n\n const resolve = (force: boolean): Promise<unknown> => {\n this[\"~ensureNotDisposed\"]();\n\n const entry = this.cache.get(requestor)!;\n const cached = entry?.value;\n\n if (cached && !force) {\n if (cached.kind === \"resolved\") {\n return Promise.resolve(cached.value);\n } else if (cached.kind === \"rejected\") {\n throw cached.error;\n } else {\n return cached.promise;\n }\n }\n\n const promise = new Promise((resolve, reject) => {\n this[\"~resolveDependencies\"](requestor.dependencies, requestor)\n .then((dependencies) => factory(dependencies as any, controller))\n .then((result) => {\n this.cache.set(requestor, {\n accessor,\n value: { kind: \"resolved\", value: result },\n });\n\n resolve(result);\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: \"resolving\", 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 === \"resolving\") {\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 return this.cache.get(requestor)?.value;\n },\n metas: e.metas,\n resolve,\n release: async (soft: boolean = false) => {\n this.release(requestor, soft);\n },\n update: (updateFn: unknown | ((current: unknown) => unknown)) => {\n return this.update(requestor, updateFn);\n },\n subscribe: (cb: (value: unknown) => void) => {\n this[\"~ensureNotDisposed\"]();\n return this.onUpdate(requestor, cb);\n },\n } satisfies Partial<Core.Accessor<unknown>>);\n }\n\n accessor<T>(executor: Core.Executor<T>): Core.Accessor<T> {\n this[\"~ensureNotDisposed\"]();\n return this[\"~makeAccessor\"](executor) as Core.Accessor<T>;\n }\n\n async resolve<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<T> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor.get() as T;\n }\n\n async resolveAccessor<T>(\n executor: Core.Executor<T>,\n force: boolean = false\n ): Promise<Core.Accessor<T>> {\n this[\"~ensureNotDisposed\"]();\n const accessor = this[\"~makeAccessor\"](executor);\n await accessor.resolve(force);\n return accessor as Core.Accessor<T>;\n }\n\n async update<T>(\n e: Core.Executor<T>,\n u: T | ((current: T) => T)\n ): Promise<void> {\n this[\"~ensureNotDisposed\"]();\n this[\"~triggerCleanup\"](e);\n const accessor = this[\"~makeAccessor\"](e);\n\n if (typeof u === \"function\") {\n const fn = u as (current: T) => T;\n const n = fn(accessor.get() as T);\n this.cache.set(e, {\n accessor,\n value: { kind: \"resolved\", value: n },\n });\n } else {\n this.cache.set(e, {\n accessor,\n value: { kind: \"resolved\", value: u },\n });\n }\n\n await this[\"~triggerUpdate\"](e);\n }\n\n async reset<T>(executor: Core.Executor<T>): Promise<void> {\n if (this.disposed) {\n throw new Error(\"Scope is disposed\");\n }\n\n await this.release(executor, true);\n await this.resolve(executor, true);\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\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 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 }\n\n onUpdate<T>(\n e: Core.Executor<T>,\n cb: (a: Core.Accessor<T>) => void | Promise<void>\n ): Core.Cleanup {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e) ?? new Set();\n this.onUpdates.set(e, ou);\n ou.add(cb as any);\n\n return () => {\n this[\"~ensureNotDisposed\"]();\n\n const ou = this.onUpdates.get(e);\n if (ou) {\n ou.delete(cb as any);\n if (ou.size === 0) {\n this.onUpdates.delete(e);\n }\n }\n };\n }\n}\n\nexport function createScope(...presets: Core.Preset<unknown>[]): Core.Scope {\n return new Scope(...presets);\n}\n"],"mappings":"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","names":["index_exports","__export","SchemaError","createScope","custom","derive","executorSymbol","findValue","findValues","getValue","isExecutor","isLazyExecutor","isMainExecutor","isReactiveExecutor","isStaticExecutor","meta","metaSymbol","preset","provide","validate","validateAsync","__toCommonJS","executorSymbol","metaSymbol","SchemaError","issues","createExecutor","factory","dependencies","metas","executor","executorSymbol","_","controller","lazyExecutor","reactiveExecutor","staticExecutor","isLazyExecutor","isReactiveExecutor","isStaticExecutor","isMainExecutor","isExecutor","input","provide","derive","pdependencies","pfactory","preset","e","v","validate","schema","data","result","SchemaError","validateAsync","result_1","custom","value","meta","key","schema","_key","fn","value","metaSymbol","d","source","findValues","findValue","getValue","validate","executor","m","getExecutor","e","isLazyExecutor","isReactiveExecutor","isStaticExecutor","Scope","presets","preset","accessor","cs","c","ce","ou","t","isMainExecutor","ie","ref","a","isExecutor","item","r","k","rd","requestor","cachedAccessor","factory","controller","cleanup","currentSet","resolve","force","cached","promise","reject","dependencies","result","error","cacheEntry","soft","updateFn","cb","executor","u","n","s","currents","current","createScope"]}
package/dist/index.d.cts DELETED
@@ -1,152 +0,0 @@
1
- declare const executorSymbol: unique symbol;
2
- declare const metaSymbol: unique symbol;
3
- interface StandardSchemaV1<Input = unknown, Output = Input> {
4
- readonly "~standard": StandardSchemaV1.Props<Input, Output>;
5
- }
6
- declare namespace StandardSchemaV1 {
7
- interface Props<Input = unknown, Output = Input> {
8
- readonly version: 1;
9
- readonly vendor: string;
10
- readonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;
11
- readonly types?: Types<Input, Output> | undefined;
12
- }
13
- type Result<Output> = SuccessResult<Output> | FailureResult;
14
- interface SuccessResult<Output> {
15
- readonly value: Output;
16
- readonly issues?: undefined;
17
- }
18
- interface FailureResult {
19
- readonly issues: ReadonlyArray<Issue>;
20
- }
21
- interface Issue {
22
- readonly message: string;
23
- readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
24
- }
25
- interface PathSegment {
26
- readonly key: PropertyKey;
27
- }
28
- interface Types<Input = unknown, Output = Input> {
29
- readonly input: Input;
30
- readonly output: Output;
31
- }
32
- type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["input"];
33
- type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema["~standard"]["types"]>["output"];
34
- }
35
- declare class SchemaError extends Error {
36
- readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
37
- constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>);
38
- }
39
- declare namespace Meta {
40
- interface MetaContainer {
41
- metas: Meta[] | undefined;
42
- }
43
- interface Meta<V = unknown> {
44
- readonly [metaSymbol]: true;
45
- readonly key: string | symbol;
46
- readonly schema: StandardSchemaV1<V>;
47
- readonly value: V;
48
- }
49
- interface MetaFn<V> {
50
- (value: V): Meta<V>;
51
- readonly key: string | symbol;
52
- partial: <D extends Partial<V>>(d: D) => D;
53
- some: (source: MetaContainer | Meta[] | undefined) => V[];
54
- find: (source: MetaContainer | Meta[] | undefined) => V | undefined;
55
- get: (source: MetaContainer | Meta[] | undefined) => V;
56
- }
57
- }
58
- declare namespace Core {
59
- type Output<T> = T | Promise<T>;
60
- type NoDependencyFn<T> = (scope: Controller) => Output<T>;
61
- type DependentFn<T, D> = (dependencies: D, scope: Controller) => Output<T>;
62
- type RecordLike = Record<string, unknown>;
63
- type UExecutor = BaseExecutor<unknown>;
64
- type Cleanup = () => void | Promise<void>;
65
- type Controller = {
66
- cleanup: (cleanup: Cleanup) => void;
67
- release: () => Promise<void>;
68
- scope: Scope;
69
- };
70
- type Kind = "main" | "reactive" | "lazy" | "static";
71
- interface BaseExecutor<T> extends Meta.MetaContainer {
72
- [executorSymbol]: Kind;
73
- factory: NoDependencyFn<T> | DependentFn<T, unknown> | undefined;
74
- dependencies: undefined | UExecutor | Array<UExecutor> | Record<string, UExecutor>;
75
- }
76
- interface Executor<T> extends BaseExecutor<T> {
77
- [executorSymbol]: "main";
78
- factory: NoDependencyFn<T> | DependentFn<T, unknown>;
79
- /** Return an executor controller without resolving Executor */
80
- readonly lazy: Lazy<T>;
81
- /** Return an resolved executor, and mark the user to be reactived for future changes */
82
- readonly reactive: Reactive<T>;
83
- /** Return an resolved executor with its controller */
84
- readonly static: Static<T>;
85
- }
86
- interface Reactive<T> extends BaseExecutor<T> {
87
- [executorSymbol]: "reactive";
88
- factory: undefined;
89
- readonly executor: Executor<T>;
90
- }
91
- interface Lazy<T> extends BaseExecutor<Accessor<T>> {
92
- [executorSymbol]: "lazy";
93
- factory: undefined;
94
- readonly executor: Executor<T>;
95
- }
96
- interface Static<T> extends BaseExecutor<Accessor<T>> {
97
- [executorSymbol]: "static";
98
- factory: undefined;
99
- readonly executor: Executor<T>;
100
- }
101
- interface Accessor<T> extends Meta.MetaContainer {
102
- lookup(): T;
103
- get(): T;
104
- resolve(force?: boolean): Promise<T>;
105
- release(soft?: boolean): Promise<void>;
106
- update(updateFn: T | ((current: T) => T)): Promise<void>;
107
- subscribe(callback: (value: T) => void): Cleanup;
108
- }
109
- interface Preset<T> {
110
- [executorSymbol]: "preset";
111
- executor: Executor<T>;
112
- value: T;
113
- }
114
- type InferOutput<T> = T extends Executor<infer U> | Reactive<infer U> ? Awaited<U> : T extends Lazy<infer U> | Static<infer U> ? Accessor<Awaited<U>> : never;
115
- interface Scope {
116
- accessor<T>(executor: Core.Executor<T>, eager?: boolean): Accessor<T>;
117
- resolve<T>(executor: Core.Executor<T>): Promise<T>;
118
- resolveAccessor<T>(executor: Core.Executor<T>): Promise<Accessor<T>>;
119
- update<T>(executor: Executor<T>, updateFn: T | ((current: T) => T)): Promise<void>;
120
- reset<T>(executor: Executor<T>): Promise<void>;
121
- release(executor: Executor<any>, soft?: boolean): Promise<void>;
122
- dispose(): Promise<void>;
123
- onUpdate<T>(executor: Executor<T>, callback: (accessor: Accessor<T>) => void): Cleanup;
124
- }
125
- }
126
-
127
- declare function isLazyExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Lazy<unknown>;
128
- declare function isReactiveExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Reactive<unknown>;
129
- declare function isStaticExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Static<unknown>;
130
- declare function isMainExecutor(executor: unknown): executor is Core.Executor<unknown>;
131
- declare function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T>;
132
- declare function provide<T>(factory: Core.NoDependencyFn<T>, ...metas: Meta.Meta[]): Core.Executor<T>;
133
- declare function derive<T, D extends Core.BaseExecutor<unknown>>(dependencies: D, factory: Core.DependentFn<T, Core.InferOutput<D>>, ...metas: Meta.Meta[]): Core.Executor<T>;
134
- declare function derive<T, D extends ReadonlyArray<Core.BaseExecutor<unknown>> | Record<string, Core.BaseExecutor<unknown>>>(dependencies: {
135
- [K in keyof D]: D[K];
136
- }, factory: Core.DependentFn<T, {
137
- [K in keyof D]: Core.InferOutput<D[K]>;
138
- }>, ...metas: Meta.Meta[]): Core.Executor<T>;
139
- declare function preset<T>(e: Core.Executor<T>, v: T): Core.Preset<T>;
140
-
141
- declare const meta: <V>(key: string | symbol, schema: StandardSchemaV1<V>) => Meta.MetaFn<V>;
142
- declare function getValue<V>(meta: Meta.Meta<V>): Awaited<V>;
143
- declare function findValues<V = unknown>(executor: Meta.MetaContainer | Meta.Meta[] | undefined, meta: Meta.MetaFn<V>): V[];
144
- declare function findValue<V>(executor: Meta.MetaContainer | Meta.Meta[] | undefined, meta: Meta.MetaFn<V>): V | undefined;
145
-
146
- declare function createScope(...presets: Core.Preset<unknown>[]): Core.Scope;
147
-
148
- declare function validate<TSchema extends StandardSchemaV1>(schema: TSchema, data: unknown): Awaited<StandardSchemaV1.InferOutput<TSchema>>;
149
- declare function validateAsync<TSchema extends StandardSchemaV1>(schema: TSchema, data: unknown): Promise<Awaited<StandardSchemaV1.InferOutput<TSchema>>>;
150
- declare function custom<T>(): StandardSchemaV1<T, T>;
151
-
152
- export { Core, Meta, SchemaError, StandardSchemaV1, createScope, custom, derive, executorSymbol, findValue, findValues, getValue, isExecutor, isLazyExecutor, isMainExecutor, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, preset, provide, validate, validateAsync };