@signaltree/core 2.0.3 → 3.0.0

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/index.d.ts CHANGED
@@ -1,5 +1,12 @@
1
1
  import { WritableSignal, Signal } from '@angular/core';
2
2
 
3
+ type NotFn<T> = T extends (...args: unknown[]) => unknown ? never : T;
4
+ declare module '@angular/core' {
5
+ interface WritableSignal<T> {
6
+ (value: NotFn<T>): void;
7
+ (updater: (current: T) => T): void;
8
+ }
9
+ }
3
10
  type Primitive = string | number | boolean | null | undefined | bigint | symbol;
4
11
  type BuiltInObject = Date | RegExp | ((...args: unknown[]) => unknown) | Map<unknown, unknown> | Set<unknown> | WeakMap<object, unknown> | WeakSet<object> | ArrayBuffer | DataView | Error | Promise<unknown> | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | URL | URLSearchParams | FormData | Blob | File | Headers | Request | Response | AbortController | AbortSignal;
5
12
  interface NodeAccessor<T> {
@@ -7,9 +14,13 @@ interface NodeAccessor<T> {
7
14
  (value: T): void;
8
15
  (updater: (current: T) => T): void;
9
16
  }
10
- type SignalifiedNode<T> = NodeAccessor<T> & TreeNode<T>;
17
+ type AccessibleNode<T> = NodeAccessor<T> & TreeNode<T>;
18
+ type CallableWritableSignal<T> = WritableSignal<T> & {
19
+ (value: NotFn<T>): void;
20
+ (updater: (current: T) => T): void;
21
+ };
11
22
  type TreeNode<T> = {
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]>;
23
+ [K in keyof T]: T[K] extends readonly unknown[] ? CallableWritableSignal<T[K]> : T[K] extends object ? T[K] extends Signal<unknown> ? T[K] : T[K] extends BuiltInObject ? CallableWritableSignal<T[K]> : T[K] extends (...args: unknown[]) => unknown ? CallableWritableSignal<T[K]> : AccessibleNode<T[K]> : CallableWritableSignal<T[K]>;
13
24
  };
14
25
  type RemoveSignalMethods<T> = T extends infer U ? U : never;
15
26
  interface EnhancerMeta {
@@ -142,10 +153,6 @@ declare function isAnySignal(value: unknown): boolean;
142
153
  declare function parsePath(path: string): string[];
143
154
  declare function composeEnhancers<T>(...enhancers: Array<(tree: T) => T>): (tree: T) => T;
144
155
  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;
147
- declare function unwrap<T>(node: NodeAccessor<T>): T;
148
- declare function unwrap<T>(node: unknown): T;
149
156
 
150
157
  declare function createEnhancer<I = unknown, O = unknown>(meta: EnhancerMeta, enhancerFn: (input: I) => O): EnhancerWithMeta<I, O>;
151
158
  declare function resolveEnhancerOrder(enhancers: EnhancerWithMeta<unknown, unknown>[], availableCapabilities?: Set<string>, debugMode?: boolean): EnhancerWithMeta<unknown, unknown>[];
@@ -192,5 +199,5 @@ declare const SIGNAL_TREE_MESSAGES: Readonly<{
192
199
  readonly SUBSCRIBE_NO_CONTEXT: "no angular context";
193
200
  }>;
194
201
 
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 };
202
+ export { ENHANCER_META, SIGNAL_TREE_CONSTANTS, SIGNAL_TREE_MESSAGES, composeEnhancers, createEnhancer, createLazySignalTree, deepEqual, equal, isAnySignal, isBuiltInObject, isNodeAccessor, parsePath, resolveEnhancerOrder, signalTree };
203
+ export type { AsyncAction, AsyncActionConfig, BuiltInObject, ChainResult, Enhancer, EnhancerMeta, EnhancerWithMeta, EntityHelpers, Middleware, NotFn, 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",
3
+ "version": "3.0.0",
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"