@signaltree/core 7.6.1 → 8.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/README.md CHANGED
@@ -661,6 +661,12 @@ All enhancers are exported directly from `@signaltree/core`:
661
661
  - `devTools()` - Redux DevTools auto-connect, path actions, and time-travel dispatch
662
662
  - `withTimeTravel()` - Undo/redo functionality
663
663
 
664
+ **DevTools connection model**
665
+
666
+ `devTools()` connects to the Redux DevTools browser extension via `window.__REDUX_DEVTOOLS_EXTENSION__.connect(...)`. That means **each SignalTree instance you enhance with `devTools()` will show up as its own DevTools “instance”.**
667
+
668
+ If you want a single unified DevTools view, prefer a **single global tree** composed from domain slices, and apply `devTools()` once at the root. See the Architecture Guide (Category C: Feature-scoped / composed sub-trees) for patterns that keep code modular without fragmenting runtime state.
669
+
664
670
  **Presets:**
665
671
 
666
672
  - `createDevTree()` - Pre-configured development setup
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signaltree/core",
3
- "version": "7.6.1",
3
+ "version": "8.0.0",
4
4
  "description": "Reactive JSON for Angular. JSON branches, reactive leaves. No actions. No reducers. No selectors.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,5 +1,4 @@
1
1
  import { WritableSignal } from '@angular/core';
2
- import { deepEqual, isBuiltInObject, parsePath } from '@signaltree/shared';
3
2
  export { deepEqual };
4
3
  export { deepEqual as equal };
5
4
  export { isBuiltInObject };
@@ -11,6 +10,26 @@ export interface MemoryManager {
11
10
  dispose(): void;
12
11
  }
13
12
  import type { NodeAccessor, TreeNode } from './types';
13
+
14
+ // Inlined from @signaltree/shared (internal package)
15
+ declare function deepEqual<T>(a: T, b: T): boolean;
16
+ declare function deepClone<T>(obj: T): T;
17
+ declare function isBuiltInObject(value: unknown): boolean;
18
+ declare function parsePath(path: string): string[];
19
+ declare function matchPath(path: string[], pattern: string[]): boolean;
20
+ declare function mergeDeep<T>(target: T, source: unknown): T;
21
+ declare function snapshotsEqual<T>(a: T, b: T): boolean;
22
+ declare function getChanges<T>(prev: T, next: T): unknown;
23
+ declare class LRUCache<K, V> {
24
+ constructor(maxSize: number);
25
+ get(key: K): V | undefined;
26
+ set(key: K, value: V): void;
27
+ has(key: K): boolean;
28
+ delete(key: K): boolean;
29
+ clear(): void;
30
+ get size(): number;
31
+ }
32
+ declare const DEFAULT_PATH_CACHE_SIZE: number;
14
33
  export declare function isNodeAccessor(value: unknown): value is NodeAccessor<unknown>;
15
34
  export declare function isAnySignal(value: unknown): boolean;
16
35
  export declare function toWritableSignal<T>(node: NodeAccessor<T>, injector?: unknown): WritableSignal<T>;