@storve/core 1.0.2 → 1.0.4

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.
Files changed (198) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -16
  3. package/dist/adapters/indexedDB.cjs +0 -1
  4. package/dist/adapters/indexedDB.mjs +0 -1
  5. package/dist/adapters/localStorage.cjs +0 -1
  6. package/dist/adapters/localStorage.mjs +0 -1
  7. package/dist/adapters/memory.cjs +0 -1
  8. package/dist/adapters/memory.mjs +0 -1
  9. package/dist/adapters/sessionStorage.cjs +0 -1
  10. package/dist/adapters/sessionStorage.mjs +0 -1
  11. package/dist/async-entry.d.ts +0 -1
  12. package/dist/async.cjs +0 -1
  13. package/dist/async.d.ts +0 -1
  14. package/dist/async.mjs +0 -1
  15. package/dist/batch.d.ts +0 -1
  16. package/dist/compose.d.ts +0 -1
  17. package/dist/computed-entry.d.ts +0 -1
  18. package/dist/computed.cjs +0 -1
  19. package/dist/computed.d.ts +0 -1
  20. package/dist/computed.mjs +0 -1
  21. package/dist/devtools/history.d.ts +0 -1
  22. package/dist/devtools/index.d.ts +0 -1
  23. package/dist/devtools/redux-bridge.d.ts +0 -1
  24. package/dist/devtools/snapshots.d.ts +0 -1
  25. package/dist/devtools/withDevtools.d.ts +0 -1
  26. package/dist/devtools.cjs +0 -1
  27. package/dist/devtools.mjs +0 -1
  28. package/dist/extensions/noop.d.ts +0 -1
  29. package/dist/index.cjs +0 -1
  30. package/dist/index.d.ts +0 -1
  31. package/dist/index.mjs +0 -1
  32. package/dist/persist/adapters/indexedDB.d.ts +0 -1
  33. package/dist/persist/adapters/localStorage.d.ts +0 -1
  34. package/dist/persist/adapters/memory.d.ts +0 -1
  35. package/dist/persist/adapters/sessionStorage.d.ts +0 -1
  36. package/dist/persist/debounce.d.ts +0 -1
  37. package/dist/persist/hydrate.d.ts +0 -1
  38. package/dist/persist/index.d.ts +0 -1
  39. package/dist/persist/serialize.d.ts +0 -1
  40. package/dist/persist.cjs +0 -1
  41. package/dist/persist.mjs +0 -1
  42. package/dist/proxy.d.ts +0 -1
  43. package/dist/registry-qtr1UpFU.js +0 -1
  44. package/dist/registry-zaKZ1P-s.js +0 -1
  45. package/dist/registry.d.ts +0 -1
  46. package/dist/signals/createSignal.d.ts +0 -1
  47. package/dist/signals/index.d.ts +0 -1
  48. package/dist/signals/useSignal.d.ts +0 -1
  49. package/dist/signals.cjs +0 -1
  50. package/dist/signals.mjs +0 -1
  51. package/dist/store.d.ts +0 -1
  52. package/dist/sync/channel.d.ts +0 -1
  53. package/dist/sync/index.d.ts +0 -1
  54. package/dist/sync/protocol.d.ts +0 -1
  55. package/dist/sync/withSync.d.ts +0 -1
  56. package/dist/sync.cjs +0 -1
  57. package/dist/sync.mjs +0 -1
  58. package/dist/types.d.ts +0 -1
  59. package/package.json +10 -3
  60. package/CHANGELOG.md +0 -151
  61. package/benchmarks/run.ts +0 -102
  62. package/benchmarks/week2.md +0 -9
  63. package/benchmarks/week2.ts +0 -64
  64. package/benchmarks/week4.md +0 -13
  65. package/benchmarks/week4.ts +0 -178
  66. package/benchmarks/week5.md +0 -15
  67. package/benchmarks/week5.ts +0 -184
  68. package/coverage/coverage-summary.json +0 -31
  69. package/dist/adapters/indexedDB.cjs.map +0 -1
  70. package/dist/adapters/indexedDB.mjs.map +0 -1
  71. package/dist/adapters/localStorage.cjs.map +0 -1
  72. package/dist/adapters/localStorage.mjs.map +0 -1
  73. package/dist/adapters/memory.cjs.map +0 -1
  74. package/dist/adapters/memory.mjs.map +0 -1
  75. package/dist/adapters/sessionStorage.cjs.map +0 -1
  76. package/dist/adapters/sessionStorage.mjs.map +0 -1
  77. package/dist/async-entry.d.ts.map +0 -1
  78. package/dist/async.cjs.map +0 -1
  79. package/dist/async.d.ts.map +0 -1
  80. package/dist/async.mjs.map +0 -1
  81. package/dist/batch.d.ts.map +0 -1
  82. package/dist/compose.d.ts.map +0 -1
  83. package/dist/computed-entry.d.ts.map +0 -1
  84. package/dist/computed.cjs.map +0 -1
  85. package/dist/computed.d.ts.map +0 -1
  86. package/dist/computed.mjs.map +0 -1
  87. package/dist/devtools/history.d.ts.map +0 -1
  88. package/dist/devtools/index.d.ts.map +0 -1
  89. package/dist/devtools/redux-bridge.d.ts.map +0 -1
  90. package/dist/devtools/snapshots.d.ts.map +0 -1
  91. package/dist/devtools/withDevtools.d.ts.map +0 -1
  92. package/dist/devtools.cjs.map +0 -1
  93. package/dist/devtools.mjs.map +0 -1
  94. package/dist/extensions/noop.d.ts.map +0 -1
  95. package/dist/index.cjs.js +0 -118
  96. package/dist/index.cjs.js.map +0 -1
  97. package/dist/index.cjs.map +0 -1
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/index.esm.js +0 -116
  100. package/dist/index.esm.js.map +0 -1
  101. package/dist/index.mjs.map +0 -1
  102. package/dist/persist/adapters/indexedDB.d.ts.map +0 -1
  103. package/dist/persist/adapters/localStorage.d.ts.map +0 -1
  104. package/dist/persist/adapters/memory.d.ts.map +0 -1
  105. package/dist/persist/adapters/sessionStorage.d.ts.map +0 -1
  106. package/dist/persist/debounce.d.ts.map +0 -1
  107. package/dist/persist/hydrate.d.ts.map +0 -1
  108. package/dist/persist/index.d.ts.map +0 -1
  109. package/dist/persist/serialize.d.ts.map +0 -1
  110. package/dist/persist.cjs.map +0 -1
  111. package/dist/persist.mjs.map +0 -1
  112. package/dist/proxy.d.ts.map +0 -1
  113. package/dist/registry-D3X0HSbl.js +0 -26
  114. package/dist/registry-D3X0HSbl.js.map +0 -1
  115. package/dist/registry-RDjbeJdx.js +0 -29
  116. package/dist/registry-RDjbeJdx.js.map +0 -1
  117. package/dist/registry-qtr1UpFU.js.map +0 -1
  118. package/dist/registry-zaKZ1P-s.js.map +0 -1
  119. package/dist/registry.d.ts.map +0 -1
  120. package/dist/signals/createSignal.d.ts.map +0 -1
  121. package/dist/signals/index.d.ts.map +0 -1
  122. package/dist/signals/useSignal.d.ts.map +0 -1
  123. package/dist/signals.cjs.map +0 -1
  124. package/dist/signals.mjs.map +0 -1
  125. package/dist/stats.html +0 -4949
  126. package/dist/store.d.ts.map +0 -1
  127. package/dist/sync/channel.d.ts.map +0 -1
  128. package/dist/sync/index.d.ts.map +0 -1
  129. package/dist/sync/protocol.d.ts.map +0 -1
  130. package/dist/sync/withSync.d.ts.map +0 -1
  131. package/dist/sync.cjs.map +0 -1
  132. package/dist/sync.mjs.map +0 -1
  133. package/dist/types.d.ts.map +0 -1
  134. package/rollup.config.mjs +0 -44
  135. package/src/async-entry.ts +0 -6
  136. package/src/async.ts +0 -240
  137. package/src/batch.ts +0 -33
  138. package/src/compose.ts +0 -50
  139. package/src/computed-entry.ts +0 -6
  140. package/src/computed.ts +0 -187
  141. package/src/devtools/history.ts +0 -103
  142. package/src/devtools/index.ts +0 -5
  143. package/src/devtools/redux-bridge.ts +0 -70
  144. package/src/devtools/snapshots.ts +0 -54
  145. package/src/devtools/withDevtools.ts +0 -196
  146. package/src/extensions/noop.ts +0 -12
  147. package/src/index.ts +0 -4
  148. package/src/persist/adapters/indexedDB.ts +0 -114
  149. package/src/persist/adapters/localStorage.ts +0 -28
  150. package/src/persist/adapters/memory.ts +0 -26
  151. package/src/persist/adapters/sessionStorage.ts +0 -28
  152. package/src/persist/debounce.ts +0 -28
  153. package/src/persist/hydrate.ts +0 -60
  154. package/src/persist/index.ts +0 -141
  155. package/src/persist/serialize.ts +0 -60
  156. package/src/proxy.ts +0 -87
  157. package/src/registry.ts +0 -67
  158. package/src/signals/createSignal.ts +0 -81
  159. package/src/signals/index.ts +0 -20
  160. package/src/signals/useSignal.ts +0 -18
  161. package/src/store.ts +0 -250
  162. package/src/sync/channel.ts +0 -15
  163. package/src/sync/index.ts +0 -3
  164. package/src/sync/protocol.ts +0 -18
  165. package/src/sync/withSync.ts +0 -147
  166. package/src/types.ts +0 -159
  167. package/tests/async.test.ts +0 -1100
  168. package/tests/batch.test.ts +0 -41
  169. package/tests/compose.test.ts +0 -209
  170. package/tests/computed.test.ts +0 -867
  171. package/tests/devtools.test.ts +0 -1039
  172. package/tests/integration/persist.integration.test.ts +0 -258
  173. package/tests/integration/signals.integration.test.ts +0 -309
  174. package/tests/integration.test.ts +0 -278
  175. package/tests/persist/adapters/indexedDB.adapter.test.ts +0 -185
  176. package/tests/persist/adapters/localStorage.adapter.test.ts +0 -105
  177. package/tests/persist/adapters/memory.adapter.test.ts +0 -112
  178. package/tests/persist/adapters/sessionStorage.adapter.test.ts +0 -128
  179. package/tests/persist/debounce.test.ts +0 -121
  180. package/tests/persist/hydrate.test.ts +0 -120
  181. package/tests/persist/migrate.test.ts +0 -208
  182. package/tests/persist/persist.test.ts +0 -357
  183. package/tests/persist/serialize.test.ts +0 -128
  184. package/tests/proxy.test.ts +0 -473
  185. package/tests/registry.test.ts +0 -67
  186. package/tests/signals/derived.test.ts +0 -244
  187. package/tests/signals/inference.test.ts +0 -108
  188. package/tests/signals/signal.test.ts +0 -348
  189. package/tests/signals/useSignal.test.tsx +0 -275
  190. package/tests/store.test.ts +0 -482
  191. package/tests/stress.test.ts +0 -268
  192. package/tests/sync.test.ts +0 -576
  193. package/tests/types.test.ts +0 -32
  194. package/tests/v0.3.test.ts +0 -813
  195. package/tree-shake-test.js +0 -1
  196. package/tsconfig.json +0 -15
  197. package/vitest.config.ts +0 -22
  198. package/vitest_play.ts +0 -7
