@flashist/appframework 0.0.348 → 0.0.350
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +5 -2
- package/state/data/AppStateStorage.d.ts +31 -1
- package/state/data/AppStateStorage.js +164 -57
- package/state/data/AppStateStorage.js.map +1 -1
- package/state/data/StatePath.d.ts +56 -0
- package/state/data/StatePath.js +65 -0
- package/state/data/StatePath.js.map +1 -0
- package/state/data/StatePath.test.d.ts +1 -0
- package/state/data/StatePath.test.js +470 -0
- package/state/data/StatePath.test.js.map +1 -0
- package/state/data/StatePathProxy.d.ts +29 -0
- package/state/data/StatePathProxy.js +37 -0
- package/state/data/StatePathProxy.js.map +1 -0
- package/state/data/StatePathProxy.test.d.ts +1 -0
- package/state/data/StatePathProxy.test.js +406 -0
- package/state/data/StatePathProxy.test.js.map +1 -0
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
+
import { StatePath } from './StatePath';
|
|
3
|
+
/**
|
|
4
|
+
* Mock storage that tracks all operations for verification
|
|
5
|
+
*/
|
|
6
|
+
class MockStateStorage {
|
|
7
|
+
constructor(initialState = {}) {
|
|
8
|
+
this.state = {};
|
|
9
|
+
this.operations = [];
|
|
10
|
+
this.state = initialState;
|
|
11
|
+
}
|
|
12
|
+
getNestedValue(path) {
|
|
13
|
+
if (!path)
|
|
14
|
+
return this.state;
|
|
15
|
+
const parts = path.split('.');
|
|
16
|
+
let current = this.state;
|
|
17
|
+
for (const part of parts) {
|
|
18
|
+
if (current === undefined || current === null)
|
|
19
|
+
return undefined;
|
|
20
|
+
current = current[part];
|
|
21
|
+
}
|
|
22
|
+
return current;
|
|
23
|
+
}
|
|
24
|
+
setNestedValue(path, value) {
|
|
25
|
+
if (!path) {
|
|
26
|
+
this.state = value;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const parts = path.split('.');
|
|
30
|
+
let current = this.state;
|
|
31
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
32
|
+
const part = parts[i];
|
|
33
|
+
if (current[part] === undefined) {
|
|
34
|
+
current[part] = {};
|
|
35
|
+
}
|
|
36
|
+
current = current[part];
|
|
37
|
+
}
|
|
38
|
+
current[parts[parts.length - 1]] = value;
|
|
39
|
+
}
|
|
40
|
+
getValueByPath(path) {
|
|
41
|
+
this.operations.push({ method: 'get', path });
|
|
42
|
+
return this.getNestedValue(path);
|
|
43
|
+
}
|
|
44
|
+
changeByPath(path, value) {
|
|
45
|
+
this.operations.push({ method: 'change', path, args: [value] });
|
|
46
|
+
const existing = this.getNestedValue(path);
|
|
47
|
+
if (typeof existing === 'object' && typeof value === 'object' && existing !== null && value !== null) {
|
|
48
|
+
this.setNestedValue(path, Object.assign(Object.assign({}, existing), value));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.setNestedValue(path, value);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
substituteByPath(path, value) {
|
|
55
|
+
this.operations.push({ method: 'substitute', path, args: [value] });
|
|
56
|
+
this.setNestedValue(path, value);
|
|
57
|
+
}
|
|
58
|
+
deleteByPath(path) {
|
|
59
|
+
this.operations.push({ method: 'delete', path });
|
|
60
|
+
const value = this.getNestedValue(path);
|
|
61
|
+
const parts = path.split('.');
|
|
62
|
+
const key = parts.pop();
|
|
63
|
+
const parent = parts.length ? this.getNestedValue(parts.join('.')) : this.state;
|
|
64
|
+
if (parent && typeof parent === 'object') {
|
|
65
|
+
delete parent[key];
|
|
66
|
+
}
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
pushByPath(path, ...elements) {
|
|
70
|
+
this.operations.push({ method: 'push', path, args: elements });
|
|
71
|
+
const arr = this.getNestedValue(path);
|
|
72
|
+
if (Array.isArray(arr)) {
|
|
73
|
+
arr.push(...elements);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
spliceByPath(path, start, deleteCount) {
|
|
77
|
+
this.operations.push({ method: 'splice', path, args: [start, deleteCount] });
|
|
78
|
+
const arr = this.getNestedValue(path);
|
|
79
|
+
if (Array.isArray(arr)) {
|
|
80
|
+
return deleteCount !== undefined
|
|
81
|
+
? arr.splice(start, deleteCount)
|
|
82
|
+
: arr.splice(start);
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
reset() {
|
|
87
|
+
this.operations = [];
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
describe('StatePath', () => {
|
|
91
|
+
let storage;
|
|
92
|
+
beforeEach(() => {
|
|
93
|
+
storage = new MockStateStorage({
|
|
94
|
+
user: {
|
|
95
|
+
profile: {
|
|
96
|
+
name: 'John',
|
|
97
|
+
age: 30
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
items: [
|
|
101
|
+
{ id: 1, name: 'Item 1' },
|
|
102
|
+
{ id: 2, name: 'Item 2' },
|
|
103
|
+
{ id: 3, name: 'Item 3' }
|
|
104
|
+
],
|
|
105
|
+
levels: [
|
|
106
|
+
{
|
|
107
|
+
name: 'Level 1',
|
|
108
|
+
enemies: [
|
|
109
|
+
{ health: 100, type: 'goblin' },
|
|
110
|
+
{ health: 200, type: 'orc' }
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
tags: ['tag1', 'tag2', 'tag3'],
|
|
115
|
+
matrix: [[1, 2], [3, 4], [5, 6]]
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('Path Building', () => {
|
|
119
|
+
it('should build empty path at root', () => {
|
|
120
|
+
const path = new StatePath(storage);
|
|
121
|
+
expect(path.path).toBe('');
|
|
122
|
+
});
|
|
123
|
+
it('should build path with single property', () => {
|
|
124
|
+
const path = new StatePath(storage)
|
|
125
|
+
.prop('user');
|
|
126
|
+
expect(path.path).toBe('user');
|
|
127
|
+
});
|
|
128
|
+
it('should build path with nested properties', () => {
|
|
129
|
+
const path = new StatePath(storage)
|
|
130
|
+
.prop('user')
|
|
131
|
+
.prop('profile')
|
|
132
|
+
.prop('name');
|
|
133
|
+
expect(path.path).toBe('user.profile.name');
|
|
134
|
+
});
|
|
135
|
+
it('should build path with array index using at()', () => {
|
|
136
|
+
const path = new StatePath(storage)
|
|
137
|
+
.prop('items')
|
|
138
|
+
.at(0);
|
|
139
|
+
expect(path.path).toBe('items.0');
|
|
140
|
+
});
|
|
141
|
+
it('should build path with chained at() calls', () => {
|
|
142
|
+
const path = new StatePath(storage)
|
|
143
|
+
.prop('matrix')
|
|
144
|
+
.at(1)
|
|
145
|
+
.at(0);
|
|
146
|
+
expect(path.path).toBe('matrix.1.0');
|
|
147
|
+
});
|
|
148
|
+
it('should build path with mixed property and array access', () => {
|
|
149
|
+
const path = new StatePath(storage)
|
|
150
|
+
.prop('levels')
|
|
151
|
+
.at(0)
|
|
152
|
+
.prop('enemies')
|
|
153
|
+
.at(1)
|
|
154
|
+
.prop('health');
|
|
155
|
+
expect(path.path).toBe('levels.0.enemies.1.health');
|
|
156
|
+
});
|
|
157
|
+
it('should build path with property after at()', () => {
|
|
158
|
+
const path = new StatePath(storage)
|
|
159
|
+
.prop('items')
|
|
160
|
+
.at(0)
|
|
161
|
+
.prop('name');
|
|
162
|
+
expect(path.path).toBe('items.0.name');
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
describe('Terminal Operations', () => {
|
|
166
|
+
describe('get()', () => {
|
|
167
|
+
it('should get value at simple path', () => {
|
|
168
|
+
const path = new StatePath(storage)
|
|
169
|
+
.prop('user')
|
|
170
|
+
.prop('profile')
|
|
171
|
+
.prop('name');
|
|
172
|
+
expect(path.get()).toBe('John');
|
|
173
|
+
});
|
|
174
|
+
it('should get value at array index', () => {
|
|
175
|
+
const path = new StatePath(storage)
|
|
176
|
+
.prop('items')
|
|
177
|
+
.at(0)
|
|
178
|
+
.prop('name');
|
|
179
|
+
expect(path.get()).toBe('Item 1');
|
|
180
|
+
});
|
|
181
|
+
it('should get nested array element', () => {
|
|
182
|
+
const path = new StatePath(storage)
|
|
183
|
+
.prop('levels')
|
|
184
|
+
.at(0)
|
|
185
|
+
.prop('enemies')
|
|
186
|
+
.at(1)
|
|
187
|
+
.prop('health');
|
|
188
|
+
expect(path.get()).toBe(200);
|
|
189
|
+
});
|
|
190
|
+
it('should get entire array', () => {
|
|
191
|
+
const path = new StatePath(storage)
|
|
192
|
+
.prop('tags');
|
|
193
|
+
expect(path.get()).toEqual(['tag1', 'tag2', 'tag3']);
|
|
194
|
+
});
|
|
195
|
+
it('should get matrix element', () => {
|
|
196
|
+
const path = new StatePath(storage)
|
|
197
|
+
.prop('matrix')
|
|
198
|
+
.at(2)
|
|
199
|
+
.at(1);
|
|
200
|
+
expect(path.get()).toBe(6);
|
|
201
|
+
});
|
|
202
|
+
it('should return undefined for non-existent path', () => {
|
|
203
|
+
const path = new StatePath(storage, ['nonexistent', 'path']);
|
|
204
|
+
expect(path.get()).toBeUndefined();
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
describe('set()', () => {
|
|
208
|
+
it('should set value at simple path', () => {
|
|
209
|
+
const path = new StatePath(storage)
|
|
210
|
+
.prop('user')
|
|
211
|
+
.prop('profile')
|
|
212
|
+
.prop('name');
|
|
213
|
+
path.set('Jane');
|
|
214
|
+
expect(storage.operations).toContainEqual({
|
|
215
|
+
method: 'change',
|
|
216
|
+
path: 'user.profile.name',
|
|
217
|
+
args: ['Jane']
|
|
218
|
+
});
|
|
219
|
+
expect(storage.state.user.profile.name).toBe('Jane');
|
|
220
|
+
});
|
|
221
|
+
it('should set value at array index', () => {
|
|
222
|
+
const path = new StatePath(storage)
|
|
223
|
+
.prop('items')
|
|
224
|
+
.at(1)
|
|
225
|
+
.prop('name');
|
|
226
|
+
path.set('Updated Item');
|
|
227
|
+
expect(storage.operations).toContainEqual({
|
|
228
|
+
method: 'change',
|
|
229
|
+
path: 'items.1.name',
|
|
230
|
+
args: ['Updated Item']
|
|
231
|
+
});
|
|
232
|
+
expect(storage.state.items[1].name).toBe('Updated Item');
|
|
233
|
+
});
|
|
234
|
+
it('should set nested array element property', () => {
|
|
235
|
+
const path = new StatePath(storage)
|
|
236
|
+
.prop('levels')
|
|
237
|
+
.at(0)
|
|
238
|
+
.prop('enemies')
|
|
239
|
+
.at(0)
|
|
240
|
+
.prop('health');
|
|
241
|
+
path.set(50);
|
|
242
|
+
expect(storage.operations).toContainEqual({
|
|
243
|
+
method: 'change',
|
|
244
|
+
path: 'levels.0.enemies.0.health',
|
|
245
|
+
args: [50]
|
|
246
|
+
});
|
|
247
|
+
expect(storage.state.levels[0].enemies[0].health).toBe(50);
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
describe('replace()', () => {
|
|
251
|
+
it('should replace value at path', () => {
|
|
252
|
+
const path = new StatePath(storage)
|
|
253
|
+
.prop('user')
|
|
254
|
+
.prop('profile');
|
|
255
|
+
path.replace({ name: 'New', age: 25 });
|
|
256
|
+
expect(storage.operations).toContainEqual({
|
|
257
|
+
method: 'substitute',
|
|
258
|
+
path: 'user.profile',
|
|
259
|
+
args: [{ name: 'New', age: 25 }]
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
it('should replace entire array element', () => {
|
|
263
|
+
const path = new StatePath(storage)
|
|
264
|
+
.prop('items')
|
|
265
|
+
.at(0);
|
|
266
|
+
path.replace({ id: 99, name: 'Replaced' });
|
|
267
|
+
expect(storage.operations).toContainEqual({
|
|
268
|
+
method: 'substitute',
|
|
269
|
+
path: 'items.0',
|
|
270
|
+
args: [{ id: 99, name: 'Replaced' }]
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
describe('remove()', () => {
|
|
275
|
+
it('should remove value at path', () => {
|
|
276
|
+
const path = new StatePath(storage)
|
|
277
|
+
.prop('user')
|
|
278
|
+
.prop('profile')
|
|
279
|
+
.prop('age');
|
|
280
|
+
const removed = path.remove();
|
|
281
|
+
expect(storage.operations).toContainEqual({
|
|
282
|
+
method: 'delete',
|
|
283
|
+
path: 'user.profile.age'
|
|
284
|
+
});
|
|
285
|
+
expect(removed).toBe(30);
|
|
286
|
+
expect(storage.state.user.profile.age).toBeUndefined();
|
|
287
|
+
});
|
|
288
|
+
it('should remove array element', () => {
|
|
289
|
+
const path = new StatePath(storage)
|
|
290
|
+
.prop('items')
|
|
291
|
+
.at(1);
|
|
292
|
+
const removed = path.remove();
|
|
293
|
+
expect(storage.operations).toContainEqual({
|
|
294
|
+
method: 'delete',
|
|
295
|
+
path: 'items.1'
|
|
296
|
+
});
|
|
297
|
+
expect(removed).toEqual({ id: 2, name: 'Item 2' });
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
describe('Array Operations', () => {
|
|
302
|
+
describe('push()', () => {
|
|
303
|
+
it('should push single element to array', () => {
|
|
304
|
+
const path = new StatePath(storage)
|
|
305
|
+
.prop('items');
|
|
306
|
+
path.push({ id: 4, name: 'Item 4' });
|
|
307
|
+
expect(storage.operations).toContainEqual({
|
|
308
|
+
method: 'push',
|
|
309
|
+
path: 'items',
|
|
310
|
+
args: [{ id: 4, name: 'Item 4' }]
|
|
311
|
+
});
|
|
312
|
+
expect(storage.state.items).toHaveLength(4);
|
|
313
|
+
expect(storage.state.items[3]).toEqual({ id: 4, name: 'Item 4' });
|
|
314
|
+
});
|
|
315
|
+
it('should push multiple elements to array', () => {
|
|
316
|
+
const path = new StatePath(storage)
|
|
317
|
+
.prop('tags');
|
|
318
|
+
path.push('tag4', 'tag5');
|
|
319
|
+
expect(storage.operations).toContainEqual({
|
|
320
|
+
method: 'push',
|
|
321
|
+
path: 'tags',
|
|
322
|
+
args: ['tag4', 'tag5']
|
|
323
|
+
});
|
|
324
|
+
expect(storage.state.tags).toHaveLength(5);
|
|
325
|
+
});
|
|
326
|
+
it('should push to nested array via at()', () => {
|
|
327
|
+
const path = new StatePath(storage)
|
|
328
|
+
.prop('levels')
|
|
329
|
+
.at(0)
|
|
330
|
+
.prop('enemies');
|
|
331
|
+
path.push({ health: 150, type: 'troll' });
|
|
332
|
+
expect(storage.operations).toContainEqual({
|
|
333
|
+
method: 'push',
|
|
334
|
+
path: 'levels.0.enemies',
|
|
335
|
+
args: [{ health: 150, type: 'troll' }]
|
|
336
|
+
});
|
|
337
|
+
expect(storage.state.levels[0].enemies).toHaveLength(3);
|
|
338
|
+
});
|
|
339
|
+
it('should push to array of arrays', () => {
|
|
340
|
+
const path = new StatePath(storage)
|
|
341
|
+
.prop('matrix');
|
|
342
|
+
path.push([7, 8]);
|
|
343
|
+
expect(storage.operations).toContainEqual({
|
|
344
|
+
method: 'push',
|
|
345
|
+
path: 'matrix',
|
|
346
|
+
args: [[7, 8]]
|
|
347
|
+
});
|
|
348
|
+
expect(storage.state.matrix).toHaveLength(4);
|
|
349
|
+
});
|
|
350
|
+
});
|
|
351
|
+
describe('splice()', () => {
|
|
352
|
+
it('should splice elements from array', () => {
|
|
353
|
+
const path = new StatePath(storage)
|
|
354
|
+
.prop('items');
|
|
355
|
+
const removed = path.splice(1, 1);
|
|
356
|
+
expect(storage.operations).toContainEqual({
|
|
357
|
+
method: 'splice',
|
|
358
|
+
path: 'items',
|
|
359
|
+
args: [1, 1]
|
|
360
|
+
});
|
|
361
|
+
expect(removed).toEqual([{ id: 2, name: 'Item 2' }]);
|
|
362
|
+
expect(storage.state.items).toHaveLength(2);
|
|
363
|
+
});
|
|
364
|
+
it('should splice multiple elements', () => {
|
|
365
|
+
const path = new StatePath(storage)
|
|
366
|
+
.prop('tags');
|
|
367
|
+
const removed = path.splice(0, 2);
|
|
368
|
+
expect(removed).toEqual(['tag1', 'tag2']);
|
|
369
|
+
expect(storage.state.tags).toEqual(['tag3']);
|
|
370
|
+
});
|
|
371
|
+
it('should splice from nested array', () => {
|
|
372
|
+
const path = new StatePath(storage)
|
|
373
|
+
.prop('levels')
|
|
374
|
+
.at(0)
|
|
375
|
+
.prop('enemies');
|
|
376
|
+
const removed = path.splice(0, 1);
|
|
377
|
+
expect(storage.operations).toContainEqual({
|
|
378
|
+
method: 'splice',
|
|
379
|
+
path: 'levels.0.enemies',
|
|
380
|
+
args: [0, 1]
|
|
381
|
+
});
|
|
382
|
+
expect(removed).toEqual([{ health: 100, type: 'goblin' }]);
|
|
383
|
+
expect(storage.state.levels[0].enemies).toHaveLength(1);
|
|
384
|
+
});
|
|
385
|
+
it('should splice without deleteCount', () => {
|
|
386
|
+
const path = new StatePath(storage)
|
|
387
|
+
.prop('items');
|
|
388
|
+
const removed = path.splice(1);
|
|
389
|
+
expect(removed).toEqual([
|
|
390
|
+
{ id: 2, name: 'Item 2' },
|
|
391
|
+
{ id: 3, name: 'Item 3' }
|
|
392
|
+
]);
|
|
393
|
+
expect(storage.state.items).toHaveLength(1);
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
});
|
|
397
|
+
describe('Edge Cases', () => {
|
|
398
|
+
it('should handle empty path (root access)', () => {
|
|
399
|
+
const path = new StatePath(storage);
|
|
400
|
+
const state = path.get();
|
|
401
|
+
expect(state).toBe(storage.state);
|
|
402
|
+
expect(storage.operations).toContainEqual({
|
|
403
|
+
method: 'get',
|
|
404
|
+
path: ''
|
|
405
|
+
});
|
|
406
|
+
});
|
|
407
|
+
it('should handle deep nesting (3+ levels)', () => {
|
|
408
|
+
const path = new StatePath(storage)
|
|
409
|
+
.prop('levels')
|
|
410
|
+
.at(0)
|
|
411
|
+
.prop('enemies')
|
|
412
|
+
.at(1)
|
|
413
|
+
.prop('type');
|
|
414
|
+
expect(path.path).toBe('levels.0.enemies.1.type');
|
|
415
|
+
expect(path.get()).toBe('orc');
|
|
416
|
+
});
|
|
417
|
+
it('should handle array at root level when state is array', () => {
|
|
418
|
+
const arrayStorage = new MockStateStorage(['a', 'b', 'c']);
|
|
419
|
+
const path = new StatePath(arrayStorage);
|
|
420
|
+
expect(path.get()).toEqual(['a', 'b', 'c']);
|
|
421
|
+
});
|
|
422
|
+
it('should handle array of arrays access', () => {
|
|
423
|
+
const path = new StatePath(storage)
|
|
424
|
+
.prop('matrix')
|
|
425
|
+
.at(0);
|
|
426
|
+
expect(path.get()).toEqual([1, 2]);
|
|
427
|
+
const deepPath = new StatePath(storage)
|
|
428
|
+
.prop('matrix')
|
|
429
|
+
.at(1)
|
|
430
|
+
.at(1);
|
|
431
|
+
expect(deepPath.get()).toBe(4);
|
|
432
|
+
});
|
|
433
|
+
it('should handle zero index correctly', () => {
|
|
434
|
+
const path = new StatePath(storage)
|
|
435
|
+
.prop('items')
|
|
436
|
+
.at(0);
|
|
437
|
+
expect(path.path).toBe('items.0');
|
|
438
|
+
expect(path.get()).toEqual({ id: 1, name: 'Item 1' });
|
|
439
|
+
});
|
|
440
|
+
it('should handle negative-like edge cases', () => {
|
|
441
|
+
// While TypeScript would prevent negative indices, test path building
|
|
442
|
+
const path = new StatePath(storage)
|
|
443
|
+
.prop('items')
|
|
444
|
+
.at(-1);
|
|
445
|
+
expect(path.path).toBe('items.-1');
|
|
446
|
+
});
|
|
447
|
+
});
|
|
448
|
+
describe('Immutability', () => {
|
|
449
|
+
it('should not mutate existing path when chaining', () => {
|
|
450
|
+
const basePath = new StatePath(storage)
|
|
451
|
+
.prop('user');
|
|
452
|
+
const profilePath = basePath.prop('profile');
|
|
453
|
+
const namePath = profilePath.prop('name');
|
|
454
|
+
expect(basePath.path).toBe('user');
|
|
455
|
+
expect(profilePath.path).toBe('user.profile');
|
|
456
|
+
expect(namePath.path).toBe('user.profile.name');
|
|
457
|
+
});
|
|
458
|
+
it('should create independent paths from same base', () => {
|
|
459
|
+
const basePath = new StatePath(storage)
|
|
460
|
+
.prop('user')
|
|
461
|
+
.prop('profile');
|
|
462
|
+
const namePath = basePath.prop('name');
|
|
463
|
+
const agePath = basePath.prop('age');
|
|
464
|
+
expect(namePath.path).toBe('user.profile.name');
|
|
465
|
+
expect(agePath.path).toBe('user.profile.age');
|
|
466
|
+
expect(basePath.path).toBe('user.profile');
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
});
|
|
470
|
+
//# sourceMappingURL=StatePath.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatePath.test.js","sourceRoot":"","sources":["../../../src/state/data/StatePath.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { StatePath, IStatePathStorage } from "./StatePath";
|
|
2
|
+
type PropertyProxy<Root, Current> = Current extends object ? StatePathProxy<Root, Current> : StatePath<Root, Current>;
|
|
3
|
+
/**
|
|
4
|
+
* Proxy wrapper that enables property access syntax:
|
|
5
|
+
* storage.$<State>().user.profile.name.set("value")
|
|
6
|
+
*
|
|
7
|
+
* Uses ES6 Proxy to intercept property access and build paths incrementally.
|
|
8
|
+
* This approach avoids type explosion because types are computed one step at a time,
|
|
9
|
+
* rather than computing ALL possible paths at compile time.
|
|
10
|
+
*
|
|
11
|
+
* @typeParam Root - The root state type
|
|
12
|
+
* @typeParam Current - The type at the current path position
|
|
13
|
+
*/
|
|
14
|
+
export type StatePathProxy<Root, Current> = StatePath<Root, Current> & {
|
|
15
|
+
readonly [K in keyof Current & (string | number)]: PropertyProxy<Root, Current[K]>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Creates a proxy-wrapped StatePath that enables property access syntax.
|
|
19
|
+
*
|
|
20
|
+
* @param storage - The storage implementation (AppStateStorage)
|
|
21
|
+
* @param pathParts - Current path parts (empty for root)
|
|
22
|
+
* @returns A proxy that intercepts property access to build paths
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const proxy = createStatePathProxy<MyState>(storage);
|
|
26
|
+
* proxy.user.profile.name.set("John"); // Builds path "user.profile.name"
|
|
27
|
+
*/
|
|
28
|
+
export declare function createStatePathProxy<Root, Current = Root>(storage: IStatePathStorage, pathParts?: string[]): StatePathProxy<Root, Current>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { StatePath } from "./StatePath";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a proxy-wrapped StatePath that enables property access syntax.
|
|
4
|
+
*
|
|
5
|
+
* @param storage - The storage implementation (AppStateStorage)
|
|
6
|
+
* @param pathParts - Current path parts (empty for root)
|
|
7
|
+
* @returns A proxy that intercepts property access to build paths
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const proxy = createStatePathProxy<MyState>(storage);
|
|
11
|
+
* proxy.user.profile.name.set("John"); // Builds path "user.profile.name"
|
|
12
|
+
*/
|
|
13
|
+
export function createStatePathProxy(storage, pathParts = []) {
|
|
14
|
+
const statePath = new StatePath(storage, pathParts);
|
|
15
|
+
return new Proxy(statePath, {
|
|
16
|
+
get(target, prop) {
|
|
17
|
+
// Handle symbol properties
|
|
18
|
+
if (typeof prop === "symbol") {
|
|
19
|
+
return target[prop];
|
|
20
|
+
}
|
|
21
|
+
// Wrap at() and prop() methods to return proxies
|
|
22
|
+
if (prop === "at") {
|
|
23
|
+
return (index) => createStatePathProxy(storage, [...pathParts, String(index)]);
|
|
24
|
+
}
|
|
25
|
+
if (prop === "prop") {
|
|
26
|
+
return (key) => createStatePathProxy(storage, [...pathParts, String(key)]);
|
|
27
|
+
}
|
|
28
|
+
// Return other StatePath methods and properties directly
|
|
29
|
+
if (prop in target) {
|
|
30
|
+
return target[prop];
|
|
31
|
+
}
|
|
32
|
+
// Property access - create new proxy for nested path
|
|
33
|
+
return createStatePathProxy(storage, [...pathParts, String(prop)]);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=StatePathProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatePathProxy.js","sourceRoot":"","sources":["../../../src/state/data/StatePathProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AAqB3D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAChC,OAA0B,EAC1B,YAAsB,EAAE;IAExB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAgB,OAAO,EAAE,SAAS,CAAC,CAAC;IAEnE,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE;QACxB,GAAG,CAAC,MAAgC,EAAE,IAAqB;YACvD,2BAA2B;YAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAQ,MAAc,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YAED,iDAAiD;YACjD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,oBAAoB,CAC1C,OAAO,EACP,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAChC,CAAC;YACN,CAAC;YAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAoB,EAAE,EAAE,CAAC,oBAAoB,CACjD,OAAO,EACP,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAC9B,CAAC;YACN,CAAC;YAED,yDAAyD;YACzD,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACjB,OAAQ,MAAc,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;YAED,qDAAqD;YACrD,OAAO,oBAAoB,CACvB,OAAO,EACP,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAC/B,CAAC;QACN,CAAC;KACJ,CAAkC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|