@ngxs/store 3.7.2-dev.master-bfe989b → 3.7.2

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 (266) hide show
  1. package/README.md +16 -16
  2. package/bundles/ngxs-store-internals.umd.js +211 -380
  3. package/bundles/ngxs-store-internals.umd.js.map +1 -1
  4. package/bundles/ngxs-store-internals.umd.min.js +1 -1
  5. package/bundles/ngxs-store-internals.umd.min.js.map +1 -1
  6. package/bundles/ngxs-store-operators.umd.js +310 -310
  7. package/bundles/ngxs-store-operators.umd.js.map +1 -1
  8. package/bundles/ngxs-store-operators.umd.min.js.map +1 -1
  9. package/bundles/ngxs-store.umd.js +4518 -4402
  10. package/bundles/ngxs-store.umd.js.map +1 -1
  11. package/bundles/ngxs-store.umd.min.js +1 -1
  12. package/bundles/ngxs-store.umd.min.js.map +1 -1
  13. package/esm2015/index.js +13 -13
  14. package/esm2015/internals/angular.js +40 -46
  15. package/esm2015/internals/index.js +10 -11
  16. package/esm2015/internals/initial-state.js +34 -34
  17. package/esm2015/internals/internal-tokens.js +16 -16
  18. package/esm2015/internals/memoize.js +70 -70
  19. package/esm2015/internals/ngxs-bootstrapper.js +41 -41
  20. package/esm2015/internals/ngxs-store-internals.js +9 -9
  21. package/esm2015/internals/src/symbols.js +14 -14
  22. package/esm2015/internals/symbols.js +14 -14
  23. package/esm2015/ngxs-store.js +27 -24
  24. package/esm2015/operators/append.js +31 -31
  25. package/esm2015/operators/compose.js +24 -24
  26. package/esm2015/operators/iif.js +56 -56
  27. package/esm2015/operators/index.js +18 -18
  28. package/esm2015/operators/insert-item.js +41 -41
  29. package/esm2015/operators/internals.js +5 -5
  30. package/esm2015/operators/ngxs-store-operators.js +8 -8
  31. package/esm2015/operators/patch.js +39 -39
  32. package/esm2015/operators/remove-item.js +34 -34
  33. package/esm2015/operators/update-item.js +52 -52
  34. package/esm2015/operators/utils.js +50 -50
  35. package/esm2015/src/actions/actions.js +39 -39
  36. package/esm2015/src/actions/symbols.js +39 -39
  37. package/esm2015/src/actions-stream.js +140 -138
  38. package/esm2015/src/configs/messages.config.js +87 -79
  39. package/esm2015/src/decorators/action.js +44 -48
  40. package/esm2015/src/decorators/select/select-factory.js +46 -49
  41. package/esm2015/src/decorators/select/select.js +45 -60
  42. package/esm2015/src/decorators/select/symbols.js +50 -94
  43. package/esm2015/src/decorators/selector/selector.js +55 -59
  44. package/esm2015/src/decorators/selector/symbols.js +5 -5
  45. package/esm2015/src/decorators/selector-options.js +34 -34
  46. package/esm2015/src/decorators/state.js +75 -83
  47. package/esm2015/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +96 -101
  48. package/esm2015/src/execution/internal-ngxs-execution-strategy.js +45 -45
  49. package/esm2015/src/execution/noop-ngxs-execution-strategy.js +27 -27
  50. package/esm2015/src/execution/symbols.js +29 -29
  51. package/esm2015/src/host-environment/host-environment.js +31 -0
  52. package/esm2015/src/internal/config-validator.js +67 -0
  53. package/esm2015/src/internal/dispatcher.js +217 -217
  54. package/esm2015/src/internal/internals.js +489 -493
  55. package/esm2015/src/internal/lifecycle-state-manager.js +129 -129
  56. package/esm2015/src/internal/state-context-factory.js +138 -138
  57. package/esm2015/src/internal/state-factory.js +429 -449
  58. package/esm2015/src/internal/state-operations.js +125 -120
  59. package/esm2015/src/internal/state-operators.js +33 -33
  60. package/esm2015/src/internal/state-stream.js +21 -21
  61. package/esm2015/src/ivy/ensure-state-class-is-injectable.js +34 -0
  62. package/esm2015/src/ivy/ivy-enabled-in-dev-mode.js +40 -28
  63. package/esm2015/src/module.js +172 -158
  64. package/esm2015/src/modules/ngxs-feature.module.js +63 -63
  65. package/esm2015/src/modules/ngxs-root.module.js +52 -52
  66. package/esm2015/src/operators/leave-ngxs.js +58 -58
  67. package/esm2015/src/operators/of-action.js +191 -191
  68. package/esm2015/src/plugin-manager.js +70 -70
  69. package/esm2015/src/plugin_api.js +10 -10
  70. package/esm2015/src/public_api.js +29 -29
  71. package/esm2015/src/public_to_deprecate.js +64 -64
  72. package/esm2015/src/state-token/state-token.js +45 -45
  73. package/esm2015/src/state-token/symbols.js +5 -5
  74. package/esm2015/src/store.js +174 -174
  75. package/esm2015/src/symbols.js +221 -217
  76. package/esm2015/src/utils/compose.js +44 -44
  77. package/esm2015/src/utils/freeze.js +35 -35
  78. package/esm2015/src/utils/selector-utils.js +221 -221
  79. package/esm2015/src/utils/store-validators.js +65 -60
  80. package/esm2015/src/utils/utils.js +143 -143
  81. package/esm5/index.js +13 -13
  82. package/esm5/internals/angular.js +40 -46
  83. package/esm5/internals/index.js +10 -11
  84. package/esm5/internals/initial-state.js +45 -45
  85. package/esm5/internals/internal-tokens.js +16 -16
  86. package/esm5/internals/memoize.js +71 -71
  87. package/esm5/internals/ngxs-bootstrapper.js +56 -56
  88. package/esm5/internals/ngxs-store-internals.js +9 -9
  89. package/esm5/internals/src/symbols.js +14 -14
  90. package/esm5/internals/symbols.js +14 -14
  91. package/esm5/ngxs-store.js +27 -24
  92. package/esm5/operators/append.js +31 -31
  93. package/esm5/operators/compose.js +28 -28
  94. package/esm5/operators/iif.js +56 -56
  95. package/esm5/operators/index.js +18 -18
  96. package/esm5/operators/insert-item.js +41 -41
  97. package/esm5/operators/internals.js +5 -5
  98. package/esm5/operators/ngxs-store-operators.js +8 -8
  99. package/esm5/operators/patch.js +40 -40
  100. package/esm5/operators/remove-item.js +34 -34
  101. package/esm5/operators/update-item.js +52 -52
  102. package/esm5/operators/utils.js +50 -50
  103. package/esm5/src/actions/actions.js +62 -62
  104. package/esm5/src/actions/symbols.js +39 -39
  105. package/esm5/src/actions-stream.js +186 -184
  106. package/esm5/src/configs/messages.config.js +104 -79
  107. package/esm5/src/decorators/action.js +56 -60
  108. package/esm5/src/decorators/select/select-factory.js +47 -50
  109. package/esm5/src/decorators/select/select.js +50 -65
  110. package/esm5/src/decorators/select/symbols.js +51 -95
  111. package/esm5/src/decorators/selector/selector.js +55 -59
  112. package/esm5/src/decorators/selector/symbols.js +5 -5
  113. package/esm5/src/decorators/selector-options.js +34 -34
  114. package/esm5/src/decorators/state.js +76 -84
  115. package/esm5/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +121 -121
  116. package/esm5/src/execution/internal-ngxs-execution-strategy.js +54 -54
  117. package/esm5/src/execution/noop-ngxs-execution-strategy.js +41 -41
  118. package/esm5/src/execution/symbols.js +29 -29
  119. package/esm5/src/host-environment/host-environment.js +29 -0
  120. package/esm5/src/internal/config-validator.js +76 -0
  121. package/esm5/src/internal/dispatcher.js +253 -253
  122. package/esm5/src/internal/internals.js +491 -495
  123. package/esm5/src/internal/lifecycle-state-manager.js +177 -177
  124. package/esm5/src/internal/state-context-factory.js +146 -146
  125. package/esm5/src/internal/state-factory.js +563 -575
  126. package/esm5/src/internal/state-operations.js +139 -130
  127. package/esm5/src/internal/state-operators.js +34 -34
  128. package/esm5/src/internal/state-stream.js +25 -25
  129. package/esm5/src/ivy/ensure-state-class-is-injectable.js +34 -0
  130. package/esm5/src/ivy/ivy-enabled-in-dev-mode.js +40 -28
  131. package/esm5/src/module.js +215 -201
  132. package/esm5/src/modules/ngxs-feature.module.js +65 -65
  133. package/esm5/src/modules/ngxs-root.module.js +47 -47
  134. package/esm5/src/operators/leave-ngxs.js +58 -58
  135. package/esm5/src/operators/of-action.js +217 -217
  136. package/esm5/src/plugin-manager.js +82 -82
  137. package/esm5/src/plugin_api.js +10 -10
  138. package/esm5/src/public_api.js +29 -29
  139. package/esm5/src/public_to_deprecate.js +64 -64
  140. package/esm5/src/state-token/state-token.js +57 -57
  141. package/esm5/src/state-token/symbols.js +5 -5
  142. package/esm5/src/store.js +225 -225
  143. package/esm5/src/symbols.js +230 -226
  144. package/esm5/src/utils/compose.js +55 -55
  145. package/esm5/src/utils/freeze.js +35 -35
  146. package/esm5/src/utils/selector-utils.js +230 -230
  147. package/esm5/src/utils/store-validators.js +86 -78
  148. package/esm5/src/utils/utils.js +151 -151
  149. package/fesm2015/ngxs-store-internals.js +194 -361
  150. package/fesm2015/ngxs-store-internals.js.map +1 -1
  151. package/fesm2015/ngxs-store-operators.js +312 -312
  152. package/fesm2015/ngxs-store-operators.js.map +1 -1
  153. package/fesm2015/ngxs-store.js +3976 -3907
  154. package/fesm2015/ngxs-store.js.map +1 -1
  155. package/fesm5/ngxs-store-internals.js +219 -386
  156. package/fesm5/ngxs-store-internals.js.map +1 -1
  157. package/fesm5/ngxs-store-operators.js +316 -316
  158. package/fesm5/ngxs-store-operators.js.map +1 -1
  159. package/fesm5/ngxs-store.js +4510 -4399
  160. package/fesm5/ngxs-store.js.map +1 -1
  161. package/index.d.ts +8 -8
  162. package/internals/angular.d.ts +3 -3
  163. package/internals/index.d.ts +6 -7
  164. package/internals/initial-state.d.ts +8 -8
  165. package/internals/internal-tokens.d.ts +9 -9
  166. package/internals/memoize.d.ts +9 -9
  167. package/internals/ngxs-bootstrapper.d.ts +13 -13
  168. package/internals/ngxs-store-internals.d.ts +4 -4
  169. package/internals/ngxs-store-internals.metadata.json +1 -1
  170. package/internals/src/symbols.d.ts +7 -7
  171. package/internals/symbols.d.ts +7 -7
  172. package/ngxs-store.d.ts +23 -20
  173. package/ngxs-store.metadata.json +1 -1
  174. package/operators/append.d.ts +6 -6
  175. package/operators/compose.d.ts +2 -2
  176. package/operators/iif.d.ts +11 -11
  177. package/operators/index.d.ts +13 -13
  178. package/operators/insert-item.d.ts +7 -7
  179. package/operators/internals.d.ts +2 -2
  180. package/operators/ngxs-store-operators.d.ts +4 -4
  181. package/operators/patch.d.ts +10 -10
  182. package/operators/remove-item.d.ts +7 -7
  183. package/operators/update-item.d.ts +10 -10
  184. package/operators/utils.d.ts +9 -9
  185. package/package.json +2 -2
  186. package/src/actions/actions.d.ts +15 -15
  187. package/src/actions/symbols.d.ts +21 -21
  188. package/src/actions-stream.d.ts +49 -49
  189. package/src/configs/messages.config.d.ts +30 -11
  190. package/src/decorators/action.d.ts +5 -5
  191. package/src/decorators/select/select-factory.d.ts +14 -13
  192. package/src/decorators/select/select.d.ts +4 -4
  193. package/src/decorators/select/symbols.d.ts +10 -14
  194. package/src/decorators/selector/selector.d.ts +5 -5
  195. package/src/decorators/selector/symbols.d.ts +4 -4
  196. package/src/decorators/selector-options.d.ts +5 -5
  197. package/src/decorators/state.d.ts +6 -6
  198. package/src/execution/dispatch-outside-zone-ngxs-execution-strategy.d.ts +12 -11
  199. package/src/execution/internal-ngxs-execution-strategy.d.ts +7 -7
  200. package/src/execution/noop-ngxs-execution-strategy.d.ts +5 -5
  201. package/src/execution/symbols.d.ts +6 -6
  202. package/src/host-environment/host-environment.d.ts +6 -0
  203. package/src/internal/config-validator.d.ts +10 -0
  204. package/src/internal/dispatcher.d.ts +32 -32
  205. package/src/internal/internals.d.ts +167 -166
  206. package/src/internal/lifecycle-state-manager.d.ts +20 -20
  207. package/src/internal/state-context-factory.d.ts +15 -15
  208. package/src/internal/state-factory.d.ts +58 -57
  209. package/src/internal/state-operations.d.ts +21 -19
  210. package/src/internal/state-operators.d.ts +2 -2
  211. package/src/internal/state-stream.d.ts +9 -9
  212. package/src/ivy/ensure-state-class-is-injectable.d.ts +6 -0
  213. package/src/ivy/ivy-enabled-in-dev-mode.d.ts +14 -6
  214. package/src/module.d.ts +23 -23
  215. package/src/modules/ngxs-feature.module.d.ts +13 -13
  216. package/src/modules/ngxs-root.module.d.ts +13 -13
  217. package/src/operators/leave-ngxs.d.ts +7 -7
  218. package/src/operators/of-action.d.ts +43 -43
  219. package/src/plugin-manager.d.ts +10 -10
  220. package/src/plugin_api.d.ts +5 -5
  221. package/src/public_api.d.ts +17 -17
  222. package/src/public_to_deprecate.d.ts +21 -21
  223. package/src/state-token/state-token.d.ts +7 -7
  224. package/src/state-token/symbols.d.ts +5 -5
  225. package/src/store.d.ts +53 -53
  226. package/src/symbols.d.ts +137 -135
  227. package/src/utils/compose.d.ts +23 -23
  228. package/src/utils/freeze.d.ts +5 -5
  229. package/src/utils/selector-utils.d.ts +23 -23
  230. package/src/utils/store-validators.d.ts +8 -7
  231. package/src/utils/utils.d.ts +46 -46
  232. package/types/index.d.ts +2 -2
  233. package/bundles/ngxs-store-internals-testing.umd.js +0 -475
  234. package/bundles/ngxs-store-internals-testing.umd.js.map +0 -1
  235. package/bundles/ngxs-store-internals-testing.umd.min.js +0 -16
  236. package/bundles/ngxs-store-internals-testing.umd.min.js.map +0 -1
  237. package/esm2015/internals/decorator-injector-adapter.js +0 -162
  238. package/esm2015/internals/testing/fresh-platform.js +0 -90
  239. package/esm2015/internals/testing/helpers/ngxs-test.component.js +0 -22
  240. package/esm2015/internals/testing/helpers/ngxs-test.module.js +0 -24
  241. package/esm2015/internals/testing/index.js +0 -7
  242. package/esm2015/internals/testing/ngxs-store-internals-testing.js +0 -9
  243. package/esm2015/internals/testing/ngxs.setup.js +0 -76
  244. package/esm2015/internals/testing/symbol.js +0 -29
  245. package/esm5/internals/decorator-injector-adapter.js +0 -162
  246. package/esm5/internals/testing/fresh-platform.js +0 -101
  247. package/esm5/internals/testing/helpers/ngxs-test.component.js +0 -32
  248. package/esm5/internals/testing/helpers/ngxs-test.module.js +0 -32
  249. package/esm5/internals/testing/index.js +0 -7
  250. package/esm5/internals/testing/ngxs-store-internals-testing.js +0 -9
  251. package/esm5/internals/testing/ngxs.setup.js +0 -98
  252. package/esm5/internals/testing/symbol.js +0 -29
  253. package/fesm2015/ngxs-store-internals-testing.js +0 -216
  254. package/fesm2015/ngxs-store-internals-testing.js.map +0 -1
  255. package/fesm5/ngxs-store-internals-testing.js +0 -263
  256. package/fesm5/ngxs-store-internals-testing.js.map +0 -1
  257. package/internals/decorator-injector-adapter.d.ts +0 -8
  258. package/internals/testing/fresh-platform.d.ts +0 -1
  259. package/internals/testing/helpers/ngxs-test.component.d.ts +0 -5
  260. package/internals/testing/helpers/ngxs-test.module.d.ts +0 -4
  261. package/internals/testing/index.d.ts +0 -3
  262. package/internals/testing/ngxs-store-internals-testing.d.ts +0 -4
  263. package/internals/testing/ngxs-store-internals-testing.metadata.json +0 -1
  264. package/internals/testing/ngxs.setup.d.ts +0 -7
  265. package/internals/testing/package.json +0 -13
  266. package/internals/testing/symbol.d.ts +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"ngxs-store-operators.js","sources":["ng://@ngxs/store/operators/append.ts","ng://@ngxs/store/operators/compose.ts","ng://@ngxs/store/operators/utils.ts","ng://@ngxs/store/operators/iif.ts","ng://@ngxs/store/operators/insert-item.ts","ng://@ngxs/store/operators/patch.ts","ng://@ngxs/store/operators/update-item.ts","ng://@ngxs/store/operators/remove-item.ts"],"sourcesContent":["import { StateOperator } from '@ngxs/store';\nimport { RepairType } from './utils';\n\n/**\n * @param items - Specific items to append to the end of an array\n */\nexport function append<T>(items: T[]): StateOperator<RepairType<T>[]> {\n return function appendOperator(existing: Readonly<RepairType<T>[]>): RepairType<T>[] {\n // If `items` is `undefined` or `null` or `[]` but `existing` is provided\n // just return `existing`\n const itemsNotProvidedButExistingIs = (!items || !items.length) && existing;\n if (itemsNotProvidedButExistingIs) {\n return existing as RepairType<T>[];\n }\n\n if (Array.isArray(existing)) {\n return existing.concat(items as RepairType<T>[]);\n }\n\n // For example if some property is added dynamically\n // and didn't exist before thus it's not `ArrayLike`\n return items as RepairType<T>[];\n };\n}\n","import { StateOperator } from '@ngxs/store';\n\nexport function compose<T>(...operators: StateOperator<T>[]): StateOperator<T> {\n return function composeOperator(existing: Readonly<T>): T {\n return operators.reduce((accumulator, operator) => operator(accumulator), existing);\n };\n}\n","import { StateOperator } from '@ngxs/store';\n\nimport { Predicate } from './internals';\n\nexport function isStateOperator<T>(value: T | StateOperator<T>): value is StateOperator<T> {\n return typeof value === 'function';\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === 'undefined';\n}\n\nexport function isPredicate<T>(value: Predicate<T> | boolean | number): value is Predicate<T> {\n return typeof value === 'function';\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number';\n}\n\nexport function invalidIndex(index: number): boolean {\n return Number.isNaN(index) || index === -1;\n}\n\nexport function isNil<T>(value: T | null | undefined): value is null | undefined {\n return value === null || isUndefined(value);\n}\n\nexport type RepairType<T> = T extends true ? boolean : (T extends false ? boolean : T);\n","import { StateOperator } from '@ngxs/store';\n\nimport { isStateOperator, isUndefined, isPredicate, RepairType } from './utils';\nimport { Predicate } from './internals';\n\nfunction retrieveValue<T>(\n operatorOrValue: StateOperator<T> | T,\n existing?: Readonly<RepairType<T>>\n): RepairType<T> {\n // If state operator is a function\n // then call it with an original value\n if (isStateOperator(operatorOrValue)) {\n const value = operatorOrValue(existing! as Readonly<T>);\n return value as RepairType<T>;\n }\n\n // If operator or value was not provided\n // e.g. `elseOperatorOrValue` is `undefined`\n // then we just return an original value\n if (isUndefined(operatorOrValue)) {\n return (<any>existing)! as RepairType<T>;\n }\n\n return operatorOrValue as RepairType<T>;\n}\n\n/**\n * @param condition - Condition can be a plain boolean value or a function,\n * that returns boolean, also this function can take a value as an argument\n * to which this state operator applies\n * @param trueOperatorOrValue - Any value or a state operator\n * @param elseOperatorOrValue - Any value or a state operator\n */\nexport function iif<T>(\n condition: Predicate<T> | boolean,\n trueOperatorOrValue: StateOperator<T> | T,\n elseOperatorOrValue?: StateOperator<T> | T\n): StateOperator<RepairType<T>> {\n return function iifOperator(existing: Readonly<RepairType<T>>): RepairType<T> {\n // Convert the value to a boolean\n let result = !!condition;\n // but if it is a function then run it to get the result\n if (isPredicate(condition)) {\n result = condition(existing);\n }\n\n if (result) {\n return retrieveValue<T>(trueOperatorOrValue, existing as RepairType<T>);\n }\n\n return retrieveValue<T>(elseOperatorOrValue!, existing as RepairType<T>);\n };\n}\n","import { StateOperator } from '@ngxs/store';\nimport { isNil, RepairType } from './utils';\n\n/**\n * @param value - Value to insert\n * @param [beforePosition] - Specified index to insert value before, optional\n */\nexport function insertItem<T>(\n value: T,\n beforePosition?: number\n): StateOperator<RepairType<T>[]> {\n return function insertItemOperator(existing: Readonly<RepairType<T>[]>): RepairType<T>[] {\n // Have to check explicitly for `null` and `undefined`\n // because `value` can be `0`, thus `!value` will return `true`\n if (isNil(value) && existing) {\n return existing as RepairType<T>[];\n }\n\n // Property may be dynamic and might not existed before\n if (!Array.isArray(existing)) {\n return [value as RepairType<T>];\n }\n\n const clone = existing.slice();\n\n let index = 0;\n\n // No need to call `isNumber`\n // as we are checking `> 0` not `>= 0`\n // everything except number will return false here\n if (beforePosition! > 0) {\n index = beforePosition!;\n }\n\n clone.splice(index, 0, value as RepairType<T>);\n return clone;\n };\n}\n","import { StateOperator } from '@ngxs/store';\nimport { isStateOperator } from './utils';\n\nexport type PatchSpec<T> = { [P in keyof T]?: T[P] | StateOperator<NonNullable<T[P]>> };\n\ntype PatchValues<T> = {\n readonly [P in keyof T]?: T[P] extends (...args: any[]) => infer R ? R : T[P];\n};\n\ntype PatchOperator<T> = <U extends PatchValues<T>>(existing: Readonly<U>) => U;\n\nexport function patch<T>(patchObject: PatchSpec<T>): PatchOperator<T> {\n return function patchStateOperator<U extends PatchValues<T>>(existing: Readonly<U>): U {\n let clone = null;\n for (const k in patchObject) {\n const newValue = patchObject[k];\n const existingPropValue = existing[k];\n const newPropValue = isStateOperator(newValue)\n ? newValue(<any>existingPropValue)\n : newValue;\n if (newPropValue !== existingPropValue) {\n if (!clone) {\n clone = { ...(<any>existing) };\n }\n clone[k] = newPropValue;\n }\n }\n return clone || existing;\n };\n}\n","import { StateOperator } from '@ngxs/store';\n\nimport { isStateOperator, isPredicate, isNumber, invalidIndex, RepairType } from './utils';\nimport { Predicate } from './internals';\n\n/**\n * @param selector - Index of item in the array or a predicate function\n * that can be provided in `Array.prototype.findIndex`\n * @param operatorOrValue - New value under the `selector` index or a\n * function that can be applied to an existing value\n */\nexport function updateItem<T>(\n selector: number | Predicate<T>,\n operatorOrValue: T | StateOperator<T>\n): StateOperator<RepairType<T>[]> {\n return function updateItemOperator(existing: Readonly<RepairType<T>[]>): RepairType<T>[] {\n let index = -1;\n\n if (isPredicate(selector)) {\n index = existing.findIndex(selector);\n } else if (isNumber(selector)) {\n index = selector;\n }\n\n if (invalidIndex(index)) {\n return existing as RepairType<T>[];\n }\n\n let value: T = null!;\n // Need to check if the new item value will change the existing item value\n // then, only if it will change it then clone the array and set the item\n if (isStateOperator(operatorOrValue)) {\n value = operatorOrValue(existing[index] as Readonly<T>);\n } else {\n value = operatorOrValue;\n }\n\n // If the value hasn't been mutated\n // then we just return `existing` array\n if (value === existing[index]) {\n return existing as RepairType<T>[];\n }\n\n const clone = existing.slice();\n clone[index] = value as RepairType<T>;\n return clone;\n };\n}\n","import { StateOperator } from '@ngxs/store';\nimport { Predicate } from './internals';\nimport { isPredicate, isNumber, invalidIndex, RepairType } from './utils';\n\n/**\n * @param selector - index or predicate to remove an item from an array by\n */\nexport function removeItem<T>(\n selector: number | Predicate<T>\n): StateOperator<RepairType<T>[]> {\n return function removeItemOperator(existing: Readonly<RepairType<T>[]>): RepairType<T>[] {\n let index = -1;\n\n if (isPredicate(selector)) {\n index = existing.findIndex(selector);\n } else if (isNumber(selector)) {\n index = selector;\n }\n\n if (invalidIndex(index)) {\n return existing as RepairType<T>[];\n }\n\n const clone = existing.slice();\n clone.splice(index, 1);\n return clone;\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngxs-store-operators.js","sources":["ng://@ngxs/store/operators/append.ts","ng://@ngxs/store/operators/compose.ts","ng://@ngxs/store/operators/utils.ts","ng://@ngxs/store/operators/iif.ts","ng://@ngxs/store/operators/insert-item.ts","ng://@ngxs/store/operators/patch.ts","ng://@ngxs/store/operators/update-item.ts","ng://@ngxs/store/operators/remove-item.ts"],"sourcesContent":["import { StateOperator } from '@ngxs/store';\r\nimport { RepairType } from './utils';\r\n\r\n/**\r\n * @param items - Specific items to append to the end of an array\r\n */\r\nexport function append<T>(items: T[]): StateOperator<RepairType<T>[]> {\r\n return function appendOperator(existing: Readonly<RepairType<T>[]>): RepairType<T>[] {\r\n // If `items` is `undefined` or `null` or `[]` but `existing` is provided\r\n // just return `existing`\r\n const itemsNotProvidedButExistingIs = (!items || !items.length) && existing;\r\n if (itemsNotProvidedButExistingIs) {\r\n return existing as RepairType<T>[];\r\n }\r\n\r\n if (Array.isArray(existing)) {\r\n return existing.concat(items as RepairType<T>[]);\r\n }\r\n\r\n // For example if some property is added dynamically\r\n // and didn't exist before thus it's not `ArrayLike`\r\n return items as RepairType<T>[];\r\n };\r\n}\r\n","import { StateOperator } from '@ngxs/store';\r\n\r\nexport function compose<T>(...operators: StateOperator<T>[]): StateOperator<T> {\r\n return function composeOperator(existing: Readonly<T>): T {\r\n return operators.reduce((accumulator, operator) => operator(accumulator), existing);\r\n };\r\n}\r\n","import { StateOperator } from '@ngxs/store';\r\n\r\nimport { Predicate } from './internals';\r\n\r\nexport function isStateOperator<T>(value: T | StateOperator<T>): value is StateOperator<T> {\r\n return typeof value === 'function';\r\n}\r\n\r\nexport function isUndefined(value: any): value is undefined {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nexport function isPredicate<T>(value: Predicate<T> | boolean | number): value is Predicate<T> {\r\n return typeof value === 'function';\r\n}\r\n\r\nexport function isNumber(value: any): value is number {\r\n return typeof value === 'number';\r\n}\r\n\r\nexport function invalidIndex(index: number): boolean {\r\n return Number.isNaN(index) || index === -1;\r\n}\r\n\r\nexport function isNil<T>(value: T | null | undefined): value is null | undefined {\r\n return value === null || isUndefined(value);\r\n}\r\n\r\nexport type RepairType<T> = T extends true ? boolean : (T extends false ? boolean : T);\r\n","import { StateOperator } from '@ngxs/store';\r\n\r\nimport { isStateOperator, isUndefined, isPredicate, RepairType } from './utils';\r\nimport { Predicate } from './internals';\r\n\r\nfunction retrieveValue<T>(\r\n operatorOrValue: StateOperator<T> | T,\r\n existing?: Readonly<RepairType<T>>\r\n): RepairType<T> {\r\n // If state operator is a function\r\n // then call it with an original value\r\n if (isStateOperator(operatorOrValue)) {\r\n const value = operatorOrValue(existing! as Readonly<T>);\r\n return value as RepairType<T>;\r\n }\r\n\r\n // If operator or value was not provided\r\n // e.g. `elseOperatorOrValue` is `undefined`\r\n // then we just return an original value\r\n if (isUndefined(operatorOrValue)) {\r\n return (<any>existing)! as RepairType<T>;\r\n }\r\n\r\n return operatorOrValue as RepairType<T>;\r\n}\r\n\r\n/**\r\n * @param condition - Condition can be a plain boolean value or a function,\r\n * that returns boolean, also this function can take a value as an argument\r\n * to which this state operator applies\r\n * @param trueOperatorOrValue - Any value or a state operator\r\n * @param elseOperatorOrValue - Any value or a state operator\r\n */\r\nexport function iif<T>(\r\n condition: Predicate<T> | boolean,\r\n trueOperatorOrValue: StateOperator<T> | T,\r\n elseOperatorOrValue?: StateOperator<T> | T\r\n): StateOperator<RepairType<T>> {\r\n return function iifOperator(existing: Readonly<RepairType<T>>): RepairType<T> {\r\n // Convert the value to a boolean\r\n let result = !!condition;\r\n // but if it is a function then run it to get the result\r\n if (isPredicate(condition)) {\r\n result = condition(existing);\r\n }\r\n\r\n if (result) {\r\n return retrieveValue<T>(trueOperatorOrValue, existing as RepairType<T>);\r\n }\r\n\r\n return retrieveValue<T>(elseOperatorOrValue!, existing as RepairType<T>);\r\n };\r\n}\r\n","import { StateOperator } from '@ngxs/store';\r\nimport { isNil, RepairType } from './utils';\r\n\r\n/**\r\n * @param value - Value to insert\r\n * @param [beforePosition] - Specified index to insert value before, optional\r\n */\r\nexport function insertItem<T>(\r\n value: T,\r\n beforePosition?: number\r\n): StateOperator<RepairType<T>[]> {\r\n return function insertItemOperator(existing: Readonly<RepairType<T>[]>): RepairType<T>[] {\r\n // Have to check explicitly for `null` and `undefined`\r\n // because `value` can be `0`, thus `!value` will return `true`\r\n if (isNil(value) && existing) {\r\n return existing as RepairType<T>[];\r\n }\r\n\r\n // Property may be dynamic and might not existed before\r\n if (!Array.isArray(existing)) {\r\n return [value as RepairType<T>];\r\n }\r\n\r\n const clone = existing.slice();\r\n\r\n let index = 0;\r\n\r\n // No need to call `isNumber`\r\n // as we are checking `> 0` not `>= 0`\r\n // everything except number will return false here\r\n if (beforePosition! > 0) {\r\n index = beforePosition!;\r\n }\r\n\r\n clone.splice(index, 0, value as RepairType<T>);\r\n return clone;\r\n };\r\n}\r\n","import { StateOperator } from '@ngxs/store';\r\nimport { isStateOperator } from './utils';\r\n\r\nexport type PatchSpec<T> = { [P in keyof T]?: T[P] | StateOperator<NonNullable<T[P]>> };\r\n\r\ntype PatchValues<T> = {\r\n readonly [P in keyof T]?: T[P] extends (...args: any[]) => infer R ? R : T[P];\r\n};\r\n\r\ntype PatchOperator<T> = <U extends PatchValues<T>>(existing: Readonly<U>) => U;\r\n\r\nexport function patch<T>(patchObject: PatchSpec<T>): PatchOperator<T> {\r\n return function patchStateOperator<U extends PatchValues<T>>(existing: Readonly<U>): U {\r\n let clone = null;\r\n for (const k in patchObject) {\r\n const newValue = patchObject[k];\r\n const existingPropValue = existing[k];\r\n const newPropValue = isStateOperator(newValue)\r\n ? newValue(<any>existingPropValue)\r\n : newValue;\r\n if (newPropValue !== existingPropValue) {\r\n if (!clone) {\r\n clone = { ...(<any>existing) };\r\n }\r\n clone[k] = newPropValue;\r\n }\r\n }\r\n return clone || existing;\r\n };\r\n}\r\n","import { StateOperator } from '@ngxs/store';\r\n\r\nimport { isStateOperator, isPredicate, isNumber, invalidIndex, RepairType } from './utils';\r\nimport { Predicate } from './internals';\r\n\r\n/**\r\n * @param selector - Index of item in the array or a predicate function\r\n * that can be provided in `Array.prototype.findIndex`\r\n * @param operatorOrValue - New value under the `selector` index or a\r\n * function that can be applied to an existing value\r\n */\r\nexport function updateItem<T>(\r\n selector: number | Predicate<T>,\r\n operatorOrValue: T | StateOperator<T>\r\n): StateOperator<RepairType<T>[]> {\r\n return function updateItemOperator(existing: Readonly<RepairType<T>[]>): RepairType<T>[] {\r\n let index = -1;\r\n\r\n if (isPredicate(selector)) {\r\n index = existing.findIndex(selector);\r\n } else if (isNumber(selector)) {\r\n index = selector;\r\n }\r\n\r\n if (invalidIndex(index)) {\r\n return existing as RepairType<T>[];\r\n }\r\n\r\n let value: T = null!;\r\n // Need to check if the new item value will change the existing item value\r\n // then, only if it will change it then clone the array and set the item\r\n if (isStateOperator(operatorOrValue)) {\r\n value = operatorOrValue(existing[index] as Readonly<T>);\r\n } else {\r\n value = operatorOrValue;\r\n }\r\n\r\n // If the value hasn't been mutated\r\n // then we just return `existing` array\r\n if (value === existing[index]) {\r\n return existing as RepairType<T>[];\r\n }\r\n\r\n const clone = existing.slice();\r\n clone[index] = value as RepairType<T>;\r\n return clone;\r\n };\r\n}\r\n","import { StateOperator } from '@ngxs/store';\r\nimport { Predicate } from './internals';\r\nimport { isPredicate, isNumber, invalidIndex, RepairType } from './utils';\r\n\r\n/**\r\n * @param selector - index or predicate to remove an item from an array by\r\n */\r\nexport function removeItem<T>(\r\n selector: number | Predicate<T>\r\n): StateOperator<RepairType<T>[]> {\r\n return function removeItemOperator(existing: Readonly<RepairType<T>[]>): RepairType<T>[] {\r\n let index = -1;\r\n\r\n if (isPredicate(selector)) {\r\n index = existing.findIndex(selector);\r\n } else if (isNumber(selector)) {\r\n index = selector;\r\n }\r\n\r\n if (invalidIndex(index)) {\r\n return existing as RepairType<T>[];\r\n }\r\n\r\n const clone = existing.slice();\r\n clone.splice(index, 1);\r\n return clone;\r\n };\r\n}\r\n"],"names":[],"mappings":"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"}