package/benchmarks/run.ts DELETED
@@ -1,102 +0,0 @@
1
- import { performance } from 'perf_hooks'
2
- import { createStore } from '../src/index'
3
-
4
- type BenchmarkResult = {
5
- operation: string
6
- averageMs: string
7
- status: string
8
- }
9
-
10
- function bench(label: string, fn: () => void, iterations = 100_000): BenchmarkResult {
11
- // Warmup
12
- for (let i = 0; i < 1000; i++) fn()
13
-
14
- const start = performance.now()
15
- for (let i = 0; i < iterations; i++) fn()
16
- const avg = (performance.now() - start) / iterations
17
-
18
- const limits: Record<string, number> = {
19
- 'createStore() call': 1,
20
- 'getState() read': 0.1,
21
- 'setState() write + notify (100 subs)': 1,
22
- 'Nested read (3 levels deep)': 0.1,
23
- 'Subscribe + Unsubscribe cycle': 0.1,
24
- }
25
-
26
- const limit = limits[label]
27
- const status = avg <= limit ? '✅ PASS' : '❌ FAIL'
28
-
29
- return {
30
- operation: label,
31
- averageMs: avg.toFixed(8) + 'ms',
32
- status,
33
- }
34
- }
35
-
36
- function runBenchmarks(): void {
37
- console.log('\n⚡ Storve — Benchmark Results\n')
38
-
39
- const results: BenchmarkResult[] = []
40
-
41
- // 1. createStore
42
- results.push(bench('createStore() call', () => {
43
- createStore({ count: 0, name: 'test' })
44
- }, 10_000))
45
-
46
- // 2. getState
47
- const storeForGet = createStore({ count: 0 })
48
- results.push(bench('getState() read', () => {
49
- storeForGet.getState()
50
- }))
51
-
52
- // 3. setState + notify with 100 subscribers
53
- const storeForSet = createStore({ count: 0 })
54
- for (let i = 0; i < 100; i++) storeForSet.subscribe(() => { })
55
- let counter = 0
56
- results.push(bench('setState() write + notify (100 subs)', () => {
57
- storeForSet.setState({ count: counter++ })
58
- }, 10_000))
59
-
60
- // 4. Nested read
61
- const storeForNested = createStore({
62
- level1: { level2: { level3: { value: 42 } } },
63
- })
64
- results.push(bench('Nested read (3 levels deep)', () => {
65
- storeForNested.getState().level1.level2.level3.value
66
- }))
67
-
68
- // 5. Subscribe + Unsubscribe
69
- const storeForSub = createStore({ count: 0 })
70
- results.push(bench('Subscribe + Unsubscribe cycle', () => {
71
- const unsub = storeForSub.subscribe(() => { })
72
- unsub()
73
- }))
74
-
75
- // Print table
76
- const colWidths = { operation: 45, averageMs: 20, status: 10 }
77
- const header =
78
- 'Operation'.padEnd(colWidths.operation) +
79
- 'Average Time'.padEnd(colWidths.averageMs) +
80
- 'Status'
81
- const divider = '-'.repeat(header.length)
82
-
83
- console.log(header)
84
- console.log(divider)
85
-
86
- let allPassed = true
87
- for (const r of results) {
88
- if (r.status.includes('FAIL')) allPassed = false
89
- console.log(
90
- r.operation.padEnd(colWidths.operation) +
91
- r.averageMs.padEnd(colWidths.averageMs) +
92
- r.status
93
- )
94
- }
95
-
96
- console.log(divider)
97
- console.log(allPassed ? '\n✅ All benchmarks passed!\n' : '\n❌ Some benchmarks failed!\n')
98
-
99
- if (!allPassed) process.exit(1)
100
- }
101
-
102
- runBenchmarks()
@@ -1,9 +0,0 @@
1
- # Week 2 Benchmarks
2
-
3
- | Operation | Average Time (ms) |
4
- |---|---|
5
- | createStore() call | 0.0891ms |
6
- | getState() read | 0.000001ms |
7
- | setState() write + notify (100 subs) | 0.001450ms |
8
- | Nested read (3 levels deep) | 0.000005ms |
9
- | Subscribe + Unsubscribe cycle | 0.000159ms |
@@ -1,64 +0,0 @@
1
- import { performance } from 'perf_hooks';
2
- import * as fs from 'fs';
3
- import * as path from 'path';
4
- import { createStore } from '../src/store';
5
-
6
- function measure(name: string, fn: () => void, iterations = 10000) {
7
- const start = performance.now();
8
- for (let i = 0; i < iterations; i++) {
9
- fn();
10
- }
11
- const duration = performance.now() - start;
12
- const avg = duration / iterations;
13
- return `| ${name} | ${avg.toFixed(6)}ms |`;
14
- }
15
-
16
- async function run() {
17
- const results = [
18
- `# Week 2 Benchmarks`,
19
- ``,
20
- `| Operation | Average Time (ms) |`,
21
- `|---|---|`
22
- ];
23
-
24
- // createStore() call (< 1ms)
25
- const t0 = performance.now();
26
- const store = createStore({ count: 0 });
27
- const createTime = performance.now() - t0;
28
- results.push(`| createStore() call | ${createTime.toFixed(4)}ms |`);
29
-
30
- // getState() read (< 0.1ms)
31
- results.push(measure('getState() read', () => {
32
- store.getState();
33
- }, 1000000));
34
-
35
- // setState() write + notify (< 1ms for 100 subscribers)
36
- const storeWithSubs = createStore({ value: 0 });
37
- for (let i = 0; i < 100; i++) {
38
- storeWithSubs.subscribe(() => { });
39
- }
40
- results.push(measure('setState() write + notify (100 subs)', () => {
41
- storeWithSubs.setState({ value: Math.random() });
42
- }, 1000));
43
-
44
- // Nested read (3 levels deep) (< 0.1ms)
45
- const nestedStore = createStore({ root: { level1: { level2: { val: 42 } } } });
46
- results.push(measure('Nested read (3 levels deep)', () => {
47
- void nestedStore.getState().root.level1.level2.val;
48
- }, 1000000));
49
-
50
- // Subscribe + Unsubscribe cycle (< 0.1ms)
51
- const subStore = createStore({ x: 1 });
52
- results.push(measure('Subscribe + Unsubscribe cycle', () => {
53
- const unsub = subStore.subscribe(() => { });
54
- unsub();
55
- }));
56
-
57
- const content = results.join('\n');
58
- console.log(content);
59
-
60
- fs.mkdirSync(path.join(process.cwd(), 'benchmarks'), { recursive: true });
61
- fs.writeFileSync(path.join(process.cwd(), 'benchmarks', 'week2.md'), content);
62
- }
63
-
64
- run();
@@ -1,13 +0,0 @@
1
- # Week 4 Benchmarks (v0.3)
2
-
3
- | Operation | Average Time | Status |
4
- | :--- | :--- | :--- |
5
- | action call (no-arg) | 0.00026063ms | ✅ PASS |
6
- | action call (with arg) | 0.00026390ms | ✅ PASS |
7
- | action call (async dispatch) | 0.00019697ms | ✅ PASS |
8
- | setState (immer mutator, primitive) | 0.00077454ms | ✅ PASS |
9
- | setState (immer mutator, nested object) | 0.00252697ms | ✅ PASS |
10
- | setState (immer mutator, array push) | 0.00828483ms | ✅ PASS |
11
- | batch (3x setState, 1 notify) | 0.00259722ms | ✅ PASS |
12
- | batch (10x setState, 1 notify) | 0.03388838ms | ✅ PASS |
13
- | action excluded from getState() | 0.00000872ms | ✅ PASS |
@@ -1,178 +0,0 @@
1
- import { createStore } from '../src'
2
-
3
- interface BenchmarkResult {
4
- operation: string
5
- averageMs: string
6
- status: string
7
- }
8
-
9
- function bench(
10
- label: string,
11
- fn: () => void,
12
- iterations = 100_000
13
- ): BenchmarkResult {
14
- // Warmup
15
- for (let i = 0; i < 1000; i++) fn()
16
-
17
- const start = performance.now()
18
- for (let i = 0; i < iterations; i++) fn()
19
- const end = performance.now()
20
-
21
- const avg = (end - start) / iterations
22
-
23
- const limits: Record<string, number> = {
24
- 'action call (no-arg)': 0.5,
25
- 'action call (with arg)': 0.5,
26
- 'action call (async dispatch)': 1.0,
27
- 'setState (immer mutator, primitive)': 1.0,
28
- 'setState (immer mutator, nested object)': 2.0,
29
- 'setState (immer mutator, array push)': 2.0,
30
- 'batch (3x setState, 1 notify)': 1.5,
31
- 'batch (10x setState, 1 notify)': 3.0,
32
- 'action excluded from getState()': 0.2,
33
- }
34
-
35
- const limit = limits[label] ?? 1
36
- const status = avg <= limit ? '✅ PASS' : '❌ FAIL'
37
- return { operation: label, averageMs: avg.toFixed(8) + 'ms', status }
38
- }
39
-
40
- function runBenchmarks(): void {
41
- console.log('\n⚡ Storve Core — Week 4 Benchmark Results (v0.3)\n')
42
-
43
- const results: BenchmarkResult[] = []
44
-
45
- // ── 1. Action call — no argument
46
- const store1 = createStore({
47
- count: 0,
48
- actions: {
49
- increment() { store1.setState(s => ({ count: s.count + 1 })) }
50
- }
51
- })
52
- results.push(bench('action call (no-arg)', () => {
53
- store1.increment()
54
- }))
55
-
56
- // ── 2. Action call — with argument
57
- const store2 = createStore({
58
- count: 0,
59
- actions: {
60
- incrementBy(n: number) { store2.setState(s => ({ count: s.count + n })) }
61
- }
62
- })
63
- results.push(bench('action call (with arg)', () => {
64
- store2.incrementBy(1)
65
- }))
66
-
67
- // ── 3. Async action dispatch (fire, don't await — measures dispatch overhead)
68
- const store3 = createStore({
69
- count: 0,
70
- actions: {
71
- async incrementAsync() {
72
- await Promise.resolve()
73
- store3.setState(s => ({ count: s.count + 1 }))
74
- }
75
- }
76
- })
77
- results.push(bench('action call (async dispatch)', () => {
78
- void store3.incrementAsync()
79
- }, 10_000))
80
-
81
- // ── 4. Immer — primitive mutation
82
- const store4 = createStore({ count: 0 }, { immer: true })
83
- results.push(bench('setState (immer mutator, primitive)', () => {
84
- store4.setState(draft => { draft.count++ })
85
- }))
86
-
87
- // ── 5. Immer — nested object mutation
88
- const store5 = createStore({
89
- user: { name: 'Alice', age: 30, score: 0 }
90
- }, { immer: true })
91
- results.push(bench('setState (immer mutator, nested object)', () => {
92
- store5.setState(draft => { draft.user.score++ })
93
- }))
94
-
95
- // ── 6. Immer — array push
96
- const store6 = createStore({ items: [] as number[] }, { immer: true })
97
- let idCounter = 0
98
- results.push(bench('setState (immer mutator, array push)', () => {
99
- store6.setState(draft => { draft.items.push(idCounter++) })
100
- // Keep array from growing unboundedly
101
- if (store6.getState().items.length > 100) {
102
- store6.setState({ items: [] })
103
- }
104
- }, 10_000))
105
-
106
- // ── 7. Batch — 3 setState calls
107
- const store7 = createStore({ a: 0, b: 0, c: 0 })
108
- let n7 = 0
109
- results.push(bench('batch (3x setState, 1 notify)', () => {
110
- store7.batch(() => {
111
- store7.setState({ a: n7 })
112
- store7.setState({ b: n7 })
113
- store7.setState({ c: n7++ })
114
- })
115
- }))
116
-
117
- // ── 8. Batch — 10 setState calls
118
- const store8 = createStore({
119
- v0: 0, v1: 0, v2: 0, v3: 0, v4: 0,
120
- v5: 0, v6: 0, v7: 0, v8: 0, v9: 0,
121
- })
122
- let n8 = 0
123
- results.push(bench('batch (10x setState, 1 notify)', () => {
124
- store8.batch(() => {
125
- store8.setState({ v0: n8 })
126
- store8.setState({ v1: n8 })
127
- store8.setState({ v2: n8 })
128
- store8.setState({ v3: n8 })
129
- store8.setState({ v4: n8 })
130
- store8.setState({ v5: n8 })
131
- store8.setState({ v6: n8 })
132
- store8.setState({ v7: n8 })
133
- store8.setState({ v8: n8 })
134
- store8.setState({ v9: n8++ })
135
- })
136
- }))
137
-
138
- // ── 9. Action excluded from getState — confirms no overhead
139
- const store9 = createStore({
140
- count: 0,
141
- actions: { increment() { store9.setState(s => ({ count: s.count + 1 })) } }
142
- })
143
- results.push(bench('action excluded from getState()', () => {
144
- const state = store9.getState()
145
- void ('increment' in state)
146
- }))
147
-
148
- // ── Print results
149
- const colWidths = { operation: 48, averageMs: 22, status: 10 }
150
- const header =
151
- 'Operation'.padEnd(colWidths.operation) +
152
- 'Average Time'.padEnd(colWidths.averageMs) +
153
- 'Status'
154
- const divider = '─'.repeat(header.length)
155
-
156
- console.log(header)
157
- console.log(divider)
158
-
159
- let allPassed = true
160
- for (const r of results) {
161
- if (r.status.includes('FAIL')) allPassed = false
162
- console.log(
163
- r.operation.padEnd(colWidths.operation) +
164
- r.averageMs.padEnd(colWidths.averageMs) +
165
- r.status
166
- )
167
- }
168
-
169
- console.log(divider)
170
- console.log(allPassed
171
- ? '\n✅ All Week 4 benchmarks passed!\n'
172
- : '\n❌ Some benchmarks failed — investigate before merging.\n'
173
- )
174
-
175
- if (!allPassed) process.exit(1)
176
- }
177
-
178
- runBenchmarks()
@@ -1,15 +0,0 @@
1
- # Week 5 Benchmarks (v0.4 Async State)
2
-
3
- | Operation | Average Time | Status |
4
- | :--- | :--- | :--- |
5
- | createAsync() initialization | 0.00023803ms | ✅ PASS |
6
- | fetch() - cache hit (TTL) | 0.00055767ms | ✅ PASS |
7
- | fetch() - cache miss (resolved) | 0.00344446ms | ✅ PASS |
8
- | refetch() - overhead | 0.00452113ms | ✅ PASS |
9
- | optimistic update - immediate state change | 0.00286880ms | ✅ PASS |
10
-
11
- ## Observations
12
- - **Engine Initialization**: `createAsync` is extremely lightweight as it only returns a definition object. The actual engine is lazily initialized when the store is created.
13
- - **Cache Performance**: TTL cache hits are highly optimized (~0.5ns), adding negligible overhead to state reads.
14
- - **Engine Overhead**: Cache misses and refetches show roughly 3-4µs overhead. This is well within the 1ms budget for store operations, even considering the overhead of Promise resolution in the benchmark.
15
- - **Optimistic Updates**: Immediate state updates via optimistic results are fast (~2.8µs), ensuring UI responsiveness during async triggers.
@@ -1,184 +0,0 @@
1
- import { createStore } from '../src'
2
- import { createAsync } from '../src/async'
3
- import { computed } from '../src/computed'
4
-
5
- interface BenchmarkResult {
6
- operation: string
7
- averageMs: string
8
- status: string
9
- }
10
-
11
- async function benchAsync(
12
- label: string,
13
- fn: () => Promise<void>,
14
- iterations = 1000
15
- ): Promise<BenchmarkResult> {
16
- // Warmup
17
- for (let i = 0; i < 100; i++) await fn()
18
-
19
- const start = performance.now()
20
- for (let i = 0; i < iterations; i++) await fn()
21
- const end = performance.now()
22
-
23
- const avg = (end - start) / iterations
24
-
25
- const limits: Record<string, number> = {
26
- 'createAsync() initialization': 0.1,
27
- 'fetch() - cache hit (TTL)': 0.1,
28
- 'fetch() - cache miss (resolved)': 1.0,
29
- 'refetch() - overhead': 0.1,
30
- 'optimistic update - immediate state change': 0.2,
31
- }
32
-
33
- const limit = limits[label] ?? 1.0
34
- const status = avg <= limit ? '✅ PASS' : '❌ FAIL'
35
- return { operation: label, averageMs: avg.toFixed(8) + 'ms', status }
36
- }
37
-
38
- function benchSync(
39
- label: string,
40
- fn: () => void,
41
- iterations = 100_000
42
- ): BenchmarkResult {
43
- // Warmup
44
- for (let i = 0; i < 1000; i++) fn()
45
-
46
- const start = performance.now()
47
- for (let i = 0; i < iterations; i++) fn()
48
- const end = performance.now()
49
-
50
- const avg = (end - start) / iterations
51
-
52
- const limits: Record<string, number> = {
53
- 'createAsync() initialization': 0.1,
54
- 'optimistic update - immediate state change': 0.2,
55
- 'computed read (getState().computed)': 0.1,
56
- 'computed recompute (1 dep)': 0.1,
57
- 'computed three-level chain recompute': 0.5,
58
- }
59
-
60
- const limit = limits[label] ?? 1.0
61
- const status = avg <= limit ? '✅ PASS' : '❌ FAIL'
62
- return { operation: label, averageMs: avg.toFixed(8) + 'ms', status }
63
- }
64
-
65
- async function runBenchmarks(): Promise<void> {
66
- console.log('\n⚡ Storve Core — Week 5 Benchmark Results (v0.4 Async + v0.5 Computed)\n')
67
-
68
- const results: BenchmarkResult[] = []
69
-
70
- // ── 1. createAsync initialization
71
- results.push(benchSync('createAsync() initialization', () => {
72
- createAsync(async () => 42)
73
- }))
74
-
75
- // ── 2. fetch() - cache hit (TTL)
76
- const store2 = createStore({
77
- data: createAsync(async () => 42, { ttl: 10000 })
78
- })
79
- // @ts-expect-error - internal access for benchmark
80
- await store2.fetch('data') // Fill cache
81
-
82
- results.push(await benchAsync('fetch() - cache hit (TTL)', async () => {
83
- // @ts-expect-error - internal access for benchmark
84
- await store2.fetch('data')
85
- }))
86
-
87
- // ── 3. fetch() - cache miss (resolved)
88
- // We use a pre-resolved promise to measure the engine overhead rather than network/timer latency
89
- const store3 = createStore({
90
- data: createAsync(() => Promise.resolve(42))
91
- })
92
- results.push(await benchAsync('fetch() - cache miss (resolved)', async () => {
93
- // @ts-expect-error - internal access for benchmark
94
- await store3.fetch('data')
95
- }))
96
-
97
- // ── 4. refetch() overhead
98
- const store4 = createStore({
99
- data: createAsync(() => Promise.resolve(42))
100
- })
101
- // @ts-expect-error - internal access for benchmark
102
- await store4.fetch('data')
103
- results.push(await benchAsync('refetch() - overhead', async () => {
104
- // @ts-expect-error - internal access for benchmark
105
- await store4.refetch('data')
106
- }))
107
-
108
- // ── 5. Optimistic update - immediate state change
109
- const store5 = createStore({
110
- data: createAsync(async (val: number) => {
111
- await new Promise(r => setTimeout(r, 10))
112
- return val
113
- })
114
- })
115
- results.push(benchSync('optimistic update - immediate state change', () => {
116
- // @ts-expect-error - internal access for benchmark
117
- store5.fetch('data', 100, { optimistic: { data: 100 } })
118
- }, 10_000))
119
-
120
- // ── 6. Computed read
121
- const store6 = createStore({
122
- n: 1,
123
- sum: computed((s: { n: number }) => s.n + 1),
124
- })
125
- results.push(benchSync('computed read (getState().computed)', () => {
126
- store6.getState().sum
127
- }))
128
-
129
- // ── 7. Computed recompute (one dependency)
130
- const store7 = createStore({
131
- x: 0,
132
- doubled: computed((s: { x: number }) => s.x * 2),
133
- })
134
- let x = 0
135
- results.push(benchSync('computed recompute (1 dep)', () => {
136
- store7.setState({ x: ++x })
137
- }, 10_000))
138
-
139
- // ── 8. Three-level chain recompute
140
- const store8 = createStore({
141
- base: 0,
142
- c1: computed((s: { base: number }) => s.base + 1),
143
- c2: computed((s: { c1: number }) => (s as { c1: number }).c1 * 2),
144
- c3: computed((s: { c2: number }) => (s as { c2: number }).c2 + 10),
145
- })
146
- let base = 0
147
- results.push(benchSync('computed three-level chain recompute', () => {
148
- store8.setState({ base: ++base })
149
- }, 10_000))
150
-
151
- // ── Print results
152
- const colWidths = { operation: 48, averageMs: 22, status: 10 }
153
- const header =
154
- 'Operation'.padEnd(colWidths.operation) +
155
- 'Average Time'.padEnd(colWidths.averageMs) +
156
- 'Status'
157
- const divider = '─'.repeat(header.length)
158
-
159
- console.log(header)
160
- console.log(divider)
161
-
162
- let allPassed = true
163
- for (const r of results) {
164
- if (r.status.includes('FAIL')) allPassed = false
165
- console.log(
166
- r.operation.padEnd(colWidths.operation) +
167
- r.averageMs.padEnd(colWidths.averageMs) +
168
- r.status
169
- )
170
- }
171
-
172
- console.log(divider)
173
- console.log(allPassed
174
- ? '\n✅ All Week 5 benchmarks passed!\n'
175
- : '\n❌ Some benchmarks failed — investigate performance regressions.\n'
176
- )
177
-
178
- if (!allPassed) process.exit(1)
179
- }
180
-
181
- runBenchmarks().catch(err => {
182
- console.error(err)
183
- process.exit(1)
184
- })
@@ -1,31 +0,0 @@
1
- {"total": {"lines":{"total":2273,"covered":2204,"skipped":0,"pct":96.96},"statements":{"total":2273,"covered":2204,"skipped":0,"pct":96.96},"functions":{"total":134,"covered":127,"skipped":0,"pct":94.77},"branches":{"total":466,"covered":441,"skipped":0,"pct":94.63},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":100}}
2
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/async.ts": {"lines":{"total":239,"covered":236,"skipped":0,"pct":98.74},"functions":{"total":18,"covered":18,"skipped":0,"pct":100},"statements":{"total":239,"covered":236,"skipped":0,"pct":98.74},"branches":{"total":63,"covered":60,"skipped":0,"pct":95.23}}
3
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/batch.ts": {"lines":{"total":33,"covered":33,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":33,"covered":33,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}}
4
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/compose.ts": {"lines":{"total":50,"covered":50,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":50,"covered":50,"skipped":0,"pct":100},"branches":{"total":5,"covered":5,"skipped":0,"pct":100}}
5
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/computed.ts": {"lines":{"total":187,"covered":187,"skipped":0,"pct":100},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":187,"covered":187,"skipped":0,"pct":100},"branches":{"total":42,"covered":42,"skipped":0,"pct":100}}
6
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/proxy.ts": {"lines":{"total":87,"covered":87,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":87,"covered":87,"skipped":0,"pct":100},"branches":{"total":31,"covered":31,"skipped":0,"pct":100}}
7
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/registry.ts": {"lines":{"total":67,"covered":67,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":67,"covered":67,"skipped":0,"pct":100},"branches":{"total":8,"covered":5,"skipped":0,"pct":62.5}}
8
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/store.ts": {"lines":{"total":250,"covered":244,"skipped":0,"pct":97.6},"functions":{"total":15,"covered":15,"skipped":0,"pct":100},"statements":{"total":250,"covered":244,"skipped":0,"pct":97.6},"branches":{"total":63,"covered":62,"skipped":0,"pct":98.41}}
9
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/types.ts": {"lines":{"total":159,"covered":159,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":159,"covered":159,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
10
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/devtools/history.ts": {"lines":{"total":103,"covered":103,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":103,"covered":103,"skipped":0,"pct":100},"branches":{"total":11,"covered":11,"skipped":0,"pct":100}}
11
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/devtools/index.ts": {"lines":{"total":0,"covered":0,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":0,"covered":0,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
12
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/devtools/redux-bridge.ts": {"lines":{"total":70,"covered":67,"skipped":0,"pct":95.71},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":70,"covered":67,"skipped":0,"pct":95.71},"branches":{"total":13,"covered":12,"skipped":0,"pct":92.3}}
13
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/devtools/snapshots.ts": {"lines":{"total":54,"covered":54,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":54,"covered":54,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}}
14
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/devtools/withDevtools.ts": {"lines":{"total":195,"covered":177,"skipped":0,"pct":90.76},"functions":{"total":14,"covered":14,"skipped":0,"pct":100},"statements":{"total":195,"covered":177,"skipped":0,"pct":90.76},"branches":{"total":33,"covered":30,"skipped":0,"pct":90.9}}
15
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/extensions/noop.ts": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
16
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/persist/debounce.ts": {"lines":{"total":28,"covered":28,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":28,"covered":28,"skipped":0,"pct":100},"branches":{"total":8,"covered":8,"skipped":0,"pct":100}}
17
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/persist/hydrate.ts": {"lines":{"total":60,"covered":60,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":60,"covered":60,"skipped":0,"pct":100},"branches":{"total":17,"covered":17,"skipped":0,"pct":100}}
18
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/persist/index.ts": {"lines":{"total":127,"covered":126,"skipped":0,"pct":99.21},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":127,"covered":126,"skipped":0,"pct":99.21},"branches":{"total":28,"covered":25,"skipped":0,"pct":89.28}}
19
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/persist/serialize.ts": {"lines":{"total":60,"covered":60,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":60,"covered":60,"skipped":0,"pct":100},"branches":{"total":15,"covered":13,"skipped":0,"pct":86.66}}
20
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/persist/adapters/indexedDB.ts": {"lines":{"total":114,"covered":98,"skipped":0,"pct":85.96},"functions":{"total":14,"covered":10,"skipped":0,"pct":71.42},"statements":{"total":114,"covered":98,"skipped":0,"pct":85.96},"branches":{"total":29,"covered":25,"skipped":0,"pct":86.2}}
21
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/persist/adapters/localStorage.ts": {"lines":{"total":28,"covered":28,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":28,"covered":28,"skipped":0,"pct":100},"branches":{"total":11,"covered":11,"skipped":0,"pct":100}}
22
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/persist/adapters/memory.ts": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":6,"covered":6,"skipped":0,"pct":100}}
23
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/persist/adapters/sessionStorage.ts": {"lines":{"total":28,"covered":28,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":28,"covered":28,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}}
24
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/signals/createSignal.ts": {"lines":{"total":81,"covered":80,"skipped":0,"pct":98.76},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":81,"covered":80,"skipped":0,"pct":98.76},"branches":{"total":19,"covered":19,"skipped":0,"pct":100}}
25
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/signals/index.ts": {"lines":{"total":20,"covered":0,"skipped":0,"pct":0},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":20,"covered":0,"skipped":0,"pct":0},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}}
26
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/signals/useSignal.ts": {"lines":{"total":18,"covered":18,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":18,"covered":18,"skipped":0,"pct":100},"branches":{"total":3,"covered":3,"skipped":0,"pct":100}}
27
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/sync/channel.ts": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":6,"covered":5,"skipped":0,"pct":83.33}}
28
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/sync/index.ts": {"lines":{"total":0,"covered":0,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":0,"covered":0,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}}
29
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/sync/protocol.ts": {"lines":{"total":18,"covered":17,"skipped":0,"pct":94.44},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":18,"covered":17,"skipped":0,"pct":94.44},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}}
30
- ,"/Users/dipanshusrivastava/Desktop/React Flux/packages/storve/src/sync/withSync.ts": {"lines":{"total":147,"covered":147,"skipped":0,"pct":100},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":147,"covered":147,"skipped":0,"pct":100},"branches":{"total":27,"covered":25,"skipped":0,"pct":92.59}}
31
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexedDB.cjs","sources":["../../src/persist/adapters/indexedDB.ts"],"sourcesContent":[null],"names":["dbName","STORE_NAME","isServer","indexedDB","dbPromise","getDB","Promise","resolve","request","open","onupgradeneeded","db","result","objectStoreNames","contains","createObjectStore","onsuccess","onerror","console","warn","err","getItem","key","transaction","objectStore","get","setItem","value","put","removeItem","delete"],"mappings":"sCAWM,SAA2BA,EAAiB,kBAChD,MAAMC,EAAa,SACbC,EAAgC,oBAAdC,UACxB,IAAIC,EAAgD,KAEpD,SAASC,IACP,OAAIH,EAAiBI,QAAQC,QAAQ,OACnB,OAAdH,IAEJA,EAAY,IAAIE,QAASC,IACvB,IACE,MAAMC,EAAUL,UAAUM,KAAKT,EAAQ,GAEvCQ,EAAQE,gBAAkB,KACxB,MAAMC,EAAKH,EAAQI,OACdD,EAAGE,iBAAiBC,SAASb,IAChCU,EAAGI,kBAAkBd,IAIzBO,EAAQQ,UAAY,KAClBT,EAAQC,EAAQI,SAGlBJ,EAAQS,QAAU,KAChBC,QAAQC,KAAK,sCAAsCnB,MACnDO,EAAQ,MAEZ,CAAE,MAAOa,GACPF,QAAQC,KAAK,yCAAyCnB,MAAYoB,GAClEb,EAAQ,KACV,KAxB6BH,EA4BjC,CAEA,MAAO,CACL,aAAMiB,CAAQC,GACZ,MAAMX,QAAWN,IACjB,OAAW,OAAPM,EAAoB,KAEjB,IAAIL,QAASC,IAClB,IACE,MAAMgB,EAAcZ,EAAGY,YAAYtB,EAAY,YAEzCO,EADQe,EAAYC,YAAYvB,GAChBwB,IAAIH,GAE1Bd,EAAQQ,UAAY,KAClB,MAAMJ,EAASJ,EAAQI,OAErBL,EADoB,iBAAXK,EACDA,EAEA,OAIZJ,EAAQS,QAAU,KAChBV,EAAQ,MAEZ,CAAE,MACAA,EAAQ,KACV,GAEJ,EAEA,aAAMmB,CAAQJ,EAAaK,GACzB,MAAMhB,QAAWN,IACjB,GAAW,OAAPM,EAEJ,OAAO,IAAIL,QAASC,IAClB,IACE,MAAMgB,EAAcZ,EAAGY,YAAYtB,EAAY,aAEzCO,EADQe,EAAYC,YAAYvB,GAChB2B,IAAID,EAAOL,GAEjCd,EAAQQ,UAAY,IAAMT,IAC1BC,EAAQS,QAAU,IAAMV,GAC1B,CAAE,MACAA,GACF,GAEJ,EAEA,gBAAMsB,CAAWP,GACf,MAAMX,QAAWN,IACjB,GAAW,OAAPM,EAEJ,OAAO,IAAIL,QAASC,IAClB,IACE,MAAMgB,EAAcZ,EAAGY,YAAYtB,EAAY,aAEzCO,EADQe,EAAYC,YAAYvB,GAChB6B,OAAOR,GAE7Bd,EAAQQ,UAAY,IAAMT,IAC1BC,EAAQS,QAAU,IAAMV,GAC1B,CAAE,MACAA,GACF,GAEJ,EAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexedDB.mjs","sources":["../../src/persist/adapters/indexedDB.ts"],"sourcesContent":[null],"names":["indexedDBAdapter","dbName","STORE_NAME","isServer","indexedDB","dbPromise","getDB","Promise","resolve","request","open","onupgradeneeded","db","result","objectStoreNames","contains","createObjectStore","onsuccess","onerror","console","warn","err","getItem","key","transaction","objectStore","get","setItem","value","put","removeItem","delete"],"mappings":"AAWM,SAAUA,EAAiBC,EAAiB,kBAChD,MAAMC,EAAa,SACbC,EAAgC,oBAAdC,UACxB,IAAIC,EAAgD,KAEpD,SAASC,IACP,OAAIH,EAAiBI,QAAQC,QAAQ,OACnB,OAAdH,IAEJA,EAAY,IAAIE,QAASC,IACvB,IACE,MAAMC,EAAUL,UAAUM,KAAKT,EAAQ,GAEvCQ,EAAQE,gBAAkB,KACxB,MAAMC,EAAKH,EAAQI,OACdD,EAAGE,iBAAiBC,SAASb,IAChCU,EAAGI,kBAAkBd,IAIzBO,EAAQQ,UAAY,KAClBT,EAAQC,EAAQI,SAGlBJ,EAAQS,QAAU,KAChBC,QAAQC,KAAK,sCAAsCnB,MACnDO,EAAQ,MAEZ,CAAE,MAAOa,GACPF,QAAQC,KAAK,yCAAyCnB,MAAYoB,GAClEb,EAAQ,KACV,KAxB6BH,EA4BjC,CAEA,MAAO,CACL,aAAMiB,CAAQC,GACZ,MAAMX,QAAWN,IACjB,OAAW,OAAPM,EAAoB,KAEjB,IAAIL,QAASC,IAClB,IACE,MAAMgB,EAAcZ,EAAGY,YAAYtB,EAAY,YAEzCO,EADQe,EAAYC,YAAYvB,GAChBwB,IAAIH,GAE1Bd,EAAQQ,UAAY,KAClB,MAAMJ,EAASJ,EAAQI,OAErBL,EADoB,iBAAXK,EACDA,EAEA,OAIZJ,EAAQS,QAAU,KAChBV,EAAQ,MAEZ,CAAE,MACAA,EAAQ,KACV,GAEJ,EAEA,aAAMmB,CAAQJ,EAAaK,GACzB,MAAMhB,QAAWN,IACjB,GAAW,OAAPM,EAEJ,OAAO,IAAIL,QAASC,IAClB,IACE,MAAMgB,EAAcZ,EAAGY,YAAYtB,EAAY,aAEzCO,EADQe,EAAYC,YAAYvB,GAChB2B,IAAID,EAAOL,GAEjCd,EAAQQ,UAAY,IAAMT,IAC1BC,EAAQS,QAAU,IAAMV,GAC1B,CAAE,MACAA,GACF,GAEJ,EAEA,gBAAMsB,CAAWP,GACf,MAAMX,QAAWN,IACjB,GAAW,OAAPM,EAEJ,OAAO,IAAIL,QAASC,IAClB,IACE,MAAMgB,EAAcZ,EAAGY,YAAYtB,EAAY,aAEzCO,EADQe,EAAYC,YAAYvB,GAChB6B,OAAOR,GAE7Bd,EAAQQ,UAAY,IAAMT,IAC1BC,EAAQS,QAAU,IAAMV,GAC1B,CAAE,MACAA,GACF,GAEJ,EAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"localStorage.cjs","sources":["../../src/persist/adapters/localStorage.ts"],"sourcesContent":[null],"names":["isServer","window","getItem","key","localStorage","setItem","value","removeItem"],"mappings":"oDAWE,MAAMA,EAA6B,oBAAXC,OAExB,MAAO,CACLC,QAAQC,GACFH,EAAiB,KACdC,OAAOG,aAAaF,QAAQC,GAErC,OAAAE,CAAQF,EAAaG,GACfN,GACJC,OAAOG,aAAaC,QAAQF,EAAKG,EACnC,EACA,UAAAC,CAAWJ,GACLH,GACJC,OAAOG,aAAaG,WAAWJ,EACjC,EAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"localStorage.mjs","sources":["../../src/persist/adapters/localStorage.ts"],"sourcesContent":[null],"names":["localStorageAdapter","isServer","window","getItem","key","localStorage","setItem","value","removeItem"],"mappings":"SAUgBA,IACd,MAAMC,EAA6B,oBAAXC,OAExB,MAAO,CACLC,QAAQC,GACFH,EAAiB,KACdC,OAAOG,aAAaF,QAAQC,GAErC,OAAAE,CAAQF,EAAaG,GACfN,GACJC,OAAOG,aAAaC,QAAQF,EAAKG,EACnC,EACA,UAAAC,CAAWJ,GACLH,GACJC,OAAOG,aAAaG,WAAWJ,EACjC,EAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.cjs","sources":["../../src/persist/adapters/memory.ts"],"sourcesContent":[null],"names":["store","Map","getItem","key","value","get","undefined","setItem","set","removeItem","delete"],"mappings":"8CAWE,MAAMA,EAAQ,IAAIC,IAElB,MAAO,CACL,OAAAC,CAAQC,GACN,MAAMC,EAAQJ,EAAMK,IAAIF,GACxB,YAAiBG,IAAVF,EAAsBA,EAAQ,IACvC,EACA,OAAAG,CAAQJ,EAAaC,GACnBJ,EAAMQ,IAAIL,EAAKC,EACjB,EACA,UAAAK,CAAWN,GACTH,EAAMU,OAAOP,EACf,EAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.mjs","sources":["../../src/persist/adapters/memory.ts"],"sourcesContent":[null],"names":["memoryAdapter","store","Map","getItem","key","value","get","undefined","setItem","set","removeItem","delete"],"mappings":"SAUgBA,IACd,MAAMC,EAAQ,IAAIC,IAElB,MAAO,CACL,OAAAC,CAAQC,GACN,MAAMC,EAAQJ,EAAMK,IAAIF,GACxB,YAAiBG,IAAVF,EAAsBA,EAAQ,IACvC,EACA,OAAAG,CAAQJ,EAAaC,GACnBJ,EAAMQ,IAAIL,EAAKC,EACjB,EACA,UAAAK,CAAWN,GACTH,EAAMU,OAAOP,EACf,EAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessionStorage.cjs","sources":["../../src/persist/adapters/sessionStorage.ts"],"sourcesContent":[null],"names":["isServer","window","getItem","key","sessionStorage","setItem","value","removeItem"],"mappings":"sDAWE,MAAMA,EAA6B,oBAAXC,OAExB,MAAO,CACLC,QAAQC,GACFH,EAAiB,KACdC,OAAOG,eAAeF,QAAQC,GAEvC,OAAAE,CAAQF,EAAaG,GACfN,GACJC,OAAOG,eAAeC,QAAQF,EAAKG,EACrC,EACA,UAAAC,CAAWJ,GACLH,GACJC,OAAOG,eAAeG,WAAWJ,EACnC,EAEJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessionStorage.mjs","sources":["../../src/persist/adapters/sessionStorage.ts"],"sourcesContent":[null],"names":["sessionStorageAdapter","isServer","window","getItem","key","sessionStorage","setItem","value","removeItem"],"mappings":"SAUgBA,IACd,MAAMC,EAA6B,oBAAXC,OAExB,MAAO,CACLC,QAAQC,GACFH,EAAiB,KACdC,OAAOG,eAAeF,QAAQC,GAEvC,OAAAE,CAAQF,EAAaG,GACfN,GACJC,OAAOG,eAAeC,QAAQF,EAAKG,EACrC,EACA,UAAAC,CAAWJ,GACLH,GACJC,OAAOG,eAAeG,WAAWJ,EACnC,EAEJ"}