@ngxs/store 3.8.1-dev.master-b3b91f8 → 3.8.1-dev.master-b132a8a

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.
@@ -24,6 +24,11 @@ export function getZoneWarningMessage() {
24
24
  export function getUndecoratedStateInIvyWarningMessage(name) {
25
25
  return `'${name}' class should be decorated with @Injectable() right after the @State() decorator`;
26
26
  }
27
+ export function getInvalidInitializationOrderMessage() {
28
+ return ('You have an invalid state initialization order. This typically occurs when `NgxsModule.forFeature`\n' +
29
+ 'or `provideStates` is called before `NgxsModule.forRoot` or `provideStore`.\n' +
30
+ 'One example is when `NgxsRouterPluginModule.forRoot` is called before `NgxsModule.forRoot`.');
31
+ }
27
32
  export function throwSelectFactoryNotConnectedError() {
28
33
  throw new Error('You have forgotten to import the NGXS module!');
29
34
  }
@@ -33,4 +38,4 @@ export function throwPatchingArrayError() {
33
38
  export function throwPatchingPrimitiveError() {
34
39
  throw new Error('Patching primitives is not supported.');
35
40
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RvcmUvc3JjL2NvbmZpZ3MvbWVzc2FnZXMuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFZO0lBQzlDLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxJQUFJLDBFQUEwRSxDQUNsRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkI7SUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLE9BQWUsRUFDZixPQUFlLEVBQ2YsT0FBZTtJQUVmLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxPQUFPLFVBQVUsT0FBTyxzQkFBc0IsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLElBQVk7SUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsSUFBSSxVQUFVLENBQUMsQ0FBQztBQUM1RixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkI7SUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sQ0FDTCw2R0FBNkc7UUFDN0csd0ZBQXdGO1FBQ3hGLDhFQUE4RSxDQUMvRSxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxzQ0FBc0MsQ0FBQyxJQUFZO0lBQ2pFLE9BQU8sSUFBSSxJQUFJLG1GQUFtRixDQUFDO0FBQ3JHLENBQUM7QUFFRCxNQUFNLFVBQVUsbUNBQW1DO0lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkI7SUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gdGhyb3dTdGF0ZU5hbWVFcnJvcihuYW1lOiBzdHJpbmcpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgJHtuYW1lfSBpcyBub3QgYSB2YWxpZCBzdGF0ZSBuYW1lLiBJdCBuZWVkcyB0byBiZSBhIHZhbGlkIG9iamVjdCBwcm9wZXJ0eSBuYW1lLmBcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93U3RhdGVOYW1lUHJvcGVydHlFcnJvcigpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgU3RhdGVzIG11c3QgcmVnaXN0ZXIgYSAnbmFtZScgcHJvcGVydHkuYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd1N0YXRlVW5pcXVlRXJyb3IoXG4gIGN1cnJlbnQ6IHN0cmluZyxcbiAgbmV3TmFtZTogc3RyaW5nLFxuICBvbGROYW1lOiBzdHJpbmdcbik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBTdGF0ZSBuYW1lICcke2N1cnJlbnR9JyBmcm9tICR7bmV3TmFtZX0gYWxyZWFkeSBleGlzdHMgaW4gJHtvbGROYW1lfS5gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93U3RhdGVEZWNvcmF0b3JFcnJvcihuYW1lOiBzdHJpbmcpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcihgU3RhdGVzIG11c3QgYmUgZGVjb3JhdGVkIHdpdGggQFN0YXRlKCkgZGVjb3JhdG9yLCBidXQgXCIke25hbWV9XCIgaXNuJ3QuYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0FjdGlvbkRlY29yYXRvckVycm9yKCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdAQWN0aW9uKCkgZGVjb3JhdG9yIGNhbm5vdCBiZSB1c2VkIHdpdGggc3RhdGljIG1ldGhvZHMuJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd1NlbGVjdG9yRGVjb3JhdG9yRXJyb3IoKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1NlbGVjdG9ycyBvbmx5IHdvcmsgb24gbWV0aG9kcy4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFpvbmVXYXJuaW5nTWVzc2FnZSgpOiBzdHJpbmcge1xuICByZXR1cm4gKFxuICAgICdZb3VyIGFwcGxpY2F0aW9uIHdhcyBib290c3RyYXBwZWQgd2l0aCBub29wZWQgem9uZSBhbmQgeW91ciBleGVjdXRpb24gc3RyYXRlZ3kgcmVxdWlyZXMgYW4gYWN0dWFsIE5nWm9uZSFcXG4nICtcbiAgICAnUGxlYXNlIHNldCB0aGUgdmFsdWUgb2YgdGhlIGV4ZWN1dGlvblN0cmF0ZWd5IHByb3BlcnR5IHRvIE5vb3BOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kuXFxuJyArXG4gICAgJ05neHNNb2R1bGUuZm9yUm9vdChzdGF0ZXMsIHsgZXhlY3V0aW9uU3RyYXRlZ3k6IE5vb3BOZ3hzRXhlY3V0aW9uU3RyYXRlZ3kgfSknXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmRlY29yYXRlZFN0YXRlSW5JdnlXYXJuaW5nTWVzc2FnZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCcke25hbWV9JyBjbGFzcyBzaG91bGQgYmUgZGVjb3JhdGVkIHdpdGggQEluamVjdGFibGUoKSByaWdodCBhZnRlciB0aGUgQFN0YXRlKCkgZGVjb3JhdG9yYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93U2VsZWN0RmFjdG9yeU5vdENvbm5lY3RlZEVycm9yKCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSBmb3Jnb3R0ZW4gdG8gaW1wb3J0IHRoZSBOR1hTIG1vZHVsZSEnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93UGF0Y2hpbmdBcnJheUVycm9yKCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdQYXRjaGluZyBhcnJheXMgaXMgbm90IHN1cHBvcnRlZC4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93UGF0Y2hpbmdQcmltaXRpdmVFcnJvcigpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcignUGF0Y2hpbmcgcHJpbWl0aXZlcyBpcyBub3Qgc3VwcG9ydGVkLicpO1xufVxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3RvcmUvc3JjL2NvbmZpZ3MvbWVzc2FnZXMuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFZO0lBQzlDLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxJQUFJLDBFQUEwRSxDQUNsRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkI7SUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLE9BQWUsRUFDZixPQUFlLEVBQ2YsT0FBZTtJQUVmLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxPQUFPLFVBQVUsT0FBTyxzQkFBc0IsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLElBQVk7SUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsSUFBSSxVQUFVLENBQUMsQ0FBQztBQUM1RixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkI7SUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sQ0FDTCw2R0FBNkc7UUFDN0csd0ZBQXdGO1FBQ3hGLDhFQUE4RSxDQUMvRSxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxzQ0FBc0MsQ0FBQyxJQUFZO0lBQ2pFLE9BQU8sSUFBSSxJQUFJLG1GQUFtRixDQUFDO0FBQ3JHLENBQUM7QUFFRCxNQUFNLFVBQVUsb0NBQW9DO0lBQ2xELE9BQU8sQ0FDTCxzR0FBc0c7UUFDdEcsK0VBQStFO1FBQy9FLDZGQUE2RixDQUM5RixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxtQ0FBbUM7SUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQjtJQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiB0aHJvd1N0YXRlTmFtZUVycm9yKG5hbWU6IHN0cmluZyk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGAke25hbWV9IGlzIG5vdCBhIHZhbGlkIHN0YXRlIG5hbWUuIEl0IG5lZWRzIHRvIGJlIGEgdmFsaWQgb2JqZWN0IHByb3BlcnR5IG5hbWUuYFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dTdGF0ZU5hbWVQcm9wZXJ0eUVycm9yKCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBTdGF0ZXMgbXVzdCByZWdpc3RlciBhICduYW1lJyBwcm9wZXJ0eS5gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93U3RhdGVVbmlxdWVFcnJvcihcbiAgY3VycmVudDogc3RyaW5nLFxuICBuZXdOYW1lOiBzdHJpbmcsXG4gIG9sZE5hbWU6IHN0cmluZ1xuKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFN0YXRlIG5hbWUgJyR7Y3VycmVudH0nIGZyb20gJHtuZXdOYW1lfSBhbHJlYWR5IGV4aXN0cyBpbiAke29sZE5hbWV9LmApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dTdGF0ZURlY29yYXRvckVycm9yKG5hbWU6IHN0cmluZyk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBTdGF0ZXMgbXVzdCBiZSBkZWNvcmF0ZWQgd2l0aCBAU3RhdGUoKSBkZWNvcmF0b3IsIGJ1dCBcIiR7bmFtZX1cIiBpc24ndC5gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93QWN0aW9uRGVjb3JhdG9yRXJyb3IoKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoJ0BBY3Rpb24oKSBkZWNvcmF0b3IgY2Fubm90IGJlIHVzZWQgd2l0aCBzdGF0aWMgbWV0aG9kcy4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93U2VsZWN0b3JEZWNvcmF0b3JFcnJvcigpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcignU2VsZWN0b3JzIG9ubHkgd29yayBvbiBtZXRob2RzLicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Wm9uZVdhcm5pbmdNZXNzYWdlKCk6IHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgJ1lvdXIgYXBwbGljYXRpb24gd2FzIGJvb3RzdHJhcHBlZCB3aXRoIG5vb3BlZCB6b25lIGFuZCB5b3VyIGV4ZWN1dGlvbiBzdHJhdGVneSByZXF1aXJlcyBhbiBhY3R1YWwgTmdab25lIVxcbicgK1xuICAgICdQbGVhc2Ugc2V0IHRoZSB2YWx1ZSBvZiB0aGUgZXhlY3V0aW9uU3RyYXRlZ3kgcHJvcGVydHkgdG8gTm9vcE5neHNFeGVjdXRpb25TdHJhdGVneS5cXG4nICtcbiAgICAnTmd4c01vZHVsZS5mb3JSb290KHN0YXRlcywgeyBleGVjdXRpb25TdHJhdGVneTogTm9vcE5neHNFeGVjdXRpb25TdHJhdGVneSB9KSdcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFVuZGVjb3JhdGVkU3RhdGVJbkl2eVdhcm5pbmdNZXNzYWdlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJyR7bmFtZX0nIGNsYXNzIHNob3VsZCBiZSBkZWNvcmF0ZWQgd2l0aCBASW5qZWN0YWJsZSgpIHJpZ2h0IGFmdGVyIHRoZSBAU3RhdGUoKSBkZWNvcmF0b3JgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW52YWxpZEluaXRpYWxpemF0aW9uT3JkZXJNZXNzYWdlKCkge1xuICByZXR1cm4gKFxuICAgICdZb3UgaGF2ZSBhbiBpbnZhbGlkIHN0YXRlIGluaXRpYWxpemF0aW9uIG9yZGVyLiBUaGlzIHR5cGljYWxseSBvY2N1cnMgd2hlbiBgTmd4c01vZHVsZS5mb3JGZWF0dXJlYFxcbicgK1xuICAgICdvciBgcHJvdmlkZVN0YXRlc2AgaXMgY2FsbGVkIGJlZm9yZSBgTmd4c01vZHVsZS5mb3JSb290YCBvciBgcHJvdmlkZVN0b3JlYC5cXG4nICtcbiAgICAnT25lIGV4YW1wbGUgaXMgd2hlbiBgTmd4c1JvdXRlclBsdWdpbk1vZHVsZS5mb3JSb290YCBpcyBjYWxsZWQgYmVmb3JlIGBOZ3hzTW9kdWxlLmZvclJvb3RgLidcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93U2VsZWN0RmFjdG9yeU5vdENvbm5lY3RlZEVycm9yKCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdZb3UgaGF2ZSBmb3Jnb3R0ZW4gdG8gaW1wb3J0IHRoZSBOR1hTIG1vZHVsZSEnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93UGF0Y2hpbmdBcnJheUVycm9yKCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdQYXRjaGluZyBhcnJheXMgaXMgbm90IHN1cHBvcnRlZC4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRocm93UGF0Y2hpbmdQcmltaXRpdmVFcnJvcigpOiBuZXZlciB7XG4gIHRocm93IG5ldyBFcnJvcignUGF0Y2hpbmcgcHJpbWl0aXZlcyBpcyBub3Qgc3VwcG9ydGVkLicpO1xufVxuIl19
@@ -5,15 +5,18 @@ import { catchError, filter, mergeMap, pairwise, startWith, takeUntil, tap } fro
5
5
  import { Store } from '../store';
6
6
  import { getValue } from '../utils/utils';
7
7
  import { InternalErrorReporter } from './error-handler';
8
+ import { InitState, UpdateState } from '../actions/actions';
8
9
  import { StateContextFactory } from './state-context-factory';
9
10
  import { InternalStateOperations } from './state-operations';
10
11
  import { NgxsSimpleChange } from '../symbols';
12
+ import { getInvalidInitializationOrderMessage } from '../configs/messages.config';
11
13
  import * as i0 from "@angular/core";
12
14
  import * as i1 from "../store";
13
15
  import * as i2 from "./error-handler";
14
16
  import * as i3 from "./state-operations";
15
17
  import * as i4 from "./state-context-factory";
16
18
  import * as i5 from "@ngxs/store/internals";
19
+ const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;
17
20
  export class LifecycleStateManager {
18
21
  constructor(_store, _internalErrorReporter, _internalStateOperations, _stateContextFactory, _bootstrapper) {
19
22
  this._store = _store;
@@ -27,6 +30,21 @@ export class LifecycleStateManager {
27
30
  this._destroy$.next();
28
31
  }
29
32
  ngxsBootstrap(action, results) {
33
+ if (NG_DEV_MODE) {
34
+ if (action instanceof InitState) {
35
+ this._initStateHasBeenDispatched = true;
36
+ }
37
+ else if (
38
+ // This is a dev mode-only check that ensures the correct order of
39
+ // state initialization. The `NgxsModule.forRoot` or `provideStore` should
40
+ // always come first, followed by `forFeature` and `provideStates`. If the
41
+ // `UpdateState` is dispatched before the `InitState` is dispatched, it indicates
42
+ // that modules or providers are in an invalid order.
43
+ action instanceof UpdateState &&
44
+ !this._initStateHasBeenDispatched) {
45
+ console.error(getInvalidInitializationOrderMessage());
46
+ }
47
+ }
30
48
  this._internalStateOperations
31
49
  .getRootStateOperations()
32
50
  .dispatch(action)
@@ -76,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
76
94
  type: Injectable,
77
95
  args: [{ providedIn: 'root' }]
78
96
  }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.InternalErrorReporter }, { type: i3.InternalStateOperations }, { type: i4.StateContextFactory }, { type: i5.NgxsBootstrapper }]; } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLXN0YXRlLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yZS9zcmMvaW50ZXJuYWwvbGlmZWN5Y2xlLXN0YXRlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0QsT0FBTyxFQUFpQixnQkFBZ0IsRUFBZ0IsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7QUFHM0UsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUNVLE1BQWEsRUFDYixzQkFBNkMsRUFDN0Msd0JBQWlELEVBQ2pELG9CQUF5QyxFQUN6QyxhQUErQjtRQUovQixXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQ2IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXlCO1FBQ2pELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsa0JB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QUFDLENBQUM7SUFDbkUsQ0FBQzs7cUlBMUVVLHFCQUFxQjt5SUFBckIscUJBQXFCLGNBRFIsTUFBTTsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4c0Jvb3RzdHJhcHBlciB9IGZyb20gJ0BuZ3hzL3N0b3JlL2ludGVybmFscyc7XG5pbXBvcnQgeyBFTVBUWSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBtZXJnZU1hcCxcbiAgcGFpcndpc2UsXG4gIHN0YXJ0V2l0aCxcbiAgdGFrZVVudGlsLFxuICB0YXBcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJy4uL3N0b3JlJztcbmltcG9ydCB7IGdldFZhbHVlIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgSW50ZXJuYWxFcnJvclJlcG9ydGVyIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyJztcbmltcG9ydCB7IFN0YXRlQ29udGV4dEZhY3RvcnkgfSBmcm9tICcuL3N0YXRlLWNvbnRleHQtZmFjdG9yeSc7XG5pbXBvcnQgeyBJbnRlcm5hbFN0YXRlT3BlcmF0aW9ucyB9IGZyb20gJy4vc3RhdGUtb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBNYXBwZWRTdG9yZSwgU3RhdGVzQW5kRGVmYXVsdHMgfSBmcm9tICcuL2ludGVybmFscyc7XG5pbXBvcnQgeyBOZ3hzTGlmZUN5Y2xlLCBOZ3hzU2ltcGxlQ2hhbmdlLCBTdGF0ZUNvbnRleHQgfSBmcm9tICcuLi9zeW1ib2xzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMaWZlY3ljbGVTdGF0ZU1hbmFnZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIF9pbnRlcm5hbEVycm9yUmVwb3J0ZXI6IEludGVybmFsRXJyb3JSZXBvcnRlcixcbiAgICBwcml2YXRlIF9pbnRlcm5hbFN0YXRlT3BlcmF0aW9uczogSW50ZXJuYWxTdGF0ZU9wZXJhdGlvbnMsXG4gICAgcHJpdmF0ZSBfc3RhdGVDb250ZXh0RmFjdG9yeTogU3RhdGVDb250ZXh0RmFjdG9yeSxcbiAgICBwcml2YXRlIF9ib290c3RyYXBwZXI6IE5neHNCb290c3RyYXBwZXJcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIG5neHNCb290c3RyYXA8VD4oYWN0aW9uOiBULCByZXN1bHRzOiBTdGF0ZXNBbmREZWZhdWx0cyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX2ludGVybmFsU3RhdGVPcGVyYXRpb25zXG4gICAgICAuZ2V0Um9vdFN0YXRlT3BlcmF0aW9ucygpXG4gICAgICAuZGlzcGF0Y2goYWN0aW9uKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhIXJlc3VsdHMpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5faW52b2tlSW5pdE9uU3RhdGVzKHJlc3VsdHMhLnN0YXRlcykpLFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLl9ib290c3RyYXBwZXIuYXBwQm9vdHN0cmFwcGVkJCksXG4gICAgICAgIGZpbHRlcihhcHBCb290c3RyYXBwZWQgPT4gISFhcHBCb290c3RyYXBwZWQpLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAvLyBUaGUgYFNhZmVTdWJzY3JpYmVyYCAod2hpY2ggaXMgdXNlZCBieSBtb3N0IFJ4SlMgb3BlcmF0b3JzKSByZS10aHJvd3NcbiAgICAgICAgICAvLyBlcnJvcnMgYXN5bmNocm9ub3VzbHkgKGBzZXRUaW1lb3V0KCgpID0+IHsgdGhyb3cgZXJyb3IgfSlgKS4gVGhpcyBtaWdodFxuICAgICAgICAgIC8vIGJyZWFrIGV4aXN0aW5nIHVzZXIncyBjb2RlIG9yIHVuaXQgdGVzdHMuIFdlIGNhdGNoIHRoZSBlcnJvciBtYW51YWxseSB0b1xuICAgICAgICAgIC8vIGJlIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIGJlaGF2aW9yLlxuICAgICAgICAgIHRoaXMuX2ludGVybmFsRXJyb3JSZXBvcnRlci5yZXBvcnRFcnJvclNhZmVseShlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9pbnZva2VCb290c3RyYXBPblN0YXRlcyhyZXN1bHRzIS5zdGF0ZXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZUluaXRPblN0YXRlcyhtYXBwZWRTdG9yZXM6IE1hcHBlZFN0b3JlW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG1hcHBlZFN0b3JlIG9mIG1hcHBlZFN0b3Jlcykge1xuICAgICAgY29uc3QgaW5zdGFuY2U6IE5neHNMaWZlQ3ljbGUgPSBtYXBwZWRTdG9yZS5pbnN0YW5jZTtcblxuICAgICAgaWYgKGluc3RhbmNlLm5neHNPbkNoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5fc3RvcmVcbiAgICAgICAgICAuc2VsZWN0KHN0YXRlID0+IGdldFZhbHVlKHN0YXRlLCBtYXBwZWRTdG9yZS5wYXRoKSlcbiAgICAgICAgICAucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSwgcGFpcndpc2UoKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChbcHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gbmV3IE5neHNTaW1wbGVDaGFuZ2UoXG4gICAgICAgICAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgICAgIW1hcHBlZFN0b3JlLmlzSW5pdGlhbGlzZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpbnN0YW5jZS5uZ3hzT25DaGFuZ2VzIShjaGFuZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5zdGFuY2Uubmd4c09uSW5pdCkge1xuICAgICAgICBpbnN0YW5jZS5uZ3hzT25Jbml0KHRoaXMuX2dldFN0YXRlQ29udGV4dChtYXBwZWRTdG9yZSkpO1xuICAgICAgfVxuXG4gICAgICBtYXBwZWRTdG9yZS5pc0luaXRpYWxpc2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VCb290c3RyYXBPblN0YXRlcyhtYXBwZWRTdG9yZXM6IE1hcHBlZFN0b3JlW10pIHtcbiAgICBmb3IgKGNvbnN0IG1hcHBlZFN0b3JlIG9mIG1hcHBlZFN0b3Jlcykge1xuICAgICAgY29uc3QgaW5zdGFuY2U6IE5neHNMaWZlQ3ljbGUgPSBtYXBwZWRTdG9yZS5pbnN0YW5jZTtcbiAgICAgIGlmIChpbnN0YW5jZS5uZ3hzQWZ0ZXJCb290c3RyYXApIHtcbiAgICAgICAgaW5zdGFuY2Uubmd4c0FmdGVyQm9vdHN0cmFwKHRoaXMuX2dldFN0YXRlQ29udGV4dChtYXBwZWRTdG9yZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFN0YXRlQ29udGV4dChtYXBwZWRTdG9yZTogTWFwcGVkU3RvcmUpOiBTdGF0ZUNvbnRleHQ8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlQ29udGV4dEZhY3RvcnkuY3JlYXRlU3RhdGVDb250ZXh0KG1hcHBlZFN0b3JlKTtcbiAgfVxufVxuIl19
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLXN0YXRlLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yZS9zcmMvaW50ZXJuYWwvbGlmZWN5Y2xlLXN0YXRlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU3RCxPQUFPLEVBQWlCLGdCQUFnQixFQUFnQixNQUFNLFlBQVksQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7OztBQUVsRixNQUFNLFdBQVcsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDO0FBR2xFLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFDVSxNQUFhLEVBQ2Isc0JBQTZDLEVBQzdDLHdCQUFpRCxFQUNqRCxvQkFBeUMsRUFDekMsYUFBK0I7UUFKL0IsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQUNqRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQVR4QixjQUFTLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDLENBQUM7SUFVckQsQ0FBQztJQUVKLFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhLENBQ1gsTUFBK0IsRUFDL0IsT0FBc0M7UUFFdEMsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLE1BQU0sWUFBWSxTQUFTLEVBQUU7Z0JBQy9CLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUM7YUFDekM7aUJBQU07WUFDTCxrRUFBa0U7WUFDbEUsMEVBQTBFO1lBQzFFLDBFQUEwRTtZQUMxRSxpRkFBaUY7WUFDakYscURBQXFEO1lBQ3JELE1BQU0sWUFBWSxXQUFXO2dCQUM3QixDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFDakM7Z0JBQ0EsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDLENBQUM7YUFDdkQ7U0FDRjtRQUVELElBQUksQ0FBQyx3QkFBd0I7YUFDMUIsc0JBQXNCLEVBQUU7YUFDeEIsUUFBUSxDQUFDLE1BQU0sQ0FBQzthQUNoQixJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDdkIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDcEQsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFDbkQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUM1QyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsd0VBQXdFO1lBQ3hFLDBFQUEwRTtZQUMxRSwyRUFBMkU7WUFDM0UsZ0RBQWdEO1lBQ2hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sbUJBQW1CLENBQUMsWUFBMkI7UUFDckQsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUU7WUFDdEMsTUFBTSxRQUFRLEdBQWtCLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFFckQsSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTTtxQkFDUixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUNqRSxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFO29CQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixDQUNqQyxhQUFhLEVBQ2IsWUFBWSxFQUNaLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FDM0IsQ0FBQztvQkFDRixRQUFRLENBQUMsYUFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsQ0FBQzthQUNOO1lBRUQsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO2dCQUN2QixRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQ3pEO1lBRUQsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsWUFBMkI7UUFDMUQsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUU7WUFDdEMsTUFBTSxRQUFRLEdBQWtCLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDckQsSUFBSSxRQUFRLENBQUMsa0JBQWtCLEVBQUU7Z0JBQy9CLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNqRTtTQUNGO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFdBQXdCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7O3FJQS9GVSxxQkFBcUI7eUlBQXJCLHFCQUFxQixjQURSLE1BQU07MkZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neHNCb290c3RyYXBwZXIgfSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xuaW1wb3J0IHsgRU1QVFksIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGZpbHRlcixcbiAgbWVyZ2VNYXAsXG4gIHBhaXJ3aXNlLFxuICBzdGFydFdpdGgsXG4gIHRha2VVbnRpbCxcbiAgdGFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBnZXRWYWx1ZSB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IEludGVybmFsRXJyb3JSZXBvcnRlciB9IGZyb20gJy4vZXJyb3ItaGFuZGxlcic7XG5pbXBvcnQgeyBJbml0U3RhdGUsIFVwZGF0ZVN0YXRlIH0gZnJvbSAnLi4vYWN0aW9ucy9hY3Rpb25zJztcbmltcG9ydCB7IFN0YXRlQ29udGV4dEZhY3RvcnkgfSBmcm9tICcuL3N0YXRlLWNvbnRleHQtZmFjdG9yeSc7XG5pbXBvcnQgeyBJbnRlcm5hbFN0YXRlT3BlcmF0aW9ucyB9IGZyb20gJy4vc3RhdGUtb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBNYXBwZWRTdG9yZSwgU3RhdGVzQW5kRGVmYXVsdHMgfSBmcm9tICcuL2ludGVybmFscyc7XG5pbXBvcnQgeyBOZ3hzTGlmZUN5Y2xlLCBOZ3hzU2ltcGxlQ2hhbmdlLCBTdGF0ZUNvbnRleHQgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IGdldEludmFsaWRJbml0aWFsaXphdGlvbk9yZGVyTWVzc2FnZSB9IGZyb20gJy4uL2NvbmZpZ3MvbWVzc2FnZXMuY29uZmlnJztcblxuY29uc3QgTkdfREVWX01PREUgPSB0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGU7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGlmZWN5Y2xlU3RhdGVNYW5hZ2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcblxuICBwcml2YXRlIF9pbml0U3RhdGVIYXNCZWVuRGlzcGF0Y2hlZD86IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgX2ludGVybmFsRXJyb3JSZXBvcnRlcjogSW50ZXJuYWxFcnJvclJlcG9ydGVyLFxuICAgIHByaXZhdGUgX2ludGVybmFsU3RhdGVPcGVyYXRpb25zOiBJbnRlcm5hbFN0YXRlT3BlcmF0aW9ucyxcbiAgICBwcml2YXRlIF9zdGF0ZUNvbnRleHRGYWN0b3J5OiBTdGF0ZUNvbnRleHRGYWN0b3J5LFxuICAgIHByaXZhdGUgX2Jvb3RzdHJhcHBlcjogTmd4c0Jvb3RzdHJhcHBlclxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgbmd4c0Jvb3RzdHJhcChcbiAgICBhY3Rpb246IEluaXRTdGF0ZSB8IFVwZGF0ZVN0YXRlLFxuICAgIHJlc3VsdHM6IFN0YXRlc0FuZERlZmF1bHRzIHwgdW5kZWZpbmVkXG4gICk6IHZvaWQge1xuICAgIGlmIChOR19ERVZfTU9ERSkge1xuICAgICAgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEluaXRTdGF0ZSkge1xuICAgICAgICB0aGlzLl9pbml0U3RhdGVIYXNCZWVuRGlzcGF0Y2hlZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAvLyBUaGlzIGlzIGEgZGV2IG1vZGUtb25seSBjaGVjayB0aGF0IGVuc3VyZXMgdGhlIGNvcnJlY3Qgb3JkZXIgb2ZcbiAgICAgICAgLy8gc3RhdGUgaW5pdGlhbGl6YXRpb24uIFRoZSBgTmd4c01vZHVsZS5mb3JSb290YCBvciBgcHJvdmlkZVN0b3JlYCBzaG91bGRcbiAgICAgICAgLy8gYWx3YXlzIGNvbWUgZmlyc3QsIGZvbGxvd2VkIGJ5IGBmb3JGZWF0dXJlYCBhbmQgYHByb3ZpZGVTdGF0ZXNgLiBJZiB0aGVcbiAgICAgICAgLy8gYFVwZGF0ZVN0YXRlYCBpcyBkaXNwYXRjaGVkIGJlZm9yZSB0aGUgYEluaXRTdGF0ZWAgaXMgZGlzcGF0Y2hlZCwgaXQgaW5kaWNhdGVzXG4gICAgICAgIC8vIHRoYXQgbW9kdWxlcyBvciBwcm92aWRlcnMgYXJlIGluIGFuIGludmFsaWQgb3JkZXIuXG4gICAgICAgIGFjdGlvbiBpbnN0YW5jZW9mIFVwZGF0ZVN0YXRlICYmXG4gICAgICAgICF0aGlzLl9pbml0U3RhdGVIYXNCZWVuRGlzcGF0Y2hlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZ2V0SW52YWxpZEluaXRpYWxpemF0aW9uT3JkZXJNZXNzYWdlKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2ludGVybmFsU3RhdGVPcGVyYXRpb25zXG4gICAgICAuZ2V0Um9vdFN0YXRlT3BlcmF0aW9ucygpXG4gICAgICAuZGlzcGF0Y2goYWN0aW9uKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiAhIXJlc3VsdHMpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5faW52b2tlSW5pdE9uU3RhdGVzKHJlc3VsdHMhLnN0YXRlcykpLFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLl9ib290c3RyYXBwZXIuYXBwQm9vdHN0cmFwcGVkJCksXG4gICAgICAgIGZpbHRlcihhcHBCb290c3RyYXBwZWQgPT4gISFhcHBCb290c3RyYXBwZWQpLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAvLyBUaGUgYFNhZmVTdWJzY3JpYmVyYCAod2hpY2ggaXMgdXNlZCBieSBtb3N0IFJ4SlMgb3BlcmF0b3JzKSByZS10aHJvd3NcbiAgICAgICAgICAvLyBlcnJvcnMgYXN5bmNocm9ub3VzbHkgKGBzZXRUaW1lb3V0KCgpID0+IHsgdGhyb3cgZXJyb3IgfSlgKS4gVGhpcyBtaWdodFxuICAgICAgICAgIC8vIGJyZWFrIGV4aXN0aW5nIHVzZXIncyBjb2RlIG9yIHVuaXQgdGVzdHMuIFdlIGNhdGNoIHRoZSBlcnJvciBtYW51YWxseSB0b1xuICAgICAgICAgIC8vIGJlIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIGJlaGF2aW9yLlxuICAgICAgICAgIHRoaXMuX2ludGVybmFsRXJyb3JSZXBvcnRlci5yZXBvcnRFcnJvclNhZmVseShlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9pbnZva2VCb290c3RyYXBPblN0YXRlcyhyZXN1bHRzIS5zdGF0ZXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludm9rZUluaXRPblN0YXRlcyhtYXBwZWRTdG9yZXM6IE1hcHBlZFN0b3JlW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG1hcHBlZFN0b3JlIG9mIG1hcHBlZFN0b3Jlcykge1xuICAgICAgY29uc3QgaW5zdGFuY2U6IE5neHNMaWZlQ3ljbGUgPSBtYXBwZWRTdG9yZS5pbnN0YW5jZTtcblxuICAgICAgaWYgKGluc3RhbmNlLm5neHNPbkNoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5fc3RvcmVcbiAgICAgICAgICAuc2VsZWN0KHN0YXRlID0+IGdldFZhbHVlKHN0YXRlLCBtYXBwZWRTdG9yZS5wYXRoKSlcbiAgICAgICAgICAucGlwZShzdGFydFdpdGgodW5kZWZpbmVkKSwgcGFpcndpc2UoKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChbcHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlID0gbmV3IE5neHNTaW1wbGVDaGFuZ2UoXG4gICAgICAgICAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSxcbiAgICAgICAgICAgICAgIW1hcHBlZFN0b3JlLmlzSW5pdGlhbGlzZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpbnN0YW5jZS5uZ3hzT25DaGFuZ2VzIShjaGFuZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5zdGFuY2Uubmd4c09uSW5pdCkge1xuICAgICAgICBpbnN0YW5jZS5uZ3hzT25Jbml0KHRoaXMuX2dldFN0YXRlQ29udGV4dChtYXBwZWRTdG9yZSkpO1xuICAgICAgfVxuXG4gICAgICBtYXBwZWRTdG9yZS5pc0luaXRpYWxpc2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbnZva2VCb290c3RyYXBPblN0YXRlcyhtYXBwZWRTdG9yZXM6IE1hcHBlZFN0b3JlW10pIHtcbiAgICBmb3IgKGNvbnN0IG1hcHBlZFN0b3JlIG9mIG1hcHBlZFN0b3Jlcykge1xuICAgICAgY29uc3QgaW5zdGFuY2U6IE5neHNMaWZlQ3ljbGUgPSBtYXBwZWRTdG9yZS5pbnN0YW5jZTtcbiAgICAgIGlmIChpbnN0YW5jZS5uZ3hzQWZ0ZXJCb290c3RyYXApIHtcbiAgICAgICAgaW5zdGFuY2Uubmd4c0FmdGVyQm9vdHN0cmFwKHRoaXMuX2dldFN0YXRlQ29udGV4dChtYXBwZWRTdG9yZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFN0YXRlQ29udGV4dChtYXBwZWRTdG9yZTogTWFwcGVkU3RvcmUpOiBTdGF0ZUNvbnRleHQ8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlQ29udGV4dEZhY3RvcnkuY3JlYXRlU3RhdGVDb250ZXh0KG1hcHBlZFN0b3JlKTtcbiAgfVxufVxuIl19
@@ -702,6 +702,11 @@ function getZoneWarningMessage() {
702
702
  function getUndecoratedStateInIvyWarningMessage(name) {
703
703
  return `'${name}' class should be decorated with @Injectable() right after the @State() decorator`;
704
704
  }
705
+ function getInvalidInitializationOrderMessage() {
706
+ return ('You have an invalid state initialization order. This typically occurs when `NgxsModule.forFeature`\n' +
707
+ 'or `provideStates` is called before `NgxsModule.forRoot` or `provideStore`.\n' +
708
+ 'One example is when `NgxsRouterPluginModule.forRoot` is called before `NgxsModule.forRoot`.');
709
+ }
705
710
  function throwSelectFactoryNotConnectedError() {
706
711
  throw new Error('You have forgotten to import the NGXS module!');
707
712
  }
@@ -767,18 +772,18 @@ function verifyZoneIsNotNooped(ngZone) {
767
772
  console.warn(getZoneWarningMessage());
768
773
  }
769
774
 
770
- const NG_DEV_MODE$3 = typeof ngDevMode === 'undefined' || ngDevMode;
775
+ const NG_DEV_MODE$4 = typeof ngDevMode === 'undefined' || ngDevMode;
771
776
  /**
772
777
  * Consumers have the option to utilize the execution strategy provided by
773
778
  * `NgxsModule.forRoot({executionStrategy})` or `provideStore([], {executionStrategy})`.
774
779
  */
775
- const CUSTOM_NGXS_EXECUTION_STRATEGY = new InjectionToken(NG_DEV_MODE$3 ? 'CUSTOM_NGXS_EXECUTION_STRATEGY' : '');
780
+ const CUSTOM_NGXS_EXECUTION_STRATEGY = new InjectionToken(NG_DEV_MODE$4 ? 'CUSTOM_NGXS_EXECUTION_STRATEGY' : '');
776
781
  /**
777
782
  * The injection token is used internally to resolve an instance of the execution
778
783
  * strategy. It checks whether consumers have provided their own `executionStrategy`
779
784
  * and also verifies if we are operating in a zone-aware environment.
780
785
  */
781
- const NGXS_EXECUTION_STRATEGY = new InjectionToken(NG_DEV_MODE$3 ? 'NGXS_EXECUTION_STRATEGY' : '', {
786
+ const NGXS_EXECUTION_STRATEGY = new InjectionToken(NG_DEV_MODE$4 ? 'NGXS_EXECUTION_STRATEGY' : '', {
782
787
  providedIn: 'root',
783
788
  factory: () => {
784
789
  const injector = inject(INJECTOR);
@@ -858,21 +863,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
858
863
  args: [{ providedIn: 'root' }]
859
864
  }], ctorParameters: function () { return [{ type: InternalActions }, { type: InternalNgxsExecutionStrategy }]; } });
860
865
 
861
- const NG_DEV_MODE$2 = typeof ngDevMode === 'undefined' || ngDevMode;
866
+ const NG_DEV_MODE$3 = typeof ngDevMode === 'undefined' || ngDevMode;
862
867
  // The injection token is used to resolve a list of states provided at
863
868
  // the root level through either `NgxsModule.forRoot` or `provideStore`.
864
- const ROOT_STATE_TOKEN = new InjectionToken(NG_DEV_MODE$2 ? 'ROOT_STATE_TOKEN' : '');
869
+ const ROOT_STATE_TOKEN = new InjectionToken(NG_DEV_MODE$3 ? 'ROOT_STATE_TOKEN' : '');
865
870
  // The injection token is used to resolve a list of states provided at
866
871
  // the feature level through either `NgxsModule.forFeature` or `provideStates`.
867
872
  // The Array<Array> is used to overload the resolved value of the token because
868
873
  // it is a multi-provider token.
869
- const FEATURE_STATE_TOKEN = new InjectionToken(NG_DEV_MODE$2 ? 'FEATURE_STATE_TOKEN' : '');
874
+ const FEATURE_STATE_TOKEN = new InjectionToken(NG_DEV_MODE$3 ? 'FEATURE_STATE_TOKEN' : '');
870
875
  // The injection token is used to resolve to custom NGXS plugins provided
871
876
  // at the root level through either `{provide}` scheme or `withNgxsPlugin`.
872
- const NGXS_PLUGINS = new InjectionToken(NG_DEV_MODE$2 ? 'NGXS_PLUGINS' : '');
877
+ const NGXS_PLUGINS = new InjectionToken(NG_DEV_MODE$3 ? 'NGXS_PLUGINS' : '');
873
878
  // The injection token is used to resolve to options provided at the root
874
879
  // level through either `NgxsModule.forRoot` or `provideStore`.
875
- const NGXS_OPTIONS = new InjectionToken(NG_DEV_MODE$2 ? 'NGXS_OPTIONS' : '');
880
+ const NGXS_OPTIONS = new InjectionToken(NG_DEV_MODE$3 ? 'NGXS_OPTIONS' : '');
876
881
  /**
877
882
  * The NGXS config settings.
878
883
  */
@@ -1388,7 +1393,7 @@ function getState(currentAppState, path) {
1388
1393
  return getValue(currentAppState, path);
1389
1394
  }
1390
1395
 
1391
- const NG_DEV_MODE$1 = typeof ngDevMode === 'undefined' || ngDevMode;
1396
+ const NG_DEV_MODE$2 = typeof ngDevMode === 'undefined' || ngDevMode;
1392
1397
  /**
1393
1398
  * The `StateFactory` class adds root and feature states to the graph.
1394
1399
  * This extracts state names from state classes, checks if they already
@@ -1478,7 +1483,7 @@ class StateFactory {
1478
1483
  * Add a new state to the global defs.
1479
1484
  */
1480
1485
  add(stateClasses) {
1481
- if (NG_DEV_MODE$1) {
1486
+ if (NG_DEV_MODE$2) {
1482
1487
  ensureStatesAreDecorated(stateClasses);
1483
1488
  }
1484
1489
  const { newStates } = this.addToStatesMap(stateClasses);
@@ -1498,7 +1503,7 @@ class StateFactory {
1498
1503
  // `State` decorator. This check is moved here because the `ɵprov` property
1499
1504
  // will not exist on the class in JIT mode (because it's set asynchronously
1500
1505
  // during JIT compilation through `Object.defineProperty`).
1501
- if (NG_DEV_MODE$1) {
1506
+ if (NG_DEV_MODE$2) {
1502
1507
  ensureStateClassIsInjectable(stateClass);
1503
1508
  }
1504
1509
  const stateMap = {
@@ -1600,7 +1605,7 @@ class StateFactory {
1600
1605
  }
1601
1606
  // The `NgxsUnhandledActionsLogger` is a tree-shakable class which functions
1602
1607
  // only during development.
1603
- if (NG_DEV_MODE$1 && !actionHasBeenHandled) {
1608
+ if (NG_DEV_MODE$2 && !actionHasBeenHandled) {
1604
1609
  const unhandledActionsLogger = this._injector.get(NgxsUnhandledActionsLogger, null);
1605
1610
  // The `NgxsUnhandledActionsLogger` will not be resolved by the injector if the
1606
1611
  // `NgxsDevelopmentModule` is not provided. It's enough to check whether the `injector.get`
@@ -1619,7 +1624,7 @@ class StateFactory {
1619
1624
  const statesMap = this.statesByName;
1620
1625
  for (const stateClass of stateClasses) {
1621
1626
  const stateName = getStoreMetadata$1(stateClass).name;
1622
- if (NG_DEV_MODE$1) {
1627
+ if (NG_DEV_MODE$2) {
1623
1628
  ensureStateNameIsUnique(stateName, stateClass, statesMap);
1624
1629
  }
1625
1630
  const unmountedState = !statesMap[stateName];
@@ -1776,6 +1781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
1776
1781
  args: [{ providedIn: 'root' }]
1777
1782
  }], ctorParameters: function () { return [{ type: Store }, { type: NgxsConfig }]; } });
1778
1783
 
1784
+ const NG_DEV_MODE$1 = typeof ngDevMode === 'undefined' || ngDevMode;
1779
1785
  class LifecycleStateManager {
1780
1786
  constructor(_store, _internalErrorReporter, _internalStateOperations, _stateContextFactory, _bootstrapper) {
1781
1787
  this._store = _store;
@@ -1789,6 +1795,21 @@ class LifecycleStateManager {
1789
1795
  this._destroy$.next();
1790
1796
  }
1791
1797
  ngxsBootstrap(action, results) {
1798
+ if (NG_DEV_MODE$1) {
1799
+ if (action instanceof InitState) {
1800
+ this._initStateHasBeenDispatched = true;
1801
+ }
1802
+ else if (
1803
+ // This is a dev mode-only check that ensures the correct order of
1804
+ // state initialization. The `NgxsModule.forRoot` or `provideStore` should
1805
+ // always come first, followed by `forFeature` and `provideStates`. If the
1806
+ // `UpdateState` is dispatched before the `InitState` is dispatched, it indicates
1807
+ // that modules or providers are in an invalid order.
1808
+ action instanceof UpdateState &&
1809
+ !this._initStateHasBeenDispatched) {
1810
+ console.error(getInvalidInitializationOrderMessage());
1811
+ }
1812
+ }
1792
1813
  this._internalStateOperations
1793
1814
  .getRootStateOperations()
1794
1815
  .dispatch(action)