@ngxs/router-plugin 3.8.2 → 18.0.0-dev.master-56d8014

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2022/internals/index.mjs +2 -0
  2. package/esm2022/internals/ngxs-router-plugin-internals.mjs +5 -0
  3. package/esm2022/internals/symbols.mjs +10 -0
  4. package/esm2022/src/public_api.mjs +5 -0
  5. package/esm2022/src/router.actions.mjs +85 -0
  6. package/esm2022/src/router.module.mjs +45 -0
  7. package/esm2022/src/router.state.mjs +231 -0
  8. package/esm2022/src/serializer.mjs +33 -0
  9. package/fesm2022/ngxs-router-plugin-internals.mjs +17 -0
  10. package/fesm2022/ngxs-router-plugin-internals.mjs.map +1 -0
  11. package/{fesm2015/ngxs-router-plugin.js → fesm2022/ngxs-router-plugin.mjs} +77 -62
  12. package/fesm2022/ngxs-router-plugin.mjs.map +1 -0
  13. package/internals/index.d.ts +1 -0
  14. package/internals/symbols.d.ts +11 -0
  15. package/package.json +26 -14
  16. package/src/public_api.d.ts +3 -3
  17. package/src/router.actions.d.ts +1 -1
  18. package/src/router.module.d.ts +3 -2
  19. package/src/router.state.d.ts +4 -3
  20. package/bundles/ngxs-router-plugin.umd.js +0 -903
  21. package/bundles/ngxs-router-plugin.umd.js.map +0 -1
  22. package/esm2015/src/public_api.js +0 -5
  23. package/esm2015/src/router.actions.js +0 -85
  24. package/esm2015/src/router.module.js +0 -33
  25. package/esm2015/src/router.state.js +0 -222
  26. package/esm2015/src/serializer.js +0 -32
  27. package/esm2015/src/symbols.js +0 -9
  28. package/fesm2015/ngxs-router-plugin.js.map +0 -1
  29. package/ngxs-router-plugin.d.ts +0 -5
  30. package/src/symbols.d.ts +0 -11
  31. /package/{esm2015/index.js → esm2022/index.mjs} +0 -0
  32. /package/{esm2015/ngxs-router-plugin.js → esm2022/ngxs-router-plugin.mjs} +0 -0
@@ -1,23 +1,25 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, NgZone, Injector, Injectable, NgModule } from '@angular/core';
2
+ import { NgZone, Injector, Injectable, NgModule, makeEnvironmentProviders } from '@angular/core';
3
3
  import * as i1 from '@ngxs/store';
4
- import { Action, Selector, State, Store, NgxsModule } from '@ngxs/store';
4
+ import { StateToken, Action, Selector, State, Store, NgxsModule, provideStates } from '@ngxs/store';
5
+ import { ɵNGXS_ROUTER_PLUGIN_OPTIONS as _NGXS_ROUTER_PLUGIN_OPTIONS, ɵUSER_OPTIONS as _USER_OPTIONS, ɵcreateRouterPluginOptions as _createRouterPluginOptions } from '@ngxs/router-plugin/internals';
5
6
  import { __decorate, __metadata } from 'tslib';
6
7
  import * as i2 from '@angular/router';
7
8
  import { NavigationStart, RoutesRecognized, ResolveEnd, NavigationCancel, NavigationError, NavigationEnd, Router } from '@angular/router';
8
- import { Subscription } from 'rxjs';
9
+ import { ReplaySubject } from 'rxjs';
10
+ import { takeUntil } from 'rxjs/operators';
9
11
 
10
12
  /**
11
13
  * Public event api of the router
12
14
  */
13
15
  class Navigate {
16
+ static { this.type = '[Router] Navigate'; }
14
17
  constructor(path, queryParams, extras) {
15
18
  this.path = path;
16
19
  this.queryParams = queryParams;
17
20
  this.extras = extras;
18
21
  }
19
22
  }
20
- Navigate.type = '[Router] Navigate';
21
23
  /**
22
24
  *
23
25
  * Angular Routers internal state events
@@ -27,28 +29,29 @@ Navigate.type = '[Router] Navigate';
27
29
  * An action dispatched when the router starts the navigation.
28
30
  */
29
31
  class RouterRequest {
32
+ static { this.type = '[Router] RouterRequest'; }
30
33
  constructor(routerState, event, trigger = 'none') {
31
34
  this.routerState = routerState;
32
35
  this.event = event;
33
36
  this.trigger = trigger;
34
37
  }
35
38
  }
36
- RouterRequest.type = '[Router] RouterRequest';
37
39
  /**
38
40
  * An action dispatched when the router navigates.
39
41
  */
40
42
  class RouterNavigation {
43
+ static { this.type = '[Router] RouterNavigation'; }
41
44
  constructor(routerState, event, trigger = 'none') {
42
45
  this.routerState = routerState;
43
46
  this.event = event;
44
47
  this.trigger = trigger;
45
48
  }
46
49
  }
47
- RouterNavigation.type = '[Router] RouterNavigation';
48
50
  /**
49
51
  * An action dispatched when the router cancel navigation.
50
52
  */
