@flashist/appframework 0.0.348 → 0.0.349
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 +1 -1
- 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/StatePathProxy.d.ts +29 -0
- package/state/data/StatePathProxy.js +26 -0
- package/state/data/StatePathProxy.js.map +1 -0
package/index.d.ts
CHANGED
|
@@ -84,6 +84,8 @@ export * from './state/data/DeepTypeUtils';
|
|
|
84
84
|
export * from './state/data/IAppStateChangeConfigVO';
|
|
85
85
|
export * from './state/data/IChangeWrapper';
|
|
86
86
|
export * from './state/data/IPreChangeHook';
|
|
87
|
+
export * from './state/data/StatePath';
|
|
88
|
+
export * from './state/data/StatePathProxy';
|
|
87
89
|
export * from './state/tools/AppStateDeepKeyTools';
|
|
88
90
|
export * from './state/tools/AppStateEventChangeTools';
|
|
89
91
|
export * from './state/tools/INestedPathHelperVO';
|
package/index.js
CHANGED
|
@@ -84,6 +84,8 @@ export * from './state/data/DeepTypeUtils';
|
|
|
84
84
|
export * from './state/data/IAppStateChangeConfigVO';
|
|
85
85
|
export * from './state/data/IChangeWrapper';
|
|
86
86
|
export * from './state/data/IPreChangeHook';
|
|
87
|
+
export * from './state/data/StatePath';
|
|
88
|
+
export * from './state/data/StatePathProxy';
|
|
87
89
|
export * from './state/tools/AppStateDeepKeyTools';
|
|
88
90
|
export * from './state/tools/AppStateEventChangeTools';
|
|
89
91
|
export * from './state/tools/INestedPathHelperVO';
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,9 @@ import { IPreChangeHook } from "./IPreChangeHook";
|
|
|
6
6
|
import { IAppStateChangeConfigVO } from "./IAppStateChangeConfigVO";
|
|
7
7
|
import { DeepPartial } from "./DeepPartialTypings";
|
|
8
8
|
import { DefaultFlattenDepth } from "./DeepTypeUtils";
|
|
9
|
-
|
|
9
|
+
import { IStatePathStorage } from "./StatePath";
|
|
10
|
+
import { StatePathProxy } from "./StatePathProxy";
|
|
11
|
+
export declare class AppStateStorage extends BaseObjectWithGlobalDispatcher implements IStatePathStorage {
|
|
10
12
|
/**
|
|
11
13
|
* The purpose of the method is to "prepare" a "wrapper" of a part of a state,
|
|
12
14
|
* to avoid constant writings of the full path. So instead of:
|
|
@@ -337,4 +339,32 @@ export declare class AppStateStorage extends BaseObjectWithGlobalDispatcher {
|
|
|
337
339
|
[k: number]: T_21[number];
|
|
338
340
|
} : Omit<T_21, keyof any[]> : T_21 : never : never) ? T_20 extends never ? T_20 : { [P_15 in keyof T_20 as (<T_21>() => T_21 extends { [Q in P_15]: T_20[P_15]; } ? 1 : 2) extends <T_21>() => T_21 extends { -readonly [Q in P_15]: T_20[P_15]; } ? 1 : 2 ? P_15 : never]: T_20[P_15]; } : never : never) extends infer U ? U extends never ? U : U extends object ? ((x: U) => void) | { [K_6 in keyof U]-?: (x: U[K_6] extends infer T_22 ? T_22 extends U[K_6] ? T_22 extends never ? { [P_16 in K_6]: T_22; } : T_22 extends object ? { [P_17 in keyof T_22 as `${Extract<K_6, string | number>}.${Extract<P_17, string | number>}`]: T_22[P_17]; } : { [P_18 in K_6]: T_22; } : never : never) => void; }[keyof U] extends (x: infer I) => void ? { [K_4 in keyof I]: I[K_4]; } : never : U : never) ? T_18 extends never ? { [P_12 in K_5]: T_18; } : T_18 extends object ? { [P_13 in keyof T_18 as `${Extract<K_5, string | number>}.${Extract<P_13, string | number>}`]: T_18[P_13]; } : { [P_14 in K_5]: T_18; } : never : never) => void; }[keyof U] extends (x: infer I) => void ? { [K_4 in keyof I]: I[K_4]; } : never : U : never) ? T_11 extends never ? { [P_7 in K_3]: T_11; } : T_11 extends object ? { [P_8 in keyof T_11 as `${Extract<K_3, string | number>}.${Extract<P_8, string | number>}`]: T_11[P_8]; } : { [P_9 in K_3]: T_11; } : never : never) => void; }[keyof U] extends (x: infer I) => void ? { [K_4 in keyof I]: I[K_4]; } : never : U : never) ? T_4 extends never ? { [P_2 in K_1]: T_4; } : T_4 extends object ? { [P_3 in keyof T_4 as `${Extract<K_1, string | number>}.${Extract<P_3, string | number>}`]: T_4[P_3]; } : { [P_4 in K_1]: T_4; } : never : never) => void; }[keyof U] | ((x: U) => void) extends (x: infer I) => void ? { [K_2 in keyof I]: I[K_2]; } : never : U : never)[any][];
|
|
339
341
|
protected innerSplice<StateType, DeepKeyType extends keyof Flatten<StateType>, ArrayType extends Flatten<StateType>[DeepKeyType]>(stateForTypings: StateType, deepKey: DeepKeyType, start: number, deleteCount?: number): ArrayType[];
|
|
342
|
+
/**
|
|
343
|
+
* Type-safe path builder for state access.
|
|
344
|
+
* Builds paths incrementally to avoid type explosion with arrays.
|
|
345
|
+
*
|
|
346
|
+
* @example
|
|
347
|
+
* // Access nested properties:
|
|
348
|
+
* storage.$<MyState>().user.profile.name.set("John");
|
|
349
|
+
*
|
|
350
|
+
* // Access array elements (no type explosion!):
|
|
351
|
+
* storage.$<MyState>().items.at(0).value.set(42);
|
|
352
|
+
*
|
|
353
|
+
* // Get values:
|
|
354
|
+
* const name = storage.$<MyState>().user.name.get();
|
|
355
|
+
*
|
|
356
|
+
* // Chain deeply:
|
|
357
|
+
* storage.$<MyState>().game.levels.at(currentLevel).enemies.at(enemyIndex).health.set(100);
|
|
358
|
+
*
|
|
359
|
+
* // Get the path string (for debugging or events):
|
|
360
|
+
* const path = storage.$<MyState>().user.profile.name.path; // "user.profile.name"
|
|
361
|
+
*/
|
|
362
|
+
$<StateType extends object>(): StatePathProxy<StateType, StateType>;
|
|
363
|
+
getValueByPath(path: string): any;
|
|
364
|
+
changeByPath(path: string, value: any): void;
|
|
365
|
+
substituteByPath(path: string, value: any): void;
|
|
366
|
+
deleteByPath(path: string): any;
|
|
367
|
+
pushByPath(path: string, ...elements: any[]): void;
|
|
368
|
+
spliceByPath(path: string, start: number, deleteCount?: number): any[];
|
|
369
|
+
protected processStateActionByPath(path: string, config: IAppStateChangeConfigVO): any;
|
|
340
370
|
}
|
|
@@ -3,6 +3,7 @@ import { BaseObjectWithGlobalDispatcher } from "../../base/BaseObjectWithGlobalD
|
|
|
3
3
|
import { AppStateEventChangeTools } from "../tools/AppStateEventChangeTools";
|
|
4
4
|
import { AppStateDeepKeyTools } from "../tools/AppStateDeepKeyTools";
|
|
5
5
|
import { AppStateChangeType } from "./AppStateChangeType";
|
|
6
|
+
import { createStatePathProxy } from "./StatePathProxy";
|
|
6
7
|
export class AppStateStorage extends BaseObjectWithGlobalDispatcher {
|
|
7
8
|
constructor() {
|
|
8
9
|
super(...arguments);
|
|
@@ -10,63 +11,6 @@ export class AppStateStorage extends BaseObjectWithGlobalDispatcher {
|
|
|
10
11
|
this.state = {};
|
|
11
12
|
this.pathsHelperDataCache = {};
|
|
12
13
|
this.preChangeHooks = [];
|
|
13
|
-
// SPLICE: END
|
|
14
|
-
// // public change<StateType extends object, ChangeType>(nestedPaths: ObjectNestedPathsType<StateType>, value: ChangeType): void {
|
|
15
|
-
// public change<StateType, DeepKeyType extends keyof Flatten<StateType>>(obj: StateType, key: DeepKeyType, value: Flatten<StateType>[DeepKeyType]): void {
|
|
16
|
-
// // AS ANY needed to calm compiler and autocomplete
|
|
17
|
-
// let tempObject: StateType = this.state as any;
|
|
18
|
-
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
19
|
-
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
20
|
-
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
21
|
-
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
22
|
-
// if (nestedPathIndex === (nestedPathsCount - 1)) {
|
|
23
|
-
// // tempObject[singlePath] = value;
|
|
24
|
-
// ObjectTools.copySinglePropFromValue(tempObject, singlePath as string, value);
|
|
25
|
-
// } else {
|
|
26
|
-
// tempObject = tempObject[singlePath];
|
|
27
|
-
// }
|
|
28
|
-
// }
|
|
29
|
-
// this.dispatchChangeEvents(pathsHelperData);
|
|
30
|
-
// }
|
|
31
|
-
// public delete<StateType extends object>(nestedPaths: ObjectNestedPathsType<StateType>): void {
|
|
32
|
-
// // AS ANY needed to calm compiler and autocomplete
|
|
33
|
-
// let tempObject: StateType = this.state as any;
|
|
34
|
-
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
35
|
-
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
36
|
-
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
37
|
-
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
38
|
-
// if (nestedPathIndex === (nestedPathsCount - 1)) {
|
|
39
|
-
// delete tempObject[singlePath];
|
|
40
|
-
// } else {
|
|
41
|
-
// tempObject = tempObject[singlePath];
|
|
42
|
-
// }
|
|
43
|
-
// }
|
|
44
|
-
// this.dispatchChangeEvents(pathsHelperData);
|
|
45
|
-
// }
|
|
46
|
-
// public addElements<StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]): void {
|
|
47
|
-
// // AS ANY needed to calm compiler and autocomplete
|
|
48
|
-
// let tempObject: StateType = this.state as any;
|
|
49
|
-
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
50
|
-
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
51
|
-
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
52
|
-
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
53
|
-
// tempObject = tempObject[singlePath];
|
|
54
|
-
// }
|
|
55
|
-
// (tempObject as Array<ElementType>).push(...elements);
|
|
56
|
-
// this.dispatchChangeEvents(pathsHelperData);
|
|
57
|
-
// }
|
|
58
|
-
// public removeElements<StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]): void {
|
|
59
|
-
// // AS ANY needed to calm compiler and autocomplete
|
|
60
|
-
// let tempObject: StateType = this.state as any;
|
|
61
|
-
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
62
|
-
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
63
|
-
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
64
|
-
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
65
|
-
// tempObject = tempObject[singlePath];
|
|
66
|
-
// }
|
|
67
|
-
// ArrayTools.removeItems((tempObject as Array<ElementType>), elements);
|
|
68
|
-
// this.dispatchChangeEvents(pathsHelperData);
|
|
69
|
-
// }
|
|
70
14
|
}
|
|
71
15
|
/**
|
|
72
16
|
* The purpose of the method is to "prepare" a "wrapper" of a part of a state,
|
|
@@ -348,5 +292,168 @@ export class AppStateStorage extends BaseObjectWithGlobalDispatcher {
|
|
|
348
292
|
this.triggerPreChangeHooks(stateForTypings, deepKey, config);
|
|
349
293
|
return this.processStateAction(stateForTypings, deepKey, config);
|
|
350
294
|
}
|
|
295
|
+
// SPLICE: END
|
|
296
|
+
// // public change<StateType extends object, ChangeType>(nestedPaths: ObjectNestedPathsType<StateType>, value: ChangeType): void {
|
|
297
|
+
// public change<StateType, DeepKeyType extends keyof Flatten<StateType>>(obj: StateType, key: DeepKeyType, value: Flatten<StateType>[DeepKeyType]): void {
|
|
298
|
+
// // AS ANY needed to calm compiler and autocomplete
|
|
299
|
+
// let tempObject: StateType = this.state as any;
|
|
300
|
+
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
301
|
+
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
302
|
+
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
303
|
+
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
304
|
+
// if (nestedPathIndex === (nestedPathsCount - 1)) {
|
|
305
|
+
// // tempObject[singlePath] = value;
|
|
306
|
+
// ObjectTools.copySinglePropFromValue(tempObject, singlePath as string, value);
|
|
307
|
+
// } else {
|
|
308
|
+
// tempObject = tempObject[singlePath];
|
|
309
|
+
// }
|
|
310
|
+
// }
|
|
311
|
+
// this.dispatchChangeEvents(pathsHelperData);
|
|
312
|
+
// }
|
|
313
|
+
// public delete<StateType extends object>(nestedPaths: ObjectNestedPathsType<StateType>): void {
|
|
314
|
+
// // AS ANY needed to calm compiler and autocomplete
|
|
315
|
+
// let tempObject: StateType = this.state as any;
|
|
316
|
+
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
317
|
+
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
318
|
+
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
319
|
+
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
320
|
+
// if (nestedPathIndex === (nestedPathsCount - 1)) {
|
|
321
|
+
// delete tempObject[singlePath];
|
|
322
|
+
// } else {
|
|
323
|
+
// tempObject = tempObject[singlePath];
|
|
324
|
+
// }
|
|
325
|
+
// }
|
|
326
|
+
// this.dispatchChangeEvents(pathsHelperData);
|
|
327
|
+
// }
|
|
328
|
+
// public addElements<StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]): void {
|
|
329
|
+
// // AS ANY needed to calm compiler and autocomplete
|
|
330
|
+
// let tempObject: StateType = this.state as any;
|
|
331
|
+
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
332
|
+
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
333
|
+
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
334
|
+
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
335
|
+
// tempObject = tempObject[singlePath];
|
|
336
|
+
// }
|
|
337
|
+
// (tempObject as Array<ElementType>).push(...elements);
|
|
338
|
+
// this.dispatchChangeEvents(pathsHelperData);
|
|
339
|
+
// }
|
|
340
|
+
// public removeElements<StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]): void {
|
|
341
|
+
// // AS ANY needed to calm compiler and autocomplete
|
|
342
|
+
// let tempObject: StateType = this.state as any;
|
|
343
|
+
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
344
|
+
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
345
|
+
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
346
|
+
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
347
|
+
// tempObject = tempObject[singlePath];
|
|
348
|
+
// }
|
|
349
|
+
// ArrayTools.removeItems((tempObject as Array<ElementType>), elements);
|
|
350
|
+
// this.dispatchChangeEvents(pathsHelperData);
|
|
351
|
+
// }
|
|
352
|
+
// =========================================================================
|
|
353
|
+
// PATH BUILDER API
|
|
354
|
+
// =========================================================================
|
|
355
|
+
/**
|
|
356
|
+
* Type-safe path builder for state access.
|
|
357
|
+
* Builds paths incrementally to avoid type explosion with arrays.
|
|
358
|
+
*
|
|
359
|
+
* @example
|
|
360
|
+
* // Access nested properties:
|
|
361
|
+
* storage.$<MyState>().user.profile.name.set("John");
|
|
362
|
+
*
|
|
363
|
+
* // Access array elements (no type explosion!):
|
|
364
|
+
* storage.$<MyState>().items.at(0).value.set(42);
|
|
365
|
+
*
|
|
366
|
+
* // Get values:
|
|
367
|
+
* const name = storage.$<MyState>().user.name.get();
|
|
368
|
+
*
|
|
369
|
+
* // Chain deeply:
|
|
370
|
+
* storage.$<MyState>().game.levels.at(currentLevel).enemies.at(enemyIndex).health.set(100);
|
|
371
|
+
*
|
|
372
|
+
* // Get the path string (for debugging or events):
|
|
373
|
+
* const path = storage.$<MyState>().user.profile.name.path; // "user.profile.name"
|
|
374
|
+
*/
|
|
375
|
+
$() {
|
|
376
|
+
return createStatePathProxy(this);
|
|
377
|
+
}
|
|
378
|
+
// === Path-based Internal Methods (for IStatePathStorage interface) ===
|
|
379
|
+
getValueByPath(path) {
|
|
380
|
+
const helperData = this.getPathsHelperData(path, null);
|
|
381
|
+
let current = this.state;
|
|
382
|
+
for (const part of helperData.splitDeepKeyParts) {
|
|
383
|
+
current = current[part];
|
|
384
|
+
}
|
|
385
|
+
return current;
|
|
386
|
+
}
|
|
387
|
+
changeByPath(path, value) {
|
|
388
|
+
const config = {
|
|
389
|
+
changeType: AppStateChangeType.CHANGE,
|
|
390
|
+
value: value
|
|
391
|
+
};
|
|
392
|
+
this.processStateActionByPath(path, config);
|
|
393
|
+
}
|
|
394
|
+
substituteByPath(path, value) {
|
|
395
|
+
const config = {
|
|
396
|
+
changeType: AppStateChangeType.SUBSTITUTE,
|
|
397
|
+
value: value
|
|
398
|
+
};
|
|
399
|
+
this.processStateActionByPath(path, config);
|
|
400
|
+
}
|
|
401
|
+
deleteByPath(path) {
|
|
402
|
+
const config = {
|
|
403
|
+
changeType: AppStateChangeType.DELETE
|
|
404
|
+
};
|
|
405
|
+
return this.processStateActionByPath(path, config);
|
|
406
|
+
}
|
|
407
|
+
pushByPath(path, ...elements) {
|
|
408
|
+
const config = {
|
|
409
|
+
changeType: AppStateChangeType.PUSH,
|
|
410
|
+
elements: elements
|
|
411
|
+
};
|
|
412
|
+
this.processStateActionByPath(path, config);
|
|
413
|
+
}
|
|
414
|
+
spliceByPath(path, start, deleteCount) {
|
|
415
|
+
if (deleteCount === undefined) {
|
|
416
|
+
deleteCount = Number.MAX_SAFE_INTEGER;
|
|
417
|
+
}
|
|
418
|
+
const config = {
|
|
419
|
+
changeType: AppStateChangeType.SPLICE,
|
|
420
|
+
start: start,
|
|
421
|
+
deleteCount: deleteCount
|
|
422
|
+
};
|
|
423
|
+
return this.processStateActionByPath(path, config);
|
|
424
|
+
}
|
|
425
|
+
processStateActionByPath(path, config) {
|
|
426
|
+
let result;
|
|
427
|
+
const pathsHelperData = this.getPathsHelperData(path, config);
|
|
428
|
+
let tempObject = this.state;
|
|
429
|
+
let nestedPathsCount = pathsHelperData.splitDeepKeyParts.length;
|
|
430
|
+
for (let nestedPathIndex = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
431
|
+
const singlePath = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
432
|
+
if (nestedPathIndex === (nestedPathsCount - 1)) {
|
|
433
|
+
if (config.changeType === AppStateChangeType.SUBSTITUTE) {
|
|
434
|
+
delete tempObject[singlePath];
|
|
435
|
+
ObjectTools.copySinglePropFromValue(tempObject, singlePath, config.value);
|
|
436
|
+
}
|
|
437
|
+
else if (config.changeType === AppStateChangeType.CHANGE) {
|
|
438
|
+
ObjectTools.copySinglePropFromValue(tempObject, singlePath, config.value);
|
|
439
|
+
}
|
|
440
|
+
else if (config.changeType === AppStateChangeType.DELETE) {
|
|
441
|
+
result = tempObject[singlePath];
|
|
442
|
+
delete tempObject[singlePath];
|
|
443
|
+
}
|
|
444
|
+
else if (config.changeType === AppStateChangeType.PUSH) {
|
|
445
|
+
tempObject[singlePath].push(...config.elements);
|
|
446
|
+
}
|
|
447
|
+
else if (config.changeType === AppStateChangeType.SPLICE) {
|
|
448
|
+
result = tempObject[singlePath].splice(config.start, config.deleteCount);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
tempObject = tempObject[singlePath];
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
this.dispatchChangeEvents(pathsHelperData);
|
|
456
|
+
return result;
|
|
457
|
+
}
|
|
351
458
|
}
|
|
352
459
|
//# sourceMappingURL=AppStateStorage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppStateStorage.js","sourceRoot":"","sources":["../../../src/state/data/AppStateStorage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AppStateStorage.js","sourceRoot":"","sources":["../../../src/state/data/AppStateStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { DeepPartial } from "./DeepPartialTypings";
|
|
2
|
+
/**
|
|
3
|
+
* Interface for storage operations (implemented by AppStateStorage).
|
|
4
|
+
* Enables the StatePath class to perform actual state operations.
|
|
5
|
+
*/
|
|
6
|
+
export interface IStatePathStorage {
|
|
7
|
+
getValueByPath(path: string): any;
|
|
8
|
+
changeByPath(path: string, value: any): void;
|
|
9
|
+
substituteByPath(path: string, value: any): void;
|
|
10
|
+
deleteByPath(path: string): any;
|
|
11
|
+
pushByPath(path: string, ...elements: any[]): void;
|
|
12
|
+
spliceByPath(path: string, start: number, deleteCount?: number): any[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Type-safe path builder for state access.
|
|
16
|
+
* Builds paths incrementally to avoid type explosion with arrays.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // Access nested properties:
|
|
20
|
+
* storage.$<MyState>().user.profile.name.set("John");
|
|
21
|
+
*
|
|
22
|
+
* // Access array elements:
|
|
23
|
+
* storage.$<MyState>().items.at(0).value.set(42);
|
|
24
|
+
*
|
|
25
|
+
* // Get values:
|
|
26
|
+
* const name = storage.$<MyState>().user.name.get();
|
|
27
|
+
*
|
|
28
|
+
* @typeParam Root - The root state type (used for type tracking)
|
|
29
|
+
* @typeParam Current - The type at the current path position
|
|
30
|
+
*/
|
|
31
|
+
export declare class StatePath<Root, Current> {
|
|
32
|
+
private readonly storage;
|
|
33
|
+
private readonly pathParts;
|
|
34
|
+
constructor(storage: IStatePathStorage, pathParts?: string[]);
|
|
35
|
+
/** Get the built path string (for debugging/events) */
|
|
36
|
+
get path(): string;
|
|
37
|
+
/** Access a property - returns StatePath for the property type */
|
|
38
|
+
prop<K extends keyof Current & (string | number)>(key: K): StatePath<Root, Current[K]>;
|
|
39
|
+
/**
|
|
40
|
+
* Access array element by index - no type explosion since index is runtime.
|
|
41
|
+
* @param index - The array index to access
|
|
42
|
+
*/
|
|
43
|
+
at<T = Current extends readonly (infer U)[] ? U : never>(index: number): StatePath<Root, T>;
|
|
44
|
+
/** Get the value at this path */
|
|
45
|
+
get(): Current;
|
|
46
|
+
/** Change (merge) value at this path */
|
|
47
|
+
set(value: DeepPartial<Current>): void;
|
|
48
|
+
/** Substitute (replace) value at this path */
|
|
49
|
+
replace(value: DeepPartial<Current>): void;
|
|
50
|
+
/** Delete value at this path */
|
|
51
|
+
remove(): Current;
|
|
52
|
+
/** Push elements (only when Current is an array) */
|
|
53
|
+
push<T = Current extends readonly (infer U)[] ? U : never>(...elements: T[]): void;
|
|
54
|
+
/** Splice array (only when Current is an array) */
|
|
55
|
+
splice(start: number, deleteCount?: number): any[];
|
|
56
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe path builder for state access.
|
|
3
|
+
* Builds paths incrementally to avoid type explosion with arrays.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* // Access nested properties:
|
|
7
|
+
* storage.$<MyState>().user.profile.name.set("John");
|
|
8
|
+
*
|
|
9
|
+
* // Access array elements:
|
|
10
|
+
* storage.$<MyState>().items.at(0).value.set(42);
|
|
11
|
+
*
|
|
12
|
+
* // Get values:
|
|
13
|
+
* const name = storage.$<MyState>().user.name.get();
|
|
14
|
+
*
|
|
15
|
+
* @typeParam Root - The root state type (used for type tracking)
|
|
16
|
+
* @typeParam Current - The type at the current path position
|
|
17
|
+
*/
|
|
18
|
+
export class StatePath {
|
|
19
|
+
constructor(storage, pathParts = []) {
|
|
20
|
+
this.storage = storage;
|
|
21
|
+
this.pathParts = pathParts;
|
|
22
|
+
}
|
|
23
|
+
/** Get the built path string (for debugging/events) */
|
|
24
|
+
get path() {
|
|
25
|
+
return this.pathParts.join(".");
|
|
26
|
+
}
|
|
27
|
+
/** Access a property - returns StatePath for the property type */
|
|
28
|
+
prop(key) {
|
|
29
|
+
return new StatePath(this.storage, [...this.pathParts, String(key)]);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Access array element by index - no type explosion since index is runtime.
|
|
33
|
+
* @param index - The array index to access
|
|
34
|
+
*/
|
|
35
|
+
at(index) {
|
|
36
|
+
return new StatePath(this.storage, [...this.pathParts, String(index)]);
|
|
37
|
+
}
|
|
38
|
+
// === Terminal Operations ===
|
|
39
|
+
/** Get the value at this path */
|
|
40
|
+
get() {
|
|
41
|
+
return this.storage.getValueByPath(this.path);
|
|
42
|
+
}
|
|
43
|
+
/** Change (merge) value at this path */
|
|
44
|
+
set(value) {
|
|
45
|
+
this.storage.changeByPath(this.path, value);
|
|
46
|
+
}
|
|
47
|
+
/** Substitute (replace) value at this path */
|
|
48
|
+
replace(value) {
|
|
49
|
+
this.storage.substituteByPath(this.path, value);
|
|
50
|
+
}
|
|
51
|
+
/** Delete value at this path */
|
|
52
|
+
remove() {
|
|
53
|
+
return this.storage.deleteByPath(this.path);
|
|
54
|
+
}
|
|
55
|
+
// === Array Operations (when Current is an array) ===
|
|
56
|
+
/** Push elements (only when Current is an array) */
|
|
57
|
+
push(...elements) {
|
|
58
|
+
this.storage.pushByPath(this.path, ...elements);
|
|
59
|
+
}
|
|
60
|
+
/** Splice array (only when Current is an array) */
|
|
61
|
+
splice(start, deleteCount) {
|
|
62
|
+
return this.storage.spliceByPath(this.path, start, deleteCount);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=StatePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatePath.js","sourceRoot":"","sources":["../../../src/state/data/StatePath.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,SAAS;IAClB,YACqB,OAA0B,EAC1B,YAAsB,EAAE;QADxB,YAAO,GAAP,OAAO,CAAmB;QAC1B,cAAS,GAAT,SAAS,CAAe;IAC1C,CAAC;IAEJ,uDAAuD;IACvD,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,kEAAkE;IAClE,IAAI,CAA8C,GAAM;QACpD,OAAO,IAAI,SAAS,CAChB,IAAI,CAAC,OAAO,EACZ,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CACnC,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,EAAE,CACE,KAAa;QAEb,OAAO,IAAI,SAAS,CAChB,IAAI,CAAC,OAAO,EACZ,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CACrC,CAAC;IACN,CAAC;IAED,8BAA8B;IAE9B,iCAAiC;IACjC,GAAG;QACC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,wCAAwC;IACxC,GAAG,CAAC,KAA2B;QAC3B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAC,KAA2B;QAC/B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,gCAAgC;IAChC,MAAM;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,sDAAsD;IAEtD,oDAAoD;IACpD,IAAI,CACA,GAAG,QAAa;QAEhB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,KAAa,EAAE,WAAoB;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACpE,CAAC;CACJ"}
|
|
@@ -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,26 @@
|
|
|
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
|
+
// Return StatePath methods and properties directly
|
|
18
|
+
if (prop in target || typeof prop === "symbol") {
|
|
19
|
+
return target[prop];
|
|
20
|
+
}
|
|
21
|
+
// Property access - create new proxy for nested path
|
|
22
|
+
return createStatePathProxy(storage, [...pathParts, String(prop)]);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//# 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,mDAAmD;YACnD,IAAI,IAAI,IAAI,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7C,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"}
|