@ngxs/store 3.7.3-dev.master-10b0883 → 3.7.4

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 (256) 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 +392 -392
  6. package/bundles/ngxs-store-internals.umd.js.map +1 -1
  7. package/bundles/ngxs-store-internals.umd.min.js.map +1 -1
  8. package/bundles/ngxs-store-operators.umd.js +310 -311
  9. package/bundles/ngxs-store-operators.umd.js.map +1 -1
  10. package/bundles/ngxs-store-operators.umd.min.js +1 -1
  11. package/bundles/ngxs-store-operators.umd.min.js.map +1 -1
  12. package/bundles/ngxs-store.umd.js +4474 -4478
  13. package/bundles/ngxs-store.umd.js.map +1 -1
  14. package/bundles/ngxs-store.umd.min.js.map +1 -1
  15. package/esm2015/index.js +13 -13
  16. package/esm2015/internals/angular.js +20 -20
  17. package/esm2015/internals/decorator-injector-adapter.js +204 -204
  18. package/esm2015/internals/index.js +11 -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 +8 -8
  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 +22 -22
  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 -38
  43. package/esm2015/operators/remove-item.js +34 -34
  44. package/esm2015/operators/update-item.js +52 -54
  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 -138
  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 +49 -49
  52. package/esm2015/src/decorators/select/select.js +81 -81
  53. package/esm2015/src/decorators/select/symbols.js +94 -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 +83 -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 +217 -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 +449 -449
  67. package/esm2015/src/internal/state-operations.js +133 -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 +157 -157
  72. package/esm2015/src/modules/ngxs-feature.module.js +63 -63
  73. package/esm2015/src/modules/ngxs-root.module.js +52 -52
  74. package/esm2015/src/operators/leave-ngxs.js +58 -58
  75. package/esm2015/src/operators/of-action.js +191 -197
  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 +220 -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/decorator-injector-adapter.js +204 -204
  92. package/esm5/internals/index.js +11 -11
  93. package/esm5/internals/initial-state.js +45 -45
  94. package/esm5/internals/internal-tokens.js +16 -16
  95. package/esm5/internals/memoize.js +71 -71
  96. package/esm5/internals/ngxs-bootstrapper.js +56 -56
  97. package/esm5/internals/ngxs-store-internals.js +8 -8
  98. package/esm5/internals/src/symbols.js +14 -14
  99. package/esm5/internals/symbols.js +14 -14
  100. package/esm5/internals/testing/fresh-platform.js +121 -121
  101. package/esm5/internals/testing/helpers/ngxs-test.component.js +32 -32
  102. package/esm5/internals/testing/helpers/ngxs-test.module.js +32 -32
  103. package/esm5/internals/testing/index.js +8 -8
  104. package/esm5/internals/testing/ngxs-store-internals-testing.js +8 -8
  105. package/esm5/internals/testing/ngxs.setup.js +98 -98
  106. package/esm5/internals/testing/skip-console-logging.js +62 -62
  107. package/esm5/internals/testing/symbol.js +29 -29
  108. package/esm5/ngxs-store.js +22 -22
  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 -39
  117. package/esm5/operators/remove-item.js +34 -34
  118. package/esm5/operators/update-item.js +52 -54
  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 +186 -184
  123. package/esm5/src/configs/messages.config.js +79 -79
  124. package/esm5/src/decorators/action.js +60 -60
  125. package/esm5/src/decorators/select/select-factory.js +50 -50
  126. package/esm5/src/decorators/select/select.js +87 -87
  127. package/esm5/src/decorators/select/symbols.js +95 -95
  128. package/esm5/src/decorators/selector/selector.js +59 -59
  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 -84
  132. package/esm5/src/execution/dispatch-outside-zone-ngxs-execution-strategy.js +123 -123
  133. package/esm5/src/execution/internal-ngxs-execution-strategy.js +54 -54
  134. package/esm5/src/execution/noop-ngxs-execution-strategy.js +43 -43
  135. package/esm5/src/execution/symbols.js +52 -52
  136. package/esm5/src/internal/dispatcher.js +253 -253
  137. package/esm5/src/internal/internals.js +495 -495
  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 -575
  141. package/esm5/src/internal/state-operations.js +143 -143
  142. package/esm5/src/internal/state-operators.js +34 -34
  143. package/esm5/src/internal/state-stream.js +37 -37
  144. package/esm5/src/ivy/ivy-enabled-in-dev-mode.js +28 -28
  145. package/esm5/src/module.js +200 -200
  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 -223
  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 +241 -241
  157. package/esm5/src/symbols.js +229 -229
  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 -78
  162. package/esm5/src/utils/utils.js +151 -151
  163. package/fesm2015/ngxs-store-internals-testing.js +274 -274
  164. package/fesm2015/ngxs-store-internals-testing.js.map +1 -1
  165. package/fesm2015/ngxs-store-internals.js +373 -373
  166. package/fesm2015/ngxs-store-internals.js.map +1 -1
  167. package/fesm2015/ngxs-store-operators.js +312 -313
  168. package/fesm2015/ngxs-store-operators.js.map +1 -1
  169. package/fesm2015/ngxs-store.js +3990 -3994
  170. package/fesm2015/ngxs-store.js.map +1 -1
  171. package/fesm5/ngxs-store-internals-testing.js +321 -321
  172. package/fesm5/ngxs-store-internals-testing.js.map +1 -1
  173. package/fesm5/ngxs-store-internals.js +398 -398
  174. package/fesm5/ngxs-store-internals.js.map +1 -1
  175. package/fesm5/ngxs-store-operators.js +316 -317
  176. package/fesm5/ngxs-store-operators.js.map +1 -1
  177. package/fesm5/ngxs-store.js +4486 -4490
  178. package/fesm5/ngxs-store.js.map +1 -1
  179. package/index.d.ts +8 -8
  180. package/internals/angular.d.ts +1 -1
  181. package/internals/decorator-injector-adapter.d.ts +15 -15
  182. package/internals/index.d.ts +7 -7
  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/src/symbols.d.ts +7 -7
  189. package/internals/symbols.d.ts +7 -7
  190. package/internals/testing/fresh-platform.d.ts +1 -1
  191. package/internals/testing/helpers/ngxs-test.component.d.ts +5 -5
  192. package/internals/testing/helpers/ngxs-test.module.d.ts +4 -4
  193. package/internals/testing/index.d.ts +4 -4
  194. package/internals/testing/ngxs-store-internals-testing.d.ts +4 -4
  195. package/internals/testing/ngxs.setup.d.ts +7 -7
  196. package/internals/testing/skip-console-logging.d.ts +1 -1
  197. package/internals/testing/symbol.d.ts +14 -14
  198. package/ngxs-store.d.ts +19 -19
  199. package/ngxs-store.metadata.json +1 -1
  200. package/operators/append.d.ts +6 -6
  201. package/operators/compose.d.ts +2 -3
  202. package/operators/iif.d.ts +11 -11
  203. package/operators/index.d.ts +13 -13
  204. package/operators/insert-item.d.ts +7 -7
  205. package/operators/internals.d.ts +2 -2
  206. package/operators/ngxs-store-operators.d.ts +4 -4
  207. package/operators/ngxs-store-operators.metadata.json +1 -1
  208. package/operators/patch.d.ts +10 -6
  209. package/operators/remove-item.d.ts +7 -7
  210. package/operators/update-item.d.ts +10 -10
  211. package/operators/utils.d.ts +9 -10
  212. package/package.json +2 -2
  213. package/src/actions/actions.d.ts +15 -15
  214. package/src/actions/symbols.d.ts +21 -21
  215. package/src/actions-stream.d.ts +49 -49
  216. package/src/configs/messages.config.d.ts +11 -11
  217. package/src/decorators/action.d.ts +5 -5
  218. package/src/decorators/select/select-factory.d.ts +13 -13
  219. package/src/decorators/select/select.d.ts +4 -4
  220. package/src/decorators/select/symbols.d.ts +14 -14
  221. package/src/decorators/selector/selector.d.ts +5 -5
  222. package/src/decorators/selector/symbols.d.ts +4 -4
  223. package/src/decorators/selector-options.d.ts +5 -5
  224. package/src/decorators/state.d.ts +6 -6
  225. package/src/execution/dispatch-outside-zone-ngxs-execution-strategy.d.ts +11 -11
  226. package/src/execution/internal-ngxs-execution-strategy.d.ts +7 -7
  227. package/src/execution/noop-ngxs-execution-strategy.d.ts +5 -5
  228. package/src/execution/symbols.d.ts +10 -10
  229. package/src/internal/dispatcher.d.ts +32 -32
  230. package/src/internal/internals.d.ts +166 -166
  231. package/src/internal/lifecycle-state-manager.d.ts +20 -20
  232. package/src/internal/state-context-factory.d.ts +15 -15
  233. package/src/internal/state-factory.d.ts +57 -57
  234. package/src/internal/state-operations.d.ts +19 -19
  235. package/src/internal/state-operators.d.ts +2 -2
  236. package/src/internal/state-stream.d.ts +11 -11
  237. package/src/ivy/ivy-enabled-in-dev-mode.d.ts +6 -6
  238. package/src/module.d.ts +23 -23
  239. package/src/modules/ngxs-feature.module.d.ts +13 -13
  240. package/src/modules/ngxs-root.module.d.ts +13 -13
  241. package/src/operators/leave-ngxs.d.ts +7 -7
  242. package/src/operators/of-action.d.ts +43 -56
  243. package/src/plugin-manager.d.ts +10 -10
  244. package/src/plugin_api.d.ts +5 -5
  245. package/src/public_api.d.ts +17 -17
  246. package/src/public_to_deprecate.d.ts +21 -21
  247. package/src/state-token/state-token.d.ts +7 -7
  248. package/src/state-token/symbols.d.ts +5 -5
  249. package/src/store.d.ts +59 -59
  250. package/src/symbols.d.ts +138 -138
  251. package/src/utils/compose.d.ts +23 -23
  252. package/src/utils/freeze.d.ts +5 -5
  253. package/src/utils/selector-utils.d.ts +23 -23
  254. package/src/utils/store-validators.d.ts +7 -7
  255. package/src/utils/utils.d.ts +46 -46
  256. package/types/index.d.ts +2 -2
