@ngxs/store 3.7.3-dev.master-28d6804 → 3.7.3-dev.master-9ab365b
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/bundles/ngxs-store-internals-testing.umd.js +27 -7
- package/bundles/ngxs-store-internals-testing.umd.js.map +1 -1
- package/bundles/ngxs-store-internals-testing.umd.min.js +1 -1
- package/bundles/ngxs-store-internals-testing.umd.min.js.map +1 -1
- package/bundles/ngxs-store.umd.js +24 -2
- package/bundles/ngxs-store.umd.js.map +1 -1
- package/bundles/ngxs-store.umd.min.js +1 -1
- package/bundles/ngxs-store.umd.min.js.map +1 -1
- package/esm2015/internals/testing/fresh-platform.js +29 -9
- package/esm2015/internals/testing/symbol.js +1 -1
- package/esm2015/src/operators/of-action.js +7 -1
- package/esm2015/src/store.js +20 -4
- package/esm5/internals/testing/fresh-platform.js +29 -9
- package/esm5/internals/testing/symbol.js +1 -1
- package/esm5/src/operators/of-action.js +7 -1
- package/esm5/src/store.js +20 -4
- package/fesm2015/ngxs-store-internals-testing.js +28 -8
- package/fesm2015/ngxs-store-internals-testing.js.map +1 -1
- package/fesm2015/ngxs-store.js +25 -3
- package/fesm2015/ngxs-store.js.map +1 -1
- package/fesm5/ngxs-store-internals-testing.js +28 -8
- package/fesm5/ngxs-store-internals-testing.js.map +1 -1
- package/fesm5/ngxs-store.js +25 -3
- package/fesm5/ngxs-store.js.map +1 -1
- package/internals/testing/symbol.d.ts +1 -1
- package/ngxs-store.metadata.json +1 -1
- package/package.json +2 -2
- package/src/operators/of-action.d.ts +20 -7
- package/src/store.d.ts +6 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, NgModule, ApplicationRef, destroyPlatform, createPlatform } from '@angular/core';
|
|
1
|
+
import { Component, NgModule, ApplicationRef, destroyPlatform, VERSION, createPlatform } from '@angular/core';
|
|
2
2
|
import { TestBed } from '@angular/core/testing';
|
|
3
3
|
import { DOCUMENT } from '@angular/common';
|
|
4
4
|
import { BrowserModule, ɵBrowserDomAdapter, ɵgetDOM } from '@angular/platform-browser';
|
|
@@ -158,7 +158,12 @@ function destroyPlatformBeforeBootstrappingTheNewOne() {
|
|
|
158
158
|
function resetPlatformAfterBootstrapping() {
|
|
159
159
|
removeRootElement();
|
|
160
160
|
destroyPlatform();
|
|
161
|
-
|
|
161
|
+
/** @type {?} */
|
|
162
|
+
const version = +VERSION.major;
|
|
163
|
+
// https://github.com/angular/angular/commit/e250db4f261741b04ee4cbad4dec41a8908a12aa
|
|
164
|
+
if (version < 14) {
|
|
165
|
+
createPlatform(TestBed);
|
|
166
|
+
}
|
|
162
167
|
}
|
|
163
168
|
/**
|
|
164
169
|
* @param {?} fn
|
|
@@ -166,18 +171,22 @@ function resetPlatformAfterBootstrapping() {
|
|
|
166
171
|
*/
|
|
167
172
|
function freshPlatform(fn) {
|
|
168
173
|
/** @type {?} */
|
|
169
|
-
let
|
|
174
|
+
let resolve = null;
|
|
175
|
+
/** @type {?} */
|
|
176
|
+
let reject = null;
|
|
170
177
|
/** @type {?} */
|
|
171
178
|
let whenDoneIsCalledPromise = null;
|
|
172
179
|
/** @type {?} */
|
|
173
180
|
const hasDoneArgument = fn.length === 1;
|
|
174
181
|
if (hasDoneArgument) {
|
|
175
182
|
whenDoneIsCalledPromise = new Promise((/**
|
|
176
|
-
* @param {?}
|
|
183
|
+
* @param {?} _resolve
|
|
184
|
+
* @param {?} _reject
|
|
177
185
|
* @return {?}
|
|
178
186
|
*/
|
|
179
|
-
|
|
180
|
-
|
|
187
|
+
(_resolve, _reject) => {
|
|
188
|
+
resolve = _resolve;
|
|
189
|
+
reject = _reject;
|
|
181
190
|
}));
|
|
182
191
|
}
|
|
183
192
|
return (/**
|
|
@@ -187,8 +196,19 @@ function freshPlatform(fn) {
|
|
|
187
196
|
return __awaiter(this, void 0, void 0, function* () {
|
|
188
197
|
try {
|
|
189
198
|
destroyPlatformBeforeBootstrappingTheNewOne();
|
|
190
|
-
if (
|
|
191
|
-
yield fn(
|
|
199
|
+
if (hasDoneArgument) {
|
|
200
|
+
yield fn((/**
|
|
201
|
+
* @param {?=} error
|
|
202
|
+
* @return {?}
|
|
203
|
+
*/
|
|
204
|
+
(error) => {
|
|
205
|
+
if (error) {
|
|
206
|
+
(/** @type {?} */ (reject))(error);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
(/** @type {?} */ (resolve))();
|
|
210
|
+
}
|
|
211
|
+
}));
|
|
192
212
|
yield (/** @type {?} */ (whenDoneIsCalledPromise));
|
|
193
213
|
}
|
|
194
214
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngxs-store-internals-testing.js","sources":["ng://@ngxs/store/internals/testing/helpers/ngxs-test.component.ts","ng://@ngxs/store/internals/testing/helpers/ngxs-test.module.ts","ng://@ngxs/store/internals/testing/ngxs.setup.ts","ng://@ngxs/store/internals/testing/fresh-platform.ts","ng://@ngxs/store/internals/testing/skip-console-logging.ts"],"sourcesContent":["import { AfterViewInit, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n template: ''\n})\nexport class NgxsTestComponent implements OnInit, AfterViewInit {\n public ngOnInit(): void {}\n public ngAfterViewInit(): void {}\n}\n","import { ApplicationRef, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { NgxsTestComponent } from './ngxs-test.component';\n\n@NgModule({\n imports: [BrowserModule],\n declarations: [NgxsTestComponent],\n entryComponents: [NgxsTestComponent]\n})\nexport class NgxsTestModule {\n public static ngDoBootstrap(app: ApplicationRef): void {\n app.bootstrap(NgxsTestComponent);\n }\n}\n","import { ApplicationRef } from '@angular/core';\nimport { TestBed, TestBedStatic } from '@angular/core/testing';\nimport { DOCUMENT } from '@angular/common';\nimport { ɵBrowserDomAdapter as BrowserDomAdapter } from '@angular/platform-browser';\nimport {\n BrowserDynamicTestingModule,\n platformBrowserDynamicTesting\n} from '@angular/platform-browser-dynamic/testing';\nimport { NgxsModule, Store } from '@ngxs/store';\n\nimport { NgxsTestModule } from './helpers/ngxs-test.module';\nimport { NgxsOptionsTesting, NgxsTesting } from './symbol';\n\nexport class NgxsTestBed {\n public static configureTestingStates(options: NgxsOptionsTesting): NgxsTesting {\n this.resetTestBed();\n\n if (options.before) {\n options.before();\n }\n\n TestBed.configureTestingModule({\n imports: [\n NgxsTestModule,\n NgxsModule.forRoot(options.states || [], options.ngxsOptions || {}),\n ...(options.imports || [])\n ]\n }).compileComponents();\n\n NgxsTestBed.ngxsBootstrap();\n\n return {\n get store(): Store {\n return TestBed.inject(Store);\n },\n get getTestBed(): TestBedStatic {\n return TestBed;\n }\n };\n }\n\n private static ngxsBootstrap(): void {\n NgxsTestBed.createRootNode();\n NgxsTestModule.ngDoBootstrap(TestBed.inject(ApplicationRef));\n }\n\n private static resetTestBed(): void {\n TestBed.resetTestEnvironment();\n TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());\n }\n\n private static createRootNode(selector = 'app-root'): void {\n const document = TestBed.inject(DOCUMENT);\n const adapter = new BrowserDomAdapter();\n const root = adapter.createElement(selector);\n document.body.appendChild(root);\n }\n}\n","import { TestBed } from '@angular/core/testing';\nimport { DOCUMENT } from '@angular/common';\nimport { ɵgetDOM as getDOM } from '@angular/platform-browser';\nimport { destroyPlatform, createPlatform } from '@angular/core';\n\nfunction createRootElement() {\n const document = TestBed.inject(DOCUMENT);\n const root = getDOM().createElement('app-root', document);\n document.body.appendChild(root);\n}\n\nfunction removeRootElement() {\n const root: Element = document.getElementsByTagName('app-root').item(0)!;\n try {\n document.body.removeChild(root);\n } catch {}\n}\n\nfunction destroyPlatformBeforeBootstrappingTheNewOne() {\n destroyPlatform();\n createRootElement();\n}\n\n// As we create our custom platform via `bootstrapModule`\n// we have to destroy it after assetions and revert\n// the previous one\nfunction resetPlatformAfterBootstrapping() {\n removeRootElement();\n destroyPlatform();\n createPlatform(TestBed);\n}\n\nexport function freshPlatform(fn: (done?: VoidFunction) => Promise<void>) {\n let
|
|
1
|
+
{"version":3,"file":"ngxs-store-internals-testing.js","sources":["ng://@ngxs/store/internals/testing/helpers/ngxs-test.component.ts","ng://@ngxs/store/internals/testing/helpers/ngxs-test.module.ts","ng://@ngxs/store/internals/testing/ngxs.setup.ts","ng://@ngxs/store/internals/testing/fresh-platform.ts","ng://@ngxs/store/internals/testing/skip-console-logging.ts"],"sourcesContent":["import { AfterViewInit, Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n template: ''\n})\nexport class NgxsTestComponent implements OnInit, AfterViewInit {\n public ngOnInit(): void {}\n public ngAfterViewInit(): void {}\n}\n","import { ApplicationRef, NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { NgxsTestComponent } from './ngxs-test.component';\n\n@NgModule({\n imports: [BrowserModule],\n declarations: [NgxsTestComponent],\n entryComponents: [NgxsTestComponent]\n})\nexport class NgxsTestModule {\n public static ngDoBootstrap(app: ApplicationRef): void {\n app.bootstrap(NgxsTestComponent);\n }\n}\n","import { ApplicationRef } from '@angular/core';\nimport { TestBed, TestBedStatic } from '@angular/core/testing';\nimport { DOCUMENT } from '@angular/common';\nimport { ɵBrowserDomAdapter as BrowserDomAdapter } from '@angular/platform-browser';\nimport {\n BrowserDynamicTestingModule,\n platformBrowserDynamicTesting\n} from '@angular/platform-browser-dynamic/testing';\nimport { NgxsModule, Store } from '@ngxs/store';\n\nimport { NgxsTestModule } from './helpers/ngxs-test.module';\nimport { NgxsOptionsTesting, NgxsTesting } from './symbol';\n\nexport class NgxsTestBed {\n public static configureTestingStates(options: NgxsOptionsTesting): NgxsTesting {\n this.resetTestBed();\n\n if (options.before) {\n options.before();\n }\n\n TestBed.configureTestingModule({\n imports: [\n NgxsTestModule,\n NgxsModule.forRoot(options.states || [], options.ngxsOptions || {}),\n ...(options.imports || [])\n ]\n }).compileComponents();\n\n NgxsTestBed.ngxsBootstrap();\n\n return {\n get store(): Store {\n return TestBed.inject(Store);\n },\n get getTestBed(): TestBedStatic {\n return TestBed;\n }\n };\n }\n\n private static ngxsBootstrap(): void {\n NgxsTestBed.createRootNode();\n NgxsTestModule.ngDoBootstrap(TestBed.inject(ApplicationRef));\n }\n\n private static resetTestBed(): void {\n TestBed.resetTestEnvironment();\n TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());\n }\n\n private static createRootNode(selector = 'app-root'): void {\n const document = TestBed.inject(DOCUMENT);\n const adapter = new BrowserDomAdapter();\n const root = adapter.createElement(selector);\n document.body.appendChild(root);\n }\n}\n","import { TestBed } from '@angular/core/testing';\nimport { DOCUMENT } from '@angular/common';\nimport { ɵgetDOM as getDOM } from '@angular/platform-browser';\nimport { VERSION, destroyPlatform, createPlatform } from '@angular/core';\n\nfunction createRootElement() {\n const document = TestBed.inject(DOCUMENT);\n const root = getDOM().createElement('app-root', document);\n document.body.appendChild(root);\n}\n\nfunction removeRootElement() {\n const root: Element = document.getElementsByTagName('app-root').item(0)!;\n try {\n document.body.removeChild(root);\n } catch {}\n}\n\nfunction destroyPlatformBeforeBootstrappingTheNewOne() {\n destroyPlatform();\n createRootElement();\n}\n\n// As we create our custom platform via `bootstrapModule`\n// we have to destroy it after assetions and revert\n// the previous one\nfunction resetPlatformAfterBootstrapping() {\n removeRootElement();\n destroyPlatform();\n const version = +VERSION.major;\n // https://github.com/angular/angular/commit/e250db4f261741b04ee4cbad4dec41a8908a12aa\n if (version < 14) {\n createPlatform(TestBed);\n }\n}\n\nexport function freshPlatform(fn: (done?: VoidFunction) => Promise<void>) {\n let resolve: VoidFunction | null = null;\n let reject: ((error: Error) => void) | null = null;\n let whenDoneIsCalledPromise: Promise<void> | null = null;\n\n const hasDoneArgument = fn.length === 1;\n\n if (hasDoneArgument) {\n whenDoneIsCalledPromise = new Promise<void>((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n }\n\n return async function testWithAFreshPlatform() {\n try {\n destroyPlatformBeforeBootstrappingTheNewOne();\n\n if (hasDoneArgument) {\n await fn((error?: Error) => {\n if (error) {\n reject!(error);\n } else {\n resolve!();\n }\n });\n await whenDoneIsCalledPromise!;\n } else {\n await fn();\n }\n } finally {\n resetPlatformAfterBootstrapping();\n }\n };\n}\n","/// <reference types=\"jest\" />\n\nexport function skipConsoleLogging<T extends (...args: any[]) => any>(fn: T): ReturnType<T> {\n const consoleSpies = [\n jest.spyOn(console, 'log').mockImplementation(() => {}),\n jest.spyOn(console, 'warn').mockImplementation(() => {}),\n jest.spyOn(console, 'error').mockImplementation(() => {}),\n jest.spyOn(console, 'info').mockImplementation(() => {})\n ];\n function restoreSpies() {\n consoleSpies.forEach(spy => spy.mockRestore());\n }\n let restoreSpyAsync = false;\n try {\n const returnValue = fn();\n if (returnValue instanceof Promise) {\n restoreSpyAsync = true;\n return returnValue.finally(() => restoreSpies()) as ReturnType<T>;\n }\n return returnValue;\n } finally {\n if (!restoreSpyAsync) {\n restoreSpies();\n }\n }\n}\n"],"names":["BrowserDomAdapter","getDOM"],"mappings":"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"}
|
package/fesm2015/ngxs-store.js
CHANGED
|
@@ -2,7 +2,7 @@ import { NgZone, Injectable, Inject, PLATFORM_ID, defineInjectable, inject, Inje
|
|
|
2
2
|
import { isAngularInTestMode, memoize, INITIAL_STATE_TOKEN, NgxsBootstrapper, NGXS_STATE_CONTEXT_FACTORY, NGXS_STATE_FACTORY, InitialState, ensureInjectorNotifierIsCaptured, localInject, ensureLocalInjectorCaptured } from '@ngxs/store/internals';
|
|
3
3
|
import { isPlatformServer } from '@angular/common';
|
|
4
4
|
import { Observable, Subject, BehaviorSubject, of, forkJoin, throwError, EMPTY, from } from 'rxjs';
|
|
5
|
-
import { filter, map, shareReplay, take, exhaustMap, mergeMap, defaultIfEmpty, catchError, takeUntil, tap, distinctUntilChanged } from 'rxjs/operators';
|
|
5
|
+
import { filter, map, shareReplay, take, exhaustMap, mergeMap, defaultIfEmpty, catchError, takeUntil, tap, publishReplay, refCount, distinctUntilChanged } from 'rxjs/operators';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview added by tsickle
|
|
@@ -1129,6 +1129,7 @@ if (false) {
|
|
|
1129
1129
|
* RxJS operator for selecting out specific actions.
|
|
1130
1130
|
*
|
|
1131
1131
|
* This will grab actions that have just been dispatched as well as actions that have completed
|
|
1132
|
+
* @template T
|
|
1132
1133
|
* @param {...?} allowedTypes
|
|
1133
1134
|
* @return {?}
|
|
1134
1135
|
*/
|
|
@@ -1139,6 +1140,7 @@ function ofAction(...allowedTypes) {
|
|
|
1139
1140
|
* RxJS operator for selecting out specific actions.
|
|
1140
1141
|
*
|
|
1141
1142
|
* This will ONLY grab actions that have just been dispatched
|
|
1143
|
+
* @template T
|
|
1142
1144
|
* @param {...?} allowedTypes
|
|
1143
1145
|
* @return {?}
|
|
1144
1146
|
*/
|
|
@@ -1149,6 +1151,7 @@ function ofActionDispatched(...allowedTypes) {
|
|
|
1149
1151
|
* RxJS operator for selecting out specific actions.
|
|
1150
1152
|
*
|
|
1151
1153
|
* This will ONLY grab actions that have just been successfully completed
|
|
1154
|
+
* @template T
|
|
1152
1155
|
* @param {...?} allowedTypes
|
|
1153
1156
|
* @return {?}
|
|
1154
1157
|
*/
|
|
@@ -1159,6 +1162,7 @@ function ofActionSuccessful(...allowedTypes) {
|
|
|
1159
1162
|
* RxJS operator for selecting out specific actions.
|
|
1160
1163
|
*
|
|
1161
1164
|
* This will ONLY grab actions that have just been canceled
|
|
1165
|
+
* @template T
|
|
1162
1166
|
* @param {...?} allowedTypes
|
|
1163
1167
|
* @return {?}
|
|
1164
1168
|
*/
|
|
@@ -1169,6 +1173,7 @@ function ofActionCanceled(...allowedTypes) {
|
|
|
1169
1173
|
* RxJS operator for selecting out specific actions.
|
|
1170
1174
|
*
|
|
1171
1175
|
* This will ONLY grab actions that have just been completed
|
|
1176
|
+
* @template T
|
|
1172
1177
|
* @param {...?} allowedTypes
|
|
1173
1178
|
* @return {?}
|
|
1174
1179
|
*/
|
|
@@ -1185,6 +1190,7 @@ function ofActionCompleted(...allowedTypes) {
|
|
|
1185
1190
|
* RxJS operator for selecting out specific actions.
|
|
1186
1191
|
*
|
|
1187
1192
|
* This will ONLY grab actions that have just thrown an error
|
|
1193
|
+
* @template T
|
|
1188
1194
|
* @param {...?} allowedTypes
|
|
1189
1195
|
* @return {?}
|
|
1190
1196
|
*/
|
|
@@ -3062,6 +3068,12 @@ class Store {
|
|
|
3062
3068
|
this._config = _config;
|
|
3063
3069
|
this._internalExecutionStrategy = _internalExecutionStrategy;
|
|
3064
3070
|
this._stateFactory = _stateFactory;
|
|
3071
|
+
/**
|
|
3072
|
+
* This is a derived state stream that leaves NGXS execution strategy to emit state changes within the Angular zone,
|
|
3073
|
+
* because state is being changed actually within the `<root>` zone, see `InternalDispatcher#dispatchSingle`.
|
|
3074
|
+
* All selects would use this stream, and it would call leave only once for any state change across all active selectors.
|
|
3075
|
+
*/
|
|
3076
|
+
this._selectableStateStream = this._stateStream.pipe(leaveNgxs(this._internalExecutionStrategy), publishReplay(1), refCount());
|
|
3065
3077
|
this.initStateStream(initialStateValue);
|
|
3066
3078
|
}
|
|
3067
3079
|
/**
|
|
@@ -3079,7 +3091,7 @@ class Store {
|
|
|
3079
3091
|
select(selector) {
|
|
3080
3092
|
/** @type {?} */
|
|
3081
3093
|
const selectorFn = this.getStoreBoundSelectorFn(selector);
|
|
3082
|
-
return this.
|
|
3094
|
+
return this._selectableStateStream.pipe(map(selectorFn), catchError((/**
|
|
3083
3095
|
* @param {?} err
|
|
3084
3096
|
* @return {?}
|
|
3085
3097
|
*/
|
|
@@ -3115,7 +3127,9 @@ class Store {
|
|
|
3115
3127
|
* @return {?}
|
|
3116
3128
|
*/
|
|
3117
3129
|
subscribe(fn) {
|
|
3118
|
-
return this.
|
|
3130
|
+
return this._selectableStateStream
|
|
3131
|
+
.pipe(leaveNgxs(this._internalExecutionStrategy))
|
|
3132
|
+
.subscribe(fn);
|
|
3119
3133
|
}
|
|
3120
3134
|
/**
|
|
3121
3135
|
* Return the raw value of the state.
|
|
@@ -3178,6 +3192,14 @@ Store.ctorParameters = () => [
|
|
|
3178
3192
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [INITIAL_STATE_TOKEN,] }] }
|
|
3179
3193
|
];
|
|
3180
3194
|
if (false) {
|
|
3195
|
+
/**
|
|
3196
|
+
* This is a derived state stream that leaves NGXS execution strategy to emit state changes within the Angular zone,
|
|
3197
|
+
* because state is being changed actually within the `<root>` zone, see `InternalDispatcher#dispatchSingle`.
|
|
3198
|
+
* All selects would use this stream, and it would call leave only once for any state change across all active selectors.
|
|
3199
|
+
* @type {?}
|
|
3200
|
+
* @private
|
|
3201
|
+
*/
|
|
3202
|
+
Store.prototype._selectableStateStream;
|
|
3181
3203
|
/**
|
|
3182
3204
|
* @type {?}
|
|
3183
3205
|
* @private
|