51
53
  class RouterCancel {
54
+ static { this.type = '[Router] RouterCancel'; }
52
55
  constructor(routerState, storeState, event, trigger = 'none') {
53
56
  this.routerState = routerState;
54
57
  this.storeState = storeState;
@@ -56,11 +59,11 @@ class RouterCancel {
56
59
  this.trigger = trigger;
57
60
  }
58
61
  }
59
- RouterCancel.type = '[Router] RouterCancel';
60
62
  /**
61
63
  * An action dispatched when the router errors.
62
64
  */
63
65
  class RouterError {
66
+ static { this.type = '[Router] RouterError'; }
64
67
  constructor(routerState, storeState, event, trigger = 'none') {
65
68
  this.routerState = routerState;
66
69
  this.storeState = storeState;
@@ -68,29 +71,28 @@ class RouterError {
68
71
  this.trigger = trigger;
69
72
  }
70
73
  }
71
- RouterError.type = '[Router] RouterError';
72
74
  /**
73
75
  * An action dispatched when the `ResolveEnd` event is triggered.
74
76
  */
75
77
  class RouterDataResolved {
78
+ static { this.type = '[Router] RouterDataResolved'; }
76
79
  constructor(routerState, event, trigger = 'none') {
77
80
  this.routerState = routerState;
78
81
  this.event = event;
79
82
  this.trigger = trigger;
80
83
  }
81
84
  }
82
- RouterDataResolved.type = '[Router] RouterDataResolved';
83
85
  /**
84
86
  * An action dispatched when the router navigation has been finished successfully.
85
87
  */
86
88
  class RouterNavigated {
89
+ static { this.type = '[Router] RouterNavigated'; }
87
90
  constructor(routerState, event, trigger = 'none') {
88
91
  this.routerState = routerState;
89
92
  this.event = event;
90
93
  this.trigger = trigger;
91
94
  }
92
95
  }
93
- RouterNavigated.type = '[Router] RouterNavigated';
94
96
 
95
97
  class RouterStateSerializer {
96
98
  }
@@ -105,6 +107,7 @@ class DefaultRouterStateSerializer {
105
107
  const children = route.children.map(c => this.serializeRoute(c));
106
108
  return {
107
109
  url: route.url,
110
+ title: route.title,
108
111
  params: route.params,
109
112
  queryParams: route.queryParams,
110
113
  fragment: route.fragment,
@@ -124,16 +127,19 @@ class DefaultRouterStateSerializer {
124
127
  }
125
128
  }
126
129
 
127
- const USER_OPTIONS = new InjectionToken('USER_OPTIONS', { providedIn: 'root', factory: () => undefined });
128
- const NGXS_ROUTER_PLUGIN_OPTIONS = new InjectionToken('NGXS_ROUTER_PLUGIN_OPTIONS', { providedIn: 'root', factory: () => ({}) });
129
- function createRouterPluginOptions(options) {
130
- return {
131
- navigationActionTiming: (options && options.navigationActionTiming) || 1 /* PreActivation */
132
- };
133
- }
134
-
135
- var RouterState_1;
136
- let RouterState = RouterState_1 = class RouterState {
130
+ // NGXS doesn't permit untyped selectors, such as `select(RouterState)`,
131
+ // as the `RouterState` class itself lacks type information. Therefore,
132
+ // the following state token must replace `RouterState`.
133
+ const ROUTER_STATE_TOKEN = new StateToken('router');
134
+ let RouterState = class RouterState {
135
+ static state(state) {
136
+ // The `state` is optional if the selector is invoked before the router
137
+ // state is registered in NGXS.
138
+ return state?.state;
139
+ }
140
+ static url(state) {
141
+ return state?.state?.url;
142
+ }
137
143
  constructor(_store, _router, _serializer, _ngZone, injector) {
138
144
  this._store = _store;
139
145
  this._router = _router;
@@ -153,25 +159,22 @@ let RouterState = RouterState_1 = class RouterState {
153
159
  */
154
160
  this._storeState = null;
155
161
  this._lastEvent = null;
156
- this._subscription = new Subscription();
157
162
  this._options = null;
163
+ this._destroy$ = new ReplaySubject(1);
158
164
  // Note: do not use `@Inject` since it fails on lower versions of Angular with Jest
159
165
  // integration, it cannot resolve the token provider.
160
- this._options = injector.get(NGXS_ROUTER_PLUGIN_OPTIONS, null);
166
+ this._options = injector.get(_NGXS_ROUTER_PLUGIN_OPTIONS, null);
161
167
  this._setUpStoreListener();
162
168
  this._setUpRouterEventsListener();
163
169
  }
164
- static state(state) {
165
- return state && state.state;
166
- }
167
- static url(state) {
168
- return state && state.state && state.state.url;
169
- }
170
170
  ngOnDestroy() {
171
- this._subscription.unsubscribe();
171
+ this._destroy$.next();
172
172
  }
173
173
  navigate(_, action) {
174
- return this._ngZone.run(() => this._router.navigate(action.path, Object.assign({ queryParams: action.queryParams }, action.extras)));
174
+ return this._ngZone.run(() => this._router.navigate(action.path, {
175
+ queryParams: action.queryParams,
176
+ ...action.extras
177
+ }));
175
178
  }
176
179
  angularRouterAction(ctx, action) {
177
180
  ctx.setState({
@@ -181,16 +184,16 @@ let RouterState = RouterState_1 = class RouterState {
181
184
  });
182
185
  }
183
186
  _setUpStoreListener() {
184
- const subscription = this._store
185
- .select(RouterState_1)
186
- .subscribe((state) => {
187
+ const routerState$ = this._store
188
+ .select(ROUTER_STATE_TOKEN)
189
+ .pipe(takeUntil(this._destroy$));
190
+ routerState$.subscribe((state) => {
187
191
  this._navigateIfNeeded(state);
188
192
  });
189
- this._subscription.add(subscription);
190
193
  }
191
194
  _navigateIfNeeded(routerState) {
192
195
  if (routerState && routerState.trigger === 'devtools') {
193
- this._storeState = this._store.selectSnapshot(RouterState_1);
196
+ this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);
194
197
  }
195
198
  const canSkipNavigation = !this._storeState ||
196
199
  !this._storeState.state ||
@@ -201,15 +204,16 @@ let RouterState = RouterState_1 = class RouterState {
201
204
  if (canSkipNavigation) {
202
205
  return;
203
206
  }
204
- this._storeState = this._store.selectSnapshot(RouterState_1);
207
+ this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);
205
208
  this._trigger = 'store';
206
209
  this._ngZone.run(() => this._router.navigateByUrl(this._storeState.state.url));
207
210
  }
208
211
  _setUpRouterEventsListener() {
209
212
  const dispatchRouterNavigationLate = this._options != null &&
210
- this._options.navigationActionTiming === 2 /* PostActivation */;
213
+ this._options.navigationActionTiming === 2 /* NavigationActionTiming.PostActivation */;
211
214
  let lastRoutesRecognized;
212
- const subscription = this._router.events.subscribe(event => {
215
+ const events$ = this._router.events.pipe(takeUntil(this._destroy$));
216
+ events$.subscribe(event => {
213
217
  this._lastEvent = event;
214
218
  if (event instanceof NavigationStart) {
215
219
  this._navigationStart(event);
@@ -241,13 +245,12 @@ let RouterState = RouterState_1 = class RouterState {
241
245
  this._reset();
242
246
  }
243
247
  });
244
- this._subscription.add(subscription);
245
248
  }
246
249
  /** Reacts to `NavigationStart`. */
247
250
  _navigationStart(event) {
248
251
  this._routerState = this._serializer.serialize(this._router.routerState.snapshot);
249
252
  if (this._trigger !== 'none') {
250
- this._storeState = this._store.selectSnapshot(RouterState_1);
253
+ this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);
251
254
  this._dispatchRouterAction(new RouterRequest(this._routerState, event, this._trigger));
252
255
  }
253
256
  }
@@ -288,9 +291,9 @@ let RouterState = RouterState_1 = class RouterState {
288
291
  this._storeState = null;
289
292
  this._routerState = null;
290
293
  }
294
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RouterState, deps: [{ token: i1.Store }, { token: i2.Router }, { token: RouterStateSerializer }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
295
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RouterState }); }
291
296
  };
292
- /** @nocollapse */ RouterState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouterState, deps: [{ token: i1.Store }, { token: i2.Router }, { token: RouterStateSerializer }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
293
- /** @nocollapse */ RouterState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouterState });
294
297
  __decorate([
295
298
  Action(Navigate),
296
299
  __metadata("design:type", Function),
@@ -299,12 +302,12 @@ __decorate([
299
302
  ], RouterState.prototype, "navigate", null);
300
303
  __decorate([
301
304
  Action([
302
- RouterRequest,
303
- RouterNavigation,
304
- RouterError,
305
- RouterCancel,
306
- RouterDataResolved,
307
- RouterNavigated
305
+ (RouterRequest),
306
+ (RouterNavigation),
307
+ (RouterError),
308
+ (RouterCancel),
309
+ (RouterDataResolved),
310
+ (RouterNavigated)
308
311
  ]),
309
312
  __metadata("design:type", Function),
310
313
  __metadata("design:paramtypes", [Object, Object]),
@@ -322,9 +325,9 @@ __decorate([
322
325
  __metadata("design:paramtypes", [Object]),
323
326
  __metadata("design:returntype", Object)
324
327
  ], RouterState, "url", null);
325
- RouterState = RouterState_1 = __decorate([
328
+ RouterState = __decorate([
326
329
  State({
327
- name: 'router',
330
+ name: ROUTER_STATE_TOKEN,
328
331
  defaults: {
329
332
  state: undefined,
330
333
  navigationId: undefined,
@@ -337,35 +340,47 @@ RouterState = RouterState_1 = __decorate([
337
340
  NgZone,
338
341
  Injector])
339
342
  ], RouterState);
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouterState, decorators: [{
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RouterState, decorators: [{
341
344
  type: Injectable
342
- }], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Router }, { type: RouterStateSerializer }, { type: i0.NgZone }, { type: i0.Injector }]; }, propDecorators: { navigate: [], angularRouterAction: [] } });
345
+ }], ctorParameters: () => [{ type: i1.Store }, { type: i2.Router }, { type: RouterStateSerializer }, { type: i0.NgZone }, { type: i0.Injector }], propDecorators: { navigate: [], angularRouterAction: [] } });
343
346
 
344
347
  class NgxsRouterPluginModule {
345
348
  static forRoot(options) {
346
349
  return {
347
350
  ngModule: NgxsRouterPluginModule,
348
351
  providers: [
349
- { provide: USER_OPTIONS, useValue: options },
352
+ { provide: _USER_OPTIONS, useValue: options },
350
353
  {
351
- provide: NGXS_ROUTER_PLUGIN_OPTIONS,
352
- useFactory: createRouterPluginOptions,
353
- deps: [USER_OPTIONS]
354
+ provide: _NGXS_ROUTER_PLUGIN_OPTIONS,
355
+ useFactory: _createRouterPluginOptions,
356
+ deps: [_USER_OPTIONS]
354
357
  },
355
358
  { provide: RouterStateSerializer, useClass: DefaultRouterStateSerializer }
356
359
  ]
357
360
  };
358
361
  }
362
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: NgxsRouterPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
363
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: NgxsRouterPluginModule, imports: [i1.ɵNgxsFeatureModule] }); }
364
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: NgxsRouterPluginModule, imports: [NgxsModule.forFeature([RouterState])] }); }
359
365
  }
360
- /** @nocollapse */ NgxsRouterPluginModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxsRouterPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
361
- /** @nocollapse */ NgxsRouterPluginModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxsRouterPluginModule, imports: [i1.ɵNgxsFeatureModule] });
362
- /** @nocollapse */ NgxsRouterPluginModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxsRouterPluginModule, imports: [[NgxsModule.forFeature([RouterState])]] });
363
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxsRouterPluginModule, decorators: [{
366
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: NgxsRouterPluginModule, decorators: [{
364
367
  type: NgModule,
365
368
  args: [{
366
369
  imports: [NgxsModule.forFeature([RouterState])]
367
370
  }]
368
371
  }] });
