@ngxs/store 3.7.4 → 3.7.5

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 (257) hide show
  1. package/README.md +16 -16
  2. package/bundles/ngxs-store-internals-testing.umd.js +315 -315
  3. package/bundles/ngxs-store-internals-testing.umd.js.map +1 -1
  4. package/bundles/ngxs-store-internals-testing.umd.min.js.map +1 -1
  5. package/bundles/ngxs-store-internals.umd.js +192 -397
  6. package/bundles/ngxs-store-internals.umd.js.map +1 -1
  7. package/bundles/ngxs-store-internals.umd.min.js +1 -1
  8. package/bundles/ngxs-store-internals.umd.min.js.map +1 -1
  9. package/bundles/ngxs-store-operators.umd.js +310 -310
  10. package/bundles/ngxs-store-operators.umd.js.map +1 -1
  11. package/bundles/ngxs-store-operators.umd.min.js.map +1 -1
  12. package/bundles/ngxs-store.umd.js +4401 -4481
  13. package/bundles/ngxs-store.umd.js.map +1 -1
  14. package/bundles/ngxs-store.umd.min.js +1 -1
  15. package/bundles/ngxs-store.umd.min.js.map +1 -1
  16. package/esm2015/index.js +13 -13
  17. package/esm2015/internals/angular.js +20 -20
  18. package/esm2015/internals/index.js +10 -11
  19. package/esm2015/internals/initial-state.js +34 -34
  20. package/esm2015/internals/internal-tokens.js +16 -16
  21. package/esm2015/internals/memoize.js +70 -70
  22. package/esm2015/internals/ngxs-bootstrapper.js +41 -41
  23. package/esm2015/internals/ngxs-store-internals.js +9 -9
  24. package/esm2015/internals/src/symbols.js +14 -14
  25. package/esm2015/internals/symbols.js +14 -14
  26. package/esm2015/internals/testing/fresh-platform.js +110 -110
  27. package/esm2015/internals/testing/helpers/ngxs-test.component.js +22 -22
  28. package/esm2015/internals/testing/helpers/ngxs-test.module.js +24 -24
  29. package/esm2015/internals/testing/index.js +8 -8
  30. package/esm2015/internals/testing/ngxs-store-internals-testing.js +8 -8
  31. package/esm2015/internals/testing/ngxs.setup.js +76 -76
  32. package/esm2015/internals/testing/skip-console-logging.js +62 -62
  33. package/esm2015/internals/testing/symbol.js +29 -29
  34. package/esm2015/ngxs-store.js +24 -23
  35. package/esm2015/operators/append.js +31 -31
  36. package/esm2015/operators/compose.js +24 -24
  37. package/esm2015/operators/iif.js +56 -56
  38. package/esm2015/operators/index.js +18 -18
  39. package/esm2015/operators/insert-item.js +41 -41
  40. package/esm2015/operators/internals.js +5 -5
  41. package/esm2015/operators/ngxs-store-operators.js +8 -8
  42. package/esm2015/operators/patch.js +39 -39
  43. package/esm2015/operators/remove-item.js +34 -34
  44. package/esm2015/operators/update-item.js +52 -52
  45. package/esm2015/operators/utils.js +50 -50
  46. package/esm2015/src/actions/actions.js +39 -39
  47. package/esm2015/src/actions/symbols.js +39 -39
  48. package/esm2015/src/actions-stream.js +140 -140
  49. package/esm2015/src/configs/messages.config.js +79 -79
  50. package/esm2015/src/decorators/action.js +48 -48
  51. package/esm2015/src/decorators/select/select-factory.js +45 -49
  52. package/esm2015/src/decorators/select/select.js +45 -81
  53. package/esm2015/src/decorators/select/symbols.js +50 -94
  54. package/esm2015/src/decorators/selector/selector.js +59 -59
  55. package/esm2015/src/decorators/selector/symbols.js +5 -5
  56. package/esm2015/src/decorators/selector-options.js +34 -34
  57. package/esm2015/src/decorators/state.js +77 -83
  58. package/esm2015/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +103 -103
  59. package/esm2015/src/execution/internal-ngxs-execution-strategy.js +45 -45
  60. package/esm2015/src/execution/noop-ngxs-execution-strategy.js +29 -29
  61. package/esm2015/src/execution/symbols.js +52 -52
  62. package/esm2015/src/internal/dispatcher.js +219 -217
  63. package/esm2015/src/internal/internals.js +493 -493
  64. package/esm2015/src/internal/lifecycle-state-manager.js +129 -129
  65. package/esm2015/src/internal/state-context-factory.js +138 -138
  66. package/esm2015/src/internal/state-factory.js +457 -449
  67. package/esm2015/src/internal/state-operations.js +124 -133
  68. package/esm2015/src/internal/state-operators.js +33 -33
  69. package/esm2015/src/internal/state-stream.js +30 -30
  70. package/esm2015/src/ivy/ivy-enabled-in-dev-mode.js +28 -28
  71. package/esm2015/src/module.js +159 -157
  72. package/esm2015/src/modules/ngxs-feature.module.js +63 -63
  73. package/esm2015/src/modules/ngxs-root.module.js +49 -52
  74. package/esm2015/src/operators/leave-ngxs.js +58 -58
  75. package/esm2015/src/operators/of-action.js +191 -191
  76. package/esm2015/src/plugin-manager.js +70 -70
  77. package/esm2015/src/plugin_api.js +10 -10
  78. package/esm2015/src/public_api.js +29 -29
  79. package/esm2015/src/public_to_deprecate.js +64 -64
  80. package/esm2015/src/state-token/state-token.js +45 -45
  81. package/esm2015/src/state-token/symbols.js +5 -5
  82. package/esm2015/src/store.js +190 -190
  83. package/esm2015/src/symbols.js +221 -220
  84. package/esm2015/src/utils/compose.js +44 -44
  85. package/esm2015/src/utils/freeze.js +35 -35
  86. package/esm2015/src/utils/selector-utils.js +221 -221
  87. package/esm2015/src/utils/store-validators.js +60 -60
  88. package/esm2015/src/utils/utils.js +143 -143
  89. package/esm5/index.js +13 -13
  90. package/esm5/internals/angular.js +20 -20
  91. package/esm5/internals/index.js +10 -11
  92. package/esm5/internals/initial-state.js +45 -45
  93. package/esm5/internals/internal-tokens.js +16 -16
  94. package/esm5/internals/memoize.js +71 -71
  95. package/esm5/internals/ngxs-bootstrapper.js +56 -56
  96. package/esm5/internals/ngxs-store-internals.js +9 -9
  97. package/esm5/internals/src/symbols.js +14 -14
  98. package/esm5/internals/symbols.js +14 -14
  99. package/esm5/internals/testing/fresh-platform.js +121 -121
  100. package/esm5/internals/testing/helpers/ngxs-test.component.js +32 -32
  101. package/esm5/internals/testing/helpers/ngxs-test.module.js +32 -32
  102. package/esm5/internals/testing/index.js +8 -8
  103. package/esm5/internals/testing/ngxs-store-internals-testing.js +8 -8
  104. package/esm5/internals/testing/ngxs.setup.js +98 -98
  105. package/esm5/internals/testing/skip-console-logging.js +62 -62
  106. package/esm5/internals/testing/symbol.js +29 -29
  107. package/esm5/ngxs-store.js +24 -23
  108. package/esm5/operators/append.js +31 -31
  109. package/esm5/operators/compose.js +28 -28
  110. package/esm5/operators/iif.js +56 -56
  111. package/esm5/operators/index.js +18 -18
  112. package/esm5/operators/insert-item.js +41 -41
  113. package/esm5/operators/internals.js +5 -5
  114. package/esm5/operators/ngxs-store-operators.js +8 -8
  115. package/esm5/operators/patch.js +40 -40
  116. package/esm5/operators/remove-item.js +34 -34
  117. package/esm5/operators/update-item.js +52 -52
  118. package/esm5/operators/utils.js +50 -50
  119. package/esm5/src/actions/actions.js +62 -62
  120. package/esm5/src/actions/symbols.js +39 -39
  121. package/esm5/src/actions-stream.js +186 -186
  122. package/esm5/src/configs/messages.config.js +79 -79
  123. package/esm5/src/decorators/action.js +60 -60
  124. package/esm5/src/decorators/select/select-factory.js +46 -50
  125. package/esm5/src/decorators/select/select.js +50 -87
  126. package/esm5/src/decorators/select/symbols.js +51 -95
  127. package/esm5/src/decorators/selector/selector.js +59 -59
  128. package/esm5/src/decorators/selector/symbols.js +5 -5
  129. package/esm5/src/decorators/selector-options.js +34 -34
  130. package/esm5/src/decorators/state.js +78 -84
  131. package/esm5/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +123 -123
  132. package/esm5/src/execution/internal-ngxs-execution-strategy.js +54 -54
  133. package/esm5/src/execution/noop-ngxs-execution-strategy.js +43 -43
  134. package/esm5/src/execution/symbols.js +52 -52
  135. package/esm5/src/internal/dispatcher.js +255 -253
  136. package/esm5/src/internal/internals.js +495 -495
  137. package/esm5/src/internal/lifecycle-state-manager.js +177 -177
  138. package/esm5/src/internal/state-context-factory.js +146 -146
  139. package/esm5/src/internal/state-factory.js +583 -575
  140. package/esm5/src/internal/state-operations.js +134 -143
  141. package/esm5/src/internal/state-operators.js +34 -34
  142. package/esm5/src/internal/state-stream.js +37 -37
  143. package/esm5/src/ivy/ivy-enabled-in-dev-mode.js +28 -28
  144. package/esm5/src/module.js +202 -200
  145. package/esm5/src/modules/ngxs-feature.module.js +65 -65
  146. package/esm5/src/modules/ngxs-root.module.js +44 -47
  147. package/esm5/src/operators/leave-ngxs.js +58 -58
  148. package/esm5/src/operators/of-action.js +217 -217
  149. package/esm5/src/plugin-manager.js +82 -82
  150. package/esm5/src/plugin_api.js +10 -10
  151. package/esm5/src/public_api.js +29 -29
  152. package/esm5/src/public_to_deprecate.js +64 -64
  153. package/esm5/src/state-token/state-token.js +57 -57
  154. package/esm5/src/state-token/symbols.js +5 -5
  155. package/esm5/src/store.js +241 -241
  156. package/esm5/src/symbols.js +230 -229
  157. package/esm5/src/utils/compose.js +55 -55
  158. package/esm5/src/utils/freeze.js +35 -35
  159. package/esm5/src/utils/selector-utils.js +230 -230
  160. package/esm5/src/utils/store-validators.js +78 -78
  161. package/esm5/src/utils/utils.js +151 -151
  162. package/fesm2015/ngxs-store-internals-testing.js +274 -274
  163. package/fesm2015/ngxs-store-internals-testing.js.map +1 -1
  164. package/fesm2015/ngxs-store-internals.js +175 -377
  165. package/fesm2015/ngxs-store-internals.js.map +1 -1
  166. package/fesm2015/ngxs-store-operators.js +312 -312
  167. package/fesm2015/ngxs-store-operators.js.map +1 -1
  168. package/fesm2015/ngxs-store.js +3915 -3995
  169. package/fesm2015/ngxs-store.js.map +1 -1
  170. package/fesm5/ngxs-store-internals-testing.js +321 -321
  171. package/fesm5/ngxs-store-internals-testing.js.map +1 -1
  172. package/fesm5/ngxs-store-internals.js +200 -402
  173. package/fesm5/ngxs-store-internals.js.map +1 -1
  174. package/fesm5/ngxs-store-operators.js +316 -316
  175. package/fesm5/ngxs-store-operators.js.map +1 -1
  176. package/fesm5/ngxs-store.js +4410 -4491
  177. package/fesm5/ngxs-store.js.map +1 -1
  178. package/index.d.ts +8 -8
  179. package/internals/angular.d.ts +1 -1
  180. package/internals/index.d.ts +6 -7
  181. package/internals/initial-state.d.ts +8 -8
  182. package/internals/internal-tokens.d.ts +9 -9
  183. package/internals/memoize.d.ts +9 -9
  184. package/internals/ngxs-bootstrapper.d.ts +13 -13
  185. package/internals/ngxs-store-internals.d.ts +4 -4
  186. package/internals/ngxs-store-internals.metadata.json +1 -1
  187. package/internals/src/symbols.d.ts +7 -7
  188. package/internals/symbols.d.ts +7 -7
  189. package/internals/testing/fresh-platform.d.ts +1 -1
  190. package/internals/testing/helpers/ngxs-test.component.d.ts +5 -5
  191. package/internals/testing/helpers/ngxs-test.module.d.ts +4 -4
  192. package/internals/testing/index.d.ts +4 -4
  193. package/internals/testing/ngxs-store-internals-testing.d.ts +4 -4
  194. package/internals/testing/ngxs.setup.d.ts +7 -7
  195. package/internals/testing/skip-console-logging.d.ts +1 -1
  196. package/internals/testing/symbol.d.ts +14 -14
  197. package/ngxs-store.d.ts +20 -19
  198. package/ngxs-store.metadata.json +1 -1
  199. package/operators/append.d.ts +6 -6
  200. package/operators/compose.d.ts +2 -2
  201. package/operators/iif.d.ts +11 -11
  202. package/operators/index.d.ts +13 -13
  203. package/operators/insert-item.d.ts +7 -7
  204. package/operators/internals.d.ts +2 -2
  205. package/operators/ngxs-store-operators.d.ts +4 -4
  206. package/operators/patch.d.ts +10 -10
  207. package/operators/remove-item.d.ts +7 -7
  208. package/operators/update-item.d.ts +10 -10
  209. package/operators/utils.d.ts +9 -9
  210. package/package.json +1 -1
  211. package/src/actions/actions.d.ts +15 -15
  212. package/src/actions/symbols.d.ts +21 -21
  213. package/src/actions-stream.d.ts +49 -49
  214. package/src/configs/messages.config.d.ts +11 -11
  215. package/src/decorators/action.d.ts +5 -5
  216. package/src/decorators/select/select-factory.d.ts +13 -13
  217. package/src/decorators/select/select.d.ts +4 -4
  218. package/src/decorators/select/symbols.d.ts +10 -14
  219. package/src/decorators/selector/selector.d.ts +5 -5
  220. package/src/decorators/selector/symbols.d.ts +4 -4
  221. package/src/decorators/selector-options.d.ts +5 -5
  222. package/src/decorators/state.d.ts +6 -6
  223. package/src/execution/dispatch-outside-zone-ngxs-execution-strategy.d.ts +11 -11
  224. package/src/execution/internal-ngxs-execution-strategy.d.ts +7 -7
  225. package/src/execution/noop-ngxs-execution-strategy.d.ts +5 -5
  226. package/src/execution/symbols.d.ts +10 -10
  227. package/src/internal/dispatcher.d.ts +32 -32
  228. package/src/internal/internals.d.ts +166 -166
  229. package/src/internal/lifecycle-state-manager.d.ts +20 -20
  230. package/src/internal/state-context-factory.d.ts +15 -15
  231. package/src/internal/state-factory.d.ts +57 -57
  232. package/src/internal/state-operations.d.ts +19 -19
  233. package/src/internal/state-operators.d.ts +2 -2
  234. package/src/internal/state-stream.d.ts +11 -11
  235. package/src/ivy/ivy-enabled-in-dev-mode.d.ts +6 -6
  236. package/src/module.d.ts +23 -23
  237. package/src/modules/ngxs-feature.module.d.ts +13 -13
  238. package/src/modules/ngxs-root.module.d.ts +13 -13
  239. package/src/operators/leave-ngxs.d.ts +7 -7
  240. package/src/operators/of-action.d.ts +43 -43
  241. package/src/plugin-manager.d.ts +10 -10
  242. package/src/plugin_api.d.ts +5 -5
  243. package/src/public_api.d.ts +17 -17
  244. package/src/public_to_deprecate.d.ts +21 -21
  245. package/src/state-token/state-token.d.ts +7 -7
  246. package/src/state-token/symbols.d.ts +5 -5
  247. package/src/store.d.ts +59 -59
  248. package/src/symbols.d.ts +139 -138
  249. package/src/utils/compose.d.ts +23 -23
  250. package/src/utils/freeze.d.ts +5 -5
  251. package/src/utils/selector-utils.d.ts +23 -23
  252. package/src/utils/store-validators.d.ts +7 -7
  253. package/src/utils/utils.d.ts +46 -46
  254. package/types/index.d.ts +2 -2
  255. package/esm2015/internals/decorator-injector-adapter.js +0 -204
  256. package/esm5/internals/decorator-injector-adapter.js +0 -204
  257. package/internals/decorator-injector-adapter.d.ts +0 -15
