@ngxs/store 18.1.6-dev.master-d290a0e → 18.1.6-dev.master-0ae2066
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.
- package/experimental/index.d.ts +6 -5
- package/fesm2022/ngxs-store-experimental.mjs +8 -25
- package/fesm2022/ngxs-store-experimental.mjs.map +1 -1
- package/fesm2022/ngxs-store-internals-testing.mjs +8 -9
- package/fesm2022/ngxs-store-internals-testing.mjs.map +1 -1
- package/fesm2022/ngxs-store-internals.mjs +6 -6
- package/fesm2022/ngxs-store-internals.mjs.map +1 -1
- package/fesm2022/ngxs-store-operators.mjs.map +1 -1
- package/fesm2022/ngxs-store-plugins.mjs.map +1 -1
- package/fesm2022/ngxs-store.mjs +101 -72
- package/fesm2022/ngxs-store.mjs.map +1 -1
- package/index.d.ts +11 -1
- package/package.json +2 -14
- package/schematics/src/actions/actions.factory.js +1 -2
- package/schematics/src/actions/actions.factory.js.map +1 -1
- package/schematics/src/ng-add/add-declaration.js +2 -3
- package/schematics/src/ng-add/add-declaration.js.map +1 -1
- package/schematics/src/ng-add/ng-add.factory.js +1 -2
- package/schematics/src/ng-add/ng-add.factory.js.map +1 -1
- package/schematics/src/starter-kit/starter-kit.factory.js +1 -2
- package/schematics/src/starter-kit/starter-kit.factory.js.map +1 -1
- package/schematics/src/state/state.factory.js +1 -2
- package/schematics/src/state/state.factory.js.map +1 -1
- package/schematics/src/store/store.factory.js +1 -2
- package/schematics/src/store/store.factory.js.map +1 -1
- package/schematics/src/utils/common/properties.js +1 -2
- package/schematics/src/utils/common/properties.js.map +1 -1
- package/schematics/src/utils/config.js +2 -3
- package/schematics/src/utils/config.js.map +1 -1
- package/schematics/src/utils/generate-utils.js +1 -2
- package/schematics/src/utils/generate-utils.js.map +1 -1
- package/schematics/src/utils/normalize-options.js +3 -4
- package/schematics/src/utils/normalize-options.js.map +1 -1
- package/schematics/src/utils/project.js +4 -5
- package/schematics/src/utils/project.js.map +1 -1
- package/esm2022/experimental/index.mjs +0 -2
- package/esm2022/experimental/ngxs-store-experimental.mjs +0 -5
- package/esm2022/experimental/pending-tasks.mjs +0 -30
- package/esm2022/index.mjs +0 -13
- package/esm2022/internals/custom-rxjs-operators.mjs +0 -19
- package/esm2022/internals/custom-rxjs-subjects.mjs +0 -92
- package/esm2022/internals/index.mjs +0 -11
- package/esm2022/internals/initial-state.mjs +0 -17
- package/esm2022/internals/internal-tokens.mjs +0 -5
- package/esm2022/internals/memoize.mjs +0 -43
- package/esm2022/internals/metadata.mjs +0 -57
- package/esm2022/internals/ngxs-app-bootstrapped-state.mjs +0 -19
- package/esm2022/internals/ngxs-store-internals.mjs +0 -5
- package/esm2022/internals/state-stream.mjs +0 -33
- package/esm2022/internals/state-token.mjs +0 -17
- package/esm2022/internals/symbols.mjs +0 -11
- package/esm2022/internals/testing/fresh-platform.mjs +0 -72
- package/esm2022/internals/testing/helpers/ngxs-test.component.mjs +0 -16
- package/esm2022/internals/testing/helpers/ngxs-test.module.mjs +0 -20
- package/esm2022/internals/testing/index.mjs +0 -4
- package/esm2022/internals/testing/ngxs-store-internals-testing.mjs +0 -5
- package/esm2022/internals/testing/ngxs.setup.mjs +0 -49
- package/esm2022/internals/testing/skip-console-logging.mjs +0 -37
- package/esm2022/internals/testing/symbol.mjs +0 -2
- package/esm2022/ngxs-store.mjs +0 -5
- package/esm2022/operators/append.mjs +0 -20
- package/esm2022/operators/compose.mjs +0 -6
- package/esm2022/operators/iif.mjs +0 -38
- package/esm2022/operators/index.mjs +0 -14
- package/esm2022/operators/insert-item.mjs +0 -29
- package/esm2022/operators/ngxs-store-operators.mjs +0 -5
- package/esm2022/operators/patch.mjs +0 -21
- package/esm2022/operators/remove-item.mjs +0 -22
- package/esm2022/operators/types.mjs +0 -2
- package/esm2022/operators/update-item.mjs +0 -40
- package/esm2022/operators/utils.mjs +0 -19
- package/esm2022/plugins/actions.mjs +0 -16
- package/esm2022/plugins/index.mjs +0 -4
- package/esm2022/plugins/ngxs-store-plugins.mjs +0 -5
- package/esm2022/plugins/symbols.mjs +0 -15
- package/esm2022/plugins/utils.mjs +0 -51
- package/esm2022/src/actions/action-registry.mjs +0 -34
- package/esm2022/src/actions/symbols.mjs +0 -2
- package/esm2022/src/actions-stream.mjs +0 -61
- package/esm2022/src/configs/messages.config.mjs +0 -48
- package/esm2022/src/decorators/action.mjs +0 -31
- package/esm2022/src/decorators/select/select-factory.mjs +0 -29
- package/esm2022/src/decorators/select/select.mjs +0 -29
- package/esm2022/src/decorators/select/symbols.mjs +0 -29
- package/esm2022/src/decorators/selector/selector.mjs +0 -29
- package/esm2022/src/decorators/selector/symbols.mjs +0 -2
- package/esm2022/src/decorators/selector-options.mjs +0 -21
- package/esm2022/src/decorators/state.mjs +0 -35
- package/esm2022/src/dev-features/ngxs-development.module.mjs +0 -28
- package/esm2022/src/dev-features/ngxs-unhandled-actions-logger.mjs +0 -43
- package/esm2022/src/dev-features/symbols.mjs +0 -7
- package/esm2022/src/execution/dispatch-outside-zone-ngxs-execution-strategy.mjs +0 -52
- package/esm2022/src/execution/internal-ngxs-execution-strategy.mjs +0 -21
- package/esm2022/src/execution/noop-ngxs-execution-strategy.mjs +0 -17
- package/esm2022/src/execution/symbols.mjs +0 -28
- package/esm2022/src/internal/dispatcher.mjs +0 -125
- package/esm2022/src/internal/fallback-subscriber.mjs +0 -29
- package/esm2022/src/internal/internals.mjs +0 -205
- package/esm2022/src/internal/lifecycle-state-manager.mjs +0 -81
- package/esm2022/src/internal/provide-internal-tokens.mjs +0 -20
- package/esm2022/src/internal/state-context-factory.mjs +0 -70
- package/esm2022/src/internal/state-factory.mjs +0 -311
- package/esm2022/src/internal/state-operations.mjs +0 -60
- package/esm2022/src/internal/state-operators.mjs +0 -20
- package/esm2022/src/internal/unhandled-rxjs-error-callback.mjs +0 -46
- package/esm2022/src/ivy/ivy-enabled-in-dev-mode.mjs +0 -25
- package/esm2022/src/module.mjs +0 -27
- package/esm2022/src/modules/ngxs-feature.module.mjs +0 -18
- package/esm2022/src/modules/ngxs-root.module.mjs +0 -18
- package/esm2022/src/ngxs-unhandled-error-handler.mjs +0 -29
- package/esm2022/src/operators/leave-ngxs.mjs +0 -9
- package/esm2022/src/operators/of-action.mjs +0 -104
- package/esm2022/src/plugin-manager.mjs +0 -34
- package/esm2022/src/plugin_api.mjs +0 -2
- package/esm2022/src/private_api.mjs +0 -5
- package/esm2022/src/public_api.mjs +0 -20
- package/esm2022/src/selectors/create-model-selector.mjs +0 -30
- package/esm2022/src/selectors/create-pick-selector.mjs +0 -16
- package/esm2022/src/selectors/create-property-selectors.mjs +0 -20
- package/esm2022/src/selectors/create-selector.mjs +0 -9
- package/esm2022/src/selectors/index.mjs +0 -6
- package/esm2022/src/selectors/private_api.mjs +0 -2
- package/esm2022/src/selectors/selector-checks.util.mjs +0 -43
- package/esm2022/src/selectors/selector-metadata.mjs +0 -35
- package/esm2022/src/selectors/selector-models.mjs +0 -2
- package/esm2022/src/selectors/selector-types.util.mjs +0 -2
- package/esm2022/src/selectors/selector-utils.mjs +0 -95
- package/esm2022/src/standalone-features/feature-providers.mjs +0 -18
- package/esm2022/src/standalone-features/index.mjs +0 -5
- package/esm2022/src/standalone-features/initializers.mjs +0 -94
- package/esm2022/src/standalone-features/plugin.mjs +0 -33
- package/esm2022/src/standalone-features/preboot.mjs +0 -31
- package/esm2022/src/standalone-features/provide-states.mjs +0 -26
- package/esm2022/src/standalone-features/provide-store.mjs +0 -26
- package/esm2022/src/standalone-features/root-providers.mjs +0 -34
- package/esm2022/src/store.mjs +0 -117
- package/esm2022/src/symbols.mjs +0 -86
- package/esm2022/src/utils/create-dispatch-map.mjs +0 -11
- package/esm2022/src/utils/create-select-map.mjs +0 -13
- package/esm2022/src/utils/dispatch.mjs +0 -7
- package/esm2022/src/utils/freeze.mjs +0 -20
- package/esm2022/src/utils/public_api.mjs +0 -5
- package/esm2022/src/utils/select.mjs +0 -19
- package/esm2022/src/utils/store-validators.mjs +0 -25
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
import { Injectable, Injector, inject, ɵisPromise } from '@angular/core';
|
|
2
|
-
import { ɵmemoize, ɵMETA_KEY, ɵgetStoreMetadata, ɵINITIAL_STATE_TOKEN } from '@ngxs/store/internals';
|
|
3
|
-
import { getActionTypeFromInstance, getValue, setValue } from '@ngxs/store/plugins';
|
|
4
|
-
import { forkJoin, from, isObservable, of, throwError, catchError, defaultIfEmpty, filter, map, mergeMap, takeUntil, finalize } from 'rxjs';
|
|
5
|
-
import { NgxsConfig } from '../symbols';
|
|
6
|
-
import { buildGraph, findFullParentPath, nameToState, ɵPROP_GETTER, topologicalSort } from './internals';
|
|
7
|
-
import { NgxsActionRegistry } from '../actions/action-registry';
|
|
8
|
-
import { InternalActions } from '../actions-stream';
|
|
9
|
-
import { InternalDispatchedActionResults } from '../internal/dispatcher';
|
|
10
|
-
import { ensureStateNameIsUnique, ensureStatesAreDecorated } from '../utils/store-validators';
|
|
11
|
-
import { ensureStateClassIsInjectable } from '../ivy/ivy-enabled-in-dev-mode';
|
|
12
|
-
import { NgxsUnhandledActionsLogger } from '../dev-features/ngxs-unhandled-actions-logger';
|
|
13
|
-
import { NgxsUnhandledErrorHandler } from '../ngxs-unhandled-error-handler';
|
|
14
|
-
import { assignUnhandledCallback } from './unhandled-rxjs-error-callback';
|
|
15
|
-
import { StateContextFactory } from './state-context-factory';
|
|
16
|
-
import { ofActionDispatched } from '../operators/of-action';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
function cloneDefaults(defaults) {
|
|
19
|
-
let value = defaults === undefined ? {} : defaults;
|
|
20
|
-
if (defaults) {
|
|
21
|
-
if (Array.isArray(defaults)) {
|
|
22
|
-
value = defaults.slice();
|
|
23
|
-
}
|
|
24
|
-
else if (typeof defaults === 'object') {
|
|
25
|
-
value = { ...defaults };
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return value;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* The `StateFactory` class adds root and feature states to the graph.
|
|
32
|
-
* This extracts state names from state classes, checks if they already
|
|
33
|
-
* exist in the global graph, throws errors if their names are invalid, etc.
|
|
34
|
-
*
|
|
35
|
-
* Root and feature initializers call `addAndReturnDefaults()` to add those states
|
|
36
|
-
* to the global graph. Since `addAndReturnDefaults` runs within the injection
|
|
37
|
-
* context (which might be the root injector or a feature injector), we can
|
|
38
|
-
* retrieve an instance of the state class using `inject(StateClass)`.
|
|
39
|
-
* @ignore
|
|
40
|
-
*/
|
|
41
|
-
export class StateFactory {
|
|
42
|
-
constructor() {
|
|
43
|
-
this._injector = inject(Injector);
|
|
44
|
-
this._config = inject(NgxsConfig);
|
|
45
|
-
this._stateContextFactory = inject(StateContextFactory);
|
|
46
|
-
this._actions = inject(InternalActions);
|
|
47
|
-
this._actionResults = inject(InternalDispatchedActionResults);
|
|
48
|
-
this._initialState = inject(ɵINITIAL_STATE_TOKEN, { optional: true });
|
|
49
|
-
this._actionRegistry = inject(NgxsActionRegistry);
|
|
50
|
-
this._propGetter = inject(ɵPROP_GETTER);
|
|
51
|
-
this._actionsSubscription = null;
|
|
52
|
-
this._ngxsUnhandledErrorHandler = null;
|
|
53
|
-
this._states = [];
|
|
54
|
-
this._statesByName = {};
|
|
55
|
-
this._statePaths = {};
|
|
56
|
-
this.getRuntimeSelectorContext = ɵmemoize(() => {
|
|
57
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
58
|
-
const stateFactory = this;
|
|
59
|
-
const propGetter = stateFactory._propGetter;
|
|
60
|
-
function resolveGetter(key) {
|
|
61
|
-
const path = stateFactory._statePaths[key];
|
|
62
|
-
return path ? propGetter(path.split('.')) : null;
|
|
63
|
-
}
|
|
64
|
-
const context = {
|
|
65
|
-
getStateGetter(key) {
|
|
66
|
-
// Use `@__INLINE__` annotation to forcely inline `resolveGetter`.
|
|
67
|
-
// This is a Terser annotation, which will function only in the production mode.
|
|
68
|
-
let getter = /*@__INLINE__*/ resolveGetter(key);
|
|
69
|
-
if (getter) {
|
|
70
|
-
return getter;
|
|
71
|
-
}
|
|
72
|
-
return (...args) => {
|
|
73
|
-
// Late loaded getter
|
|
74
|
-
if (!getter) {
|
|
75
|
-
getter = /*@__INLINE__*/ resolveGetter(key);
|
|
76
|
-
}
|
|
77
|
-
return getter ? getter(...args) : undefined;
|
|
78
|
-
};
|
|
79
|
-
},
|
|
80
|
-
getSelectorOptions(localOptions) {
|
|
81
|
-
const globalSelectorOptions = stateFactory._config.selectorOptions;
|
|
82
|
-
return {
|
|
83
|
-
...globalSelectorOptions,
|
|
84
|
-
...(localOptions || {})
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
return context;
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
ngOnDestroy() {
|
|
92
|
-
this._actionsSubscription?.unsubscribe();
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Add a new state to the global defs.
|
|
96
|
-
*/
|
|
97
|
-
add(stateClasses) {
|
|
98
|
-
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
99
|
-
ensureStatesAreDecorated(stateClasses);
|
|
100
|
-
}
|
|
101
|
-
const { newStates } = this.addToStatesMap(stateClasses);
|
|
102
|
-
if (!newStates.length)
|
|
103
|
-
return [];
|
|
104
|
-
const stateGraph = buildGraph(newStates);
|
|
105
|
-
const sortedStates = topologicalSort(stateGraph);
|
|
106
|
-
const paths = findFullParentPath(stateGraph);
|
|
107
|
-
const nameGraph = nameToState(newStates);
|
|
108
|
-
const bootstrappedStores = [];
|
|
109
|
-
for (const name of sortedStates) {
|
|
110
|
-
const stateClass = nameGraph[name];
|
|
111
|
-
const path = paths[name];
|
|
112
|
-
const meta = stateClass[ɵMETA_KEY];
|
|
113
|
-
this.addRuntimeInfoToMeta(meta, path);
|
|
114
|
-
// Note: previously we called `ensureStateClassIsInjectable` within the
|
|
115
|
-
// `State` decorator. This check is moved here because the `ɵprov` property
|
|
116
|
-
// will not exist on the class in JIT mode (because it's set asynchronously
|
|
117
|
-
// during JIT compilation through `Object.defineProperty`).
|
|
118
|
-
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
119
|
-
ensureStateClassIsInjectable(stateClass);
|
|
120
|
-
}
|
|
121
|
-
const stateMap = {
|
|
122
|
-
name,
|
|
123
|
-
path,
|
|
124
|
-
isInitialised: false,
|
|
125
|
-
actions: meta.actions,
|
|
126
|
-
instance: inject(stateClass),
|
|
127
|
-
defaults: cloneDefaults(meta.defaults)
|
|
128
|
-
};
|
|
129
|
-
// ensure our store hasn't already been added
|
|
130
|
-
// but don't throw since it could be lazy
|
|
131
|
-
// loaded from different paths
|
|
132
|
-
if (!this.hasBeenMountedAndBootstrapped(name, path)) {
|
|
133
|
-
bootstrappedStores.push(stateMap);
|
|
134
|
-
}
|
|
135
|
-
this._states.push(stateMap);
|
|
136
|
-
this.hydrateActionMetasMap(stateMap);
|
|
137
|
-
}
|
|
138
|
-
return bootstrappedStores;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Add a set of states to the store and return the defaults
|
|
142
|
-
*/
|
|
143
|
-
addAndReturnDefaults(stateClasses) {
|
|
144
|
-
const classes = stateClasses || [];
|
|
145
|
-
const mappedStores = this.add(classes);
|
|
146
|
-
const defaults = mappedStores.reduce((result, mappedStore) => setValue(result, mappedStore.path, mappedStore.defaults), {});
|
|
147
|
-
return { defaults, states: mappedStores };
|
|
148
|
-
}
|
|
149
|
-
connectActionHandlers() {
|
|
150
|
-
this._actionsSubscription = this._actions
|
|
151
|
-
.pipe(filter((ctx) => ctx.status === "DISPATCHED" /* ActionStatus.Dispatched */), mergeMap(ctx => {
|
|
152
|
-
const action = ctx.action;
|
|
153
|
-
return this.invokeActions(action).pipe(map(() => ({ action, status: "SUCCESSFUL" /* ActionStatus.Successful */ })), defaultIfEmpty({ action, status: "CANCELED" /* ActionStatus.Canceled */ }), catchError(error => {
|
|
154
|
-
const ngxsUnhandledErrorHandler = (this._ngxsUnhandledErrorHandler ||=
|
|
155
|
-
this._injector.get(NgxsUnhandledErrorHandler));
|
|
156
|
-
const handleableError = assignUnhandledCallback(error, () => ngxsUnhandledErrorHandler.handleError(error, { action }));
|
|
157
|
-
return of({
|
|
158
|
-
action,
|
|
159
|
-
status: "ERRORED" /* ActionStatus.Errored */,
|
|
160
|
-
error: handleableError
|
|
161
|
-
});
|
|
162
|
-
}));
|
|
163
|
-
}))
|
|
164
|
-
.subscribe(ctx => this._actionResults.next(ctx));
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Invoke actions on the states.
|
|
168
|
-
*/
|
|
169
|
-
invokeActions(action) {
|
|
170
|
-
const type = getActionTypeFromInstance(action);
|
|
171
|
-
const results = [];
|
|
172
|
-
// Determines whether the dispatched action has been handled, this is assigned
|
|
173
|
-
// to `true` within the below `for` loop if any `actionMetas` has been found.
|
|
174
|
-
let actionHasBeenHandled = false;
|
|
175
|
-
const actionHandlers = this._actionRegistry.get(type);
|
|
176
|
-
if (actionHandlers) {
|
|
177
|
-
for (const actionHandler of actionHandlers) {
|
|
178
|
-
let result;
|
|
179
|
-
try {
|
|
180
|
-
result = actionHandler(action);
|
|
181
|
-
}
|
|
182
|
-
catch (e) {
|
|
183
|
-
result = throwError(() => e);
|
|
184
|
-
}
|
|
185
|
-
results.push(result);
|
|
186
|
-
actionHasBeenHandled = true;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
// The `NgxsUnhandledActionsLogger` is a tree-shakable class which functions
|
|
190
|
-
// only during development.
|
|
191
|
-
if (typeof ngDevMode !== 'undefined' && ngDevMode && !actionHasBeenHandled) {
|
|
192
|
-
const unhandledActionsLogger = this._injector.get(NgxsUnhandledActionsLogger, null);
|
|
193
|
-
// The `NgxsUnhandledActionsLogger` will not be resolved by the injector if the
|
|
194
|
-
// `NgxsDevelopmentModule` is not provided. It's enough to check whether the `injector.get`
|
|
195
|
-
// didn't return `null` so we may ensure the module has been imported.
|
|
196
|
-
unhandledActionsLogger?.warn(action);
|
|
197
|
-
}
|
|
198
|
-
if (!results.length) {
|
|
199
|
-
results.push(of(undefined));
|
|
200
|
-
}
|
|
201
|
-
return forkJoin(results);
|
|
202
|
-
}
|
|
203
|
-
addToStatesMap(stateClasses) {
|
|
204
|
-
const newStates = [];
|
|
205
|
-
const statesMap = this._statesByName;
|
|
206
|
-
for (const stateClass of stateClasses) {
|
|
207
|
-
const stateName = ɵgetStoreMetadata(stateClass).name;
|
|
208
|
-
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
209
|
-
ensureStateNameIsUnique(stateName, stateClass, statesMap);
|
|
210
|
-
}
|
|
211
|
-
const unmountedState = !statesMap[stateName];
|
|
212
|
-
if (unmountedState) {
|
|
213
|
-
newStates.push(stateClass);
|
|
214
|
-
statesMap[stateName] = stateClass;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return { newStates };
|
|
218
|
-
}
|
|
219
|
-
addRuntimeInfoToMeta(meta, path) {
|
|
220
|
-
this._statePaths[meta.name] = path;
|
|
221
|
-
// TODO: versions after v3 - we plan to get rid of the `path` property because it is non-deterministic
|
|
222
|
-
// we can do this when we get rid of the incorrectly exposed getStoreMetadata
|
|
223
|
-
// We will need to come up with an alternative to what was exposed in v3 because this is used by many plugins
|
|
224
|
-
meta.path = path;
|
|
225
|
-
}
|
|
226
|
-
hasBeenMountedAndBootstrapped(name, path) {
|
|
227
|
-
const valueIsBootstrappedInInitialState = getValue(this._initialState, path) !== undefined;
|
|
228
|
-
// This checks whether a state has been already added to the global graph and
|
|
229
|
-
// its lifecycle is in 'bootstrapped' state.
|
|
230
|
-
return this._statesByName[name] && valueIsBootstrappedInInitialState;
|
|
231
|
-
}
|
|
232
|
-
hydrateActionMetasMap({ path, actions, instance }) {
|
|
233
|
-
const { dispatched$ } = this._actions;
|
|
234
|
-
for (const actionType of Object.keys(actions)) {
|
|
235
|
-
const actionHandlers = actions[actionType].map(actionMeta => {
|
|
236
|
-
const cancelable = !!actionMeta.options.cancelUncompleted;
|
|
237
|
-
return (action) => {
|
|
238
|
-
const stateContext = this._stateContextFactory.createStateContext(path);
|
|
239
|
-
let result = instance[actionMeta.fn](stateContext, action);
|
|
240
|
-
// We need to use `isPromise` instead of checking whether
|
|
241
|
-
// `result instanceof Promise`. In zone.js patched environments, `global.Promise`
|
|
242
|
-
// is the `ZoneAwarePromise`. Some APIs, which are likely not patched by zone.js
|
|
243
|
-
// for certain reasons, might not work with `instanceof`. For instance, the dynamic
|
|
244
|
-
// import returns a native promise (not a `ZoneAwarePromise`), causing this check to
|
|
245
|
-
// be falsy.
|
|
246
|
-
if (ɵisPromise(result)) {
|
|
247
|
-
result = from(result);
|
|
248
|
-
}
|
|
249
|
-
if (isObservable(result)) {
|
|
250
|
-
result = result.pipe(mergeMap((value) => {
|
|
251
|
-
if (ɵisPromise(value)) {
|
|
252
|
-
return from(value);
|
|
253
|
-
}
|
|
254
|
-
else if (isObservable(value)) {
|
|
255
|
-
return value;
|
|
256
|
-
}
|
|
257
|
-
else {
|
|
258
|
-
return of(value);
|
|
259
|
-
}
|
|
260
|
-
}),
|
|
261
|
-
// If this observable has completed without emitting any values,
|
|
262
|
-
// we wouldn't want to complete the entire chain of actions.
|
|
263
|
-
// If any observable completes, then the action will be canceled.
|
|
264
|
-
// For instance, if any action handler had a statement like
|
|
265
|
-
// `handler(ctx) { return EMPTY; }`, then the action would be canceled.
|
|
266
|
-
// See https://github.com/ngxs/store/issues/1568
|
|
267
|
-
// Note that we actually don't care about the return type; we only care
|
|
268
|
-
// about emission, and thus `undefined` is applicable by the framework.
|
|
269
|
-
defaultIfEmpty(undefined));
|
|
270
|
-
if (cancelable) {
|
|
271
|
-
const notifier$ = dispatched$.pipe(ofActionDispatched(action));
|
|
272
|
-
result = result.pipe(takeUntil(notifier$));
|
|
273
|
-
}
|
|
274
|
-
result = result.pipe(
|
|
275
|
-
// Note that we use the `finalize` operator only when the action handler
|
|
276
|
-
// returns an observable. If the action handler is synchronous, we do not
|
|
277
|
-
// need to set the state context functions to `noop`, as the absence of a
|
|
278
|
-
// return value indicates no asynchronous functionality. If the handler's
|
|
279
|
-
// result is unsubscribed (either because the observable has completed or it
|
|
280
|
-
// was unsubscribed by `takeUntil` due to a new action being dispatched),
|
|
281
|
-
// we prevent writing to the state context.
|
|
282
|
-
finalize(() => {
|
|
283
|
-
stateContext.setState = noop;
|
|
284
|
-
stateContext.patchState = noop;
|
|
285
|
-
}));
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
// If the action handler is synchronous and returns nothing (`void`), we
|
|
289
|
-
// still have to convert the result to a synchronous observable.
|
|
290
|
-
result = of(undefined);
|
|
291
|
-
}
|
|
292
|
-
return result;
|
|
293
|
-
};
|
|
294
|
-
});
|
|
295
|
-
for (const actionHandler of actionHandlers) {
|
|
296
|
-
this._actionRegistry.register(actionType, actionHandler);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: StateFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
301
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: StateFactory, providedIn: 'root' }); }
|
|
302
|
-
}
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: StateFactory, decorators: [{
|
|
304
|
-
type: Injectable,
|
|
305
|
-
args: [{ providedIn: 'root' }]
|
|
306
|
-
}] });
|
|
307
|
-
// This is used to replace `setState` and `patchState` once the action
|
|
308
|
-
// handler has been unsubscribed or completed, to prevent writing
|
|
309
|
-
// to the state context.
|
|
310
|
-
function noop() { }
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL3NyYy9pbnRlcm5hbC9zdGF0ZS1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFhLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUNMLFFBQVEsRUFDUixTQUFTLEVBR1QsaUJBQWlCLEVBRWpCLG9CQUFvQixFQUdyQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEYsT0FBTyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osWUFBWSxFQUNaLEVBQUUsRUFFRixVQUFVLEVBQ1YsVUFBVSxFQUNWLGNBQWMsRUFDZCxNQUFNLEVBQ04sR0FBRyxFQUNILFFBQVEsRUFDUixTQUFTLEVBQ1QsUUFBUSxFQUVULE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLGtCQUFrQixFQUVsQixXQUFXLEVBQ1gsWUFBWSxFQUlaLGVBQWUsRUFDaEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUErQixlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMEJBQTBC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RSw0RUFBNEU7d0JBQzVFLHlFQUF5RTt3QkFDekUsMkNBQTJDO3dCQUMzQyxRQUFRLENBQUMsR0FBRyxFQUFFOzRCQUNaLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDOzRCQUM3QixZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzt3QkFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztvQkFDSixDQUFDO3lCQUFNLENBQUM7d0JBQ04sd0VBQXdFO3dCQUN4RSxnRUFBZ0U7d0JBQ2hFLE1BQU0sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7b0JBRUQsT0FBTyxNQUFNLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztpSUExVFUsWUFBWTtxSUFBWixZQUFZLGNBREMsTUFBTTs7MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQThUbEMsc0VBQXNFO0FBQ3RFLGlFQUFpRTtBQUNqRSx3QkFBd0I7QUFDeEIsU0FBUyxJQUFJLEtBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIGluamVjdCwgybVpc1Byb21pc2UgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIMm1bWVtb2l6ZSxcbiAgybVNRVRBX0tFWSxcbiAgybVQbGFpbk9iamVjdE9mLFxuICDJtU1ldGFEYXRhTW9kZWwsXG4gIMm1Z2V0U3RvcmVNZXRhZGF0YSxcbiAgybVTdGF0ZUNsYXNzSW50ZXJuYWwsXG4gIMm1SU5JVElBTF9TVEFURV9UT0tFTixcbiAgybVTaGFyZWRTZWxlY3Rvck9wdGlvbnMsXG4gIMm1UnVudGltZVNlbGVjdG9yQ29udGV4dFxufSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xuaW1wb3J0IHsgZ2V0QWN0aW9uVHlwZUZyb21JbnN0YW5jZSwgZ2V0VmFsdWUsIHNldFZhbHVlIH0gZnJvbSAnQG5neHMvc3RvcmUvcGx1Z2lucyc7XG5pbXBvcnQge1xuICBmb3JrSm9pbixcbiAgZnJvbSxcbiAgaXNPYnNlcnZhYmxlLFxuICBvZixcbiAgU3Vic2NyaXB0aW9uLFxuICB0aHJvd0Vycm9yLFxuICBjYXRjaEVycm9yLFxuICBkZWZhdWx0SWZFbXB0eSxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICB0YWtlVW50aWwsXG4gIGZpbmFsaXplLFxuICBPYnNlcnZhYmxlXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3hzQ29uZmlnIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQge1xuICBidWlsZEdyYXBoLFxuICBmaW5kRnVsbFBhcmVudFBhdGgsXG4gIE1hcHBlZFN0b3JlLFxuICBuYW1lVG9TdGF0ZSxcbiAgybVQUk9QX0dFVFRFUixcbiAgU3RhdGVLZXlHcmFwaCxcbiAgU3RhdGVzQW5kRGVmYXVsdHMsXG4gIFN0YXRlc0J5TmFtZSxcbiAgdG9wb2xvZ2ljYWxTb3J0XG59IGZyb20gJy4vaW50ZXJuYWxzJztcbmltcG9ydCB7IE5neHNBY3Rpb25SZWdpc3RyeSB9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9uLXJlZ2lzdHJ5JztcbmltcG9ydCB7IEFjdGlvbkNvbnRleHQsIEFjdGlvblN0YXR1cywgSW50ZXJuYWxBY3Rpb25zIH0gZnJvbSAnLi4vYWN0aW9ucy1zdHJlYW0nO1xuaW1wb3J0IHsgSW50ZXJuYWxEaXNwYXRjaGVkQWN0aW9uUmVzdWx0cyB9IGZyb20gJy4uL2ludGVybmFsL2Rpc3BhdGNoZXInO1xuaW1wb3J0IHsgZW5zdXJlU3RhdGVOYW1lSXNVbmlxdWUsIGVuc3VyZVN0YXRlc0FyZURlY29yYXRlZCB9IGZyb20gJy4uL3V0aWxzL3N0b3JlLXZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgZW5zdXJlU3RhdGVDbGFzc0lzSW5qZWN0YWJsZSB9IGZyb20gJy4uL2l2eS9pdnktZW5hYmxlZC1pbi1kZXYtbW9kZSc7XG5pbXBvcnQgeyBOZ3hzVW5oYW5kbGVkQWN0aW9uc0xvZ2dlciB9IGZyb20gJy4uL2Rldi1mZWF0dXJlcy9uZ3hzLXVuaGFuZGxlZC1hY3Rpb25zLWxvZ2dlcic7XG5pbXBvcnQgeyBOZ3hzVW5oYW5kbGVkRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vbmd4cy11bmhhbmRsZWQtZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBhc3NpZ25VbmhhbmRsZWRDYWxsYmFjayB9IGZyb20gJy4vdW5oYW5kbGVkLXJ4anMtZXJyb3ItY2FsbGJhY2snO1xuaW1wb3J0IHsgU3RhdGVDb250ZXh0RmFjdG9yeSB9IGZyb20gJy4vc3RhdGUtY29udGV4dC1mYWN0b3J5JztcbmltcG9ydCB7IG9mQWN0aW9uRGlzcGF0Y2hlZCB9IGZyb20gJy4uL29wZXJhdG9ycy9vZi1hY3Rpb24nO1xuXG5mdW5jdGlvbiBjbG9uZURlZmF1bHRzKGRlZmF1bHRzOiBhbnkpOiBhbnkge1xuICBsZXQgdmFsdWUgPSBkZWZhdWx0cyA9PT0gdW5kZWZpbmVkID8ge30gOiBkZWZhdWx0cztcblxuICBpZiAoZGVmYXVsdHMpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkZWZhdWx0cykpIHtcbiAgICAgIHZhbHVlID0gZGVmYXVsdHMuc2xpY2UoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZhdWx0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHZhbHVlID0geyAuLi5kZWZhdWx0cyB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBUaGUgYFN0YXRlRmFjdG9yeWAgY2xhc3MgYWRkcyByb290IGFuZCBmZWF0dXJlIHN0YXRlcyB0byB0aGUgZ3JhcGguXG4gKiBUaGlzIGV4dHJhY3RzIHN0YXRlIG5hbWVzIGZyb20gc3RhdGUgY2xhc3NlcywgY2hlY2tzIGlmIHRoZXkgYWxyZWFkeVxuICogZXhpc3QgaW4gdGhlIGdsb2JhbCBncmFwaCwgdGhyb3dzIGVycm9ycyBpZiB0aGVpciBuYW1lcyBhcmUgaW52YWxpZCwgZXRjLlxuICpcbiAqIFJvb3QgYW5kIGZlYXR1cmUgaW5pdGlhbGl6ZXJzIGNhbGwgYGFkZEFuZFJldHVybkRlZmF1bHRzKClgIHRvIGFkZCB0aG9zZSBzdGF0ZXNcbiAqIHRvIHRoZSBnbG9iYWwgZ3JhcGguIFNpbmNlIGBhZGRBbmRSZXR1cm5EZWZhdWx0c2AgcnVucyB3aXRoaW4gdGhlIGluamVjdGlvblxuICogY29udGV4dCAod2hpY2ggbWlnaHQgYmUgdGhlIHJvb3QgaW5qZWN0b3Igb3IgYSBmZWF0dXJlIGluamVjdG9yKSwgd2UgY2FuXG4gKiByZXRyaWV2ZSBhbiBpbnN0YW5jZSBvZiB0aGUgc3RhdGUgY2xhc3MgdXNpbmcgYGluamVjdChTdGF0ZUNsYXNzKWAuXG4gKiBAaWdub3JlXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3RhdGVGYWN0b3J5IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWcgPSBpbmplY3QoTmd4c0NvbmZpZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dEZhY3RvcnkgPSBpbmplY3QoU3RhdGVDb250ZXh0RmFjdG9yeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGlvbnMgPSBpbmplY3QoSW50ZXJuYWxBY3Rpb25zKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aW9uUmVzdWx0cyA9IGluamVjdChJbnRlcm5hbERpc3BhdGNoZWRBY3Rpb25SZXN1bHRzKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbFN0YXRlID0gaW5qZWN0KMm1SU5JVElBTF9TVEFURV9UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aW9uUmVnaXN0cnkgPSBpbmplY3QoTmd4c0FjdGlvblJlZ2lzdHJ5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvcEdldHRlciA9IGluamVjdCjJtVBST1BfR0VUVEVSKTtcblxuICBwcml2YXRlIF9hY3Rpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9uZ3hzVW5oYW5kbGVkRXJyb3JIYW5kbGVyOiBOZ3hzVW5oYW5kbGVkRXJyb3JIYW5kbGVyID0gbnVsbCE7XG5cbiAgcHJpdmF0ZSBfc3RhdGVzOiBNYXBwZWRTdG9yZVtdID0gW107XG4gIHByaXZhdGUgX3N0YXRlc0J5TmFtZTogU3RhdGVzQnlOYW1lID0ge307XG4gIHByaXZhdGUgX3N0YXRlUGF0aHM6IMm1UGxhaW5PYmplY3RPZjxzdHJpbmc+ID0ge307XG5cbiAgZ2V0UnVudGltZVNlbGVjdG9yQ29udGV4dCA9IMm1bWVtb2l6ZSgoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgY29uc3Qgc3RhdGVGYWN0b3J5ID0gdGhpcztcbiAgICBjb25zdCBwcm9wR2V0dGVyID0gc3RhdGVGYWN0b3J5Ll9wcm9wR2V0dGVyO1xuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZUdldHRlcihrZXk6IHN0cmluZykge1xuICAgICAgY29uc3QgcGF0aCA9IHN0YXRlRmFjdG9yeS5fc3RhdGVQYXRoc1trZXldO1xuICAgICAgcmV0dXJuIHBhdGggPyBwcm9wR2V0dGVyKHBhdGguc3BsaXQoJy4nKSkgOiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQ6IMm1UnVudGltZVNlbGVjdG9yQ29udGV4dCA9IHtcbiAgICAgIGdldFN0YXRlR2V0dGVyKGtleTogc3RyaW5nKSB7XG4gICAgICAgIC8vIFVzZSBgQF9fSU5MSU5FX19gIGFubm90YXRpb24gdG8gZm9yY2VseSBpbmxpbmUgYHJlc29sdmVHZXR0ZXJgLlxuICAgICAgICAvLyBUaGlzIGlzIGEgVGVyc2VyIGFubm90YXRpb24sIHdoaWNoIHdpbGwgZnVuY3Rpb24gb25seSBpbiB0aGUgcHJvZHVjdGlvbiBtb2RlLlxuICAgICAgICBsZXQgZ2V0dGVyID0gLypAX19JTkxJTkVfXyovIHJlc29sdmVHZXR0ZXIoa2V5KTtcbiAgICAgICAgaWYgKGdldHRlcikge1xuICAgICAgICAgIHJldHVybiBnZXR0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgLy8gTGF0ZSBsb2FkZWQgZ2V0dGVyXG4gICAgICAgICAgaWYgKCFnZXR0ZXIpIHtcbiAgICAgICAgICAgIGdldHRlciA9IC8qQF9fSU5MSU5FX18qLyByZXNvbHZlR2V0dGVyKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBnZXR0ZXIgPyBnZXR0ZXIoLi4uYXJncykgOiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgZ2V0U2VsZWN0b3JPcHRpb25zKGxvY2FsT3B0aW9ucz86IMm1U2hhcmVkU2VsZWN0b3JPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbFNlbGVjdG9yT3B0aW9ucyA9IHN0YXRlRmFjdG9yeS5fY29uZmlnLnNlbGVjdG9yT3B0aW9ucztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5nbG9iYWxTZWxlY3Rvck9wdGlvbnMsXG4gICAgICAgICAgLi4uKGxvY2FsT3B0aW9ucyB8fCB7fSlcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBjb250ZXh0O1xuICB9KTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb25zU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBzdGF0ZSB0byB0aGUgZ2xvYmFsIGRlZnMuXG4gICAqL1xuICBwcml2YXRlIGFkZChzdGF0ZUNsYXNzZXM6IMm1U3RhdGVDbGFzc0ludGVybmFsW10pOiBNYXBwZWRTdG9yZVtdIHtcbiAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbmdEZXZNb2RlKSB7XG4gICAgICBlbnN1cmVTdGF0ZXNBcmVEZWNvcmF0ZWQoc3RhdGVDbGFzc2VzKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IG5ld1N0YXRlcyB9ID0gdGhpcy5hZGRUb1N0YXRlc01hcChzdGF0ZUNsYXNzZXMpO1xuICAgIGlmICghbmV3U3RhdGVzLmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3Qgc3RhdGVHcmFwaDogU3RhdGVLZXlHcmFwaCA9IGJ1aWxkR3JhcGgobmV3U3RhdGVzKTtcbiAgICBjb25zdCBzb3J0ZWRTdGF0ZXM6IHN0cmluZ1tdID0gdG9wb2xvZ2ljYWxTb3J0KHN0YXRlR3JhcGgpO1xuICAgIGNvbnN0IHBhdGhzOiDJtVBsYWluT2JqZWN0T2Y8c3RyaW5nPiA9IGZpbmRGdWxsUGFyZW50UGF0aChzdGF0ZUdyYXBoKTtcbiAgICBjb25zdCBuYW1lR3JhcGg6IMm1UGxhaW5PYmplY3RPZjzJtVN0YXRlQ2xhc3NJbnRlcm5hbD4gPSBuYW1lVG9TdGF0ZShuZXdTdGF0ZXMpO1xuICAgIGNvbnN0IGJvb3RzdHJhcHBlZFN0b3JlczogTWFwcGVkU3RvcmVbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHNvcnRlZFN0YXRlcykge1xuICAgICAgY29uc3Qgc3RhdGVDbGFzczogybVTdGF0ZUNsYXNzSW50ZXJuYWwgPSBuYW1lR3JhcGhbbmFtZV07XG4gICAgICBjb25zdCBwYXRoOiBzdHJpbmcgPSBwYXRoc1tuYW1lXTtcbiAgICAgIGNvbnN0IG1ldGE6IMm1TWV0YURhdGFNb2RlbCA9IHN0YXRlQ2xhc3NbybVNRVRBX0tFWV0hO1xuXG4gICAgICB0aGlzLmFkZFJ1bnRpbWVJbmZvVG9NZXRhKG1ldGEsIHBhdGgpO1xuXG4gICAgICAvLyBOb3RlOiBwcmV2aW91c2x5IHdlIGNhbGxlZCBgZW5zdXJlU3RhdGVDbGFzc0lzSW5qZWN0YWJsZWAgd2l0aGluIHRoZVxuICAgICAgLy8gYFN0YXRlYCBkZWNvcmF0b3IuIFRoaXMgY2hlY2sgaXMgbW92ZWQgaGVyZSBiZWNhdXNlIHRoZSBgybVwcm92YCBwcm9wZXJ0eVxuICAgICAgLy8gd2lsbCBub3QgZXhpc3Qgb24gdGhlIGNsYXNzIGluIEpJVCBtb2RlIChiZWNhdXNlIGl0J3Mgc2V0IGFzeW5jaHJvbm91c2x5XG4gICAgICAvLyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uIHRocm91Z2ggYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWApLlxuICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgIT09ICd1bmRlZmluZWQnICYmIG5nRGV2TW9kZSkge1xuICAgICAgICBlbnN1cmVTdGF0ZUNsYXNzSXNJbmplY3RhYmxlKHN0YXRlQ2xhc3MpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGF0ZU1hcDogTWFwcGVkU3RvcmUgPSB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGlzSW5pdGlhbGlzZWQ6IGZhbHNlLFxuICAgICAgICBhY3Rpb25zOiBtZXRhLmFjdGlvbnMsXG4gICAgICAgIGluc3RhbmNlOiBpbmplY3Qoc3RhdGVDbGFzcyksXG4gICAgICAgIGRlZmF1bHRzOiBjbG9uZURlZmF1bHRzKG1ldGEuZGVmYXVsdHMpXG4gICAgICB9O1xuXG4gICAgICAvLyBlbnN1cmUgb3VyIHN0b3JlIGhhc24ndCBhbHJlYWR5IGJlZW4gYWRkZWRcbiAgICAgIC8vIGJ1dCBkb24ndCB0aHJvdyBzaW5jZSBpdCBjb3VsZCBiZSBsYXp5XG4gICAgICAvLyBsb2FkZWQgZnJvbSBkaWZmZXJlbnQgcGF0aHNcbiAgICAgIGlmICghdGhpcy5oYXNCZWVuTW91bnRlZEFuZEJvb3RzdHJhcHBlZChuYW1lLCBwYXRoKSkge1xuICAgICAgICBib290c3RyYXBwZWRTdG9yZXMucHVzaChzdGF0ZU1hcCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3N0YXRlcy5wdXNoKHN0YXRlTWFwKTtcbiAgICAgIHRoaXMuaHlkcmF0ZUFjdGlvbk1ldGFzTWFwKHN0YXRlTWFwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm9vdHN0cmFwcGVkU3RvcmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNldCBvZiBzdGF0ZXMgdG8gdGhlIHN0b3JlIGFuZCByZXR1cm4gdGhlIGRlZmF1bHRzXG4gICAqL1xuICBhZGRBbmRSZXR1cm5EZWZhdWx0cyhzdGF0ZUNsYXNzZXM6IMm1U3RhdGVDbGFzc0ludGVybmFsW10pOiBTdGF0ZXNBbmREZWZhdWx0cyB7XG4gICAgY29uc3QgY2xhc3NlczogybVTdGF0ZUNsYXNzSW50ZXJuYWxbXSA9IHN0YXRlQ2xhc3NlcyB8fCBbXTtcblxuICAgIGNvbnN0IG1hcHBlZFN0b3JlczogTWFwcGVkU3RvcmVbXSA9IHRoaXMuYWRkKGNsYXNzZXMpO1xuICAgIGNvbnN0IGRlZmF1bHRzID0gbWFwcGVkU3RvcmVzLnJlZHVjZShcbiAgICAgIChyZXN1bHQ6IGFueSwgbWFwcGVkU3RvcmU6IE1hcHBlZFN0b3JlKSA9PlxuICAgICAgICBzZXRWYWx1ZShyZXN1bHQsIG1hcHBlZFN0b3JlLnBhdGgsIG1hcHBlZFN0b3JlLmRlZmF1bHRzKSxcbiAgICAgIHt9XG4gICAgKTtcbiAgICByZXR1cm4geyBkZWZhdWx0cywgc3RhdGVzOiBtYXBwZWRTdG9yZXMgfTtcbiAgfVxuXG4gIGNvbm5lY3RBY3Rpb25IYW5kbGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb25zU3Vic2NyaXB0aW9uID0gdGhpcy5fYWN0aW9uc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoY3R4OiBBY3Rpb25Db250ZXh0KSA9PiBjdHguc3RhdHVzID09PSBBY3Rpb25TdGF0dXMuRGlzcGF0Y2hlZCksXG4gICAgICAgIG1lcmdlTWFwKGN0eCA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uOiBhbnkgPSBjdHguYWN0aW9uO1xuICAgICAgICAgIHJldHVybiB0aGlzLmludm9rZUFjdGlvbnMoYWN0aW9uKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IDxBY3Rpb25Db250ZXh0PnsgYWN0aW9uLCBzdGF0dXM6IEFjdGlvblN0YXR1cy5TdWNjZXNzZnVsIH0pLFxuICAgICAgICAgICAgZGVmYXVsdElmRW1wdHkoPEFjdGlvbkNvbnRleHQ+eyBhY3Rpb24sIHN0YXR1czogQWN0aW9uU3RhdHVzLkNhbmNlbGVkIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5neHNVbmhhbmRsZWRFcnJvckhhbmRsZXIgPSAodGhpcy5fbmd4c1VuaGFuZGxlZEVycm9ySGFuZGxlciB8fD1cbiAgICAgICAgICAgICAgICB0aGlzLl9pbmplY3Rvci5nZXQoTmd4c1VuaGFuZGxlZEVycm9ySGFuZGxlcikpO1xuICAgICAgICAgICAgICBjb25zdCBoYW5kbGVhYmxlRXJyb3IgPSBhc3NpZ25VbmhhbmRsZWRDYWxsYmFjayhlcnJvciwgKCkgPT5cbiAgICAgICAgICAgICAgICBuZ3hzVW5oYW5kbGVkRXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGVycm9yLCB7IGFjdGlvbiB9KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gb2YoPEFjdGlvbkNvbnRleHQ+e1xuICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICBzdGF0dXM6IEFjdGlvblN0YXR1cy5FcnJvcmVkLFxuICAgICAgICAgICAgICAgIGVycm9yOiBoYW5kbGVhYmxlRXJyb3JcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLl9hY3Rpb25SZXN1bHRzLm5leHQoY3R4KSk7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIGFjdGlvbnMgb24gdGhlIHN0YXRlcy5cbiAgICovXG4gIHByaXZhdGUgaW52b2tlQWN0aW9ucyhhY3Rpb246IGFueSk6IE9ic2VydmFibGU8dW5rbm93bltdPiB7XG4gICAgY29uc3QgdHlwZSA9IGdldEFjdGlvblR5cGVGcm9tSW5zdGFuY2UoYWN0aW9uKSE7XG4gICAgY29uc3QgcmVzdWx0czogT2JzZXJ2YWJsZTx1bmtub3duPltdID0gW107XG5cbiAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGRpc3BhdGNoZWQgYWN0aW9uIGhhcyBiZWVuIGhhbmRsZWQsIHRoaXMgaXMgYXNzaWduZWRcbiAgICAvLyB0byBgdHJ1ZWAgd2l0aGluIHRoZSBiZWxvdyBgZm9yYCBsb29wIGlmIGFueSBgYWN0aW9uTWV0YXNgIGhhcyBiZWVuIGZvdW5kLlxuICAgIGxldCBhY3Rpb25IYXNCZWVuSGFuZGxlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgYWN0aW9uSGFuZGxlcnMgPSB0aGlzLl9hY3Rpb25SZWdpc3RyeS5nZXQodHlwZSk7XG5cbiAgICBpZiAoYWN0aW9uSGFuZGxlcnMpIHtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uSGFuZGxlciBvZiBhY3Rpb25IYW5kbGVycykge1xuICAgICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzdWx0ID0gYWN0aW9uSGFuZGxlcihhY3Rpb24pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuXG4gICAgICAgIGFjdGlvbkhhc0JlZW5IYW5kbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgYE5neHNVbmhhbmRsZWRBY3Rpb25zTG9nZ2VyYCBpcyBhIHRyZWUtc2hha2FibGUgY2xhc3Mgd2hpY2ggZnVuY3Rpb25zXG4gICAgLy8gb25seSBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgIT09ICd1bmRlZmluZWQnICYmIG5nRGV2TW9kZSAmJiAhYWN0aW9uSGFzQmVlbkhhbmRsZWQpIHtcbiAgICAgIGNvbnN0IHVuaGFuZGxlZEFjdGlvbnNMb2dnZXIgPSB0aGlzLl9pbmplY3Rvci5nZXQoTmd4c1VuaGFuZGxlZEFjdGlvbnNMb2dnZXIsIG51bGwpO1xuICAgICAgLy8gVGhlIGBOZ3hzVW5oYW5kbGVkQWN0aW9uc0xvZ2dlcmAgd2lsbCBub3QgYmUgcmVzb2x2ZWQgYnkgdGhlIGluamVjdG9yIGlmIHRoZVxuICAgICAgLy8gYE5neHNEZXZlbG9wbWVudE1vZHVsZWAgaXMgbm90IHByb3ZpZGVkLiBJdCdzIGVub3VnaCB0byBjaGVjayB3aGV0aGVyIHRoZSBgaW5qZWN0b3IuZ2V0YFxuICAgICAgLy8gZGlkbid0IHJldHVybiBgbnVsbGAgc28gd2UgbWF5IGVuc3VyZSB0aGUgbW9kdWxlIGhhcyBiZWVuIGltcG9ydGVkLlxuICAgICAgdW5oYW5kbGVkQWN0aW9uc0xvZ2dlcj8ud2FybihhY3Rpb24pO1xuICAgIH1cblxuICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdHMucHVzaChvZih1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ya0pvaW4ocmVzdWx0cyk7XG4gIH1cblxuICBwcml2YXRlIGFkZFRvU3RhdGVzTWFwKHN0YXRlQ2xhc3NlczogybVTdGF0ZUNsYXNzSW50ZXJuYWxbXSk6IHtcbiAgICBuZXdTdGF0ZXM6IMm1U3RhdGVDbGFzc0ludGVybmFsW107XG4gIH0ge1xuICAgIGNvbnN0IG5ld1N0YXRlczogybVTdGF0ZUNsYXNzSW50ZXJuYWxbXSA9IFtdO1xuICAgIGNvbnN0IHN0YXRlc01hcDogU3RhdGVzQnlOYW1lID0gdGhpcy5fc3RhdGVzQnlOYW1lO1xuXG4gICAgZm9yIChjb25zdCBzdGF0ZUNsYXNzIG9mIHN0YXRlQ2xhc3Nlcykge1xuICAgICAgY29uc3Qgc3RhdGVOYW1lID0gybVnZXRTdG9yZU1ldGFkYXRhKHN0YXRlQ2xhc3MpLm5hbWUhO1xuICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgIT09ICd1bmRlZmluZWQnICYmIG5nRGV2TW9kZSkge1xuICAgICAgICBlbnN1cmVTdGF0ZU5hbWVJc1VuaXF1ZShzdGF0ZU5hbWUsIHN0YXRlQ2xhc3MsIHN0YXRlc01hcCk7XG4gICAgICB9XG4gICAgICBjb25zdCB1bm1vdW50ZWRTdGF0ZSA9ICFzdGF0ZXNNYXBbc3RhdGVOYW1lXTtcbiAgICAgIGlmICh1bm1vdW50ZWRTdGF0ZSkge1xuICAgICAgICBuZXdTdGF0ZXMucHVzaChzdGF0ZUNsYXNzKTtcbiAgICAgICAgc3RhdGVzTWFwW3N0YXRlTmFtZV0gPSBzdGF0ZUNsYXNzO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IG5ld1N0YXRlcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSdW50aW1lSW5mb1RvTWV0YShtZXRhOiDJtU1ldGFEYXRhTW9kZWwsIHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlUGF0aHNbbWV0YS5uYW1lIV0gPSBwYXRoO1xuICAgIC8vIFRPRE86IHZlcnNpb25zIGFmdGVyIHYzIC0gd2UgcGxhbiB0byBnZXQgcmlkIG9mIHRoZSBgcGF0aGAgcHJvcGVydHkgYmVjYXVzZSBpdCBpcyBub24tZGV0ZXJtaW5pc3RpY1xuICAgIC8vIHdlIGNhbiBkbyB0aGlzIHdoZW4gd2UgZ2V0IHJpZCBvZiB0aGUgaW5jb3JyZWN0bHkgZXhwb3NlZCBnZXRTdG9yZU1ldGFkYXRhXG4gICAgLy8gV2Ugd2lsbCBuZWVkIHRvIGNvbWUgdXAgd2l0aCBhbiBhbHRlcm5hdGl2ZSB0byB3aGF0IHdhcyBleHBvc2VkIGluIHYzIGJlY2F1c2UgdGhpcyBpcyB1c2VkIGJ5IG1hbnkgcGx1Z2luc1xuICAgIG1ldGEucGF0aCA9IHBhdGg7XG4gIH1cblxuICBwcml2YXRlIGhhc0JlZW5Nb3VudGVkQW5kQm9vdHN0cmFwcGVkKG5hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWVJc0Jvb3RzdHJhcHBlZEluSW5pdGlhbFN0YXRlOiBib29sZWFuID1cbiAgICAgIGdldFZhbHVlKHRoaXMuX2luaXRpYWxTdGF0ZSwgcGF0aCkgIT09IHVuZGVmaW5lZDtcbiAgICAvLyBUaGlzIGNoZWNrcyB3aGV0aGVyIGEgc3RhdGUgaGFzIGJlZW4gYWxyZWFkeSBhZGRlZCB0byB0aGUgZ2xvYmFsIGdyYXBoIGFuZFxuICAgIC8vIGl0cyBsaWZlY3ljbGUgaXMgaW4gJ2Jvb3RzdHJhcHBlZCcgc3RhdGUuXG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlc0J5TmFtZVtuYW1lXSAmJiB2YWx1ZUlzQm9vdHN0cmFwcGVkSW5Jbml0aWFsU3RhdGU7XG4gIH1cblxuICBwcml2YXRlIGh5ZHJhdGVBY3Rpb25NZXRhc01hcCh7IHBhdGgsIGFjdGlvbnMsIGluc3RhbmNlIH06IE1hcHBlZFN0b3JlKTogdm9pZCB7XG4gICAgY29uc3QgeyBkaXNwYXRjaGVkJCB9ID0gdGhpcy5fYWN0aW9ucztcbiAgICBmb3IgKGNvbnN0IGFjdGlvblR5cGUgb2YgT2JqZWN0LmtleXMoYWN0aW9ucykpIHtcbiAgICAgIGNvbnN0IGFjdGlvbkhhbmRsZXJzID0gYWN0aW9uc1thY3Rpb25UeXBlXS5tYXAoYWN0aW9uTWV0YSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbmNlbGFibGUgPSAhIWFjdGlvbk1ldGEub3B0aW9ucy5jYW5jZWxVbmNvbXBsZXRlZDtcblxuICAgICAgICByZXR1cm4gKGFjdGlvbjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGVDb250ZXh0ID0gdGhpcy5fc3RhdGVDb250ZXh0RmFjdG9yeS5jcmVhdGVTdGF0ZUNvbnRleHQocGF0aCk7XG5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gaW5zdGFuY2VbYWN0aW9uTWV0YS5mbl0oc3RhdGVDb250ZXh0LCBhY3Rpb24pO1xuXG4gICAgICAgICAgLy8gV2UgbmVlZCB0byB1c2UgYGlzUHJvbWlzZWAgaW5zdGVhZCBvZiBjaGVja2luZyB3aGV0aGVyXG4gICAgICAgICAgLy8gYHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2VgLiBJbiB6b25lLmpzIHBhdGNoZWQgZW52aXJvbm1lbnRzLCBgZ2xvYmFsLlByb21pc2VgXG4gICAgICAgICAgLy8gaXMgdGhlIGBab25lQXdhcmVQcm9taXNlYC4gU29tZSBBUElzLCB3aGljaCBhcmUgbGlrZWx5IG5vdCBwYXRjaGVkIGJ5IHpvbmUuanNcbiAgICAgICAgICAvLyBmb3IgY2VydGFpbiByZWFzb25zLCBtaWdodCBub3Qgd29yayB3aXRoIGBpbnN0YW5jZW9mYC4gRm9yIGluc3RhbmNlLCB0aGUgZHluYW1pY1xuICAgICAgICAgIC8vIGltcG9ydCByZXR1cm5zIGEgbmF0aXZlIHByb21pc2UgKG5vdCBhIGBab25lQXdhcmVQcm9taXNlYCksIGNhdXNpbmcgdGhpcyBjaGVjayB0b1xuICAgICAgICAgIC8vIGJlIGZhbHN5LlxuICAgICAgICAgIGlmICjJtWlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmcm9tKHJlc3VsdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucGlwZShcbiAgICAgICAgICAgICAgbWVyZ2VNYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoybVpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy8gSWYgdGhpcyBvYnNlcnZhYmxlIGhhcyBjb21wbGV0ZWQgd2l0aG91dCBlbWl0dGluZyBhbnkgdmFsdWVzLFxuICAgICAgICAgICAgICAvLyB3ZSB3b3VsZG4ndCB3YW50IHRvIGNvbXBsZXRlIHRoZSBlbnRpcmUgY2hhaW4gb2YgYWN0aW9ucy5cbiAgICAgICAgICAgICAgLy8gSWYgYW55IG9ic2VydmFibGUgY29tcGxldGVzLCB0aGVuIHRoZSBhY3Rpb24gd2lsbCBiZSBjYW5jZWxlZC5cbiAgICAgICAgICAgICAgLy8gRm9yIGluc3RhbmNlLCBpZiBhbnkgYWN0aW9uIGhhbmRsZXIgaGFkIGEgc3RhdGVtZW50IGxpa2VcbiAgICAgICAgICAgICAgLy8gYGhhbmRsZXIoY3R4KSB7IHJldHVybiBFTVBUWTsgfWAsIHRoZW4gdGhlIGFjdGlvbiB3b3VsZCBiZSBjYW5jZWxlZC5cbiAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9uZ3hzL3N0b3JlL2lzc3Vlcy8xNTY4XG4gICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBhY3R1YWxseSBkb24ndCBjYXJlIGFib3V0IHRoZSByZXR1cm4gdHlwZTsgd2Ugb25seSBjYXJlXG4gICAgICAgICAgICAgIC8vIGFib3V0IGVtaXNzaW9uLCBhbmQgdGh1cyBgdW5kZWZpbmVkYCBpcyBhcHBsaWNhYmxlIGJ5IHRoZSBmcmFtZXdvcmsuXG4gICAgICAgICAgICAgIGRlZmF1bHRJZkVtcHR5KHVuZGVmaW5lZClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChjYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5vdGlmaWVyJCA9IGRpc3BhdGNoZWQkLnBpcGUob2ZBY3Rpb25EaXNwYXRjaGVkKGFjdGlvbikpO1xuICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucGlwZSh0YWtlVW50aWwobm90aWZpZXIkKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5waXBlKFxuICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIHRoZSBgZmluYWxpemVgIG9wZXJhdG9yIG9ubHkgd2hlbiB0aGUgYWN0aW9uIGhhbmRsZXJcbiAgICAgICAgICAgICAgLy8gcmV0dXJucyBhbiBvYnNlcnZhYmxlLiBJZiB0aGUgYWN0aW9uIGhhbmRsZXIgaXMgc3luY2hyb25vdXMsIHdlIGRvIG5vdFxuICAgICAgICAgICAgICAvLyBuZWVkIHRvIHNldCB0aGUgc3RhdGUgY29udGV4dCBmdW5jdGlvbnMgdG8gYG5vb3BgLCBhcyB0aGUgYWJzZW5jZSBvZiBhXG4gICAgICAgICAgICAgIC8vIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgbm8gYXN5bmNocm9ub3VzIGZ1bmN0aW9uYWxpdHkuIElmIHRoZSBoYW5kbGVyJ3NcbiAgICAgICAgICAgICAgLy8gcmVzdWx0IGlzIHVuc3Vic2NyaWJlZCAoZWl0aGVyIGJlY2F1c2UgdGhlIG9ic2VydmFibGUgaGFzIGNvbXBsZXRlZCBvciBpdFxuICAgICAgICAgICAgICAvLyB3YXMgdW5zdWJzY3JpYmVkIGJ5IGB0YWtlVW50aWxgIGR1ZSB0byBhIG5ldyBhY3Rpb24gYmVpbmcgZGlzcGF0Y2hlZCksXG4gICAgICAgICAgICAgIC8vIHdlIHByZXZlbnQgd3JpdGluZyB0byB0aGUgc3RhdGUgY29udGV4dC5cbiAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlQ29udGV4dC5zZXRTdGF0ZSA9IG5vb3A7XG4gICAgICAgICAgICAgICAgc3RhdGVDb250ZXh0LnBhdGNoU3RhdGUgPSBub29wO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGFjdGlvbiBoYW5kbGVyIGlzIHN5bmNocm9ub3VzIGFuZCByZXR1cm5zIG5vdGhpbmcgKGB2b2lkYCksIHdlXG4gICAgICAgICAgICAvLyBzdGlsbCBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCB0byBhIHN5bmNocm9ub3VzIG9ic2VydmFibGUuXG4gICAgICAgICAgICByZXN1bHQgPSBvZih1bmRlZmluZWQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgZm9yIChjb25zdCBhY3Rpb25IYW5kbGVyIG9mIGFjdGlvbkhhbmRsZXJzKSB7XG4gICAgICAgIHRoaXMuX2FjdGlvblJlZ2lzdHJ5LnJlZ2lzdGVyKGFjdGlvblR5cGUsIGFjdGlvbkhhbmRsZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIGlzIHVzZWQgdG8gcmVwbGFjZSBgc2V0U3RhdGVgIGFuZCBgcGF0Y2hTdGF0ZWAgb25jZSB0aGUgYWN0aW9uXG4vLyBoYW5kbGVyIGhhcyBiZWVuIHVuc3Vic2NyaWJlZCBvciBjb21wbGV0ZWQsIHRvIHByZXZlbnQgd3JpdGluZ1xuLy8gdG8gdGhlIHN0YXRlIGNvbnRleHQuXG5mdW5jdGlvbiBub29wKCkge31cbiJdfQ==
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import { ɵStateStream } from '@ngxs/store/internals';
|
|
3
|
-
import { InternalDispatcher } from '../internal/dispatcher';
|
|
4
|
-
import { NgxsConfig } from '../symbols';
|
|
5
|
-
import { deepFreeze } from '../utils/freeze';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
/**
|
|
8
|
-
* @ignore
|
|
9
|
-
*/
|
|
10
|
-
export class InternalStateOperations {
|
|
11
|
-
constructor() {
|
|
12
|
-
this._stateStream = inject(ɵStateStream);
|
|
13
|
-
this._dispatcher = inject(InternalDispatcher);
|
|
14
|
-
this._config = inject(NgxsConfig);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Returns the root state operators.
|
|
18
|
-
*/
|
|
19
|
-
getRootStateOperations() {
|
|
20
|
-
const rootStateOperations = {
|
|
21
|
-
getState: () => this._stateStream.getValue(),
|
|
22
|
-
setState: (newState) => this._stateStream.next(newState),
|
|
23
|
-
dispatch: (actionOrActions) => this._dispatcher.dispatch(actionOrActions)
|
|
24
|
-
};
|
|
25
|
-
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
26
|
-
return this._config.developmentMode
|
|
27
|
-
? ensureStateAndActionsAreImmutable(rootStateOperations)
|
|
28
|
-
: rootStateOperations;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
return rootStateOperations;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
setStateToTheCurrentWithNew(results) {
|
|
35
|
-
const stateOperations = this.getRootStateOperations();
|
|
36
|
-
// Get our current stream
|
|
37
|
-
const currentState = stateOperations.getState();
|
|
38
|
-
// Set the state to the current + new
|
|
39
|
-
stateOperations.setState({ ...currentState, ...results.defaults });
|
|
40
|
-
}
|
|
41
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalStateOperations, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalStateOperations, providedIn: 'root' }); }
|
|
43
|
-
}
|
|
44
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: InternalStateOperations, decorators: [{
|
|
45
|
-
type: Injectable,
|
|
46
|
-
args: [{ providedIn: 'root' }]
|
|
47
|
-
}] });
|
|
48
|
-
function ensureStateAndActionsAreImmutable(root) {
|
|
49
|
-
return {
|
|
50
|
-
getState: () => root.getState(),
|
|
51
|
-
setState: value => {
|
|
52
|
-
const frozenValue = deepFreeze(value);
|
|
53
|
-
return root.setState(frozenValue);
|
|
54
|
-
},
|
|
55
|
-
dispatch: actions => {
|
|
56
|
-
return root.dispatch(actions);
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtb3BlcmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL3NyYy9pbnRlcm5hbC9zdGF0ZS1vcGVyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFN0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBNkJ0QztJQTNCQzs7T0FFRztJQUNILHNCQUFzQjtRQUNwQixNQUFNLG1CQUFtQixHQUFHO1lBQzFCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtZQUM1QyxRQUFRLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM3RCxRQUFRLEVBQUUsQ0FBQyxlQUE0QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7U0FDdkYsQ0FBQztRQUVGLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlO2dCQUNqQyxDQUFDLENBQUMsaUNBQWlDLENBQUMsbUJBQW1CLENBQUM7Z0JBQ3hELENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sbUJBQW1CLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxPQUEwQjtRQUNwRCxNQUFNLGVBQWUsR0FBeUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFNUUseUJBQXlCO1FBQ3pCLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoRCxxQ0FBcUM7UUFDckMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztpSUEvQlUsdUJBQXVCO3FJQUF2Qix1QkFBdUIsY0FEVixNQUFNOzsyRkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFtQ2xDLFNBQVMsaUNBQWlDLENBQUMsSUFBMEI7SUFDbkUsT0FBTztRQUNMLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQy9CLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNoQixNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgybVTdGF0ZVN0cmVhbSB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XG5cbmltcG9ydCB7IFN0YXRlT3BlcmF0aW9ucywgU3RhdGVzQW5kRGVmYXVsdHMgfSBmcm9tICcuLi9pbnRlcm5hbC9pbnRlcm5hbHMnO1xuaW1wb3J0IHsgSW50ZXJuYWxEaXNwYXRjaGVyIH0gZnJvbSAnLi4vaW50ZXJuYWwvZGlzcGF0Y2hlcic7XG5pbXBvcnQgeyBOZ3hzQ29uZmlnIH0gZnJvbSAnLi4vc3ltYm9scyc7XG5pbXBvcnQgeyBkZWVwRnJlZXplIH0gZnJvbSAnLi4vdXRpbHMvZnJlZXplJztcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSW50ZXJuYWxTdGF0ZU9wZXJhdGlvbnMge1xuICBwcml2YXRlIF9zdGF0ZVN0cmVhbSA9IGluamVjdCjJtVN0YXRlU3RyZWFtKTtcbiAgcHJpdmF0ZSBfZGlzcGF0Y2hlciA9IGluamVjdChJbnRlcm5hbERpc3BhdGNoZXIpO1xuICBwcml2YXRlIF9jb25maWcgPSBpbmplY3QoTmd4c0NvbmZpZyk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHJvb3Qgc3RhdGUgb3BlcmF0b3JzLlxuICAgKi9cbiAgZ2V0Um9vdFN0YXRlT3BlcmF0aW9ucygpOiBTdGF0ZU9wZXJhdGlvbnM8YW55PiB7XG4gICAgY29uc3Qgcm9vdFN0YXRlT3BlcmF0aW9ucyA9IHtcbiAgICAgIGdldFN0YXRlOiAoKSA9PiB0aGlzLl9zdGF0ZVN0cmVhbS5nZXRWYWx1ZSgpLFxuICAgICAgc2V0U3RhdGU6IChuZXdTdGF0ZTogYW55KSA9PiB0aGlzLl9zdGF0ZVN0cmVhbS5uZXh0KG5ld1N0YXRlKSxcbiAgICAgIGRpc3BhdGNoOiAoYWN0aW9uT3JBY3Rpb25zOiBhbnkgfCBhbnlbXSkgPT4gdGhpcy5fZGlzcGF0Y2hlci5kaXNwYXRjaChhY3Rpb25PckFjdGlvbnMpXG4gICAgfTtcblxuICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlICE9PSAndW5kZWZpbmVkJyAmJiBuZ0Rldk1vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb25maWcuZGV2ZWxvcG1lbnRNb2RlXG4gICAgICAgID8gZW5zdXJlU3RhdGVBbmRBY3Rpb25zQXJlSW1tdXRhYmxlKHJvb3RTdGF0ZU9wZXJhdGlvbnMpXG4gICAgICAgIDogcm9vdFN0YXRlT3BlcmF0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJvb3RTdGF0ZU9wZXJhdGlvbnM7XG4gICAgfVxuICB9XG5cbiAgc2V0U3RhdGVUb1RoZUN1cnJlbnRXaXRoTmV3KHJlc3VsdHM6IFN0YXRlc0FuZERlZmF1bHRzKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGVPcGVyYXRpb25zOiBTdGF0ZU9wZXJhdGlvbnM8YW55PiA9IHRoaXMuZ2V0Um9vdFN0YXRlT3BlcmF0aW9ucygpO1xuXG4gICAgLy8gR2V0IG91ciBjdXJyZW50IHN0cmVhbVxuICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IHN0YXRlT3BlcmF0aW9ucy5nZXRTdGF0ZSgpO1xuICAgIC8vIFNldCB0aGUgc3RhdGUgdG8gdGhlIGN1cnJlbnQgKyBuZXdcbiAgICBzdGF0ZU9wZXJhdGlvbnMuc2V0U3RhdGUoeyAuLi5jdXJyZW50U3RhdGUsIC4uLnJlc3VsdHMuZGVmYXVsdHMgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5zdXJlU3RhdGVBbmRBY3Rpb25zQXJlSW1tdXRhYmxlKHJvb3Q6IFN0YXRlT3BlcmF0aW9uczxhbnk+KTogU3RhdGVPcGVyYXRpb25zPGFueT4ge1xuICByZXR1cm4ge1xuICAgIGdldFN0YXRlOiAoKSA9PiByb290LmdldFN0YXRlKCksXG4gICAgc2V0U3RhdGU6IHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGZyb3plblZhbHVlID0gZGVlcEZyZWV6ZSh2YWx1ZSk7XG4gICAgICByZXR1cm4gcm9vdC5zZXRTdGF0ZShmcm96ZW5WYWx1ZSk7XG4gICAgfSxcbiAgICBkaXNwYXRjaDogYWN0aW9ucyA9PiB7XG4gICAgICByZXR1cm4gcm9vdC5kaXNwYXRjaChhY3Rpb25zKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { throwPatchingArrayError, throwPatchingPrimitiveError } from '../configs/messages.config';
|
|
2
|
-
export function simplePatch(value) {
|
|
3
|
-
return (existingState) => {
|
|
4
|
-
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
|
|
5
|
-
if (Array.isArray(value)) {
|
|
6
|
-
throwPatchingArrayError();
|
|
7
|
-
}
|
|
8
|
-
else if (typeof value !== 'object') {
|
|
9
|
-
throwPatchingPrimitiveError();
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
const newState = { ...existingState };
|
|
13
|
-
for (const key in value) {
|
|
14
|
-
// deep clone for patch compatibility
|
|
15
|
-
newState[key] = value[key];
|
|
16
|
-
}
|
|
17
|
-
return newState;
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtb3BlcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RvcmUvc3JjL2ludGVybmFsL3N0YXRlLW9wZXJhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUM1QixNQUFNLDRCQUE0QixDQUFDO0FBR3BDLE1BQU0sVUFBVSxXQUFXLENBQUksS0FBaUI7SUFDOUMsT0FBTyxDQUFDLGFBQStCLEVBQUUsRUFBRTtRQUN6QyxJQUFJLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNsRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsdUJBQXVCLEVBQUUsQ0FBQztZQUM1QixDQUFDO2lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3JDLDJCQUEyQixFQUFFLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBUSxFQUFFLEdBQUksYUFBcUIsRUFBRSxDQUFDO1FBQ3BELEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDeEIscUNBQXFDO1lBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBSSxLQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sUUFBYSxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0aHJvd1BhdGNoaW5nQXJyYXlFcnJvcixcbiAgdGhyb3dQYXRjaGluZ1ByaW1pdGl2ZUVycm9yXG59IGZyb20gJy4uL2NvbmZpZ3MvbWVzc2FnZXMuY29uZmlnJztcbmltcG9ydCB7IEV4aXN0aW5nU3RhdGUsIFN0YXRlT3BlcmF0b3IgfSBmcm9tICdAbmd4cy9zdG9yZS9vcGVyYXRvcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxlUGF0Y2g8VD4odmFsdWU6IFBhcnRpYWw8VD4pOiBTdGF0ZU9wZXJhdG9yPFQ+IHtcbiAgcmV0dXJuIChleGlzdGluZ1N0YXRlOiBFeGlzdGluZ1N0YXRlPFQ+KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgIT09ICd1bmRlZmluZWQnICYmIG5nRGV2TW9kZSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRocm93UGF0Y2hpbmdBcnJheUVycm9yKCk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3dQYXRjaGluZ1ByaW1pdGl2ZUVycm9yKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHsgLi4uKGV4aXN0aW5nU3RhdGUgYXMgYW55KSB9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlKSB7XG4gICAgICAvLyBkZWVwIGNsb25lIGZvciBwYXRjaCBjb21wYXRpYmlsaXR5XG4gICAgICBuZXdTdGF0ZVtrZXldID0gKHZhbHVlIGFzIGFueSlba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3U3RhdGUgYXMgVDtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { config } from 'rxjs';
|
|
2
|
-
const ɵɵunhandledRxjsErrorCallbacks = new WeakMap();
|
|
3
|
-
let installed = false;
|
|
4
|
-
export function installOnUnhandhedErrorHandler() {
|
|
5
|
-
if (installed) {
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
const existingHandler = config.onUnhandledError;
|
|
9
|
-
config.onUnhandledError = function (error) {
|
|
10
|
-
const unhandledErrorCallback = ɵɵunhandledRxjsErrorCallbacks.get(error);
|
|
11
|
-
if (unhandledErrorCallback) {
|
|
12
|
-
unhandledErrorCallback();
|
|
13
|
-
}
|
|
14
|
-
else if (existingHandler) {
|
|
15
|
-
existingHandler.call(this, error);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
throw error;
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
installed = true;
|
|
22
|
-
}
|
|
23
|
-
export function executeUnhandledCallback(error) {
|
|
24
|
-
const unhandledErrorCallback = ɵɵunhandledRxjsErrorCallbacks.get(error);
|
|
25
|
-
if (unhandledErrorCallback) {
|
|
26
|
-
unhandledErrorCallback();
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
export function assignUnhandledCallback(error, callback) {
|
|
32
|
-
// Since the error can be essentially anything, we must ensure that we only
|
|
33
|
-
// handle objects, as weak maps do not allow any other key type besides objects.
|
|
34
|
-
// The error can also be a string if thrown in the following manner: `throwError('My Error')`.
|
|
35
|
-
if (error !== null && typeof error === 'object') {
|
|
36
|
-
let hasBeenCalled = false;
|
|
37
|
-
ɵɵunhandledRxjsErrorCallbacks.set(error, () => {
|
|
38
|
-
if (!hasBeenCalled) {
|
|
39
|
-
hasBeenCalled = true;
|
|
40
|
-
callback();
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
return error;
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5oYW5kbGVkLXJ4anMtZXJyb3ItY2FsbGJhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yZS9zcmMvaW50ZXJuYWwvdW5oYW5kbGVkLXJ4anMtZXJyb3ItY2FsbGJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5QixNQUFNLDZCQUE2QixHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0FBRXZFLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztBQUN0QixNQUFNLFVBQVUsOEJBQThCO0lBQzVDLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNoRCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxLQUFVO1FBQzVDLE1BQU0sc0JBQXNCLEdBQUcsNkJBQTZCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQixzQkFBc0IsRUFBRSxDQUFDO1FBQzNCLENBQUM7YUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzNCLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsU0FBUyxHQUFHLElBQUksQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEtBQVU7SUFDakQsTUFBTSxzQkFBc0IsR0FBRyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQzNCLHNCQUFzQixFQUFFLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQVUsRUFBRSxRQUFzQjtJQUN4RSwyRUFBMkU7SUFDM0UsZ0ZBQWdGO0lBQ2hGLDhGQUE4RjtJQUM5RixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEQsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzFCLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQzVDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDckIsUUFBUSxFQUFFLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IMm1ybV1bmhhbmRsZWRSeGpzRXJyb3JDYWxsYmFja3MgPSBuZXcgV2Vha01hcDxhbnksIFZvaWRGdW5jdGlvbj4oKTtcblxubGV0IGluc3RhbGxlZCA9IGZhbHNlO1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxPblVuaGFuZGhlZEVycm9ySGFuZGxlcigpOiB2b2lkIHtcbiAgaWYgKGluc3RhbGxlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nSGFuZGxlciA9IGNvbmZpZy5vblVuaGFuZGxlZEVycm9yO1xuICBjb25maWcub25VbmhhbmRsZWRFcnJvciA9IGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG4gICAgY29uc3QgdW5oYW5kbGVkRXJyb3JDYWxsYmFjayA9IMm1ybV1bmhhbmRsZWRSeGpzRXJyb3JDYWxsYmFja3MuZ2V0KGVycm9yKTtcbiAgICBpZiAodW5oYW5kbGVkRXJyb3JDYWxsYmFjaykge1xuICAgICAgdW5oYW5kbGVkRXJyb3JDYWxsYmFjaygpO1xuICAgIH0gZWxzZSBpZiAoZXhpc3RpbmdIYW5kbGVyKSB7XG4gICAgICBleGlzdGluZ0hhbmRsZXIuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBpbnN0YWxsZWQgPSB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZVVuaGFuZGxlZENhbGxiYWNrKGVycm9yOiBhbnkpIHtcbiAgY29uc3QgdW5oYW5kbGVkRXJyb3JDYWxsYmFjayA9IMm1ybV1bmhhbmRsZWRSeGpzRXJyb3JDYWxsYmFja3MuZ2V0KGVycm9yKTtcbiAgaWYgKHVuaGFuZGxlZEVycm9yQ2FsbGJhY2spIHtcbiAgICB1bmhhbmRsZWRFcnJvckNhbGxiYWNrKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduVW5oYW5kbGVkQ2FsbGJhY2soZXJyb3I6IGFueSwgY2FsbGJhY2s6IFZvaWRGdW5jdGlvbikge1xuICAvLyBTaW5jZSB0aGUgZXJyb3IgY2FuIGJlIGVzc2VudGlhbGx5IGFueXRoaW5nLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IHdlIG9ubHlcbiAgLy8gaGFuZGxlIG9iamVjdHMsIGFzIHdlYWsgbWFwcyBkbyBub3QgYWxsb3cgYW55IG90aGVyIGtleSB0eXBlIGJlc2lkZXMgb2JqZWN0cy5cbiAgLy8gVGhlIGVycm9yIGNhbiBhbHNvIGJlIGEgc3RyaW5nIGlmIHRocm93biBpbiB0aGUgZm9sbG93aW5nIG1hbm5lcjogYHRocm93RXJyb3IoJ015IEVycm9yJylgLlxuICBpZiAoZXJyb3IgIT09IG51bGwgJiYgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0Jykge1xuICAgIGxldCBoYXNCZWVuQ2FsbGVkID0gZmFsc2U7XG4gICAgybXJtXVuaGFuZGxlZFJ4anNFcnJvckNhbGxiYWNrcy5zZXQoZXJyb3IsICgpID0+IHtcbiAgICAgIGlmICghaGFzQmVlbkNhbGxlZCkge1xuICAgICAgICBoYXNCZWVuQ2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZXJyb3I7XG59XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { getUndecoratedStateWithInjectableWarningMessage } from '../configs/messages.config';
|
|
2
|
-
/**
|
|
3
|
-
* All provided or injected tokens must have `@Injectable` decorator
|
|
4
|
-
* (previously, injected tokens without `@Injectable` were allowed
|
|
5
|
-
* if another decorator was used, e.g. pipes).
|
|
6
|
-
*/
|
|
7
|
-
export function ensureStateClassIsInjectable(stateClass) {
|
|
8
|
-
if (jit_hasInjectableAnnotation(stateClass) || aot_hasNgInjectableDef(stateClass)) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
console.warn(getUndecoratedStateWithInjectableWarningMessage(stateClass.name));
|
|
12
|
-
}
|
|
13
|
-
function aot_hasNgInjectableDef(stateClass) {
|
|
14
|
-
// `ɵprov` is a static property added by the NGCC compiler. It always exists in
|
|
15
|
-
// AOT mode because this property is added before runtime. If an application is running in
|
|
16
|
-
// JIT mode then this property can be added by the `@Injectable()` decorator. The `@Injectable()`
|
|
17
|
-
// decorator has to go after the `@State()` decorator, thus we prevent users from unwanted DI errors.
|
|
18
|
-
return !!stateClass.ɵprov;
|
|
19
|
-
}
|
|
20
|
-
function jit_hasInjectableAnnotation(stateClass) {
|
|
21
|
-
// `ɵprov` doesn't exist in JIT mode (for instance when running unit tests with Jest).
|
|
22
|
-
const annotations = stateClass.__annotations__ || [];
|
|
23
|
-
return annotations.some((annotation) => annotation?.ngMetadataName === 'Injectable');
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXZ5LWVuYWJsZWQtaW4tZGV2LW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yZS9zcmMvaXZ5L2l2eS1lbmFibGVkLWluLWRldi1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsVUFBZTtJQUMxRCxJQUFJLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxJQUFJLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDbEYsT0FBTztJQUNULENBQUM7SUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLCtDQUErQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLFVBQWU7SUFDN0MsK0VBQStFO0lBQy9FLDBGQUEwRjtJQUMxRixpR0FBaUc7SUFDakcscUdBQXFHO0lBQ3JHLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7QUFDNUIsQ0FBQztBQUVELFNBQVMsMkJBQTJCLENBQUMsVUFBZTtJQUNsRCxzRkFBc0Y7SUFDdEYsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFDckQsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxLQUFLLFlBQVksQ0FBQyxDQUFDO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRVbmRlY29yYXRlZFN0YXRlV2l0aEluamVjdGFibGVXYXJuaW5nTWVzc2FnZSB9IGZyb20gJy4uL2NvbmZpZ3MvbWVzc2FnZXMuY29uZmlnJztcblxuLyoqXG4gKiBBbGwgcHJvdmlkZWQgb3IgaW5qZWN0ZWQgdG9rZW5zIG11c3QgaGF2ZSBgQEluamVjdGFibGVgIGRlY29yYXRvclxuICogKHByZXZpb3VzbHksIGluamVjdGVkIHRva2VucyB3aXRob3V0IGBASW5qZWN0YWJsZWAgd2VyZSBhbGxvd2VkXG4gKiBpZiBhbm90aGVyIGRlY29yYXRvciB3YXMgdXNlZCwgZS5nLiBwaXBlcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTdGF0ZUNsYXNzSXNJbmplY3RhYmxlKHN0YXRlQ2xhc3M6IGFueSk6IHZvaWQge1xuICBpZiAoaml0X2hhc0luamVjdGFibGVBbm5vdGF0aW9uKHN0YXRlQ2xhc3MpIHx8IGFvdF9oYXNOZ0luamVjdGFibGVEZWYoc3RhdGVDbGFzcykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zb2xlLndhcm4oZ2V0VW5kZWNvcmF0ZWRTdGF0ZVdpdGhJbmplY3RhYmxlV2FybmluZ01lc3NhZ2Uoc3RhdGVDbGFzcy5uYW1lKSk7XG59XG5cbmZ1bmN0aW9uIGFvdF9oYXNOZ0luamVjdGFibGVEZWYoc3RhdGVDbGFzczogYW55KTogYm9vbGVhbiB7XG4gIC8vIGDJtXByb3ZgIGlzIGEgc3RhdGljIHByb3BlcnR5IGFkZGVkIGJ5IHRoZSBOR0NDIGNvbXBpbGVyLiBJdCBhbHdheXMgZXhpc3RzIGluXG4gIC8vIEFPVCBtb2RlIGJlY2F1c2UgdGhpcyBwcm9wZXJ0eSBpcyBhZGRlZCBiZWZvcmUgcnVudGltZS4gSWYgYW4gYXBwbGljYXRpb24gaXMgcnVubmluZyBpblxuICAvLyBKSVQgbW9kZSB0aGVuIHRoaXMgcHJvcGVydHkgY2FuIGJlIGFkZGVkIGJ5IHRoZSBgQEluamVjdGFibGUoKWAgZGVjb3JhdG9yLiBUaGUgYEBJbmplY3RhYmxlKClgXG4gIC8vIGRlY29yYXRvciBoYXMgdG8gZ28gYWZ0ZXIgdGhlIGBAU3RhdGUoKWAgZGVjb3JhdG9yLCB0aHVzIHdlIHByZXZlbnQgdXNlcnMgZnJvbSB1bndhbnRlZCBESSBlcnJvcnMuXG4gIHJldHVybiAhIXN0YXRlQ2xhc3MuybVwcm92O1xufVxuXG5mdW5jdGlvbiBqaXRfaGFzSW5qZWN0YWJsZUFubm90YXRpb24oc3RhdGVDbGFzczogYW55KTogYm9vbGVhbiB7XG4gIC8vIGDJtXByb3ZgIGRvZXNuJ3QgZXhpc3QgaW4gSklUIG1vZGUgKGZvciBpbnN0YW5jZSB3aGVuIHJ1bm5pbmcgdW5pdCB0ZXN0cyB3aXRoIEplc3QpLlxuICBjb25zdCBhbm5vdGF0aW9ucyA9IHN0YXRlQ2xhc3MuX19hbm5vdGF0aW9uc19fIHx8IFtdO1xuICByZXR1cm4gYW5ub3RhdGlvbnMuc29tZSgoYW5ub3RhdGlvbjogYW55KSA9PiBhbm5vdGF0aW9uPy5uZ01ldGFkYXRhTmFtZSA9PT0gJ0luamVjdGFibGUnKTtcbn1cbiJdfQ==
|
package/esm2022/src/module.mjs
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { NgxsRootModule } from './modules/ngxs-root.module';
|
|
3
|
-
import { NgxsFeatureModule } from './modules/ngxs-feature.module';
|
|
4
|
-
import { getRootProviders } from './standalone-features/root-providers';
|
|
5
|
-
import { getFeatureProviders } from './standalone-features/feature-providers';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class NgxsModule {
|
|
8
|
-
static forRoot(states = [], options = {}) {
|
|
9
|
-
return {
|
|
10
|
-
ngModule: NgxsRootModule,
|
|
11
|
-
providers: getRootProviders(states, options)
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
static forFeature(states = []) {
|
|
15
|
-
return {
|
|
16
|
-
ngModule: NgxsFeatureModule,
|
|
17
|
-
providers: getFeatureProviders(states)
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
21
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: NgxsModule }); }
|
|
22
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsModule }); }
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsModule, decorators: [{
|
|
25
|
-
type: NgModule
|
|
26
|
-
}] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RvcmUvc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBRzlFLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQ1osU0FBd0IsRUFBRSxFQUMxQixVQUE2QixFQUFFO1FBRS9CLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBd0IsRUFBRTtRQUMxQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQ3ZDLENBQUM7SUFDSixDQUFDO2lJQWhCVSxVQUFVO2tJQUFWLFVBQVU7a0lBQVYsVUFBVTs7MkZBQVYsVUFBVTtrQkFEdEIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyDJtVN0YXRlQ2xhc3MgfSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xuXG5pbXBvcnQgeyBOZ3hzTW9kdWxlT3B0aW9ucyB9IGZyb20gJy4vc3ltYm9scyc7XG5pbXBvcnQgeyBOZ3hzUm9vdE1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9uZ3hzLXJvb3QubW9kdWxlJztcbmltcG9ydCB7IE5neHNGZWF0dXJlTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL25neHMtZmVhdHVyZS5tb2R1bGUnO1xuaW1wb3J0IHsgZ2V0Um9vdFByb3ZpZGVycyB9IGZyb20gJy4vc3RhbmRhbG9uZS1mZWF0dXJlcy9yb290LXByb3ZpZGVycyc7XG5pbXBvcnQgeyBnZXRGZWF0dXJlUHJvdmlkZXJzIH0gZnJvbSAnLi9zdGFuZGFsb25lLWZlYXR1cmVzL2ZlYXR1cmUtcHJvdmlkZXJzJztcblxuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBOZ3hzTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgc3RhdGVzOiDJtVN0YXRlQ2xhc3NbXSA9IFtdLFxuICAgIG9wdGlvbnM6IE5neHNNb2R1bGVPcHRpb25zID0ge31cbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hzUm9vdE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTmd4c1Jvb3RNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IGdldFJvb3RQcm92aWRlcnMoc3RhdGVzLCBvcHRpb25zKVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZm9yRmVhdHVyZShzdGF0ZXM6IMm1U3RhdGVDbGFzc1tdID0gW10pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neHNGZWF0dXJlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBOZ3hzRmVhdHVyZU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogZ2V0RmVhdHVyZVByb3ZpZGVycyhzdGF0ZXMpXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { featureStatesInitializer } from '../standalone-features/initializers';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* @ignore
|
|
6
|
-
*/
|
|
7
|
-
export class NgxsFeatureModule {
|
|
8
|
-
constructor() {
|
|
9
|
-
featureStatesInitializer();
|
|
10
|
-
}
|
|
11
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsFeatureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: NgxsFeatureModule }); }
|
|
13
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsFeatureModule }); }
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsFeatureModule, decorators: [{
|
|
16
|
-
type: NgModule
|
|
17
|
-
}], ctorParameters: () => [] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1mZWF0dXJlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL3NyYy9tb2R1bGVzL25neHMtZmVhdHVyZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFL0U7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCO1FBQ0Usd0JBQXdCLEVBQUUsQ0FBQztJQUM3QixDQUFDO2lJQUhVLGlCQUFpQjtrSUFBakIsaUJBQWlCO2tJQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBmZWF0dXJlU3RhdGVzSW5pdGlhbGl6ZXIgfSBmcm9tICcuLi9zdGFuZGFsb25lLWZlYXR1cmVzL2luaXRpYWxpemVycyc7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIE5neHNGZWF0dXJlTW9kdWxlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZmVhdHVyZVN0YXRlc0luaXRpYWxpemVyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { rootStoreInitializer } from '../standalone-features/initializers';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* @ignore
|
|
6
|
-
*/
|
|
7
|
-
export class NgxsRootModule {
|
|
8
|
-
constructor() {
|
|
9
|
-
rootStoreInitializer();
|
|
10
|
-
}
|
|
11
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsRootModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: NgxsRootModule }); }
|
|
13
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsRootModule }); }
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NgxsRootModule, decorators: [{
|
|
16
|
-
type: NgModule
|
|
17
|
-
}], ctorParameters: () => [] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy1yb290Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL3NyYy9tb2R1bGVzL25neHMtcm9vdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFM0U7O0dBRUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUN6QjtRQUNFLG9CQUFvQixFQUFFLENBQUM7SUFDekIsQ0FBQztpSUFIVSxjQUFjO2tJQUFkLGNBQWM7a0lBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IHJvb3RTdG9yZUluaXRpYWxpemVyIH0gZnJvbSAnLi4vc3RhbmRhbG9uZS1mZWF0dXJlcy9pbml0aWFsaXplcnMnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBOZ3hzUm9vdE1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHJvb3RTdG9yZUluaXRpYWxpemVyKCk7XG4gIH1cbn1cbiJdfQ==
|