@ngxs/store 18.1.1-dev.master-4a0091e → 18.1.1-dev.master-1c1e589
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/esm2022/internals/testing/index.mjs +2 -2
- package/esm2022/internals/testing/ngxs.setup.mjs +4 -3
- package/esm2022/internals/testing/skip-console-logging.mjs +17 -7
- package/esm2022/src/selectors/selector-checks.util.mjs +29 -4
- package/fesm2022/ngxs-store-internals-testing.mjs +40 -30
- package/fesm2022/ngxs-store-internals-testing.mjs.map +1 -1
- package/fesm2022/ngxs-store.mjs +27 -3
- package/fesm2022/ngxs-store.mjs.map +1 -1
- package/internals/testing/index.d.ts +1 -1
- package/internals/testing/skip-console-logging.d.ts +4 -1
- package/package.json +7 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { freshPlatform } from './fresh-platform';
|
|
2
2
|
export { NgxsTestBed } from './ngxs.setup';
|
|
3
|
-
export { skipConsoleLogging } from './skip-console-logging';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
export { skipConsoleLogging, loggedError } from './skip-console-logging';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yZS9pbnRlcm5hbHMvdGVzdGluZy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUNMLGtCQUFrQixFQUdsQixXQUFXLEVBQ1osTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGZyZXNoUGxhdGZvcm0gfSBmcm9tICcuL2ZyZXNoLXBsYXRmb3JtJztcbmV4cG9ydCB7IE5neHNUZXN0QmVkIH0gZnJvbSAnLi9uZ3hzLnNldHVwJztcbmV4cG9ydCB7XG4gIHNraXBDb25zb2xlTG9nZ2luZyxcbiAgQ29uc29sZVJlY29yZCxcbiAgQ29uc29sZVJlY29yZGVyLFxuICBsb2dnZWRFcnJvclxufSBmcm9tICcuL3NraXAtY29uc29sZS1sb2dnaW5nJztcbmV4cG9ydCB7IE5neHNUZXN0aW5nIH0gZnJvbSAnLi9zeW1ib2wnO1xuIl19
|
|
@@ -5,19 +5,20 @@ import { ɵBrowserDomAdapter as BrowserDomAdapter } from '@angular/platform-brow
|
|
|
5
5
|
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
|
|
6
6
|
import { NgxsModule, Store } from '@ngxs/store';
|
|
7
7
|
import { NgxsTestModule } from './helpers/ngxs-test.module';
|
|
8
|
+
import { skipConsoleLogging } from './skip-console-logging';
|
|
8
9
|
export class NgxsTestBed {
|
|
9
10
|
static configureTestingStates(options) {
|
|
10
11
|
this.resetTestBed();
|
|
11
12
|
if (options.before) {
|
|
12
13
|
options.before();
|
|
13
14
|
}
|
|
14
|
-
TestBed.configureTestingModule({
|
|
15
|
+
skipConsoleLogging(() => TestBed.configureTestingModule({
|
|
15
16
|
imports: [
|
|
16
17
|
NgxsTestModule,
|
|
17
18
|
NgxsModule.forRoot(options.states || [], options.ngxsOptions || {}),
|
|
18
19
|
...(options.imports || [])
|
|
19
20
|
]
|
|
20
|
-
}).compileComponents();
|
|
21
|
+
}).compileComponents());
|
|
21
22
|
NgxsTestBed.ngxsBootstrap();
|
|
22
23
|
return {
|
|
23
24
|
get store() {
|
|
@@ -45,4 +46,4 @@ export class NgxsTestBed {
|
|
|
45
46
|
document.body.appendChild(root);
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4cy5zZXR1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3N0b3JlL2ludGVybmFscy90ZXN0aW5nL3NyYy9uZ3hzLnNldHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixJQUFJLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEYsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw2QkFBNkIsRUFDOUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsTUFBTSxPQUFPLFdBQVc7SUFDZixNQUFNLENBQUMsc0JBQXNCLENBQUMsT0FBMkI7UUFDOUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBRUQsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQ3RCLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztZQUM3QixPQUFPLEVBQUU7Z0JBQ1AsY0FBYztnQkFDZCxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2dCQUNuRSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7YUFDM0I7U0FDRixDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FDdkIsQ0FBQztRQUVGLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU1QixPQUFPO1lBQ0wsSUFBSSxLQUFLO2dCQUNQLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQ0QsSUFBSSxVQUFVO2dCQUNaLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxhQUFhO1FBQzFCLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QixjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sTUFBTSxDQUFDLFlBQVk7UUFDekIsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLG1CQUFtQixDQUFDLDJCQUEyQixFQUFFLDZCQUE2QixFQUFFLEVBQUU7WUFDeEYsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxVQUFVO1FBQ2pELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlc3RCZWQsIFRlc3RCZWRTdGF0aWMgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgybVCcm93c2VyRG9tQWRhcHRlciBhcyBCcm93c2VyRG9tQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtcbiAgQnJvd3NlckR5bmFtaWNUZXN0aW5nTW9kdWxlLFxuICBwbGF0Zm9ybUJyb3dzZXJEeW5hbWljVGVzdGluZ1xufSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyLWR5bmFtaWMvdGVzdGluZyc7XG5pbXBvcnQgeyBOZ3hzTW9kdWxlLCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcblxuaW1wb3J0IHsgTmd4c1Rlc3RNb2R1bGUgfSBmcm9tICcuL2hlbHBlcnMvbmd4cy10ZXN0Lm1vZHVsZSc7XG5pbXBvcnQgeyBOZ3hzT3B0aW9uc1Rlc3RpbmcsIE5neHNUZXN0aW5nIH0gZnJvbSAnLi9zeW1ib2wnO1xuaW1wb3J0IHsgc2tpcENvbnNvbGVMb2dnaW5nIH0gZnJvbSAnLi9za2lwLWNvbnNvbGUtbG9nZ2luZyc7XG5cbmV4cG9ydCBjbGFzcyBOZ3hzVGVzdEJlZCB7XG4gIHB1YmxpYyBzdGF0aWMgY29uZmlndXJlVGVzdGluZ1N0YXRlcyhvcHRpb25zOiBOZ3hzT3B0aW9uc1Rlc3RpbmcpOiBOZ3hzVGVzdGluZyB7XG4gICAgdGhpcy5yZXNldFRlc3RCZWQoKTtcblxuICAgIGlmIChvcHRpb25zLmJlZm9yZSkge1xuICAgICAgb3B0aW9ucy5iZWZvcmUoKTtcbiAgICB9XG5cbiAgICBza2lwQ29uc29sZUxvZ2dpbmcoKCkgPT5cbiAgICAgIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgICAgIGltcG9ydHM6IFtcbiAgICAgICAgICBOZ3hzVGVzdE1vZHVsZSxcbiAgICAgICAgICBOZ3hzTW9kdWxlLmZvclJvb3Qob3B0aW9ucy5zdGF0ZXMgfHwgW10sIG9wdGlvbnMubmd4c09wdGlvbnMgfHwge30pLFxuICAgICAgICAgIC4uLihvcHRpb25zLmltcG9ydHMgfHwgW10pXG4gICAgICAgIF1cbiAgICAgIH0pLmNvbXBpbGVDb21wb25lbnRzKClcbiAgICApO1xuXG4gICAgTmd4c1Rlc3RCZWQubmd4c0Jvb3RzdHJhcCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCBzdG9yZSgpOiBTdG9yZSB7XG4gICAgICAgIHJldHVybiBUZXN0QmVkLmluamVjdChTdG9yZSk7XG4gICAgICB9LFxuICAgICAgZ2V0IGdldFRlc3RCZWQoKTogVGVzdEJlZFN0YXRpYyB7XG4gICAgICAgIHJldHVybiBUZXN0QmVkO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBuZ3hzQm9vdHN0cmFwKCk6IHZvaWQge1xuICAgIE5neHNUZXN0QmVkLmNyZWF0ZVJvb3ROb2RlKCk7XG4gICAgTmd4c1Rlc3RNb2R1bGUubmdEb0Jvb3RzdHJhcChUZXN0QmVkLmluamVjdChBcHBsaWNhdGlvblJlZikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRUZXN0QmVkKCk6IHZvaWQge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0RW52aXJvbm1lbnQoKTtcbiAgICBUZXN0QmVkLmluaXRUZXN0RW52aXJvbm1lbnQoQnJvd3NlckR5bmFtaWNUZXN0aW5nTW9kdWxlLCBwbGF0Zm9ybUJyb3dzZXJEeW5hbWljVGVzdGluZygpLCB7XG4gICAgICB0ZWFyZG93bjogeyBkZXN0cm95QWZ0ZXJFYWNoOiB0cnVlIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZVJvb3ROb2RlKHNlbGVjdG9yID0gJ2FwcC1yb290Jyk6IHZvaWQge1xuICAgIGNvbnN0IGRvY3VtZW50ID0gVGVzdEJlZC5pbmplY3QoRE9DVU1FTlQpO1xuICAgIGNvbnN0IGFkYXB0ZXIgPSBuZXcgQnJvd3NlckRvbUFkYXB0ZXIoKTtcbiAgICBjb25zdCByb290ID0gYWRhcHRlci5jcmVhdGVFbGVtZW50KHNlbGVjdG9yKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3QpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export function loggedError(message) {
|
|
2
|
+
return ['error', [expect.objectContaining({ message })]];
|
|
3
|
+
}
|
|
4
|
+
export function skipConsoleLogging(fn, consoleRecorder = []) {
|
|
3
5
|
const consoleSpies = [
|
|
4
|
-
jest.spyOn(console, 'log').mockImplementation(() => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
jest.spyOn(console, '
|
|
6
|
+
jest.spyOn(console, 'log').mockImplementation((...args) => {
|
|
7
|
+
consoleRecorder.push(['log', args]);
|
|
8
|
+
}),
|
|
9
|
+
jest.spyOn(console, 'warn').mockImplementation((...args) => {
|
|
10
|
+
consoleRecorder.push(['warn', args]);
|
|
11
|
+
}),
|
|
12
|
+
jest.spyOn(console, 'error').mockImplementation((...args) => {
|
|
13
|
+
consoleRecorder.push(['error', args]);
|
|
14
|
+
}),
|
|
15
|
+
jest.spyOn(console, 'info').mockImplementation((...args) => {
|
|
16
|
+
consoleRecorder.push(['info', args]);
|
|
17
|
+
})
|
|
8
18
|
];
|
|
9
19
|
function restoreSpies() {
|
|
10
20
|
consoleSpies.forEach(spy => spy.mockRestore());
|
|
@@ -24,4 +34,4 @@ export function skipConsoleLogging(fn) {
|
|
|
24
34
|
}
|
|
25
35
|
}
|
|
26
36
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1jb25zb2xlLWxvZ2dpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yZS9pbnRlcm5hbHMvdGVzdGluZy9zcmMvc2tpcC1jb25zb2xlLWxvZ2dpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFlO0lBQ3pDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxFQUFLLEVBQ0wsa0JBQW1DLEVBQUU7SUFFckMsTUFBTSxZQUFZLEdBQUc7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ3hELGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDekQsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUMxRCxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ3pELGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUM7S0FDSCxDQUFDO0lBQ0YsU0FBUyxZQUFZO1FBQ25CLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksQ0FBQztRQUNILE1BQU0sV0FBVyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLElBQUksV0FBVyxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQ25DLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDdkIsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFrQixDQUFDO1FBQ3BFLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO1lBQVMsQ0FBQztRQUNULElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixZQUFZLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDb25zb2xlUmVjb3JkID0gW3N0cmluZywgYW55W11dO1xuZXhwb3J0IHR5cGUgQ29uc29sZVJlY29yZGVyID0gQ29uc29sZVJlY29yZFtdO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9nZ2VkRXJyb3IobWVzc2FnZTogc3RyaW5nKTogQ29uc29sZVJlY29yZCB7XG4gIHJldHVybiBbJ2Vycm9yJywgW2V4cGVjdC5vYmplY3RDb250YWluaW5nKHsgbWVzc2FnZSB9KV1dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2tpcENvbnNvbGVMb2dnaW5nPFQgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG4gIGZuOiBULFxuICBjb25zb2xlUmVjb3JkZXI6IENvbnNvbGVSZWNvcmRlciA9IFtdXG4pOiBSZXR1cm5UeXBlPFQ+IHtcbiAgY29uc3QgY29uc29sZVNwaWVzID0gW1xuICAgIGplc3Quc3B5T24oY29uc29sZSwgJ2xvZycpLm1vY2tJbXBsZW1lbnRhdGlvbigoLi4uYXJncykgPT4ge1xuICAgICAgY29uc29sZVJlY29yZGVyLnB1c2goWydsb2cnLCBhcmdzXSk7XG4gICAgfSksXG4gICAgamVzdC5zcHlPbihjb25zb2xlLCAnd2FybicpLm1vY2tJbXBsZW1lbnRhdGlvbigoLi4uYXJncykgPT4ge1xuICAgICAgY29uc29sZVJlY29yZGVyLnB1c2goWyd3YXJuJywgYXJnc10pO1xuICAgIH0pLFxuICAgIGplc3Quc3B5T24oY29uc29sZSwgJ2Vycm9yJykubW9ja0ltcGxlbWVudGF0aW9uKCguLi5hcmdzKSA9PiB7XG4gICAgICBjb25zb2xlUmVjb3JkZXIucHVzaChbJ2Vycm9yJywgYXJnc10pO1xuICAgIH0pLFxuICAgIGplc3Quc3B5T24oY29uc29sZSwgJ2luZm8nKS5tb2NrSW1wbGVtZW50YXRpb24oKC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnNvbGVSZWNvcmRlci5wdXNoKFsnaW5mbycsIGFyZ3NdKTtcbiAgICB9KVxuICBdO1xuICBmdW5jdGlvbiByZXN0b3JlU3BpZXMoKSB7XG4gICAgY29uc29sZVNwaWVzLmZvckVhY2goc3B5ID0+IHNweS5tb2NrUmVzdG9yZSgpKTtcbiAgfVxuICBsZXQgcmVzdG9yZVNweUFzeW5jID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgcmV0dXJuVmFsdWUgPSBmbigpO1xuICAgIGlmIChyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHJlc3RvcmVTcHlBc3luYyA9IHRydWU7XG4gICAgICByZXR1cm4gcmV0dXJuVmFsdWUuZmluYWxseSgoKSA9PiByZXN0b3JlU3BpZXMoKSkgYXMgUmV0dXJuVHlwZTxUPjtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICB9IGZpbmFsbHkge1xuICAgIGlmICghcmVzdG9yZVNweUFzeW5jKSB7XG4gICAgICByZXN0b3JlU3BpZXMoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import { ɵgetSelectorMetadata, ɵgetStoreMetadata } from '@ngxs/store/internals';
|
|
2
|
+
import { NgZone } from '@angular/core';
|
|
3
|
+
function getMissingMetaDataError(selector, context = {}) {
|
|
4
|
+
const metadata = ɵgetSelectorMetadata(selector) || ɵgetStoreMetadata(selector);
|
|
5
|
+
if (!metadata) {
|
|
6
|
+
return new Error(`${context.prefix}The value provided as the ${context.noun} is not a valid selector.`);
|
|
7
|
+
}
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
2
10
|
export function ensureValidSelector(selector, context = {}) {
|
|
3
11
|
const noun = context.noun || 'selector';
|
|
4
12
|
const prefix = context.prefix ? context.prefix + ': ' : '';
|
|
5
13
|
ensureValueProvided(selector, { noun, prefix: context.prefix });
|
|
6
|
-
const
|
|
7
|
-
if (
|
|
8
|
-
|
|
14
|
+
const error = getMissingMetaDataError(selector, { noun, prefix });
|
|
15
|
+
if (error) {
|
|
16
|
+
// If we have used this utility within a state class, we may be
|
|
17
|
+
// before the @State or @Selector decorators have been applied.
|
|
18
|
+
// wait until the next microtask to verify.
|
|
19
|
+
// Theoretically this situation is only encountered when the javascript
|
|
20
|
+
// files are being loaded and we are outside the angular zone.
|
|
21
|
+
if (!NgZone.isInAngularZone()) {
|
|
22
|
+
Promise.resolve().then(() => {
|
|
23
|
+
const errorAgain = getMissingMetaDataError(selector, { noun, prefix });
|
|
24
|
+
if (errorAgain) {
|
|
25
|
+
// Throw the originally captured error so that the stack trace shows the
|
|
26
|
+
// original utility call site.
|
|
27
|
+
console.error(error);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
9
34
|
}
|
|
10
35
|
}
|
|
11
36
|
export function ensureValueProvided(value, context = {}) {
|
|
@@ -15,4 +40,4 @@ export function ensureValueProvided(value, context = {}) {
|
|
|
15
40
|
throw new Error(`${prefix}A ${noun} must be provided.`);
|
|
16
41
|
}
|
|
17
42
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3ItY2hlY2tzLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zdG9yZS9zcmMvc2VsZWN0b3JzL3NlbGVjdG9yLWNoZWNrcy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkMsU0FBUyx1QkFBdUIsQ0FDOUIsUUFBMkIsRUFDM0IsVUFBOEMsRUFBRTtJQUVoRCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUN0RixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLElBQUksS0FBSyxDQUNkLEdBQUcsT0FBTyxDQUFDLE1BQU0sNkJBQTZCLE9BQU8sQ0FBQyxJQUFJLDJCQUEyQixDQUN0RixDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsUUFBMkIsRUFDM0IsVUFBOEMsRUFBRTtJQUVoRCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNELG1CQUFtQixDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEUsTUFBTSxLQUFLLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEUsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLCtEQUErRDtRQUMvRCxnRUFBZ0U7UUFDaEUsNENBQTRDO1FBQzVDLHVFQUF1RTtRQUN2RSwrREFBK0Q7UUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUMxQixNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDZix3RUFBd0U7b0JBQ3hFLDhCQUE4QjtvQkFDOUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsS0FBVSxFQUNWLFVBQThDLEVBQUU7SUFFaEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUM7SUFDckMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsTUFBTSxLQUFLLElBQUksb0JBQW9CLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IMm1Z2V0U2VsZWN0b3JNZXRhZGF0YSwgybVnZXRTdG9yZU1ldGFkYXRhIH0gZnJvbSAnQG5neHMvc3RvcmUvaW50ZXJuYWxzJztcbmltcG9ydCB7IMm1U2VsZWN0b3JEZWYgfSBmcm9tICcuL3NlbGVjdG9yLXR5cGVzLnV0aWwnO1xuaW1wb3J0IHsgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmZ1bmN0aW9uIGdldE1pc3NpbmdNZXRhRGF0YUVycm9yKFxuICBzZWxlY3RvcjogybVTZWxlY3RvckRlZjxhbnk+LFxuICBjb250ZXh0OiB7IHByZWZpeD86IHN0cmluZzsgbm91bj86IHN0cmluZyB9ID0ge31cbikge1xuICBjb25zdCBtZXRhZGF0YSA9IMm1Z2V0U2VsZWN0b3JNZXRhZGF0YShzZWxlY3RvcikgfHwgybVnZXRTdG9yZU1ldGFkYXRhKHNlbGVjdG9yIGFzIGFueSk7XG4gIGlmICghbWV0YWRhdGEpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKFxuICAgICAgYCR7Y29udGV4dC5wcmVmaXh9VGhlIHZhbHVlIHByb3ZpZGVkIGFzIHRoZSAke2NvbnRleHQubm91bn0gaXMgbm90IGEgdmFsaWQgc2VsZWN0b3IuYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVWYWxpZFNlbGVjdG9yKFxuICBzZWxlY3RvcjogybVTZWxlY3RvckRlZjxhbnk+LFxuICBjb250ZXh0OiB7IHByZWZpeD86IHN0cmluZzsgbm91bj86IHN0cmluZyB9ID0ge31cbikge1xuICBjb25zdCBub3VuID0gY29udGV4dC5ub3VuIHx8ICdzZWxlY3Rvcic7XG4gIGNvbnN0IHByZWZpeCA9IGNvbnRleHQucHJlZml4ID8gY29udGV4dC5wcmVmaXggKyAnOiAnIDogJyc7XG4gIGVuc3VyZVZhbHVlUHJvdmlkZWQoc2VsZWN0b3IsIHsgbm91biwgcHJlZml4OiBjb250ZXh0LnByZWZpeCB9KTtcbiAgY29uc3QgZXJyb3IgPSBnZXRNaXNzaW5nTWV0YURhdGFFcnJvcihzZWxlY3RvciwgeyBub3VuLCBwcmVmaXggfSk7XG4gIGlmIChlcnJvcikge1xuICAgIC8vIElmIHdlIGhhdmUgdXNlZCB0aGlzIHV0aWxpdHkgd2l0aGluIGEgc3RhdGUgY2xhc3MsIHdlIG1heSBiZVxuICAgIC8vICBiZWZvcmUgdGhlIEBTdGF0ZSBvciBAU2VsZWN0b3IgZGVjb3JhdG9ycyBoYXZlIGJlZW4gYXBwbGllZC5cbiAgICAvLyAgd2FpdCB1bnRpbCB0aGUgbmV4dCBtaWNyb3Rhc2sgdG8gdmVyaWZ5LlxuICAgIC8vIFRoZW9yZXRpY2FsbHkgdGhpcyBzaXR1YXRpb24gaXMgb25seSBlbmNvdW50ZXJlZCB3aGVuIHRoZSBqYXZhc2NyaXB0XG4gICAgLy8gIGZpbGVzIGFyZSBiZWluZyBsb2FkZWQgYW5kIHdlIGFyZSBvdXRzaWRlIHRoZSBhbmd1bGFyIHpvbmUuXG4gICAgaWYgKCFOZ1pvbmUuaXNJbkFuZ3VsYXJab25lKCkpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvckFnYWluID0gZ2V0TWlzc2luZ01ldGFEYXRhRXJyb3Ioc2VsZWN0b3IsIHsgbm91biwgcHJlZml4IH0pO1xuICAgICAgICBpZiAoZXJyb3JBZ2Fpbikge1xuICAgICAgICAgIC8vIFRocm93IHRoZSBvcmlnaW5hbGx5IGNhcHR1cmVkIGVycm9yIHNvIHRoYXQgdGhlIHN0YWNrIHRyYWNlIHNob3dzIHRoZVxuICAgICAgICAgIC8vIG9yaWdpbmFsIHV0aWxpdHkgY2FsbCBzaXRlLlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVWYWx1ZVByb3ZpZGVkKFxuICB2YWx1ZTogYW55LFxuICBjb250ZXh0OiB7IHByZWZpeD86IHN0cmluZzsgbm91bj86IHN0cmluZyB9ID0ge31cbikge1xuICBjb25zdCBub3VuID0gY29udGV4dC5ub3VuIHx8ICd2YWx1ZSc7XG4gIGNvbnN0IHByZWZpeCA9IGNvbnRleHQucHJlZml4ID8gY29udGV4dC5wcmVmaXggKyAnOiAnIDogJyc7XG4gIGlmICghdmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJlZml4fUEgJHtub3VufSBtdXN0IGJlIHByb3ZpZGVkLmApO1xuICB9XG59XG4iXX0=
|
|
@@ -104,19 +104,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
104
104
|
}]
|
|
105
105
|
}] });
|
|
106
106
|
|
|
107
|
+
function loggedError(message) {
|
|
108
|
+
return ['error', [expect.objectContaining({ message })]];
|
|
109
|
+
}
|
|
110
|
+
function skipConsoleLogging(fn, consoleRecorder = []) {
|
|
111
|
+
const consoleSpies = [
|
|
112
|
+
jest.spyOn(console, 'log').mockImplementation((...args) => {
|
|
113
|
+
consoleRecorder.push(['log', args]);
|
|
114
|
+
}),
|
|
115
|
+
jest.spyOn(console, 'warn').mockImplementation((...args) => {
|
|
116
|
+
consoleRecorder.push(['warn', args]);
|
|
117
|
+
}),
|
|
118
|
+
jest.spyOn(console, 'error').mockImplementation((...args) => {
|
|
119
|
+
consoleRecorder.push(['error', args]);
|
|
120
|
+
}),
|
|
121
|
+
jest.spyOn(console, 'info').mockImplementation((...args) => {
|
|
122
|
+
consoleRecorder.push(['info', args]);
|
|
123
|
+
})
|
|
124
|
+
];
|
|
125
|
+
function restoreSpies() {
|
|
126
|
+
consoleSpies.forEach(spy => spy.mockRestore());
|
|
127
|
+
}
|
|
128
|
+
let restoreSpyAsync = false;
|
|
129
|
+
try {
|
|
130
|
+
const returnValue = fn();
|
|
131
|
+
if (returnValue instanceof Promise) {
|
|
132
|
+
restoreSpyAsync = true;
|
|
133
|
+
return returnValue.finally(() => restoreSpies());
|
|
134
|
+
}
|
|
135
|
+
return returnValue;
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
if (!restoreSpyAsync) {
|
|
139
|
+
restoreSpies();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
107
144
|
class NgxsTestBed {
|
|
108
145
|
static configureTestingStates(options) {
|
|
109
146
|
this.resetTestBed();
|
|
110
147
|
if (options.before) {
|
|
111
148
|
options.before();
|
|
112
149
|
}
|
|
113
|
-
TestBed.configureTestingModule({
|
|
150
|
+
skipConsoleLogging(() => TestBed.configureTestingModule({
|
|
114
151
|
imports: [
|
|
115
152
|
NgxsTestModule,
|
|
116
153
|
NgxsModule.forRoot(options.states || [], options.ngxsOptions || {}),
|
|
117
154
|
...(options.imports || [])
|
|
118
155
|
]
|
|
119
|
-
}).compileComponents();
|
|
156
|
+
}).compileComponents());
|
|
120
157
|
NgxsTestBed.ngxsBootstrap();
|
|
121
158
|
return {
|
|
122
159
|
get store() {
|
|
@@ -145,36 +182,9 @@ class NgxsTestBed {
|
|
|
145
182
|
}
|
|
146
183
|
}
|
|
147
184
|
|
|
148
|
-
/// <reference types="jest" />
|
|
149
|
-
function skipConsoleLogging(fn) {
|
|
150
|
-
const consoleSpies = [
|
|
151
|
-
jest.spyOn(console, 'log').mockImplementation(() => { }),
|
|
152
|
-
jest.spyOn(console, 'warn').mockImplementation(() => { }),
|
|
153
|
-
jest.spyOn(console, 'error').mockImplementation(() => { }),
|
|
154
|
-
jest.spyOn(console, 'info').mockImplementation(() => { })
|
|
155
|
-
];
|
|
156
|
-
function restoreSpies() {
|
|
157
|
-
consoleSpies.forEach(spy => spy.mockRestore());
|
|
158
|
-
}
|
|
159
|
-
let restoreSpyAsync = false;
|
|
160
|
-
try {
|
|
161
|
-
const returnValue = fn();
|
|
162
|
-
if (returnValue instanceof Promise) {
|
|
163
|
-
restoreSpyAsync = true;
|
|
164
|
-
return returnValue.finally(() => restoreSpies());
|
|
165
|
-
}
|
|
166
|
-
return returnValue;
|
|
167
|
-
}
|
|
168
|
-
finally {
|
|
169
|
-
if (!restoreSpyAsync) {
|
|
170
|
-
restoreSpies();
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
185
|
/**
|
|
176
186
|
* Generated bundle index. Do not edit.
|
|
177
187
|
*/
|
|
178
188
|
|
|
179
|
-
export { NgxsTestBed, freshPlatform, skipConsoleLogging };
|
|
189
|
+
export { NgxsTestBed, freshPlatform, loggedError, skipConsoleLogging };
|
|
180
190
|
//# sourceMappingURL=ngxs-store-internals-testing.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngxs-store-internals-testing.mjs","sources":["../../../packages/store/internals/testing/src/fresh-platform.ts","../../../packages/store/internals/testing/src/helpers/ngxs-test.component.ts","../../../packages/store/internals/testing/src/helpers/ngxs-test.module.ts","../../../packages/store/internals/testing/src/ngxs.setup.ts","../../../packages/store/internals/testing/src/skip-console-logging.ts","../../../packages/store/internals/testing/src/ngxs-store-internals-testing.ts"],"sourcesContent":["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(freshUrl: string) {\n destroyPlatform();\n resetLocationToUrl(freshUrl);\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\nfunction resetLocationToUrl(freshUrl: string) {\n window.history.replaceState({}, 'Test', freshUrl);\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 const freshUrl = '/';\n destroyPlatformBeforeBootstrappingTheNewOne(freshUrl);\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","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})\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 teardown: { destroyAfterEach: true }\n });\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","/// <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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getDOM","BrowserDomAdapter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngxs-store-internals-testing.mjs","sources":["../../../packages/store/internals/testing/src/fresh-platform.ts","../../../packages/store/internals/testing/src/helpers/ngxs-test.component.ts","../../../packages/store/internals/testing/src/helpers/ngxs-test.module.ts","../../../packages/store/internals/testing/src/skip-console-logging.ts","../../../packages/store/internals/testing/src/ngxs.setup.ts","../../../packages/store/internals/testing/src/ngxs-store-internals-testing.ts"],"sourcesContent":["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(freshUrl: string) {\n destroyPlatform();\n resetLocationToUrl(freshUrl);\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\nfunction resetLocationToUrl(freshUrl: string) {\n window.history.replaceState({}, 'Test', freshUrl);\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 const freshUrl = '/';\n destroyPlatformBeforeBootstrappingTheNewOne(freshUrl);\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","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})\nexport class NgxsTestModule {\n public static ngDoBootstrap(app: ApplicationRef): void {\n app.bootstrap(NgxsTestComponent);\n }\n}\n","export type ConsoleRecord = [string, any[]];\nexport type ConsoleRecorder = ConsoleRecord[];\n\nexport function loggedError(message: string): ConsoleRecord {\n return ['error', [expect.objectContaining({ message })]];\n}\n\nexport function skipConsoleLogging<T extends (...args: any[]) => any>(\n fn: T,\n consoleRecorder: ConsoleRecorder = []\n): ReturnType<T> {\n const consoleSpies = [\n jest.spyOn(console, 'log').mockImplementation((...args) => {\n consoleRecorder.push(['log', args]);\n }),\n jest.spyOn(console, 'warn').mockImplementation((...args) => {\n consoleRecorder.push(['warn', args]);\n }),\n jest.spyOn(console, 'error').mockImplementation((...args) => {\n consoleRecorder.push(['error', args]);\n }),\n jest.spyOn(console, 'info').mockImplementation((...args) => {\n consoleRecorder.push(['info', args]);\n })\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","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';\nimport { skipConsoleLogging } from './skip-console-logging';\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 skipConsoleLogging(() =>\n TestBed.configureTestingModule({\n imports: [\n NgxsTestModule,\n NgxsModule.forRoot(options.states || [], options.ngxsOptions || {}),\n ...(options.imports || [])\n ]\n }).compileComponents()\n );\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 teardown: { destroyAfterEach: true }\n });\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getDOM","BrowserDomAdapter"],"mappings":";;;;;;;;AAKA,SAAS,iBAAiB,GAAA;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAGA,OAAM,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC1D,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,iBAAiB,GAAA;AACxB,IAAA,MAAM,IAAI,GAAY,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;AACzE,IAAA,IAAI;AACF,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACjC;IAAC,MAAM,GAAE;AACZ,CAAC;AAED,SAAS,2CAA2C,CAAC,QAAgB,EAAA;AACnE,IAAA,eAAe,EAAE,CAAC;IAClB,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7B,IAAA,iBAAiB,EAAE,CAAC;AACtB,CAAC;AAED;AACA;AACA;AACA,SAAS,+BAA+B,GAAA;AACtC,IAAA,iBAAiB,EAAE,CAAC;AACpB,IAAA,eAAe,EAAE,CAAC;AAClB,IAAA,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;;AAE/B,IAAA,IAAI,OAAO,GAAG,EAAE,EAAE;QAChB,cAAc,CAAC,OAAO,CAAC,CAAC;KACzB;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAA;IAC1C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAEK,SAAU,aAAa,CAAC,EAA0C,EAAA;IACtE,IAAI,OAAO,GAAwB,IAAI,CAAC;IACxC,IAAI,MAAM,GAAoC,IAAI,CAAC;IACnD,IAAI,uBAAuB,GAAyB,IAAI,CAAC;AAEzD,IAAA,MAAM,eAAe,GAAG,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAExC,IAAI,eAAe,EAAE;QACnB,uBAAuB,GAAG,IAAI,OAAO,CAAO,CAAC,QAAQ,EAAE,OAAO,KAAI;YAChE,OAAO,GAAG,QAAQ,CAAC;YACnB,MAAM,GAAG,OAAO,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;IAED,OAAO,eAAe,sBAAsB,GAAA;AAC1C,QAAA,IAAI;YACF,MAAM,QAAQ,GAAG,GAAG,CAAC;YACrB,2CAA2C,CAAC,QAAQ,CAAC,CAAC;YAEtD,IAAI,eAAe,EAAE;AACnB,gBAAA,MAAM,EAAE,CAAC,CAAC,KAAa,KAAI;oBACzB,IAAI,KAAK,EAAE;wBACT,MAAO,CAAC,KAAK,CAAC,CAAC;qBAChB;yBAAM;AACL,wBAAA,OAAQ,EAAE,CAAC;qBACZ;AACH,iBAAC,CAAC,CAAC;AACH,gBAAA,MAAM,uBAAwB,CAAC;aAChC;iBAAM;gBACL,MAAM,EAAE,EAAE,CAAC;aACZ;SACF;gBAAS;AACR,YAAA,+BAA+B,EAAE,CAAC;SACnC;AACH,KAAC,CAAC;AACJ;;MCtEa,iBAAiB,CAAA;AACrB,IAAA,QAAQ,MAAW;AACnB,IAAA,eAAe,MAAW;iIAFtB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gDAFlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAED,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA,CAAA;;;MCIY,cAAc,CAAA;IAClB,OAAO,aAAa,CAAC,GAAmB,EAAA;AAC7C,QAAA,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;KAClC;iIAHU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;kIAAd,cAAc,EAAA,YAAA,EAAA,CAFV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CADtB,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;AAGZ,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHf,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGZ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,YAAY,EAAE,CAAC,iBAAiB,CAAC;AAClC,iBAAA,CAAA;;;ACLK,SAAU,WAAW,CAAC,OAAe,EAAA;AACzC,IAAA,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;SAEe,kBAAkB,CAChC,EAAK,EACL,kBAAmC,EAAE,EAAA;AAErC,IAAA,MAAM,YAAY,GAAG;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAI,KAAI;YACxD,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAI,KAAI;YACzD,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAI,KAAI;YAC1D,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACxC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAI,KAAI;YACzD,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC;KACH,CAAC;AACF,IAAA,SAAS,YAAY,GAAA;AACnB,QAAA,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAChD;IACD,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAA,IAAI;AACF,QAAA,MAAM,WAAW,GAAG,EAAE,EAAE,CAAC;AACzB,QAAA,IAAI,WAAW,YAAY,OAAO,EAAE;YAClC,eAAe,GAAG,IAAI,CAAC;YACvB,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,YAAY,EAAE,CAAkB,CAAC;SACnE;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;YAAS;QACR,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,YAAY,EAAE,CAAC;SAChB;KACF;AACH;;MC3Ba,WAAW,CAAA;IACf,OAAO,sBAAsB,CAAC,OAA2B,EAAA;QAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,OAAO,CAAC,MAAM,EAAE,CAAC;SAClB;AAED,QAAA,kBAAkB,CAAC,MACjB,OAAO,CAAC,sBAAsB,CAAC;AAC7B,YAAA,OAAO,EAAE;gBACP,cAAc;AACd,gBAAA,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;AACnE,gBAAA,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE;AAC1B,aAAA;AACF,SAAA,CAAC,CAAC,iBAAiB,EAAE,CACvB,CAAC;QAEF,WAAW,CAAC,aAAa,EAAE,CAAC;QAE5B,OAAO;AACL,YAAA,IAAI,KAAK,GAAA;AACP,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC9B;AACD,YAAA,IAAI,UAAU,GAAA;AACZ,gBAAA,OAAO,OAAO,CAAC;aAChB;SACF,CAAC;KACH;AAEO,IAAA,OAAO,aAAa,GAAA;QAC1B,WAAW,CAAC,cAAc,EAAE,CAAC;QAC7B,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;KAC9D;AAEO,IAAA,OAAO,YAAY,GAAA;QACzB,OAAO,CAAC,oBAAoB,EAAE,CAAC;AAC/B,QAAA,OAAO,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,6BAA6B,EAAE,EAAE;AACxF,YAAA,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;AACrC,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,OAAO,cAAc,CAAC,QAAQ,GAAG,UAAU,EAAA;QACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAIC,kBAAiB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7C,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACjC;AACF;;AC9DD;;AAEG;;;;"}
|
package/fesm2022/ngxs-store.mjs
CHANGED
|
@@ -2131,13 +2131,37 @@ function withNgxsDevelopmentOptions(options) {
|
|
|
2131
2131
|
]);
|
|
2132
2132
|
}
|
|
2133
2133
|
|
|
2134
|
+
function getMissingMetaDataError(selector, context = {}) {
|
|
2135
|
+
const metadata = _getSelectorMetadata(selector) || _getStoreMetadata(selector);
|
|
2136
|
+
if (!metadata) {
|
|
2137
|
+
return new Error(`${context.prefix}The value provided as the ${context.noun} is not a valid selector.`);
|
|
2138
|
+
}
|
|
2139
|
+
return null;
|
|
2140
|
+
}
|
|
2134
2141
|
function ensureValidSelector(selector, context = {}) {
|
|
2135
2142
|
const noun = context.noun || 'selector';
|
|
2136
2143
|
const prefix = context.prefix ? context.prefix + ': ' : '';
|
|
2137
2144
|
ensureValueProvided(selector, { noun, prefix: context.prefix });
|
|
2138
|
-
const
|
|
2139
|
-
if (
|
|
2140
|
-
|
|
2145
|
+
const error = getMissingMetaDataError(selector, { noun, prefix });
|
|
2146
|
+
if (error) {
|
|
2147
|
+
// If we have used this utility within a state class, we may be
|
|
2148
|
+
// before the @State or @Selector decorators have been applied.
|
|
2149
|
+
// wait until the next microtask to verify.
|
|
2150
|
+
// Theoretically this situation is only encountered when the javascript
|
|
2151
|
+
// files are being loaded and we are outside the angular zone.
|
|
2152
|
+
if (!NgZone.isInAngularZone()) {
|
|
2153
|
+
Promise.resolve().then(() => {
|
|
2154
|
+
const errorAgain = getMissingMetaDataError(selector, { noun, prefix });
|
|
2155
|
+
if (errorAgain) {
|
|
2156
|
+
// Throw the originally captured error so that the stack trace shows the
|
|
2157
|
+
// original utility call site.
|
|
2158
|
+
console.error(error);
|
|
2159
|
+
}
|
|
2160
|
+
});
|
|
2161
|
+
}
|
|
2162
|
+
else {
|
|
2163
|
+
throw error;
|
|
2164
|
+
}
|
|
2141
2165
|
}
|
|
2142
2166
|
}
|
|
2143
2167
|
function ensureValueProvided(value, context = {}) {
|