@ngxs/store 3.7.3 → 3.7.4-dev.master-327646e

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 (270) hide show
  1. package/README.md +16 -16
  2. package/bundles/ngxs-store-internals-testing.umd.js +318 -215
  3. package/bundles/ngxs-store-internals-testing.umd.js.map +1 -1
  4. package/bundles/ngxs-store-internals-testing.umd.min.js +1 -1
  5. package/bundles/ngxs-store-internals-testing.umd.min.js.map +1 -1
  6. package/bundles/ngxs-store-internals.umd.js +398 -211
  7. package/bundles/ngxs-store-internals.umd.js.map +1 -1
  8. package/bundles/ngxs-store-internals.umd.min.js +1 -1
  9. package/bundles/ngxs-store-internals.umd.min.js.map +1 -1
  10. package/bundles/ngxs-store-operators.umd.js +311 -310
  11. package/bundles/ngxs-store-operators.umd.js.map +1 -1
  12. package/bundles/ngxs-store-operators.umd.min.js +1 -1
  13. package/bundles/ngxs-store-operators.umd.min.js.map +1 -1
  14. package/bundles/ngxs-store.umd.js +4496 -4519
  15. package/bundles/ngxs-store.umd.js.map +1 -1
  16. package/bundles/ngxs-store.umd.min.js +1 -1
  17. package/bundles/ngxs-store.umd.min.js.map +1 -1
  18. package/esm2015/index.js +13 -13
  19. package/esm2015/internals/angular.js +20 -40
  20. package/esm2015/internals/decorator-injector-adapter.js +204 -0
  21. package/esm2015/internals/index.js +11 -10
  22. package/esm2015/internals/initial-state.js +34 -34
  23. package/esm2015/internals/internal-tokens.js +16 -16
  24. package/esm2015/internals/memoize.js +70 -70
  25. package/esm2015/internals/ngxs-bootstrapper.js +41 -41
  26. package/esm2015/internals/ngxs-store-internals.js +9 -9
  27. package/esm2015/internals/src/symbols.js +14 -14
  28. package/esm2015/internals/symbols.js +14 -14
  29. package/esm2015/internals/testing/fresh-platform.js +110 -71
  30. package/esm2015/internals/testing/helpers/ngxs-test.component.js +22 -22
  31. package/esm2015/internals/testing/helpers/ngxs-test.module.js +24 -24
  32. package/esm2015/internals/testing/index.js +8 -7
  33. package/esm2015/internals/testing/ngxs-store-internals-testing.js +9 -9
  34. package/esm2015/internals/testing/ngxs.setup.js +76 -76
  35. package/esm2015/internals/testing/skip-console-logging.js +62 -0
  36. package/esm2015/internals/testing/symbol.js +29 -29
  37. package/esm2015/ngxs-store.js +23 -27
  38. package/esm2015/operators/append.js +31 -31
  39. package/esm2015/operators/compose.js +24 -24
  40. package/esm2015/operators/iif.js +56 -56
  41. package/esm2015/operators/index.js +18 -18
  42. package/esm2015/operators/insert-item.js +41 -41
  43. package/esm2015/operators/internals.js +5 -5
  44. package/esm2015/operators/ngxs-store-operators.js +8 -8
  45. package/esm2015/operators/patch.js +38 -39
  46. package/esm2015/operators/remove-item.js +34 -34
  47. package/esm2015/operators/update-item.js +54 -52
  48. package/esm2015/operators/utils.js +50 -50
  49. package/esm2015/src/actions/actions.js +39 -39
  50. package/esm2015/src/actions/symbols.js +39 -39
  51. package/esm2015/src/actions-stream.js +138 -140
  52. package/esm2015/src/configs/messages.config.js +79 -87
  53. package/esm2015/src/decorators/action.js +48 -44
  54. package/esm2015/src/decorators/select/select-factory.js +49 -46
  55. package/esm2015/src/decorators/select/select.js +81 -45
  56. package/esm2015/src/decorators/select/symbols.js +94 -50
  57. package/esm2015/src/decorators/selector/selector.js +59 -55
  58. package/esm2015/src/decorators/selector/symbols.js +5 -5
  59. package/esm2015/src/decorators/selector-options.js +34 -34
  60. package/esm2015/src/decorators/state.js +83 -75
  61. package/esm2015/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +103 -96
  62. package/esm2015/src/execution/internal-ngxs-execution-strategy.js +45 -45
  63. package/esm2015/src/execution/noop-ngxs-execution-strategy.js +29 -27
  64. package/esm2015/src/execution/symbols.js +52 -29
  65. package/esm2015/src/internal/dispatcher.js +217 -217
  66. package/esm2015/src/internal/internals.js +493 -489
  67. package/esm2015/src/internal/lifecycle-state-manager.js +129 -129
  68. package/esm2015/src/internal/state-context-factory.js +138 -138
  69. package/esm2015/src/internal/state-factory.js +449 -429
  70. package/esm2015/src/internal/state-operations.js +133 -125
  71. package/esm2015/src/internal/state-operators.js +33 -33
  72. package/esm2015/src/internal/state-stream.js +30 -21
  73. package/esm2015/src/ivy/ivy-enabled-in-dev-mode.js +28 -40
  74. package/esm2015/src/module.js +157 -172
  75. package/esm2015/src/modules/ngxs-feature.module.js +63 -63
  76. package/esm2015/src/modules/ngxs-root.module.js +52 -52
  77. package/esm2015/src/operators/leave-ngxs.js +58 -58
  78. package/esm2015/src/operators/of-action.js +197 -191
  79. package/esm2015/src/plugin-manager.js +70 -70
  80. package/esm2015/src/plugin_api.js +10 -10
  81. package/esm2015/src/public_api.js +29 -29
  82. package/esm2015/src/public_to_deprecate.js +64 -64
  83. package/esm2015/src/state-token/state-token.js +45 -45
  84. package/esm2015/src/state-token/symbols.js +5 -5
  85. package/esm2015/src/store.js +190 -174
  86. package/esm2015/src/symbols.js +220 -221
  87. package/esm2015/src/utils/compose.js +44 -44
  88. package/esm2015/src/utils/freeze.js +35 -35
  89. package/esm2015/src/utils/selector-utils.js +221 -221
  90. package/esm2015/src/utils/store-validators.js +60 -65
  91. package/esm2015/src/utils/utils.js +143 -143
  92. package/esm5/index.js +13 -13
  93. package/esm5/internals/angular.js +20 -40
  94. package/esm5/internals/decorator-injector-adapter.js +204 -0
  95. package/esm5/internals/index.js +11 -10
  96. package/esm5/internals/initial-state.js +45 -45
  97. package/esm5/internals/internal-tokens.js +16 -16
  98. package/esm5/internals/memoize.js +71 -71
  99. package/esm5/internals/ngxs-bootstrapper.js +56 -56
  100. package/esm5/internals/ngxs-store-internals.js +9 -9
  101. package/esm5/internals/src/symbols.js +14 -14
  102. package/esm5/internals/symbols.js +14 -14
  103. package/esm5/internals/testing/fresh-platform.js +121 -81
  104. package/esm5/internals/testing/helpers/ngxs-test.component.js +32 -32
  105. package/esm5/internals/testing/helpers/ngxs-test.module.js +32 -32
  106. package/esm5/internals/testing/index.js +8 -7
  107. package/esm5/internals/testing/ngxs-store-internals-testing.js +9 -9
  108. package/esm5/internals/testing/ngxs.setup.js +98 -98
  109. package/esm5/internals/testing/skip-console-logging.js +62 -0
  110. package/esm5/internals/testing/symbol.js +29 -29
  111. package/esm5/ngxs-store.js +23 -27
  112. package/esm5/operators/append.js +31 -31
  113. package/esm5/operators/compose.js +28 -28
  114. package/esm5/operators/iif.js +56 -56
  115. package/esm5/operators/index.js +18 -18
  116. package/esm5/operators/insert-item.js +41 -41
  117. package/esm5/operators/internals.js +5 -5
  118. package/esm5/operators/ngxs-store-operators.js +8 -8
  119. package/esm5/operators/patch.js +39 -40
  120. package/esm5/operators/remove-item.js +34 -34
  121. package/esm5/operators/update-item.js +54 -52
  122. package/esm5/operators/utils.js +50 -50
  123. package/esm5/src/actions/actions.js +62 -62
  124. package/esm5/src/actions/symbols.js +39 -39
  125. package/esm5/src/actions-stream.js +184 -186
  126. package/esm5/src/configs/messages.config.js +79 -104
  127. package/esm5/src/decorators/action.js +60 -56
  128. package/esm5/src/decorators/select/select-factory.js +50 -47
  129. package/esm5/src/decorators/select/select.js +87 -50
  130. package/esm5/src/decorators/select/symbols.js +95 -51
  131. package/esm5/src/decorators/selector/selector.js +59 -55
  132. package/esm5/src/decorators/selector/symbols.js +5 -5
  133. package/esm5/src/decorators/selector-options.js +34 -34
  134. package/esm5/src/decorators/state.js +84 -76
  135. package/esm5/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +123 -121
  136. package/esm5/src/execution/internal-ngxs-execution-strategy.js +54 -54
  137. package/esm5/src/execution/noop-ngxs-execution-strategy.js +43 -41
  138. package/esm5/src/execution/symbols.js +52 -29
  139. package/esm5/src/internal/dispatcher.js +253 -253
  140. package/esm5/src/internal/internals.js +495 -491
  141. package/esm5/src/internal/lifecycle-state-manager.js +177 -177
  142. package/esm5/src/internal/state-context-factory.js +146 -146
  143. package/esm5/src/internal/state-factory.js +575 -563
  144. package/esm5/src/internal/state-operations.js +143 -139
  145. package/esm5/src/internal/state-operators.js +34 -34
  146. package/esm5/src/internal/state-stream.js +37 -25
  147. package/esm5/src/ivy/ivy-enabled-in-dev-mode.js +28 -40
  148. package/esm5/src/module.js +200 -215
  149. package/esm5/src/modules/ngxs-feature.module.js +65 -65
  150. package/esm5/src/modules/ngxs-root.module.js +47 -47
  151. package/esm5/src/operators/leave-ngxs.js +58 -58
  152. package/esm5/src/operators/of-action.js +223 -217
  153. package/esm5/src/plugin-manager.js +82 -82
  154. package/esm5/src/plugin_api.js +10 -10
  155. package/esm5/src/public_api.js +29 -29
  156. package/esm5/src/public_to_deprecate.js +64 -64
  157. package/esm5/src/state-token/state-token.js +57 -57
  158. package/esm5/src/state-token/symbols.js +5 -5
  159. package/esm5/src/store.js +241 -225
  160. package/esm5/src/symbols.js +229 -230
  161. package/esm5/src/utils/compose.js +55 -55
  162. package/esm5/src/utils/freeze.js +35 -35
  163. package/esm5/src/utils/selector-utils.js +230 -230
  164. package/esm5/src/utils/store-validators.js +78 -86
  165. package/esm5/src/utils/utils.js +151 -151
  166. package/fesm2015/ngxs-store-internals-testing.js +278 -177
  167. package/fesm2015/ngxs-store-internals-testing.js.map +1 -1
  168. package/fesm2015/ngxs-store-internals.js +378 -194
  169. package/fesm2015/ngxs-store-internals.js.map +1 -1
  170. package/fesm2015/ngxs-store-operators.js +313 -312
  171. package/fesm2015/ngxs-store-operators.js.map +1 -1
  172. package/fesm2015/ngxs-store.js +3999 -3979
  173. package/fesm2015/ngxs-store.js.map +1 -1
  174. package/fesm5/ngxs-store-internals-testing.js +325 -223
  175. package/fesm5/ngxs-store-internals-testing.js.map +1 -1
  176. package/fesm5/ngxs-store-internals.js +403 -219
  177. package/fesm5/ngxs-store-internals.js.map +1 -1
  178. package/fesm5/ngxs-store-operators.js +317 -316
  179. package/fesm5/ngxs-store-operators.js.map +1 -1
  180. package/fesm5/ngxs-store.js +4494 -4512
  181. package/fesm5/ngxs-store.js.map +1 -1
  182. package/index.d.ts +8 -8
  183. package/internals/angular.d.ts +1 -3
  184. package/internals/decorator-injector-adapter.d.ts +15 -0
  185. package/internals/index.d.ts +7 -6
  186. package/internals/initial-state.d.ts +8 -8
  187. package/internals/internal-tokens.d.ts +9 -9
  188. package/internals/memoize.d.ts +9 -9
  189. package/internals/ngxs-bootstrapper.d.ts +13 -13
  190. package/internals/ngxs-store-internals.d.ts +4 -4
  191. package/internals/ngxs-store-internals.metadata.json +1 -1
  192. package/internals/src/symbols.d.ts +7 -7
  193. package/internals/symbols.d.ts +7 -7
  194. package/internals/testing/fresh-platform.d.ts +1 -1
  195. package/internals/testing/helpers/ngxs-test.component.d.ts +5 -5
  196. package/internals/testing/helpers/ngxs-test.module.d.ts +4 -4
  197. package/internals/testing/index.d.ts +4 -3
  198. package/internals/testing/ngxs-store-internals-testing.d.ts +4 -4
  199. package/internals/testing/ngxs-store-internals-testing.metadata.json +1 -1
  200. package/internals/testing/ngxs.setup.d.ts +7 -7
  201. package/internals/testing/skip-console-logging.d.ts +1 -0
  202. package/internals/testing/symbol.d.ts +14 -14
  203. package/ngxs-store.d.ts +19 -23
  204. package/ngxs-store.metadata.json +1 -1
  205. package/operators/append.d.ts +6 -6
  206. package/operators/compose.d.ts +3 -2
  207. package/operators/iif.d.ts +11 -11
  208. package/operators/index.d.ts +13 -13
  209. package/operators/insert-item.d.ts +7 -7
  210. package/operators/internals.d.ts +2 -2
  211. package/operators/ngxs-store-operators.d.ts +4 -4
  212. package/operators/ngxs-store-operators.metadata.json +1 -1
  213. package/operators/patch.d.ts +6 -10
  214. package/operators/remove-item.d.ts +7 -7
  215. package/operators/update-item.d.ts +10 -10
  216. package/operators/utils.d.ts +10 -9
  217. package/package.json +3 -3
  218. package/src/actions/actions.d.ts +15 -15
  219. package/src/actions/symbols.d.ts +21 -21
  220. package/src/actions-stream.d.ts +49 -49
  221. package/src/configs/messages.config.d.ts +11 -30
  222. package/src/decorators/action.d.ts +5 -5
  223. package/src/decorators/select/select-factory.d.ts +13 -14
  224. package/src/decorators/select/select.d.ts +4 -4
  225. package/src/decorators/select/symbols.d.ts +14 -10
  226. package/src/decorators/selector/selector.d.ts +5 -5
  227. package/src/decorators/selector/symbols.d.ts +4 -4
  228. package/src/decorators/selector-options.d.ts +5 -5
  229. package/src/decorators/state.d.ts +6 -6
  230. package/src/execution/dispatch-outside-zone-ngxs-execution-strategy.d.ts +11 -12
  231. package/src/execution/internal-ngxs-execution-strategy.d.ts +7 -7
  232. package/src/execution/noop-ngxs-execution-strategy.d.ts +5 -5
  233. package/src/execution/symbols.d.ts +10 -6
  234. package/src/internal/dispatcher.d.ts +32 -32
  235. package/src/internal/internals.d.ts +166 -167
  236. package/src/internal/lifecycle-state-manager.d.ts +20 -20
  237. package/src/internal/state-context-factory.d.ts +15 -15
  238. package/src/internal/state-factory.d.ts +57 -58
  239. package/src/internal/state-operations.d.ts +19 -21
  240. package/src/internal/state-operators.d.ts +2 -2
  241. package/src/internal/state-stream.d.ts +11 -9
  242. package/src/ivy/ivy-enabled-in-dev-mode.d.ts +6 -14
  243. package/src/module.d.ts +23 -23
  244. package/src/modules/ngxs-feature.module.d.ts +13 -13
  245. package/src/modules/ngxs-root.module.d.ts +13 -13
  246. package/src/operators/leave-ngxs.d.ts +7 -7
  247. package/src/operators/of-action.d.ts +56 -43
  248. package/src/plugin-manager.d.ts +10 -10
  249. package/src/plugin_api.d.ts +5 -5
  250. package/src/public_api.d.ts +17 -17
  251. package/src/public_to_deprecate.d.ts +21 -21
  252. package/src/state-token/state-token.d.ts +7 -7
  253. package/src/state-token/symbols.d.ts +5 -5
  254. package/src/store.d.ts +59 -53
  255. package/src/symbols.d.ts +138 -137
  256. package/src/utils/compose.d.ts +23 -23
  257. package/src/utils/freeze.d.ts +5 -5
  258. package/src/utils/selector-utils.d.ts +23 -23
  259. package/src/utils/store-validators.d.ts +7 -8
  260. package/src/utils/utils.d.ts +46 -46
  261. package/types/index.d.ts +2 -2
  262. package/esm2015/src/host-environment/host-environment.js +0 -31
  263. package/esm2015/src/internal/config-validator.js +0 -67
  264. package/esm2015/src/ivy/ensure-state-class-is-injectable.js +0 -34
  265. package/esm5/src/host-environment/host-environment.js +0 -29
  266. package/esm5/src/internal/config-validator.js +0 -76
  267. package/esm5/src/ivy/ensure-state-class-is-injectable.js +0 -34
  268. package/src/host-environment/host-environment.d.ts +0 -6
  269. package/src/internal/config-validator.d.ts +0 -10
  270. package/src/ivy/ensure-state-class-is-injectable.d.ts +0 -6
