@flashist/appframework 0.0.50 → 0.0.52
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/app/AppModule.d.ts +2 -1
- package/app/AppModule.js +13 -13
- package/app/AppModule.js.map +1 -1
- package/app/commands/LoadAppConfigCommand.js +8 -8
- package/app/commands/LoadAppConfigCommand.js.map +1 -1
- package/app/commands/ParseStaticItemsConfigCommand.js +10 -5
- package/app/commands/ParseStaticItemsConfigCommand.js.map +1 -1
- package/app/data/{IAppModelStorageVO.d.ts → local-storage/IAppModelLocalStorageVO.d.ts} +1 -1
- package/app/data/local-storage/IAppModelLocalStorageVO.js +2 -0
- package/app/data/local-storage/IAppModelLocalStorageVO.js.map +1 -0
- package/app/data/state/AppModuleState.d.ts +19 -0
- package/app/data/state/AppModuleState.js +23 -0
- package/app/data/state/AppModuleState.js.map +1 -0
- package/app/managers/AppManager.d.ts +8 -7
- package/app/managers/AppManager.js +26 -14
- package/app/managers/AppManager.js.map +1 -1
- package/debug/DebugModule.js +8 -5
- package/debug/DebugModule.js.map +1 -1
- package/debug/data/state/DebugModuleState.d.ts +7 -0
- package/debug/data/state/DebugModuleState.js +10 -0
- package/debug/data/state/DebugModuleState.js.map +1 -0
- package/device/DeviceModule.d.ts +0 -1
- package/device/DeviceModule.js +4 -8
- package/device/DeviceModule.js.map +1 -1
- package/device/data/state/DeviceModuleState.d.ts +4 -0
- package/device/data/state/DeviceModuleState.js +5 -0
- package/device/data/state/DeviceModuleState.js.map +1 -0
- package/{assets/AssetsModule.d.ts → ecs/ECSModule.d.ts} +1 -1
- package/{assets/AssetsModule.js → ecs/ECSModule.js} +13 -9
- package/ecs/ECSModule.js.map +1 -0
- package/ecs/data/state/ECSModuleState.d.ts +6 -0
- package/ecs/data/state/ECSModuleState.js +8 -0
- package/ecs/data/state/ECSModuleState.js.map +1 -0
- package/ecs/ecs/components/IComponent.d.ts +3 -0
- package/ecs/ecs/components/IComponent.js +2 -0
- package/ecs/ecs/components/IComponent.js.map +1 -0
- package/ecs/ecs/entities/IEntity.d.ts +8 -0
- package/ecs/ecs/entities/IEntity.js +2 -0
- package/ecs/ecs/entities/IEntity.js.map +1 -0
- package/ecs/ecs/entities/queries/EntitiesQuery.d.ts +11 -0
- package/ecs/ecs/entities/queries/EntitiesQuery.js +52 -0
- package/ecs/ecs/entities/queries/EntitiesQuery.js.map +1 -0
- package/ecs/ecs/entities/queries/EntitiesQueryEvent.d.ts +4 -0
- package/ecs/ecs/entities/queries/EntitiesQueryEvent.js +5 -0
- package/ecs/ecs/entities/queries/EntitiesQueryEvent.js.map +1 -0
- package/ecs/ecs/systems/System.d.ts +16 -0
- package/ecs/ecs/systems/System.js +53 -0
- package/ecs/ecs/systems/System.js.map +1 -0
- package/ecs/managers/ECSManager.d.ts +38 -0
- package/ecs/managers/ECSManager.js +169 -0
- package/ecs/managers/ECSManager.js.map +1 -0
- package/ecs-rendermodule/ECSRenderModule.d.ts +5 -0
- package/{dependencies/DependenciesModule.js → ecs-rendermodule/ECSRenderModule.js} +17 -10
- package/ecs-rendermodule/ECSRenderModule.js.map +1 -0
- package/ecs-rendermodule/data/RenderModuleRootContainerId.d.ts +1 -0
- package/ecs-rendermodule/data/RenderModuleRootContainerId.js +2 -0
- package/ecs-rendermodule/data/RenderModuleRootContainerId.js.map +1 -0
- package/ecs-rendermodule/ecs/components/RenderComponent.d.ts +7 -0
- package/ecs-rendermodule/ecs/components/RenderComponent.js +6 -0
- package/ecs-rendermodule/ecs/components/RenderComponent.js.map +1 -0
- package/ecs-rendermodule/ecs/systems/RenderSystem.d.ts +11 -0
- package/ecs-rendermodule/ecs/systems/RenderSystem.js +44 -0
- package/ecs-rendermodule/ecs/systems/RenderSystem.js.map +1 -0
- package/facade/Facade.d.ts +0 -2
- package/facade/Facade.js +12 -12
- package/facade/Facade.js.map +1 -1
- package/init/commands/InitApplicationCommand.js +3 -3
- package/init/commands/InitApplicationCommand.js.map +1 -1
- package/init/events/{InitApplicationEvents.d.ts → InitApplicationEvent.d.ts} +0 -0
- package/init/events/{InitApplicationEvents.js → InitApplicationEvent.js} +1 -1
- package/init/events/InitApplicationEvent.js.map +1 -0
- package/{dependencies/DependenciesModule.d.ts → local-storage/LocalStorageModule.d.ts} +1 -1
- package/{storage/StorageModule.js → local-storage/LocalStorageModule.js} +9 -9
- package/local-storage/LocalStorageModule.js.map +1 -0
- package/local-storage/LocalStorageModuleConfig.d.ts +3 -0
- package/local-storage/LocalStorageModuleConfig.js +4 -0
- package/local-storage/LocalStorageModuleConfig.js.map +1 -0
- package/{storage/managers/StorageManager.d.ts → local-storage/managers/LocalStorageManager.d.ts} +1 -1
- package/{storage/managers/StorageManager.js → local-storage/managers/LocalStorageManager.js} +17 -17
- package/local-storage/managers/LocalStorageManager.js.map +1 -0
- package/locales/commands/ParseLocaleConfigCommand.js +5 -4
- package/locales/commands/ParseLocaleConfigCommand.js.map +1 -1
- package/package.json +3 -3
- package/pages/PagesModule.js +10 -3
- package/pages/PagesModule.js.map +1 -1
- package/pages/commands/ChangePageCommand.d.ts +0 -2
- package/pages/commands/ChangePageCommand.js +3 -4
- package/pages/commands/ChangePageCommand.js.map +1 -1
- package/pages/data/state/PagesModuleStateType.d.ts +10 -0
- package/pages/data/state/PagesModuleStateType.js +7 -0
- package/pages/data/state/PagesModuleStateType.js.map +1 -0
- package/pages/views/BasePageView.d.ts +2 -2
- package/pages/views/BasePageView.js +12 -7
- package/pages/views/BasePageView.js.map +1 -1
- package/pages/views/PagesMediator.d.ts +6 -0
- package/{app/models/AppModel.js → pages/views/PagesMediator.js} +15 -16
- package/pages/views/PagesMediator.js.map +1 -0
- package/pages/views/PagesView.d.ts +1 -4
- package/pages/views/PagesView.js +35 -16
- package/pages/views/PagesView.js.map +1 -1
- package/preloader-page/data/PreloaderPageId.d.ts +1 -0
- package/preloader-page/data/PreloaderPageId.js +2 -0
- package/preloader-page/data/PreloaderPageId.js.map +1 -0
- package/sounds/managers/SoundsStorageManager.d.ts +2 -2
- package/sounds/managers/SoundsStorageManager.js +2 -2
- package/sounds/managers/SoundsStorageManager.js.map +1 -1
- package/state/AppStateModule.d.ts +46 -0
- package/state/AppStateModule.js +81 -0
- package/state/AppStateModule.js.map +1 -0
- package/state/data/AppStateStorage.d.ts +20 -0
- package/state/data/AppStateStorage.js +143 -0
- package/state/data/AppStateStorage.js.map +1 -0
- package/state/data/DeepKeyTypings.d.ts +25 -0
- package/state/data/DeepKeyTypings.js +144 -0
- package/state/data/DeepKeyTypings.js.map +1 -0
- package/state/data/DeepReadableTypings.d.ts +7 -0
- package/state/data/DeepReadableTypings.js +3 -0
- package/state/data/DeepReadableTypings.js.map +1 -0
- package/state/data/IPreChangeHook.d.ts +4 -0
- package/state/data/IPreChangeHook.js +2 -0
- package/state/data/IPreChangeHook.js.map +1 -0
- package/state/tools/AppStateDeepKeyTools.d.ts +4 -0
- package/state/tools/AppStateDeepKeyTools.js +25 -0
- package/state/tools/AppStateDeepKeyTools.js.map +1 -0
- package/state/tools/AppStateEventChangeTools.d.ts +3 -0
- package/state/tools/AppStateEventChangeTools.js +13 -0
- package/state/tools/AppStateEventChangeTools.js.map +1 -0
- package/state/tools/INestedPathHelperVO.d.ts +4 -0
- package/state/tools/INestedPathHelperVO.js +2 -0
- package/state/tools/INestedPathHelperVO.js.map +1 -0
- package/time/TimeModule.js +5 -2
- package/time/TimeModule.js.map +1 -1
- package/time/data/state/TimeModuleAppStateType.d.ts +8 -0
- package/time/data/state/TimeModuleAppStateType.js +8 -0
- package/time/data/state/TimeModuleAppStateType.js.map +1 -0
- package/time/managers/TimeManager.d.ts +5 -3
- package/time/managers/TimeManager.js +8 -5
- package/time/managers/TimeManager.js.map +1 -1
- package/app/data/AppConfigType.d.ts +0 -1
- package/app/data/AppConfigType.js +0 -2
- package/app/data/AppConfigType.js.map +0 -1
- package/app/data/AppConfigVO.d.ts +0 -11
- package/app/data/AppConfigVO.js +0 -27
- package/app/data/AppConfigVO.js.map +0 -1
- package/app/data/IAppModelStorageVO.js +0 -2
- package/app/data/IAppModelStorageVO.js.map +0 -1
- package/app/data/IItemsConfigVO.d.ts +0 -4
- package/app/data/IItemsConfigVO.js +0 -2
- package/app/data/IItemsConfigVO.js.map +0 -1
- package/app/models/AppConfigModel.d.ts +0 -6
- package/app/models/AppConfigModel.js +0 -37
- package/app/models/AppConfigModel.js.map +0 -1
- package/app/models/AppModel.d.ts +0 -8
- package/app/models/AppModel.js.map +0 -1
- package/assets/AssetsModule.js.map +0 -1
- package/assets/data/IAssetsConfigVO.d.ts +0 -4
- package/assets/data/IAssetsConfigVO.js +0 -2
- package/assets/data/IAssetsConfigVO.js.map +0 -1
- package/assets/models/AssetsModel.d.ts +0 -3
- package/assets/models/AssetsModel.js +0 -25
- package/assets/models/AssetsModel.js.map +0 -1
- package/base/models/BaseAppGenericObjectsModel.d.ts +0 -7
- package/base/models/BaseAppGenericObjectsModel.js +0 -54
- package/base/models/BaseAppGenericObjectsModel.js.map +0 -1
- package/data/IAppGenericObjectVO.d.ts +0 -4
- package/data/IAppGenericObjectVO.js +0 -2
- package/data/IAppGenericObjectVO.js.map +0 -1
- package/debug/data/DefaultDebugModuleConfigVO.d.ts +0 -5
- package/debug/data/DefaultDebugModuleConfigVO.js +0 -12
- package/debug/data/DefaultDebugModuleConfigVO.js.map +0 -1
- package/debug/data/IDebugModuleConfigVO.d.ts +0 -4
- package/debug/data/IDebugModuleConfigVO.js +0 -2
- package/debug/data/IDebugModuleConfigVO.js.map +0 -1
- package/dependencies/DependenciesModule.js.map +0 -1
- package/device/models/DeviceInfoModel.d.ts +0 -5
- package/device/models/DeviceInfoModel.js +0 -25
- package/device/models/DeviceInfoModel.js.map +0 -1
- package/index.d.ts +0 -26
- package/index.js +0 -27
- package/index.js.map +0 -1
- package/init/events/InitApplicationEvents.js.map +0 -1
- package/pages/PageId.d.ts +0 -4
- package/pages/PageId.js +0 -5
- package/pages/PageId.js.map +0 -1
- package/pages/models/PagesModel.d.ts +0 -11
- package/pages/models/PagesModel.js +0 -49
- package/pages/models/PagesModel.js.map +0 -1
- package/pages/models/PagesModelEvent.d.ts +0 -3
- package/pages/models/PagesModelEvent.js +0 -4
- package/pages/models/PagesModelEvent.js.map +0 -1
- package/storage/StorageModule.d.ts +0 -4
- package/storage/StorageModule.js.map +0 -1
- package/storage/StorageModuleConfig.d.ts +0 -3
- package/storage/StorageModuleConfig.js +0 -4
- package/storage/StorageModuleConfig.js.map +0 -1
- package/storage/managers/StorageManager.js.map +0 -1
- package/time/models/TimeModel.d.ts +0 -11
- package/time/models/TimeModel.js +0 -59
- package/time/models/TimeModel.js.map +0 -1
- package/time/models/TimeModelEvent.d.ts +0 -3
- package/time/models/TimeModelEvent.js +0 -4
- package/time/models/TimeModelEvent.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreloaderPageId.js","sourceRoot":"","sources":["../../../src/preloader-page/data/PreloaderPageId.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,eAAe,GAAG,eAAe,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BaseObject } from "@flashist/fcore";
|
|
2
2
|
import { SoundsManager } from "@flashist/flibs";
|
|
3
|
-
import {
|
|
3
|
+
import { LocalStorageManager } from "../../local-storage/managers/LocalStorageManager";
|
|
4
4
|
export declare class SoundsStorageManager extends BaseObject {
|
|
5
5
|
protected soundsManager: SoundsManager;
|
|
6
|
-
protected storageManager:
|
|
6
|
+
protected storageManager: LocalStorageManager;
|
|
7
7
|
protected construction(...args: any[]): void;
|
|
8
8
|
protected addListeners(): void;
|
|
9
9
|
protected onSoundsDataChange(): void;
|
|
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
15
15
|
})();
|
|
16
16
|
import { BaseObject } from "@flashist/fcore";
|
|
17
17
|
import { getInstance, SoundsManager, SoundsManagerEvent } from "@flashist/flibs";
|
|
18
|
-
import {
|
|
18
|
+
import { LocalStorageManager } from "../../local-storage/managers/LocalStorageManager";
|
|
19
19
|
import { SoundsSettings } from "../SoundsSettings";
|
|
20
20
|
var SoundsStorageManager = /** @class */ (function (_super) {
|
|
21
21
|
__extends(SoundsStorageManager, _super);
|
|
@@ -28,7 +28,7 @@ var SoundsStorageManager = /** @class */ (function (_super) {
|
|
|
28
28
|
args[_i] = arguments[_i];
|
|
29
29
|
}
|
|
30
30
|
this.soundsManager = getInstance(SoundsManager);
|
|
31
|
-
this.storageManager = getInstance(
|
|
31
|
+
this.storageManager = getInstance(LocalStorageManager);
|
|
32
32
|
_super.prototype.construction.apply(this, args);
|
|
33
33
|
};
|
|
34
34
|
SoundsStorageManager.prototype.addListeners = function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundsStorageManager.js","sourceRoot":"","sources":["../../../src/sounds/managers/SoundsStorageManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"SoundsStorageManager.js","sourceRoot":"","sources":["../../../src/sounds/managers/SoundsStorageManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAC,mBAAmB,EAAC,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD;IAA0C,wCAAU;IAApD;;IAsCA,CAAC;IAjCa,2CAAY,GAAtB;QAAuB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QAC1B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEvD,iBAAM,YAAY,aAAI,IAAI,EAAE;IAChC,CAAC;IAES,2CAAY,GAAtB;QACI,iBAAM,YAAY,WAAE,CAAC;QAErB,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CACrC,IAAI,CAAC,aAAa,EAClB,kBAAkB,CAAC,eAAe,EAClC,IAAI,CAAC,kBAAkB,CAC1B,CAAC;IACN,CAAC;IAES,iDAAkB,GAA5B;QACI,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAEM,mDAAoB,GAA3B;QACI,IAAM,OAAO,GAAY,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAU,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtG,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,EAAE;YACvC,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;SACxC;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAES,+CAAgB,GAA1B;QACI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpG,CAAC;IACL,2BAAC;AAAD,CAAC,AAtCD,CAA0C,UAAU,GAsCnD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BaseAppModule } from "../base/modules/BaseAppModule";
|
|
2
|
+
import { AppStateStorage } from "./data/AppStateStorage";
|
|
3
|
+
import { Flatten } from "./data/DeepKeyTypings";
|
|
4
|
+
export declare class AppStateModule extends BaseAppModule {
|
|
5
|
+
init(): void;
|
|
6
|
+
initCompleteHook(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare const appStorage: () => AppStateStorage;
|
|
9
|
+
export declare const appStateChangeEvent: <StateType extends object>() => <DeepKeyType extends keyof Flatten<StateType, never>>(deepKey: DeepKeyType) => string;
|
|
10
|
+
/**
|
|
11
|
+
//
|
|
12
|
+
export const getAppStateStorage = (): AppStateStorage => {
|
|
13
|
+
return getInstance(AppStateStorage);
|
|
14
|
+
};
|
|
15
|
+
export const getAppState = getAppStateStorage().getState.bind;
|
|
16
|
+
// export const appStateInitializeWith = getAppStateStorage().initializeWith;
|
|
17
|
+
|
|
18
|
+
export const getAppStateChangeEventName = <StateType extends object>() => {
|
|
19
|
+
return <DeepKeyType extends keyof Flatten<StateType>>(deepKey: DeepKeyType): string => {
|
|
20
|
+
return AppStateEventChangeTools.getChangeEvent(deepKey)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// MODIFICATIONS
|
|
25
|
+
|
|
26
|
+
// export const appStateChange = getInstance(AppStateStorage).change;
|
|
27
|
+
export const appStateChange = <StateType extends object>() => {
|
|
28
|
+
return <DeepKeyType extends keyof Flatten<StateType>>(key: DeepKeyType, value: Flatten<StateType>[DeepKeyType]): void => {
|
|
29
|
+
const appStateStorage: AppStateStorage = getAppStateStorage();
|
|
30
|
+
appStateStorage.change({} as StateType, key, value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// export const appStateDelete = <StateType extends object>(nestedPaths: ObjectNestedPathsType<StateType>) => {
|
|
35
|
+
// getInstance(AppStateStorage).delete<StateType>(nestedPaths);
|
|
36
|
+
// }
|
|
37
|
+
|
|
38
|
+
// export const appStateAddElements = <StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]) => {
|
|
39
|
+
// getInstance(AppStateStorage).addElements<StateType, ElementType>(nestedPaths, ...elements);
|
|
40
|
+
// }
|
|
41
|
+
|
|
42
|
+
// export const appStateRemoveElements = <StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]) => {
|
|
43
|
+
// getInstance(AppStateStorage).removeElements<StateType, ElementType>(nestedPaths, ...elements);
|
|
44
|
+
// }
|
|
45
|
+
|
|
46
|
+
**/
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
import { getInstance, serviceLocatorAdd } from "@flashist/flibs";
|
|
17
|
+
import { BaseAppModule } from "../base/modules/BaseAppModule";
|
|
18
|
+
import { AppStateStorage } from "./data/AppStateStorage";
|
|
19
|
+
import { AppStateEventChangeTools } from "./tools/AppStateEventChangeTools";
|
|
20
|
+
var AppStateModule = /** @class */ (function (_super) {
|
|
21
|
+
__extends(AppStateModule, _super);
|
|
22
|
+
function AppStateModule() {
|
|
23
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
24
|
+
}
|
|
25
|
+
AppStateModule.prototype.init = function () {
|
|
26
|
+
_super.prototype.init.call(this);
|
|
27
|
+
serviceLocatorAdd(AppStateStorage, { isSingleton: true });
|
|
28
|
+
};
|
|
29
|
+
AppStateModule.prototype.initCompleteHook = function () {
|
|
30
|
+
_super.prototype.initCompleteHook.call(this);
|
|
31
|
+
getInstance(AppStateStorage).initializeComplete();
|
|
32
|
+
};
|
|
33
|
+
return AppStateModule;
|
|
34
|
+
}(BaseAppModule));
|
|
35
|
+
export { AppStateModule };
|
|
36
|
+
export var appStorage = function () {
|
|
37
|
+
return getInstance(AppStateStorage);
|
|
38
|
+
};
|
|
39
|
+
export var appStateChangeEvent = function () {
|
|
40
|
+
return function (deepKey) {
|
|
41
|
+
return AppStateEventChangeTools.getChangeEvent(deepKey);
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
//
|
|
46
|
+
export const getAppStateStorage = (): AppStateStorage => {
|
|
47
|
+
return getInstance(AppStateStorage);
|
|
48
|
+
};
|
|
49
|
+
export const getAppState = getAppStateStorage().getState.bind;
|
|
50
|
+
// export const appStateInitializeWith = getAppStateStorage().initializeWith;
|
|
51
|
+
|
|
52
|
+
export const getAppStateChangeEventName = <StateType extends object>() => {
|
|
53
|
+
return <DeepKeyType extends keyof Flatten<StateType>>(deepKey: DeepKeyType): string => {
|
|
54
|
+
return AppStateEventChangeTools.getChangeEvent(deepKey)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// MODIFICATIONS
|
|
59
|
+
|
|
60
|
+
// export const appStateChange = getInstance(AppStateStorage).change;
|
|
61
|
+
export const appStateChange = <StateType extends object>() => {
|
|
62
|
+
return <DeepKeyType extends keyof Flatten<StateType>>(key: DeepKeyType, value: Flatten<StateType>[DeepKeyType]): void => {
|
|
63
|
+
const appStateStorage: AppStateStorage = getAppStateStorage();
|
|
64
|
+
appStateStorage.change({} as StateType, key, value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// export const appStateDelete = <StateType extends object>(nestedPaths: ObjectNestedPathsType<StateType>) => {
|
|
69
|
+
// getInstance(AppStateStorage).delete<StateType>(nestedPaths);
|
|
70
|
+
// }
|
|
71
|
+
|
|
72
|
+
// export const appStateAddElements = <StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]) => {
|
|
73
|
+
// getInstance(AppStateStorage).addElements<StateType, ElementType>(nestedPaths, ...elements);
|
|
74
|
+
// }
|
|
75
|
+
|
|
76
|
+
// export const appStateRemoveElements = <StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]) => {
|
|
77
|
+
// getInstance(AppStateStorage).removeElements<StateType, ElementType>(nestedPaths, ...elements);
|
|
78
|
+
// }
|
|
79
|
+
|
|
80
|
+
**/
|
|
81
|
+
//# sourceMappingURL=AppStateModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppStateModule.js","sourceRoot":"","sources":["../../src/state/AppStateModule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E;IAAoC,kCAAa;IAAjD;;IAaA,CAAC;IAXG,6BAAI,GAAJ;QACI,iBAAM,IAAI,WAAE,CAAC;QAEb,iBAAiB,CAAC,eAAe,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,yCAAgB,GAAhB;QACI,iBAAM,gBAAgB,WAAE,CAAC;QAEzB,WAAW,CAAC,eAAe,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACtD,CAAC;IACL,qBAAC;AAAD,CAAC,AAbD,CAAoC,aAAa,GAahD;;AAED,MAAM,CAAC,IAAM,UAAU,GAAG;IACtB,OAAO,WAAW,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,mBAAmB,GAAG;IAC/B,OAAO,UAA+C,OAAoB;QACtE,OAAO,wBAAwB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC,CAAA;AACL,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Flatten } from "./DeepKeyTypings";
|
|
2
|
+
import { BaseObjectWithGlobalDispatcher } from "../../base/BaseObjectWithGlobalDispatcher";
|
|
3
|
+
import { IDeepKeyHelperVO } from "../tools/INestedPathHelperVO";
|
|
4
|
+
import { DeepReadonly } from "./DeepReadableTypings";
|
|
5
|
+
import { IPreChangeHook } from "./IPreChangeHook";
|
|
6
|
+
export declare class AppStateStorage extends BaseObjectWithGlobalDispatcher {
|
|
7
|
+
protected isInitialized: boolean;
|
|
8
|
+
protected state: object;
|
|
9
|
+
protected pathsHelperDataCache: {
|
|
10
|
+
[pathJsonText: string]: IDeepKeyHelperVO;
|
|
11
|
+
};
|
|
12
|
+
protected preChangeHooks: IPreChangeHook[];
|
|
13
|
+
initializeWith<StateType extends object>(initState: StateType): void;
|
|
14
|
+
initializeComplete(): void;
|
|
15
|
+
getState<StateType extends object>(): DeepReadonly<StateType>;
|
|
16
|
+
protected dispatchChangeEvents(helperData: IDeepKeyHelperVO): void;
|
|
17
|
+
protected getPathsHelperData(deepKey: string): IDeepKeyHelperVO;
|
|
18
|
+
change<StateType extends object>(): <DeepKeyType extends keyof Flatten<StateType, never>>(key: DeepKeyType, value: Partial<Flatten<StateType, never>[DeepKeyType]>) => void;
|
|
19
|
+
protected innerChange<StateType, DeepKeyType extends keyof Flatten<StateType>, ValueType extends Flatten<StateType>[DeepKeyType]>(stateForTypings: StateType, deepKey: DeepKeyType, value: Partial<ValueType>): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
import { ObjectTools } from "@flashist/fcore";
|
|
17
|
+
import { BaseObjectWithGlobalDispatcher } from "../../base/BaseObjectWithGlobalDispatcher";
|
|
18
|
+
import { AppStateEventChangeTools } from "../tools/AppStateEventChangeTools";
|
|
19
|
+
import { AppStateDeepKeyTools } from "../tools/AppStateDeepKeyTools";
|
|
20
|
+
var AppStateStorage = /** @class */ (function (_super) {
|
|
21
|
+
__extends(AppStateStorage, _super);
|
|
22
|
+
function AppStateStorage() {
|
|
23
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
24
|
+
_this.isInitialized = false;
|
|
25
|
+
_this.state = {};
|
|
26
|
+
_this.pathsHelperDataCache = {};
|
|
27
|
+
_this.preChangeHooks = [];
|
|
28
|
+
return _this;
|
|
29
|
+
// // public change<StateType extends object, ChangeType>(nestedPaths: ObjectNestedPathsType<StateType>, value: ChangeType): void {
|
|
30
|
+
// public change<StateType, DeepKeyType extends keyof Flatten<StateType>>(obj: StateType, key: DeepKeyType, value: Flatten<StateType>[DeepKeyType]): void {
|
|
31
|
+
// // AS ANY needed to calm compiler and autocomplete
|
|
32
|
+
// let tempObject: StateType = this.state as any;
|
|
33
|
+
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
34
|
+
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
35
|
+
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
36
|
+
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
37
|
+
// if (nestedPathIndex === (nestedPathsCount - 1)) {
|
|
38
|
+
// // tempObject[singlePath] = value;
|
|
39
|
+
// ObjectTools.copySinglePropFromValue(tempObject, singlePath as string, value);
|
|
40
|
+
// } else {
|
|
41
|
+
// tempObject = tempObject[singlePath];
|
|
42
|
+
// }
|
|
43
|
+
// }
|
|
44
|
+
// this.dispatchChangeEvents(pathsHelperData);
|
|
45
|
+
// }
|
|
46
|
+
// public delete<StateType extends object>(nestedPaths: ObjectNestedPathsType<StateType>): 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
|
+
// if (nestedPathIndex === (nestedPathsCount - 1)) {
|
|
54
|
+
// delete tempObject[singlePath];
|
|
55
|
+
// } else {
|
|
56
|
+
// tempObject = tempObject[singlePath];
|
|
57
|
+
// }
|
|
58
|
+
// }
|
|
59
|
+
// this.dispatchChangeEvents(pathsHelperData);
|
|
60
|
+
// }
|
|
61
|
+
// public addElements<StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]): void {
|
|
62
|
+
// // AS ANY needed to calm compiler and autocomplete
|
|
63
|
+
// let tempObject: StateType = this.state as any;
|
|
64
|
+
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
65
|
+
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
66
|
+
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
67
|
+
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
68
|
+
// tempObject = tempObject[singlePath];
|
|
69
|
+
// }
|
|
70
|
+
// (tempObject as Array<ElementType>).push(...elements);
|
|
71
|
+
// this.dispatchChangeEvents(pathsHelperData);
|
|
72
|
+
// }
|
|
73
|
+
// public removeElements<StateType extends object, ElementType>(nestedPaths: ObjectNestedPathsType<StateType>, ...elements: ElementType[]): void {
|
|
74
|
+
// // AS ANY needed to calm compiler and autocomplete
|
|
75
|
+
// let tempObject: StateType = this.state as any;
|
|
76
|
+
// const pathsHelperData: IDeepKeyHelperVO = this.getPathsHelperData(nestedPaths as any);
|
|
77
|
+
// let nestedPathsCount: number = pathsHelperData.splitDeepKeyParts.length;
|
|
78
|
+
// for (let nestedPathIndex: number = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
79
|
+
// const singlePath: string | number = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
80
|
+
// tempObject = tempObject[singlePath];
|
|
81
|
+
// }
|
|
82
|
+
// ArrayTools.removeItems((tempObject as Array<ElementType>), elements);
|
|
83
|
+
// this.dispatchChangeEvents(pathsHelperData);
|
|
84
|
+
// }
|
|
85
|
+
}
|
|
86
|
+
AppStateStorage.prototype.initializeWith = function (initState) {
|
|
87
|
+
if (this.isInitialized) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
ObjectTools.copyProps(this.state, initState);
|
|
91
|
+
};
|
|
92
|
+
AppStateStorage.prototype.initializeComplete = function () {
|
|
93
|
+
this.isInitialized = true;
|
|
94
|
+
};
|
|
95
|
+
AppStateStorage.prototype.getState = function () {
|
|
96
|
+
return this.state;
|
|
97
|
+
};
|
|
98
|
+
AppStateStorage.prototype.dispatchChangeEvents = function (helperData) {
|
|
99
|
+
for (var _i = 0, _a = helperData.dispatchingChangePaths; _i < _a.length; _i++) {
|
|
100
|
+
var singleDispatchingChangePath = _a[_i];
|
|
101
|
+
var eventName = AppStateEventChangeTools.getChangeEvent(singleDispatchingChangePath);
|
|
102
|
+
this.dispatchEvent(eventName);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
AppStateStorage.prototype.getPathsHelperData = function (deepKey) {
|
|
106
|
+
var result = this.pathsHelperDataCache[deepKey];
|
|
107
|
+
if (!result) {
|
|
108
|
+
result = AppStateDeepKeyTools.prepareDeepKeyHelperData(deepKey);
|
|
109
|
+
this.pathsHelperDataCache[deepKey] = result;
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
};
|
|
113
|
+
AppStateStorage.prototype.change = function () {
|
|
114
|
+
var _this = this;
|
|
115
|
+
return function (key, value) {
|
|
116
|
+
_this.innerChange({}, key, value);
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
AppStateStorage.prototype.innerChange = function (stateForTypings, deepKey, value) {
|
|
120
|
+
// Pre Change Hooks: execute pre-change-hooks on every element: e.g. ecs module hooks might change prepare the new ecs components to sort their container-type-keys to make sure they are always the same q
|
|
121
|
+
if (this.preChangeHooks.length > 0) {
|
|
122
|
+
this.preChangeHooks.forEach(function (item) {
|
|
123
|
+
item(stateForTypings, deepKey, value);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
var pathsHelperData = this.getPathsHelperData(deepKey);
|
|
127
|
+
var tempObject = this.state;
|
|
128
|
+
var nestedPathsCount = pathsHelperData.splitDeepKeyParts.length;
|
|
129
|
+
for (var nestedPathIndex = 0; nestedPathIndex < nestedPathsCount; nestedPathIndex++) {
|
|
130
|
+
var singlePath = pathsHelperData.splitDeepKeyParts[nestedPathIndex];
|
|
131
|
+
if (nestedPathIndex === (nestedPathsCount - 1)) {
|
|
132
|
+
ObjectTools.copySinglePropFromValue(tempObject, singlePath, value);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
tempObject = tempObject[singlePath];
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
this.dispatchChangeEvents(pathsHelperData);
|
|
139
|
+
};
|
|
140
|
+
return AppStateStorage;
|
|
141
|
+
}(BaseObjectWithGlobalDispatcher));
|
|
142
|
+
export { AppStateStorage };
|
|
143
|
+
//# sourceMappingURL=AppStateStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppStateStorage.js","sourceRoot":"","sources":["../../../src/state/data/AppStateStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
declare type Writable<T, O> = T extends O ? T : {
|
|
2
|
+
[P in keyof T as IfEquals<{
|
|
3
|
+
[Q in P]: T[P];
|
|
4
|
+
}, {
|
|
5
|
+
-readonly [Q in P]: T[P];
|
|
6
|
+
}, P>]: T[P];
|
|
7
|
+
};
|
|
8
|
+
declare type IfEquals<X, Y, A = X, B = never> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? A : B;
|
|
9
|
+
declare type Cleanup<T> = 0 extends (1 & T) ? unknown : T extends readonly any[] ? (Exclude<keyof T, keyof any[]> extends never ? {
|
|
10
|
+
[k: `${number}`]: T[number];
|
|
11
|
+
} : Omit<T, keyof any[]>) : T;
|
|
12
|
+
declare type PrefixKeys<V, K extends PropertyKey, O> = V extends O ? {
|
|
13
|
+
[P in K]: V;
|
|
14
|
+
} : V extends object ? {
|
|
15
|
+
[P in keyof V as `${Extract<K, string | number>}.${Extract<P, string | number>}`]: V[P];
|
|
16
|
+
} : {
|
|
17
|
+
[P in K]: V;
|
|
18
|
+
};
|
|
19
|
+
declare type ValueOf<T> = T[keyof T];
|
|
20
|
+
export declare type Flatten<T, O = never> = Writable<Cleanup<T>, O> extends infer U ? U extends O ? U : U extends object ? ValueOf<{
|
|
21
|
+
[K in keyof U]-?: (x: PrefixKeys<Flatten<U[K], O>, K, O>) => void;
|
|
22
|
+
}> | ((x: U) => void) extends (x: infer I) => void ? {
|
|
23
|
+
[K in keyof I]: I[K];
|
|
24
|
+
} : never : U : never;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
// function lookup<T, K extends keyof Flatten<T>>(obj: T, key: K): Flatten<T>[K];
|
|
3
|
+
// function lookup(obj: any, key: string) {
|
|
4
|
+
// const i = key.indexOf(".");
|
|
5
|
+
// return (i < 0) ? obj[key] : (lookup as any)(obj[key.substring(0, i)], key.substring(i + 1));
|
|
6
|
+
// }
|
|
7
|
+
/*
|
|
8
|
+
// TRY #2: EXAMPLES OF USING
|
|
9
|
+
|
|
10
|
+
// function shortLookup<ObjectType, DeepKeyType extends keyof Flatten<ObjectType>, ValueType extends Flatten<ObjectType>[DeepKeyType]>(obj: ObjectType, key: DeepKeyType, value: ValueType): void {
|
|
11
|
+
function shortLookup<ObjectType, DeepKeyType extends keyof Flatten<ObjectType>>(obj: ObjectType = {} as any, key: DeepKeyType, value: Flatten<ObjectType>[DeepKeyType]): void {
|
|
12
|
+
// const i = key.indexOf(".");
|
|
13
|
+
// return (i < 0) ? obj[key] : (lookup as any)(obj[key.substring(0, i)], key.substring(i + 1));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function myLookup<ObjectType, DeepKeyType extends keyof Flatten<ObjectType>, ValueType extends Flatten<ObjectType>[DeepKeyType]>(obj: ObjectType, deepKey: DeepKeyType, value: ValueType): void;
|
|
17
|
+
function myLookup(obj: any, deepKey: string, value: any) {
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function myLookupOneInstance<ObjectType, DeepKeyType extends keyof Flatten<ObjectType>, ValueType extends Flatten<ObjectType>[DeepKeyType]>(obj: ObjectType, deepKey: DeepKeyType, value: ValueType): void {
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// function myLookup2<ObjectType, DeepKeyType extends keyof Flatten<ObjectType>, ValueType extends Flatten<ObjectType>[DeepKeyType]>(deepKey: DeepKeyType, value: ValueType, obj: ObjectType): void;
|
|
24
|
+
function myLookup2<ObjectType, DeepKeyType extends keyof Flatten<ObjectType>, ValueType extends Flatten<ObjectType>[DeepKeyType]>(deepKey: DeepKeyType, value: ValueType, obj: ObjectType = {} as ObjectType) {
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// function myLookupWithoutObj<ObjectType extends object, DeepKeyType extends keyof Flatten<ObjectType> = keyof Flatten<ObjectType>, ValueType extends Flatten<ObjectType>[DeepKeyType] = Flatten<ObjectType>[DeepKeyType]>(deepKey: DeepKeyType, value: ValueType): void;
|
|
28
|
+
function myLookupWithoutObj<ObjectType extends object, DeepKeyType extends keyof Flatten<ObjectType> = keyof Flatten<ObjectType>, ValueType extends Flatten<ObjectType>[DeepKeyType] = Flatten<ObjectType>[DeepKeyType]>(deepKey: DeepKeyType, value: ValueType) {
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// type FooType = {
|
|
32
|
+
// a: [number, { b: string }, number]
|
|
33
|
+
// c: {
|
|
34
|
+
// d: {
|
|
35
|
+
// e: number
|
|
36
|
+
// }
|
|
37
|
+
// }
|
|
38
|
+
// }
|
|
39
|
+
const foo = {
|
|
40
|
+
a: [1, { b: "two" }, 3] as [number, { b: string }, number],
|
|
41
|
+
c: { d: { e: 1 } }
|
|
42
|
+
}
|
|
43
|
+
type FooType = typeof foo;
|
|
44
|
+
|
|
45
|
+
lookup(foo, "a.1.b").toUpperCase() // TWO
|
|
46
|
+
myLookup(foo, "a.1.b", 20).toUpperCase() // TWO
|
|
47
|
+
myLookup(foo, "a.0", 20);
|
|
48
|
+
myLookup(foo, "a.0", "20");
|
|
49
|
+
|
|
50
|
+
myLookupOneInstance(foo, "c", 20);
|
|
51
|
+
myLookupOneInstance(null as FooType, "a.0", 20);
|
|
52
|
+
|
|
53
|
+
shortLookup({} as FooType, "a.0", "20");
|
|
54
|
+
shortLookup({} as FooType, "a.0", 20);
|
|
55
|
+
|
|
56
|
+
myLookup2("a.0", "2", foo);
|
|
57
|
+
myLookup2<FooType, keyof Flatten<FooType>, Flatten<FooType>[keyof Flatten<FooType>]>("a.0", "20");
|
|
58
|
+
myLookup2("a.0", 20);
|
|
59
|
+
myLookup2<FooType>(foo, "a", "20");
|
|
60
|
+
myLookup2<FooType>(foo, "a.0", 20);
|
|
61
|
+
myLookupWithoutObj<FooType>("c.e", 20);
|
|
62
|
+
myLookupWithoutObj<FooType, keyof Flatten<FooType>, Flatten<FooType>[keyof Flatten<FooType>]>("a.0", 20);
|
|
63
|
+
myLookupWithoutObj<FooType, keyof Flatten<FooType>, Flatten<FooType>[keyof Flatten<FooType>]>("a.0", "20");
|
|
64
|
+
myLookupWithoutObj<FooType>("a.0", "20");
|
|
65
|
+
myLookupWithoutObj<FooType>("a.1", "20");
|
|
66
|
+
|
|
67
|
+
*/
|
|
68
|
+
// function lookupWithReturn<ValueType>(obj: any, key: string, value: ValueType): typeof value {
|
|
69
|
+
// const i = key.indexOf(".");
|
|
70
|
+
// return (i < 0) ? obj[key] : (lookup as any)(obj[key.substring(0, i)], key.substring(i + 1));
|
|
71
|
+
// }
|
|
72
|
+
// lookupWithReturn(foo, "a.0", 20)
|
|
73
|
+
// lookupWithReturn(foo, "a.0", "20")
|
|
74
|
+
// // lookupWithReturn(foo, "a.0", false)
|
|
75
|
+
// try {
|
|
76
|
+
// console.log(lookup(foo, "c.d.e")) // oops, error, can't necessarily look that up
|
|
77
|
+
// } catch (e) {
|
|
78
|
+
// console.log(e); // maybe obj is undefined
|
|
79
|
+
// }
|
|
80
|
+
/*
|
|
81
|
+
==== FIRST DRAFT: works, but not perfect, cuz gets list of split properties and can't get a.0 as an index for array elements ====
|
|
82
|
+
|
|
83
|
+
type Join<K, P> = K extends string | number ?
|
|
84
|
+
P extends string | number ?
|
|
85
|
+
`${K}${"" extends P ? "" : "."}${P}`
|
|
86
|
+
: never : never;
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
|
90
|
+
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...0[]]
|
|
91
|
+
|
|
92
|
+
type Paths<T, D extends number = 10> = [D] extends [never] ? never : T extends object ?
|
|
93
|
+
{ [K in keyof T]-?: K extends string | number ?
|
|
94
|
+
`${K}` | Join<K, Paths<T[K], Prev[D]>>
|
|
95
|
+
: never
|
|
96
|
+
}[keyof T] : ""
|
|
97
|
+
|
|
98
|
+
type Leaves<T, D extends number = 10> = [D] extends [never] ? never : T extends object ?
|
|
99
|
+
{ [K in keyof T]-?: Join<K, Leaves<T[K], Prev[D]>> }[keyof T] : "";
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
// type NestedObjectType = {
|
|
103
|
+
// a: string;
|
|
104
|
+
// b: string;
|
|
105
|
+
// nest: {
|
|
106
|
+
// c: string;
|
|
107
|
+
// };
|
|
108
|
+
// otherNest: {
|
|
109
|
+
// otherNest: {
|
|
110
|
+
// c: string;
|
|
111
|
+
// }
|
|
112
|
+
// };
|
|
113
|
+
// };
|
|
114
|
+
|
|
115
|
+
interface Tree {
|
|
116
|
+
left: Tree,
|
|
117
|
+
right: Tree,
|
|
118
|
+
data: string
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// type TreeLeaves = Leaves<Tree>; // sorry, compiler 💻⌛😫
|
|
122
|
+
// type TreeLeaves = "data" | "left.data" | "right.data" | "left.left.data" |
|
|
123
|
+
// "left.right.data" | "right.left.data" | "right.right.data" | "left.left.left.data" |
|
|
124
|
+
// "left.left.right.data" | "left.right.left.data" | ... 1012 more ... |
|
|
125
|
+
// "right.right.right.right.right.right.right.right.right.data"
|
|
126
|
+
|
|
127
|
+
type TreeLeaves = Leaves<Tree, 100>;
|
|
128
|
+
// type TreeLeaves = "data" | "left.data" | "right.data" | "left.left.data" |
|
|
129
|
+
// "left.right.data" | "right.left.data" | "right.right.data"
|
|
130
|
+
|
|
131
|
+
// type NestedObjectPaths = Paths<NestedObjectType>;
|
|
132
|
+
// type NestedObjectPaths = "a" | "b" | "nest" | "otherNest" | "nest.c" | "otherNest.c"
|
|
133
|
+
// type NestedObjectLeaves = Leaves<NestedObjectType>
|
|
134
|
+
// type NestedObjectLeaves = "a" | "b" | "nest.c" | "otherNest.c"
|
|
135
|
+
|
|
136
|
+
export type ObjectSingleNestedPathType<T extends object> = Paths<T>;
|
|
137
|
+
export type ObjectNestedPathsType<T extends object> = Array<Paths<T>>
|
|
138
|
+
|
|
139
|
+
// const test: MyGenericType<NestedObjectType> = {
|
|
140
|
+
// keys: ["a", "nest.c", "otherNest.otherNest"]
|
|
141
|
+
// }
|
|
142
|
+
|
|
143
|
+
*/
|
|
144
|
+
//# sourceMappingURL=DeepKeyTypings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepKeyTypings.js","sourceRoot":"","sources":["../../../src/state/data/DeepKeyTypings.ts"],"names":[],"mappings":";AA4BA,iFAAiF;AACjF,2CAA2C;AAC3C,kCAAkC;AAClC,mGAAmG;AACnG,IAAI;AAGJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DE;AAGF,gGAAgG;AAChG,kCAAkC;AAClC,mGAAmG;AACnG,IAAI;AACJ,mCAAmC;AACnC,qCAAqC;AACrC,yCAAyC;AAEzC,QAAQ;AACR,uFAAuF;AACvF,gBAAgB;AAChB,gDAAgD;AAChD,IAAI;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+DE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare type DeepReadonly<T> = T extends (infer R)[] ? DeepReadonlyArray<R> : T extends Function ? T : T extends object ? DeepReadonlyObject<T> : T;
|
|
2
|
+
interface DeepReadonlyArray<T> extends ReadonlyArray<DeepReadonly<T>> {
|
|
3
|
+
}
|
|
4
|
+
declare type DeepReadonlyObject<T> = {
|
|
5
|
+
readonly [P in keyof T]: DeepReadonly<T[P]>;
|
|
6
|
+
};
|
|
7
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepReadableTypings.js","sourceRoot":"","sources":["../../../src/state/data/DeepReadableTypings.ts"],"names":[],"mappings":"AAMwE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Flatten } from "./DeepKeyTypings";
|
|
2
|
+
export interface IPreChangeHook extends Function {
|
|
3
|
+
<StateType, DeepKeyType extends keyof Flatten<StateType>, ValueType extends Flatten<StateType>[DeepKeyType]>(stateForTypings: StateType, deepKey: DeepKeyType, value: Partial<ValueType>): void;
|
|
4
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPreChangeHook.js","sourceRoot":"","sources":["../../../src/state/data/IPreChangeHook.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
var AppStateDeepKeyTools = /** @class */ (function () {
|
|
2
|
+
function AppStateDeepKeyTools() {
|
|
3
|
+
}
|
|
4
|
+
AppStateDeepKeyTools.prepareDeepKeyHelperData = function (deepKey) {
|
|
5
|
+
var result = {
|
|
6
|
+
splitDeepKeyParts: [],
|
|
7
|
+
dispatchingChangePaths: []
|
|
8
|
+
};
|
|
9
|
+
var tempTotalPath = "";
|
|
10
|
+
var splitPaths = deepKey.split(".");
|
|
11
|
+
for (var _i = 0, splitPaths_1 = splitPaths; _i < splitPaths_1.length; _i++) {
|
|
12
|
+
var singleSplitPath = splitPaths_1[_i];
|
|
13
|
+
result.splitDeepKeyParts.push(singleSplitPath);
|
|
14
|
+
if (tempTotalPath) {
|
|
15
|
+
tempTotalPath += ".";
|
|
16
|
+
}
|
|
17
|
+
tempTotalPath += singleSplitPath;
|
|
18
|
+
result.dispatchingChangePaths.push(tempTotalPath);
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
};
|
|
22
|
+
return AppStateDeepKeyTools;
|
|
23
|
+
}());
|
|
24
|
+
export { AppStateDeepKeyTools };
|
|
25
|
+
//# sourceMappingURL=AppStateDeepKeyTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppStateDeepKeyTools.js","sourceRoot":"","sources":["../../../src/state/tools/AppStateDeepKeyTools.ts"],"names":[],"mappings":"AAEA;IAAA;IAqBA,CAAC;IApBU,6CAAwB,GAA/B,UAAgC,OAAe;QAC3C,IAAM,MAAM,GAAqB;YAC7B,iBAAiB,EAAE,EAAE;YACrB,sBAAsB,EAAE,EAAE;SAC7B,CAAC;QAEF,IAAI,aAAa,GAAW,EAAE,CAAC;QAC/B,IAAM,UAAU,GAAa,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,KAA4B,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU,EAAE;YAAnC,IAAI,eAAe,mBAAA;YACpB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAE/C,IAAI,aAAa,EAAE;gBACf,aAAa,IAAI,GAAG,CAAC;aACxB;YACD,aAAa,IAAI,eAAe,CAAC;YACjC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACrD;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IACL,2BAAC;AAAD,CAAC,AArBD,IAqBC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
var AppStateEventChangeTools = /** @class */ (function () {
|
|
2
|
+
function AppStateEventChangeTools() {
|
|
3
|
+
}
|
|
4
|
+
// static getAppStateChangeEventName(deepKey: string): string {
|
|
5
|
+
// return AppStateEventChangeTools.getChangeEvent(deepKey);
|
|
6
|
+
// }
|
|
7
|
+
AppStateEventChangeTools.getChangeEvent = function (path) {
|
|
8
|
+
return "appStateChange:".concat(path.toString());
|
|
9
|
+
};
|
|
10
|
+
return AppStateEventChangeTools;
|
|
11
|
+
}());
|
|
12
|
+
export { AppStateEventChangeTools };
|
|
13
|
+
//# sourceMappingURL=AppStateEventChangeTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppStateEventChangeTools.js","sourceRoot":"","sources":["../../../src/state/tools/AppStateEventChangeTools.ts"],"names":[],"mappings":"AAGA;IAAA;IAQA,CAAC;IAPG,+DAA+D;IAC/D,+DAA+D;IAC/D,IAAI;IAEG,uCAAc,GAArB,UAAsB,IAA8B;QAChD,OAAO,yBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAE,CAAC;IAC/C,CAAC;IACL,+BAAC;AAAD,CAAC,AARD,IAQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"INestedPathHelperVO.js","sourceRoot":"","sources":["../../../src/state/tools/INestedPathHelperVO.ts"],"names":[],"mappings":""}
|