@ngxs/store 3.8.1 → 3.8.2-dev.master-a75608e

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 (284) hide show
  1. package/esm2020/internals/index.mjs +6 -0
  2. package/esm2020/internals/initial-state.mjs +18 -0
  3. package/esm2020/internals/internal-tokens.mjs +6 -0
  4. package/{esm2015/internals/ngxs-bootstrapper.js → esm2020/internals/ngxs-bootstrapper.mjs} +4 -4
  5. package/esm2020/internals/src/symbols.mjs +11 -0
  6. package/esm2020/internals/symbols.mjs +11 -0
  7. package/esm2020/internals/testing/fresh-platform.mjs +72 -0
  8. package/{esm2015/internals/testing/helpers/ngxs-test.component.js → esm2020/internals/testing/helpers/ngxs-test.component.mjs} +4 -4
  9. package/esm2020/internals/testing/helpers/ngxs-test.module.mjs +20 -0
  10. package/{esm2015/internals/testing/ngxs.setup.js → esm2020/internals/testing/ngxs.setup.mjs} +4 -2
  11. package/esm2020/internals/testing/symbol.mjs +2 -0
  12. package/esm2020/operators/patch.mjs +21 -0
  13. package/esm2020/src/actions/actions.mjs +16 -0
  14. package/{esm2015/src/actions-stream.js → esm2020/src/actions-stream.mjs} +7 -7
  15. package/esm2020/src/configs/messages.config.mjs +48 -0
  16. package/{esm2015/src/decorators/select/select-factory.js → esm2020/src/decorators/select/select-factory.mjs} +4 -4
  17. package/esm2020/src/decorators/selector/selector.mjs +32 -0
  18. package/esm2020/src/decorators/state.mjs +36 -0
  19. package/{esm2015/src/dev-features/ngxs-development.module.js → esm2020/src/dev-features/ngxs-development.module.mjs} +5 -5
  20. package/{esm2015/src/dev-features/ngxs-unhandled-actions-logger.js → esm2020/src/dev-features/ngxs-unhandled-actions-logger.mjs} +4 -4
  21. package/{esm2015/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js → esm2020/src/execution/dispatch-outside-zone-ngxs-execution-strategy.mjs} +4 -4
  22. package/{esm2015/src/execution/internal-ngxs-execution-strategy.js → esm2020/src/execution/internal-ngxs-execution-strategy.mjs} +4 -4
  23. package/{esm2015/src/execution/noop-ngxs-execution-strategy.js → esm2020/src/execution/noop-ngxs-execution-strategy.mjs} +4 -4
  24. package/esm2020/src/execution/symbols.mjs +27 -0
  25. package/{esm2015/src/internal/custom-rxjs-subjects.js → esm2020/src/internal/custom-rxjs-subjects.mjs} +2 -2
  26. package/{esm2015/src/internal/dispatcher.js → esm2020/src/internal/dispatcher.mjs} +11 -11
  27. package/{esm2015/src/internal/error-handler.js → esm2020/src/internal/error-handler.mjs} +5 -5
  28. package/esm2020/src/internal/internals.mjs +248 -0
  29. package/esm2020/src/internal/lifecycle-state-manager.mjs +97 -0
  30. package/esm2020/src/internal/state-context-factory.mjs +68 -0
  31. package/esm2020/src/internal/state-factory.mjs +292 -0
  32. package/{esm2015/src/internal/state-operations.js → esm2020/src/internal/state-operations.mjs} +5 -5
  33. package/esm2020/src/internal/state-operators.mjs +20 -0
  34. package/esm2020/src/internal/state-stream.mjs +27 -0
  35. package/{esm2015/src/ivy/ivy-enabled-in-dev-mode.js → esm2020/src/ivy/ivy-enabled-in-dev-mode.mjs} +2 -2
  36. package/esm2020/src/module.mjs +27 -0
  37. package/esm2020/src/modules/ngxs-feature.module.mjs +18 -0
  38. package/esm2020/src/modules/ngxs-root.module.mjs +18 -0
  39. package/{esm2015/src/operators/of-action.js → esm2020/src/operators/of-action.mjs} +10 -10
  40. package/{esm2015/src/plugin-manager.js → esm2020/src/plugin-manager.mjs} +4 -4
  41. package/esm2020/src/public_api.mjs +28 -0
  42. package/esm2020/src/selectors/create-model-selector.mjs +30 -0
  43. package/esm2020/src/selectors/create-pick-selector.mjs +16 -0
  44. package/esm2020/src/selectors/create-property-selectors.mjs +20 -0
  45. package/esm2020/src/selectors/selector-metadata.mjs +35 -0
  46. package/esm2020/src/selectors/selector-types.util.mjs +2 -0
  47. package/esm2020/src/standalone-features/feature-providers.mjs +20 -0
  48. package/esm2020/src/standalone-features/index.mjs +4 -0
  49. package/esm2020/src/standalone-features/initializers.mjs +86 -0
  50. package/esm2020/src/standalone-features/plugin.mjs +20 -0
  51. package/esm2020/src/standalone-features/provide-states.mjs +26 -0
  52. package/esm2020/src/standalone-features/provide-store.mjs +26 -0
  53. package/esm2020/src/standalone-features/root-providers.mjs +47 -0
  54. package/{esm2015/src/store.js → esm2020/src/store.mjs} +6 -5
  55. package/esm2020/src/symbols.mjs +65 -0
  56. package/esm2020/src/utils/store-validators.mjs +25 -0
  57. package/esm2020/src/utils/utils.mjs +92 -0
  58. package/fesm2015/{ngxs-store-internals-testing.js → ngxs-store-internals-testing.mjs} +19 -13
  59. package/fesm2015/ngxs-store-internals-testing.mjs.map +1 -0
  60. package/fesm2015/{ngxs-store-internals.js → ngxs-store-internals.mjs} +21 -21
  61. package/fesm2015/ngxs-store-internals.mjs.map +1 -0
  62. package/fesm2015/{ngxs-store-operators.js → ngxs-store-operators.mjs} +2 -2
  63. package/fesm2015/ngxs-store-operators.mjs.map +1 -0
  64. package/fesm2015/ngxs-store.mjs +2454 -0
  65. package/fesm2015/ngxs-store.mjs.map +1 -0
  66. package/fesm2020/ngxs-store-internals-testing.mjs +180 -0
  67. package/fesm2020/ngxs-store-internals-testing.mjs.map +1 -0
  68. package/fesm2020/ngxs-store-internals.mjs +114 -0
  69. package/fesm2020/ngxs-store-internals.mjs.map +1 -0
  70. package/fesm2020/ngxs-store-operators.mjs +202 -0
  71. package/fesm2020/ngxs-store-operators.mjs.map +1 -0
  72. package/{fesm2015/ngxs-store.js → fesm2020/ngxs-store.mjs} +1190 -1036
  73. package/fesm2020/ngxs-store.mjs.map +1 -0
  74. package/internals/index.d.ts +1 -2
  75. package/internals/initial-state.d.ts +1 -1
  76. package/internals/src/symbols.d.ts +4 -1
  77. package/internals/symbols.d.ts +4 -1
  78. package/internals/testing/helpers/ngxs-test.component.d.ts +1 -1
  79. package/internals/testing/symbol.d.ts +2 -2
  80. package/package.json +49 -12
  81. package/schematics/collection.json +36 -0
  82. package/schematics/src/actions/actions.factory.d.ts +3 -0
  83. package/schematics/src/actions/actions.factory.js +22 -0
  84. package/schematics/src/actions/actions.factory.js.map +1 -0
  85. package/schematics/src/actions/files/__name__.actions.ts__template__ +4 -0
  86. package/schematics/src/actions/schema.json +28 -0
  87. package/schematics/src/ng-add/add-declaration.d.ts +4 -0
  88. package/schematics/src/ng-add/add-declaration.js +109 -0
  89. package/schematics/src/ng-add/add-declaration.js.map +1 -0
  90. package/schematics/src/ng-add/ng-add.factory.d.ts +9 -0
  91. package/schematics/src/ng-add/ng-add.factory.js +86 -0
  92. package/schematics/src/ng-add/ng-add.factory.js.map +1 -0
  93. package/schematics/src/ng-add/schema.json +72 -0
  94. package/schematics/src/starter-kit/files/store/auth/auth.actions.ts__template__ +7 -0
  95. package/schematics/src/starter-kit/files/store/auth/auth.state.spec.ts__template__ +54 -0
  96. package/schematics/src/starter-kit/files/store/auth/auth.state.ts__template__ +47 -0
  97. package/schematics/src/starter-kit/files/store/dashboard/index.ts__template__ +11 -0
  98. package/schematics/src/starter-kit/files/store/dashboard/states/dictionary/dictionary.actions.ts__template__ +13 -0
  99. package/schematics/src/starter-kit/files/store/dashboard/states/dictionary/dictionary.state.spec.ts__template__ +91 -0
  100. package/schematics/src/starter-kit/files/store/dashboard/states/dictionary/dictionary.state.ts__template__ +62 -0
  101. package/schematics/src/starter-kit/files/store/dashboard/states/user/user.actions.ts__template__ +6 -0
  102. package/schematics/src/starter-kit/files/store/dashboard/states/user/user.state.spec.ts__template__ +60 -0
  103. package/schematics/src/starter-kit/files/store/dashboard/states/user/user.state.ts__template__ +42 -0
  104. package/schematics/src/starter-kit/files/store/store.config.ts__template__ +38 -0
  105. package/schematics/src/starter-kit/files/store/store.module.ts__template__ +22 -0
  106. package/schematics/src/starter-kit/schema.json +18 -0
  107. package/schematics/src/starter-kit/starter-kit.factory.d.ts +3 -0
  108. package/schematics/src/starter-kit/starter-kit.factory.js +12 -0
  109. package/schematics/src/starter-kit/starter-kit.factory.js.map +1 -0
  110. package/schematics/src/state/files/__name__.state.spec.ts__template__ +24 -0
  111. package/schematics/src/state/files/__name__.state.ts__template__ +22 -0
  112. package/schematics/src/state/schema.json +33 -0
  113. package/schematics/src/state/state.factory.d.ts +3 -0
  114. package/schematics/src/state/state.factory.js +20 -0
  115. package/schematics/src/state/state.factory.js.map +1 -0
  116. package/schematics/src/store/files/__name__.actions.ts__template__ +4 -0
  117. package/schematics/src/store/files/__name__.state.spec.ts__template__ +25 -0
  118. package/schematics/src/store/files/__name__.state.ts__template__ +29 -0
  119. package/schematics/src/store/schema.json +33 -0
  120. package/schematics/src/store/store.factory.d.ts +3 -0
  121. package/schematics/src/store/store.factory.js +20 -0
  122. package/schematics/src/store/store.factory.js.map +1 -0
  123. package/schematics/src/utils/common/lib.config.d.ts +10 -0
  124. package/schematics/src/utils/common/lib.config.js +15 -0
  125. package/schematics/src/utils/common/lib.config.js.map +1 -0
  126. package/schematics/src/utils/common/project-files.config.d.ts +3 -0
  127. package/schematics/src/utils/common/project-files.config.js +7 -0
  128. package/schematics/src/utils/common/project-files.config.js.map +1 -0
  129. package/schematics/src/utils/common/properties.d.ts +1 -0
  130. package/schematics/src/utils/common/properties.js +8 -0
  131. package/schematics/src/utils/common/properties.js.map +1 -0
  132. package/schematics/src/utils/config.d.ts +119 -0
  133. package/schematics/src/utils/config.js +21 -0
  134. package/schematics/src/utils/config.js.map +1 -0
  135. package/schematics/src/utils/generate-utils.d.ts +4 -0
  136. package/schematics/src/utils/generate-utils.js +14 -0
  137. package/schematics/src/utils/generate-utils.js.map +1 -0
  138. package/schematics/src/utils/interfaces/package.interface.d.ts +7 -0
  139. package/schematics/src/utils/interfaces/package.interface.js +3 -0
  140. package/schematics/src/utils/interfaces/package.interface.js.map +1 -0
  141. package/schematics/src/utils/ng-utils/README.md +1 -0
  142. package/schematics/src/utils/ng-utils/ast-utils.d.ts +99 -0
  143. package/schematics/src/utils/ng-utils/ast-utils.js +517 -0
  144. package/schematics/src/utils/ng-utils/ast-utils.js.map +1 -0
  145. package/schematics/src/utils/ng-utils/ng-ast-utils.d.ts +5 -0
  146. package/schematics/src/utils/ng-utils/ng-ast-utils.js +67 -0
  147. package/schematics/src/utils/ng-utils/ng-ast-utils.js.map +1 -0
  148. package/schematics/src/utils/ng-utils/project.d.ts +2 -0
  149. package/schematics/src/utils/ng-utils/project.js +21 -0
  150. package/schematics/src/utils/ng-utils/project.js.map +1 -0
  151. package/schematics/src/utils/ng-utils/standalone/app_config.d.ts +16 -0
  152. package/schematics/src/utils/ng-utils/standalone/app_config.js +84 -0
  153. package/schematics/src/utils/ng-utils/standalone/app_config.js.map +1 -0
  154. package/schematics/src/utils/ng-utils/standalone/code_block.d.ts +46 -0
  155. package/schematics/src/utils/ng-utils/standalone/code_block.js +73 -0
  156. package/schematics/src/utils/ng-utils/standalone/code_block.js.map +1 -0
  157. package/schematics/src/utils/ng-utils/standalone/index.d.ts +1 -0
  158. package/schematics/src/utils/ng-utils/standalone/index.js +7 -0
  159. package/schematics/src/utils/ng-utils/standalone/index.js.map +1 -0
  160. package/schematics/src/utils/ng-utils/standalone/rules.d.ts +38 -0
  161. package/schematics/src/utils/ng-utils/standalone/rules.js +195 -0
  162. package/schematics/src/utils/ng-utils/standalone/rules.js.map +1 -0
  163. package/schematics/src/utils/ng-utils/standalone/util.d.ts +28 -0
  164. package/schematics/src/utils/ng-utils/standalone/util.js +138 -0
  165. package/schematics/src/utils/ng-utils/standalone/util.js.map +1 -0
  166. package/schematics/src/utils/normalize-options.d.ts +9 -0
  167. package/schematics/src/utils/normalize-options.js +24 -0
  168. package/schematics/src/utils/normalize-options.js.map +1 -0
  169. package/schematics/src/utils/project.d.ts +16 -0
  170. package/schematics/src/utils/project.js +40 -0
  171. package/schematics/src/utils/project.js.map +1 -0
  172. package/schematics/src/utils/versions.json +3 -0
  173. package/src/actions/actions.d.ts +2 -2
  174. package/src/configs/messages.config.d.ts +2 -0
  175. package/src/decorators/state.d.ts +2 -2
  176. package/src/execution/symbols.d.ts +8 -2
  177. package/src/internal/custom-rxjs-subjects.d.ts +1 -1
  178. package/src/internal/internals.d.ts +5 -5
  179. package/src/internal/lifecycle-state-manager.d.ts +3 -1
  180. package/src/internal/state-factory.d.ts +1 -1
  181. package/src/module.d.ts +3 -14
  182. package/src/modules/ngxs-feature.module.d.ts +2 -9
  183. package/src/modules/ngxs-root.module.d.ts +2 -9
  184. package/src/public_api.d.ts +5 -4
  185. package/src/selectors/selector-types.util.d.ts +3 -3
  186. package/src/standalone-features/feature-providers.d.ts +7 -0
  187. package/src/standalone-features/index.d.ts +3 -0
  188. package/src/standalone-features/initializers.d.ts +29 -0
  189. package/src/standalone-features/plugin.d.ts +17 -0
  190. package/src/standalone-features/provide-states.d.ts +18 -0
  191. package/src/standalone-features/provide-store.d.ts +22 -0
  192. package/src/standalone-features/root-providers.d.ts +8 -0
  193. package/src/symbols.d.ts +5 -8
  194. package/src/utils/store-validators.d.ts +3 -6
  195. package/bundles/ngxs-store-internals-testing.umd.js +0 -547
  196. package/bundles/ngxs-store-internals-testing.umd.js.map +0 -1
  197. package/bundles/ngxs-store-internals.umd.js +0 -155
  198. package/bundles/ngxs-store-internals.umd.js.map +0 -1
  199. package/bundles/ngxs-store-operators.umd.js +0 -224
  200. package/bundles/ngxs-store-operators.umd.js.map +0 -1
  201. package/bundles/ngxs-store.umd.js +0 -2960
  202. package/bundles/ngxs-store.umd.js.map +0 -1
  203. package/esm2015/internals/angular.js +0 -13
  204. package/esm2015/internals/index.js +0 -6
  205. package/esm2015/internals/initial-state.js +0 -17
  206. package/esm2015/internals/internal-tokens.js +0 -5
  207. package/esm2015/internals/src/symbols.js +0 -2
  208. package/esm2015/internals/symbols.js +0 -2
  209. package/esm2015/internals/testing/fresh-platform.js +0 -70
  210. package/esm2015/internals/testing/helpers/ngxs-test.module.js +0 -21
  211. package/esm2015/internals/testing/symbol.js +0 -2
  212. package/esm2015/operators/patch.js +0 -21
  213. package/esm2015/src/actions/actions.js +0 -22
  214. package/esm2015/src/configs/messages.config.js +0 -36
  215. package/esm2015/src/decorators/selector/selector.js +0 -32
  216. package/esm2015/src/decorators/state.js +0 -38
  217. package/esm2015/src/execution/symbols.js +0 -23
  218. package/esm2015/src/internal/internals.js +0 -248
  219. package/esm2015/src/internal/lifecycle-state-manager.js +0 -79
  220. package/esm2015/src/internal/state-context-factory.js +0 -70
  221. package/esm2015/src/internal/state-factory.js +0 -291
  222. package/esm2015/src/internal/state-operators.js +0 -20
  223. package/esm2015/src/internal/state-stream.js +0 -25
  224. package/esm2015/src/module.js +0 -88
  225. package/esm2015/src/modules/ngxs-feature.module.js +0 -45
  226. package/esm2015/src/modules/ngxs-root.module.js +0 -41
  227. package/esm2015/src/public_api.js +0 -27
  228. package/esm2015/src/selectors/create-model-selector.js +0 -28
  229. package/esm2015/src/selectors/create-pick-selector.js +0 -14
  230. package/esm2015/src/selectors/create-property-selectors.js +0 -18
  231. package/esm2015/src/selectors/selector-metadata.js +0 -30
  232. package/esm2015/src/selectors/selector-types.util.js +0 -2
  233. package/esm2015/src/symbols.js +0 -58
  234. package/esm2015/src/utils/store-validators.js +0 -27
  235. package/esm2015/src/utils/utils.js +0 -92
  236. package/fesm2015/ngxs-store-internals-testing.js.map +0 -1
  237. package/fesm2015/ngxs-store-internals.js.map +0 -1
  238. package/fesm2015/ngxs-store-operators.js.map +0 -1
  239. package/fesm2015/ngxs-store.js.map +0 -1
  240. package/internals/angular.d.ts +0 -1
  241. package/internals/ngxs-store-internals.d.ts +0 -5
  242. package/internals/package.json +0 -10
  243. package/internals/testing/ngxs-store-internals-testing.d.ts +0 -5
  244. package/internals/testing/package.json +0 -10
  245. package/ngxs-store.d.ts +0 -5
  246. package/operators/ngxs-store-operators.d.ts +0 -5
  247. package/operators/package.json +0 -10
  248. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  249. /package/{esm2015/internals/memoize.js → esm2020/internals/memoize.mjs} +0 -0
  250. /package/{esm2015/internals/ngxs-store-internals.js → esm2020/internals/ngxs-store-internals.mjs} +0 -0
  251. /package/{esm2015/internals/testing/index.js → esm2020/internals/testing/index.mjs} +0 -0
  252. /package/{esm2015/internals/testing/ngxs-store-internals-testing.js → esm2020/internals/testing/ngxs-store-internals-testing.mjs} +0 -0
  253. /package/{esm2015/internals/testing/skip-console-logging.js → esm2020/internals/testing/skip-console-logging.mjs} +0 -0
  254. /package/{esm2015/ngxs-store.js → esm2020/ngxs-store.mjs} +0 -0
  255. /package/{esm2015/operators/append.js → esm2020/operators/append.mjs} +0 -0
  256. /package/{esm2015/operators/compose.js → esm2020/operators/compose.mjs} +0 -0
  257. /package/{esm2015/operators/iif.js → esm2020/operators/iif.mjs} +0 -0
  258. /package/{esm2015/operators/index.js → esm2020/operators/index.mjs} +0 -0
  259. /package/{esm2015/operators/insert-item.js → esm2020/operators/insert-item.mjs} +0 -0
  260. /package/{esm2015/operators/ngxs-store-operators.js → esm2020/operators/ngxs-store-operators.mjs} +0 -0
  261. /package/{esm2015/operators/remove-item.js → esm2020/operators/remove-item.mjs} +0 -0
  262. /package/{esm2015/operators/types.js → esm2020/operators/types.mjs} +0 -0
  263. /package/{esm2015/operators/update-item.js → esm2020/operators/update-item.mjs} +0 -0
  264. /package/{esm2015/operators/utils.js → esm2020/operators/utils.mjs} +0 -0
  265. /package/{esm2015/src/actions/symbols.js → esm2020/src/actions/symbols.mjs} +0 -0
  266. /package/{esm2015/src/decorators/action.js → esm2020/src/decorators/action.mjs} +0 -0
  267. /package/{esm2015/src/decorators/select/select.js → esm2020/src/decorators/select/select.mjs} +0 -0
  268. /package/{esm2015/src/decorators/select/symbols.js → esm2020/src/decorators/select/symbols.mjs} +0 -0
  269. /package/{esm2015/src/decorators/selector/symbols.js → esm2020/src/decorators/selector/symbols.mjs} +0 -0
  270. /package/{esm2015/src/decorators/selector-options.js → esm2020/src/decorators/selector-options.mjs} +0 -0
  271. /package/{esm2015/src/dev-features/symbols.js → esm2020/src/dev-features/symbols.mjs} +0 -0
  272. /package/{esm2015/src/operators/leave-ngxs.js → esm2020/src/operators/leave-ngxs.mjs} +0 -0
  273. /package/{esm2015/src/plugin_api.js → esm2020/src/plugin_api.mjs} +0 -0
  274. /package/{esm2015/src/private_api.js → esm2020/src/private_api.mjs} +0 -0
  275. /package/{esm2015/src/public_to_deprecate.js → esm2020/src/public_to_deprecate.mjs} +0 -0
  276. /package/{esm2015/src/selectors/create-selector.js → esm2020/src/selectors/create-selector.mjs} +0 -0
  277. /package/{esm2015/src/selectors/index.js → esm2020/src/selectors/index.mjs} +0 -0
  278. /package/{esm2015/src/selectors/selector-checks.util.js → esm2020/src/selectors/selector-checks.util.mjs} +0 -0
  279. /package/{esm2015/src/selectors/selector-models.js → esm2020/src/selectors/selector-models.mjs} +0 -0
  280. /package/{esm2015/src/selectors/selector-utils.js → esm2020/src/selectors/selector-utils.mjs} +0 -0
  281. /package/{esm2015/src/state-token/state-token.js → esm2020/src/state-token/state-token.mjs} +0 -0
  282. /package/{esm2015/src/state-token/symbols.js → esm2020/src/state-token/symbols.mjs} +0 -0
  283. /package/{esm2015/src/utils/compose.js → esm2020/src/utils/compose.mjs} +0 -0
  284. /package/{esm2015/src/utils/freeze.js → esm2020/src/utils/freeze.mjs} +0 -0
