@flashist/appframework 0.0.50 → 0.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/app/AppModule.d.ts +2 -1
  2. package/app/AppModule.js +13 -13
  3. package/app/AppModule.js.map +1 -1
  4. package/app/commands/LoadAppConfigCommand.js +8 -8
  5. package/app/commands/LoadAppConfigCommand.js.map +1 -1
  6. package/app/commands/ParseStaticItemsConfigCommand.js +10 -5
  7. package/app/commands/ParseStaticItemsConfigCommand.js.map +1 -1
  8. package/app/data/{IAppModelStorageVO.d.ts → local-storage/IAppModelLocalStorageVO.d.ts} +1 -1
  9. package/app/data/local-storage/IAppModelLocalStorageVO.js +2 -0
  10. package/app/data/local-storage/IAppModelLocalStorageVO.js.map +1 -0
  11. package/app/data/state/AppModuleState.d.ts +19 -0
  12. package/app/data/state/AppModuleState.js +23 -0
  13. package/app/data/state/AppModuleState.js.map +1 -0
  14. package/app/managers/AppManager.d.ts +8 -7
  15. package/app/managers/AppManager.js +26 -14
  16. package/app/managers/AppManager.js.map +1 -1
  17. package/debug/DebugModule.js +8 -5
  18. package/debug/DebugModule.js.map +1 -1
  19. package/debug/data/state/DebugModuleState.d.ts +7 -0
  20. package/debug/data/state/DebugModuleState.js +10 -0
  21. package/debug/data/state/DebugModuleState.js.map +1 -0
  22. package/device/DeviceModule.d.ts +0 -1
  23. package/device/DeviceModule.js +4 -8
  24. package/device/DeviceModule.js.map +1 -1
  25. package/device/data/state/DeviceModuleState.d.ts +4 -0
  26. package/device/data/state/DeviceModuleState.js +5 -0
  27. package/device/data/state/DeviceModuleState.js.map +1 -0
  28. package/{assets/AssetsModule.d.ts → ecs/ECSModule.d.ts} +1 -1
  29. package/{assets/AssetsModule.js → ecs/ECSModule.js} +13 -9
  30. package/ecs/ECSModule.js.map +1 -0
  31. package/ecs/data/state/ECSModuleState.d.ts +6 -0
  32. package/ecs/data/state/ECSModuleState.js +8 -0
  33. package/ecs/data/state/ECSModuleState.js.map +1 -0
  34. package/ecs/ecs/components/IComponent.d.ts +3 -0
  35. package/ecs/ecs/components/IComponent.js +2 -0
  36. package/ecs/ecs/components/IComponent.js.map +1 -0
  37. package/ecs/ecs/entities/IEntity.d.ts +8 -0
  38. package/ecs/ecs/entities/IEntity.js +2 -0
  39. package/ecs/ecs/entities/IEntity.js.map +1 -0
  40. package/ecs/ecs/entities/queries/EntitiesQuery.d.ts +11 -0
  41. package/ecs/ecs/entities/queries/EntitiesQuery.js +52 -0
  42. package/ecs/ecs/entities/queries/EntitiesQuery.js.map +1 -0
  43. package/ecs/ecs/entities/queries/EntitiesQueryEvent.d.ts +4 -0
  44. package/ecs/ecs/entities/queries/EntitiesQueryEvent.js +5 -0
  45. package/ecs/ecs/entities/queries/EntitiesQueryEvent.js.map +1 -0
  46. package/ecs/ecs/systems/System.d.ts +16 -0
  47. package/ecs/ecs/systems/System.js +53 -0
  48. package/ecs/ecs/systems/System.js.map +1 -0
  49. package/ecs/managers/ECSManager.d.ts +38 -0
  50. package/ecs/managers/ECSManager.js +169 -0
  51. package/ecs/managers/ECSManager.js.map +1 -0
  52. package/ecs-rendermodule/ECSRenderModule.d.ts +5 -0
  53. package/{dependencies/DependenciesModule.js → ecs-rendermodule/ECSRenderModule.js} +17 -10
  54. package/ecs-rendermodule/ECSRenderModule.js.map +1 -0
  55. package/ecs-rendermodule/data/RenderModuleRootContainerId.d.ts +1 -0
  56. package/ecs-rendermodule/data/RenderModuleRootContainerId.js +2 -0
  57. package/ecs-rendermodule/data/RenderModuleRootContainerId.js.map +1 -0
  58. package/ecs-rendermodule/ecs/components/RenderComponent.d.ts +7 -0
  59. package/ecs-rendermodule/ecs/components/RenderComponent.js +6 -0
  60. package/ecs-rendermodule/ecs/components/RenderComponent.js.map +1 -0
  61. package/ecs-rendermodule/ecs/systems/RenderSystem.d.ts +11 -0
  62. package/ecs-rendermodule/ecs/systems/RenderSystem.js +44 -0
  63. package/ecs-rendermodule/ecs/systems/RenderSystem.js.map +1 -0
  64. package/facade/Facade.d.ts +0 -2
  65. package/facade/Facade.js +12 -12
  66. package/facade/Facade.js.map +1 -1
  67. package/init/commands/InitApplicationCommand.js +3 -3
  68. package/init/commands/InitApplicationCommand.js.map +1 -1
  69. package/init/events/{InitApplicationEvents.d.ts → InitApplicationEvent.d.ts} +0 -0
  70. package/init/events/{InitApplicationEvents.js → InitApplicationEvent.js} +1 -1
  71. package/init/events/InitApplicationEvent.js.map +1 -0
  72. package/{dependencies/DependenciesModule.d.ts → local-storage/LocalStorageModule.d.ts} +1 -1
  73. package/{storage/StorageModule.js → local-storage/LocalStorageModule.js} +9 -9
  74. package/local-storage/LocalStorageModule.js.map +1 -0
  75. package/local-storage/LocalStorageModuleConfig.d.ts +3 -0
  76. package/local-storage/LocalStorageModuleConfig.js +4 -0
  77. package/local-storage/LocalStorageModuleConfig.js.map +1 -0
  78. package/{storage/managers/StorageManager.d.ts → local-storage/managers/LocalStorageManager.d.ts} +1 -1
  79. package/{storage/managers/StorageManager.js → local-storage/managers/LocalStorageManager.js} +17 -17
  80. package/local-storage/managers/LocalStorageManager.js.map +1 -0
  81. package/locales/commands/ParseLocaleConfigCommand.js +5 -4
  82. package/locales/commands/ParseLocaleConfigCommand.js.map +1 -1
  83. package/package.json +3 -3
  84. package/pages/PagesModule.js +10 -3
  85. package/pages/PagesModule.js.map +1 -1
  86. package/pages/commands/ChangePageCommand.d.ts +0 -2
  87. package/pages/commands/ChangePageCommand.js +3 -4
  88. package/pages/commands/ChangePageCommand.js.map +1 -1
  89. package/pages/data/state/PagesModuleStateType.d.ts +10 -0
  90. package/pages/data/state/PagesModuleStateType.js +7 -0
  91. package/pages/data/state/PagesModuleStateType.js.map +1 -0
  92. package/pages/views/BasePageView.d.ts +0 -2
  93. package/pages/views/BasePageView.js +6 -5
  94. package/pages/views/BasePageView.js.map +1 -1
  95. package/pages/views/PagesMediator.d.ts +6 -0
  96. package/{app/models/AppModel.js → pages/views/PagesMediator.js} +15 -16
  97. package/pages/views/PagesMediator.js.map +1 -0
  98. package/pages/views/PagesView.d.ts +1 -4
  99. package/pages/views/PagesView.js +35 -16
  100. package/pages/views/PagesView.js.map +1 -1
  101. package/preloader-page/data/PreloaderPageId.d.ts +1 -0
  102. package/preloader-page/data/PreloaderPageId.js +2 -0
  103. package/preloader-page/data/PreloaderPageId.js.map +1 -0
  104. package/sounds/managers/SoundsStorageManager.d.ts +2 -2
  105. package/sounds/managers/SoundsStorageManager.js +2 -2
  106. package/sounds/managers/SoundsStorageManager.js.map +1 -1
  107. package/state/AppStateModule.d.ts +46 -0
  108. package/state/AppStateModule.js +81 -0
  109. package/state/AppStateModule.js.map +1 -0
  110. package/state/data/AppStateStorage.d.ts +20 -0
  111. package/state/data/AppStateStorage.js +143 -0
  112. package/state/data/AppStateStorage.js.map +1 -0
  113. package/state/data/DeepKeyTypings.d.ts +25 -0
  114. package/state/data/DeepKeyTypings.js +144 -0
  115. package/state/data/DeepKeyTypings.js.map +1 -0
  116. package/state/data/DeepReadableTypings.d.ts +7 -0
  117. package/state/data/DeepReadableTypings.js +3 -0
  118. package/state/data/DeepReadableTypings.js.map +1 -0
  119. package/state/data/IPreChangeHook.d.ts +4 -0
  120. package/state/data/IPreChangeHook.js +2 -0
  121. package/state/data/IPreChangeHook.js.map +1 -0
  122. package/state/tools/AppStateDeepKeyTools.d.ts +4 -0
  123. package/state/tools/AppStateDeepKeyTools.js +25 -0
  124. package/state/tools/AppStateDeepKeyTools.js.map +1 -0
  125. package/state/tools/AppStateEventChangeTools.d.ts +3 -0
  126. package/state/tools/AppStateEventChangeTools.js +13 -0
  127. package/state/tools/AppStateEventChangeTools.js.map +1 -0
  128. package/state/tools/INestedPathHelperVO.d.ts +4 -0
  129. package/state/tools/INestedPathHelperVO.js +2 -0
  130. package/state/tools/INestedPathHelperVO.js.map +1 -0
  131. package/time/TimeModule.js +5 -2
  132. package/time/TimeModule.js.map +1 -1
  133. package/time/data/state/TimeModuleAppStateType.d.ts +8 -0
  134. package/time/data/state/TimeModuleAppStateType.js +8 -0
  135. package/time/data/state/TimeModuleAppStateType.js.map +1 -0
  136. package/time/managers/TimeManager.d.ts +5 -3
  137. package/time/managers/TimeManager.js +8 -5
  138. package/time/managers/TimeManager.js.map +1 -1
  139. package/app/data/AppConfigType.d.ts +0 -1
  140. package/app/data/AppConfigType.js +0 -2
  141. package/app/data/AppConfigType.js.map +0 -1
  142. package/app/data/AppConfigVO.d.ts +0 -11
  143. package/app/data/AppConfigVO.js +0 -27
  144. package/app/data/AppConfigVO.js.map +0 -1
  145. package/app/data/IAppModelStorageVO.js +0 -2
  146. package/app/data/IAppModelStorageVO.js.map +0 -1
  147. package/app/data/IItemsConfigVO.d.ts +0 -4
  148. package/app/data/IItemsConfigVO.js +0 -2
  149. package/app/data/IItemsConfigVO.js.map +0 -1
  150. package/app/models/AppConfigModel.d.ts +0 -6
  151. package/app/models/AppConfigModel.js +0 -37
  152. package/app/models/AppConfigModel.js.map +0 -1
  153. package/app/models/AppModel.d.ts +0 -8
  154. package/app/models/AppModel.js.map +0 -1
  155. package/assets/AssetsModule.js.map +0 -1
  156. package/assets/data/IAssetsConfigVO.d.ts +0 -4
  157. package/assets/data/IAssetsConfigVO.js +0 -2
  158. package/assets/data/IAssetsConfigVO.js.map +0 -1
  159. package/assets/models/AssetsModel.d.ts +0 -3
  160. package/assets/models/AssetsModel.js +0 -25
  161. package/assets/models/AssetsModel.js.map +0 -1
  162. package/base/models/BaseAppGenericObjectsModel.d.ts +0 -7
  163. package/base/models/BaseAppGenericObjectsModel.js +0 -54
  164. package/base/models/BaseAppGenericObjectsModel.js.map +0 -1
  165. package/data/IAppGenericObjectVO.d.ts +0 -4
  166. package/data/IAppGenericObjectVO.js +0 -2
  167. package/data/IAppGenericObjectVO.js.map +0 -1
  168. package/debug/data/DefaultDebugModuleConfigVO.d.ts +0 -5
  169. package/debug/data/DefaultDebugModuleConfigVO.js +0 -12
  170. package/debug/data/DefaultDebugModuleConfigVO.js.map +0 -1
  171. package/debug/data/IDebugModuleConfigVO.d.ts +0 -4
  172. package/debug/data/IDebugModuleConfigVO.js +0 -2
  173. package/debug/data/IDebugModuleConfigVO.js.map +0 -1
  174. package/dependencies/DependenciesModule.js.map +0 -1
  175. package/device/models/DeviceInfoModel.d.ts +0 -5
  176. package/device/models/DeviceInfoModel.js +0 -25
  177. package/device/models/DeviceInfoModel.js.map +0 -1
  178. package/index.d.ts +0 -26
  179. package/index.js +0 -27
  180. package/index.js.map +0 -1
  181. package/init/events/InitApplicationEvents.js.map +0 -1
  182. package/pages/PageId.d.ts +0 -4
  183. package/pages/PageId.js +0 -5
  184. package/pages/PageId.js.map +0 -1
  185. package/pages/models/PagesModel.d.ts +0 -11
  186. package/pages/models/PagesModel.js +0 -49
  187. package/pages/models/PagesModel.js.map +0 -1
  188. package/pages/models/PagesModelEvent.d.ts +0 -3
  189. package/pages/models/PagesModelEvent.js +0 -4
  190. package/pages/models/PagesModelEvent.js.map +0 -1
  191. package/storage/StorageModule.d.ts +0 -4
  192. package/storage/StorageModule.js.map +0 -1
  193. package/storage/StorageModuleConfig.d.ts +0 -3
  194. package/storage/StorageModuleConfig.js +0 -4
  195. package/storage/StorageModuleConfig.js.map +0 -1
  196. package/storage/managers/StorageManager.js.map +0 -1
  197. package/time/models/TimeModel.d.ts +0 -11
  198. package/time/models/TimeModel.js +0 -59
  199. package/time/models/TimeModel.js.map +0 -1
  200. package/time/models/TimeModelEvent.d.ts +0 -3
  201. package/time/models/TimeModelEvent.js +0 -4
  202. package/time/models/TimeModelEvent.js.map +0 -1
