@ngxs/store 3.8.0 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/bundles/ngxs-store-internals.umd.js +11 -7
  2. package/bundles/ngxs-store-internals.umd.js.map +1 -1
  3. package/bundles/ngxs-store.umd.js +222 -214
  4. package/bundles/ngxs-store.umd.js.map +1 -1
  5. package/esm2015/internals/initial-state.js +9 -6
  6. package/esm2015/internals/ngxs-bootstrapper.js +4 -3
  7. package/esm2015/src/actions-stream.js +7 -5
  8. package/esm2015/src/decorators/select/select-factory.js +4 -3
  9. package/esm2015/src/execution/internal-ngxs-execution-strategy.js +4 -3
  10. package/esm2015/src/internal/custom-rxjs-subjects.js +16 -5
  11. package/esm2015/src/internal/dispatcher.js +7 -5
  12. package/esm2015/src/internal/lifecycle-state-manager.js +4 -3
  13. package/esm2015/src/internal/state-context-factory.js +4 -3
  14. package/esm2015/src/internal/state-factory.js +24 -23
  15. package/esm2015/src/internal/state-operations.js +4 -4
  16. package/esm2015/src/internal/state-stream.js +4 -3
  17. package/esm2015/src/ivy/ivy-enabled-in-dev-mode.js +13 -6
  18. package/esm2015/src/module.js +6 -42
  19. package/esm2015/src/store.js +4 -3
  20. package/esm2015/src/symbols.js +10 -3
  21. package/fesm2015/ngxs-store-internals.js +11 -7
  22. package/fesm2015/ngxs-store-internals.js.map +1 -1
  23. package/fesm2015/ngxs-store.js +208 -200
  24. package/fesm2015/ngxs-store.js.map +1 -1
  25. package/internals/initial-state.d.ts +2 -2
  26. package/package.json +2 -2
  27. package/src/internal/custom-rxjs-subjects.d.ts +7 -2
  28. package/src/internal/state-factory.d.ts +10 -11
  29. package/src/internal/state-operations.d.ts +0 -1
  30. package/src/module.d.ts +0 -3
  31. package/src/symbols.d.ts +1 -0
@@ -62,9 +62,10 @@
62
62
  return NgxsBootstrapper;
63
63
  }());
64
64
  /** @nocollapse */ NgxsBootstrapper.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: NgxsBootstrapper, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable });
65
- /** @nocollapse */ NgxsBootstrapper.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: NgxsBootstrapper });
65
+ /** @nocollapse */ NgxsBootstrapper.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: NgxsBootstrapper, providedIn: 'root' });
66
66
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: NgxsBootstrapper, decorators: [{
67
- type: i0.Injectable
67
+ type: i0.Injectable,
68
+ args: [{ providedIn: 'root' }]
68
69
  }] });
69
70
 
70
71
  function defaultEqualityCheck(a, b) {
@@ -113,21 +114,24 @@
113
114
  return memoized;
114
115
  }
115
116
 
116
- var INITIAL_STATE_TOKEN = new i0.InjectionToken('INITIAL_STATE_TOKEN');
117
117
  var InitialState = /** @class */ (function () {
118
118
  function InitialState() {
119
119
  }
120
120
  InitialState.set = function (state) {
121
- this.value = state;
121
+ this._value = state;
122
122
  };
123
123
  InitialState.pop = function () {
124
- var state = this.value;
125
- this.value = {};
124
+ var state = this._value;
125
+ this._value = {};
126
126
  return state;
127
127
  };
128
128
  return InitialState;
129
129
  }());
130
- InitialState.value = {};
130
+ InitialState._value = {};
131
+ var INITIAL_STATE_TOKEN = new i0.InjectionToken('INITIAL_STATE_TOKEN', {
132
+ providedIn: 'root',
133
+ factory: function () { return InitialState.pop(); }
134
+ });
131
135
 
132
136
  // These tokens are internal and can change at any point.
133
137
  var ɵNGXS_STATE_FACTORY = new i0.InjectionToken('ɵNGXS_STATE_FACTORY');
