@pumped-fn/core-next 0.5.39 → 0.5.41
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 +15 -0
- package/README.md +72 -5
- package/dist/index.d.ts +141 -122
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +420 -1
- package/dist/index.js.map +1 -1
- package/package.json +8 -6
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -152
package/CHANGELOG.md
CHANGED
@@ -2,6 +2,21 @@
|
|
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.41](https://github.com/pumped-fn/pumped-fn/compare/@pumped-fn/next@0.5.39...@pumped-fn/next@0.5.41) (2025-05-23)
|
6
|
+
|
7
|
+
|
8
|
+
### Features
|
9
|
+
|
10
|
+
* added preset to scope, now preset can be used to test ([f501c68](https://github.com/pumped-fn/pumped-fn/commit/f501c68588402624c545649c7da51ecbd502875f))
|
11
|
+
* removed reset API ([36c5e77](https://github.com/pumped-fn/pumped-fn/commit/36c5e774073b7a94573cebbe7a82a88f64e7a384))
|
12
|
+
|
13
|
+
## [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)
|
14
|
+
|
15
|
+
|
16
|
+
### Features
|
17
|
+
|
18
|
+
* added preset to scope, now preset can be used to test ([f501c68](https://github.com/pumped-fn/pumped-fn/commit/f501c68588402624c545649c7da51ecbd502875f))
|
19
|
+
|
5
20
|
## [0.5.39](https://github.com/pumped-fn/pumped-fn/compare/@pumped-fn/next@0.5.38...@pumped-fn/next@0.5.39) (2025-05-15)
|
6
21
|
|
7
22
|
|
package/README.md
CHANGED
@@ -1,14 +1,81 @@
|
|
1
1
|
# Pumped fn
|
2
2
|
|
3
|
-
|
3
|
+
Minimal set of library providing functional encapsulation.
|
4
4
|
|
5
|
-
#
|
5
|
+
# Usages
|
6
|
+
- Assume all of those functions are from `@pumped-fn/core-next`
|
7
|
+
- Operator are all directly exported from the package
|
8
|
+
- Always try to infer instead of explicit declaration
|
9
|
+
|
10
|
+
## Container and resolver
|
11
|
+
Fns helps you create multiple containers. Those are lazy by default and will only resolve via a scope
|
12
|
+
|
13
|
+
A scope is a simple facility created using `createScope`
|
14
|
+
|
15
|
+
## Scope
|
16
|
+
|
17
|
+
- `scope#resolve(executor)` will resolve to a `Promise<value>`
|
18
|
+
- `scope#accessor(executor)` will return a Core.Accessor which can help to `get`, `resolve`, `lookup` or `subscribe`
|
19
|
+
|
20
|
+
## Executor
|
21
|
+
Executor is the container. Executor has certain methods letting you declare its as dependencies in a various way
|
22
|
+
- as it is, will return the value, without being interactive
|
23
|
+
- reactive, will return the accessor, and resolve the value if it's yet resolved
|
24
|
+
- lazy, will return the accessor, without resolving it
|
25
|
+
- static, will resolve to the value
|
26
|
+
|
27
|
+
## Usage
|
6
28
|
|
7
29
|
```typescript
|
8
|
-
|
30
|
+
const counter = provide(() => 0) // Core.Executor<number>
|
31
|
+
|
32
|
+
// different usage of derive, look at the argument of the callback
|
33
|
+
const derivedValue = derive(counter, (counter) => { /* code */ })
|
34
|
+
const derivedValue = derive({ counter }, ({ counter }) => { /* code */ })
|
35
|
+
const derivedValue = derive([counter], ([counter]) => { /* code */ })
|
36
|
+
```
|
37
|
+
|
38
|
+
```typescript
|
39
|
+
// container can also be reactive, the factory function will be recalled as those dependencies change
|
40
|
+
|
41
|
+
const derivedValue = derive(counter.reactive, (counter) => /* this code will be called whenever counter got updated */)
|
9
42
|
|
10
|
-
|
11
|
-
|
43
|
+
// to update counter
|
44
|
+
scope.update(counter, /* new value */)
|
45
|
+
```
|
46
|
+
|
47
|
+
```typescript
|
48
|
+
// life cycle. The cleanup will be called on [scope dispose], [or resource update], [or resource being released]
|
49
|
+
const derivedValue = derive(counter.reactive, (counter, controller) => {
|
50
|
+
// create resource ...
|
51
|
+
controller.cleanup(() => { /* cleanup code */ })
|
52
|
+
|
53
|
+
return resource
|
54
|
+
})
|
55
|
+
|
56
|
+
// to release
|
57
|
+
scope.release(derivedValue)
|
58
|
+
|
59
|
+
// or be released as the dependency released
|
60
|
+
scope.release(counter)
|
61
|
+
```
|
62
|
+
|
63
|
+
## Meta
|
64
|
+
|
65
|
+
Meta are decorative information to the executor. Meta uses StandardSchema (zod, valibot, arktype etc) to enforce typing. `custom` is included within the library, it doesn't do any validation
|
66
|
+
|
67
|
+
```typescript
|
68
|
+
// adding debug name
|
69
|
+
const debugName = meta('debug', custom<string>())
|
12
70
|
|
71
|
+
const counter = provide(() => 0, debugName('counter'))
|
13
72
|
|
73
|
+
// then meta can be accessed using accessor
|
74
|
+
const derivedCounter = derive(counter.static, counter => {
|
75
|
+
counter.metas // would give you access to the given meta
|
76
|
+
// or
|
77
|
+
debugName.find(counter) // should give you 'counter' | undefined
|
78
|
+
// or
|
79
|
+
debugName.get(counter) // will throw error if no value found
|
80
|
+
})
|
14
81
|
```
|
package/dist/index.d.ts
CHANGED
@@ -1,152 +1,171 @@
|
|
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
|
-
|
5
|
+
readonly "~standard": StandardSchemaV1.Props<Input, Output>;
|
5
6
|
}
|
6
7
|
declare namespace StandardSchemaV1 {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
-
|
37
|
-
|
37
|
+
readonly issues: ReadonlyArray<StandardSchemaV1.Issue>;
|
38
|
+
constructor(issues: ReadonlyArray<StandardSchemaV1.Issue>);
|
38
39
|
}
|
39
40
|
declare namespace Meta {
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
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
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
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
|
+
}
|
120
138
|
}
|
121
139
|
|
140
|
+
//#endregion
|
141
|
+
//#region src/executor.d.ts
|
122
142
|
declare function isLazyExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Lazy<unknown>;
|
123
143
|
declare function isReactiveExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Reactive<unknown>;
|
124
144
|
declare function isStaticExecutor(executor: Core.BaseExecutor<unknown>): executor is Core.Static<unknown>;
|
145
|
+
declare function isMainExecutor(executor: unknown): executor is Core.Executor<unknown>;
|
125
146
|
declare function isExecutor<T>(input: unknown): input is Core.BaseExecutor<T>;
|
126
147
|
declare function provide<T>(factory: Core.NoDependencyFn<T>, ...metas: Meta.Meta[]): Core.Executor<T>;
|
127
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>;
|
128
|
-
declare function derive<T, D extends ReadonlyArray<Core.BaseExecutor<unknown>> | Record<string, Core.BaseExecutor<unknown>>>(dependencies: {
|
129
|
-
|
130
|
-
}, factory: Core.DependentFn<T, {
|
131
|
-
[K in keyof D]: Core.InferOutput<D[K]>;
|
132
|
-
}>, ...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>;
|
150
|
+
declare function preset<T>(e: Core.Executor<T>, v: T): Core.Preset<T>;
|
133
151
|
|
152
|
+
//#endregion
|
153
|
+
//#region src/meta.d.ts
|
134
154
|
declare const meta: <V>(key: string | symbol, schema: StandardSchemaV1<V>) => Meta.MetaFn<V>;
|
135
155
|
declare function getValue<V>(meta: Meta.Meta<V>): Awaited<V>;
|
136
156
|
declare function findValues<V = unknown>(executor: Meta.MetaContainer | Meta.Meta[] | undefined, meta: Meta.MetaFn<V>): V[];
|
137
157
|
declare function findValue<V>(executor: Meta.MetaContainer | Meta.Meta[] | undefined, meta: Meta.MetaFn<V>): V | undefined;
|
138
158
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
getCache(): Map<Core.Executor<unknown>, Core.Accessor<unknown>>;
|
143
|
-
getValueCache(): Map<Core.Executor<unknown>, unknown>;
|
144
|
-
getReactiveness(): Map<Core.Executor<unknown>, Set<Core.Executor<unknown>>>;
|
145
|
-
}
|
146
|
-
declare function createScope(): Core.Scope;
|
159
|
+
//#endregion
|
160
|
+
//#region src/scope.d.ts
|
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
|
-
|
169
|
+
//#endregion
|
170
|
+
export { Core, Meta, SchemaError, StandardSchemaV1, createScope, custom, derive, executorSymbol, findValue, findValues, getValue, isExecutor, isLazyExecutor, isMainExecutor, isReactiveExecutor, isStaticExecutor, meta, metaSymbol, preset, provide, validate, validateAsync };
|
171
|
+
//# 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"],"sources":["../src/types.ts","../src/executor.ts","../src/meta.ts","../src/scope.ts","../src/ssch.ts"],"sourcesContent":[],"mappings":"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"}
|