372
+ function withNgxsRouterPlugin(options) {
373
+ return makeEnvironmentProviders([
374
+ provideStates([RouterState]),
375
+ { provide: _USER_OPTIONS, useValue: options },
376
+ {
377
+ provide: _NGXS_ROUTER_PLUGIN_OPTIONS,
378
+ useFactory: _createRouterPluginOptions,
379
+ deps: [_USER_OPTIONS]
380
+ },
381
+ { provide: RouterStateSerializer, useClass: DefaultRouterStateSerializer }
382
+ ]);
383
+ }
369
384
 
370
385
  /**
371
386
  * The public api for consumers of @ngxs/router-plugin
@@ -375,5 +390,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
375
390
  * Generated bundle index. Do not edit.
376
391
  */
377
392
 
378
- export { DefaultRouterStateSerializer, Navigate, NgxsRouterPluginModule, RouterCancel, RouterDataResolved, RouterError, RouterNavigated, RouterNavigation, RouterRequest, RouterState, RouterStateSerializer };
379
- //# sourceMappingURL=ngxs-router-plugin.js.map
393
+ export { DefaultRouterStateSerializer, Navigate, NgxsRouterPluginModule, ROUTER_STATE_TOKEN, RouterCancel, RouterDataResolved, RouterError, RouterNavigated, RouterNavigation, RouterRequest, RouterState, RouterStateSerializer, withNgxsRouterPlugin };
394
+ //# sourceMappingURL=ngxs-router-plugin.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngxs-router-plugin.mjs","sources":["../../../packages/router-plugin/src/router.actions.ts","../../../packages/router-plugin/src/serializer.ts","../../../packages/router-plugin/src/router.state.ts","../../../packages/router-plugin/src/router.module.ts","../../../packages/router-plugin/index.ts","../../../packages/router-plugin/ngxs-router-plugin.ts"],"sourcesContent":["import {\n NavigationCancel,\n NavigationError,\n NavigationExtras,\n Params,\n RouterStateSnapshot,\n RoutesRecognized,\n ResolveEnd,\n NavigationStart,\n NavigationEnd\n} from '@angular/router';\n\nimport { RouterTrigger } from './router.state';\n\n/**\n * Public event api of the router\n */\nexport class Navigate {\n static readonly type = '[Router] Navigate';\n\n constructor(\n public path: any[],\n public queryParams?: Params,\n public extras?: NavigationExtras\n ) {}\n}\n\n/**\n *\n * Angular Routers internal state events\n *\n */\n\n/**\n * An action dispatched when the router starts the navigation.\n */\nexport class RouterRequest<T = RouterStateSnapshot> {\n static readonly type = '[Router] RouterRequest';\n\n constructor(\n public routerState: T,\n public event: NavigationStart,\n public trigger: RouterTrigger = 'none'\n ) {}\n}\n\n/**\n * An action dispatched when the router navigates.\n */\nexport class RouterNavigation<T = RouterStateSnapshot> {\n static readonly type = '[Router] RouterNavigation';\n\n constructor(\n public routerState: T,\n public event: RoutesRecognized,\n public trigger: RouterTrigger = 'none'\n ) {}\n}\n\n/**\n * An action dispatched when the router cancel navigation.\n */\nexport class RouterCancel<T, V = RouterStateSnapshot> {\n static readonly type = '[Router] RouterCancel';\n\n constructor(\n public routerState: V,\n public storeState: T,\n public event: NavigationCancel,\n public trigger: RouterTrigger = 'none'\n ) {}\n}\n\n/**\n * An action dispatched when the router errors.\n */\nexport class RouterError<T, V = RouterStateSnapshot> {\n static readonly type = '[Router] RouterError';\n\n constructor(\n public routerState: V,\n public storeState: T,\n public event: NavigationError,\n public trigger: RouterTrigger = 'none'\n ) {}\n}\n\n/**\n * An action dispatched when the `ResolveEnd` event is triggered.\n */\nexport class RouterDataResolved<T = RouterStateSnapshot> {\n static readonly type = '[Router] RouterDataResolved';\n\n constructor(\n public routerState: T,\n public event: ResolveEnd,\n public trigger: RouterTrigger = 'none'\n ) {}\n}\n\n/**\n * An action dispatched when the router navigation has been finished successfully.\n */\nexport class RouterNavigated<T = RouterStateSnapshot> {\n static readonly type = '[Router] RouterNavigated';\n\n constructor(\n public routerState: T,\n public event: NavigationEnd,\n public trigger: RouterTrigger = 'none'\n ) {}\n}\n\n/**\n * An union type of router actions.\n */\nexport type RouterAction<T, V = RouterStateSnapshot> =\n | RouterRequest<V>\n | RouterNavigation<V>\n | RouterCancel<T, V>\n | RouterError<T, V>\n | RouterDataResolved<V>\n | RouterNavigated<V>;\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nexport abstract class RouterStateSerializer<T> {\n abstract serialize(routerState: RouterStateSnapshot): T;\n}\n\nexport interface SerializedRouterStateSnapshot {\n root: ActivatedRouteSnapshot;\n url: string;\n}\n\nexport class DefaultRouterStateSerializer\n implements RouterStateSerializer<SerializedRouterStateSnapshot>\n{\n serialize(routerState: RouterStateSnapshot): SerializedRouterStateSnapshot {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url\n };\n }\n\n private serializeRoute(route: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\n const children = route.children.map(c => this.serializeRoute(c));\n return {\n url: route.url,\n title: route.title,\n params: route.params,\n queryParams: route.queryParams,\n fragment: route.fragment!,\n data: route.data,\n outlet: route.outlet,\n component: null,\n routeConfig: null,\n root: null as any,\n parent: null,\n firstChild: children[0],\n children: children,\n pathFromRoot: null as any,\n paramMap: route.paramMap,\n queryParamMap: route.queryParamMap,\n toString: route.toString\n };\n }\n}\n","import { NgZone, Injectable, OnDestroy, Injector } from '@angular/core';\nimport {\n NavigationCancel,\n NavigationError,\n Router,\n RouterStateSnapshot,\n RoutesRecognized,\n ResolveEnd,\n NavigationStart,\n NavigationEnd,\n Event\n} from '@angular/router';\nimport { Action, Selector, State, StateContext, StateToken, Store } from '@ngxs/store';\nimport {\n NavigationActionTiming,\n NgxsRouterPluginOptions,\n ɵNGXS_ROUTER_PLUGIN_OPTIONS\n} from '@ngxs/router-plugin/internals';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n Navigate,\n RouterAction,\n RouterCancel,\n RouterError,\n RouterNavigation,\n RouterDataResolved,\n RouterRequest,\n RouterNavigated\n} from './router.actions';\nimport { RouterStateSerializer } from './serializer';\n\nexport interface RouterStateModel<T = RouterStateSnapshot> {\n state?: T;\n navigationId?: number;\n trigger: RouterTrigger;\n}\n\nexport type RouterTrigger =\n | 'none'\n | 'router'\n | 'store'\n // The `devtools` trigger means that the state change has been triggered by Redux DevTools (e.g. when the time-traveling is used).\n | 'devtools';\n\n// NGXS doesn't permit untyped selectors, such as `select(RouterState)`,\n// as the `RouterState` class itself lacks type information. Therefore,\n// the following state token must replace `RouterState`.\nexport const ROUTER_STATE_TOKEN = new StateToken<RouterStateModel>('router');\n\n@State<RouterStateModel>({\n name: ROUTER_STATE_TOKEN,\n defaults: {\n state: undefined,\n navigationId: undefined,\n trigger: 'none'\n }\n})\n@Injectable()\nexport class RouterState implements OnDestroy {\n /**\n * Determines how navigation was performed by the `RouterState` itself\n * or outside via `new Navigate(...)`\n */\n private _trigger: RouterTrigger = 'none';\n\n /**\n * That's the serialized state from the `Router` class\n */\n private _routerState: RouterStateSnapshot | null = null;\n\n /**\n * That's the value of the `RouterState` state\n */\n private _storeState: RouterStateModel | null = null;\n\n private _lastEvent: Event | null = null;\n\n private _options: NgxsRouterPluginOptions | null = null;\n\n private _destroy$ = new ReplaySubject<void>(1);\n\n @Selector()\n static state<T = RouterStateSnapshot>(state: RouterStateModel<T>) {\n // The `state` is optional if the selector is invoked before the router\n // state is registered in NGXS.\n return state?.state;\n }\n\n @Selector()\n static url(state: RouterStateModel): string | undefined {\n return state?.state?.url;\n }\n\n constructor(\n private _store: Store,\n private _router: Router,\n private _serializer: RouterStateSerializer<RouterStateSnapshot>,\n private _ngZone: NgZone,\n injector: Injector\n ) {\n // Note: do not use `@Inject` since it fails on lower versions of Angular with Jest\n // integration, it cannot resolve the token provider.\n this._options = injector.get(ɵNGXS_ROUTER_PLUGIN_OPTIONS, null);\n this._setUpStoreListener();\n this._setUpRouterEventsListener();\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n }\n\n @Action(Navigate)\n navigate(_: StateContext<RouterStateModel>, action: Navigate) {\n return this._ngZone.run(() =>\n this._router.navigate(action.path, {\n queryParams: action.queryParams,\n ...action.extras\n })\n );\n }\n\n @Action([\n RouterRequest<RouterStateSnapshot>,\n RouterNavigation<RouterStateSnapshot>,\n RouterError<RouterStateModel, RouterStateSnapshot>,\n RouterCancel<RouterStateModel, RouterStateSnapshot>,\n RouterDataResolved<RouterStateSnapshot>,\n RouterNavigated<RouterStateSnapshot>\n ])\n angularRouterAction(\n ctx: StateContext<RouterStateModel>,\n action: RouterAction<RouterStateModel, RouterStateSnapshot>\n ): void {\n ctx.setState({\n trigger: action.trigger,\n state: action.routerState,\n navigationId: action.event.id\n });\n }\n\n private _setUpStoreListener(): void {\n const routerState$ = this._store\n .select(ROUTER_STATE_TOKEN)\n .pipe(takeUntil(this._destroy$));\n routerState$.subscribe((state: RouterStateModel | undefined) => {\n this._navigateIfNeeded(state);\n });\n }\n\n private _navigateIfNeeded(routerState: RouterStateModel | undefined): void {\n if (routerState && routerState.trigger === 'devtools') {\n this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);\n }\n\n const canSkipNavigation =\n !this._storeState ||\n !this._storeState.state ||\n !routerState ||\n routerState.trigger === 'router' ||\n this._router.url === this._storeState.state.url ||\n this._lastEvent instanceof NavigationStart;\n\n if (canSkipNavigation) {\n return;\n }\n\n this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);\n this._trigger = 'store';\n this._ngZone.run(() => this._router.navigateByUrl(this._storeState!.state!.url));\n }\n\n private _setUpRouterEventsListener(): void {\n const dispatchRouterNavigationLate =\n this._options != null &&\n this._options.navigationActionTiming === NavigationActionTiming.PostActivation;\n\n let lastRoutesRecognized: RoutesRecognized;\n\n const events$ = this._router.events.pipe(takeUntil(this._destroy$));\n events$.subscribe(event => {\n this._lastEvent = event;\n\n if (event instanceof NavigationStart) {\n this._navigationStart(event);\n } else if (event instanceof RoutesRecognized) {\n lastRoutesRecognized = event;\n if (!dispatchRouterNavigationLate && this._trigger !== 'store') {\n this._dispatchRouterNavigation(lastRoutesRecognized);\n }\n } else if (event instanceof ResolveEnd) {\n this._dispatchRouterDataResolved(event);\n } else if (event instanceof NavigationCancel) {\n this._dispatchRouterCancel(event);\n this._reset();\n } else if (event instanceof NavigationError) {\n this._dispatchRouterError(event);\n this._reset();\n } else if (event instanceof NavigationEnd) {\n if (this._trigger !== 'store') {\n if (dispatchRouterNavigationLate) {\n this._dispatchRouterNavigation(lastRoutesRecognized);\n }\n this._dispatchRouterNavigated(event);\n }\n this._reset();\n }\n });\n }\n\n /** Reacts to `NavigationStart`. */\n private _navigationStart(event: NavigationStart): void {\n this._routerState = this._serializer.serialize(this._router.routerState.snapshot);\n\n if (this._trigger !== 'none') {\n this._storeState = this._store.selectSnapshot(ROUTER_STATE_TOKEN);\n this._dispatchRouterAction(new RouterRequest(this._routerState, event, this._trigger));\n }\n }\n\n /** Reacts to `ResolveEnd`. */\n private _dispatchRouterDataResolved(event: ResolveEnd): void {\n const routerState = this._serializer.serialize(event.state);\n this._dispatchRouterAction(new RouterDataResolved(routerState, event, this._trigger));\n }\n\n /** Reacts to `RoutesRecognized` or `NavigationEnd`, depends on the `navigationActionTiming`. */\n private _dispatchRouterNavigation(lastRoutesRecognized: RoutesRecognized): void {\n const nextRouterState = this._serializer.serialize(lastRoutesRecognized.state);\n\n this._dispatchRouterAction(\n new RouterNavigation(\n nextRouterState,\n new RoutesRecognized(\n lastRoutesRecognized.id,\n lastRoutesRecognized.url,\n lastRoutesRecognized.urlAfterRedirects,\n nextRouterState\n ),\n this._trigger\n )\n );\n }\n\n /** Reacts to `NavigationCancel`. */\n private _dispatchRouterCancel(event: NavigationCancel): void {\n this._dispatchRouterAction(\n new RouterCancel(this._routerState!, this._storeState, event, this._trigger)\n );\n }\n\n /** Reacts to `NavigationEnd`. */\n private _dispatchRouterError(event: NavigationError): void {\n this._dispatchRouterAction(\n new RouterError(\n this._routerState!,\n this._storeState,\n new NavigationError(event.id, event.url, `${event}`),\n this._trigger\n )\n );\n }\n\n /** Reacts to `NavigationEnd`. */\n private _dispatchRouterNavigated(event: NavigationEnd): void {\n const routerState = this._serializer.serialize(this._router.routerState.snapshot);\n this._dispatchRouterAction(new RouterNavigated(routerState, event, this._trigger));\n }\n\n private _dispatchRouterAction<T>(action: RouterAction<T>): void {\n this._trigger = 'router';\n\n try {\n this._store.dispatch(action);\n } finally {\n this._trigger = 'none';\n }\n }\n\n private _reset(): void {\n this._trigger = 'none';\n this._storeState = null;\n this._routerState = null;\n }\n}\n","import {\n EnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n makeEnvironmentProviders\n} from '@angular/core';\nimport { NgxsModule, provideStates } from '@ngxs/store';\nimport {\n NgxsRouterPluginOptions,\n ɵcreateRouterPluginOptions,\n ɵNGXS_ROUTER_PLUGIN_OPTIONS,\n ɵUSER_OPTIONS\n} from '@ngxs/router-plugin/internals';\n\nimport { RouterState } from './router.state';\nimport { DefaultRouterStateSerializer, RouterStateSerializer } from './serializer';\n\n@NgModule({\n imports: [NgxsModule.forFeature([RouterState])]\n})\nexport class NgxsRouterPluginModule {\n static forRoot(\n options?: NgxsRouterPluginOptions\n ): ModuleWithProviders<NgxsRouterPluginModule> {\n return {\n ngModule: NgxsRouterPluginModule,\n providers: [\n { provide: ɵUSER_OPTIONS, useValue: options },\n {\n provide: ɵNGXS_ROUTER_PLUGIN_OPTIONS,\n useFactory: ɵcreateRouterPluginOptions,\n deps: [ɵUSER_OPTIONS]\n },\n { provide: RouterStateSerializer, useClass: DefaultRouterStateSerializer }\n ]\n };\n }\n}\n\nexport function withNgxsRouterPlugin(options?: NgxsRouterPluginOptions): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideStates([RouterState]),\n { provide: ɵUSER_OPTIONS, useValue: options },\n {\n provide: ɵNGXS_ROUTER_PLUGIN_OPTIONS,\n useFactory: ɵcreateRouterPluginOptions,\n deps: [ɵUSER_OPTIONS]\n },\n { provide: RouterStateSerializer, useClass: DefaultRouterStateSerializer }\n ]);\n}\n","/**\n * The public api for consumers of @ngxs/router-plugin\n */\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵNGXS_ROUTER_PLUGIN_OPTIONS","i3.RouterStateSerializer","ɵUSER_OPTIONS","ɵcreateRouterPluginOptions"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './symbols';
@@ -0,0 +1,11 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export declare const enum NavigationActionTiming {
3
+ PreActivation = 1,
4
+ PostActivation = 2
5
+ }
6
+ export interface NgxsRouterPluginOptions {
7
+ navigationActionTiming?: NavigationActionTiming;
8
+ }
9
+ export declare const ɵUSER_OPTIONS: InjectionToken<NgxsRouterPluginOptions | undefined>;
10
+ export declare const ɵNGXS_ROUTER_PLUGIN_OPTIONS: InjectionToken<NgxsRouterPluginOptions>;
11
+ export declare function ɵcreateRouterPluginOptions(options: NgxsRouterPluginOptions | undefined): NgxsRouterPluginOptions;
package/package.json CHANGED
@@ -1,23 +1,35 @@
1
1
  {
2
- "$schema": "../../node_modules/ng-packagr/package.schema.json",
3
2
  "name": "@ngxs/router-plugin",
4
3
  "description": "router plugin for @ngxs/store",
5
- "version": "3.8.2",
6
- "sideEffects": true,
4
+ "version": "18.0.0-dev.master-56d8014",
5
+ "sideEffects": false,
7
6
  "peerDependencies": {
8
- "@ngxs/store": "^3.8.2 || ^3.8.2-dev",
9
- "@angular/core": ">=12.0.0 <18.0.0",
10
- "@angular/router": ">=12.0.0 <18.0.0",
7
+ "@angular/core": ">=16.0.0 <19.0.0",
8
+ "@angular/router": ">=16.0.0 <19.0.0",
9
+ "@ngxs/store": "^18.0.0 || ^18.0.0-dev",
11
10
  "rxjs": ">=6.5.5"
12
11
  },
13
- "main": "bundles/ngxs-router-plugin.umd.js",
14
- "module": "fesm2015/ngxs-router-plugin.js",
15
- "es2015": "fesm2015/ngxs-router-plugin.js",
16
- "esm2015": "esm2015/ngxs-router-plugin.js",
17
- "fesm2015": "fesm2015/ngxs-router-plugin.js",
18
- "typings": "ngxs-router-plugin.d.ts",
12
+ "module": "fesm2022/ngxs-router-plugin.mjs",
13
+ "typings": "index.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./index.d.ts",
20
+ "esm2022": "./esm2022/ngxs-router-plugin.mjs",
21
+ "esm": "./esm2022/ngxs-router-plugin.mjs",
22
+ "default": "./fesm2022/ngxs-router-plugin.mjs"
23
+ },
24
+ "./internals": {
25
+ "types": "./internals/index.d.ts",
26
+ "esm2022": "./esm2022/internals/ngxs-router-plugin-internals.mjs",
27
+ "esm": "./esm2022/internals/ngxs-router-plugin-internals.mjs",
28
+ "default": "./fesm2022/ngxs-router-plugin-internals.mjs"
29
+ }
30
+ },
19
31
  "dependencies": {
20
- "tslib": "^2.2.0"
32
+ "tslib": "^2.3.0"
21
33
  },
