@ngxs/store 3.7.1 → 3.7.2-dev.master-bc69722

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +16 -16
  2. package/bundles/ngxs-store-internals-testing.umd.js +475 -0
  3. package/bundles/ngxs-store-internals-testing.umd.js.map +1 -0
  4. package/bundles/ngxs-store-internals-testing.umd.min.js +16 -0
  5. package/bundles/ngxs-store-internals-testing.umd.min.js.map +1 -0
  6. package/bundles/ngxs-store-internals.umd.js +380 -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 +310 -310
  11. package/bundles/ngxs-store-operators.umd.js.map +1 -1
  12. package/bundles/ngxs-store-operators.umd.min.js.map +1 -1
  13. package/bundles/ngxs-store.umd.js +4402 -4511
  14. package/bundles/ngxs-store.umd.js.map +1 -1
  15. package/bundles/ngxs-store.umd.min.js +1 -1
  16. package/bundles/ngxs-store.umd.min.js.map +1 -1
  17. package/esm2015/index.js +13 -13
  18. package/esm2015/internals/angular.js +46 -40
  19. package/esm2015/internals/decorator-injector-adapter.js +162 -0
  20. package/esm2015/internals/index.js +11 -10
  21. package/esm2015/internals/initial-state.js +34 -34
  22. package/esm2015/internals/internal-tokens.js +16 -16
  23. package/esm2015/internals/memoize.js +70 -70
  24. package/esm2015/internals/ngxs-bootstrapper.js +41 -41
  25. package/esm2015/internals/ngxs-store-internals.js +9 -9
  26. package/esm2015/internals/src/symbols.js +14 -14
  27. package/esm2015/internals/symbols.js +14 -14
  28. package/esm2015/internals/testing/fresh-platform.js +90 -0
  29. package/esm2015/internals/testing/helpers/ngxs-test.component.js +22 -0
  30. package/esm2015/internals/testing/helpers/ngxs-test.module.js +24 -0
  31. package/esm2015/internals/testing/index.js +7 -0
  32. package/esm2015/internals/testing/ngxs-store-internals-testing.js +9 -0
  33. package/esm2015/internals/testing/ngxs.setup.js +76 -0
  34. package/esm2015/internals/testing/symbol.js +29 -0
  35. package/esm2015/ngxs-store.js +24 -27
  36. package/esm2015/operators/append.js +31 -31
  37. package/esm2015/operators/compose.js +24 -24
  38. package/esm2015/operators/iif.js +56 -56
  39. package/esm2015/operators/index.js +18 -18
  40. package/esm2015/operators/insert-item.js +41 -41
  41. package/esm2015/operators/internals.js +5 -5
  42. package/esm2015/operators/ngxs-store-operators.js +8 -8
  43. package/esm2015/operators/patch.js +39 -39
  44. package/esm2015/operators/remove-item.js +34 -34
  45. package/esm2015/operators/update-item.js +52 -52
  46. package/esm2015/operators/utils.js +50 -50
  47. package/esm2015/src/actions/actions.js +39 -39
  48. package/esm2015/src/actions/symbols.js +39 -39
  49. package/esm2015/src/actions-stream.js +138 -140
  50. package/esm2015/src/configs/messages.config.js +79 -87
  51. package/esm2015/src/decorators/action.js +48 -44
  52. package/esm2015/src/decorators/select/select-factory.js +49 -46
  53. package/esm2015/src/decorators/select/select.js +60 -45
  54. package/esm2015/src/decorators/select/symbols.js +94 -50
  55. package/esm2015/src/decorators/selector/selector.js +59 -55
  56. package/esm2015/src/decorators/selector/symbols.js +5 -5
  57. package/esm2015/src/decorators/selector-options.js +34 -34
  58. package/esm2015/src/decorators/state.js +83 -75
  59. package/esm2015/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +101 -96
  60. package/esm2015/src/execution/internal-ngxs-execution-strategy.js +45 -45
  61. package/esm2015/src/execution/noop-ngxs-execution-strategy.js +27 -27
  62. package/esm2015/src/execution/symbols.js +29 -29
  63. package/esm2015/src/internal/dispatcher.js +217 -210
  64. package/esm2015/src/internal/internals.js +493 -489
  65. package/esm2015/src/internal/lifecycle-state-manager.js +129 -129
  66. package/esm2015/src/internal/state-context-factory.js +138 -138
  67. package/esm2015/src/internal/state-factory.js +449 -429
  68. package/esm2015/src/internal/state-operations.js +120 -125
  69. package/esm2015/src/internal/state-operators.js +33 -33
  70. package/esm2015/src/internal/state-stream.js +21 -21
  71. package/esm2015/src/ivy/ivy-enabled-in-dev-mode.js +28 -40
  72. package/esm2015/src/module.js +158 -172
  73. package/esm2015/src/modules/ngxs-feature.module.js +63 -63
  74. package/esm2015/src/modules/ngxs-root.module.js +52 -52
  75. package/esm2015/src/operators/leave-ngxs.js +58 -58
  76. package/esm2015/src/operators/of-action.js +191 -191
  77. package/esm2015/src/plugin-manager.js +70 -70
  78. package/esm2015/src/plugin_api.js +10 -10
  79. package/esm2015/src/public_api.js +29 -29
  80. package/esm2015/src/public_to_deprecate.js +64 -64
  81. package/esm2015/src/state-token/state-token.js +45 -45
  82. package/esm2015/src/state-token/symbols.js +5 -5
  83. package/esm2015/src/store.js +174 -174
  84. package/esm2015/src/symbols.js +217 -221
  85. package/esm2015/src/utils/compose.js +44 -44
  86. package/esm2015/src/utils/freeze.js +35 -35
  87. package/esm2015/src/utils/selector-utils.js +221 -221
  88. package/esm2015/src/utils/store-validators.js +60 -65
  89. package/esm2015/src/utils/utils.js +143 -143
  90. package/esm5/index.js +13 -13
  91. package/esm5/internals/angular.js +46 -40
  92. package/esm5/internals/decorator-injector-adapter.js +162 -0
  93. package/esm5/internals/index.js +11 -10
  94. package/esm5/internals/initial-state.js +45 -45
  95. package/esm5/internals/internal-tokens.js +16 -16
  96. package/esm5/internals/memoize.js +71 -71
  97. package/esm5/internals/ngxs-bootstrapper.js +56 -56
  98. package/esm5/internals/ngxs-store-internals.js +9 -9
  99. package/esm5/internals/src/symbols.js +14 -14
  100. package/esm5/internals/symbols.js +14 -14
  101. package/esm5/internals/testing/fresh-platform.js +101 -0
  102. package/esm5/internals/testing/helpers/ngxs-test.component.js +32 -0
  103. package/esm5/internals/testing/helpers/ngxs-test.module.js +32 -0
  104. package/esm5/internals/testing/index.js +7 -0
  105. package/esm5/internals/testing/ngxs-store-internals-testing.js +9 -0
  106. package/esm5/internals/testing/ngxs.setup.js +98 -0
  107. package/esm5/internals/testing/symbol.js +29 -0
  108. package/esm5/ngxs-store.js +24 -27
  109. package/esm5/operators/append.js +31 -31
  110. package/esm5/operators/compose.js +28 -28
  111. package/esm5/operators/iif.js +56 -56
  112. package/esm5/operators/index.js +18 -18
  113. package/esm5/operators/insert-item.js +41 -41
  114. package/esm5/operators/internals.js +5 -5
  115. package/esm5/operators/ngxs-store-operators.js +8 -8
  116. package/esm5/operators/patch.js +40 -40
  117. package/esm5/operators/remove-item.js +34 -34
  118. package/esm5/operators/update-item.js +52 -52
  119. package/esm5/operators/utils.js +50 -50
  120. package/esm5/src/actions/actions.js +62 -62
  121. package/esm5/src/actions/symbols.js +39 -39
  122. package/esm5/src/actions-stream.js +184 -186
  123. package/esm5/src/configs/messages.config.js +79 -104
  124. package/esm5/src/decorators/action.js +60 -56
  125. package/esm5/src/decorators/select/select-factory.js +50 -47
  126. package/esm5/src/decorators/select/select.js +65 -50
  127. package/esm5/src/decorators/select/symbols.js +95 -51
  128. package/esm5/src/decorators/selector/selector.js +59 -55
  129. package/esm5/src/decorators/selector/symbols.js +5 -5
  130. package/esm5/src/decorators/selector-options.js +34 -34
  131. package/esm5/src/decorators/state.js +84 -76
  132. package/esm5/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +121 -121
  133. package/esm5/src/execution/internal-ngxs-execution-strategy.js +54 -54
  134. package/esm5/src/execution/noop-ngxs-execution-strategy.js +41 -41
  135. package/esm5/src/execution/symbols.js +29 -29
  136. package/esm5/src/internal/dispatcher.js +253 -246
  137. package/esm5/src/internal/internals.js +495 -491
  138. package/esm5/src/internal/lifecycle-state-manager.js +177 -177
  139. package/esm5/src/internal/state-context-factory.js +146 -146
  140. package/esm5/src/internal/state-factory.js +575 -563
  141. package/esm5/src/internal/state-operations.js +130 -139
  142. package/esm5/src/internal/state-operators.js +34 -34
  143. package/esm5/src/internal/state-stream.js +25 -25
  144. package/esm5/src/ivy/ivy-enabled-in-dev-mode.js +28 -40
  145. package/esm5/src/module.js +201 -215
  146. package/esm5/src/modules/ngxs-feature.module.js +65 -65
  147. package/esm5/src/modules/ngxs-root.module.js +47 -47
  148. package/esm5/src/operators/leave-ngxs.js +58 -58
  149. package/esm5/src/operators/of-action.js +217 -217
  150. package/esm5/src/plugin-manager.js +82 -82
  151. package/esm5/src/plugin_api.js +10 -10
  152. package/esm5/src/public_api.js +29 -29
  153. package/esm5/src/public_to_deprecate.js +64 -64
  154. package/esm5/src/state-token/state-token.js +57 -57
  155. package/esm5/src/state-token/symbols.js +5 -5
  156. package/esm5/src/store.js +225 -225
  157. package/esm5/src/symbols.js +226 -230
  158. package/esm5/src/utils/compose.js +55 -55
  159. package/esm5/src/utils/freeze.js +35 -35
  160. package/esm5/src/utils/selector-utils.js +230 -230
  161. package/esm5/src/utils/store-validators.js +78 -86
  162. package/esm5/src/utils/utils.js +151 -151
  163. package/fesm2015/ngxs-store-internals-testing.js +216 -0
  164. package/fesm2015/ngxs-store-internals-testing.js.map +1 -0
  165. package/fesm2015/ngxs-store-internals.js +361 -194
  166. package/fesm2015/ngxs-store-internals.js.map +1 -1
  167. package/fesm2015/ngxs-store-operators.js +312 -312
  168. package/fesm2015/ngxs-store-operators.js.map +1 -1
  169. package/fesm2015/ngxs-store.js +3907 -3969
  170. package/fesm2015/ngxs-store.js.map +1 -1
  171. package/fesm5/ngxs-store-internals-testing.js +263 -0
  172. package/fesm5/ngxs-store-internals-testing.js.map +1 -0
  173. package/fesm5/ngxs-store-internals.js +386 -219
  174. package/fesm5/ngxs-store-internals.js.map +1 -1
  175. package/fesm5/ngxs-store-operators.js +316 -316
  176. package/fesm5/ngxs-store-operators.js.map +1 -1
  177. package/fesm5/ngxs-store.js +4399 -4503
  178. package/fesm5/ngxs-store.js.map +1 -1
  179. package/index.d.ts +8 -8
  180. package/internals/angular.d.ts +3 -3
  181. package/internals/decorator-injector-adapter.d.ts +8 -0
  182. package/internals/index.d.ts +7 -6
  183. package/internals/initial-state.d.ts +8 -8
  184. package/internals/internal-tokens.d.ts +9 -9
  185. package/internals/memoize.d.ts +9 -9
  186. package/internals/ngxs-bootstrapper.d.ts +13 -13
  187. package/internals/ngxs-store-internals.d.ts +4 -4
  188. package/internals/ngxs-store-internals.metadata.json +1 -1
  189. package/internals/src/symbols.d.ts +7 -7
  190. package/internals/symbols.d.ts +7 -7
  191. package/internals/testing/fresh-platform.d.ts +1 -0
  192. package/internals/testing/helpers/ngxs-test.component.d.ts +5 -0
  193. package/internals/testing/helpers/ngxs-test.module.d.ts +4 -0
  194. package/internals/testing/index.d.ts +3 -0
  195. package/internals/testing/ngxs-store-internals-testing.d.ts +4 -0
  196. package/internals/testing/ngxs-store-internals-testing.metadata.json +1 -0
  197. package/internals/testing/ngxs.setup.d.ts +7 -0
  198. package/internals/testing/package.json +13 -0
  199. package/internals/testing/symbol.d.ts +14 -0
  200. package/ngxs-store.d.ts +20 -23
  201. package/ngxs-store.metadata.json +1 -1
  202. package/operators/append.d.ts +6 -6
  203. package/operators/compose.d.ts +2 -2
  204. package/operators/iif.d.ts +11 -11
  205. package/operators/index.d.ts +13 -13
  206. package/operators/insert-item.d.ts +7 -7
  207. package/operators/internals.d.ts +2 -2
  208. package/operators/ngxs-store-operators.d.ts +4 -4
  209. package/operators/patch.d.ts +10 -10
  210. package/operators/remove-item.d.ts +7 -7
  211. package/operators/update-item.d.ts +10 -10
  212. package/operators/utils.d.ts +9 -9
  213. package/package.json +3 -3
  214. package/src/actions/actions.d.ts +15 -15
  215. package/src/actions/symbols.d.ts +21 -21
  216. package/src/actions-stream.d.ts +49 -49
  217. package/src/configs/messages.config.d.ts +11 -30
  218. package/src/decorators/action.d.ts +5 -5
  219. package/src/decorators/select/select-factory.d.ts +13 -14
  220. package/src/decorators/select/select.d.ts +4 -4
  221. package/src/decorators/select/symbols.d.ts +14 -10
  222. package/src/decorators/selector/selector.d.ts +5 -5
  223. package/src/decorators/selector/symbols.d.ts +4 -4
  224. package/src/decorators/selector-options.d.ts +5 -5
  225. package/src/decorators/state.d.ts +6 -6
  226. package/src/execution/dispatch-outside-zone-ngxs-execution-strategy.d.ts +11 -12
  227. package/src/execution/internal-ngxs-execution-strategy.d.ts +7 -7
  228. package/src/execution/noop-ngxs-execution-strategy.d.ts +5 -5
  229. package/src/execution/symbols.d.ts +6 -6
  230. package/src/internal/dispatcher.d.ts +32 -31
  231. package/src/internal/internals.d.ts +166 -167
  232. package/src/internal/lifecycle-state-manager.d.ts +20 -20
  233. package/src/internal/state-context-factory.d.ts +15 -15
  234. package/src/internal/state-factory.d.ts +57 -58
  235. package/src/internal/state-operations.d.ts +19 -21
  236. package/src/internal/state-operators.d.ts +2 -2
  237. package/src/internal/state-stream.d.ts +9 -9
  238. package/src/ivy/ivy-enabled-in-dev-mode.d.ts +6 -14
  239. package/src/module.d.ts +23 -23
  240. package/src/modules/ngxs-feature.module.d.ts +13 -13
  241. package/src/modules/ngxs-root.module.d.ts +13 -13
  242. package/src/operators/leave-ngxs.d.ts +7 -7
  243. package/src/operators/of-action.d.ts +43 -43
  244. package/src/plugin-manager.d.ts +10 -10
  245. package/src/plugin_api.d.ts +5 -5
  246. package/src/public_api.d.ts +17 -17
  247. package/src/public_to_deprecate.d.ts +21 -21
  248. package/src/state-token/state-token.d.ts +7 -7
  249. package/src/state-token/symbols.d.ts +5 -5
  250. package/src/store.d.ts +53 -53
  251. package/src/symbols.d.ts +135 -137
  252. package/src/utils/compose.d.ts +23 -23
  253. package/src/utils/freeze.d.ts +5 -5
  254. package/src/utils/selector-utils.d.ts +23 -23
  255. package/src/utils/store-validators.d.ts +7 -8
  256. package/src/utils/utils.d.ts +46 -46
  257. package/types/index.d.ts +2 -2
  258. package/esm2015/src/host-environment/host-environment.js +0 -31
  259. package/esm2015/src/internal/config-validator.js +0 -67
  260. package/esm2015/src/ivy/ensure-state-class-is-injectable.js +0 -34
  261. package/esm5/src/host-environment/host-environment.js +0 -29
  262. package/esm5/src/internal/config-validator.js +0 -76
  263. package/esm5/src/ivy/ensure-state-class-is-injectable.js +0 -34
  264. package/src/host-environment/host-environment.d.ts +0 -6
  265. package/src/internal/config-validator.d.ts +0 -10
  266. package/src/ivy/ensure-state-class-is-injectable.d.ts +0 -6