@@ -1 +1 @@
1
- {"version":3,"file":"ngxs-store-internals.umd.js","sources":["../../../packages/store/internals/src/angular.ts","../../../packages/store/internals/src/ngxs-bootstrapper.ts","../../../packages/store/internals/src/memoize.ts","../../../packages/store/internals/src/initial-state.ts","../../../packages/store/internals/src/internal-tokens.ts","../../../packages/store/internals/src/ngxs-store-internals.ts"],"sourcesContent":["declare const __karma__: unknown;\ndeclare const jasmine: unknown;\ndeclare const jest: unknown;\ndeclare const Mocha: unknown;\n\nexport function isAngularInTestMode(): boolean {\n // This is safe to check for these properties in the following way since `typeof` does not\n // throw an exception if the value does not exist in the scope.\n // We should not try to read these values from the global scope (e.g. `ɵglobal` from the `@angular/core`).\n // This is related to how these frameworks compile and execute modules. E.g. Jest wraps the module into\n // its internal code where `jest` variable exists in the scope. It cannot be read from the global scope, e.g.\n // this will return undefined `global.jest`, but `jest` will not equal undefined.\n return (\n typeof __karma__ !== 'undefined' ||\n typeof jasmine !== 'undefined' ||\n typeof jest !== 'undefined' ||\n typeof Mocha !== 'undefined'\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\n@Injectable()\nexport class NgxsBootstrapper {\n /**\n * Use `ReplaySubject`, thus we can get cached value even if the stream is completed\n */\n private bootstrap$ = new ReplaySubject<boolean>(1);\n\n get appBootstrapped$(): Observable<boolean> {\n return this.bootstrap$.asObservable();\n }\n\n /**\n * This event will be emitted after attaching `ComponentRef` of the root component\n * to the tree of views, that's a signal that application has been fully rendered\n */\n bootstrap(): void {\n this.bootstrap$.next(true);\n this.bootstrap$.complete();\n }\n}\n","function defaultEqualityCheck(a: any, b: any) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(\n equalityCheck: (a: any, b: any) => boolean,\n prev: IArguments | null,\n next: IArguments | null\n) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n const length = prev.length;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Memoize a function on its last inputs only.\n * Originally from: https://github.com/reduxjs/reselect/blob/master/src/index.js\n *\n * @ignore\n */\nexport function memoize<T extends (...args: any[]) => any>(\n func: T,\n equalityCheck = defaultEqualityCheck\n): T {\n let lastArgs: IArguments | null = null;\n let lastResult: any = null;\n // we reference arguments instead of spreading them for performance reasons\n function memoized() {\n // eslint-disable-next-line prefer-rest-params\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n // eslint-disable-next-line prefer-rest-params, prefer-spread\n lastResult = (<Function>func).apply(null, arguments);\n }\n // eslint-disable-next-line prefer-rest-params\n lastArgs = arguments;\n return lastResult;\n }\n (<any>memoized).reset = function() {\n // The hidden (for now) ability to reset the memoization\n lastArgs = null;\n lastResult = null;\n };\n return memoized as T;\n}\n","import { InjectionToken } from '@angular/core';\nimport { PlainObject } from './symbols';\n\nexport const INITIAL_STATE_TOKEN = new InjectionToken<any>('INITIAL_STATE_TOKEN');\n\nexport class InitialState {\n private static value: PlainObject = {};\n\n public static set(state: PlainObject) {\n this.value = state;\n }\n\n public static pop(): PlainObject {\n const state: PlainObject = this.value;\n this.value = {};\n return state;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n// These tokens are internal and can change at any point.\n\nexport const ɵNGXS_STATE_FACTORY = new InjectionToken<any>('ɵNGXS_STATE_FACTORY');\n\nexport const ɵNGXS_STATE_CONTEXT_FACTORY = new InjectionToken<any>(\n 'ɵNGXS_STATE_CONTEXT_FACTORY'\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ReplaySubject","i0","Injectable","InjectionToken"],"mappings":"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"}
1
+ {"version":3,"file":"ngxs-store-internals.umd.js","sources":["../../../packages/store/internals/src/angular.ts","../../../packages/store/internals/src/ngxs-bootstrapper.ts","../../../packages/store/internals/src/memoize.ts","../../../packages/store/internals/src/initial-state.ts","../../../packages/store/internals/src/internal-tokens.ts","../../../packages/store/internals/src/ngxs-store-internals.ts"],"sourcesContent":["declare const __karma__: unknown;\ndeclare const jasmine: unknown;\ndeclare const jest: unknown;\ndeclare const Mocha: unknown;\n\nexport function isAngularInTestMode(): boolean {\n // This is safe to check for these properties in the following way since `typeof` does not\n // throw an exception if the value does not exist in the scope.\n // We should not try to read these values from the global scope (e.g. `ɵglobal` from the `@angular/core`).\n // This is related to how these frameworks compile and execute modules. E.g. Jest wraps the module into\n // its internal code where `jest` variable exists in the scope. It cannot be read from the global scope, e.g.\n // this will return undefined `global.jest`, but `jest` will not equal undefined.\n return (\n typeof __karma__ !== 'undefined' ||\n typeof jasmine !== 'undefined' ||\n typeof jest !== 'undefined' ||\n typeof Mocha !== 'undefined'\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsBootstrapper {\n /**\n * Use `ReplaySubject`, thus we can get cached value even if the stream is completed\n */\n private bootstrap$ = new ReplaySubject<boolean>(1);\n\n get appBootstrapped$(): Observable<boolean> {\n return this.bootstrap$.asObservable();\n }\n\n /**\n * This event will be emitted after attaching `ComponentRef` of the root component\n * to the tree of views, that's a signal that application has been fully rendered\n */\n bootstrap(): void {\n this.bootstrap$.next(true);\n this.bootstrap$.complete();\n }\n}\n","function defaultEqualityCheck(a: any, b: any) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(\n equalityCheck: (a: any, b: any) => boolean,\n prev: IArguments | null,\n next: IArguments | null\n) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n const length = prev.length;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Memoize a function on its last inputs only.\n * Originally from: https://github.com/reduxjs/reselect/blob/master/src/index.js\n *\n * @ignore\n */\nexport function memoize<T extends (...args: any[]) => any>(\n func: T,\n equalityCheck = defaultEqualityCheck\n): T {\n let lastArgs: IArguments | null = null;\n let lastResult: any = null;\n // we reference arguments instead of spreading them for performance reasons\n function memoized() {\n // eslint-disable-next-line prefer-rest-params\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n // eslint-disable-next-line prefer-rest-params, prefer-spread\n lastResult = (<Function>func).apply(null, arguments);\n }\n // eslint-disable-next-line prefer-rest-params\n lastArgs = arguments;\n return lastResult;\n }\n (<any>memoized).reset = function() {\n // The hidden (for now) ability to reset the memoization\n lastArgs = null;\n lastResult = null;\n };\n return memoized as T;\n}\n","import { InjectionToken } from '@angular/core';\nimport { PlainObject } from './symbols';\n\nexport class InitialState {\n private static _value: PlainObject = {};\n\n static set(state: PlainObject) {\n this._value = state;\n }\n\n static pop(): PlainObject {\n const state = this._value;\n this._value = {};\n return state;\n }\n}\n\nexport const INITIAL_STATE_TOKEN = new InjectionToken<any>('INITIAL_STATE_TOKEN', {\n providedIn: 'root',\n factory: () => InitialState.pop()\n});\n","import { InjectionToken } from '@angular/core';\n\n// These tokens are internal and can change at any point.\n\nexport const ɵNGXS_STATE_FACTORY = new InjectionToken<any>('ɵNGXS_STATE_FACTORY');\n\nexport const ɵNGXS_STATE_CONTEXT_FACTORY = new InjectionToken<any>(\n 'ɵNGXS_STATE_CONTEXT_FACTORY'\n);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ReplaySubject","i0","Injectable","InjectionToken"],"mappings":"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"}