22
34
  "repository": {
23
35
  "type": "git",
@@ -63,4 +75,4 @@
63
75
  "type": "opencollective",
64
76
  "url": "https://opencollective.com/ngxs"
65
77
  }
66
- }
78
+ }
@@ -1,5 +1,5 @@
1
- export { NgxsRouterPluginModule } from './router.module';
2
- export { RouterState, RouterStateModel } from './router.state';
1
+ export { NgxsRouterPluginModule, withNgxsRouterPlugin } from './router.module';
2
+ export { ROUTER_STATE_TOKEN, RouterState, RouterStateModel } from './router.state';
3
3
  export { RouterStateSerializer, DefaultRouterStateSerializer, SerializedRouterStateSnapshot } from './serializer';
4
- export { NavigationActionTiming, NgxsRouterPluginOptions } from './symbols';
5
4
  export * from './router.actions';
5
+ export { NavigationActionTiming, NgxsRouterPluginOptions } from '@ngxs/router-plugin/internals';
@@ -80,4 +80,4 @@ export declare class RouterNavigated<T = RouterStateSnapshot> {
80
80
  /**
81
81
  * An union type of router actions.
82
82
  */
83
- export declare type RouterAction<T, V = RouterStateSnapshot> = RouterRequest<V> | RouterNavigation<V> | RouterCancel<T, V> | RouterError<T, V> | RouterDataResolved<V> | RouterNavigated<V>;
83
+ export type RouterAction<T, V = RouterStateSnapshot> = RouterRequest<V> | RouterNavigation<V> | RouterCancel<T, V> | RouterError<T, V> | RouterDataResolved<V> | RouterNavigated<V>;
@@ -1,5 +1,5 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { NgxsRouterPluginOptions } from './symbols';
1
+ import { EnvironmentProviders, ModuleWithProviders } from '@angular/core';
2
+ import { NgxsRouterPluginOptions } from '@ngxs/router-plugin/internals';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@ngxs/store";
5
5
  export declare class NgxsRouterPluginModule {
@@ -8,3 +8,4 @@ export declare class NgxsRouterPluginModule {
8
8
  static ɵmod: i0.ɵɵNgModuleDeclaration<NgxsRouterPluginModule, never, [typeof i1.ɵNgxsFeatureModule], never>;
9
9
  static ɵinj: i0.ɵɵInjectorDeclaration<NgxsRouterPluginModule>;
10
10
  }
11
+ export declare function withNgxsRouterPlugin(options?: NgxsRouterPluginOptions): EnvironmentProviders;
@@ -1,6 +1,6 @@
1
1
  import { NgZone, OnDestroy, Injector } from '@angular/core';
2
2
  import { Router, RouterStateSnapshot } from '@angular/router';
3
- import { StateContext, Store } from '@ngxs/store';
3
+ import { StateContext, StateToken, Store } from '@ngxs/store';
4
4
  import { Navigate, RouterAction } from './router.actions';
5
5
  import { RouterStateSerializer } from './serializer';
6
6
  import * as i0 from "@angular/core";
@@ -9,7 +9,8 @@ export interface RouterStateModel<T = RouterStateSnapshot> {
9
9
  navigationId?: number;
10
10
  trigger: RouterTrigger;
11
11
  }
12
- export declare type RouterTrigger = 'none' | 'router' | 'store' | 'devtools';
12
+ export type RouterTrigger = 'none' | 'router' | 'store' | 'devtools';
13
+ export declare const ROUTER_STATE_TOKEN: StateToken<RouterStateModel<RouterStateSnapshot>>;
13
14
  export declare class RouterState implements OnDestroy {
14
15
  private _store;
15
16
  private _router;
@@ -29,8 +30,8 @@ export declare class RouterState implements OnDestroy {
29
30
  */
30
31
  private _storeState;
31
32
  private _lastEvent;
32
- private _subscription;
33
33
  private _options;
34
+ private _destroy$;
34
35
  static state<T = RouterStateSnapshot>(state: RouterStateModel<T>): T | undefined;
35
36
  static url(state: RouterStateModel): string | undefined;
36
37
  constructor(_store: Store, _router: Router, _serializer: RouterStateSerializer<RouterStateSnapshot>, _ngZone: NgZone, injector: Injector);