@signaltree/core 2.0.1 → 2.0.3
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/README.md +370 -38
- package/fesm2022/signaltree-core.mjs +3 -11
- package/fesm2022/signaltree-core.mjs.map +1 -1
- package/index.d.ts +12 -14
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ interface NodeAccessor<T> {
|
|
|
7
7
|
(value: T): void;
|
|
8
8
|
(updater: (current: T) => T): void;
|
|
9
9
|
}
|
|
10
|
-
type SignalifiedNode<T> = NodeAccessor<T> &
|
|
11
|
-
type
|
|
10
|
+
type SignalifiedNode<T> = NodeAccessor<T> & TreeNode<T>;
|
|
11
|
+
type TreeNode<T> = {
|
|
12
12
|
[K in keyof T]: T[K] extends readonly unknown[] ? WritableSignal<T[K]> : T[K] extends object ? T[K] extends Signal<unknown> ? T[K] : T[K] extends BuiltInObject ? WritableSignal<T[K]> : T[K] extends (...args: unknown[]) => unknown ? WritableSignal<T[K]> : SignalifiedNode<T[K]> : WritableSignal<T[K]>;
|
|
13
13
|
};
|
|
14
14
|
type RemoveSignalMethods<T> = T extends infer U ? U : never;
|
|
@@ -44,8 +44,8 @@ interface WithMethod<T> {
|
|
|
44
44
|
<O1, O2, O3, O4>(e1: EnhancerWithMeta<SignalTree<T>, O1>, e2: EnhancerWithMeta<O1, O2>, e3: EnhancerWithMeta<O2, O3>, e4: EnhancerWithMeta<O3, O4>): O4;
|
|
45
45
|
}
|
|
46
46
|
type SignalTree<T> = NodeAccessor<T> & {
|
|
47
|
-
state:
|
|
48
|
-
$:
|
|
47
|
+
state: TreeNode<T>;
|
|
48
|
+
$: TreeNode<T>;
|
|
49
49
|
with: WithMethod<T>;
|
|
50
50
|
destroy(): void;
|
|
51
51
|
effect(fn: (tree: T) => void): void;
|
|
@@ -59,7 +59,7 @@ type SignalTree<T> = NodeAccessor<T> & {
|
|
|
59
59
|
getMetrics(): PerformanceMetrics;
|
|
60
60
|
addTap(middleware: Middleware<T>): void;
|
|
61
61
|
removeTap(id: string): void;
|
|
62
|
-
|
|
62
|
+
entities<E extends {
|
|
63
63
|
id: string | number;
|
|
64
64
|
}>(entityKey?: keyof T): EntityHelpers<E>;
|
|
65
65
|
asyncAction<TInput, TResult>(operation: (input: TInput) => Promise<TResult>, config?: AsyncActionConfig<T, TResult>): AsyncAction<TInput, TResult>;
|
|
@@ -102,12 +102,11 @@ interface EntityHelpers<E extends {
|
|
|
102
102
|
update(id: E['id'], updates: Partial<E>): void;
|
|
103
103
|
remove(id: E['id']): void;
|
|
104
104
|
upsert(entity: E): void;
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
selectById(id: E['id']): Signal<E | undefined>;
|
|
106
|
+
selectBy(predicate: (entity: E) => boolean): Signal<E[]>;
|
|
107
107
|
selectIds(): Signal<Array<string | number>>;
|
|
108
108
|
selectAll(): Signal<E[]>;
|
|
109
109
|
selectTotal(): Signal<number>;
|
|
110
|
-
findAll(): Signal<E[]>;
|
|
111
110
|
clear(): void;
|
|
112
111
|
}
|
|
113
112
|
interface AsyncActionConfig<T, TResult> {
|
|
@@ -137,15 +136,14 @@ declare function signalTree<T>(obj: T, configOrPreset?: TreeConfig | TreePreset)
|
|
|
137
136
|
|
|
138
137
|
declare function equal<T>(a: T, b: T): boolean;
|
|
139
138
|
declare const deepEqual: typeof equal;
|
|
140
|
-
declare function terminalSignal<T>(value: T, customEqual?: (a: T, b: T) => boolean): WritableSignal<T>;
|
|
141
139
|
declare function isBuiltInObject(v: unknown): boolean;
|
|
142
140
|
declare function isNodeAccessor(value: unknown): value is NodeAccessor<unknown>;
|
|
143
141
|
declare function isAnySignal(value: unknown): boolean;
|
|
144
142
|
declare function parsePath(path: string): string[];
|
|
145
143
|
declare function composeEnhancers<T>(...enhancers: Array<(tree: T) => T>): (tree: T) => T;
|
|
146
|
-
declare function createLazySignalTree<T extends object>(obj: T, equalityFn: (a: unknown, b: unknown) => boolean, basePath?: string):
|
|
147
|
-
declare function unwrap<T>(node:
|
|
148
|
-
declare function unwrap<T>(node: NodeAccessor<T> &
|
|
144
|
+
declare function createLazySignalTree<T extends object>(obj: T, equalityFn: (a: unknown, b: unknown) => boolean, basePath?: string): TreeNode<T>;
|
|
145
|
+
declare function unwrap<T>(node: TreeNode<T>): T;
|
|
146
|
+
declare function unwrap<T>(node: NodeAccessor<T> & TreeNode<T>): T;
|
|
149
147
|
declare function unwrap<T>(node: NodeAccessor<T>): T;
|
|
150
148
|
declare function unwrap<T>(node: unknown): T;
|
|
151
149
|
|
|
@@ -194,5 +192,5 @@ declare const SIGNAL_TREE_MESSAGES: Readonly<{
|
|
|
194
192
|
readonly SUBSCRIBE_NO_CONTEXT: "no angular context";
|
|
195
193
|
}>;
|
|
196
194
|
|
|
197
|
-
export { ENHANCER_META, SIGNAL_TREE_CONSTANTS, SIGNAL_TREE_MESSAGES, composeEnhancers, createEnhancer, createLazySignalTree, deepEqual, equal, isAnySignal, isBuiltInObject, isNodeAccessor, parsePath, resolveEnhancerOrder, signalTree,
|
|
198
|
-
export type { AsyncAction, AsyncActionConfig, BuiltInObject, ChainResult,
|
|
195
|
+
export { ENHANCER_META, SIGNAL_TREE_CONSTANTS, SIGNAL_TREE_MESSAGES, composeEnhancers, createEnhancer, createLazySignalTree, deepEqual, equal, isAnySignal, isBuiltInObject, isNodeAccessor, parsePath, resolveEnhancerOrder, signalTree, unwrap };
|
|
196
|
+
export type { AsyncAction, AsyncActionConfig, BuiltInObject, ChainResult, Enhancer, EnhancerMeta, EnhancerWithMeta, EntityHelpers, Middleware, PerformanceMetrics, Primitive, RemoveSignalMethods, SignalTree, TimeTravelEntry, TreeConfig, TreeNode, TreePreset, WithMethod };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signaltree/core",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "Lightweight, type-safe signal-based state management for Angular. Core package providing hierarchical signal trees, basic entity management, and async actions.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/core": "^20.1.0"
|