@@ -0,0 +1,36 @@
1
+ {
2
+ "extends": ["@schematics/angular"],
3
+ "$schema": "../node_modules/@angular-devkit/schematics/collection-schema.json",
4
+ "schematics": {
5
+ "store": {
6
+ "factory": "./src/store/store.factory#store",
7
+ "description": "Create a NGXS full store",
8
+ "aliases": ["ngxs-store"],
9
+ "schema": "./src/store/schema.json"
10
+ },
11
+ "state": {
12
+ "factory": "./src/state/state.factory#state",
13
+ "description": "Create a NGXS state",
14
+ "aliases": ["ngxs-state"],
15
+ "schema": "./src/state/schema.json"
16
+ },
17
+ "actions": {
18
+ "factory": "./src/actions/actions.factory#actions",
19
+ "description": "Create a NGXS actions",
20
+ "aliases": ["ngxs-actions"],
21
+ "schema": "./src/actions/schema.json"
22
+ },
23
+ "starter-kit": {
24
+ "factory": "./src/starter-kit/starter-kit.factory#starterKit",
25
+ "description": "Create a NGXS starter kit with simple or best practice type",
26
+ "aliases": ["ngxs-sk"],
27
+ "schema": "./src/starter-kit/schema.json"
28
+ },
29
+ "ng-add": {
30
+ "factory": "./src/ng-add/ng-add.factory#ngAdd",
31
+ "description": "Add Ngxs Store and plugins in package.json",
32
+ "aliases": ["ngxs-init"],
33
+ "schema": "./src/ng-add/schema.json"
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,3 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ import { ActionsSchema } from './actions.schema';
3
+ export declare function actions(options: ActionsSchema): Rule;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.actions = void 0;
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const generate_utils_1 = require("../utils/generate-utils");
6
+ const properties_1 = require("../utils/common/properties");
7
+ const normalize_options_1 = require("../utils/normalize-options");
8
+ const path_1 = require("path");
9
+ function actions(options) {
10
+ if ((0, properties_1.isEmpty)(options.name)) {
11
+ throw new schematics_1.SchematicsException('Invalid options, "name" is required.');
12
+ }
13
+ const normalizedOptions = (0, normalize_options_1.normalizeBaseOptions)(options);
14
+ const path = options.flat
15
+ ? normalizedOptions.path
16
+ : (0, path_1.join)(normalizedOptions.path, normalizedOptions.name);
17
+ return (0, generate_utils_1.generateFiles)((0, schematics_1.url)('./files'), path, {
18
+ name: normalizedOptions.name
19
+ });
20
+ }
21
+ exports.actions = actions;
22
+ //# sourceMappingURL=actions.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.factory.js","sourceRoot":"","sources":["../../../../../packages/store/schematics/src/actions/actions.factory.ts"],"names":[],"mappings":";;;AAAA,2DAA4E;AAE5E,4DAAwD;AACxD,2DAAqD;AACrD,kEAAkE;AAClE,+BAA4B;AAE5B,SAAgB,OAAO,CAAC,OAAsB;IAC5C,IAAI,IAAA,oBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACzB,MAAM,IAAI,gCAAmB,CAAC,sCAAsC,CAAC,CAAC;KACvE;IAED,MAAM,iBAAiB,GAAG,IAAA,wCAAoB,EAAC,OAAO,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;QACvB,CAAC,CAAC,iBAAiB,CAAC,IAAI;QACxB,CAAC,CAAC,IAAA,WAAI,EAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAEzD,OAAO,IAAA,8BAAa,EAAC,IAAA,gBAAG,EAAC,SAAS,CAAC,EAAE,IAAI,EAAE;QACzC,IAAI,EAAE,iBAAiB,CAAC,IAAI;KAC7B,CAAC,CAAC;AACL,CAAC;AAbD,0BAaC"}
@@ -0,0 +1,4 @@
1
+ export class <%= classify(name) %>Action {
2
+ public static readonly type = '[<%= classify(name) %>] Add item';
3
+ constructor(public payload: any) { }
4
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "SchematicsNgxsActions",
4
+ "title": "Ngxs Actions Options Schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "description": "The name of the actions.",
9
+ "type": "string",
10
+ "$default": {
11
+ "$source": "argv",
12
+ "index": 0
13
+ },
14
+ "x-prompt": "What name would you like to use for the actions?"
15
+ },
16
+ "path": {
17
+ "type": "string",
18
+ "format": "path",
19
+ "description": "The path to create the actions."
20
+ },
21
+ "flat": {
22
+ "type": "boolean",
23
+ "default": false,
24
+ "description": "Flag to indicate if a dir is created."
25
+ }
26
+ },
27
+ "required": ["name"]
28
+ }
@@ -0,0 +1,4 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ import { NormalizedNgxsPackageSchema } from './ng-add.factory';
3
+ export declare function addDeclarationToStandaloneApp(options: NormalizedNgxsPackageSchema): Rule;
4
+ export declare function addDeclarationToNonStandaloneApp(options: NormalizedNgxsPackageSchema): Rule;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.addDeclarationToNonStandaloneApp = exports.addDeclarationToStandaloneApp = void 0;
13
+ const schematics_1 = require("@angular-devkit/schematics");
14
+ const rules_1 = require("../utils/ng-utils/standalone/rules");
15
+ const util_1 = require("../utils/ng-utils/standalone/util");
16
+ const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
17
+ const app_config_1 = require("../utils/ng-utils/standalone/app_config");
18
+ const lib_config_1 = require("../utils/common/lib.config");
19
+ function addDeclarationToStandaloneApp(options) {
20
+ return (host) => __awaiter(this, void 0, void 0, function* () {
21
+ var _a;
22
+ const mainFilePath = yield (0, util_1.getMainFilePath)(host, options.project);
23
+ const bootstrapCall = (0, util_1.findBootstrapApplicationCall)(host, mainFilePath);
24
+ const appConfigFilePath = ((_a = (0, app_config_1.findAppConfig)(bootstrapCall, host, mainFilePath)) === null || _a === void 0 ? void 0 : _a.filePath) || mainFilePath;
25
+ const plugins = options.plugins
26
+ .filter(p => pluginData.has(p))
27
+ .map((p) => [p, pluginData.get(p).standalone]);
28
+ const importPluginRules = plugins.map(([plugin, standaloneDeclaration]) => {
29
+ return importTree => {
30
+ const change = (0, ast_utils_1.insertImport)((0, util_1.getSourceFile)(host, appConfigFilePath), appConfigFilePath, standaloneDeclaration, plugin);
31
+ (0, util_1.applyChangesToFile)(importTree, appConfigFilePath, [change]);
32
+ };
33
+ });
34
+ const pluginDeclarations = plugins
35
+ .map(([, standaloneDeclaration]) => `${standaloneDeclaration}()`)
36
+ .join(',\n');
37
+ return (0, schematics_1.chain)([
38
+ ...importPluginRules,
39
+ (0, rules_1.addRootProvider)(options.project, ({ code, external }) => code `${external('provideStore', '@ngxs/store')}(\n[],\n${pluginDeclarations})`)
40
+ ]);
41
+ });
42
+ }
43
+ exports.addDeclarationToStandaloneApp = addDeclarationToStandaloneApp;
44
+ function addDeclarationToNonStandaloneApp(options) {
45
+ const pluginRules = options.plugins
46
+ .map(p => { var _a; return [p, (_a = pluginData.get(p)) === null || _a === void 0 ? void 0 : _a.module]; })
47
+ .filter((v) => !!v[1])
48
+ .map(([plugin, moduleName]) => {
49
+ return (0, rules_1.addRootImport)(options.project, ({ code, external }) => code `${external(moduleName, plugin)}.forRoot()`);
50
+ });
51
+ const importPath = '@ngxs/store';
52
+ const moduleImportExtras = '.forRoot([], { developmentMode: /** !environment.production */ false, selectorOptions: { suppressErrors: false, injectContainerState: false } })';
53
+ return (0, schematics_1.chain)([
54
+ (0, rules_1.addRootImport)(options.project, ({ code, external }) => code `${external('NgxsModule', importPath)}${moduleImportExtras}`),
55
+ ...pluginRules
56
+ ]);
57
+ }
58
+ exports.addDeclarationToNonStandaloneApp = addDeclarationToNonStandaloneApp;
59
+ const pluginData = new Map([
60
+ [
61
+ lib_config_1.LIBRARIES.DEVTOOLS,
62
+ {
63
+ module: 'NgxsReduxDevtoolsPluginModule',
64
+ standalone: 'withNgxsReduxDevtoolsPlugin'
65
+ }
66
+ ],
67
+ [
68
+ lib_config_1.LIBRARIES.FORM,
69
+ {
70
+ module: 'NgxsFormPluginModule',
71
+ standalone: 'withNgxsFormPlugin'
72
+ }
73
+ ],
74
+ [
75
+ lib_config_1.LIBRARIES.LOGGER,
76
+ {
77
+ module: 'NgxsLoggerPluginModule',
78
+ standalone: 'withNgxsLoggerPlugin'
79
+ }
80
+ ],
81
+ [
82
+ lib_config_1.LIBRARIES.ROUTER,
83
+ {
84
+ module: 'NgxsRouterPluginModule',
85
+ standalone: 'withNgxsRouterPlugin'
86
+ }
87
+ ],
88
+ [
89
+ lib_config_1.LIBRARIES.STORAGE,
90
+ {
91
+ module: 'NgxsStoragePluginModule',
92
+ standalone: 'withNgxsStoragePlugin'
93
+ }
94
+ ],
95
+ [
96
+ lib_config_1.LIBRARIES.STORE,
97
+ {
98
+ standalone: 'provideStore'
99
+ }
100
+ ],
101
+ [
102
+ lib_config_1.LIBRARIES.WEBSOCKET,
103
+ {
104
+ module: 'NgxsWebsocketPluginModule',
105
+ standalone: 'withNgxsWebSocketPlugin'
106
+ }
107
+ ]
108
+ ]);
109
+ //# sourceMappingURL=add-declaration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-declaration.js","sourceRoot":"","sources":["../../../../../packages/store/schematics/src/ng-add/add-declaration.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAyD;AACzD,8DAAoF;AACpF,4DAK2C;AAC3C,qEAAqE;AACrE,wEAAwE;AACxE,2DAAuD;AAGvD,SAAgB,6BAA6B,CAAC,OAAoC;IAChF,OAAO,CAAM,IAAI,EAAC,EAAE;;QAClB,MAAM,YAAY,GAAG,MAAM,IAAA,sBAAe,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,IAAA,mCAA4B,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACvE,MAAM,iBAAiB,GACrB,CAAA,MAAA,IAAA,0BAAa,EAAC,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,0CAAE,QAAQ,KAAI,YAAY,CAAC;QAE7E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAEvE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAAQ,EAAE;YAC9E,OAAO,UAAU,CAAC,EAAE;gBAClB,MAAM,MAAM,GAAG,IAAA,wBAAY,EACzB,IAAA,oBAAa,EAAC,IAAI,EAAE,iBAAiB,CAAC,EACtC,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,CACP,CAAC;gBACF,IAAA,yBAAkB,EAAC,UAAU,EAAE,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,OAAO;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,EAAE,EAAE,CAAC,GAAG,qBAAqB,IAAI,CAAC;aAChE,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,OAAO,IAAA,kBAAK,EAAC;YACX,GAAG,iBAAiB;YACpB,IAAA,uBAAe,EACb,OAAO,CAAC,OAAO,EACf,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CACrB,IAAI,CAAA,GAAG,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,WAAW,kBAAkB,GAAG,CACjF;SACF,CAAC,CAAC;IACL,CAAC,CAAA,CAAC;AACJ,CAAC;AAlCD,sEAkCC;AAED,SAAgB,gCAAgC,CAAC,OAAoC;IACnF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAC,OAAA,CAAC,CAAC,EAAE,MAAA,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC,CAAA,EAAA,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,EAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/C,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE;QAC5B,OAAO,IAAA,qBAAa,EAClB,OAAO,CAAC,OAAO,EACf,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,aAAa,CAAC;IAEjC,MAAM,kBAAkB,GACtB,kJAAkJ,CAAC;IAErJ,OAAO,IAAA,kBAAK,EAAC;QACX,IAAA,qBAAa,EACX,OAAO,CAAC,OAAO,EACf,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA,GAAG,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,kBAAkB,EAAE,CACzF;QACD,GAAG,WAAW;KACf,CAAC,CAAC;AACL,CAAC;AAvBD,4EAuBC;AAED,MAAM,UAAU,GAAoE,IAAI,GAAG,CAAC;IAC1F;QACE,sBAAS,CAAC,QAAQ;QAClB;YACE,MAAM,EAAE,+BAA+B;YACvC,UAAU,EAAE,6BAA6B;SAC1C;KACF;IACD;QACE,sBAAS,CAAC,IAAI;QACd;YACE,MAAM,EAAE,sBAAsB;YAC9B,UAAU,EAAE,oBAAoB;SACjC;KACF;IACD;QACE,sBAAS,CAAC,MAAM;QAChB;YACE,MAAM,EAAE,wBAAwB;YAChC,UAAU,EAAE,sBAAsB;SACnC;KACF;IACD;QACE,sBAAS,CAAC,MAAM;QAChB;YACE,MAAM,EAAE,wBAAwB;YAChC,UAAU,EAAE,sBAAsB;SACnC;KACF;IACD;QACE,sBAAS,CAAC,OAAO;QACjB;YACE,MAAM,EAAE,yBAAyB;YACjC,UAAU,EAAE,uBAAuB;SACpC;KACF;IACD;QACE,sBAAS,CAAC,KAAK;QACf;YACE,UAAU,EAAE,cAAc;SAC3B;KACF;IACD;QACE,sBAAS,CAAC,SAAS;QACnB;YACE,MAAM,EAAE,2BAA2B;YACnC,UAAU,EAAE,yBAAyB;SACtC;KACF;CACF,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ import { LIBRARIES } from '../utils/common/lib.config';
3
+ import { NgxsPackageSchema } from './ng-add.schema';
4
+ export declare type NormalizedNgxsPackageSchema = {
5
+ skipInstall: boolean;
6
+ plugins: LIBRARIES[];
7
+ project: string;
8
+ };
9
+ export declare function ngAdd(options: NgxsPackageSchema): Rule;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ngAdd = void 0;
13
+ const schematics_1 = require("@angular-devkit/schematics");
14
+ const tasks_1 = require("@angular-devkit/schematics/tasks");
15
+ const dependencies_1 = require("@schematics/angular/utility/dependencies");
16
+ const lib_config_1 = require("../utils/common/lib.config");
17
+ const project_1 = require("../utils/ng-utils/project");
18
+ const ng_ast_utils_1 = require("../utils/ng-utils/ng-ast-utils");
19
+ const add_declaration_1 = require("./add-declaration");
20
+ const project_2 = require("../utils/project");
21
+ const versions = require('./../utils/versions.json');
22
+ function ngAdd(options) {
23
+ return (host) => {
24
+ const normalizedSchema = normalizeSchema(host, options);
25
+ return (0, schematics_1.chain)([
26
+ addNgxsPackageToPackageJson(normalizedSchema),
27
+ addDeclaration(normalizedSchema),
28
+ normalizedSchema.skipInstall ? (0, schematics_1.noop)() : runNpmPackageInstall()
29
+ ]);
30
+ };
31
+ }
32
+ exports.ngAdd = ngAdd;
33
+ function addNgxsPackageToPackageJson(schema) {
34
+ return (host, context) => {
35
+ const ngxsStoreVersion = versions['@ngxs/store'];
36
+ if (!ngxsStoreVersion) {
37
+ throw new schematics_1.SchematicsException('Could not resolve the version of "@ngxs/store"');
38
+ }
39
+ schema.plugins.forEach(name => {
40
+ const packageExists = (0, dependencies_1.getPackageJsonDependency)(host, name);
41
+ if (packageExists === null) {
42
+ (0, dependencies_1.addPackageJsonDependency)(host, {
43
+ type: dependencies_1.NodeDependencyType.Default,
44
+ name,
45
+ version: ngxsStoreVersion
46
+ });
47
+ context.logger.info(`✅️ Added "${name}" into ${dependencies_1.NodeDependencyType.Default}`);
48
+ }
49
+ else {
50
+ context.logger.warn(`✅️ "${name}" already exists in the ${dependencies_1.NodeDependencyType.Default}`);
51
+ }
52
+ });
53
+ return host;
54
+ };
55
+ }
56
+ function runNpmPackageInstall() {
57
+ return (_, context) => {
58
+ context.addTask(new tasks_1.NodePackageInstallTask());
59
+ context.logger.info(`🔍 Installing packages...`);
60
+ };
61
+ }
62
+ function addDeclaration(schema) {
63
+ return (host) => __awaiter(this, void 0, void 0, function* () {
64
+ const mainFile = (0, project_1.getProjectMainFile)(host, schema.project);
65
+ const isStandalone = (0, ng_ast_utils_1.isStandaloneApp)(host, mainFile);
66
+ if (isStandalone) {
67
+ return (0, add_declaration_1.addDeclarationToStandaloneApp)(schema);
68
+ }
69
+ else {
70
+ return (0, add_declaration_1.addDeclarationToNonStandaloneApp)(schema);
71
+ }
72
+ });
73
+ }
74
+ function normalizeSchema(host, schema) {
75
+ var _a, _b;
76
+ const projectName = (_a = (0, project_2.getProject)(host, schema.project)) === null || _a === void 0 ? void 0 : _a.name;
77
+ if (!projectName) {
78
+ throw new schematics_1.SchematicsException(`Project "${schema.project}" does not exist.`);
79
+ }
80
+ return {
81
+ skipInstall: !!schema.skipInstall,
82
+ plugins: (_b = Object.values(lib_config_1.LIBRARIES).filter(lib => { var _a; return (_a = schema.plugins) === null || _a === void 0 ? void 0 : _a.includes(lib); })) !== null && _b !== void 0 ? _b : [],
83
+ project: projectName
84
+ };
85
+ }
86
+ //# sourceMappingURL=ng-add.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-add.factory.js","sourceRoot":"","sources":["../../../../../packages/store/schematics/src/ng-add/ng-add.factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "SchematicsNgxsNgAdd",
4
+ "title": "Ngxs NgAdd Options Schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "skipInstall": {
8
+ "type": "boolean",
9
+ "description": "The flag for skipping packages installation.",
10
+ "default": false,
11
+ "x-prompt": "Do you want to skip packages installation?"
12
+ },
13
+ "plugins": {
14
+ "type": "array",
15
+ "description": "Additional plugins to be added to the workspace.",
16
+ "minItems": 0,
17
+ "maxItems": 7,
18
+ "items": {
19
+ "type": "string",
20
+ "enum": [
21
+ "@ngxs/devtools-plugin",
22
+ "@ngxs/form-plugin",
23
+ "@ngxs/hmr-plugin",
24
+ "@ngxs/logger-plugin",
25
+ "@ngxs/router-plugin",
26
+ "@ngxs/storage-plugin",
27
+ "@ngxs/websocket-plugin"
28
+ ]
29
+ },
30
+ "default": [],
31
+ "x-prompt": {
32
+ "message": "Choose any other @ngxs plugins you would like to add to the workspace.",
33
+ "type": "list",
34
+ "items": [
35
+ {
36
+ "value": "@ngxs/devtools-plugin",
37
+ "label": "Ngxs developer tools plugin"
38
+ },
39
+ {
40
+ "value": "@ngxs/form-plugin",
41
+ "label": "Ngxs form plugin"
42
+ },
43
+ {
44
+ "value": "@ngxs/hmr-plugin",
45
+ "label": "Ngxs HMR plugin"
46
+ },
47
+ {
48
+ "value": "@ngxs/logger-plugin",
49
+ "label": "Ngxs logger plugin"
50
+ },
51
+ {
52
+ "value": "@ngxs/router-plugin",
53
+ "label": "Ngxs router plugin"
54
+ },
55
+ {
56
+ "value": "@ngxs/storage-plugin",
57
+ "label": "Ngxs storage plugin"
58
+ },
59
+ {
60
+ "value": "@ngxs/websocket-plugin",
61
+ "label": "Ngxs websocket plugin"
62
+ }
63
+ ]
64
+ }
65
+ },
66
+ "project": {
67
+ "type": "string",
68
+ "description": "The name of the project."
69
+ }
70
+ },
71
+ "required": []
72
+ }
@@ -0,0 +1,7 @@
1
+ import { AuthenticationStateModel } from './auth.state';
2
+
3
+ export class SetAuthData {
4
+ public static readonly type = '[Auth] Auth data';
5
+
6
+ constructor(public payload: AuthenticationStateModel) {}
7
+ }
@@ -0,0 +1,54 @@
1
+ import { NgxsModule, Store } from '@ngxs/store';
2
+ import { TestBed } from '@angular/core/testing';
3
+ import { AuthenticationStateModel, AuthState } from './auth.state';
4
+ import { SetAuthData } from './auth.actions';
5
+
6
+ describe('[TEST]: AuthStore', () => {
7
+ let store: Store;
8
+
9
+ beforeEach(() => {
10
+ TestBed.configureTestingModule({
11
+ imports: [NgxsModule.forRoot([AuthState])],
12
+ });
13
+
14
+ store = TestBed.inject(Store);
15
+ });
16
+
17
+ it('Should be correct dispatch and value is empty', () => {
18
+ // Arrange
19
+ const Authentication: AuthenticationStateModel = {
20
+ id: '',
21
+ firstName: '',
22
+ lastName: '',
23
+ fullName: '',
24
+ email: '',
25
+ roles: []
26
+ };
27
+
28
+ // Act
29
+ store.dispatch(new SetAuthData(Authentication));
30
+ const actual = store.selectSnapshot<AuthenticationStateModel>(AuthState.getAuthData);
31
+
32
+ // Assert
33
+ expect(actual).toEqual(Authentication);
34
+ });
35
+
36
+ it('Should be correct dispatch and next value is correct completed', () => {
37
+ // Arrange
38
+ const authentication: AuthenticationStateModel = {
39
+ id: '12',
40
+ firstName: 'Adam',
41
+ lastName: 'Gordon',
42
+ fullName: 'Adam Gordon',
43
+ email: 'agordon@google.com',
44
+ roles: ['ADMIN']
45
+ };
46
+
47
+ // Act
48
+ store.dispatch(new SetAuthData(authentication));
49
+ const actual = store.selectSnapshot<AuthenticationStateModel>(AuthState.getAuthData);
50
+
51
+ // Assert
52
+ expect(actual).toEqual(authentication);
53
+ });
54
+ });
@@ -0,0 +1,47 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Action, Selector, State, StateContext } from '@ngxs/store';
3
+ import { SetAuthData } from './auth.actions';
4
+
5
+ export interface AuthenticationStateModel {
6
+ id: string;
7
+ firstName: string;
8
+ lastName: string;
9
+ fullName: string;
10
+ email: string;
11
+ roles: string[];
12
+ }
13
+
14
+ @State<AuthenticationStateModel>({
15
+ name: 'authState',
16
+ defaults: {
17
+ id: '',
18
+ firstName: '',
19
+ lastName: '',
20
+ fullName: '',
21
+ email: '',
22
+ roles: []
23
+ }
24
+ })
25
+ @Injectable()
26
+ export class AuthState {
27
+ @Selector()
28
+ public static getAuthData(state: AuthenticationStateModel): AuthenticationStateModel {
29
+ return AuthState.getInstanceState(state);
30
+ }
31
+
32
+ private static setInstanceState(state: AuthenticationStateModel): AuthenticationStateModel {
33
+ return { ...state };
34
+ }
35
+
36
+ private static getInstanceState(state: AuthenticationStateModel): AuthenticationStateModel {
37
+ return { ...state };
38
+ }
39
+
40
+ @Action(SetAuthData)
41
+ public setAuthData(
42
+ { setState }: StateContext<AuthenticationStateModel>,
43
+ { payload }: SetAuthData
44
+ ) {
45
+ setState(AuthState.setInstanceState(payload));
46
+ }
47
+ }
@@ -0,0 +1,11 @@
1
+ import { State } from '@ngxs/store';
2
+ import { DictionaryState } from './states/dictionary/dictionary.state';
3
+ import { UserState } from './states/user/user.state';
4
+
5
+ export const DashboardStates = [DictionaryState, UserState];
6
+
7
+ @State({
8
+ name: 'dashboardState',
9
+ children: DashboardStates
10
+ })
11
+ export class DashboardState {}
@@ -0,0 +1,13 @@
1
+ import { DictionaryStateModel } from './dictionary.state';
2
+
3
+ export class SetDictionaryData {
4
+ public static readonly type = '[Dictionary] Set dictionary data action';
5
+
6
+ constructor(public payload: DictionaryStateModel) {}
7
+ }
8
+
9
+ export class DictionaryReset {
10
+ public static readonly type = '[Dictionary] Reset dictionary action';
11
+
12
+ constructor() {}
13
+ }
@@ -0,0 +1,91 @@
1
+ import { NgxsModule, Store } from '@ngxs/store';
2
+ import { TestBed } from '@angular/core/testing';
3
+ import { DictionaryState, DictionaryStateModel } from './dictionary.state';
4
+ import { DictionaryReset, SetDictionaryData } from './dictionary.actions';
5
+
6
+ const data = [
7
+ {
8
+ id: '323',
9
+ departmentCode: '2392',
10
+ departmentName: 'Main office',
11
+ mainCuratorUserId: 'admin',
12
+ mainCuratorName: 'Adam Gordon',
13
+ backupCuratorUserId: 'manager',
14
+ backupCuratorName: 'Alexander Chester'
15
+ },
16
+ {
17
+ id: '322',
18
+ departmentCode: '2999',
19
+ departmentName: 'New York office',
20
+ mainCuratorUserId: 'manager',
21
+ mainCuratorName: 'Alexander Chester',
22
+ backupCuratorUserId: 'manager',
23
+ backupCuratorName: 'Amanda Brian'
24
+ }
25
+ ];
26
+
27
+ describe('[TEST]: Dictionary state', () => {
28
+ let store: Store;
29
+
30
+ beforeEach(() => {
31
+ TestBed.configureTestingModule({
32
+ imports: [NgxsModule.forRoot([DictionaryState])],
33
+ });
34
+
35
+ store = TestBed.inject(Store);
36
+ });
37
+
38
+ it('Should be correct dispatch and dictionary is empty', () => {
39
+ // Arrange
40
+ const dictionary: DictionaryStateModel = {
41
+ content: [],
42
+ page: 0,
43
+ size: 0,
44
+ totalPages: 0,
45
+ totalElements: 0
46
+ };
47
+
48
+ // Act
49
+ store.dispatch(new SetDictionaryData(dictionary));
50
+ const actual = store.selectSnapshot(DictionaryState.getDictionaryState);
51
+
52
+ // Assert
53
+ expect(actual).toEqual(dictionary);
54
+ });
55
+
56
+ it('Should be state is filled DictionaryStateModel', () => {
57
+ // Arrange
58
+ const dictionary: DictionaryStateModel = {
59
+ content: data,
60
+ page: 0,
61
+ size: 20,
62
+ totalPages: 2,
63
+ totalElements: 1
64
+ };
65
+
66
+ // Act
67
+ store.dispatch(new SetDictionaryData(dictionary));
68
+ const actual = store.selectSnapshot(DictionaryState.getDictionaryState);
69
+
70
+ // Assert
71
+ expect(actual).toEqual(dictionary);
72
+ });
73
+
74
+ it('should be reset state', function () {
75
+ // Arrange
76
+ const dictionary: DictionaryStateModel = {
77
+ content: [],
78
+ page: 0,
79
+ size: 0,
80
+ totalPages: 0,
81
+ totalElements: 0
82
+ };
83
+
84
+ // Act
85
+ store.dispatch(new DictionaryReset());
86
+ const actual = store.selectSnapshot(DictionaryState.getDictionaryState);
87
+
88
+ // Assert
89
+ expect(actual).toEqual(dictionary);
90
+ });
91
+ });