@ngxs/store 19.0.0-dev.master-179a5bb → 19.0.0-dev.master-66f9d76
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.
|
@@ -4,7 +4,7 @@ import { ɵgetDOM as _getDOM, BrowserModule, ɵBrowserDomAdapter as _BrowserDomA
|
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { destroyPlatform, VERSION, createPlatform, Component, NgModule, ApplicationRef, provideEnvironmentInitializer, inject, DestroyRef, Injectable } from '@angular/core';
|
|
6
6
|
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
|
|
7
|
-
import { NgxsModule, Store, Actions } from '@ngxs/store';
|
|
7
|
+
import { NgxsModule, Store, Actions, ActionStatus } from '@ngxs/store';
|
|
8
8
|
import { ReplaySubject, Subject, takeUntil } from 'rxjs';
|
|
9
9
|
|
|
10
10
|
function createRootElement() {
|
|
@@ -230,18 +230,18 @@ class NgxsActionCollector {
|
|
|
230
230
|
this._actions$.pipe(takeUntil(this._destroyed$), takeUntil(this._stopped$)).subscribe({
|
|
231
231
|
next: (ctx) => {
|
|
232
232
|
switch (ctx?.status) {
|
|
233
|
-
case
|
|
233
|
+
case ActionStatus.Dispatched:
|
|
234
234
|
this.dispatched.push(ctx.action);
|
|
235
235
|
break;
|
|
236
|
-
case
|
|
236
|
+
case ActionStatus.Successful:
|
|
237
237
|
this.successful.push(ctx.action);
|
|
238
238
|
this.completed.push(ctx.action);
|
|
239
239
|
break;
|
|
240
|
-
case
|
|
240
|
+
case ActionStatus.Errored:
|
|
241
241
|
this.errored.push(ctx.action);
|
|
242
242
|
this.completed.push(ctx.action);
|
|
243
243
|
break;
|
|
244
|
-
case
|
|
244
|
+
case ActionStatus.Canceled:
|
|
245
245
|
this.cancelled.push(ctx.action);
|
|
246
246
|
this.completed.push(ctx.action);
|
|
247
247
|
break;
|
|
@@ -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/skip-console-logging.ts","../../../packages/store/internals/testing/src/ngxs.setup.ts","../../../packages/store/internals/testing/src/action-collector.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, 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","import {\n DestroyRef,\n EnvironmentProviders,\n inject,\n Injectable,\n provideEnvironmentInitializer\n} from '@angular/core';\nimport { Actions, ActionStatus, type ActionContext } from '@ngxs/store';\nimport { ReplaySubject, Subject, takeUntil } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsActionCollector {\n /**\n * Including this in your providers will\n * set up the the action collector to start collecting actions\n * from before NGXS initializes\n * @example\n * // In your providers declaration for your tests:\n * {\n * providers: [\n * NgxsActionCollector.collectActions(),\n * provideStore([MyState]),\n * ],\n * // ...\n * }\n * // and then in your test:\n * const actionCollector = TestBed.inject(NgxsActionCollector);\n * const actionsDispatched = actionCollector.dispatched;\n * const action = actionsDispatched.find(\n * (item) => item instanceof MyAction\n * );\n * expect(action).toBeDefined();\n * @returns An environment initializer that starts the collector immediately\n */\n static collectActions(): EnvironmentProviders {\n return provideEnvironmentInitializer(() => {\n inject(NgxsActionCollector).start();\n });\n }\n\n private _destroyed$ = new ReplaySubject<void>(1);\n private _stopped$ = new Subject<void>();\n private _started = false;\n\n readonly dispatched: any[] = [];\n readonly completed: any[] = [];\n readonly successful: any[] = [];\n readonly errored: any[] = [];\n readonly cancelled: any[] = [];\n\n private _actions$ = inject(Actions);\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this._destroyed$.next());\n }\n\n start() {\n if (this._started) {\n return;\n }\n this._started = true;\n this._actions$.pipe(takeUntil(this._destroyed$), takeUntil(this._stopped$)).subscribe({\n next: (ctx: ActionContext) => {\n switch (ctx?.status) {\n case ActionStatus.Dispatched:\n this.dispatched.push(ctx.action);\n break;\n case ActionStatus.Successful:\n this.successful.push(ctx.action);\n this.completed.push(ctx.action);\n break;\n case ActionStatus.Errored:\n this.errored.push(ctx.action);\n this.completed.push(ctx.action);\n break;\n case ActionStatus.Canceled:\n this.cancelled.push(ctx.action);\n this.completed.push(ctx.action);\n break;\n default:\n break;\n }\n },\n complete: () => {\n this._started = false;\n },\n error: () => {\n this._started = false;\n }\n });\n }\n\n reset() {\n function clearArray(array: any[]) {\n array.splice(0, array.length);\n }\n clearArray(this.dispatched);\n clearArray(this.completed);\n clearArray(this.successful);\n clearArray(this.errored);\n clearArray(this.cancelled);\n }\n\n stop() {\n this._stopped$.next();\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;IACzC,MAAM,IAAI,GAAGA,OAAM,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC;AACzD,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACjC;AAEA,SAAS,iBAAiB,GAAA;AACxB,IAAA,MAAM,IAAI,GAAY,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE;AACxE,IAAA,IAAI;AACF,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;IAC/B,MAAM;AACV;AAEA,SAAS,2CAA2C,CAAC,QAAgB,EAAA;AACnE,IAAA,eAAe,EAAE;IACjB,kBAAkB,CAAC,QAAQ,CAAC;AAC5B,IAAA,iBAAiB,EAAE;AACrB;AAEA;AACA;AACA;AACA,SAAS,+BAA+B,GAAA;AACtC,IAAA,iBAAiB,EAAE;AACnB,IAAA,eAAe,EAAE;AACjB,IAAA,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK;;AAE9B,IAAA,IAAI,OAAO,GAAG,EAAE,EAAE;QAChB,cAAc,CAAC,OAAO,CAAC;;AAE3B;AAEA,SAAS,kBAAkB,CAAC,QAAgB,EAAA;IAC1C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC;AACnD;AAEM,SAAU,aAAa,CAAC,EAA0C,EAAA;IACtE,IAAI,OAAO,GAAwB,IAAI;IACvC,IAAI,MAAM,GAAoC,IAAI;IAClD,IAAI,uBAAuB,GAAyB,IAAI;AAExD,IAAA,MAAM,eAAe,GAAG,EAAE,CAAC,MAAM,KAAK,CAAC;IAEvC,IAAI,eAAe,EAAE;QACnB,uBAAuB,GAAG,IAAI,OAAO,CAAO,CAAC,QAAQ,EAAE,OAAO,KAAI;YAChE,OAAO,GAAG,QAAQ;YAClB,MAAM,GAAG,OAAO;AAClB,SAAC,CAAC;;IAGJ,OAAO,eAAe,sBAAsB,GAAA;AAC1C,QAAA,IAAI;YACF,MAAM,QAAQ,GAAG,GAAG;YACpB,2CAA2C,CAAC,QAAQ,CAAC;YAErD,IAAI,eAAe,EAAE;AACnB,gBAAA,MAAM,EAAE,CAAC,CAAC,KAAa,KAAI;oBACzB,IAAI,KAAK,EAAE;wBACT,MAAO,CAAC,KAAK,CAAC;;yBACT;AACL,wBAAA,OAAQ,EAAE;;AAEd,iBAAC,CAAC;AACF,gBAAA,MAAM,uBAAwB;;iBACzB;gBACL,MAAM,EAAE,EAAE;;;gBAEJ;AACR,YAAA,+BAA+B,EAAE;;AAErC,KAAC;AACH;;MCtEa,iBAAiB,CAAA;AACrB,IAAA,QAAQ;AACR,IAAA,eAAe;iIAFX,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,oEAFlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAED,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCGY,cAAc,CAAA;IAClB,OAAO,aAAa,CAAC,GAAmB,EAAA;AAC7C,QAAA,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC;;iIAFvB,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAd,cAAc,EAAA,OAAA,EAAA,CAFf,aAAa,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAE/B,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,YAFf,aAAa,CAAA,EAAA,CAAA,CAAA;;2FAEZ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,aAAa,EAAE,iBAAiB;AAC3C,iBAAA;;;ACJK,SAAU,WAAW,CAAC,OAAe,EAAA;AACzC,IAAA,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1D;SAEgB,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;AACrC,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;AACtC,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;AACvC,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;AACtC,SAAC;KACF;AACD,IAAA,SAAS,YAAY,GAAA;AACnB,QAAA,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;;IAEhD,IAAI,eAAe,GAAG,KAAK;AAC3B,IAAA,IAAI;AACF,QAAA,MAAM,WAAW,GAAG,EAAE,EAAE;AACxB,QAAA,IAAI,WAAW,YAAY,OAAO,EAAE;YAClC,eAAe,GAAG,IAAI;YACtB,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,YAAY,EAAE,CAAkB;;AAEnE,QAAA,OAAO,WAAW;;YACV;QACR,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,YAAY,EAAE;;;AAGpB;;MC3Ba,WAAW,CAAA;IACf,OAAO,sBAAsB,CAAC,OAA2B,EAAA;QAC9D,IAAI,CAAC,YAAY,EAAE;AAEnB,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,OAAO,CAAC,MAAM,EAAE;;AAGlB,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;AACF,SAAA,CAAC,CAAC,iBAAiB,EAAE,CACvB;QAED,WAAW,CAAC,aAAa,EAAE;QAE3B,OAAO;AACL,YAAA,IAAI,KAAK,GAAA;AACP,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7B;AACD,YAAA,IAAI,UAAU,GAAA;AACZ,gBAAA,OAAO,OAAO;;SAEjB;;AAGK,IAAA,OAAO,aAAa,GAAA;QAC1B,WAAW,CAAC,cAAc,EAAE;QAC5B,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;;AAGtD,IAAA,OAAO,YAAY,GAAA;QACzB,OAAO,CAAC,oBAAoB,EAAE;AAC9B,QAAA,OAAO,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,6BAA6B,EAAE,EAAE;AACxF,YAAA,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI;AACnC,SAAA,CAAC;;AAGI,IAAA,OAAO,cAAc,CAAC,QAAQ,GAAG,UAAU,EAAA;QACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACzC,QAAA,MAAM,OAAO,GAAG,IAAIC,kBAAiB,EAAE;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC5C,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;AAElC;;MCnDY,mBAAmB,CAAA;AAC9B;;;;;;;;;;;;;;;;;;;;;AAqBG;AACH,IAAA,OAAO,cAAc,GAAA;QACnB,OAAO,6BAA6B,CAAC,MAAK;AACxC,YAAA,MAAM,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE;AACrC,SAAC,CAAC;;AAeJ,IAAA,WAAA,GAAA;AAZQ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,aAAa,CAAO,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;QAC/B,IAAQ,CAAA,QAAA,GAAG,KAAK;QAEf,IAAU,CAAA,UAAA,GAAU,EAAE;QACtB,IAAS,CAAA,SAAA,GAAU,EAAE;QACrB,IAAU,CAAA,UAAA,GAAU,EAAE;QACtB,IAAO,CAAA,OAAA,GAAU,EAAE;QACnB,IAAS,CAAA,SAAA,GAAU,EAAE;AAEtB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;AAGjC,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;;IAG7D,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;;AAEF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,YAAA,IAAI,EAAE,CAAC,GAAkB,KAAI;AAC3B,gBAAA,QAAQ,GAAG,EAAE,MAAM;AACjB,oBAAA,KAAA,YAAA;wBACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;wBAChC;AACF,oBAAA,KAAA,YAAA;wBACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;wBAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC/B;AACF,oBAAA,KAAA,SAAA;wBACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC/B;AACF,oBAAA,KAAA,UAAA;wBACE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;wBAC/B;AACF,oBAAA;wBACE;;aAEL;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;aACtB;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAExB,SAAA,CAAC;;IAGJ,KAAK,GAAA;QACH,SAAS,UAAU,CAAC,KAAY,EAAA;YAC9B,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;;AAE/B,QAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3B,QAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1B,QAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3B,QAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,QAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;;IAG5B,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;iIA7FZ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA,CAAA;;2FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACVlC;;AAEG;;;;"}
|
|
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/action-collector.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, 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","import {\n DestroyRef,\n EnvironmentProviders,\n inject,\n Injectable,\n provideEnvironmentInitializer\n} from '@angular/core';\nimport { Actions, ActionStatus, type ActionContext } from '@ngxs/store';\nimport { ReplaySubject, Subject, takeUntil } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxsActionCollector {\n /**\n * Including this in your providers will\n * set up the the action collector to start collecting actions\n * from before NGXS initializes\n * @example\n * // In your providers declaration for your tests:\n * {\n * providers: [\n * NgxsActionCollector.collectActions(),\n * provideStore([MyState]),\n * ],\n * // ...\n * }\n * // and then in your test:\n * const actionCollector = TestBed.inject(NgxsActionCollector);\n * const actionsDispatched = actionCollector.dispatched;\n * const action = actionsDispatched.find(\n * (item) => item instanceof MyAction\n * );\n * expect(action).toBeDefined();\n * @returns An environment initializer that starts the collector immediately\n */\n static collectActions(): EnvironmentProviders {\n return provideEnvironmentInitializer(() => {\n inject(NgxsActionCollector).start();\n });\n }\n\n private _destroyed$ = new ReplaySubject<void>(1);\n private _stopped$ = new Subject<void>();\n private _started = false;\n\n readonly dispatched: any[] = [];\n readonly completed: any[] = [];\n readonly successful: any[] = [];\n readonly errored: any[] = [];\n readonly cancelled: any[] = [];\n\n private _actions$ = inject(Actions);\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this._destroyed$.next());\n }\n\n start() {\n if (this._started) {\n return;\n }\n this._started = true;\n this._actions$.pipe(takeUntil(this._destroyed$), takeUntil(this._stopped$)).subscribe({\n next: (ctx: ActionContext) => {\n switch (ctx?.status) {\n case ActionStatus.Dispatched:\n this.dispatched.push(ctx.action);\n break;\n case ActionStatus.Successful:\n this.successful.push(ctx.action);\n this.completed.push(ctx.action);\n break;\n case ActionStatus.Errored:\n this.errored.push(ctx.action);\n this.completed.push(ctx.action);\n break;\n case ActionStatus.Canceled:\n this.cancelled.push(ctx.action);\n this.completed.push(ctx.action);\n break;\n default:\n break;\n }\n },\n complete: () => {\n this._started = false;\n },\n error: () => {\n this._started = false;\n }\n });\n }\n\n reset() {\n function clearArray(array: any[]) {\n array.splice(0, array.length);\n }\n clearArray(this.dispatched);\n clearArray(this.completed);\n clearArray(this.successful);\n clearArray(this.errored);\n clearArray(this.cancelled);\n }\n\n stop() {\n this._stopped$.next();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getDOM","BrowserDomAdapter"],"mappings":"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"}
|
package/fesm2022/ngxs-store.mjs
CHANGED
|
@@ -173,6 +173,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
173
173
|
args: [{ providedIn: 'root' }]
|
|
174
174
|
}] });
|
|
175
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Status of a dispatched action
|
|
178
|
+
*/
|
|
179
|
+
var ActionStatus;
|
|
180
|
+
(function (ActionStatus) {
|
|
181
|
+
ActionStatus["Dispatched"] = "DISPATCHED";
|
|
182
|
+
ActionStatus["Successful"] = "SUCCESSFUL";
|
|
183
|
+
ActionStatus["Canceled"] = "CANCELED";
|
|
184
|
+
ActionStatus["Errored"] = "ERRORED";
|
|
185
|
+
})(ActionStatus || (ActionStatus = {}));
|
|
176
186
|
/**
|
|
177
187
|
* Internal Action stream that is emitted anytime an action is dispatched.
|
|
178
188
|
*/
|
|
@@ -183,7 +193,7 @@ class InternalActions extends _OrderedSubject {
|
|
|
183
193
|
// any logic that must be executed before action handlers are invoked (i.e., cancelation).
|
|
184
194
|
this.dispatched$ = new Subject();
|
|
185
195
|
this.subscribe(ctx => {
|
|
186
|
-
if (ctx.status ===
|
|
196
|
+
if (ctx.status === ActionStatus.Dispatched) {
|
|
187
197
|
this.dispatched$.next(ctx);
|
|
188
198
|
}
|
|
189
199
|
});
|
|
@@ -280,22 +290,22 @@ class InternalDispatcher {
|
|
|
280
290
|
}
|
|
281
291
|
const actionResult$ = this.getActionResultStream(nextAction);
|
|
282
292
|
actionResult$.subscribe(ctx => this._actions.next(ctx));
|
|
283
|
-
this._actions.next({ action: nextAction, status:
|
|
293
|
+
this._actions.next({ action: nextAction, status: ActionStatus.Dispatched });
|
|
284
294
|
return this.createDispatchObservable(actionResult$);
|
|
285
295
|
}
|
|
286
296
|
])(prevState, action).pipe(shareReplay());
|
|
287
297
|
}
|
|
288
298
|
getActionResultStream(action) {
|
|
289
|
-
return this._actionResults.pipe(filter((ctx) => ctx.action === action && ctx.status !==
|
|
299
|
+
return this._actionResults.pipe(filter((ctx) => ctx.action === action && ctx.status !== ActionStatus.Dispatched), take(1), shareReplay());
|
|
290
300
|
}
|
|
291
301
|
createDispatchObservable(actionResult$) {
|
|
292
302
|
return actionResult$.pipe(mergeMap((ctx) => {
|
|
293
303
|
switch (ctx.status) {
|
|
294
|
-
case
|
|
304
|
+
case ActionStatus.Successful:
|
|
295
305
|
// The `createDispatchObservable` function should return the
|
|
296
306
|
// state, as its result is used by plugins.
|
|
297
307
|
return of(this._stateStream.getValue());
|
|
298
|
-
case
|
|
308
|
+
case ActionStatus.Errored:
|
|
299
309
|
throw ctx.error;
|
|
300
310
|
default:
|
|
301
311
|
// Once dispatched or canceled, we complete it immediately because
|
|
@@ -1034,7 +1044,7 @@ function ofAction(...allowedTypes) {
|
|
|
1034
1044
|
* This will ONLY grab actions that have just been dispatched
|
|
1035
1045
|
*/
|
|
1036
1046
|
function ofActionDispatched(...allowedTypes) {
|
|
1037
|
-
return ofActionOperator(allowedTypes, [
|
|
1047
|
+
return ofActionOperator(allowedTypes, [ActionStatus.Dispatched]);
|
|
1038
1048
|
}
|
|
1039
1049
|
/**
|
|
1040
1050
|
* RxJS operator for selecting out specific actions.
|
|
@@ -1042,7 +1052,7 @@ function ofActionDispatched(...allowedTypes) {
|
|
|
1042
1052
|
* This will ONLY grab actions that have just been successfully completed
|
|
1043
1053
|
*/
|
|
1044
1054
|
function ofActionSuccessful(...allowedTypes) {
|
|
1045
|
-
return ofActionOperator(allowedTypes, [
|
|
1055
|
+
return ofActionOperator(allowedTypes, [ActionStatus.Successful]);
|
|
1046
1056
|
}
|
|
1047
1057
|
/**
|
|
1048
1058
|
* RxJS operator for selecting out specific actions.
|
|
@@ -1050,7 +1060,7 @@ function ofActionSuccessful(...allowedTypes) {
|
|
|
1050
1060
|
* This will ONLY grab actions that have just been canceled
|
|
1051
1061
|
*/
|
|
1052
1062
|
function ofActionCanceled(...allowedTypes) {
|
|
1053
|
-
return ofActionOperator(allowedTypes, [
|
|
1063
|
+
return ofActionOperator(allowedTypes, [ActionStatus.Canceled]);
|
|
1054
1064
|
}
|
|
1055
1065
|
/**
|
|
1056
1066
|
* RxJS operator for selecting out specific actions.
|
|
@@ -1059,9 +1069,9 @@ function ofActionCanceled(...allowedTypes) {
|
|
|
1059
1069
|
*/
|
|
1060
1070
|
function ofActionCompleted(...allowedTypes) {
|
|
1061
1071
|
const allowedStatuses = [
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1072
|
+
ActionStatus.Successful,
|
|
1073
|
+
ActionStatus.Canceled,
|
|
1074
|
+
ActionStatus.Errored
|
|
1065
1075
|
];
|
|
1066
1076
|
return ofActionOperator(allowedTypes, allowedStatuses, mapActionResult);
|
|
1067
1077
|
}
|
|
@@ -1071,7 +1081,7 @@ function ofActionCompleted(...allowedTypes) {
|
|
|
1071
1081
|
* This will ONLY grab actions that have just thrown an error
|
|
1072
1082
|
*/
|
|
1073
1083
|
function ofActionErrored(...allowedTypes) {
|
|
1074
|
-
return ofActionOperator(allowedTypes, [
|
|
1084
|
+
return ofActionOperator(allowedTypes, [ActionStatus.Errored], mapActionResult);
|
|
1075
1085
|
}
|
|
1076
1086
|
function ofActionOperator(allowedTypes, statuses,
|
|
1077
1087
|
// This could have been written as
|
|
@@ -1099,8 +1109,8 @@ function mapActionResult() {
|
|
|
1099
1109
|
return {
|
|
1100
1110
|
action,
|
|
1101
1111
|
result: {
|
|
1102
|
-
successful:
|
|
1103
|
-
canceled:
|
|
1112
|
+
successful: ActionStatus.Successful === status,
|
|
1113
|
+
canceled: ActionStatus.Canceled === status,
|
|
1104
1114
|
error
|
|
1105
1115
|
}
|
|
1106
1116
|
};
|
|
@@ -1249,15 +1259,15 @@ class StateFactory {
|
|
|
1249
1259
|
}
|
|
1250
1260
|
connectActionHandlers() {
|
|
1251
1261
|
this._actionsSubscription = this._actions
|
|
1252
|
-
.pipe(filter((ctx) => ctx.status ===
|
|
1262
|
+
.pipe(filter((ctx) => ctx.status === ActionStatus.Dispatched), mergeMap(ctx => {
|
|
1253
1263
|
const action = ctx.action;
|
|
1254
|
-
return this.invokeActions(action).pipe(map(() => ({ action, status:
|
|
1264
|
+
return this.invokeActions(action).pipe(map(() => ({ action, status: ActionStatus.Successful })), defaultIfEmpty({ action, status: ActionStatus.Canceled }), catchError(error => {
|
|
1255
1265
|
const ngxsUnhandledErrorHandler = (this._ngxsUnhandledErrorHandler ||=
|
|
1256
1266
|
this._injector.get(NgxsUnhandledErrorHandler));
|
|
1257
1267
|
const handleableError = assignUnhandledCallback(error, () => ngxsUnhandledErrorHandler.handleError(error, { action }));
|
|
1258
1268
|
return of({
|
|
1259
1269
|
action,
|
|
1260
|
-
status:
|
|
1270
|
+
status: ActionStatus.Errored,
|
|
1261
1271
|
error: handleableError
|
|
1262
1272
|
});
|
|
1263
1273
|
}));
|
|
@@ -2196,7 +2206,7 @@ function withNgxsPendingTasks() {
|
|
|
2196
2206
|
});
|
|
2197
2207
|
const subscription = actions$
|
|
2198
2208
|
.pipe(filter(context => {
|
|
2199
|
-
if (context.status ===
|
|
2209
|
+
if (context.status === ActionStatus.Dispatched) {
|
|
2200
2210
|
executedActions.add(context.action);
|
|
2201
2211
|
removeTask ||= pendingTasks.add();
|
|
2202
2212
|
return false;
|
|
@@ -2429,5 +2439,5 @@ function ɵprovideNgxsInternalStateTokens() {
|
|
|
2429
2439
|
* Generated bundle index. Do not edit.
|
|
2430
2440
|
*/
|
|
2431
2441
|
|
|
2432
|
-
export { Action, Actions, NgxsConfig, NgxsDevelopmentModule, NgxsModule, NgxsSimpleChange, NgxsUnhandledActionsLogger, NgxsUnhandledErrorHandler, Select, Selector, SelectorOptions, State, Store, createDispatchMap, createModelSelector, createPickSelector, createPropertySelectors, createSelectMap, createSelector, dispatch, lazyProvider, ofAction, ofActionCanceled, ofActionCompleted, ofActionDispatched, ofActionErrored, ofActionSuccessful, provideStates, provideStore, select, withNgxsDevelopmentOptions, withNgxsPendingTasks, withNgxsPlugin, withNgxsPreboot, NgxsFeatureModule as ɵNgxsFeatureModule, NgxsRootModule as ɵNgxsRootModule, ɵprovideNgxsInternalStateTokens };
|
|
2442
|
+
export { Action, ActionStatus, Actions, NgxsConfig, NgxsDevelopmentModule, NgxsModule, NgxsSimpleChange, NgxsUnhandledActionsLogger, NgxsUnhandledErrorHandler, Select, Selector, SelectorOptions, State, Store, createDispatchMap, createModelSelector, createPickSelector, createPropertySelectors, createSelectMap, createSelector, dispatch, lazyProvider, ofAction, ofActionCanceled, ofActionCompleted, ofActionDispatched, ofActionErrored, ofActionSuccessful, provideStates, provideStore, select, withNgxsDevelopmentOptions, withNgxsPendingTasks, withNgxsPlugin, withNgxsPreboot, NgxsFeatureModule as ɵNgxsFeatureModule, NgxsRootModule as ɵNgxsRootModule, ɵprovideNgxsInternalStateTokens };
|
|
2433
2443
|
//# sourceMappingURL=ngxs-store.mjs.map
|