@@ -1,174 +1,190 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- // tslint:disable:unified-signatures
6
- import { Inject, Injectable, Optional } from '@angular/core';
7
- import { of, throwError } from 'rxjs';
8
- import { catchError, distinctUntilChanged, map, take } from 'rxjs/operators';
9
- import { INITIAL_STATE_TOKEN } from '@ngxs/store/internals';
10
- import { InternalNgxsExecutionStrategy } from './execution/internal-ngxs-execution-strategy';
11
- import { InternalStateOperations } from './internal/state-operations';
12
- import { getRootSelectorFactory } from './utils/selector-utils';
13
- import { StateStream } from './internal/state-stream';
14
- import { leaveNgxs } from './operators/leave-ngxs';
15
- import { NgxsConfig } from './symbols';
16
- import { StateFactory } from './internal/state-factory';
17
- export class Store {
18
- /**
19
- * @param {?} _stateStream
20
- * @param {?} _internalStateOperations
21
- * @param {?} _config
22
- * @param {?} _internalExecutionStrategy
23
- * @param {?} _stateFactory
24
- * @param {?} initialStateValue
25
- */
26
- constructor(_stateStream, _internalStateOperations, _config, _internalExecutionStrategy, _stateFactory, initialStateValue) {
27
- this._stateStream = _stateStream;
28
- this._internalStateOperations = _internalStateOperations;
29
- this._config = _config;
30
- this._internalExecutionStrategy = _internalExecutionStrategy;
31
- this._stateFactory = _stateFactory;
32
- this.initStateStream(initialStateValue);
33
- }
34
- /**
35
- * Dispatches event(s).
36
- * @param {?} actionOrActions
37
- * @return {?}
38
- */
39
- dispatch(actionOrActions) {
40
- return this._internalStateOperations.getRootStateOperations().dispatch(actionOrActions);
41
- }
42
- /**
43
- * @param {?} selector
44
- * @return {?}
45
- */
46
- select(selector) {
47
- /** @type {?} */
48
- const selectorFn = this.getStoreBoundSelectorFn(selector);
49
- return this._stateStream.pipe(map(selectorFn), catchError((/**
50
- * @param {?} err
51
- * @return {?}
52
- */
53
- (err) => {
54
- // if error is TypeError we swallow it to prevent usual errors with property access
55
- const { suppressErrors } = this._config.selectorOptions;
56
- if (err instanceof TypeError && suppressErrors) {
57
- return of(undefined);
58
- }
59
- // rethrow other errors
60
- return throwError(err);
61
- })), distinctUntilChanged(), leaveNgxs(this._internalExecutionStrategy));
62
- }
63
- /**
64
- * @param {?} selector
65
- * @return {?}
66
- */
67
- selectOnce(selector) {
68
- return this.select(selector).pipe(take(1));
69
- }
70
- /**
71
- * @param {?} selector
72
- * @return {?}
73
- */
74
- selectSnapshot(selector) {
75
- /** @type {?} */
76
- const selectorFn = this.getStoreBoundSelectorFn(selector);
77
- return selectorFn(this._stateStream.getValue());
78
- }
79
- /**
80
- * Allow the user to subscribe to the root of the state
81
- * @param {?=} fn
82
- * @return {?}
83
- */
84
- subscribe(fn) {
85
- return this._stateStream.pipe(leaveNgxs(this._internalExecutionStrategy)).subscribe(fn);
86
- }
87
- /**
88
- * Return the raw value of the state.
89
- * @return {?}
90
- */
91
- snapshot() {
92
- return this._internalStateOperations.getRootStateOperations().getState();
93
- }
94
- /**
95
- * Reset the state to a specific point in time. This method is useful
96
- * for plugin's who need to modify the state directly or unit testing.
97
- * @param {?} state
98
- * @return {?}
99
- */
100
- reset(state) {
101
- return this._internalStateOperations.getRootStateOperations().setState(state);
102
- }
103
- /**
104
- * @private
105
- * @param {?} selector
106
- * @return {?}
107
- */
108
- getStoreBoundSelectorFn(selector) {
109
- /** @type {?} */
110
- const makeSelectorFn = getRootSelectorFactory(selector);
111
- /** @type {?} */
112
- const runtimeContext = this._stateFactory.getRuntimeSelectorContext();
113
- return makeSelectorFn(runtimeContext);
114
- }
115
- /**
116
- * @private
117
- * @param {?} initialStateValue
118
- * @return {?}
119
- */
120
- initStateStream(initialStateValue) {
121
- /** @type {?} */
122
- const value = this._stateStream.value;
123
- /** @type {?} */
124
- const storeIsEmpty = !value || Object.keys(value).length === 0;
125
- if (storeIsEmpty) {
126
- /** @type {?} */
127
- const defaultStateNotEmpty = Object.keys(this._config.defaultsState).length > 0;
128
- /** @type {?} */
129
- const storeValues = defaultStateNotEmpty
130
- ? Object.assign({}, this._config.defaultsState, initialStateValue) : initialStateValue;
131
- this._stateStream.next(storeValues);
132
- }
133
- }
134
- }
135
- Store.decorators = [
136
- { type: Injectable }
137
- ];
138
- /** @nocollapse */
139
- Store.ctorParameters = () => [
140
- { type: StateStream },
141
- { type: InternalStateOperations },
142
- { type: NgxsConfig },
143
- { type: InternalNgxsExecutionStrategy },
144
- { type: StateFactory },
145
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [INITIAL_STATE_TOKEN,] }] }
146
- ];
147
- if (false) {
148
- /**
149
- * @type {?}
150
- * @private
151
- */
152
- Store.prototype._stateStream;
153
- /**
154
- * @type {?}
155
- * @private
156
- */
157
- Store.prototype._internalStateOperations;
158
- /**
159
- * @type {?}
160
- * @private
161
- */
162
- Store.prototype._config;
163
- /**
164
- * @type {?}
165
- * @private
166
- */
167
- Store.prototype._internalExecutionStrategy;
168
- /**
169
- * @type {?}
170
- * @private
171
- */
172
- Store.prototype._stateFactory;
173
- }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQWMsRUFBRSxFQUFnQixVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDN0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd4RCxNQUFNLE9BQU8sS0FBSzs7Ozs7Ozs7O0lBQ2hCLFlBQ1UsWUFBeUIsRUFDekIsd0JBQWlELEVBQ2pELE9BQW1CLEVBQ25CLDBCQUF5RCxFQUN6RCxhQUEyQixFQUduQyxpQkFBc0I7UUFQZCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUErQjtRQUN6RCxrQkFBYSxHQUFiLGFB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QUFXLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7OztZQTdHRixVQUFVOzs7O1lBTkYsV0FBVztZQUZYLHVCQUF1QjtZQUl2QixVQUFVO1lBTFYsNkJBQTZCO1lBTzdCLFlBQVk7NENBVWhCLFFBQVEsWUFDUixNQUFNLFNBQUMsbUJBQW1COzs7Ozs7O0lBTjNCLDZCQUFpQzs7Ozs7SUFDakMseUNBQXlEOzs7OztJQUN6RCx3QkFBMkI7Ozs7O0lBQzNCLDJDQUFpRTs7Ozs7SUFDakUsOEJBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6dW5pZmllZC1zaWduYXR1cmVzXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBJTklUSUFMX1NUQVRFX1RPS0VOLCBQbGFpbk9iamVjdCB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XHJcblxyXG5pbXBvcnQgeyBJbnRlcm5hbE5neHNFeGVjdXRpb25TdHJhdGVneSB9IGZyb20gJy4vZXhlY3V0aW9uL2ludGVybmFsLW5neHMtZXhlY3V0aW9uLXN0cmF0ZWd5JztcclxuaW1wb3J0IHsgSW50ZXJuYWxTdGF0ZU9wZXJhdGlvbnMgfSBmcm9tICcuL2ludGVybmFsL3N0YXRlLW9wZXJhdGlvbnMnO1xyXG5pbXBvcnQgeyBnZXRSb290U2VsZWN0b3JGYWN0b3J5IH0gZnJvbSAnLi91dGlscy9zZWxlY3Rvci11dGlscyc7XHJcbmltcG9ydCB7IFN0YXRlU3RyZWFtIH0gZnJvbSAnLi9pbnRlcm5hbC9zdGF0ZS1zdHJlYW0nO1xyXG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuL29wZXJhdG9ycy9sZWF2ZS1uZ3hzJztcclxuaW1wb3J0IHsgTmd4c0NvbmZpZyB9IGZyb20gJy4vc3ltYm9scyc7XHJcbmltcG9ydCB7IFN0YXRlVG9rZW4gfSBmcm9tICcuL3N0YXRlLXRva2VuL3N0YXRlLXRva2VuJztcclxuaW1wb3J0IHsgU3RhdGVGYWN0b3J5IH0gZnJvbSAnLi9pbnRlcm5hbC9zdGF0ZS1mYWN0b3J5JztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN0b3JlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3N0YXRlU3RyZWFtOiBTdGF0ZVN0cmVhbSxcclxuICAgIHByaXZhdGUgX2ludGVybmFsU3RhdGVPcGVyYXRpb25zOiBJbnRlcm5hbFN0YXRlT3BlcmF0aW9ucyxcclxuICAgIHByaXZhdGUgX2NvbmZpZzogTmd4c0NvbmZpZyxcclxuICAgIHByaXZhdGUgX2ludGVybmFsRXhlY3V0aW9uU3RyYXRlZ3k6IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5LFxyXG4gICAgcHJpdmF0ZSBfc3RhdGVGYWN0b3J5OiBTdGF0ZUZhY3RvcnksXHJcbiAgICBAT3B0aW9uYWwoKVxyXG4gICAgQEluamVjdChJTklUSUFMX1NUQVRFX1RPS0VOKVxyXG4gICAgaW5pdGlhbFN0YXRlVmFsdWU6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0U3RhdGVTdHJlYW0oaW5pdGlhbFN0YXRlVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGF0Y2hlcyBldmVudChzKS5cclxuICAgKi9cclxuICBkaXNwYXRjaChhY3Rpb25PckFjdGlvbnM6IGFueSB8IGFueVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlT3BlcmF0aW9ucy5nZXRSb290U3RhdGVPcGVyYXRpb25zKCkuZGlzcGF0Y2goYWN0aW9uT3JBY3Rpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgYSBzbGljZSBvZiBkYXRhIGZyb20gdGhlIHN0b3JlLlxyXG4gICAqL1xyXG4gIHNlbGVjdDxUPihzZWxlY3RvcjogKHN0YXRlOiBhbnksIC4uLnN0YXRlczogYW55W10pID0+IFQpOiBPYnNlcnZhYmxlPFQ+O1xyXG4gIHNlbGVjdDxUID0gYW55PihzZWxlY3Rvcjogc3RyaW5nIHwgVHlwZTxhbnk+KTogT2JzZXJ2YWJsZTxUPjtcclxuICBzZWxlY3Q8VD4oc2VsZWN0b3I6IFN0YXRlVG9rZW48VD4pOiBPYnNlcnZhYmxlPFQ+O1xyXG4gIHNlbGVjdChzZWxlY3RvcjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHNlbGVjdG9yRm4gPSB0aGlzLmdldFN0b3JlQm91bmRTZWxlY3RvckZuKHNlbGVjdG9yKTtcclxuICAgIHJldHVybiB0aGlzLl9zdGF0ZVN0cmVhbS5waXBlKFxyXG4gICAgICBtYXAoc2VsZWN0b3JGbiksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogRXJyb3IpOiBPYnNlcnZhYmxlPG5ldmVyPiB8IE9ic2VydmFibGU8dW5kZWZpbmVkPiA9PiB7XHJcbiAgICAgICAgLy8gaWYgZXJyb3IgaXMgVHlwZUVycm9yIHdlIHN3YWxsb3cgaXQgdG8gcHJldmVudCB1c3VhbCBlcnJvcnMgd2l0aCBwcm9wZXJ0eSBhY2Nlc3NcclxuICAgICAgICBjb25zdCB7IHN1cHByZXNzRXJyb3JzIH0gPSB0aGlzLl9jb25maWcuc2VsZWN0b3JPcHRpb25zO1xyXG5cclxuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVHlwZUVycm9yICYmIHN1cHByZXNzRXJyb3JzKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHJldGhyb3cgb3RoZXIgZXJyb3JzXHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcclxuICAgICAgfSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIGxlYXZlTmd4cyh0aGlzLl9pbnRlcm5hbEV4ZWN1dGlvblN0cmF0ZWd5KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBvbmUgc2xpY2Ugb2YgZGF0YSBmcm9tIHRoZSBzdG9yZS5cclxuICAgKi9cclxuXHJcbiAgc2VsZWN0T25jZTxUPihzZWxlY3RvcjogKHN0YXRlOiBhbnksIC4uLnN0YXRlczogYW55W10pID0+IFQpOiBPYnNlcnZhYmxlPFQ+O1xyXG4gIHNlbGVjdE9uY2U8VCA9IGFueT4oc2VsZWN0b3I6IHN0cmluZyB8IFR5cGU8YW55Pik6IE9ic2VydmFibGU8VD47XHJcbiAgc2VsZWN0T25jZTxUPihzZWxlY3RvcjogU3RhdGVUb2tlbjxUPik6IE9ic2VydmFibGU8VD47XHJcbiAgc2VsZWN0T25jZShzZWxlY3RvcjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdChzZWxlY3RvcikucGlwZSh0YWtlKDEpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBhIHNuYXBzaG90IGZyb20gdGhlIHN0YXRlLlxyXG4gICAqL1xyXG4gIHNlbGVjdFNuYXBzaG90PFQ+KHNlbGVjdG9yOiAoc3RhdGU6IGFueSwgLi4uc3RhdGVzOiBhbnlbXSkgPT4gVCk6IFQ7XHJcbiAgc2VsZWN0U25hcHNob3Q8VCA9IGFueT4oc2VsZWN0b3I6IHN0cmluZyB8IFR5cGU8YW55Pik6IFQ7XHJcbiAgc2VsZWN0U25hcHNob3Q8VD4oc2VsZWN0b3I6IFN0YXRlVG9rZW48VD4pOiBUO1xyXG4gIHNlbGVjdFNuYXBzaG90KHNlbGVjdG9yOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3Qgc2VsZWN0b3JGbiA9IHRoaXMuZ2V0U3RvcmVCb3VuZFNlbGVjdG9yRm4oc2VsZWN0b3IpO1xyXG4gICAgcmV0dXJuIHNlbGVjdG9yRm4odGhpcy5fc3RhdGVTdHJlYW0uZ2V0VmFsdWUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvdyB0aGUgdXNlciB0byBzdWJzY3JpYmUgdG8gdGhlIHJvb3Qgb2YgdGhlIHN0YXRlXHJcbiAgICovXHJcbiAgc3Vic2NyaWJlKGZuPzogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiBTdWJzY3JpcHRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlU3RyZWFtLnBpcGUobGVhdmVOZ3hzKHRoaXMuX2ludGVybmFsRXhlY3V0aW9uU3RyYXRlZ3kpKS5zdWJzY3JpYmUoZm4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSByYXcgdmFsdWUgb2YgdGhlIHN0YXRlLlxyXG4gICAqL1xyXG4gIHNuYXBzaG90KCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxTdGF0ZU9wZXJhdGlvbnMuZ2V0Um9vdFN0YXRlT3BlcmF0aW9ucygpLmdldFN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCB0aGUgc3RhdGUgdG8gYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWxcclxuICAgKiBmb3IgcGx1Z2luJ3Mgd2hvIG5lZWQgdG8gbW9kaWZ5IHRoZSBzdGF0ZSBkaXJlY3RseSBvciB1bml0IHRlc3RpbmcuXHJcbiAgICovXHJcbiAgcmVzZXQoc3RhdGU6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ludGVybmFsU3RhdGVPcGVyYXRpb25zLmdldFJvb3RTdGF0ZU9wZXJhdGlvbnMoKS5zZXRTdGF0ZShzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFN0b3JlQm91bmRTZWxlY3RvckZuKHNlbGVjdG9yOiBhbnkpIHtcclxuICAgIGNvbnN0IG1ha2VTZWxlY3RvckZuID0gZ2V0Um9vdFNlbGVjdG9yRmFjdG9yeShzZWxlY3Rvcik7XHJcbiAgICBjb25zdCBydW50aW1lQ29udGV4dCA9IHRoaXMuX3N0YXRlRmFjdG9yeS5nZXRSdW50aW1lU2VsZWN0b3JDb250ZXh0KCk7XHJcbiAgICByZXR1cm4gbWFrZVNlbGVjdG9yRm4ocnVudGltZUNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0U3RhdGVTdHJlYW0oaW5pdGlhbFN0YXRlVmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWU6IFBsYWluT2JqZWN0ID0gdGhpcy5fc3RhdGVTdHJlYW0udmFsdWU7XHJcbiAgICBjb25zdCBzdG9yZUlzRW1wdHk6IGJvb2xlYW4gPSAhdmFsdWUgfHwgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMDtcclxuICAgIGlmIChzdG9yZUlzRW1wdHkpIHtcclxuICAgICAgY29uc3QgZGVmYXVsdFN0YXRlTm90RW1wdHk6IGJvb2xlYW4gPSBPYmplY3Qua2V5cyh0aGlzLl9jb25maWcuZGVmYXVsdHNTdGF0ZSkubGVuZ3RoID4gMDtcclxuICAgICAgY29uc3Qgc3RvcmVWYWx1ZXM6IFBsYWluT2JqZWN0ID0gZGVmYXVsdFN0YXRlTm90RW1wdHlcclxuICAgICAgICA/IHsgLi4udGhpcy5fY29uZmlnLmRlZmF1bHRzU3RhdGUsIC4uLmluaXRpYWxTdGF0ZVZhbHVlIH1cclxuICAgICAgICA6IGluaXRpYWxTdGF0ZVZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5fc3RhdGVTdHJlYW0ubmV4dChzdG9yZVZhbHVlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ // tslint:disable:unified-signatures
6
+ import { Inject, Injectable, Optional } from '@angular/core';
7
+ import { of, throwError } from 'rxjs';
8
+ import { catchError, distinctUntilChanged, map, publishReplay, refCount, take } from 'rxjs/operators';
9
+ import { INITIAL_STATE_TOKEN } from '@ngxs/store/internals';
10
+ import { InternalNgxsExecutionStrategy } from './execution/internal-ngxs-execution-strategy';
11
+ import { InternalStateOperations } from './internal/state-operations';
12
+ import { getRootSelectorFactory } from './utils/selector-utils';
13
+ import { StateStream } from './internal/state-stream';
14
+ import { leaveNgxs } from './operators/leave-ngxs';
15
+ import { NgxsConfig } from './symbols';
16
+ import { StateFactory } from './internal/state-factory';
17
+ export class Store {
18
+ /**
19
+ * @param {?} _stateStream
20
+ * @param {?} _internalStateOperations
21
+ * @param {?} _config
22
+ * @param {?} _internalExecutionStrategy
23
+ * @param {?} _stateFactory
24
+ * @param {?} initialStateValue
25
+ */
26
+ constructor(_stateStream, _internalStateOperations, _config, _internalExecutionStrategy, _stateFactory, initialStateValue) {
27
+ this._stateStream = _stateStream;
28
+ this._internalStateOperations = _internalStateOperations;
29
+ this._config = _config;
30
+ this._internalExecutionStrategy = _internalExecutionStrategy;
31
+ this._stateFactory = _stateFactory;
32
+ /**
33
+ * This is a derived state stream that leaves NGXS execution strategy to emit state changes within the Angular zone,
34
+ * because state is being changed actually within the `<root>` zone, see `InternalDispatcher#dispatchSingle`.
35
+ * All selects would use this stream, and it would call leave only once for any state change across all active selectors.
36
+ */
37
+ this._selectableStateStream = this._stateStream.pipe(leaveNgxs(this._internalExecutionStrategy), publishReplay(1), refCount());
38
+ this.initStateStream(initialStateValue);
39
+ }
40
+ /**
41
+ * Dispatches event(s).
42
+ * @param {?} actionOrActions
43
+ * @return {?}
44
+ */
45
+ dispatch(actionOrActions) {
46
+ return this._internalStateOperations.getRootStateOperations().dispatch(actionOrActions);
47
+ }
48
+ /**
49
+ * @param {?} selector
50
+ * @return {?}
51
+ */
52
+ select(selector) {
53
+ /** @type {?} */
54
+ const selectorFn = this.getStoreBoundSelectorFn(selector);
55
+ return this._selectableStateStream.pipe(map(selectorFn), catchError((/**
56
+ * @param {?} err
57
+ * @return {?}
58
+ */
59
+ (err) => {
60
+ // if error is TypeError we swallow it to prevent usual errors with property access
61
+ const { suppressErrors } = this._config.selectorOptions;
62
+ if (err instanceof TypeError && suppressErrors) {
63
+ return of(undefined);
64
+ }
65
+ // rethrow other errors
66
+ return throwError(err);
67
+ })), distinctUntilChanged(), leaveNgxs(this._internalExecutionStrategy));
68
+ }
69
+ /**
70
+ * @param {?} selector
71
+ * @return {?}
72
+ */
73
+ selectOnce(selector) {
74
+ return this.select(selector).pipe(take(1));
75
+ }
76
+ /**
77
+ * @param {?} selector
78
+ * @return {?}
79
+ */
80
+ selectSnapshot(selector) {
81
+ /** @type {?} */
82
+ const selectorFn = this.getStoreBoundSelectorFn(selector);
83
+ return selectorFn(this._stateStream.getValue());
84
+ }
85
+ /**
86
+ * Allow the user to subscribe to the root of the state
87
+ * @param {?=} fn
88
+ * @return {?}
89
+ */
90
+ subscribe(fn) {
91
+ return this._selectableStateStream
92
+ .pipe(leaveNgxs(this._internalExecutionStrategy))
93
+ .subscribe(fn);
94
+ }
95
+ /**
96
+ * Return the raw value of the state.
97
+ * @return {?}
98
+ */
99
+ snapshot() {
100
+ return this._internalStateOperations.getRootStateOperations().getState();
101
+ }
102
+ /**
103
+ * Reset the state to a specific point in time. This method is useful
104
+ * for plugin's who need to modify the state directly or unit testing.
105
+ * @param {?} state
106
+ * @return {?}
107
+ */
108
+ reset(state) {
109
+ return this._internalStateOperations.getRootStateOperations().setState(state);
110
+ }
111
+ /**
112
+ * @private
113
+ * @param {?} selector
114
+ * @return {?}
115
+ */
116
+ getStoreBoundSelectorFn(selector) {
117
+ /** @type {?} */
118
+ const makeSelectorFn = getRootSelectorFactory(selector);
119
+ /** @type {?} */
120
+ const runtimeContext = this._stateFactory.getRuntimeSelectorContext();
121
+ return makeSelectorFn(runtimeContext);
122
+ }
123
+ /**
124
+ * @private
125
+ * @param {?} initialStateValue
126
+ * @return {?}
127
+ */
128
+ initStateStream(initialStateValue) {
129
+ /** @type {?} */
130
+ const value = this._stateStream.value;
131
+ /** @type {?} */
132
+ const storeIsEmpty = !value || Object.keys(value).length === 0;
133
+ if (storeIsEmpty) {
134
+ /** @type {?} */
135
+ const defaultStateNotEmpty = Object.keys(this._config.defaultsState).length > 0;
136
+ /** @type {?} */
137
+ const storeValues = defaultStateNotEmpty
138
+ ? Object.assign({}, this._config.defaultsState, initialStateValue) : initialStateValue;
139
+ this._stateStream.next(storeValues);
140
+ }
141
+ }
142
+ }
143
+ Store.decorators = [
144
+ { type: Injectable }
145
+ ];
146
+ /** @nocollapse */
147
+ Store.ctorParameters = () => [
148
+ { type: StateStream },
149
+ { type: InternalStateOperations },
150
+ { type: NgxsConfig },
151
+ { type: InternalNgxsExecutionStrategy },
152
+ { type: StateFactory },
153
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [INITIAL_STATE_TOKEN,] }] }
154
+ ];
155
+ if (false) {
156
+ /**
157
+ * This is a derived state stream that leaves NGXS execution strategy to emit state changes within the Angular zone,
158
+ * because state is being changed actually within the `<root>` zone, see `InternalDispatcher#dispatchSingle`.
159
+ * All selects would use this stream, and it would call leave only once for any state change across all active selectors.
160
+ * @type {?}
161
+ * @private
162
+ */
163
+ Store.prototype._selectableStateStream;
164
+ /**
165
+ * @type {?}
166
+ * @private
167
+ */
168
+ Store.prototype._stateStream;
169
+ /**
170
+ * @type {?}
171
+ * @private
172
+ */
173
+ Store.prototype._internalStateOperations;
174
+ /**
175
+ * @type {?}
176
+ * @private
177
+ */
178
+ Store.prototype._config;
179
+ /**
180
+ * @type {?}
181
+ * @private
182
+ */
183
+ Store.prototype._internalExecutionStrategy;
184
+ /**
185
+ * @type {?}
186
+ * @private
187
+ */
188
+ Store.prototype._stateFactory;
189
+ }
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQWMsRUFBRSxFQUFnQixVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUNMLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILGFBQWEsRUFDYixRQUFRLEVBQ1IsSUFBSSxFQUNMLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDN0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd4RCxNQUFNLE9BQU8sS0FBSzs7Ozs7Ozs7O0lBWWhCLFlBQ1UsWUFBeUIsRUFDekIsd0JBQWlELEVBQ2pELE9BQW1CLEVBQ25CLDBCQUF5RCxFQUN6RCxhQUEyQixFQUduQyxpQkFBc0I7UUFQZCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN6Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUEr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QUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQzs7a0JBQ2xGLFdBQVcsR0FBZ0Isb0JBQW9CO2dCQUNuRCxDQUFDLG1CQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFLLGlCQUFpQixFQUN2RCxDQUFDLENBQUMsaUJBQWlCO1lBRXJCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQzs7O1lBMUhGLFVBQVU7Ozs7WUFORixXQUFXO1lBRlgsdUJBQXVCO1lBSXZCLFVBQVU7WUFMViw2QkFBNkI7WUFPN0IsWUFBWTs0Q0FxQmhCLFFBQVEsWUFDUixNQUFNLFNBQUMsbUJBQW1COzs7Ozs7Ozs7O0lBYjdCLHVDQUlFOzs7OztJQUdBLDZCQUFpQzs7Ozs7SUFDakMseUNBQXlEOzs7OztJQUN6RCx3QkFBMkI7Ozs7O0lBQzNCLDJDQUFpRTs7Ozs7SUFDakUsOEJBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6dW5pZmllZC1zaWduYXR1cmVzXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBwdWJsaXNoUmVwbGF5LFxuICByZWZDb3VudCxcbiAgdGFrZVxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJTklUSUFMX1NUQVRFX1RPS0VOLCBQbGFpbk9iamVjdCB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XG5cbmltcG9ydCB7IEludGVybmFsTmd4c0V4ZWN1dGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9leGVjdXRpb24vaW50ZXJuYWwtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3knO1xuaW1wb3J0IHsgSW50ZXJuYWxTdGF0ZU9wZXJhdGlvbnMgfSBmcm9tICcuL2ludGVybmFsL3N0YXRlLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgZ2V0Um9vdFNlbGVjdG9yRmFjdG9yeSB9IGZyb20gJy4vdXRpbHMvc2VsZWN0b3ItdXRpbHMnO1xuaW1wb3J0IHsgU3RhdGVTdHJlYW0gfSBmcm9tICcuL2ludGVybmFsL3N0YXRlLXN0cmVhbSc7XG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuL29wZXJhdG9ycy9sZWF2ZS1uZ3hzJztcbmltcG9ydCB7IE5neHNDb25maWcgfSBmcm9tICcuL3N5bWJvbHMnO1xuaW1wb3J0IHsgU3RhdGVUb2tlbiB9IGZyb20gJy4vc3RhdGUtdG9rZW4vc3RhdGUtdG9rZW4nO1xuaW1wb3J0IHsgU3RhdGVGYWN0b3J5IH0gZnJvbSAnLi9pbnRlcm5hbC9zdGF0ZS1mYWN0b3J5JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0b3JlIHtcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBkZXJpdmVkIHN0YXRlIHN0cmVhbSB0aGF0IGxlYXZlcyBOR1hTIGV4ZWN1dGlvbiBzdHJhdGVneSB0byBlbWl0IHN0YXRlIGNoYW5nZXMgd2l0aGluIHRoZSBBbmd1bGFyIHpvbmUsXG4gICAqIGJlY2F1c2Ugc3RhdGUgaXMgYmVpbmcgY2hhbmdlZCBhY3R1YWxseSB3aXRoaW4gdGhlIGA8cm9vdD5gIHpvbmUsIHNlZSBgSW50ZXJuYWxEaXNwYXRjaGVyI2Rpc3BhdGNoU2luZ2xlYC5cbiAgICogQWxsIHNlbGVjdHMgd291bGQgdXNlIHRoaXMgc3RyZWFtLCBhbmQgaXQgd291bGQgY2FsbCBsZWF2ZSBvbmx5IG9uY2UgZm9yIGFueSBzdGF0ZSBjaGFuZ2UgYWNyb3NzIGFsbCBhY3RpdmUgc2VsZWN0b3JzLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2VsZWN0YWJsZVN0YXRlU3RyZWFtID0gdGhpcy5fc3RhdGVTdHJlYW0ucGlwZShcbiAgICBsZWF2ZU5neHModGhpcy5faW50ZXJuYWxFeGVjdXRpb25TdHJhdGVneSksXG4gICAgcHVibGlzaFJlcGxheSgxKSxcbiAgICByZWZDb3VudCgpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfc3RhdGVTdHJlYW06IFN0YXRlU3RyZWFtLFxuICAgIHByaXZhdGUgX2ludGVybmFsU3RhdGVPcGVyYXRpb25zOiBJbnRlcm5hbFN0YXRlT3BlcmF0aW9ucyxcbiAgICBwcml2YXRlIF9jb25maWc6IE5neHNDb25maWcsXG4gICAgcHJpdmF0ZSBfaW50ZXJuYWxFeGVjdXRpb25TdHJhdGVneTogSW50ZXJuYWxOZ3hzRXhlY3V0aW9uU3RyYXRlZ3ksXG4gICAgcHJpdmF0ZSBfc3RhdGVGYWN0b3J5OiBTdGF0ZUZhY3RvcnksXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KElOSVRJQUxfU1RBVEVfVE9LRU4pXG4gICAgaW5pdGlhbFN0YXRlVmFsdWU6IGFueVxuICApIHtcbiAgICB0aGlzLmluaXRTdGF0ZVN0cmVhbShpbml0aWFsU3RhdGVWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBldmVudChzKS5cbiAgICovXG4gIGRpc3BhdGNoKGFjdGlvbk9yQWN0aW9uczogYW55IHwgYW55W10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlT3BlcmF0aW9ucy5nZXRSb290U3RhdGVPcGVyYXRpb25zKCkuZGlzcGF0Y2goYWN0aW9uT3JBY3Rpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIGEgc2xpY2Ugb2YgZGF0YSBmcm9tIHRoZSBzdG9yZS5cbiAgICovXG4gIHNlbGVjdDxUPihzZWxlY3RvcjogKHN0YXRlOiBhbnksIC4uLnN0YXRlczogYW55W10pID0+IFQpOiBPYnNlcnZhYmxlPFQ+O1xuICBzZWxlY3Q8VCA9IGFueT4oc2VsZWN0b3I6IHN0cmluZyB8IFR5cGU8YW55Pik6IE9ic2VydmFibGU8VD47XG4gIHNlbGVjdDxUPihzZWxlY3RvcjogU3RhdGVUb2tlbjxUPik6IE9ic2VydmFibGU8VD47XG4gIHNlbGVjdChzZWxlY3RvcjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBzZWxlY3RvckZuID0gdGhpcy5nZXRTdG9yZUJvdW5kU2VsZWN0b3JGbihzZWxlY3Rvcik7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGFibGVTdGF0ZVN0cmVhbS5waXBlKFxuICAgICAgbWFwKHNlbGVjdG9yRm4pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBFcnJvcik6IE9ic2VydmFibGU8bmV2ZXI+IHwgT2JzZXJ2YWJsZTx1bmRlZmluZWQ+ID0+IHtcbiAgICAgICAgLy8gaWYgZXJyb3IgaXMgVHlwZUVycm9yIHdlIHN3YWxsb3cgaXQgdG8gcHJldmVudCB1c3VhbCBlcnJvcnMgd2l0aCBwcm9wZXJ0eSBhY2Nlc3NcbiAgICAgICAgY29uc3QgeyBzdXBwcmVzc0Vycm9ycyB9ID0gdGhpcy5fY29uZmlnLnNlbGVjdG9yT3B0aW9ucztcblxuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVHlwZUVycm9yICYmIHN1cHByZXNzRXJyb3JzKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXRocm93IG90aGVyIGVycm9yc1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgfSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgbGVhdmVOZ3hzKHRoaXMuX2ludGVybmFsRXhlY3V0aW9uU3RyYXRlZ3kpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3Qgb25lIHNsaWNlIG9mIGRhdGEgZnJvbSB0aGUgc3RvcmUuXG4gICAqL1xuXG4gIHNlbGVjdE9uY2U8VD4oc2VsZWN0b3I6IChzdGF0ZTogYW55LCAuLi5zdGF0ZXM6IGFueVtdKSA9PiBUKTogT2JzZXJ2YWJsZTxUPjtcbiAgc2VsZWN0T25jZTxUID0gYW55PihzZWxlY3Rvcjogc3RyaW5nIHwgVHlwZTxhbnk+KTogT2JzZXJ2YWJsZTxUPjtcbiAgc2VsZWN0T25jZTxUPihzZWxlY3RvcjogU3RhdGVUb2tlbjxUPik6IE9ic2VydmFibGU8VD47XG4gIHNlbGVjdE9uY2Uoc2VsZWN0b3I6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KHNlbGVjdG9yKS5waXBlKHRha2UoMSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhIHNuYXBzaG90IGZyb20gdGhlIHN0YXRlLlxuICAgKi9cbiAgc2VsZWN0U25hcHNob3Q8VD4oc2VsZWN0b3I6IChzdGF0ZTogYW55LCAuLi5zdGF0ZXM6IGFueVtdKSA9PiBUKTogVDtcbiAgc2VsZWN0U25hcHNob3Q8VCA9IGFueT4oc2VsZWN0b3I6IHN0cmluZyB8IFR5cGU8YW55Pik6IFQ7XG4gIHNlbGVjdFNuYXBzaG90PFQ+KHNlbGVjdG9yOiBTdGF0ZVRva2VuPFQ+KTogVDtcbiAgc2VsZWN0U25hcHNob3Qoc2VsZWN0b3I6IGFueSk6IGFueSB7XG4gICAgY29uc3Qgc2VsZWN0b3JGbiA9IHRoaXMuZ2V0U3RvcmVCb3VuZFNlbGVjdG9yRm4oc2VsZWN0b3IpO1xuICAgIHJldHVybiBzZWxlY3RvckZuKHRoaXMuX3N0YXRlU3RyZWFtLmdldFZhbHVlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IHRoZSB1c2VyIHRvIHN1YnNjcmliZSB0byB0aGUgcm9vdCBvZiB0aGUgc3RhdGVcbiAgICovXG4gIHN1YnNjcmliZShmbj86ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZVN0YXRlU3RyZWFtXG4gICAgICAucGlwZShsZWF2ZU5neHModGhpcy5faW50ZXJuYWxFeGVjdXRpb25TdHJhdGVneSkpXG4gICAgICAuc3Vic2NyaWJlKGZuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHJhdyB2YWx1ZSBvZiB0aGUgc3RhdGUuXG4gICAqL1xuICBzbmFwc2hvdCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlT3BlcmF0aW9ucy5nZXRSb290U3RhdGVPcGVyYXRpb25zKCkuZ2V0U3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgc3RhdGUgdG8gYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWxcbiAgICogZm9yIHBsdWdpbidzIHdobyBuZWVkIHRvIG1vZGlmeSB0aGUgc3RhdGUgZGlyZWN0bHkgb3IgdW5pdCB0ZXN0aW5nLlxuICAgKi9cbiAgcmVzZXQoc3RhdGU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlT3BlcmF0aW9ucy5nZXRSb290U3RhdGVPcGVyYXRpb25zKCkuc2V0U3RhdGUoc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdG9yZUJvdW5kU2VsZWN0b3JGbihzZWxlY3RvcjogYW55KSB7XG4gICAgY29uc3QgbWFrZVNlbGVjdG9yRm4gPSBnZXRSb290U2VsZWN0b3JGYWN0b3J5KHNlbGVjdG9yKTtcbiAgICBjb25zdCBydW50aW1lQ29udGV4dCA9IHRoaXMuX3N0YXRlRmFjdG9yeS5nZXRSdW50aW1lU2VsZWN0b3JDb250ZXh0KCk7XG4gICAgcmV0dXJuIG1ha2VTZWxlY3RvckZuKHJ1bnRpbWVDb250ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0YXRlU3RyZWFtKGluaXRpYWxTdGF0ZVZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZTogUGxhaW5PYmplY3QgPSB0aGlzLl9zdGF0ZVN0cmVhbS52YWx1ZTtcbiAgICBjb25zdCBzdG9yZUlzRW1wdHk6IGJvb2xlYW4gPSAhdmFsdWUgfHwgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMDtcbiAgICBpZiAoc3RvcmVJc0VtcHR5KSB7XG4gICAgICBjb25zdCBkZWZhdWx0U3RhdGVOb3RFbXB0eTogYm9vbGVhbiA9IE9iamVjdC5rZXlzKHRoaXMuX2NvbmZpZy5kZWZhdWx0c1N0YXRlKS5sZW5ndGggPiAwO1xuICAgICAgY29uc3Qgc3RvcmVWYWx1ZXM6IFBsYWluT2JqZWN0ID0gZGVmYXVsdFN0YXRlTm90RW1wdHlcbiAgICAgICAgPyB7IC4uLnRoaXMuX2NvbmZpZy5kZWZhdWx0c1N0YXRlLCAuLi5pbml0aWFsU3RhdGVWYWx1ZSB9XG4gICAgICAgIDogaW5pdGlhbFN0YXRlVmFsdWU7XG5cbiAgICAgIHRoaXMuX3N0YXRlU3RyZWFtLm5leHQoc3RvcmVWYWx1ZXMpO1xuICAgIH1cbiAgfVxufVxuIl19