@@ -1,210 +1,217 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { ErrorHandler, Injectable } from '@angular/core';
6
- import { EMPTY, forkJoin, of, Subject, throwError } from 'rxjs';
7
- import { exhaustMap, filter, shareReplay, take } from 'rxjs/operators';
8
- import { compose } from '../utils/compose';
9
- import { InternalActions } from '../actions-stream';
10
- import { StateStream } from './state-stream';
11
- import { PluginManager } from '../plugin-manager';
12
- import { InternalNgxsExecutionStrategy } from '../execution/internal-ngxs-execution-strategy';
13
- import { leaveNgxs } from '../operators/leave-ngxs';
14
- import { getActionTypeFromInstance } from '../utils/utils';
15
- /**
16
- * Internal Action result stream that is emitted when an action is completed.
17
- * This is used as a method of returning the action result to the dispatcher
18
- * for the observable returned by the dispatch(...) call.
19
- * The dispatcher then asynchronously pushes the result from this stream onto the main action stream as a result.
20
- */
21
- export class InternalDispatchedActionResults extends Subject {
22
- }
23
- InternalDispatchedActionResults.decorators = [
24
- { type: Injectable }
25
- ];
26
- export class InternalDispatcher {
27
- /**
28
- * @param {?} _errorHandler
29
- * @param {?} _actions
30
- * @param {?} _actionResults
31
- * @param {?} _pluginManager
32
- * @param {?} _stateStream
33
- * @param {?} _ngxsExecutionStrategy
34
- */
35
- constructor(_errorHandler, _actions, _actionResults, _pluginManager, _stateStream, _ngxsExecutionStrategy) {
36
- this._errorHandler = _errorHandler;
37
- this._actions = _actions;
38
- this._actionResults = _actionResults;
39
- this._pluginManager = _pluginManager;
40
- this._stateStream = _stateStream;
41
- this._ngxsExecutionStrategy = _ngxsExecutionStrategy;
42
- }
43
- /**
44
- * Dispatches event(s).
45
- * @param {?} actionOrActions
46
- * @return {?}
47
- */
48
- dispatch(actionOrActions) {
49
- /** @type {?} */
50
- const result = this._ngxsExecutionStrategy.enter((/**
51
- * @return {?}
52
- */
53
- () => this.dispatchByEvents(actionOrActions)));
54
- result.subscribe({
55
- error: (/**
56
- * @param {?} error
57
- * @return {?}
58
- */
59
- error => this._ngxsExecutionStrategy.leave((/**
60
- * @return {?}
61
- */
62
- () => {
63
- try {
64
- this._errorHandler.handleError(error);
65
- }
66
- catch (_a) { }
67
- })))
68
- });
69
- return result.pipe(leaveNgxs(this._ngxsExecutionStrategy));
70
- }
71
- /**
72
- * @private
73
- * @param {?} actionOrActions
74
- * @return {?}
75
- */
76
- dispatchByEvents(actionOrActions) {
77
- if (Array.isArray(actionOrActions)) {
78
- if (actionOrActions.length === 0)
79
- return of(this._stateStream.getValue());
80
- return forkJoin(actionOrActions.map((/**
81
- * @param {?} action
82
- * @return {?}
83
- */
84
- action => this.dispatchSingle(action))));
85
- }
86
- else {
87
- return this.dispatchSingle(actionOrActions);
88
- }
89
- }
90
- /**
91
- * @private
92
- * @param {?} action
93
- * @return {?}
94
- */
95
- dispatchSingle(action) {
96
- /** @type {?} */
97
- const type = getActionTypeFromInstance(action);
98
- if (!type) {
99
- /** @type {?} */
100
- const error = new Error(`This action doesn't have a type property: ${action.constructor.name}`);
101
- return throwError(error);
102
- }
103
- /** @type {?} */
104
- const prevState = this._stateStream.getValue();
105
- /** @type {?} */
106
- const plugins = this._pluginManager.plugins;
107
- return ((/** @type {?} */ (compose([
108
- ...plugins,
109
- (/**
110
- * @param {?} nextState
111
- * @param {?} nextAction
112
- * @return {?}
113
- */
114
- (nextState, nextAction) => {
115
- if (nextState !== prevState) {
116
- this._stateStream.next(nextState);
117
- }
118
- /** @type {?} */
119
- const actionResult$ = this.getActionResultStream(nextAction);
120
- actionResult$.subscribe((/**
121
- * @param {?} ctx
122
- * @return {?}
123
- */
124
- ctx => this._actions.next(ctx)));
125
- this._actions.next({ action: nextAction, status: "DISPATCHED" /* Dispatched */ });
126
- return this.createDispatchObservable(actionResult$);
127
- })
128
- ])(prevState, action)))).pipe(shareReplay());
129
- }
130
- /**
131
- * @private
132
- * @param {?} action
133
- * @return {?}
134
- */
135
- getActionResultStream(action) {
136
- return this._actionResults.pipe(filter((/**
137
- * @param {?} ctx
138
- * @return {?}
139
- */
140
- (ctx) => ctx.action === action && ctx.status !== "DISPATCHED" /* Dispatched */)), take(1), shareReplay());
141
- }
142
- /**
143
- * @private
144
- * @param {?} actionResult$
145
- * @return {?}
146
- */
147
- createDispatchObservable(actionResult$) {
148
- return actionResult$
149
- .pipe(exhaustMap((/**
150
- * @param {?} ctx
151
- * @return {?}
152
- */
153
- (ctx) => {
154
- switch (ctx.status) {
155
- case "SUCCESSFUL" /* Successful */:
156
- return of(this._stateStream.getValue());
157
- case "ERRORED" /* Errored */:
158
- return throwError(ctx.error);
159
- default:
160
- return EMPTY;
161
- }
162
- })))
163
- .pipe(shareReplay());
164
- }
165
- }
166
- InternalDispatcher.decorators = [
167
- { type: Injectable }
168
- ];
169
- /** @nocollapse */
170
- InternalDispatcher.ctorParameters = () => [
171
- { type: ErrorHandler },
172
- { type: InternalActions },
173
- { type: InternalDispatchedActionResults },
174
- { type: PluginManager },
175
- { type: StateStream },
176
- { type: InternalNgxsExecutionStrategy }
177
- ];
178
- if (false) {
179
- /**
180
- * @type {?}
181
- * @private
182
- */
183
- InternalDispatcher.prototype._errorHandler;
184
- /**
185
- * @type {?}
186
- * @private
187
- */
188
- InternalDispatcher.prototype._actions;
189
- /**
190
- * @type {?}
191
- * @private
192
- */
193
- InternalDispatcher.prototype._actionResults;
194
- /**
195
- * @type {?}
196
- * @private
197
- */
198
- InternalDispatcher.prototype._pluginManager;
199
- /**
200
- * @type {?}
201
- * @private
202
- */
203
- InternalDispatcher.prototype._stateStream;
204
- /**
205
- * @type {?}
206
- * @private
207
- */
208
- InternalDispatcher.prototype._ngxsExecutionStrategy;
209
- }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2ludGVybmFsL2Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVMzRCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsT0FBc0I7OztZQUQxRSxVQUFVOztBQUlYLE1BQU0sT0FBTyxrQkFBa0I7Ozs7Ozs7OztJQUM3QixZQUNVLGFBQTJCLEVBQzNCLFFBQXlCLEVBQ3pCLGNBQStDLEVBQy9DLGNBQTZCLEVBQzdCLFlBQXlCLEVBQ3pCLHNCQUFxRDtRQUxyRCxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUM7UUFDL0MsbUJB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Q0FBQyxJQUFJLENBQzdCLE1BQU07Ozs7UUFDSixDQUFDLEdBQWtCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLGtDQUE0QixFQUN4RixFQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxXQUFXLEVBQUUsQ0FDZCxDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBRU8sd0JBQXdCLENBQUMsYUFBd0M7UUFDdkUsT0FBTyxhQUFhO2FBQ2pCLElBQUksQ0FDSCxVQUFVOzs7O1FBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUU7WUFDaEMsUUFBUSxHQUFHLENBQUMsTUFBTSxFQUFFO2dCQUNsQjtvQkFDRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzFDO29CQUNFLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0I7b0JBQ0UsT0FBTyxLQUFLLENBQUM7YUFDaEI7UUFDSCxDQUFDLEVBQUMsQ0FDSDthQUNBLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OztZQTNGRixVQUFVOzs7O1lBckJGLFlBQVk7WUFLaUIsZUFBZTtZQXFCekIsK0JBQStCO1lBbkJsRCxhQUFhO1lBRGIsV0FBVztZQUVYLDZCQUE2Qjs7Ozs7OztJQWdCbEMsMkNBQW1DOzs7OztJQUNuQyxzQ0FBaUM7Ozs7O0lBQ2pDLDRDQUF1RDs7Ozs7SUFDdkQsNENBQXFDOzs7OztJQUNyQywwQ0FBaUM7Ozs7O0lBQ2pDLG9EQUE2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVycm9ySGFuZGxlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGV4aGF1c3RNYXAsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBjb21wb3NlIH0gZnJvbSAnLi4vdXRpbHMvY29tcG9zZSc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRleHQsIEFjdGlvblN0YXR1cywgSW50ZXJuYWxBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9ucy1zdHJlYW0nO1xyXG5pbXBvcnQgeyBTdGF0ZVN0cmVhbSB9IGZyb20gJy4vc3RhdGUtc3RyZWFtJztcclxuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJztcclxuaW1wb3J0IHsgSW50ZXJuYWxOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9leGVjdXRpb24vaW50ZXJuYWwtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuLi9vcGVyYXRvcnMvbGVhdmUtbmd4cyc7XHJcbmltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UgfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcblxyXG4vKipcclxuICogSW50ZXJuYWwgQWN0aW9uIHJlc3VsdCBzdHJlYW0gdGhhdCBpcyBlbWl0dGVkIHdoZW4gYW4gYWN0aW9uIGlzIGNvbXBsZXRlZC5cclxuICogVGhpcyBpcyB1c2VkIGFzIGEgbWV0aG9kIG9mIHJldHVybmluZyB0aGUgYWN0aW9uIHJlc3VsdCB0byB0aGUgZGlzcGF0Y2hlclxyXG4gKiBmb3IgdGhlIG9ic2VydmFibGUgcmV0dXJuZWQgYnkgdGhlIGRpc3BhdGNoKC4uLikgY2FsbC5cclxuICogVGhlIGRpc3BhdGNoZXIgdGhlbiBhc3luY2hyb25vdXNseSBwdXNoZXMgdGhlIHJlc3VsdCBmcm9tIHRoaXMgc3RyZWFtIG9udG8gdGhlIG1haW4gYWN0aW9uIHN0cmVhbSBhcyBhIHJlc3VsdC5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEludGVybmFsRGlzcGF0Y2hlZEFjdGlvblJlc3VsdHMgZXh0ZW5kcyBTdWJqZWN0PEFjdGlvbkNvbnRleHQ+IHt9XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbERpc3BhdGNoZXIge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXIsXHJcbiAgICBwcml2YXRlIF9hY3Rpb25zOiBJbnRlcm5hbEFjdGlvbnMsXHJcbiAgICBwcml2YXRlIF9hY3Rpb25SZXN1bHRzOiBJbnRlcm5hbERpc3BhdGNoZWRBY3Rpb25SZXN1bHRzLFxyXG4gICAgcHJpdmF0ZSBfcGx1Z2luTWFuYWdlcjogUGx1Z2luTWFuYWdlcixcclxuICAgIHByaXZhdGUgX3N0YXRlU3RyZWFtOiBTdGF0ZVN0cmVhbSxcclxuICAgIHByaXZhdGUgX25neHNFeGVjdXRpb25TdHJhdGVneTogSW50ZXJuYWxOZ3hzRXhlY3V0aW9uU3RyYXRlZ3lcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BhdGNoZXMgZXZlbnQocykuXHJcbiAgICovXHJcbiAgZGlzcGF0Y2goYWN0aW9uT3JBY3Rpb25zOiBhbnkgfCBhbnlbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9uZ3hzRXhlY3V0aW9uU3RyYXRlZ3kuZW50ZXIoKCkgPT5cclxuICAgICAgdGhpcy5kaXNwYXRjaEJ5RXZlbnRzKGFjdGlvbk9yQWN0aW9ucylcclxuICAgICk7XHJcblxyXG4gICAgcmVzdWx0LnN1YnNjcmliZSh7XHJcbiAgICAgIGVycm9yOiBlcnJvciA9PlxyXG4gICAgICAgIHRoaXMuX25neHNFeGVjdXRpb25TdHJhdGVneS5sZWF2ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgfSBjYXRjaCB7fVxyXG4gICAgICAgIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0LnBpcGUobGVhdmVOZ3hzKHRoaXMuX25neHNFeGVjdXRpb25TdHJhdGVneSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwYXRjaEJ5RXZlbnRzKGFjdGlvbk9yQWN0aW9uczogYW55IHwgYW55W10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uT3JBY3Rpb25zKSkge1xyXG4gICAgICBpZiAoYWN0aW9uT3JBY3Rpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG9mKHRoaXMuX3N0YXRlU3RyZWFtLmdldFZhbHVlKCkpO1xyXG4gICAgICByZXR1cm4gZm9ya0pvaW4oYWN0aW9uT3JBY3Rpb25zLm1hcChhY3Rpb24gPT4gdGhpcy5kaXNwYXRjaFNpbmdsZShhY3Rpb24pKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaFNpbmdsZShhY3Rpb25PckFjdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZShhY3Rpb246IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbik7XHJcbiAgICBpZiAoIXR5cGUpIHtcclxuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXHJcbiAgICAgICAgYFRoaXMgYWN0aW9uIGRvZXNuJ3QgaGF2ZSBhIHR5cGUgcHJvcGVydHk6ICR7YWN0aW9uLmNvbnN0cnVjdG9yLm5hbWV9YFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5fc3RhdGVTdHJlYW0uZ2V0VmFsdWUoKTtcclxuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLl9wbHVnaW5NYW5hZ2VyLnBsdWdpbnM7XHJcblxyXG4gICAgcmV0dXJuIChjb21wb3NlKFtcclxuICAgICAgLi4ucGx1Z2lucyxcclxuICAgICAgKG5leHRTdGF0ZTogYW55LCBuZXh0QWN0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobmV4dFN0YXRlICE9PSBwcmV2U3RhdGUpIHtcclxuICAgICAgICAgIHRoaXMuX3N0YXRlU3RyZWFtLm5leHQobmV4dFN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYWN0aW9uUmVzdWx0JCA9IHRoaXMuZ2V0QWN0aW9uUmVzdWx0U3RyZWFtKG5leHRBY3Rpb24pO1xyXG4gICAgICAgIGFjdGlvblJlc3VsdCQuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLl9hY3Rpb25zLm5leHQoY3R4KSk7XHJcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5uZXh0KHsgYWN0aW9uOiBuZXh0QWN0aW9uLCBzdGF0dXM6IEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURpc3BhdGNoT2JzZXJ2YWJsZShhY3Rpb25SZXN1bHQkKTtcclxuICAgICAgfVxyXG4gICAgXSkocHJldlN0YXRlLCBhY3Rpb24pIGFzIE9ic2VydmFibGU8YW55PikucGlwZShzaGFyZVJlcGxheSgpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWN0aW9uUmVzdWx0U3RyZWFtKGFjdGlvbjogYW55KTogT2JzZXJ2YWJsZTxBY3Rpb25Db250ZXh0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uUmVzdWx0cy5waXBlKFxyXG4gICAgICBmaWx0ZXIoXHJcbiAgICAgICAgKGN0eDogQWN0aW9uQ29udGV4dCkgPT4gY3R4LmFjdGlvbiA9PT0gYWN0aW9uICYmIGN0eC5zdGF0dXMgIT09IEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkXHJcbiAgICAgICksXHJcbiAgICAgIHRha2UoMSksXHJcbiAgICAgIHNoYXJlUmVwbGF5KClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZURpc3BhdGNoT2JzZXJ2YWJsZShhY3Rpb25SZXN1bHQkOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiBhY3Rpb25SZXN1bHQkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGV4aGF1c3RNYXAoKGN0eDogQWN0aW9uQ29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoIChjdHguc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQWN0aW9uU3RhdHVzLlN1Y2Nlc3NmdWw6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuX3N0YXRlU3RyZWFtLmdldFZhbHVlKCkpO1xyXG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5FcnJvcmVkOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGN0eC5lcnJvcik7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { ErrorHandler, Injectable, Injector } from '@angular/core';
6
+ import { EMPTY, forkJoin, of, Subject, throwError } from 'rxjs';
7
+ import { exhaustMap, filter, shareReplay, take } from 'rxjs/operators';
8
+ import { compose } from '../utils/compose';
9
+ import { InternalActions } from '../actions-stream';
10
+ import { StateStream } from './state-stream';
11
+ import { PluginManager } from '../plugin-manager';
12
+ import { InternalNgxsExecutionStrategy } from '../execution/internal-ngxs-execution-strategy';
13
+ import { leaveNgxs } from '../operators/leave-ngxs';
14
+ import { getActionTypeFromInstance } from '../utils/utils';
15
+ /**
16
+ * Internal Action result stream that is emitted when an action is completed.
17
+ * This is used as a method of returning the action result to the dispatcher
18
+ * for the observable returned by the dispatch(...) call.
19
+ * The dispatcher then asynchronously pushes the result from this stream onto the main action stream as a result.
20
+ */
21
+ export class InternalDispatchedActionResults extends Subject {
22
+ }
23
+ InternalDispatchedActionResults.decorators = [
24
+ { type: Injectable }
25
+ ];
26
+ export class InternalDispatcher {
27
+ /**
28
+ * @param {?} _injector
29
+ * @param {?} _actions
30
+ * @param {?} _actionResults
31
+ * @param {?} _pluginManager
32
+ * @param {?} _stateStream
33
+ * @param {?} _ngxsExecutionStrategy
34
+ */
35
+ constructor(_injector, _actions, _actionResults, _pluginManager, _stateStream, _ngxsExecutionStrategy) {
36
+ this._injector = _injector;
37
+ this._actions = _actions;
38
+ this._actionResults = _actionResults;
39
+ this._pluginManager = _pluginManager;
40
+ this._stateStream = _stateStream;
41
+ this._ngxsExecutionStrategy = _ngxsExecutionStrategy;
42
+ }
43
+ /**
44
+ * Dispatches event(s).
45
+ * @param {?} actionOrActions
46
+ * @return {?}
47
+ */
48
+ dispatch(actionOrActions) {
49
+ /** @type {?} */
50
+ const result = this._ngxsExecutionStrategy.enter((/**
51
+ * @return {?}
52
+ */
53
+ () => this.dispatchByEvents(actionOrActions)));
54
+ result.subscribe({
55
+ error: (/**
56
+ * @param {?} error
57
+ * @return {?}
58
+ */
59
+ error => this._ngxsExecutionStrategy.leave((/**
60
+ * @return {?}
61
+ */
62
+ () => {
63
+ try {
64
+ // Retrieve lazily to avoid cyclic dependency exception
65
+ this._errorHandler = this._errorHandler || this._injector.get(ErrorHandler);
66
+ this._errorHandler.handleError(error);
67
+ }
68
+ catch (_a) { }
69
+ })))
70
+ });
71
+ return result.pipe(leaveNgxs(this._ngxsExecutionStrategy));
72
+ }
73
+ /**
74
+ * @private
75
+ * @param {?} actionOrActions
76
+ * @return {?}
77
+ */
78
+ dispatchByEvents(actionOrActions) {
79
+ if (Array.isArray(actionOrActions)) {
80
+ if (actionOrActions.length === 0)
81
+ return of(this._stateStream.getValue());
82
+ return forkJoin(actionOrActions.map((/**
83
+ * @param {?} action
84
+ * @return {?}
85
+ */
86
+ action => this.dispatchSingle(action))));
87
+ }
88
+ else {
89
+ return this.dispatchSingle(actionOrActions);
90
+ }
91
+ }
92
+ /**
93
+ * @private
94
+ * @param {?} action
95
+ * @return {?}
96
+ */
97
+ dispatchSingle(action) {
98
+ /** @type {?} */
99
+ const type = getActionTypeFromInstance(action);
100
+ if (!type) {
101
+ /** @type {?} */
102
+ const error = new Error(`This action doesn't have a type property: ${action.constructor.name}`);
103
+ return throwError(error);
104
+ }
105
+ /** @type {?} */
106
+ const prevState = this._stateStream.getValue();
107
+ /** @type {?} */
108
+ const plugins = this._pluginManager.plugins;
109
+ return ((/** @type {?} */ (compose([
110
+ ...plugins,
111
+ (/**
112
+ * @param {?} nextState
113
+ * @param {?} nextAction
114
+ * @return {?}
115
+ */
116
+ (nextState, nextAction) => {
117
+ if (nextState !== prevState) {
118
+ this._stateStream.next(nextState);
119
+ }
120
+ /** @type {?} */
121
+ const actionResult$ = this.getActionResultStream(nextAction);
122
+ actionResult$.subscribe((/**
123
+ * @param {?} ctx
124
+ * @return {?}
125
+ */
126
+ ctx => this._actions.next(ctx)));
127
+ this._actions.next({ action: nextAction, status: "DISPATCHED" /* Dispatched */ });
128
+ return this.createDispatchObservable(actionResult$);
129
+ })
130
+ ])(prevState, action)))).pipe(shareReplay());
131
+ }
132
+ /**
133
+ * @private
134
+ * @param {?} action
135
+ * @return {?}
136
+ */
137
+ getActionResultStream(action) {
138
+ return this._actionResults.pipe(filter((/**
139
+ * @param {?} ctx
140
+ * @return {?}
141
+ */
142
+ (ctx) => ctx.action === action && ctx.status !== "DISPATCHED" /* Dispatched */)), take(1), shareReplay());
143
+ }
144
+ /**
145
+ * @private
146
+ * @param {?} actionResult$
147
+ * @return {?}
148
+ */
149
+ createDispatchObservable(actionResult$) {
150
+ return actionResult$
151
+ .pipe(exhaustMap((/**
152
+ * @param {?} ctx
153
+ * @return {?}
154
+ */
155
+ (ctx) => {
156
+ switch (ctx.status) {
157
+ case "SUCCESSFUL" /* Successful */:
158
+ return of(this._stateStream.getValue());
159
+ case "ERRORED" /* Errored */:
160
+ return throwError(ctx.error);
161
+ default:
162
+ return EMPTY;
163
+ }
164
+ })))
165
+ .pipe(shareReplay());
166
+ }
167
+ }
168
+ InternalDispatcher.decorators = [
169
+ { type: Injectable }
170
+ ];
171
+ /** @nocollapse */
172
+ InternalDispatcher.ctorParameters = () => [
173
+ { type: Injector },
174
+ { type: InternalActions },
175
+ { type: InternalDispatchedActionResults },
176
+ { type: PluginManager },
177
+ { type: StateStream },
178
+ { type: InternalNgxsExecutionStrategy }
179
+ ];
180
+ if (false) {
181
+ /**
182
+ * @type {?}
183
+ * @private
184
+ */
185
+ InternalDispatcher.prototype._errorHandler;
186
+ /**
187
+ * @type {?}
188
+ * @private
189
+ */
190
+ InternalDispatcher.prototype._injector;
191
+ /**
192
+ * @type {?}
193
+ * @private
194
+ */
195
+ InternalDispatcher.prototype._actions;
196
+ /**
197
+ * @type {?}
198
+ * @private
199
+ */
200
+ InternalDispatcher.prototype._actionResults;
201
+ /**
202
+ * @type {?}
203
+ * @private
204
+ */
205
+ InternalDispatcher.prototype._pluginManager;
206
+ /**
207
+ * @type {?}
208
+ * @private
209
+ */
210
+ InternalDispatcher.prototype._stateStream;
211
+ /**
212
+ * @type {?}
213
+ * @private
214
+ */
215
+ InternalDispatcher.prototype._ngxsExecutionStrategy;
216
+ }
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2ludGVybmFsL2Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBK0IsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLE9BQXNCOzs7WUFEMUUsVUFBVTs7QUFJWCxNQUFNLE9BQU8sa0JBQWtCOzs7Ozs7Ozs7SUFHN0IsWUFDVSxTQUFtQixFQUNuQixRQUF5QixFQUN6QixjQUErQyxFQUMvQyxjQUE2QixFQUM3QixZQUF5QixFQUN6QixzQkFBcUQ7UUFMckQsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUM7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Y3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZmlsdGVyLCBzaGFyZVJlcGxheSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgY29tcG9zZSB9IGZyb20gJy4uL3V0aWxzL2NvbXBvc2UnO1xuaW1wb3J0IHsgQWN0aW9uQ29udGV4dCwgQWN0aW9uU3RhdHVzLCBJbnRlcm5hbEFjdGlvbnMgfSBmcm9tICcuLi9hY3Rpb25zLXN0cmVhbSc7XG5pbXBvcnQgeyBTdGF0ZVN0cmVhbSB9IGZyb20gJy4vc3RhdGUtc3RyZWFtJztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuLi9wbHVnaW4tbWFuYWdlcic7XG5pbXBvcnQgeyBJbnRlcm5hbE5neHNFeGVjdXRpb25TdHJhdGVneSB9IGZyb20gJy4uL2V4ZWN1dGlvbi9pbnRlcm5hbC1uZ3hzLWV4ZWN1dGlvbi1zdHJhdGVneSc7XG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuLi9vcGVyYXRvcnMvbGVhdmUtbmd4cyc7XG5pbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuXG4vKipcbiAqIEludGVybmFsIEFjdGlvbiByZXN1bHQgc3RyZWFtIHRoYXQgaXMgZW1pdHRlZCB3aGVuIGFuIGFjdGlvbiBpcyBjb21wbGV0ZWQuXG4gKiBUaGlzIGlzIHVzZWQgYXMgYSBtZXRob2Qgb2YgcmV0dXJuaW5nIHRoZSBhY3Rpb24gcmVzdWx0IHRvIHRoZSBkaXNwYXRjaGVyXG4gKiBmb3IgdGhlIG9ic2VydmFibGUgcmV0dXJuZWQgYnkgdGhlIGRpc3BhdGNoKC4uLikgY2FsbC5cbiAqIFRoZSBkaXNwYXRjaGVyIHRoZW4gYXN5bmNocm9ub3VzbHkgcHVzaGVzIHRoZSByZXN1bHQgZnJvbSB0aGlzIHN0cmVhbSBvbnRvIHRoZSBtYWluIGFjdGlvbiBzdHJlYW0gYXMgYSByZXN1bHQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbERpc3BhdGNoZWRBY3Rpb25SZXN1bHRzIGV4dGVuZHMgU3ViamVjdDxBY3Rpb25Db250ZXh0PiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxEaXNwYXRjaGVyIHtcbiAgcHJpdmF0ZSBfZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgX2FjdGlvbnM6IEludGVybmFsQWN0aW9ucyxcbiAgICBwcml2YXRlIF9hY3Rpb25SZXN1bHRzOiBJbnRlcm5hbERpc3BhdGNoZWRBY3Rpb25SZXN1bHRzLFxuICAgIHByaXZhdGUgX3BsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIsXG4gICAgcHJpdmF0ZSBfc3RhdGVTdHJlYW06IFN0YXRlU3RyZWFtLFxuICAgIHByaXZhdGUgX25neHNFeGVjdXRpb25TdHJhdGVneTogSW50ZXJuYWxOZ3hzRXhlY3V0aW9uU3RyYXRlZ3lcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGV2ZW50KHMpLlxuICAgKi9cbiAgZGlzcGF0Y2goYWN0aW9uT3JBY3Rpb25zOiBhbnkgfCBhbnlbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fbmd4c0V4ZWN1dGlvblN0cmF0ZWd5LmVudGVyKCgpID0+XG4gICAgICB0aGlzLmRpc3BhdGNoQnlFdmVudHMoYWN0aW9uT3JBY3Rpb25zKVxuICAgICk7XG5cbiAgICByZXN1bHQuc3Vic2NyaWJlKHtcbiAgICAgIGVycm9yOiBlcnJvciA9PlxuICAgICAgICB0aGlzLl9uZ3hzRXhlY3V0aW9uU3RyYXRlZ3kubGVhdmUoKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBSZXRyaWV2ZSBsYXppbHkgdG8gYXZvaWQgY3ljbGljIGRlcGVuZGVuY3kgZXhjZXB0aW9uXG4gICAgICAgICAgICB0aGlzLl9lcnJvckhhbmRsZXIgPSB0aGlzLl9lcnJvckhhbmRsZXIgfHwgdGhpcy5faW5qZWN0b3IuZ2V0KEVycm9ySGFuZGxlcik7XG4gICAgICAgICAgICB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfSlcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQucGlwZShsZWF2ZU5neHModGhpcy5fbmd4c0V4ZWN1dGlvblN0cmF0ZWd5KSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoQnlFdmVudHMoYWN0aW9uT3JBY3Rpb25zOiBhbnkgfCBhbnlbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uT3JBY3Rpb25zKSkge1xuICAgICAgaWYgKGFjdGlvbk9yQWN0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiBvZih0aGlzLl9zdGF0ZVN0cmVhbS5nZXRWYWx1ZSgpKTtcbiAgICAgIHJldHVybiBmb3JrSm9pbihhY3Rpb25PckFjdGlvbnMubWFwKGFjdGlvbiA9PiB0aGlzLmRpc3BhdGNoU2luZ2xlKGFjdGlvbikpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hTaW5nbGUoYWN0aW9uT3JBY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoU2luZ2xlKGFjdGlvbjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbik7XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgYFRoaXMgYWN0aW9uIGRvZXNuJ3QgaGF2ZSBhIHR5cGUgcHJvcGVydHk6ICR7YWN0aW9uLmNvbnN0cnVjdG9yLm5hbWV9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLl9zdGF0ZVN0cmVhbS5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLl9wbHVnaW5NYW5hZ2VyLnBsdWdpbnM7XG5cbiAgICByZXR1cm4gKGNvbXBvc2UoW1xuICAgICAgLi4ucGx1Z2lucyxcbiAgICAgIChuZXh0U3RhdGU6IGFueSwgbmV4dEFjdGlvbjogYW55KSA9PiB7XG4gICAgICAgIGlmIChuZXh0U3RhdGUgIT09IHByZXZTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuX3N0YXRlU3RyZWFtLm5leHQobmV4dFN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3Rpb25SZXN1bHQkID0gdGhpcy5nZXRBY3Rpb25SZXN1bHRTdHJlYW0obmV4dEFjdGlvbik7XG4gICAgICAgIGFjdGlvblJlc3VsdCQuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLl9hY3Rpb25zLm5leHQoY3R4KSk7XG4gICAgICAgIHRoaXMuX2FjdGlvbnMubmV4dCh7IGFjdGlvbjogbmV4dEFjdGlvbiwgc3RhdHVzOiBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZCB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGlzcGF0Y2hPYnNlcnZhYmxlKGFjdGlvblJlc3VsdCQpO1xuICAgICAgfVxuICAgIF0pKHByZXZTdGF0ZSwgYWN0aW9uKSBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGlvblJlc3VsdFN0cmVhbShhY3Rpb246IGFueSk6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25SZXN1bHRzLnBpcGUoXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIChjdHg6IEFjdGlvbkNvbnRleHQpID0+IGN0eC5hY3Rpb24gPT09IGFjdGlvbiAmJiBjdHguc3RhdHVzICE9PSBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZFxuICAgICAgKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGlzcGF0Y2hPYnNlcnZhYmxlKGFjdGlvblJlc3VsdCQ6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBhY3Rpb25SZXN1bHQkXG4gICAgICAucGlwZShcbiAgICAgICAgZXhoYXVzdE1hcCgoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChjdHguc3RhdHVzKSB7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5TdWNjZXNzZnVsOlxuICAgICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fc3RhdGVTdHJlYW0uZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5FcnJvcmVkOlxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihjdHguZXJyb3IpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHNoYXJlUmVwbGF5KCkpO1xuICB9XG59XG4iXX0=