@storve/core 1.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/CHANGELOG.md +151 -0
- package/benchmarks/run.ts +102 -0
- package/benchmarks/week2.md +9 -0
- package/benchmarks/week2.ts +64 -0
- package/benchmarks/week4.md +13 -0
- package/benchmarks/week4.ts +178 -0
- package/benchmarks/week5.md +15 -0
- package/benchmarks/week5.ts +184 -0
- package/coverage/coverage-summary.json +31 -0
- package/dist/adapters/indexedDB.cjs +2 -0
- package/dist/adapters/indexedDB.cjs.map +1 -0
- package/dist/adapters/indexedDB.mjs +2 -0
- package/dist/adapters/indexedDB.mjs.map +1 -0
- package/dist/adapters/localStorage.cjs +2 -0
- package/dist/adapters/localStorage.cjs.map +1 -0
- package/dist/adapters/localStorage.mjs +2 -0
- package/dist/adapters/localStorage.mjs.map +1 -0
- package/dist/adapters/memory.cjs +2 -0
- package/dist/adapters/memory.cjs.map +1 -0
- package/dist/adapters/memory.mjs +2 -0
- package/dist/adapters/memory.mjs.map +1 -0
- package/dist/adapters/sessionStorage.cjs +2 -0
- package/dist/adapters/sessionStorage.cjs.map +1 -0
- package/dist/adapters/sessionStorage.mjs +2 -0
- package/dist/adapters/sessionStorage.mjs.map +1 -0
- package/dist/async-entry.d.ts +7 -0
- package/dist/async-entry.d.ts.map +1 -0
- package/dist/async.cjs +2 -0
- package/dist/async.cjs.map +1 -0
- package/dist/async.d.ts +52 -0
- package/dist/async.d.ts.map +1 -0
- package/dist/async.mjs +2 -0
- package/dist/async.mjs.map +1 -0
- package/dist/batch.d.ts +12 -0
- package/dist/batch.d.ts.map +1 -0
- package/dist/compose.d.ts +7 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/computed-entry.d.ts +7 -0
- package/dist/computed-entry.d.ts.map +1 -0
- package/dist/computed.cjs +2 -0
- package/dist/computed.cjs.map +1 -0
- package/dist/computed.d.ts +56 -0
- package/dist/computed.d.ts.map +1 -0
- package/dist/computed.mjs +2 -0
- package/dist/computed.mjs.map +1 -0
- package/dist/devtools/history.d.ts +51 -0
- package/dist/devtools/history.d.ts.map +1 -0
- package/dist/devtools/index.d.ts +5 -0
- package/dist/devtools/index.d.ts.map +1 -0
- package/dist/devtools/redux-bridge.d.ts +21 -0
- package/dist/devtools/redux-bridge.d.ts.map +1 -0
- package/dist/devtools/snapshots.d.ts +32 -0
- package/dist/devtools/snapshots.d.ts.map +1 -0
- package/dist/devtools/withDevtools.d.ts +17 -0
- package/dist/devtools/withDevtools.d.ts.map +1 -0
- package/dist/devtools.cjs +2 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.mjs +2 -0
- package/dist/devtools.mjs.map +1 -0
- package/dist/extensions/noop.d.ts +2 -0
- package/dist/extensions/noop.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.js +118 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +116 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/persist/adapters/indexedDB.d.ts +12 -0
- package/dist/persist/adapters/indexedDB.d.ts.map +1 -0
- package/dist/persist/adapters/localStorage.d.ts +11 -0
- package/dist/persist/adapters/localStorage.d.ts.map +1 -0
- package/dist/persist/adapters/memory.d.ts +11 -0
- package/dist/persist/adapters/memory.d.ts.map +1 -0
- package/dist/persist/adapters/sessionStorage.d.ts +11 -0
- package/dist/persist/adapters/sessionStorage.d.ts.map +1 -0
- package/dist/persist/debounce.d.ts +12 -0
- package/dist/persist/debounce.d.ts.map +1 -0
- package/dist/persist/hydrate.d.ts +15 -0
- package/dist/persist/hydrate.d.ts.map +1 -0
- package/dist/persist/index.d.ts +34 -0
- package/dist/persist/index.d.ts.map +1 -0
- package/dist/persist/serialize.d.ts +28 -0
- package/dist/persist/serialize.d.ts.map +1 -0
- package/dist/persist.cjs +2 -0
- package/dist/persist.cjs.map +1 -0
- package/dist/persist.mjs +2 -0
- package/dist/persist.mjs.map +1 -0
- package/dist/proxy.d.ts +2 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/registry-D3X0HSbl.js +26 -0
- package/dist/registry-D3X0HSbl.js.map +1 -0
- package/dist/registry-RDjbeJdx.js +29 -0
- package/dist/registry-RDjbeJdx.js.map +1 -0
- package/dist/registry-qtr1UpFU.js +2 -0
- package/dist/registry-qtr1UpFU.js.map +1 -0
- package/dist/registry-zaKZ1P-s.js +2 -0
- package/dist/registry-zaKZ1P-s.js.map +1 -0
- package/dist/registry.d.ts +54 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/signals/createSignal.d.ts +19 -0
- package/dist/signals/createSignal.d.ts.map +1 -0
- package/dist/signals/index.d.ts +20 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/useSignal.d.ts +11 -0
- package/dist/signals/useSignal.d.ts.map +1 -0
- package/dist/signals.cjs +2 -0
- package/dist/signals.cjs.map +1 -0
- package/dist/signals.mjs +2 -0
- package/dist/signals.mjs.map +1 -0
- package/dist/stats.html +4949 -0
- package/dist/store.d.ts +12 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/sync/channel.d.ts +7 -0
- package/dist/sync/channel.d.ts.map +1 -0
- package/dist/sync/index.d.ts +3 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/protocol.d.ts +22 -0
- package/dist/sync/protocol.d.ts.map +1 -0
- package/dist/sync/withSync.d.ts +17 -0
- package/dist/sync/withSync.d.ts.map +1 -0
- package/dist/sync.cjs +2 -0
- package/dist/sync.cjs.map +1 -0
- package/dist/sync.mjs +2 -0
- package/dist/sync.mjs.map +1 -0
- package/dist/types.d.ts +134 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +91 -0
- package/rollup.config.mjs +44 -0
- package/src/async-entry.ts +6 -0
- package/src/async.ts +240 -0
- package/src/batch.ts +33 -0
- package/src/compose.ts +50 -0
- package/src/computed-entry.ts +6 -0
- package/src/computed.ts +187 -0
- package/src/devtools/history.ts +103 -0
- package/src/devtools/index.ts +5 -0
- package/src/devtools/redux-bridge.ts +70 -0
- package/src/devtools/snapshots.ts +54 -0
- package/src/devtools/withDevtools.ts +196 -0
- package/src/extensions/noop.ts +12 -0
- package/src/index.ts +4 -0
- package/src/persist/adapters/indexedDB.ts +114 -0
- package/src/persist/adapters/localStorage.ts +28 -0
- package/src/persist/adapters/memory.ts +26 -0
- package/src/persist/adapters/sessionStorage.ts +28 -0
- package/src/persist/debounce.ts +28 -0
- package/src/persist/hydrate.ts +60 -0
- package/src/persist/index.ts +141 -0
- package/src/persist/serialize.ts +60 -0
- package/src/proxy.ts +87 -0
- package/src/registry.ts +67 -0
- package/src/signals/createSignal.ts +81 -0
- package/src/signals/index.ts +20 -0
- package/src/signals/useSignal.ts +18 -0
- package/src/store.ts +250 -0
- package/src/sync/channel.ts +15 -0
- package/src/sync/index.ts +3 -0
- package/src/sync/protocol.ts +18 -0
- package/src/sync/withSync.ts +147 -0
- package/src/types.ts +159 -0
- package/tests/async.test.ts +1100 -0
- package/tests/batch.test.ts +41 -0
- package/tests/compose.test.ts +209 -0
- package/tests/computed.test.ts +867 -0
- package/tests/devtools.test.ts +1039 -0
- package/tests/integration/persist.integration.test.ts +258 -0
- package/tests/integration/signals.integration.test.ts +309 -0
- package/tests/integration.test.ts +278 -0
- package/tests/persist/adapters/indexedDB.adapter.test.ts +185 -0
- package/tests/persist/adapters/localStorage.adapter.test.ts +105 -0
- package/tests/persist/adapters/memory.adapter.test.ts +112 -0
- package/tests/persist/adapters/sessionStorage.adapter.test.ts +128 -0
- package/tests/persist/debounce.test.ts +121 -0
- package/tests/persist/hydrate.test.ts +120 -0
- package/tests/persist/migrate.test.ts +208 -0
- package/tests/persist/persist.test.ts +357 -0
- package/tests/persist/serialize.test.ts +128 -0
- package/tests/proxy.test.ts +473 -0
- package/tests/registry.test.ts +67 -0
- package/tests/signals/derived.test.ts +244 -0
- package/tests/signals/inference.test.ts +108 -0
- package/tests/signals/signal.test.ts +348 -0
- package/tests/signals/useSignal.test.tsx +275 -0
- package/tests/store.test.ts +482 -0
- package/tests/stress.test.ts +268 -0
- package/tests/sync.test.ts +576 -0
- package/tests/types.test.ts +32 -0
- package/tests/v0.3.test.ts +813 -0
- package/tree-shake-test.js +1 -0
- package/tsconfig.json +15 -0
- package/vitest.config.ts +22 -0
- package/vitest_play.ts +7 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal structure for a history entry in the ring buffer.
|
|
3
|
+
*/
|
|
4
|
+
export interface HistoryEntry<S> {
|
|
5
|
+
state: S;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
actionName: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Ring buffer for time-travel debugging.
|
|
11
|
+
* Fixed capacity ensures no unbounded growth.
|
|
12
|
+
*/
|
|
13
|
+
export interface RingBuffer<S> {
|
|
14
|
+
entries: HistoryEntry<S>[];
|
|
15
|
+
cursor: number;
|
|
16
|
+
capacity: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates an empty ring buffer with the given capacity.
|
|
20
|
+
* @param capacity - Max number of entries (default 50)
|
|
21
|
+
*/
|
|
22
|
+
export declare function createRingBuffer<S>(capacity?: number): RingBuffer<S>;
|
|
23
|
+
/**
|
|
24
|
+
* Pushes a new state to the ring buffer.
|
|
25
|
+
* Discards any redo stack (entries after the cursor).
|
|
26
|
+
* Drops oldest entry if capacity is exceeded.
|
|
27
|
+
*/
|
|
28
|
+
export declare function push<S>(buffer: RingBuffer<S>, state: S, actionName: string): RingBuffer<S>;
|
|
29
|
+
/**
|
|
30
|
+
* Moves the cursor back one position and returns the state.
|
|
31
|
+
*/
|
|
32
|
+
export declare function undo<S>(buffer: RingBuffer<S>): {
|
|
33
|
+
buffer: RingBuffer<S>;
|
|
34
|
+
state: S | null;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Moves the cursor forward one position and returns the state.
|
|
38
|
+
*/
|
|
39
|
+
export declare function redo<S>(buffer: RingBuffer<S>): {
|
|
40
|
+
buffer: RingBuffer<S>;
|
|
41
|
+
state: S | null;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Returns true if the ring buffer can perform an undo.
|
|
45
|
+
*/
|
|
46
|
+
export declare function canUndo<S>(buffer: RingBuffer<S>): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Returns true if the ring buffer can perform a redo.
|
|
49
|
+
*/
|
|
50
|
+
export declare function canRedo<S>(buffer: RingBuffer<S>): boolean;
|
|
51
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/devtools/history.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAE,MAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAwB1F;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,CASzF;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,CASzF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAEzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/devtools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Store } from '../types';
|
|
2
|
+
import { RingBuffer } from './history';
|
|
3
|
+
/** @internal */
|
|
4
|
+
export interface DevtoolsInternals<S> {
|
|
5
|
+
buffer: RingBuffer<S>;
|
|
6
|
+
initialState: S;
|
|
7
|
+
snapshots: Map<string, {
|
|
8
|
+
state: S;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
}>;
|
|
11
|
+
_lastActionName: string | null;
|
|
12
|
+
_applySnapshot: (state: S) => void;
|
|
13
|
+
_isInternalUpdate: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Connects a devtools-enabled store to the Redux DevTools browser extension.
|
|
17
|
+
*/
|
|
18
|
+
export declare function connectReduxDevtools<S extends object>(store: Store<S> & {
|
|
19
|
+
__devtools: DevtoolsInternals<S>;
|
|
20
|
+
}, name: string): () => void;
|
|
21
|
+
//# sourceMappingURL=redux-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redux-bridge.d.ts","sourceRoot":"","sources":["../../src/devtools/redux-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,gBAAgB;AAChB,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAChC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACnC,iBAAiB,EAAE,OAAO,CAAC;CAC9B;AAYD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACjD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG;IAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAA;CAAE,EACtD,IAAI,EAAE,MAAM,GACb,MAAM,IAAI,CAwCZ"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal structure for a named snapshot entry.
|
|
3
|
+
*/
|
|
4
|
+
export interface SnapshotEntry<S> {
|
|
5
|
+
state: S;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A Map of named state checkpoints.
|
|
10
|
+
*/
|
|
11
|
+
export type SnapshotMap<S> = Map<string, SnapshotEntry<S>>;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new empty snapshot map.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSnapshotMap<S>(): SnapshotMap<S>;
|
|
16
|
+
/**
|
|
17
|
+
* Saves a state snapshot under the given name.
|
|
18
|
+
*/
|
|
19
|
+
export declare function saveSnapshot<S>(map: SnapshotMap<S>, name: string, state: S): SnapshotMap<S>;
|
|
20
|
+
/**
|
|
21
|
+
* Returns the snapshot entry for the given name, or null if not found.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSnapshot<S>(map: SnapshotMap<S>, name: string): SnapshotEntry<S> | null;
|
|
24
|
+
/**
|
|
25
|
+
* Removes the snapshot with the given name.
|
|
26
|
+
*/
|
|
27
|
+
export declare function deleteSnapshot<S>(map: SnapshotMap<S>, name: string): SnapshotMap<S>;
|
|
28
|
+
/**
|
|
29
|
+
* Returns an array of all snapshot names.
|
|
30
|
+
*/
|
|
31
|
+
export declare function listSnapshots<S>(map: SnapshotMap<S>): string[];
|
|
32
|
+
//# sourceMappingURL=snapshots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshots.d.ts","sourceRoot":"","sources":["../../src/devtools/snapshots.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAErD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAO3F;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAEzF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAInF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAE9D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for DevTools.
|
|
3
|
+
*/
|
|
4
|
+
export interface DevtoolsOptions {
|
|
5
|
+
/** Label shown in Redux DevTools panel */
|
|
6
|
+
name: string;
|
|
7
|
+
/** Max history entries in ring buffer (default 50) */
|
|
8
|
+
maxHistory?: number;
|
|
9
|
+
/** Whether devtools are enabled (default true) */
|
|
10
|
+
enabled?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Wraps a store definition with DevTools capabilities.
|
|
14
|
+
* Must be imported to register the devtools extension.
|
|
15
|
+
*/
|
|
16
|
+
export declare function withDevtools<D extends object>(definition: D, options: DevtoolsOptions): D;
|
|
17
|
+
//# sourceMappingURL=withDevtools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withDevtools.d.ts","sourceRoot":"","sources":["../../src/devtools/withDevtools.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAwBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EACzC,UAAU,EAAE,CAAC,EACb,OAAO,EAAE,eAAe,GACzB,CAAC,CAGH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("./registry-qtr1UpFU.js");function e(t=50){return{entries:[],cursor:-1,capacity:t}}function n(t,e,n){const s={state:e,timestamp:Date.now(),actionName:n};let r=[...t.entries.slice(0,t.cursor+1),s],a=r.length-1;return r.length>t.capacity&&(r=r.slice(r.length-t.capacity),a=r.length-1),{...t,entries:r,cursor:a}}const s=new WeakMap;t.registerExtension({key:"devtools",processDefinition:t=>{const e=s.get(t);return e&&e.enabled,{state:{}}},extendStore:t=>{const{store:r,definition:a}=t,o=s.get(a);if(!o||!1===o.enabled)return{};const i=r.getState(),u={buffer:e(o.maxHistory||50),snapshots:new Map,initialState:i,_isInternalUpdate:!1,_lastActionName:null,_applySnapshot:t=>{u._isInternalUpdate=!0,r.setState(t),u._isInternalUpdate=!1}},c=r;c.__devtools=u;let f=!0;r.subscribe(()=>{if(u._isInternalUpdate)return;const t=r.getState();if(f&&null===u._lastActionName){const e=u.initialState,n=t,s=Object.keys(e);if(s.length===Object.keys(n).length&&s.every(t=>n[t]===e[t]))return void(f=!1)}f=!1;const e=u._lastActionName??"setState";u.buffer=n(u.buffer,t,e),u._lastActionName=null});const l=r.actions;return Object.keys(l).forEach(t=>{const e=l[t],n=(...n)=>(u._lastActionName=t,e(...n));l[t]=n;const s=r;s[t]===e&&(s[t]=n)}),"undefined"!=typeof window&&function(t,e){if("undefined"==typeof window)return()=>{};const n=window.__REDUX_DEVTOOLS_EXTENSION__;if(!n)return()=>{};const s=n.connect({name:`Storve | ${e}`,maxAge:t.__devtools.buffer.capacity});s.init(t.getState());const r=t.subscribe(e=>{t.__devtools._isInternalUpdate||s.send({type:t.__devtools._lastActionName??"setState"},e)}),a=s.subscribe(e=>{"DISPATCH"===e.type&&("JUMP_TO_STATE"===e.payload?.type||"JUMP_TO_ACTION"===e.payload?.type?e.state&&t.__devtools._applySnapshot(JSON.parse(e.state)):"RESET"===e.payload?.type&&t.__devtools._applySnapshot(t.__devtools.initialState))})}(c,o.name),{undo:()=>{const{buffer:t,state:e}=function(t){if(t.cursor>0){const e=t.cursor-1;return{buffer:{...t,cursor:e},state:t.entries[e].state}}return{buffer:t,state:null}}(u.buffer);e&&(u.buffer=t,u._applySnapshot(e))},redo:()=>{const{buffer:t,state:e}=function(t){if(t.cursor<t.entries.length-1){const e=t.cursor+1;return{buffer:{...t,cursor:e},state:t.entries[e].state}}return{buffer:t,state:null}}(u.buffer);e&&(u.buffer=t,u._applySnapshot(e))},get canUndo(){return u.buffer.cursor>0},get canRedo(){return(t=u.buffer).cursor<t.entries.length-1;var t},snapshot:t=>{u.snapshots=function(t,e,n){const s=new Map(t);return s.set(e,{state:n,timestamp:Date.now()}),s}(u.snapshots,t,r.getState()),u._isInternalUpdate=!0,r.setState({}),u._isInternalUpdate=!1},restore:t=>{const e=function(t,e){return t.get(e)||null}(u.snapshots,t);if(!e)throw new Error(`Storve DevTools: Snapshot "${t}" not found.`);u._applySnapshot(e.state),u.buffer=n(u.buffer,e.state,`restore('${t}')`)},deleteSnapshot:t=>{u.snapshots=function(t,e){const n=new Map(t);return n.delete(e),n}(u.snapshots,t),u._isInternalUpdate=!0,r.setState({}),u._isInternalUpdate=!1},clearHistory:()=>{u.buffer=e(u.buffer.capacity),u._isInternalUpdate=!0,r.setState({}),u._isInternalUpdate=!1},get history(){return[...u.buffer.entries]},get snapshots(){return t=u.snapshots,Array.from(t.keys());var t}}}}),exports.withDevtools=function(t,e){return s.set(t,e),t};
|
|
2
|
+
//# sourceMappingURL=devtools.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtools.cjs","sources":["../src/devtools/history.ts","../src/devtools/withDevtools.ts","../src/devtools/snapshots.ts","../src/devtools/redux-bridge.ts"],"sourcesContent":[null,null,null,null],"names":["createRingBuffer","capacity","entries","cursor","push","buffer","state","actionName","entry","timestamp","Date","now","newEntries","slice","newCursor","length","DEVTOOLS_OPTIONS","WeakMap","registerExtension","key","processDefinition","definition","options","get","enabled","extendStore","context","store","initialState","getState","internals","maxHistory","snapshots","Map","_isInternalUpdate","_lastActionName","_applySnapshot","setState","devStore","__devtools","_initEchoPending","subscribe","currentState","init","curr","keys","Object","every","k","rawActions","actions","forEach","original","wrapped","args","storeAsRecord","window","name","extension","__REDUX_DEVTOOLS_EXTENSION__","devtools","connect","maxAge","unsubscribeStore","send","type","unsubscribeDevtools","message","payload","JSON","parse","connectReduxDevtools","undo","redo","canUndo","canRedo","snapshot","map","nextMap","set","saveSnapshot","restore","getSnapshot","Error","deleteSnapshot","delete","clearHistory","history","Array","from"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t}from"./registry-zaKZ1P-s.js";function e(t=50){return{entries:[],cursor:-1,capacity:t}}function n(t,e,n){const s={state:e,timestamp:Date.now(),actionName:n};let r=[...t.entries.slice(0,t.cursor+1),s],a=r.length-1;return r.length>t.capacity&&(r=r.slice(r.length-t.capacity),a=r.length-1),{...t,entries:r,cursor:a}}const s=new WeakMap;function r(t,e){return s.set(t,e),t}t({key:"devtools",processDefinition:t=>{const e=s.get(t);return e&&e.enabled,{state:{}}},extendStore:t=>{const{store:r,definition:a}=t,o=s.get(a);if(!o||!1===o.enabled)return{};const i=r.getState(),u={buffer:e(o.maxHistory||50),snapshots:new Map,initialState:i,_isInternalUpdate:!1,_lastActionName:null,_applySnapshot:t=>{u._isInternalUpdate=!0,r.setState(t),u._isInternalUpdate=!1}},c=r;c.__devtools=u;let f=!0;r.subscribe(()=>{if(u._isInternalUpdate)return;const t=r.getState();if(f&&null===u._lastActionName){const e=u.initialState,n=t,s=Object.keys(e);if(s.length===Object.keys(n).length&&s.every(t=>n[t]===e[t]))return void(f=!1)}f=!1;const e=u._lastActionName??"setState";u.buffer=n(u.buffer,t,e),u._lastActionName=null});const l=r.actions;return Object.keys(l).forEach(t=>{const e=l[t],n=(...n)=>(u._lastActionName=t,e(...n));l[t]=n;const s=r;s[t]===e&&(s[t]=n)}),"undefined"!=typeof window&&function(t,e){if("undefined"==typeof window)return()=>{};const n=window.__REDUX_DEVTOOLS_EXTENSION__;if(!n)return()=>{};const s=n.connect({name:`Storve | ${e}`,maxAge:t.__devtools.buffer.capacity});s.init(t.getState());const r=t.subscribe(e=>{t.__devtools._isInternalUpdate||s.send({type:t.__devtools._lastActionName??"setState"},e)}),a=s.subscribe(e=>{"DISPATCH"===e.type&&("JUMP_TO_STATE"===e.payload?.type||"JUMP_TO_ACTION"===e.payload?.type?e.state&&t.__devtools._applySnapshot(JSON.parse(e.state)):"RESET"===e.payload?.type&&t.__devtools._applySnapshot(t.__devtools.initialState))})}(c,o.name),{undo:()=>{const{buffer:t,state:e}=function(t){if(t.cursor>0){const e=t.cursor-1;return{buffer:{...t,cursor:e},state:t.entries[e].state}}return{buffer:t,state:null}}(u.buffer);e&&(u.buffer=t,u._applySnapshot(e))},redo:()=>{const{buffer:t,state:e}=function(t){if(t.cursor<t.entries.length-1){const e=t.cursor+1;return{buffer:{...t,cursor:e},state:t.entries[e].state}}return{buffer:t,state:null}}(u.buffer);e&&(u.buffer=t,u._applySnapshot(e))},get canUndo(){return u.buffer.cursor>0},get canRedo(){return(t=u.buffer).cursor<t.entries.length-1;var t},snapshot:t=>{u.snapshots=function(t,e,n){const s=new Map(t);return s.set(e,{state:n,timestamp:Date.now()}),s}(u.snapshots,t,r.getState()),u._isInternalUpdate=!0,r.setState({}),u._isInternalUpdate=!1},restore:t=>{const e=function(t,e){return t.get(e)||null}(u.snapshots,t);if(!e)throw new Error(`Storve DevTools: Snapshot "${t}" not found.`);u._applySnapshot(e.state),u.buffer=n(u.buffer,e.state,`restore('${t}')`)},deleteSnapshot:t=>{u.snapshots=function(t,e){const n=new Map(t);return n.delete(e),n}(u.snapshots,t),u._isInternalUpdate=!0,r.setState({}),u._isInternalUpdate=!1},clearHistory:()=>{u.buffer=e(u.buffer.capacity),u._isInternalUpdate=!0,r.setState({}),u._isInternalUpdate=!1},get history(){return[...u.buffer.entries]},get snapshots(){return t=u.snapshots,Array.from(t.keys());var t}}}});export{r as withDevtools};
|
|
2
|
+
//# sourceMappingURL=devtools.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtools.mjs","sources":["../src/devtools/history.ts","../src/devtools/withDevtools.ts","../src/devtools/snapshots.ts","../src/devtools/redux-bridge.ts"],"sourcesContent":[null,null,null,null],"names":["createRingBuffer","capacity","entries","cursor","push","buffer","state","actionName","entry","timestamp","Date","now","newEntries","slice","newCursor","length","DEVTOOLS_OPTIONS","WeakMap","withDevtools","definition","options","set","registerExtension","key","processDefinition","get","enabled","extendStore","context","store","initialState","getState","internals","maxHistory","snapshots","Map","_isInternalUpdate","_lastActionName","_applySnapshot","setState","devStore","__devtools","_initEchoPending","subscribe","currentState","init","curr","keys","Object","every","k","rawActions","actions","forEach","original","wrapped","args","storeAsRecord","window","name","extension","__REDUX_DEVTOOLS_EXTENSION__","devtools","connect","maxAge","unsubscribeStore","send","type","unsubscribeDevtools","message","payload","JSON","parse","connectReduxDevtools","undo","redo","canUndo","canRedo","snapshot","map","nextMap","saveSnapshot","restore","getSnapshot","Error","deleteSnapshot","delete","clearHistory","history","Array","from"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.d.ts","sourceRoot":"","sources":["../../src/extensions/noop.ts"],"names":[],"mappings":""}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("immer"),t=require("./registry-qtr1UpFU.js");const n=new WeakMap,r=new WeakMap;let o=!1;function s(e){if(null===e||"object"!=typeof e)return!1;return Object.getPrototypeOf(e)===Object.prototype||Array.isArray(e)}function c(e,t){if(!s(e))return e;if(n.has(e))return n.get(e);if(r.has(e))return e;const i=new Proxy(e,{get(e,r,c){if(Array.isArray(e)&&"string"==typeof r&&["push","pop","shift","unshift","splice","sort","reverse"].includes(r))return(...n)=>{const s=o;o=!0;const i=Reflect.get(e,r,c),a=Reflect.apply(i,c,n);return o=s,o||t(),a};const i=Reflect.get(e,r,c);return s(i)&&n.has(i)?n.get(i):i},set(e,n,i,a){const f=r.has(i)?r.get(i):i;s(f)&&c(f,t);const l=Reflect.set(e,n,f,a);return o||t(),l},deleteProperty(e,n){const r=Reflect.deleteProperty(e,n);return o||t(),r}});n.set(e,i),r.set(i,e);for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=e[n];s(r)&&c(r,t)}return i}let i=0;const a=new Set;function f(){return i>0}exports.batch=function(e){i++;try{e()}finally{i--,0===i&&a.forEach(e=>e())}},exports.compose=function(e,...t){if(0===t.length)return e;let n=e;for(let e=0;e<t.length;e++)n=t[e](n);return n},exports.createStore=function(n,r={}){const{actions:o={},...s}=n;let i={...s};const l=[],u=new Set,y=[];for(const e of t.getExtensions())if(e.processDefinition){const t=e.processDefinition(i);i={...i,...t.state},t.asyncInits&&l.push(...t.asyncInits),t.readOnlyKeys&&t.readOnlyKeys.forEach(e=>u.add(e)),t.onStateChanged&&y.push(t.onStateChanged)}const p={current:null},d=new Map;for(const{key:e,init:t}of l){const n=t(t=>{p.current?.({[e]:t})});d.set(e,n),i[e]=n.getState()}const h=i,g=new Set;let S=h,w=0,O=!1,b=null,j=new Set,E=null,x=null;const P=()=>{w>0||f()?O=!0:(O=!1,g.forEach(e=>e(S)))},k=e=>{const t=(e,t)=>{S[e]=t};for(const n of y)n({changedKeys:e,getState:()=>S,setComputed:t,store:A})},m=c(h,P),v=t=>{let n;if(n="function"==typeof t?r.immer?e.produce(S,t):{...S,...t(S)}:{...S,...t},n===S)return;const o={...n};u.forEach(e=>delete o[e]);const s=S,c=new Set(Object.keys(o).filter(e=>s[e]!==o[e]));S={...S,...o},w>0||f()?(c.forEach(e=>j.add(e)),O=!0):k(c),E=null,x=null,w++;try{for(const e in S)Object.prototype.hasOwnProperty.call(S,e)&&S[e]!==s[e]&&(m[e]=S[e])}finally{w--}w>0?O=!0:P()};p.current=v;const A={getState:()=>{if(null!==E&&x===S)return E;const e={...S};return E=e,x=S,e},setState:v,subscribe:e=>{var t;return g.add(e),1===g.size&&(t=()=>{O&&(O=!1,k(j),j=new Set,P())},a.add(t),b=()=>{a.delete(t)},O&&(O=!1,k(j),j=new Set,P())),()=>{g.delete(e),0===g.size&&(b?.(),b=null)}},batch:e=>{w++;try{e()}finally{w--,0===w&&O&&(O=!1,k(j),j=new Set,P())}},actions:{},fetch:async e=>{throw new Error(`Storve: no async key "${e}" found in store. Import "storve/async" to use createAsync.`)},refetch:async()=>{},invalidate:()=>{},invalidateAll:()=>{},getAsyncState:()=>{}};for(const e of t.getExtensions())if(e.extendStore){const t=e.extendStore({engines:d,store:A,definition:n});Object.defineProperties(A,Object.getOwnPropertyDescriptors(t))}k(new Set(Object.keys(S)));const R={};return Object.keys(o).forEach(e=>{R[e]=(...t)=>o[e](...t)}),Object.assign(A,R),A.actions=R,A};
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const proxyMap = new WeakMap();
|
|
4
|
+
const rawMap = new WeakMap();
|
|
5
|
+
let isBatching = false;
|
|
6
|
+
function isPlainObjectOrArray(value) {
|
|
7
|
+
if (value === null || typeof value !== 'object')
|
|
8
|
+
return false;
|
|
9
|
+
const proto = Object.getPrototypeOf(value);
|
|
10
|
+
return proto === Object.prototype || Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
function createStateProxy(state, onChange) {
|
|
13
|
+
if (!isPlainObjectOrArray(state)) {
|
|
14
|
+
return state;
|
|
15
|
+
}
|
|
16
|
+
if (proxyMap.has(state)) {
|
|
17
|
+
return proxyMap.get(state);
|
|
18
|
+
}
|
|
19
|
+
if (rawMap.has(state)) {
|
|
20
|
+
return state; // It's already a proxy
|
|
21
|
+
}
|
|
22
|
+
const handler = {
|
|
23
|
+
get(target, prop, receiver) {
|
|
24
|
+
if (Array.isArray(target) && typeof prop === 'string' && ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].includes(prop)) {
|
|
25
|
+
return (...args) => {
|
|
26
|
+
const prevBatching = isBatching;
|
|
27
|
+
isBatching = true;
|
|
28
|
+
const method = Reflect.get(target, prop, receiver);
|
|
29
|
+
const result = Reflect.apply(method, receiver, args);
|
|
30
|
+
isBatching = prevBatching;
|
|
31
|
+
if (!isBatching) {
|
|
32
|
+
onChange();
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const value = Reflect.get(target, prop, receiver);
|
|
38
|
+
if (isPlainObjectOrArray(value) && proxyMap.has(value)) {
|
|
39
|
+
return proxyMap.get(value);
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
},
|
|
43
|
+
set(target, prop, value, receiver) {
|
|
44
|
+
// Unpack if value is a proxy itself
|
|
45
|
+
const rawValue = rawMap.has(value) ? rawMap.get(value) : value;
|
|
46
|
+
// Immediately wrap new nested objects
|
|
47
|
+
if (isPlainObjectOrArray(rawValue)) {
|
|
48
|
+
createStateProxy(rawValue, onChange);
|
|
49
|
+
}
|
|
50
|
+
const result = Reflect.set(target, prop, rawValue, receiver);
|
|
51
|
+
// Trigger listeners on write
|
|
52
|
+
if (!isBatching)
|
|
53
|
+
onChange();
|
|
54
|
+
return result;
|
|
55
|
+
},
|
|
56
|
+
deleteProperty(target, prop) {
|
|
57
|
+
const result = Reflect.deleteProperty(target, prop);
|
|
58
|
+
if (!isBatching)
|
|
59
|
+
onChange();
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const proxy = new Proxy(state, handler);
|
|
64
|
+
proxyMap.set(state, proxy);
|
|
65
|
+
rawMap.set(proxy, state);
|
|
66
|
+
// Recursively proxy existing nested objects upfront
|
|
67
|
+
for (const key in state) {
|
|
68
|
+
if (Object.prototype.hasOwnProperty.call(state, key)) {
|
|
69
|
+
const val = state[key];
|
|
70
|
+
if (isPlainObjectOrArray(val)) {
|
|
71
|
+
createStateProxy(val, onChange);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return proxy;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Creates a reactive store with auto-tracking features via Proxies.
|
|
80
|
+
* Any mutations to the state via setState or directly to deep objects will notify subscribers.
|
|
81
|
+
*
|
|
82
|
+
* @param definition - The initial state object. Must be an object.
|
|
83
|
+
* @returns A generic store instance with getState, setState, and subscribe methods.
|
|
84
|
+
*/
|
|
85
|
+
function createStore(definition) {
|
|
86
|
+
const listeners = new Set();
|
|
87
|
+
const notify = () => {
|
|
88
|
+
const currentState = store.getState();
|
|
89
|
+
listeners.forEach(listener => listener(currentState));
|
|
90
|
+
};
|
|
91
|
+
const proxyState = createStateProxy(definition, notify);
|
|
92
|
+
const store = {
|
|
93
|
+
getState: () => {
|
|
94
|
+
// Return unwrapped raw value representing the current state.
|
|
95
|
+
// Notice that proxyState mutates "definition" directly, so definition is always up to date.
|
|
96
|
+
return definition;
|
|
97
|
+
},
|
|
98
|
+
setState: (updater) => {
|
|
99
|
+
const updates = typeof updater === 'function' ? updater(store.getState()) : updater;
|
|
100
|
+
for (const key in updates) {
|
|
101
|
+
if (Object.prototype.hasOwnProperty.call(updates, key)) {
|
|
102
|
+
// Assign to proxy to trigger proxy 'set' traps which handles notification.
|
|
103
|
+
proxyState[key] = updates[key];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
subscribe: (listener) => {
|
|
108
|
+
listeners.add(listener);
|
|
109
|
+
return () => {
|
|
110
|
+
listeners.delete(listener);
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
return store;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
exports.createStore = createStore;
|
|
118
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/proxy.ts","../src/store.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/proxy.ts","../src/batch.ts","../src/compose.ts","../src/store.ts"],"sourcesContent":[null,null,null,null],"names":["proxyMap","WeakMap","rawMap","isBatching","isPlainObjectOrArray","value","Object","getPrototypeOf","prototype","Array","isArray","createStateProxy","state","onChange","has","get","proxy","Proxy","target","prop","receiver","includes","args","prevBatching","method","Reflect","result","apply","set","rawValue","deleteProperty","key","hasOwnProperty","call","val","batchCount","subscribers","Set","fn","forEach","s","store","enhancers","length","currentStore","i","definition","options","actions","rawActions","initialData","workingData","allAsyncInits","readOnlyKeys","onStateChangedCallbacks","ext","getExtensions","processDefinition","asyncInits","push","k","add","onStateChanged","setStateRef","current","engines","Map","init","engine","nodeState","getState","initialState","listeners","currentState","batchDirty","unsubscribeBatch","pendingChangedKeys","lastSnapshot","lastSnapshotState","notify","listener","runOnStateChanged","changedKeys","setComputed","cb","proxyState","setState","updater","nextState","immer","produce","writableNext","prevState","updatedKeys","keys","filter","snapshot","subscribe","size","delete","batch","fetch","async","Error","refetch","invalidate","invalidateAll","getAsyncState","extendStore","methods","defineProperties","getOwnPropertyDescriptors","boundActions","assign"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createStore } from './store';
|
|
2
|
+
export { batch } from './batch';
|
|
3
|
+
export { compose } from './compose';
|
|
4
|
+
export type { Store, StoreDefinition, Listener, Unsubscribe, StoreOptions, StoreState, StoreActions, AsyncState, AsyncOptions, AsyncStatus, ComputedValue, WritableStoreState, ComputedKeys } from './types';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
const proxyMap = new WeakMap();
|
|
2
|
+
const rawMap = new WeakMap();
|
|
3
|
+
let isBatching = false;
|
|
4
|
+
function isPlainObjectOrArray(value) {
|
|
5
|
+
if (value === null || typeof value !== 'object')
|
|
6
|
+
return false;
|
|
7
|
+
const proto = Object.getPrototypeOf(value);
|
|
8
|
+
return proto === Object.prototype || Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
function createStateProxy(state, onChange) {
|
|
11
|
+
if (!isPlainObjectOrArray(state)) {
|
|
12
|
+
return state;
|
|
13
|
+
}
|
|
14
|
+
if (proxyMap.has(state)) {
|
|
15
|
+
return proxyMap.get(state);
|
|
16
|
+
}
|
|
17
|
+
if (rawMap.has(state)) {
|
|
18
|
+
return state; // It's already a proxy
|
|
19
|
+
}
|
|
20
|
+
const handler = {
|
|
21
|
+
get(target, prop, receiver) {
|
|
22
|
+
if (Array.isArray(target) && typeof prop === 'string' && ['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].includes(prop)) {
|
|
23
|
+
return (...args) => {
|
|
24
|
+
const prevBatching = isBatching;
|
|
25
|
+
isBatching = true;
|
|
26
|
+
const method = Reflect.get(target, prop, receiver);
|
|
27
|
+
const result = Reflect.apply(method, receiver, args);
|
|
28
|
+
isBatching = prevBatching;
|
|
29
|
+
if (!isBatching) {
|
|
30
|
+
onChange();
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const value = Reflect.get(target, prop, receiver);
|
|
36
|
+
if (isPlainObjectOrArray(value) && proxyMap.has(value)) {
|
|
37
|
+
return proxyMap.get(value);
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
},
|
|
41
|
+
set(target, prop, value, receiver) {
|
|
42
|
+
// Unpack if value is a proxy itself
|
|
43
|
+
const rawValue = rawMap.has(value) ? rawMap.get(value) : value;
|
|
44
|
+
// Immediately wrap new nested objects
|
|
45
|
+
if (isPlainObjectOrArray(rawValue)) {
|
|
46
|
+
createStateProxy(rawValue, onChange);
|
|
47
|
+
}
|
|
48
|
+
const result = Reflect.set(target, prop, rawValue, receiver);
|
|
49
|
+
// Trigger listeners on write
|
|
50
|
+
if (!isBatching)
|
|
51
|
+
onChange();
|
|
52
|
+
return result;
|
|
53
|
+
},
|
|
54
|
+
deleteProperty(target, prop) {
|
|
55
|
+
const result = Reflect.deleteProperty(target, prop);
|
|
56
|
+
if (!isBatching)
|
|
57
|
+
onChange();
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const proxy = new Proxy(state, handler);
|
|
62
|
+
proxyMap.set(state, proxy);
|
|
63
|
+
rawMap.set(proxy, state);
|
|
64
|
+
// Recursively proxy existing nested objects upfront
|
|
65
|
+
for (const key in state) {
|
|
66
|
+
if (Object.prototype.hasOwnProperty.call(state, key)) {
|
|
67
|
+
const val = state[key];
|
|
68
|
+
if (isPlainObjectOrArray(val)) {
|
|
69
|
+
createStateProxy(val, onChange);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return proxy;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Creates a reactive store with auto-tracking features via Proxies.
|
|
78
|
+
* Any mutations to the state via setState or directly to deep objects will notify subscribers.
|
|
79
|
+
*
|
|
80
|
+
* @param definition - The initial state object. Must be an object.
|
|
81
|
+
* @returns A generic store instance with getState, setState, and subscribe methods.
|
|
82
|
+
*/
|
|
83
|
+
function createStore(definition) {
|
|
84
|
+
const listeners = new Set();
|
|
85
|
+
const notify = () => {
|
|
86
|
+
const currentState = store.getState();
|
|
87
|
+
listeners.forEach(listener => listener(currentState));
|
|
88
|
+
};
|
|
89
|
+
const proxyState = createStateProxy(definition, notify);
|
|
90
|
+
const store = {
|
|
91
|
+
getState: () => {
|
|
92
|
+
// Return unwrapped raw value representing the current state.
|
|
93
|
+
// Notice that proxyState mutates "definition" directly, so definition is always up to date.
|
|
94
|
+
return definition;
|
|
95
|
+
},
|
|
96
|
+
setState: (updater) => {
|
|
97
|
+
const updates = typeof updater === 'function' ? updater(store.getState()) : updater;
|
|
98
|
+
for (const key in updates) {
|
|
99
|
+
if (Object.prototype.hasOwnProperty.call(updates, key)) {
|
|
100
|
+
// Assign to proxy to trigger proxy 'set' traps which handles notification.
|
|
101
|
+
proxyState[key] = updates[key];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
subscribe: (listener) => {
|
|
106
|
+
listeners.add(listener);
|
|
107
|
+
return () => {
|
|
108
|
+
listeners.delete(listener);
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
return store;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export { createStore };
|
|
116
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/proxy.ts","../src/store.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{produce as t}from"immer";import{g as e}from"./registry-zaKZ1P-s.js";const n=new WeakMap,r=new WeakMap;let o=!1;function s(t){if(null===t||"object"!=typeof t)return!1;return Object.getPrototypeOf(t)===Object.prototype||Array.isArray(t)}function c(t,e){if(!s(t))return t;if(n.has(t))return n.get(t);if(r.has(t))return t;const i=new Proxy(t,{get(t,r,c){if(Array.isArray(t)&&"string"==typeof r&&["push","pop","shift","unshift","splice","sort","reverse"].includes(r))return(...n)=>{const s=o;o=!0;const i=Reflect.get(t,r,c),a=Reflect.apply(i,c,n);return o=s,o||e(),a};const i=Reflect.get(t,r,c);return s(i)&&n.has(i)?n.get(i):i},set(t,n,i,a){const f=r.has(i)?r.get(i):i;s(f)&&c(f,e);const l=Reflect.set(t,n,f,a);return o||e(),l},deleteProperty(t,n){const r=Reflect.deleteProperty(t,n);return o||e(),r}});n.set(t,i),r.set(i,t);for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)){const r=t[n];s(r)&&c(r,e)}return i}let i=0;const a=new Set;function f(t){i++;try{t()}finally{i--,0===i&&a.forEach(t=>t())}}function l(){return i>0}function u(n,r={}){const{actions:o={},...s}=n;let i={...s};const f=[],u=new Set,y=[];for(const t of e())if(t.processDefinition){const e=t.processDefinition(i);i={...i,...e.state},e.asyncInits&&f.push(...e.asyncInits),e.readOnlyKeys&&e.readOnlyKeys.forEach(t=>u.add(t)),e.onStateChanged&&y.push(e.onStateChanged)}const p={current:null},d=new Map;for(const{key:t,init:e}of f){const n=e(e=>{p.current?.({[t]:e})});d.set(t,n),i[t]=n.getState()}const h=i,g=new Set;let S=h,w=0,O=!1,b=null,j=new Set,m=null,P=null;const k=()=>{w>0||l()?O=!0:(O=!1,g.forEach(t=>t(S)))},A=t=>{const e=(t,e)=>{S[t]=e};for(const n of y)n({changedKeys:t,getState:()=>S,setComputed:e,store:R})},E=c(h,k),v=e=>{let n;if(n="function"==typeof e?r.immer?t(S,e):{...S,...e(S)}:{...S,...e},n===S)return;const o={...n};u.forEach(t=>delete o[t]);const s=S,c=new Set(Object.keys(o).filter(t=>s[t]!==o[t]));S={...S,...o},w>0||l()?(c.forEach(t=>j.add(t)),O=!0):A(c),m=null,P=null,w++;try{for(const t in S)Object.prototype.hasOwnProperty.call(S,t)&&S[t]!==s[t]&&(E[t]=S[t])}finally{w--}w>0?O=!0:k()};p.current=v;const R={getState:()=>{if(null!==m&&P===S)return m;const t={...S};return m=t,P=S,t},setState:v,subscribe:t=>{var e;return g.add(t),1===g.size&&(e=()=>{O&&(O=!1,A(j),j=new Set,k())},a.add(e),b=()=>{a.delete(e)},O&&(O=!1,A(j),j=new Set,k())),()=>{g.delete(t),0===g.size&&(b?.(),b=null)}},batch:t=>{w++;try{t()}finally{w--,0===w&&O&&(O=!1,A(j),j=new Set,k())}},actions:{},fetch:async t=>{throw new Error(`Storve: no async key "${t}" found in store. Import "storve/async" to use createAsync.`)},refetch:async()=>{},invalidate:()=>{},invalidateAll:()=>{},getAsyncState:()=>{}};for(const t of e())if(t.extendStore){const e=t.extendStore({engines:d,store:R,definition:n});Object.defineProperties(R,Object.getOwnPropertyDescriptors(e))}A(new Set(Object.keys(S)));const x={};return Object.keys(o).forEach(t=>{x[t]=(...e)=>o[t](...e)}),Object.assign(R,x),R.actions=x,R}function y(t,...e){if(0===e.length)return t;let n=t;for(let t=0;t<e.length;t++)n=e[t](n);return n}export{f as batch,y as compose,u as createStore};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/proxy.ts","../src/batch.ts","../src/store.ts","../src/compose.ts"],"sourcesContent":[null,null,null,null],"names":["proxyMap","WeakMap","rawMap","isBatching","isPlainObjectOrArray","value","Object","getPrototypeOf","prototype","Array","isArray","createStateProxy","state","onChange","has","get","proxy","Proxy","target","prop","receiver","includes","args","prevBatching","method","Reflect","result","apply","set","rawValue","deleteProperty","key","hasOwnProperty","call","val","batchCount","subscribers","Set","batch","fn","forEach","s","createStore","definition","options","actions","rawActions","initialData","workingData","allAsyncInits","readOnlyKeys","onStateChangedCallbacks","ext","getExtensions","processDefinition","asyncInits","push","k","add","onStateChanged","setStateRef","current","engines","Map","init","engine","nodeState","getState","initialState","listeners","currentState","batchDirty","unsubscribeBatch","pendingChangedKeys","lastSnapshot","lastSnapshotState","notify","listener","runOnStateChanged","changedKeys","setComputed","cb","store","proxyState","setState","updater","nextState","immer","produce","writableNext","prevState","updatedKeys","keys","filter","snapshot","subscribe","size","delete","fetch","async","Error","refetch","invalidate","invalidateAll","getAsyncState","extendStore","methods","defineProperties","getOwnPropertyDescriptors","boundActions","assign","compose","enhancers","length","currentStore","i"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PersistAdapter } from '../index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an IndexedDB persistence adapter.
|
|
4
|
+
* Lazily opens the database on first interaction and caches the Promise.
|
|
5
|
+
* Safe for Server-Side Rendering (SSR) — if 'indexedDB' is totally unavailable,
|
|
6
|
+
* methods elegantly degrade to returning null / no-op promises.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} [dbName='storve-persist'] - Optional custom database name.
|
|
9
|
+
* @returns {PersistAdapter} The IndexedDB persistence adapter.
|
|
10
|
+
*/
|
|
11
|
+
export declare function indexedDBAdapter(dbName?: string): PersistAdapter;
|
|
12
|
+
//# sourceMappingURL=indexedDB.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexedDB.d.ts","sourceRoot":"","sources":["../../../src/persist/adapters/indexedDB.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,MAAyB,GAAG,cAAc,CAsGlF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PersistAdapter } from '../index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a localStorage persistence adapter.
|
|
4
|
+
* Uses window.localStorage to automatically persist state modifications in the browser.
|
|
5
|
+
* Safe for Server-Side Rendering (SSR) — if 'window' is completely undefined,
|
|
6
|
+
* methods gracefully return null or perform no-ops.
|
|
7
|
+
*
|
|
8
|
+
* @returns {PersistAdapter} The localStorage persistence adapter.
|
|
9
|
+
*/
|
|
10
|
+
export declare function localStorageAdapter(): PersistAdapter;
|
|
11
|
+
//# sourceMappingURL=localStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localStorage.d.ts","sourceRoot":"","sources":["../../../src/persist/adapters/localStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CAiBpD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PersistAdapter } from '../index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an entirely isolated memory-based persistence adapter.
|
|
4
|
+
* This adapter uses a closure-scoped Map to store data, ensuring fully
|
|
5
|
+
* segregated instances without any module-level state.
|
|
6
|
+
* Ideal for testing or Node/SSR environments where no real storage is available.
|
|
7
|
+
*
|
|
8
|
+
* @returns {PersistAdapter} An isolated memory adapter instance.
|
|
9
|
+
*/
|
|
10
|
+
export declare function memoryAdapter(): PersistAdapter;
|
|
11
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/persist/adapters/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,cAAc,CAe9C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PersistAdapter } from '../index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a sessionStorage persistence adapter.
|
|
4
|
+
* Uses window.sessionStorage to persist state for the lifespan of the browser tab.
|
|
5
|
+
* Safe for Server-Side Rendering (SSR) — if 'window' is completely undefined,
|
|
6
|
+
* methods gracefully return null or perform no-ops.
|
|
7
|
+
*
|
|
8
|
+
* @returns {PersistAdapter} The sessionStorage persistence adapter.
|
|
9
|
+
*/
|
|
10
|
+
export declare function sessionStorageAdapter(): PersistAdapter;
|
|
11
|
+
//# sourceMappingURL=sessionStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionStorage.d.ts","sourceRoot":"","sources":["../../../src/persist/adapters/sessionStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,cAAc,CAiBtD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a debounced version of a provided function that delays its execution until after
|
|
3
|
+
* the specified milliseconds have elapsed since the last time it was called.
|
|
4
|
+
* If 'ms' is 0, the function invokes immediately.
|
|
5
|
+
*
|
|
6
|
+
* @template T - The arguments type array.
|
|
7
|
+
* @param {(...args: T) => void} fn - The function to debounce.
|
|
8
|
+
* @param {number} ms - The number of milliseconds to wait.
|
|
9
|
+
* @returns {(...args: T) => void} The new debounced function.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createDebounce<T extends unknown[]>(fn: (...args: T) => void, ms: number): (...args: T) => void;
|
|
12
|
+
//# sourceMappingURL=debounce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../src/persist/debounce.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAiB9G"}
|