@@ -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 { StorageManager } from "../../storage/managers/StorageManager";
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(StorageManager);
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,cAAc,EAAC,MAAM,uCAAuC,CAAC;AACrE,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,cAAc,CAAC,CAAC;QAElD,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"}
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,3 @@
1
+ ;
2
+ export {};
3
+ //# sourceMappingURL=DeepReadableTypings.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IPreChangeHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPreChangeHook.js","sourceRoot":"","sources":["../../../src/state/data/IPreChangeHook.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { IDeepKeyHelperVO } from "./INestedPathHelperVO";
2
+ export declare class AppStateDeepKeyTools {
3
+ static prepareDeepKeyHelperData(deepKey: string): IDeepKeyHelperVO;
4
+ }
@@ -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,3 @@
1
+ export declare class AppStateEventChangeTools {
2
+ static getChangeEvent(path: string | number | symbol): string;
3
+ }
@@ -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,4 @@
1
+ export interface IDeepKeyHelperVO {
2
+ splitDeepKeyParts: string[];
3
+ dispatchingChangePaths: string[];
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=INestedPathHelperVO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INestedPathHelperVO.js","sourceRoot":"","sources":["../../../src/state/tools/INestedPathHelperVO.ts"],"names":[],"mappings":""}
@@ -15,8 +15,9 @@ var __extends = (this && this.__extends) || (function () {
15
15
  })();
16
16
  import { serviceLocatorAdd } from "@flashist/flibs";
17
17
  import { BaseAppModule } from "../base/modules/BaseAppModule";
18
+ import { appStorage } from "../state/AppStateModule";
19
+ import { TimeModuleInitialAppState } from "./data/state/TimeModuleAppStateType";
18
20
  import { TimeManager } from "./managers/TimeManager";
19
- import { TimeModel } from "./models/TimeModel";
20
21
  var TimeModule = /** @class */ (function (_super) {
21
22
  __extends(TimeModule, _super);
22
23
  function TimeModule() {
@@ -24,7 +25,9 @@ var TimeModule = /** @class */ (function (_super) {
24
25
  }
25
26
  TimeModule.prototype.init = function () {
26
27
  _super.prototype.init.call(this);
27
- serviceLocatorAdd(TimeModel, { isSingleton: true, forceCreation: true });
28
+ // Init the app with initial state
29
+ appStorage().initializeWith(TimeModuleInitialAppState);
30
+ // serviceLocatorAdd(TimeModel, {isSingleton: true, forceCreation: true});
28
31
  serviceLocatorAdd(TimeManager, { isSingleton: true, forceCreation: true });
29
32
  };
30
33
  return TimeModule;