@@ -1,35 +1,35 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * Object freeze code
7
- * https://github.com/jsdf/deep-freeze
8
- * @type {?}
9
- */
10
- export var deepFreeze = (/**
11
- * @param {?} o
12
- * @return {?}
13
- */
14
- function (o) {
15
- Object.freeze(o);
16
- /** @type {?} */
17
- var oIsFunction = typeof o === 'function';
18
- /** @type {?} */
19
- var hasOwnProp = Object.prototype.hasOwnProperty;
20
- Object.getOwnPropertyNames(o).forEach((/**
21
- * @param {?} prop
22
- * @return {?}
23
- */
24
- function (prop) {
25
- if (hasOwnProp.call(o, prop) &&
26
- (oIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true) &&
27
- o[prop] !== null &&
28
- (typeof o[prop] === 'object' || typeof o[prop] === 'function') &&
29
- !Object.isFrozen(o[prop])) {
30
- deepFreeze(o[prop]);
31
- }
32
- }));
33
- return o;
34
- });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZXplLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvc3RvcmUvIiwic291cmNlcyI6WyJzcmMvdXRpbHMvZnJlZXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUlBLE1BQU0sS0FBTyxVQUFVOzs7O0FBQUcsVUFBQyxDQUFNO0lBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O1FBRVgsV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLFVBQVU7O1FBQ3JDLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWM7SUFFbEQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87Ozs7SUFBQyxVQUFTLElBQUk7UUFDakQsSUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDeEIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDckYsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUk7WUFDaEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDO1lBQzlELENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDekI7WUFDQSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDLEVBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIE9iamVjdCBmcmVlemUgY29kZVxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vanNkZi9kZWVwLWZyZWV6ZVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGRlZXBGcmVlemUgPSAobzogYW55KSA9PiB7XHJcbiAgT2JqZWN0LmZyZWV6ZShvKTtcclxuXHJcbiAgY29uc3Qgb0lzRnVuY3Rpb24gPSB0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJztcclxuICBjb25zdCBoYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcclxuXHJcbiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobykuZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGhhc093blByb3AuY2FsbChvLCBwcm9wKSAmJlxyXG4gICAgICAob0lzRnVuY3Rpb24gPyBwcm9wICE9PSAnY2FsbGVyJyAmJiBwcm9wICE9PSAnY2FsbGVlJyAmJiBwcm9wICE9PSAnYXJndW1lbnRzJyA6IHRydWUpICYmXHJcbiAgICAgIG9bcHJvcF0gIT09IG51bGwgJiZcclxuICAgICAgKHR5cGVvZiBvW3Byb3BdID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykgJiZcclxuICAgICAgIU9iamVjdC5pc0Zyb3plbihvW3Byb3BdKVxyXG4gICAgKSB7XHJcbiAgICAgIGRlZXBGcmVlemUob1twcm9wXSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBvO1xyXG59O1xyXG4iXX0=
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ /**
6
+ * Object freeze code
7
+ * https://github.com/jsdf/deep-freeze
8
+ * @type {?}
9
+ */
10
+ export var deepFreeze = (/**
11
+ * @param {?} o
12
+ * @return {?}
13
+ */
14
+ function (o) {
15
+ Object.freeze(o);
16
+ /** @type {?} */
17
+ var oIsFunction = typeof o === 'function';
18
+ /** @type {?} */
19
+ var hasOwnProp = Object.prototype.hasOwnProperty;
20
+ Object.getOwnPropertyNames(o).forEach((/**
21
+ * @param {?} prop
22
+ * @return {?}
23
+ */
24
+ function (prop) {
25
+ if (hasOwnProp.call(o, prop) &&
26
+ (oIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true) &&
27
+ o[prop] !== null &&
28
+ (typeof o[prop] === 'object' || typeof o[prop] === 'function') &&
29
+ !Object.isFrozen(o[prop])) {
30
+ deepFreeze(o[prop]);
31
+ }
32
+ }));
33
+ return o;
34
+ });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZXplLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neHMvc3RvcmUvIiwic291cmNlcyI6WyJzcmMvdXRpbHMvZnJlZXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUlBLE1BQU0sS0FBTyxVQUFVOzs7O0FBQUcsVUFBQyxDQUFNO0lBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O1FBRVgsV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLFVBQVU7O1FBQ3JDLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWM7SUFFbEQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87Ozs7SUFBQyxVQUFTLElBQUk7UUFDakQsSUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDeEIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDckYsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUk7WUFDaEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDO1lBQzlELENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDekI7WUFDQSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDLEVBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPYmplY3QgZnJlZXplIGNvZGVcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2RmL2RlZXAtZnJlZXplXG4gKi9cbmV4cG9ydCBjb25zdCBkZWVwRnJlZXplID0gKG86IGFueSkgPT4ge1xuICBPYmplY3QuZnJlZXplKG8pO1xuXG4gIGNvbnN0IG9Jc0Z1bmN0aW9uID0gdHlwZW9mIG8gPT09ICdmdW5jdGlvbic7XG4gIGNvbnN0IGhhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG8pLmZvckVhY2goZnVuY3Rpb24ocHJvcCkge1xuICAgIGlmIChcbiAgICAgIGhhc093blByb3AuY2FsbChvLCBwcm9wKSAmJlxuICAgICAgKG9Jc0Z1bmN0aW9uID8gcHJvcCAhPT0gJ2NhbGxlcicgJiYgcHJvcCAhPT0gJ2NhbGxlZScgJiYgcHJvcCAhPT0gJ2FyZ3VtZW50cycgOiB0cnVlKSAmJlxuICAgICAgb1twcm9wXSAhPT0gbnVsbCAmJlxuICAgICAgKHR5cGVvZiBvW3Byb3BdID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykgJiZcbiAgICAgICFPYmplY3QuaXNGcm96ZW4ob1twcm9wXSlcbiAgICApIHtcbiAgICAgIGRlZXBGcmVlemUob1twcm9wXSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbztcbn07XG4iXX0=
@@ -1,230 +1,230 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- import { memoize } from '@ngxs/store/internals';
7
- import { ensureSelectorMetadata, getSelectorMetadata, getStoreMetadata } from '../internal/internals';
8
- /** @type {?} */
9
- var SELECTOR_OPTIONS_META_KEY = 'NGXS_SELECTOR_OPTIONS_META';
10
- /** @type {?} */
11
- export var selectorOptionsMetaAccessor = {
12
- getOptions: (/**
13
- * @param {?} target
14
- * @return {?}
15
- */
16
- function (target) {
17
- return (target && ((/** @type {?} */ (target)))[SELECTOR_OPTIONS_META_KEY]) || {};
18
- }),
19
- defineOptions: (/**
20
- * @param {?} target
21
- * @param {?} options
22
- * @return {?}
23
- */
24
- function (target, options) {
25
- if (!target)
26
- return;
27
- ((/** @type {?} */ (target)))[SELECTOR_OPTIONS_META_KEY] = options;
28
- })
29
- };
30
- /**
31
- * @record
32
- */
33
- function CreationMetadata() { }
34
- if (false) {
35
- /** @type {?} */
36
- CreationMetadata.prototype.containerClass;
37
- /** @type {?} */
38
- CreationMetadata.prototype.selectorName;
39
- /** @type {?|undefined} */
40
- CreationMetadata.prototype.getSelectorOptions;
41
- }
42
- /**
43
- * @record
44
- */
45
- function RuntimeSelectorInfo() { }
46
- if (false) {
47
- /** @type {?} */
48
- RuntimeSelectorInfo.prototype.selectorOptions;
49
- /** @type {?} */
50
- RuntimeSelectorInfo.prototype.argumentSelectorFunctions;
51
- }
52
- /**
53
- * Function for creating a selector
54
- * @template T
55
- * @param {?} selectors The selectors to use to create the arguments of this function
56
- * @param {?} originalFn The original function being made into a selector
57
- * @param {?=} creationMetadata
58
- * @return {?}
59
- */
60
- export function createSelector(selectors, originalFn, creationMetadata) {
61
- /** @type {?} */
62
- var containerClass = creationMetadata && creationMetadata.containerClass;
63
- /** @type {?} */
64
- var wrappedFn = (/** @type {?} */ ((/**
65
- * @param {...?} args
66
- * @return {?}
67
- */
68
- function wrappedSelectorFn() {
69
- var args = [];
70
- for (var _i = 0; _i < arguments.length; _i++) {
71
- args[_i] = arguments[_i];
72
- }
73
- /** @type {?} */
74
- var returnValue = originalFn.apply(containerClass, args);
75
- if (returnValue instanceof Function) {
76
- /** @type {?} */
77
- var innerMemoizedFn = memoize.apply(null, [returnValue]);
78
- return innerMemoizedFn;
79
- }
80
- return returnValue;
81
- })));
82
- /** @type {?} */
83
- var memoizedFn = memoize(wrappedFn);
84
- Object.setPrototypeOf(memoizedFn, originalFn);
85
- /** @type {?} */
86
- var selectorMetaData = setupSelectorMetadata(originalFn, creationMetadata);
87
- /** @type {?} */
88
- var makeRootSelector = (/**
89
- * @param {?} context
90
- * @return {?}
91
- */
92
- function (context) {
93
- var _a = getRuntimeSelectorInfo(context, selectorMetaData, selectors), argumentSelectorFunctions = _a.argumentSelectorFunctions, selectorOptions = _a.selectorOptions;
94
- return (/**
95
- * @param {?} rootState
96
- * @return {?}
97
- */
98
- function selectFromRoot(rootState) {
99
- // Determine arguments from the app state using the selectors
100
- /** @type {?} */
101
- var results = argumentSelectorFunctions.map((/**
102
- * @param {?} argFn
103
- * @return {?}
104
- */
105
- function (argFn) { return argFn(rootState); }));
106
- // if the lambda tries to access a something on the
107
- // state that doesn't exist, it will throw a TypeError.
108
- // since this is quite usual behaviour, we simply return undefined if so.
109
- try {
110
- return memoizedFn.apply(void 0, tslib_1.__spread(results));
111
- }
112
- catch (ex) {
113
- if (ex instanceof TypeError && selectorOptions.suppressErrors) {
114
- return undefined;
115
- }
116
- throw ex;
117
- }
118
- });
119
- });
120
- selectorMetaData.makeRootSelector = makeRootSelector;
121
- return memoizedFn;
122
- }
123
- /**
124
- * @template T
125
- * @param {?} originalFn
126
- * @param {?} creationMetadata
127
- * @return {?}
128
- */
129
- function setupSelectorMetadata(originalFn, creationMetadata) {
130
- /** @type {?} */
131
- var selectorMetaData = ensureSelectorMetadata(originalFn);
132
- selectorMetaData.originalFn = originalFn;
133
- /** @type {?} */
134
- var getExplicitSelectorOptions = (/**
135
- * @return {?}
136
- */
137
- function () { return ({}); });
138
- if (creationMetadata) {
139
- selectorMetaData.containerClass = creationMetadata.containerClass;
140
- selectorMetaData.selectorName = creationMetadata.selectorName;
141
- getExplicitSelectorOptions =
142
- creationMetadata.getSelectorOptions || getExplicitSelectorOptions;
143
- }
144
- /** @type {?} */
145
- var selectorMetaDataClone = tslib_1.__assign({}, selectorMetaData);
146
- selectorMetaData.getSelectorOptions = (/**
147
- * @return {?}
148
- */
149
- function () {
150
- return getLocalSelectorOptions(selectorMetaDataClone, getExplicitSelectorOptions());
151
- });
152
- return selectorMetaData;
153
- }
154
- /**
155
- * @param {?} context
156
- * @param {?} selectorMetaData
157
- * @param {?=} selectors
158
- * @return {?}
159
- */
160
- function getRuntimeSelectorInfo(context, selectorMetaData, selectors) {
161
- if (selectors === void 0) { selectors = []; }
162
- /** @type {?} */
163
- var localSelectorOptions = selectorMetaData.getSelectorOptions();
164
- /** @type {?} */
165
- var selectorOptions = context.getSelectorOptions(localSelectorOptions);
166
- /** @type {?} */
167
- var selectorsToApply = getSelectorsToApply(selectors, selectorOptions, selectorMetaData.containerClass);
168
- /** @type {?} */
169
- var argumentSelectorFunctions = selectorsToApply.map((/**
170
- * @param {?} selector
171
- * @return {?}
172
- */
173
- function (selector) {
174
- /** @type {?} */
175
- var factory = getRootSelectorFactory(selector);
176
- return factory(context);
177
- }));
178
- return {
179
- selectorOptions: selectorOptions,
180
- argumentSelectorFunctions: argumentSelectorFunctions
181
- };
182
- }
183
- /**
184
- * @param {?} selectorMetaData
185
- * @param {?} explicitOptions
186
- * @return {?}
187
- */
188
- function getLocalSelectorOptions(selectorMetaData, explicitOptions) {
189
- return tslib_1.__assign({}, (selectorOptionsMetaAccessor.getOptions(selectorMetaData.containerClass) || {}), (selectorOptionsMetaAccessor.getOptions(selectorMetaData.originalFn) || {}), (selectorMetaData.getSelectorOptions() || {}), explicitOptions);
190
- }
191
- /**
192
- * @param {?=} selectors
193
- * @param {?=} selectorOptions
194
- * @param {?=} containerClass
195
- * @return {?}
196
- */
197
- function getSelectorsToApply(selectors, selectorOptions, containerClass) {
198
- if (selectors === void 0) { selectors = []; }
199
- /** @type {?} */
200
- var selectorsToApply = [];
201
- /** @type {?} */
202
- var canInjectContainerState = selectors.length === 0 || selectorOptions.injectContainerState;
203
- if (containerClass && canInjectContainerState) {
204
- // If we are on a state class, add it as the first selector parameter
205
- /** @type {?} */
206
- var metadata = getStoreMetadata(containerClass);
207
- if (metadata) {
208
- selectorsToApply.push(containerClass);
209
- }
210
- }
211
- if (selectors) {
212
- selectorsToApply.push.apply(selectorsToApply, tslib_1.__spread(selectors));
213
- }
214
- return selectorsToApply;
215
- }
216
- /**
217
- * This function gets the factory function to create the selector to get the selected slice from the app state
218
- * @ignore
219
- * @param {?} selector
220
- * @return {?}
221
- */
222
- export function getRootSelectorFactory(selector) {
223
- /** @type {?} */
224
- var metadata = getSelectorMetadata(selector) || getStoreMetadata(selector);
225
- return (metadata && metadata.makeRootSelector) || ((/**
226
- * @return {?}
227
- */
228
- function () { return selector; }));
229
- }
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy91dGlscy9zZWxlY3Rvci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFNakIsTUFBTSx1QkFBdUIsQ0FBQzs7SUFFekIseUJBQXlCLEdBQUcsNEJBQTRCOztBQUU5RCxNQUFNLEtBQU8sMkJBQTJCLEdBQUc7SUFDekMsVUFBVTs7OztJQUFFLFVBQUMsTUFBVztRQUN0QixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsbUJBQUssTUFBTSxFQUFBLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BFLENBQUMsQ0FBQTtJQUNELGFBQWE7Ozs7O0lBQUUsVUFBQyxNQUFXLEVBQUUsT0FBOEI7UUFDekQsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3BCLENBQUMsbUJBQUssTUFBTSxFQUFBLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNyRCxDQUFDLENBQUE7Q0FDRjs7OztBQUVELCtCQUlDOzs7SUFIQywwQ0FBb0I7O0lBQ3BCLHdDQUFxQjs7SUFDckIsOENBQWlEOzs7OztBQUduRCxrQ0FHQzs7O0lBRkMsOENBQXVDOztJQUN2Qyx3REFBaUQ7Ozs7Ozs7Ozs7QUFTbkQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsU0FBNEIsRUFDNUIsVUFBYSxFQUNiLGdCQUFtQzs7UUFFN0IsY0FBYyxHQUFHLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLGNBQWM7O1FBQ3BFLFNBQVMsR0FBRzs7OztJQUFBLFNBQVMsaUJBQWlCO1FBQUMsY0FBYzthQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7WUFBZCx5QkFB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T0FBTyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSTs7O0lBQUMsY0FBTSxPQUFBLFFBQVEsRUFBUixDQUFRLEVBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVtb2l6ZSB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIGVuc3VyZVNlbGVjdG9yTWV0YWRhdGEsXHJcbiAgZ2V0U2VsZWN0b3JNZXRhZGF0YSxcclxuICBnZXRTdG9yZU1ldGFkYXRhLFxyXG4gIFNlbGVjdG9yTWV0YURhdGFNb2RlbCxcclxuICBTaGFyZWRTZWxlY3Rvck9wdGlvbnMsXHJcbiAgUnVudGltZVNlbGVjdG9yQ29udGV4dCxcclxuICBTZWxlY3RvckZhY3RvcnksXHJcbiAgU2VsZWN0RnJvbVJvb3RTdGF0ZVxyXG59IGZyb20gJy4uL2ludGVybmFsL2ludGVybmFscyc7XHJcblxyXG5jb25zdCBTRUxFQ1RPUl9PUFRJT05TX01FVEFfS0VZID0gJ05HWFNfU0VMRUNUT1JfT1BUSU9OU19NRVRBJztcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3Rvck9wdGlvbnNNZXRhQWNjZXNzb3IgPSB7XHJcbiAgZ2V0T3B0aW9uczogKHRhcmdldDogYW55KTogU2hhcmVkU2VsZWN0b3JPcHRpb25zID0+IHtcclxuICAgIHJldHVybiAodGFyZ2V0ICYmICg8YW55PnRhcmdldClbU0VMRUNUT1JfT1BUSU9OU19NRVRBX0tFWV0pIHx8IHt9O1xyXG4gIH0sXHJcbiAgZGVmaW5lT3B0aW9uczogKHRhcmdldDogYW55LCBvcHRpb25zOiBTaGFyZWRTZWxlY3Rvck9wdGlvbnMpID0+IHtcclxuICAgIGlmICghdGFyZ2V0KSByZXR1cm47XHJcbiAgICAoPGFueT50YXJnZXQpW1NFTEVDVE9SX09QVElPTlNfTUVUQV9LRVldID0gb3B0aW9ucztcclxuICB9XHJcbn07XHJcblxyXG5pbnRlcmZhY2UgQ3JlYXRpb25NZXRhZGF0YSB7XHJcbiAgY29udGFpbmVyQ2xhc3M6IGFueTtcclxuICBzZWxlY3Rvck5hbWU6IHN0cmluZztcclxuICBnZXRTZWxlY3Rvck9wdGlvbnM/OiAoKSA9PiBTaGFyZWRTZWxlY3Rvck9wdGlvbnM7XHJcbn1cclxuXHJcbmludGVyZmFjZSBSdW50aW1lU2VsZWN0b3JJbmZvIHtcclxuICBzZWxlY3Rvck9wdGlvbnM6IFNoYXJlZFNlbGVjdG9yT3B0aW9ucztcclxuICBhcmd1bWVudFNlbGVjdG9yRnVuY3Rpb25zOiBTZWxlY3RGcm9tUm9vdFN0YXRlW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBzZWxlY3RvclxyXG4gKiBAcGFyYW0gc2VsZWN0b3JzIFRoZSBzZWxlY3RvcnMgdG8gdXNlIHRvIGNyZWF0ZSB0aGUgYXJndW1lbnRzIG9mIHRoaXMgZnVuY3Rpb25cclxuICogQHBhcmFtIG9yaWdpbmFsRm4gVGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGJlaW5nIG1hZGUgaW50byBhIHNlbGVjdG9yXHJcbiAqIEBwYXJhbSBjcmVhdGlvbk1ldGFkYXRhXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0b3I8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcclxuICBzZWxlY3RvcnM6IGFueVtdIHwgdW5kZWZpbmVkLFxyXG4gIG9yaWdpbmFsRm46IFQsXHJcbiAgY3JlYXRpb25NZXRhZGF0YT86IENyZWF0aW9uTWV0YWRhdGFcclxuKSB7XHJcbiAgY29uc3QgY29udGFpbmVyQ2xhc3MgPSBjcmVhdGlvbk1ldGFkYXRhICYmIGNyZWF0aW9uTWV0YWRhdGEuY29udGFpbmVyQ2xhc3M7XHJcbiAgY29uc3Qgd3JhcHBlZEZuID0gZnVuY3Rpb24gd3JhcHBlZFNlbGVjdG9yRm4oLi4uYXJnczogYW55W10pIHtcclxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gb3JpZ2luYWxGbi5hcHBseShjb250YWluZXJDbGFzcywgYXJncyk7XHJcbiAgICBpZiAocmV0dXJuVmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xyXG4gICAgICBjb25zdCBpbm5lck1lbW9pemVkRm4gPSBtZW1vaXplLmFwcGx5KG51bGwsIFtyZXR1cm5WYWx1ZV0pO1xyXG4gICAgICByZXR1cm4gaW5uZXJNZW1vaXplZEZuO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gIH0gYXMgVDtcclxuICBjb25zdCBtZW1vaXplZEZuID0gbWVtb2l6ZSh3cmFwcGVkRm4pO1xyXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihtZW1vaXplZEZuLCBvcmlnaW5hbEZuKTtcclxuXHJcbiAgY29uc3Qgc2VsZWN0b3JNZXRhRGF0YSA9IHNldHVwU2VsZWN0b3JNZXRhZGF0YTxUPihvcmlnaW5hbEZuLCBjcmVhdGlvbk1ldGFkYXRhKTtcclxuXHJcbiAgY29uc3QgbWFrZVJvb3RTZWxlY3RvcjogU2VsZWN0b3JGYWN0b3J5ID0gKGNvbnRleHQ6IFJ1bnRpbWVTZWxlY3RvckNvbnRleHQpID0+IHtcclxuICAgIGNvbnN0IHsgYXJndW1lbnRTZWxlY3RvckZ1bmN0aW9ucywgc2VsZWN0b3JPcHRpb25zIH0gPSBnZXRSdW50aW1lU2VsZWN0b3JJbmZvKFxyXG4gICAgICBjb250ZXh0LFxyXG4gICAgICBzZWxlY3Rvck1ldGFEYXRhLFxyXG4gICAgICBzZWxlY3RvcnNcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHNlbGVjdEZyb21Sb290KHJvb3RTdGF0ZTogYW55KSB7XHJcbiAgICAgIC8vIERldGVybWluZSBhcmd1bWVudHMgZnJvbSB0aGUgYXBwIHN0YXRlIHVzaW5nIHRoZSBzZWxlY3RvcnNcclxuICAgICAgY29uc3QgcmVzdWx0cyA9IGFyZ3VtZW50U2VsZWN0b3JGdW5jdGlvbnMubWFwKGFyZ0ZuID0+IGFyZ0ZuKHJvb3RTdGF0ZSkpO1xyXG5cclxuICAgICAgLy8gaWYgdGhlIGxhbWJkYSB0cmllcyB0byBhY2Nlc3MgYSBzb21ldGhpbmcgb24gdGhlXHJcbiAgICAgIC8vIHN0YXRlIHRoYXQgZG9lc24ndCBleGlzdCwgaXQgd2lsbCB0aHJvdyBhIFR5cGVFcnJvci5cclxuICAgICAgLy8gc2luY2UgdGhpcyBpcyBxdWl0ZSB1c3VhbCBiZWhhdmlvdXIsIHdlIHNpbXBseSByZXR1cm4gdW5kZWZpbmVkIGlmIHNvLlxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiBtZW1vaXplZEZuKC4uLnJlc3VsdHMpO1xyXG4gICAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICAgIGlmIChleCBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBzZWxlY3Rvck9wdGlvbnMuc3VwcHJlc3NFcnJvcnMpIHtcclxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aHJvdyBleDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICBzZWxlY3Rvck1ldGFEYXRhLm1ha2VSb290U2VsZWN0b3IgPSBtYWtlUm9vdFNlbGVjdG9yO1xyXG5cclxuICByZXR1cm4gbWVtb2l6ZWRGbjtcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0dXBTZWxlY3Rvck1ldGFkYXRhPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXHJcbiAgb3JpZ2luYWxGbjogVCxcclxuICBjcmVhdGlvbk1ldGFkYXRhOiBDcmVhdGlvbk1ldGFkYXRhIHwgdW5kZWZpbmVkXHJcbikge1xyXG4gIGNvbnN0IHNlbGVjdG9yTWV0YURhdGEgPSBlbnN1cmVTZWxlY3Rvck1ldGFkYXRhKG9yaWdpbmFsRm4pO1xyXG4gIHNlbGVjdG9yTWV0YURhdGEub3JpZ2luYWxGbiA9IG9yaWdpbmFsRm47XHJcbiAgbGV0IGdldEV4cGxpY2l0U2VsZWN0b3JPcHRpb25zID0gKCkgPT4gKHt9KTtcclxuICBpZiAoY3JlYXRpb25NZXRhZGF0YSkge1xyXG4gICAgc2VsZWN0b3JNZXRhRGF0YS5jb250YWluZXJDbGFzcyA9IGNyZWF0aW9uTWV0YWRhdGEuY29udGFpbmVyQ2xhc3M7XHJcbiAgICBzZWxlY3Rvck1ldGFEYXRhLnNlbGVjdG9yTmFtZSA9IGNyZWF0aW9uTWV0YWRhdGEuc2VsZWN0b3JOYW1lO1xyXG4gICAgZ2V0RXhwbGljaXRTZWxlY3Rvck9wdGlvbnMgPVxyXG4gICAgICBjcmVhdGlvbk1ldGFkYXRhLmdldFNlbGVjdG9yT3B0aW9ucyB8fCBnZXRFeHBsaWNpdFNlbGVjdG9yT3B0aW9ucztcclxuICB9XHJcbiAgY29uc3Qgc2VsZWN0b3JNZXRhRGF0YUNsb25lID0geyAuLi5zZWxlY3Rvck1ldGFEYXRhIH07XHJcbiAgc2VsZWN0b3JNZXRhRGF0YS5nZXRTZWxlY3Rvck9wdGlvbnMgPSAoKSA9PlxyXG4gICAgZ2V0TG9jYWxTZWxlY3Rvck9wdGlvbnMoc2VsZWN0b3JNZXRhRGF0YUNsb25lLCBnZXRFeHBsaWNpdFNlbGVjdG9yT3B0aW9ucygpKTtcclxuICByZXR1cm4gc2VsZWN0b3JNZXRhRGF0YTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UnVudGltZVNlbGVjdG9ySW5mbyhcclxuICBjb250ZXh0OiBSdW50aW1lU2VsZWN0b3JDb250ZXh0LFxyXG4gIHNlbGVjdG9yTWV0YURhdGE6IFNlbGVjdG9yTWV0YURhdGFNb2RlbCxcclxuICBzZWxlY3RvcnM6IGFueVtdIHwgdW5kZWZpbmVkID0gW11cclxuKTogUnVudGltZVNlbGVjdG9ySW5mbyB7XHJcbiAgY29uc3QgbG9jYWxTZWxlY3Rvck9wdGlvbnMgPSBzZWxlY3Rvck1ldGFEYXRhLmdldFNlbGVjdG9yT3B0aW9ucygpO1xyXG4gIGNvbnN0IHNlbGVjdG9yT3B0aW9ucyA9IGNvbnRleHQuZ2V0U2VsZWN0b3JPcHRpb25zKGxvY2FsU2VsZWN0b3JPcHRpb25zKTtcclxuICBjb25zdCBzZWxlY3RvcnNUb0FwcGx5ID0gZ2V0U2VsZWN0b3JzVG9BcHBseShcclxuICAgIHNlbGVjdG9ycyxcclxuICAgIHNlbGVjdG9yT3B0aW9ucyxcclxuICAgIHNlbGVjdG9yTWV0YURhdGEuY29udGFpbmVyQ2xhc3NcclxuICApO1xyXG5cclxuICBjb25zdCBhcmd1bWVudFNlbGVjdG9yRnVuY3Rpb25zID0gc2VsZWN0b3JzVG9BcHBseS5tYXAoc2VsZWN0b3IgPT4ge1xyXG4gICAgY29uc3QgZmFjdG9yeSA9IGdldFJvb3RTZWxlY3RvckZhY3Rvcnkoc2VsZWN0b3IpO1xyXG4gICAgcmV0dXJuIGZhY3RvcnkoY29udGV4dCk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHNlbGVjdG9yT3B0aW9ucyxcclxuICAgIGFyZ3VtZW50U2VsZWN0b3JGdW5jdGlvbnNcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMb2NhbFNlbGVjdG9yT3B0aW9ucyhcclxuICBzZWxlY3Rvck1ldGFEYXRhOiBTZWxlY3Rvck1ldGFEYXRhTW9kZWwsXHJcbiAgZXhwbGljaXRPcHRpb25zOiBTaGFyZWRTZWxlY3Rvck9wdGlvbnNcclxuKTogU2hhcmVkU2VsZWN0b3JPcHRpb25zIHtcclxuICByZXR1cm4ge1xyXG4gICAgLi4uKHNlbGVjdG9yT3B0aW9uc01ldGFBY2Nlc3Nvci5nZXRPcHRpb25zKHNlbGVjdG9yTWV0YURhdGEuY29udGFpbmVyQ2xhc3MpIHx8IHt9KSxcclxuICAgIC4uLihzZWxlY3Rvck9wdGlvbnNNZXRhQWNjZXNzb3IuZ2V0T3B0aW9ucyhzZWxlY3Rvck1ldGFEYXRhLm9yaWdpbmFsRm4pIHx8IHt9KSxcclxuICAgIC4uLihzZWxlY3Rvck1ldGFEYXRhLmdldFNlbGVjdG9yT3B0aW9ucygpIHx8IHt9KSxcclxuICAgIC4uLmV4cGxpY2l0T3B0aW9uc1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFNlbGVjdG9yc1RvQXBwbHkoXHJcbiAgc2VsZWN0b3JzOiBhbnlbXSB8IHVuZGVmaW5lZCA9IFtdLFxyXG4gIHNlbGVjdG9yT3B0aW9uczogU2hhcmVkU2VsZWN0b3JPcHRpb25zLFxyXG4gIGNvbnRhaW5lckNsYXNzOiBhbnlcclxuKSB7XHJcbiAgY29uc3Qgc2VsZWN0b3JzVG9BcHBseSA9IFtdO1xyXG4gIGNvbnN0IGNhbkluamVjdENvbnRhaW5lclN0YXRlID1cclxuICAgIHNlbGVjdG9ycy5sZW5ndGggPT09IDAgfHwgc2VsZWN0b3JPcHRpb25zLmluamVjdENvbnRhaW5lclN0YXRlO1xyXG4gIGlmIChjb250YWluZXJDbGFzcyAmJiBjYW5JbmplY3RDb250YWluZXJTdGF0ZSkge1xyXG4gICAgLy8gSWYgd2UgYXJlIG9uIGEgc3RhdGUgY2xhc3MsIGFkZCBpdCBhcyB0aGUgZmlyc3Qgc2VsZWN0b3IgcGFyYW1ldGVyXHJcbiAgICBjb25zdCBtZXRhZGF0YSA9IGdldFN0b3JlTWV0YWRhdGEoY29udGFpbmVyQ2xhc3MpO1xyXG4gICAgaWYgKG1ldGFkYXRhKSB7XHJcbiAgICAgIHNlbGVjdG9yc1RvQXBwbHkucHVzaChjb250YWluZXJDbGFzcyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlmIChzZWxlY3RvcnMpIHtcclxuICAgIHNlbGVjdG9yc1RvQXBwbHkucHVzaCguLi5zZWxlY3RvcnMpO1xyXG4gIH1cclxuICByZXR1cm4gc2VsZWN0b3JzVG9BcHBseTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgZmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIHNlbGVjdG9yIHRvIGdldCB0aGUgc2VsZWN0ZWQgc2xpY2UgZnJvbSB0aGUgYXBwIHN0YXRlXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290U2VsZWN0b3JGYWN0b3J5KHNlbGVjdG9yOiBhbnkpOiBTZWxlY3RvckZhY3Rvcnkge1xyXG4gIGNvbnN0IG1ldGFkYXRhID0gZ2V0U2VsZWN0b3JNZXRhZGF0YShzZWxlY3RvcikgfHwgZ2V0U3RvcmVNZXRhZGF0YShzZWxlY3Rvcik7XHJcbiAgcmV0dXJuIChtZXRhZGF0YSAmJiBtZXRhZGF0YS5tYWtlUm9vdFNlbGVjdG9yKSB8fCAoKCkgPT4gc2VsZWN0b3IpO1xyXG59XHJcbiJdfQ==
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { memoize } from '@ngxs/store/internals';
7
+ import { ensureSelectorMetadata, getSelectorMetadata, getStoreMetadata } from '../internal/internals';
8
+ /** @type {?} */
9
+ var SELECTOR_OPTIONS_META_KEY = 'NGXS_SELECTOR_OPTIONS_META';
10
+ /** @type {?} */
11
+ export var selectorOptionsMetaAccessor = {
12
+ getOptions: (/**
13
+ * @param {?} target
14
+ * @return {?}
15
+ */
16
+ function (target) {
17
+ return (target && ((/** @type {?} */ (target)))[SELECTOR_OPTIONS_META_KEY]) || {};
18
+ }),
19
+ defineOptions: (/**
20
+ * @param {?} target
21
+ * @param {?} options
22
+ * @return {?}
23
+ */
24
+ function (target, options) {
25
+ if (!target)
26
+ return;
27
+ ((/** @type {?} */ (target)))[SELECTOR_OPTIONS_META_KEY] = options;
28
+ })
29
+ };
30
+ /**
31
+ * @record
32
+ */
33
+ function CreationMetadata() { }
34
+ if (false) {
35
+ /** @type {?} */
36
+ CreationMetadata.prototype.containerClass;
37
+ /** @type {?} */
38
+ CreationMetadata.prototype.selectorName;
39
+ /** @type {?|undefined} */
40
+ CreationMetadata.prototype.getSelectorOptions;
41
+ }
42
+ /**
43
+ * @record
44
+ */
45
+ function RuntimeSelectorInfo() { }
46
+ if (false) {
47
+ /** @type {?} */
48
+ RuntimeSelectorInfo.prototype.selectorOptions;
49
+ /** @type {?} */
50
+ RuntimeSelectorInfo.prototype.argumentSelectorFunctions;
51
+ }
52
+ /**
53
+ * Function for creating a selector
54
+ * @template T
55
+ * @param {?} selectors The selectors to use to create the arguments of this function
56
+ * @param {?} originalFn The original function being made into a selector
57
+ * @param {?=} creationMetadata
58
+ * @return {?}
59
+ */
60
+ export function createSelector(selectors, originalFn, creationMetadata) {
61
+ /** @type {?} */
62
+ var containerClass = creationMetadata && creationMetadata.containerClass;
63
+ /** @type {?} */
64
+ var wrappedFn = (/** @type {?} */ ((/**
65
+ * @param {...?} args
66
+ * @return {?}
67
+ */
68
+ function wrappedSelectorFn() {
69
+ var args = [];
70
+ for (var _i = 0; _i < arguments.length; _i++) {
71
+ args[_i] = arguments[_i];
72
+ }
73
+ /** @type {?} */
74
+ var returnValue = originalFn.apply(containerClass, args);
75
+ if (returnValue instanceof Function) {
76
+ /** @type {?} */
77
+ var innerMemoizedFn = memoize.apply(null, [returnValue]);
78
+ return innerMemoizedFn;
79
+ }
80
+ return returnValue;
81
+ })));
82
+ /** @type {?} */
83
+ var memoizedFn = memoize(wrappedFn);
84
+ Object.setPrototypeOf(memoizedFn, originalFn);
85
+ /** @type {?} */
86
+ var selectorMetaData = setupSelectorMetadata(originalFn, creationMetadata);
87
+ /** @type {?} */
88
+ var makeRootSelector = (/**
89
+ * @param {?} context
90
+ * @return {?}
91
+ */
92
+ function (context) {
93
+ var _a = getRuntimeSelectorInfo(context, selectorMetaData, selectors), argumentSelectorFunctions = _a.argumentSelectorFunctions, selectorOptions = _a.selectorOptions;
94
+ return (/**
95
+ * @param {?} rootState
96
+ * @return {?}
97
+ */
98
+ function selectFromRoot(rootState) {
99
+ // Determine arguments from the app state using the selectors
100
+ /** @type {?} */
101
+ var results = argumentSelectorFunctions.map((/**
102
+ * @param {?} argFn
103
+ * @return {?}
104
+ */
105
+ function (argFn) { return argFn(rootState); }));
106
+ // if the lambda tries to access a something on the
107
+ // state that doesn't exist, it will throw a TypeError.
108
+ // since this is quite usual behaviour, we simply return undefined if so.
109
+ try {
110
+ return memoizedFn.apply(void 0, tslib_1.__spread(results));
111
+ }
112
+ catch (ex) {
113
+ if (ex instanceof TypeError && selectorOptions.suppressErrors) {
114
+ return undefined;
115
+ }
116
+ throw ex;
117
+ }
118
+ });
119
+ });
120
+ selectorMetaData.makeRootSelector = makeRootSelector;
121
+ return memoizedFn;
122
+ }
123
+ /**
124
+ * @template T
125
+ * @param {?} originalFn
126
+ * @param {?} creationMetadata
127
+ * @return {?}
128
+ */
129
+ function setupSelectorMetadata(originalFn, creationMetadata) {
130
+ /** @type {?} */
131
+ var selectorMetaData = ensureSelectorMetadata(originalFn);
132
+ selectorMetaData.originalFn = originalFn;
133
+ /** @type {?} */
134
+ var getExplicitSelectorOptions = (/**
135
+ * @return {?}
136
+ */
137
+ function () { return ({}); });
138
+ if (creationMetadata) {
139
+ selectorMetaData.containerClass = creationMetadata.containerClass;
140
+ selectorMetaData.selectorName = creationMetadata.selectorName;
141
+ getExplicitSelectorOptions =
142
+ creationMetadata.getSelectorOptions || getExplicitSelectorOptions;
143
+ }
144
+ /** @type {?} */
145
+ var selectorMetaDataClone = tslib_1.__assign({}, selectorMetaData);
146
+ selectorMetaData.getSelectorOptions = (/**
147
+ * @return {?}
148
+ */
149
+ function () {
150
+ return getLocalSelectorOptions(selectorMetaDataClone, getExplicitSelectorOptions());
151
+ });
152
+ return selectorMetaData;
153
+ }
154
+ /**
155
+ * @param {?} context
156
+ * @param {?} selectorMetaData
157
+ * @param {?=} selectors
158
+ * @return {?}
159
+ */
160
+ function getRuntimeSelectorInfo(context, selectorMetaData, selectors) {
161
+ if (selectors === void 0) { selectors = []; }
162
+ /** @type {?} */
163
+ var localSelectorOptions = selectorMetaData.getSelectorOptions();
164
+ /** @type {?} */
165
+ var selectorOptions = context.getSelectorOptions(localSelectorOptions);
166
+ /** @type {?} */
167
+ var selectorsToApply = getSelectorsToApply(selectors, selectorOptions, selectorMetaData.containerClass);
168
+ /** @type {?} */
169
+ var argumentSelectorFunctions = selectorsToApply.map((/**
170
+ * @param {?} selector
171
+ * @return {?}
172
+ */
173
+ function (selector) {
174
+ /** @type {?} */
175
+ var factory = getRootSelectorFactory(selector);
176
+ return factory(context);
177
+ }));
178
+ return {
179
+ selectorOptions: selectorOptions,
180
+ argumentSelectorFunctions: argumentSelectorFunctions
181
+ };
182
+ }
183
+ /**
184
+ * @param {?} selectorMetaData
185
+ * @param {?} explicitOptions
186
+ * @return {?}
187
+ */
188
+ function getLocalSelectorOptions(selectorMetaData, explicitOptions) {
189
+ return tslib_1.__assign({}, (selectorOptionsMetaAccessor.getOptions(selectorMetaData.containerClass) || {}), (selectorOptionsMetaAccessor.getOptions(selectorMetaData.originalFn) || {}), (selectorMetaData.getSelectorOptions() || {}), explicitOptions);
190
+ }
191
+ /**
192
+ * @param {?=} selectors
193
+ * @param {?=} selectorOptions
194
+ * @param {?=} containerClass
195
+ * @return {?}
196
+ */
197
+ function getSelectorsToApply(selectors, selectorOptions, containerClass) {
198
+ if (selectors === void 0) { selectors = []; }
199
+ /** @type {?} */
200
+ var selectorsToApply = [];
201
+ /** @type {?} */
202
+ var canInjectContainerState = selectors.length === 0 || selectorOptions.injectContainerState;
203
+ if (containerClass && canInjectContainerState) {
204
+ // If we are on a state class, add it as the first selector parameter
205
+ /** @type {?} */
206
+ var metadata = getStoreMetadata(containerClass);
207
+ if (metadata) {
208
+ selectorsToApply.push(containerClass);
209
+ }
210
+ }
211
+ if (selectors) {
212
+ selectorsToApply.push.apply(selectorsToApply, tslib_1.__spread(selectors));
213
+ }
214
+ return selectorsToApply;
215
+ }
216
+ /**
217
+ * This function gets the factory function to create the selector to get the selected slice from the app state
218
+ * @ignore
219
+ * @param {?} selector
220
+ * @return {?}
221
+ */
222
+ export function getRootSelectorFactory(selector) {
223
+ /** @type {?} */
224
+ var metadata = getSelectorMetadata(selector) || getStoreMetadata(selector);
225
+ return (metadata && metadata.makeRootSelector) || ((/**
226
+ * @return {?}
227
+ */
228
+ function () { return selector; }));
229
+ }
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItdXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy91dGlscy9zZWxlY3Rvci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFNakIsTUFBTSx1QkFBdUIsQ0FBQzs7SUFFekIseUJBQXlCLEdBQUcsNEJBQTRCOztBQUU5RCxNQUFNLEtBQU8sMkJBQTJCLEdBQUc7SUFDekMsVUFBVTs7OztJQUFFLFVBQUMsTUFBVztRQUN0QixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsbUJBQUssTUFBTSxFQUFBLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BFLENBQUMsQ0FBQTtJQUNELGFBQWE7Ozs7O0lBQUUsVUFBQyxNQUFXLEVBQUUsT0FBOEI7UUFDekQsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3BCLENBQUMsbUJBQUssTUFBTSxFQUFBLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUNyRCxDQUFDLENBQUE7Q0FDRjs7OztBQUVELCtCQUlDOzs7SUFIQywwQ0FBb0I7O0lBQ3BCLHdDQUFxQjs7SUFDckIsOENBQWlEOzs7OztBQUduRCxrQ0FHQzs7O0lBRkMsOENBQXVDOztJQUN2Qyx3REFBaUQ7Ozs7Ozs7Ozs7QUFTbkQsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsU0FBNEIsRUFDNUIsVUFBYSxFQUNiLGdCQUFtQzs7UUFFN0IsY0FBYyxHQUFHLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLGNBQWM7O1FBQ3BFLFNBQVMsR0FBRzs7OztJQUFBLFNBQVMsaUJBQWlCO1FBQUMsY0FBYzthQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7WUFBZCx5QkFB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T0FBTyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSTs7O0lBQUMsY0FBTSxPQUFBLFFBQVEsRUFBUixDQUFRLEVBQUMsQ0FBQztBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVtb2l6ZSB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XG5cbmltcG9ydCB7XG4gIGVuc3VyZVNlbGVjdG9yTWV0YWRhdGEsXG4gIGdldFNlbGVjdG9yTWV0YWRhdGEsXG4gIGdldFN0b3JlTWV0YWRhdGEsXG4gIFNlbGVjdG9yTWV0YURhdGFNb2RlbCxcbiAgU2hhcmVkU2VsZWN0b3JPcHRpb25zLFxuICBSdW50aW1lU2VsZWN0b3JDb250ZXh0LFxuICBTZWxlY3RvckZhY3RvcnksXG4gIFNlbGVjdEZyb21Sb290U3RhdGVcbn0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcblxuY29uc3QgU0VMRUNUT1JfT1BUSU9OU19NRVRBX0tFWSA9ICdOR1hTX1NFTEVDVE9SX09QVElPTlNfTUVUQSc7XG5cbmV4cG9ydCBjb25zdCBzZWxlY3Rvck9wdGlvbnNNZXRhQWNjZXNzb3IgPSB7XG4gIGdldE9wdGlvbnM6ICh0YXJnZXQ6IGFueSk6IFNoYXJlZFNlbGVjdG9yT3B0aW9ucyA9PiB7XG4gICAgcmV0dXJuICh0YXJnZXQgJiYgKDxhbnk+dGFyZ2V0KVtTRUxFQ1RPUl9PUFRJT05TX01FVEFfS0VZXSkgfHwge307XG4gIH0sXG4gIGRlZmluZU9wdGlvbnM6ICh0YXJnZXQ6IGFueSwgb3B0aW9uczogU2hhcmVkU2VsZWN0b3JPcHRpb25zKSA9PiB7XG4gICAgaWYgKCF0YXJnZXQpIHJldHVybjtcbiAgICAoPGFueT50YXJnZXQpW1NFTEVDVE9SX09QVElPTlNfTUVUQV9LRVldID0gb3B0aW9ucztcbiAgfVxufTtcblxuaW50ZXJmYWNlIENyZWF0aW9uTWV0YWRhdGEge1xuICBjb250YWluZXJDbGFzczogYW55O1xuICBzZWxlY3Rvck5hbWU6IHN0cmluZztcbiAgZ2V0U2VsZWN0b3JPcHRpb25zPzogKCkgPT4gU2hhcmVkU2VsZWN0b3JPcHRpb25zO1xufVxuXG5pbnRlcmZhY2UgUnVudGltZVNlbGVjdG9ySW5mbyB7XG4gIHNlbGVjdG9yT3B0aW9uczogU2hhcmVkU2VsZWN0b3JPcHRpb25zO1xuICBhcmd1bWVudFNlbGVjdG9yRnVuY3Rpb25zOiBTZWxlY3RGcm9tUm9vdFN0YXRlW107XG59XG5cbi8qKlxuICogRnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgc2VsZWN0b3JcbiAqIEBwYXJhbSBzZWxlY3RvcnMgVGhlIHNlbGVjdG9ycyB0byB1c2UgdG8gY3JlYXRlIHRoZSBhcmd1bWVudHMgb2YgdGhpcyBmdW5jdGlvblxuICogQHBhcmFtIG9yaWdpbmFsRm4gVGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGJlaW5nIG1hZGUgaW50byBhIHNlbGVjdG9yXG4gKiBAcGFyYW0gY3JlYXRpb25NZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0b3I8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgc2VsZWN0b3JzOiBhbnlbXSB8IHVuZGVmaW5lZCxcbiAgb3JpZ2luYWxGbjogVCxcbiAgY3JlYXRpb25NZXRhZGF0YT86IENyZWF0aW9uTWV0YWRhdGFcbikge1xuICBjb25zdCBjb250YWluZXJDbGFzcyA9IGNyZWF0aW9uTWV0YWRhdGEgJiYgY3JlYXRpb25NZXRhZGF0YS5jb250YWluZXJDbGFzcztcbiAgY29uc3Qgd3JhcHBlZEZuID0gZnVuY3Rpb24gd3JhcHBlZFNlbGVjdG9yRm4oLi4uYXJnczogYW55W10pIHtcbiAgICBjb25zdCByZXR1cm5WYWx1ZSA9IG9yaWdpbmFsRm4uYXBwbHkoY29udGFpbmVyQ2xhc3MsIGFyZ3MpO1xuICAgIGlmIChyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICBjb25zdCBpbm5lck1lbW9pemVkRm4gPSBtZW1vaXplLmFwcGx5KG51bGwsIFtyZXR1cm5WYWx1ZV0pO1xuICAgICAgcmV0dXJuIGlubmVyTWVtb2l6ZWRGbjtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICB9IGFzIFQ7XG4gIGNvbnN0IG1lbW9pemVkRm4gPSBtZW1vaXplKHdyYXBwZWRGbik7XG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihtZW1vaXplZEZuLCBvcmlnaW5hbEZuKTtcblxuICBjb25zdCBzZWxlY3Rvck1ldGFEYXRhID0gc2V0dXBTZWxlY3Rvck1ldGFkYXRhPFQ+KG9yaWdpbmFsRm4sIGNyZWF0aW9uTWV0YWRhdGEpO1xuXG4gIGNvbnN0IG1ha2VSb290U2VsZWN0b3I6IFNlbGVjdG9yRmFjdG9yeSA9IChjb250ZXh0OiBSdW50aW1lU2VsZWN0b3JDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgeyBhcmd1bWVudFNlbGVjdG9yRnVuY3Rpb25zLCBzZWxlY3Rvck9wdGlvbnMgfSA9IGdldFJ1bnRpbWVTZWxlY3RvckluZm8oXG4gICAgICBjb250ZXh0LFxuICAgICAgc2VsZWN0b3JNZXRhRGF0YSxcbiAgICAgIHNlbGVjdG9yc1xuICAgICk7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gc2VsZWN0RnJvbVJvb3Qocm9vdFN0YXRlOiBhbnkpIHtcbiAgICAgIC8vIERldGVybWluZSBhcmd1bWVudHMgZnJvbSB0aGUgYXBwIHN0YXRlIHVzaW5nIHRoZSBzZWxlY3RvcnNcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhcmd1bWVudFNlbGVjdG9yRnVuY3Rpb25zLm1hcChhcmdGbiA9PiBhcmdGbihyb290U3RhdGUpKTtcblxuICAgICAgLy8gaWYgdGhlIGxhbWJkYSB0cmllcyB0byBhY2Nlc3MgYSBzb21ldGhpbmcgb24gdGhlXG4gICAgICAvLyBzdGF0ZSB0aGF0IGRvZXNuJ3QgZXhpc3QsIGl0IHdpbGwgdGhyb3cgYSBUeXBlRXJyb3IuXG4gICAgICAvLyBzaW5jZSB0aGlzIGlzIHF1aXRlIHVzdWFsIGJlaGF2aW91ciwgd2Ugc2ltcGx5IHJldHVybiB1bmRlZmluZWQgaWYgc28uXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbWVtb2l6ZWRGbiguLi5yZXN1bHRzKTtcbiAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgIGlmIChleCBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBzZWxlY3Rvck9wdGlvbnMuc3VwcHJlc3NFcnJvcnMpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXg7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICBzZWxlY3Rvck1ldGFEYXRhLm1ha2VSb290U2VsZWN0b3IgPSBtYWtlUm9vdFNlbGVjdG9yO1xuXG4gIHJldHVybiBtZW1vaXplZEZuO1xufVxuXG5mdW5jdGlvbiBzZXR1cFNlbGVjdG9yTWV0YWRhdGE8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgb3JpZ2luYWxGbjogVCxcbiAgY3JlYXRpb25NZXRhZGF0YTogQ3JlYXRpb25NZXRhZGF0YSB8IHVuZGVmaW5lZFxuKSB7XG4gIGNvbnN0IHNlbGVjdG9yTWV0YURhdGEgPSBlbnN1cmVTZWxlY3Rvck1ldGFkYXRhKG9yaWdpbmFsRm4pO1xuICBzZWxlY3Rvck1ldGFEYXRhLm9yaWdpbmFsRm4gPSBvcmlnaW5hbEZuO1xuICBsZXQgZ2V0RXhwbGljaXRTZWxlY3Rvck9wdGlvbnMgPSAoKSA9PiAoe30pO1xuICBpZiAoY3JlYXRpb25NZXRhZGF0YSkge1xuICAgIHNlbGVjdG9yTWV0YURhdGEuY29udGFpbmVyQ2xhc3MgPSBjcmVhdGlvbk1ldGFkYXRhLmNvbnRhaW5lckNsYXNzO1xuICAgIHNlbGVjdG9yTWV0YURhdGEuc2VsZWN0b3JOYW1lID0gY3JlYXRpb25NZXRhZGF0YS5zZWxlY3Rvck5hbWU7XG4gICAgZ2V0RXhwbGljaXRTZWxlY3Rvck9wdGlvbnMgPVxuICAgICAgY3JlYXRpb25NZXRhZGF0YS5nZXRTZWxlY3Rvck9wdGlvbnMgfHwgZ2V0RXhwbGljaXRTZWxlY3Rvck9wdGlvbnM7XG4gIH1cbiAgY29uc3Qgc2VsZWN0b3JNZXRhRGF0YUNsb25lID0geyAuLi5zZWxlY3Rvck1ldGFEYXRhIH07XG4gIHNlbGVjdG9yTWV0YURhdGEuZ2V0U2VsZWN0b3JPcHRpb25zID0gKCkgPT5cbiAgICBnZXRMb2NhbFNlbGVjdG9yT3B0aW9ucyhzZWxlY3Rvck1ldGFEYXRhQ2xvbmUsIGdldEV4cGxpY2l0U2VsZWN0b3JPcHRpb25zKCkpO1xuICByZXR1cm4gc2VsZWN0b3JNZXRhRGF0YTtcbn1cblxuZnVuY3Rpb24gZ2V0UnVudGltZVNlbGVjdG9ySW5mbyhcbiAgY29udGV4dDogUnVudGltZVNlbGVjdG9yQ29udGV4dCxcbiAgc2VsZWN0b3JNZXRhRGF0YTogU2VsZWN0b3JNZXRhRGF0YU1vZGVsLFxuICBzZWxlY3RvcnM6IGFueVtdIHwgdW5kZWZpbmVkID0gW11cbik6IFJ1bnRpbWVTZWxlY3RvckluZm8ge1xuICBjb25zdCBsb2NhbFNlbGVjdG9yT3B0aW9ucyA9IHNlbGVjdG9yTWV0YURhdGEuZ2V0U2VsZWN0b3JPcHRpb25zKCk7XG4gIGNvbnN0IHNlbGVjdG9yT3B0aW9ucyA9IGNvbnRleHQuZ2V0U2VsZWN0b3JPcHRpb25zKGxvY2FsU2VsZWN0b3JPcHRpb25zKTtcbiAgY29uc3Qgc2VsZWN0b3JzVG9BcHBseSA9IGdldFNlbGVjdG9yc1RvQXBwbHkoXG4gICAgc2VsZWN0b3JzLFxuICAgIHNlbGVjdG9yT3B0aW9ucyxcbiAgICBzZWxlY3Rvck1ldGFEYXRhLmNvbnRhaW5lckNsYXNzXG4gICk7XG5cbiAgY29uc3QgYXJndW1lbnRTZWxlY3RvckZ1bmN0aW9ucyA9IHNlbGVjdG9yc1RvQXBwbHkubWFwKHNlbGVjdG9yID0+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gZ2V0Um9vdFNlbGVjdG9yRmFjdG9yeShzZWxlY3Rvcik7XG4gICAgcmV0dXJuIGZhY3RvcnkoY29udGV4dCk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHNlbGVjdG9yT3B0aW9ucyxcbiAgICBhcmd1bWVudFNlbGVjdG9yRnVuY3Rpb25zXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldExvY2FsU2VsZWN0b3JPcHRpb25zKFxuICBzZWxlY3Rvck1ldGFEYXRhOiBTZWxlY3Rvck1ldGFEYXRhTW9kZWwsXG4gIGV4cGxpY2l0T3B0aW9uczogU2hhcmVkU2VsZWN0b3JPcHRpb25zXG4pOiBTaGFyZWRTZWxlY3Rvck9wdGlvbnMge1xuICByZXR1cm4ge1xuICAgIC4uLihzZWxlY3Rvck9wdGlvbnNNZXRhQWNjZXNzb3IuZ2V0T3B0aW9ucyhzZWxlY3Rvck1ldGFEYXRhLmNvbnRhaW5lckNsYXNzKSB8fCB7fSksXG4gICAgLi4uKHNlbGVjdG9yT3B0aW9uc01ldGFBY2Nlc3Nvci5nZXRPcHRpb25zKHNlbGVjdG9yTWV0YURhdGEub3JpZ2luYWxGbikgfHwge30pLFxuICAgIC4uLihzZWxlY3Rvck1ldGFEYXRhLmdldFNlbGVjdG9yT3B0aW9ucygpIHx8IHt9KSxcbiAgICAuLi5leHBsaWNpdE9wdGlvbnNcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VsZWN0b3JzVG9BcHBseShcbiAgc2VsZWN0b3JzOiBhbnlbXSB8IHVuZGVmaW5lZCA9IFtdLFxuICBzZWxlY3Rvck9wdGlvbnM6IFNoYXJlZFNlbGVjdG9yT3B0aW9ucyxcbiAgY29udGFpbmVyQ2xhc3M6IGFueVxuKSB7XG4gIGNvbnN0IHNlbGVjdG9yc1RvQXBwbHkgPSBbXTtcbiAgY29uc3QgY2FuSW5qZWN0Q29udGFpbmVyU3RhdGUgPVxuICAgIHNlbGVjdG9ycy5sZW5ndGggPT09IDAgfHwgc2VsZWN0b3JPcHRpb25zLmluamVjdENvbnRhaW5lclN0YXRlO1xuICBpZiAoY29udGFpbmVyQ2xhc3MgJiYgY2FuSW5qZWN0Q29udGFpbmVyU3RhdGUpIHtcbiAgICAvLyBJZiB3ZSBhcmUgb24gYSBzdGF0ZSBjbGFzcywgYWRkIGl0IGFzIHRoZSBmaXJzdCBzZWxlY3RvciBwYXJhbWV0ZXJcbiAgICBjb25zdCBtZXRhZGF0YSA9IGdldFN0b3JlTWV0YWRhdGEoY29udGFpbmVyQ2xhc3MpO1xuICAgIGlmIChtZXRhZGF0YSkge1xuICAgICAgc2VsZWN0b3JzVG9BcHBseS5wdXNoKGNvbnRhaW5lckNsYXNzKTtcbiAgICB9XG4gIH1cbiAgaWYgKHNlbGVjdG9ycykge1xuICAgIHNlbGVjdG9yc1RvQXBwbHkucHVzaCguLi5zZWxlY3RvcnMpO1xuICB9XG4gIHJldHVybiBzZWxlY3RvcnNUb0FwcGx5O1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgZmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIHNlbGVjdG9yIHRvIGdldCB0aGUgc2VsZWN0ZWQgc2xpY2UgZnJvbSB0aGUgYXBwIHN0YXRlXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290U2VsZWN0b3JGYWN0b3J5KHNlbGVjdG9yOiBhbnkpOiBTZWxlY3RvckZhY3Rvcnkge1xuICBjb25zdCBtZXRhZGF0YSA9IGdldFNlbGVjdG9yTWV0YWRhdGEoc2VsZWN0b3IpIHx8IGdldFN0b3JlTWV0YWRhdGEoc2VsZWN0b3IpO1xuICByZXR1cm4gKG1ldGFkYXRhICYmIG1ldGFkYXRhLm1ha2VSb290U2VsZWN0b3IpIHx8ICgoKSA9PiBzZWxlY3Rvcik7XG59XG4iXX0=