@@ -1,217 +1,217 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3hzL3N0b3JlLyIsInNvdXJjZXMiOlsic3JjL2ludGVybmFsL2Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBK0IsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLE9BQXNCOzs7WUFEMUUsVUFBVTs7QUFJWCxNQUFNLE9BQU8sa0JBQWtCOzs7Ozs7Ozs7SUFHN0IsWUFDVSxTQUFtQixFQUNuQixRQUF5QixFQUN6QixjQUErQyxFQUMvQyxjQUE2QixFQUM3QixZQUF5QixFQUN6QixzQkFBcUQ7UUFMckQsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUM7UUFDL0MsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUErQjtJQUM1RCxDQUFDOzs7Ozs7SUFLSixRQUFRLENBQUMsZUFBNEI7O2NBQzdCLE1BQU0sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSzs7O1FBQUMsR0FBRyxFQUFFLENBQ3BELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsRUFDdkM7UUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ2YsS0FBSzs7OztZQUFFLEtBQUssQ0FBQyxFQUFFLENBQ2IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUs7OztZQUFDLEdBQUcsRUFBRTtnQkFDckMsSUFBSTtvQkFDRix1REFBdUQ7b0JBQ3ZELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDNUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3ZDO2dCQUFDLFdBQU0sR0FBRTtZQUNaLENBQUMsRUFBQyxDQUFBO1NBQ0wsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7Ozs7OztJQUVPLGdCQUFnQixDQUFDLGVBQTRCO1FBQ25ELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUNsQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDMUUsT0FBTyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUc7Ozs7WUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1NBQzdFO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDOzs7Ozs7SUFFTyxjQUFjLENBQUMsTUFBVzs7Y0FDMUIsSUFBSSxHQUF1Qix5QkFBeUIsQ0FBQyxNQUFNLENBQUM7UUFDbEUsSUFBSSxDQUFDLElBQUksRUFBRTs7a0JBQ0gsS0FBSyxHQUFHLElBQUksS0FBSyxDQUNyQiw2Q0FBNkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FDdkU7WUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQjs7Y0FFSyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUU7O2NBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87UUFFM0MsT0FBTyxDQUFDLG1CQUFBLE9BQU8sQ0FBQztZQUNkLEdBQUcsT0FBTzs7Ozs7O1lBQ1YsQ0FBQyxTQUFjLEVBQUUsVUFBZSxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ25DOztzQkFDSyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztnQkFDNUQsYUFBYSxDQUFDLFNBQVM7Ozs7Z0JBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBeUIsRUFBRSxDQUFDLENBQUM7Z0JBQzVFLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3RELENBQUM7U0FDRixDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7Ozs7O0lBRU8scUJBQXFCLENBQUMsTUFBVztRQUN2QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM3QixNQUFNOzs7O1FBQ0osQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxrQ0FBNEIsRUFDeEYsRUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsV0FBVyxFQUFFLENBQ2QsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUVPLHdCQUF3QixDQUFDLGFBQXdDO1FBQ3ZFLE9BQU8sYUFBYTthQUNqQixJQUFJLENBQ0gsVUFBVTs7OztRQUFDLENBQUMsR0FBa0IsRUFBRSxFQUFFO1lBQ2hDLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRTtnQkFDbEI7b0JBQ0UsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQztvQkFDRSxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CO29CQUNFLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1FBQ0gsQ0FBQyxFQUFDLENBQ0g7YUFDQSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDOzs7WUEvRkYsVUFBVTs7OztZQXJCd0IsUUFBUTtZQUtMLGVBQWU7WUF1QnpCLCtCQUErQjtZQXJCbEQsYUFBYTtZQURiLFdBQVc7WUFFWCw2QkFBNkI7Ozs7Ozs7SUFlcEMsMkNBQW9DOzs7OztJQUdsQyx1Q0FBMkI7Ozs7O0lBQzNCLHNDQUFpQzs7Ozs7SUFDakMsNENBQXVEOzs7OztJQUN2RCw0Q0FBcUM7Ozs7O0lBQ3JDLDBDQUFpQzs7Ozs7SUFDakMsb0RBQTZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZmlsdGVyLCBzaGFyZVJlcGxheSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgY29tcG9zZSB9IGZyb20gJy4uL3V0aWxzL2NvbXBvc2UnO1xuaW1wb3J0IHsgQWN0aW9uQ29udGV4dCwgQWN0aW9uU3RhdHVzLCBJbnRlcm5hbEFjdGlvbnMgfSBmcm9tICcuLi9hY3Rpb25zLXN0cmVhbSc7XG5pbXBvcnQgeyBTdGF0ZVN0cmVhbSB9IGZyb20gJy4vc3RhdGUtc3RyZWFtJztcbmltcG9ydCB7IFBsdWdpbk1hbmFnZXIgfSBmcm9tICcuLi9wbHVnaW4tbWFuYWdlcic7XG5pbXBvcnQgeyBJbnRlcm5hbE5neHNFeGVjdXRpb25TdHJhdGVneSB9IGZyb20gJy4uL2V4ZWN1dGlvbi9pbnRlcm5hbC1uZ3hzLWV4ZWN1dGlvbi1zdHJhdGVneSc7XG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuLi9vcGVyYXRvcnMvbGVhdmUtbmd4cyc7XG5pbXBvcnQgeyBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuXG4vKipcbiAqIEludGVybmFsIEFjdGlvbiByZXN1bHQgc3RyZWFtIHRoYXQgaXMgZW1pdHRlZCB3aGVuIGFuIGFjdGlvbiBpcyBjb21wbGV0ZWQuXG4gKiBUaGlzIGlzIHVzZWQgYXMgYSBtZXRob2Qgb2YgcmV0dXJuaW5nIHRoZSBhY3Rpb24gcmVzdWx0IHRvIHRoZSBkaXNwYXRjaGVyXG4gKiBmb3IgdGhlIG9ic2VydmFibGUgcmV0dXJuZWQgYnkgdGhlIGRpc3BhdGNoKC4uLikgY2FsbC5cbiAqIFRoZSBkaXNwYXRjaGVyIHRoZW4gYXN5bmNocm9ub3VzbHkgcHVzaGVzIHRoZSByZXN1bHQgZnJvbSB0aGlzIHN0cmVhbSBvbnRvIHRoZSBtYWluIGFjdGlvbiBzdHJlYW0gYXMgYSByZXN1bHQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbERpc3BhdGNoZWRBY3Rpb25SZXN1bHRzIGV4dGVuZHMgU3ViamVjdDxBY3Rpb25Db250ZXh0PiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxEaXNwYXRjaGVyIHtcbiAgcHJpdmF0ZSBfZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgX2FjdGlvbnM6IEludGVybmFsQWN0aW9ucyxcbiAgICBwcml2YXRlIF9hY3Rpb25SZXN1bHRzOiBJbnRlcm5hbERpc3BhdGNoZWRBY3Rpb25SZXN1bHRzLFxuICAgIHByaXZhdGUgX3BsdWdpbk1hbmFnZXI6IFBsdWdpbk1hbmFnZXIsXG4gICAgcHJpdmF0ZSBfc3RhdGVTdHJlYW06IFN0YXRlU3RyZWFtLFxuICAgIHByaXZhdGUgX25neHNFeGVjdXRpb25TdHJhdGVneTogSW50ZXJuYWxOZ3hzRXhlY3V0aW9uU3RyYXRlZ3lcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGV2ZW50KHMpLlxuICAgKi9cbiAgZGlzcGF0Y2goYWN0aW9uT3JBY3Rpb25zOiBhbnkgfCBhbnlbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fbmd4c0V4ZWN1dGlvblN0cmF0ZWd5LmVudGVyKCgpID0+XG4gICAgICB0aGlzLmRpc3BhdGNoQnlFdmVudHMoYWN0aW9uT3JBY3Rpb25zKVxuICAgICk7XG5cbiAgICByZXN1bHQuc3Vic2NyaWJlKHtcbiAgICAgIGVycm9yOiBlcnJvciA9PlxuICAgICAgICB0aGlzLl9uZ3hzRXhlY3V0aW9uU3RyYXRlZ3kubGVhdmUoKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBSZXRyaWV2ZSBsYXppbHkgdG8gYXZvaWQgY3ljbGljIGRlcGVuZGVuY3kgZXhjZXB0aW9uXG4gICAgICAgICAgICB0aGlzLl9lcnJvckhhbmRsZXIgPSB0aGlzLl9lcnJvckhhbmRsZXIgfHwgdGhpcy5faW5qZWN0b3IuZ2V0KEVycm9ySGFuZGxlcik7XG4gICAgICAgICAgICB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfSlcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQucGlwZShsZWF2ZU5neHModGhpcy5fbmd4c0V4ZWN1dGlvblN0cmF0ZWd5KSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoQnlFdmVudHMoYWN0aW9uT3JBY3Rpb25zOiBhbnkgfCBhbnlbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uT3JBY3Rpb25zKSkge1xuICAgICAgaWYgKGFjdGlvbk9yQWN0aW9ucy5sZW5ndGggPT09IDApIHJldHVybiBvZih0aGlzLl9zdGF0ZVN0cmVhbS5nZXRWYWx1ZSgpKTtcbiAgICAgIHJldHVybiBmb3JrSm9pbihhY3Rpb25PckFjdGlvbnMubWFwKGFjdGlvbiA9PiB0aGlzLmRpc3BhdGNoU2luZ2xlKGFjdGlvbikpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hTaW5nbGUoYWN0aW9uT3JBY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc3BhdGNoU2luZ2xlKGFjdGlvbjogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbik7XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgYFRoaXMgYWN0aW9uIGRvZXNuJ3QgaGF2ZSBhIHR5cGUgcHJvcGVydHk6ICR7YWN0aW9uLmNvbnN0cnVjdG9yLm5hbWV9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLl9zdGF0ZVN0cmVhbS5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLl9wbHVnaW5NYW5hZ2VyLnBsdWdpbnM7XG5cbiAgICByZXR1cm4gKGNvbXBvc2UoW1xuICAgICAgLi4ucGx1Z2lucyxcbiAgICAgIChuZXh0U3RhdGU6IGFueSwgbmV4dEFjdGlvbjogYW55KSA9PiB7XG4gICAgICAgIGlmIChuZXh0U3RhdGUgIT09IHByZXZTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuX3N0YXRlU3RyZWFtLm5leHQobmV4dFN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3Rpb25SZXN1bHQkID0gdGhpcy5nZXRBY3Rpb25SZXN1bHRTdHJlYW0obmV4dEFjdGlvbik7XG4gICAgICAgIGFjdGlvblJlc3VsdCQuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLl9hY3Rpb25zLm5leHQoY3R4KSk7XG4gICAgICAgIHRoaXMuX2FjdGlvbnMubmV4dCh7IGFjdGlvbjogbmV4dEFjdGlvbiwgc3RhdHVzOiBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZCB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGlzcGF0Y2hPYnNlcnZhYmxlKGFjdGlvblJlc3VsdCQpO1xuICAgICAgfVxuICAgIF0pKHByZXZTdGF0ZSwgYWN0aW9uKSBhcyBPYnNlcnZhYmxlPGFueT4pLnBpcGUoc2hhcmVSZXBsYXkoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGlvblJlc3VsdFN0cmVhbShhY3Rpb246IGFueSk6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25SZXN1bHRzLnBpcGUoXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIChjdHg6IEFjdGlvbkNvbnRleHQpID0+IGN0eC5hY3Rpb24gPT09IGFjdGlvbiAmJiBjdHguc3RhdHVzICE9PSBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZFxuICAgICAgKSxcbiAgICAgIHRha2UoMSksXG4gICAgICBzaGFyZVJlcGxheSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGlzcGF0Y2hPYnNlcnZhYmxlKGFjdGlvblJlc3VsdCQ6IE9ic2VydmFibGU8QWN0aW9uQ29udGV4dD4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBhY3Rpb25SZXN1bHQkXG4gICAgICAucGlwZShcbiAgICAgICAgZXhoYXVzdE1hcCgoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChjdHguc3RhdHVzKSB7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5TdWNjZXNzZnVsOlxuICAgICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fc3RhdGVTdHJlYW0uZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5FcnJvcmVkOlxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihjdHguZXJyb3IpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKHNoYXJlUmVwbGF5KCkpO1xuICB9XG59XG4iXX0=
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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Y3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGV4aGF1c3RNYXAsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBjb21wb3NlIH0gZnJvbSAnLi4vdXRpbHMvY29tcG9zZSc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRleHQsIEFjdGlvblN0YXR1cywgSW50ZXJuYWxBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9ucy1zdHJlYW0nO1xyXG5pbXBvcnQgeyBTdGF0ZVN0cmVhbSB9IGZyb20gJy4vc3RhdGUtc3RyZWFtJztcclxuaW1wb3J0IHsgUGx1Z2luTWFuYWdlciB9IGZyb20gJy4uL3BsdWdpbi1tYW5hZ2VyJztcclxuaW1wb3J0IHsgSW50ZXJuYWxOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9leGVjdXRpb24vaW50ZXJuYWwtbmd4cy1leGVjdXRpb24tc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBsZWF2ZU5neHMgfSBmcm9tICcuLi9vcGVyYXRvcnMvbGVhdmUtbmd4cyc7XHJcbmltcG9ydCB7IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UgfSBmcm9tICcuLi91dGlscy91dGlscyc7XHJcblxyXG4vKipcclxuICogSW50ZXJuYWwgQWN0aW9uIHJlc3VsdCBzdHJlYW0gdGhhdCBpcyBlbWl0dGVkIHdoZW4gYW4gYWN0aW9uIGlzIGNvbXBsZXRlZC5cclxuICogVGhpcyBpcyB1c2VkIGFzIGEgbWV0aG9kIG9mIHJldHVybmluZyB0aGUgYWN0aW9uIHJlc3VsdCB0byB0aGUgZGlzcGF0Y2hlclxyXG4gKiBmb3IgdGhlIG9ic2VydmFibGUgcmV0dXJuZWQgYnkgdGhlIGRpc3BhdGNoKC4uLikgY2FsbC5cclxuICogVGhlIGRpc3BhdGNoZXIgdGhlbiBhc3luY2hyb25vdXNseSBwdXNoZXMgdGhlIHJlc3VsdCBmcm9tIHRoaXMgc3RyZWFtIG9udG8gdGhlIG1haW4gYWN0aW9uIHN0cmVhbSBhcyBhIHJlc3VsdC5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEludGVybmFsRGlzcGF0Y2hlZEFjdGlvblJlc3VsdHMgZXh0ZW5kcyBTdWJqZWN0PEFjdGlvbkNvbnRleHQ+IHt9XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBJbnRlcm5hbERpc3BhdGNoZXIge1xyXG4gIHByaXZhdGUgX2Vycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgX2FjdGlvbnM6IEludGVybmFsQWN0aW9ucyxcclxuICAgIHByaXZhdGUgX2FjdGlvblJlc3VsdHM6IEludGVybmFsRGlzcGF0Y2hlZEFjdGlvblJlc3VsdHMsXHJcbiAgICBwcml2YXRlIF9wbHVnaW5NYW5hZ2VyOiBQbHVnaW5NYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBfc3RhdGVTdHJlYW06IFN0YXRlU3RyZWFtLFxyXG4gICAgcHJpdmF0ZSBfbmd4c0V4ZWN1dGlvblN0cmF0ZWd5OiBJbnRlcm5hbE5neHNFeGVjdXRpb25TdHJhdGVneVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGF0Y2hlcyBldmVudChzKS5cclxuICAgKi9cclxuICBkaXNwYXRjaChhY3Rpb25PckFjdGlvbnM6IGFueSB8IGFueVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX25neHNFeGVjdXRpb25TdHJhdGVneS5lbnRlcigoKSA9PlxyXG4gICAgICB0aGlzLmRpc3BhdGNoQnlFdmVudHMoYWN0aW9uT3JBY3Rpb25zKVxyXG4gICAgKTtcclxuXHJcbiAgICByZXN1bHQuc3Vic2NyaWJlKHtcclxuICAgICAgZXJyb3I6IGVycm9yID0+XHJcbiAgICAgICAgdGhpcy5fbmd4c0V4ZWN1dGlvblN0cmF0ZWd5LmxlYXZlKCgpID0+IHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIFJldHJpZXZlIGxhemlseSB0byBhdm9pZCBjeWNsaWMgZGVwZW5kZW5jeSBleGNlcHRpb25cclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JIYW5kbGVyID0gdGhpcy5fZXJyb3JIYW5kbGVyIHx8IHRoaXMuX2luamVjdG9yLmdldChFcnJvckhhbmRsZXIpO1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgfSBjYXRjaCB7fVxyXG4gICAgICAgIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0LnBpcGUobGVhdmVOZ3hzKHRoaXMuX25neHNFeGVjdXRpb25TdHJhdGVneSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwYXRjaEJ5RXZlbnRzKGFjdGlvbk9yQWN0aW9uczogYW55IHwgYW55W10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYWN0aW9uT3JBY3Rpb25zKSkge1xyXG4gICAgICBpZiAoYWN0aW9uT3JBY3Rpb25zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG9mKHRoaXMuX3N0YXRlU3RyZWFtLmdldFZhbHVlKCkpO1xyXG4gICAgICByZXR1cm4gZm9ya0pvaW4oYWN0aW9uT3JBY3Rpb25zLm1hcChhY3Rpb24gPT4gdGhpcy5kaXNwYXRjaFNpbmdsZShhY3Rpb24pKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaFNpbmdsZShhY3Rpb25PckFjdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaXNwYXRjaFNpbmdsZShhY3Rpb246IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBnZXRBY3Rpb25UeXBlRnJvbUluc3RhbmNlKGFjdGlvbik7XHJcbiAgICBpZiAoIXR5cGUpIHtcclxuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXHJcbiAgICAgICAgYFRoaXMgYWN0aW9uIGRvZXNuJ3QgaGF2ZSBhIHR5cGUgcHJvcGVydHk6ICR7YWN0aW9uLmNvbnN0cnVjdG9yLm5hbWV9YFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5fc3RhdGVTdHJlYW0uZ2V0VmFsdWUoKTtcclxuICAgIGNvbnN0IHBsdWdpbnMgPSB0aGlzLl9wbHVnaW5NYW5hZ2VyLnBsdWdpbnM7XHJcblxyXG4gICAgcmV0dXJuIChjb21wb3NlKFtcclxuICAgICAgLi4ucGx1Z2lucyxcclxuICAgICAgKG5leHRTdGF0ZTogYW55LCBuZXh0QWN0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobmV4dFN0YXRlICE9PSBwcmV2U3RhdGUpIHtcclxuICAgICAgICAgIHRoaXMuX3N0YXRlU3RyZWFtLm5leHQobmV4dFN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYWN0aW9uUmVzdWx0JCA9IHRoaXMuZ2V0QWN0aW9uUmVzdWx0U3RyZWFtKG5leHRBY3Rpb24pO1xyXG4gICAgICAgIGFjdGlvblJlc3VsdCQuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLl9hY3Rpb25zLm5leHQoY3R4KSk7XHJcbiAgICAgICAgdGhpcy5fYWN0aW9ucy5uZXh0KHsgYWN0aW9uOiBuZXh0QWN0aW9uLCBzdGF0dXM6IEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURpc3BhdGNoT2JzZXJ2YWJsZShhY3Rpb25SZXN1bHQkKTtcclxuICAgICAgfVxyXG4gICAgXSkocHJldlN0YXRlLCBhY3Rpb24pIGFzIE9ic2VydmFibGU8YW55PikucGlwZShzaGFyZVJlcGxheSgpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWN0aW9uUmVzdWx0U3RyZWFtKGFjdGlvbjogYW55KTogT2JzZXJ2YWJsZTxBY3Rpb25Db250ZXh0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uUmVzdWx0cy5waXBlKFxyXG4gICAgICBmaWx0ZXIoXHJcbiAgICAgICAgKGN0eDogQWN0aW9uQ29udGV4dCkgPT4gY3R4LmFjdGlvbiA9PT0gYWN0aW9uICYmIGN0eC5zdGF0dXMgIT09IEFjdGlvblN0YXR1cy5EaXNwYXRjaGVkXHJcbiAgICAgICksXHJcbiAgICAgIHRha2UoMSksXHJcbiAgICAgIHNoYXJlUmVwbGF5KClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZURpc3BhdGNoT2JzZXJ2YWJsZShhY3Rpb25SZXN1bHQkOiBPYnNlcnZhYmxlPEFjdGlvbkNvbnRleHQ+KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiBhY3Rpb25SZXN1bHQkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGV4aGF1c3RNYXAoKGN0eDogQWN0aW9uQ29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoIChjdHguc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQWN0aW9uU3RhdHVzLlN1Y2Nlc3NmdWw6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuX3N0YXRlU3RyZWFtLmdldFZhbHVlKCkpO1xyXG4gICAgICAgICAgICBjYXNlIEFjdGlvblN0YXR1cy5FcnJvcmVkOlxyXG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGN0eC5lcnJvcik7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==