UNPKG

32.8 kBSource Map (JSON)View Raw
1{"version":3,"file":"router-store.umd.js","sources":["../../../../../modules/router-store/src/actions.ts","../../../../../modules/router-store/src/reducer.ts","../../../../../modules/router-store/src/serializers/base.ts","../../../../../modules/router-store/src/serializers/default_serializer.ts","../../../../../modules/router-store/src/serializers/minimal_serializer.ts","../../../../../modules/router-store/src/router_store_module.ts","../../../../../modules/router-store/src/router_selectors.ts","../../../../../modules/router-store/index.ts","../../../../../modules/router-store/router-store.ts"],"sourcesContent":["import {\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationStart,\n RoutesRecognized,\n} from '@angular/router';\n\nimport { BaseRouterStoreState } from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/default_serializer';\nimport { createAction, props } from '@ngrx/store';\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nexport const ROUTER_REQUEST = '@ngrx/router-store/request';\n\n/**\n * Payload of ROUTER_REQUEST\n */\nexport type RouterRequestPayload<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: T;\n event: NavigationStart;\n};\n\n/**\n * An action dispatched when a router navigation request is fired.\n */\nexport type RouterRequestAction<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_REQUEST;\n payload: RouterRequestPayload<T>;\n};\n\nexport const routerRequestAction = createAction(\n ROUTER_REQUEST,\n props<{ payload: RouterRequestPayload<SerializedRouterStateSnapshot> }>()\n);\n/**\n * An action dispatched when the router navigates.\n */\nexport const ROUTER_NAVIGATION = '@ngrx/router-store/navigation';\n\n/**\n * Payload of ROUTER_NAVIGATION.\n */\nexport type RouterNavigationPayload<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: T;\n event: RoutesRecognized;\n};\n\n/**\n * An action dispatched when the router navigates.\n */\nexport type RouterNavigationAction<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_NAVIGATION;\n payload: RouterNavigationPayload<T>;\n};\n\nexport const routerNavigationAction = createAction(\n ROUTER_NAVIGATION,\n props<{ payload: RouterNavigationPayload<SerializedRouterStateSnapshot> }>()\n);\n\n/**\n * An action dispatched when the router cancels navigation.\n */\nexport const ROUTER_CANCEL = '@ngrx/router-store/cancel';\n\n/**\n * Payload of ROUTER_CANCEL.\n */\nexport type RouterCancelPayload<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: V;\n storeState: T;\n event: NavigationCancel;\n};\n\n/**\n * An action dispatched when the router cancels navigation.\n */\nexport type RouterCancelAction<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_CANCEL;\n payload: RouterCancelPayload<T, V>;\n};\n\nexport const routerCancelAction = createAction(\n ROUTER_CANCEL,\n props<{ payload: RouterCancelPayload<SerializedRouterStateSnapshot> }>()\n);\n\n/**\n * An action dispatched when the router errors.\n */\nexport const ROUTER_ERROR = '@ngrx/router-store/error';\n\n/**\n * Payload of ROUTER_ERROR.\n */\nexport type RouterErrorPayload<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: V;\n storeState: T;\n event: NavigationError;\n};\n\n/**\n * An action dispatched when the router errors.\n */\nexport type RouterErrorAction<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_ERROR;\n payload: RouterErrorPayload<T, V>;\n};\n\nexport const routerErrorAction = createAction(\n ROUTER_ERROR,\n props<{ payload: RouterErrorPayload<SerializedRouterStateSnapshot> }>()\n);\n\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nexport const ROUTER_NAVIGATED = '@ngrx/router-store/navigated';\n\n/**\n * Payload of ROUTER_NAVIGATED.\n */\nexport type RouterNavigatedPayload<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n routerState: T;\n event: NavigationEnd;\n};\n\n/**\n * An action dispatched after navigation has ended and new route is active.\n */\nexport type RouterNavigatedAction<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n type: typeof ROUTER_NAVIGATED;\n payload: RouterNavigatedPayload<T>;\n};\n\nexport const routerNavigatedAction = createAction(\n ROUTER_NAVIGATED,\n props<{ payload: RouterNavigatedPayload<SerializedRouterStateSnapshot> }>()\n);\n\n/**\n * A union type of router actions.\n */\nexport type RouterAction<\n T,\n V extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> =\n | RouterRequestAction<V>\n | RouterNavigationAction<V>\n | RouterCancelAction<T, V>\n | RouterErrorAction<T, V>\n | RouterNavigatedAction<V>;\n","import { Action } from '@ngrx/store';\nimport {\n ROUTER_CANCEL,\n ROUTER_ERROR,\n ROUTER_NAVIGATION,\n RouterAction,\n} from './actions';\nimport { BaseRouterStoreState } from './serializers/base';\nimport { SerializedRouterStateSnapshot } from './serializers/default_serializer';\n\nexport type RouterReducerState<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = {\n state: T;\n navigationId: number;\n};\n\nexport function routerReducer<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n>(\n state: RouterReducerState<T> | undefined,\n action: Action\n): RouterReducerState<T> {\n // Allow compilation with strictFunctionTypes - ref: #1344\n const routerAction = action as RouterAction<any, T>;\n switch (routerAction.type) {\n case ROUTER_NAVIGATION:\n case ROUTER_ERROR:\n case ROUTER_CANCEL:\n return {\n state: routerAction.payload.routerState,\n navigationId: routerAction.payload.event.id,\n };\n default:\n return state as RouterReducerState<T>;\n }\n}\n","import { RouterStateSnapshot } from '@angular/router';\n\n/**\n * Simple router state.\n * All custom router states / state serializers should have at least\n * the properties of this interface.\n */\nexport interface BaseRouterStoreState {\n url: string;\n}\n\nexport abstract class RouterStateSerializer<\n T extends BaseRouterStoreState = BaseRouterStoreState\n> {\n abstract serialize(routerState: RouterStateSnapshot): T;\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { BaseRouterStoreState, RouterStateSerializer } from './base';\n\nexport interface SerializedRouterStateSnapshot extends BaseRouterStoreState {\n root: ActivatedRouteSnapshot;\n url: string;\n}\n\nexport class DefaultRouterStateSerializer\n implements RouterStateSerializer<SerializedRouterStateSnapshot> {\n serialize(routerState: RouterStateSnapshot): SerializedRouterStateSnapshot {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url,\n };\n }\n\n private serializeRoute(\n route: ActivatedRouteSnapshot\n ): ActivatedRouteSnapshot {\n const children = route.children.map(c => this.serializeRoute(c));\n return {\n params: route.params,\n paramMap: route.paramMap,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n routeConfig: route.routeConfig\n ? {\n component: route.routeConfig.component,\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n }\n : null,\n queryParams: route.queryParams,\n queryParamMap: route.queryParamMap,\n fragment: route.fragment,\n component: (route.routeConfig\n ? route.routeConfig.component\n : undefined) as any,\n root: undefined as any,\n parent: undefined as any,\n firstChild: children[0],\n pathFromRoot: undefined as any,\n children,\n };\n }\n}\n","import { RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router';\nimport { BaseRouterStoreState, RouterStateSerializer } from './base';\n\nexport interface MinimalActivatedRouteSnapshot {\n routeConfig: ActivatedRouteSnapshot['routeConfig'];\n url: ActivatedRouteSnapshot['url'];\n params: ActivatedRouteSnapshot['params'];\n queryParams: ActivatedRouteSnapshot['queryParams'];\n fragment: ActivatedRouteSnapshot['fragment'];\n data: ActivatedRouteSnapshot['data'];\n outlet: ActivatedRouteSnapshot['outlet'];\n firstChild?: MinimalActivatedRouteSnapshot;\n children: MinimalActivatedRouteSnapshot[];\n}\n\nexport interface MinimalRouterStateSnapshot extends BaseRouterStoreState {\n root: MinimalActivatedRouteSnapshot;\n url: string;\n}\n\nexport class MinimalRouterStateSerializer\n implements RouterStateSerializer<MinimalRouterStateSnapshot> {\n serialize(routerState: RouterStateSnapshot): MinimalRouterStateSnapshot {\n return {\n root: this.serializeRoute(routerState.root),\n url: routerState.url,\n };\n }\n\n private serializeRoute(\n route: ActivatedRouteSnapshot\n ): MinimalActivatedRouteSnapshot {\n const children = route.children.map(c => this.serializeRoute(c));\n return {\n params: route.params,\n data: route.data,\n url: route.url,\n outlet: route.outlet,\n routeConfig: route.routeConfig\n ? {\n path: route.routeConfig.path,\n pathMatch: route.routeConfig.pathMatch,\n redirectTo: route.routeConfig.redirectTo,\n outlet: route.routeConfig.outlet,\n }\n : null,\n queryParams: route.queryParams,\n fragment: route.fragment,\n firstChild: children[0],\n children,\n };\n }\n}\n","import {\n Inject,\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n ErrorHandler,\n} from '@angular/core';\nimport {\n NavigationCancel,\n NavigationError,\n NavigationEnd,\n Router,\n RoutesRecognized,\n NavigationStart,\n Event,\n RouterEvent,\n} from '@angular/router';\nimport { select, Selector, Store } from '@ngrx/store';\nimport { withLatestFrom } from 'rxjs/operators';\n\nimport {\n ROUTER_CANCEL,\n ROUTER_ERROR,\n ROUTER_NAVIGATED,\n ROUTER_NAVIGATION,\n ROUTER_REQUEST,\n} from './actions';\nimport { RouterReducerState } from './reducer';\nimport {\n RouterStateSerializer,\n BaseRouterStoreState,\n} from './serializers/base';\nimport {\n DefaultRouterStateSerializer,\n SerializedRouterStateSnapshot,\n} from './serializers/default_serializer';\nimport { MinimalRouterStateSerializer } from './serializers/minimal_serializer';\n\nexport type StateKeyOrSelector<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> = string | Selector<any, RouterReducerState<T>>;\n\n/**\n * Full = Serializes the router event with DefaultRouterStateSerializer\n * Minimal = Serializes the router event with MinimalRouterStateSerializer\n */\nexport const enum RouterState {\n Full,\n Minimal,\n}\n\nexport interface StoreRouterConfig<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n> {\n stateKey?: StateKeyOrSelector<T>;\n serializer?: new (...args: any[]) => RouterStateSerializer;\n /**\n * By default, ROUTER_NAVIGATION is dispatched before guards and resolvers run.\n * Therefore, the action could run too soon, for example\n * there may be a navigation cancel due to a guard saying the navigation is not allowed.\n * To run ROUTER_NAVIGATION after guards and resolvers,\n * set this property to NavigationActionTiming.PostActivation.\n */\n navigationActionTiming?: NavigationActionTiming;\n /**\n * Decides which router serializer should be used, if there is none provided, and the metadata on the dispatched @ngrx/router-store action payload.\n * Set to `Full` to use the `DefaultRouterStateSerializer` and to set the angular router events as payload.\n * Set to `Minimal` to use the `MinimalRouterStateSerializer` and to set a minimal router event with the navigation id and url as payload.\n */\n routerState?: RouterState;\n}\n\ninterface StoreRouterActionPayload {\n event: RouterEvent;\n routerState?: SerializedRouterStateSnapshot;\n storeState?: any;\n}\n\nexport enum NavigationActionTiming {\n PreActivation = 1,\n PostActivation = 2,\n}\n\nexport const _ROUTER_CONFIG = new InjectionToken(\n '@ngrx/router-store Internal Configuration'\n);\nexport const ROUTER_CONFIG = new InjectionToken(\n '@ngrx/router-store Configuration'\n);\nexport const DEFAULT_ROUTER_FEATURENAME = 'router';\n\nexport function _createRouterConfig(\n config: StoreRouterConfig\n): StoreRouterConfig {\n return {\n stateKey: DEFAULT_ROUTER_FEATURENAME,\n serializer: DefaultRouterStateSerializer,\n navigationActionTiming: NavigationActionTiming.PreActivation,\n ...config,\n };\n}\n\nenum RouterTrigger {\n NONE = 1,\n ROUTER = 2,\n STORE = 3,\n}\n\n/**\n * Connects RouterModule with StoreModule.\n *\n * During the navigation, before any guards or resolvers run, the router will dispatch\n * a ROUTER_NAVIGATION action, which has the following signature:\n *\n * ```\n * export type RouterNavigationPayload = {\n * routerState: SerializedRouterStateSnapshot,\n * event: RoutesRecognized\n * }\n * ```\n *\n * Either a reducer or an effect can be invoked in response to this action.\n * If the invoked reducer throws, the navigation will be canceled.\n *\n * If navigation gets canceled because of a guard, a ROUTER_CANCEL action will be\n * dispatched. If navigation results in an error, a ROUTER_ERROR action will be dispatched.\n *\n * Both ROUTER_CANCEL and ROUTER_ERROR contain the store state before the navigation\n * which can be used to restore the consistency of the store.\n *\n * Usage:\n *\n * ```typescript\n * @NgModule({\n * declarations: [AppCmp, SimpleCmp],\n * imports: [\n * BrowserModule,\n * StoreModule.forRoot(mapOfReducers),\n * RouterModule.forRoot([\n * { path: '', component: SimpleCmp },\n * { path: 'next', component: SimpleCmp }\n * ]),\n * StoreRouterConnectingModule.forRoot()\n * ],\n * bootstrap: [AppCmp]\n * })\n * export class AppModule {\n * }\n * ```\n */\n@NgModule({})\nexport class StoreRouterConnectingModule {\n static forRoot<\n T extends BaseRouterStoreState = SerializedRouterStateSnapshot\n >(\n config: StoreRouterConfig<T> = {}\n ): ModuleWithProviders<StoreRouterConnectingModule> {\n return {\n ngModule: StoreRouterConnectingModule,\n providers: [\n { provide: _ROUTER_CONFIG, useValue: config },\n {\n provide: ROUTER_CONFIG,\n useFactory: _createRouterConfig,\n deps: [_ROUTER_CONFIG],\n },\n {\n provide: RouterStateSerializer,\n useClass: config.serializer\n ? config.serializer\n : config.routerState === RouterState.Minimal\n ? MinimalRouterStateSerializer\n : DefaultRouterStateSerializer,\n },\n ],\n };\n }\n\n private lastEvent: Event | null = null;\n private routerState: SerializedRouterStateSnapshot | null;\n private storeState: any;\n private trigger = RouterTrigger.NONE;\n\n private stateKey: StateKeyOrSelector;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private serializer: RouterStateSerializer<SerializedRouterStateSnapshot>,\n private errorHandler: ErrorHandler,\n @Inject(ROUTER_CONFIG) private config: StoreRouterConfig\n ) {\n this.stateKey = this.config.stateKey as StateKeyOrSelector;\n\n this.setUpStoreStateListener();\n this.setUpRouterEventsListener();\n }\n\n private setUpStoreStateListener(): void {\n this.store\n .pipe(\n select(this.stateKey as any),\n withLatestFrom(this.store)\n )\n .subscribe(([routerStoreState, storeState]) => {\n this.navigateIfNeeded(routerStoreState, storeState);\n });\n }\n\n private navigateIfNeeded(\n routerStoreState: RouterReducerState,\n storeState: any\n ): void {\n if (!routerStoreState || !routerStoreState.state) {\n return;\n }\n if (this.trigger === RouterTrigger.ROUTER) {\n return;\n }\n if (this.lastEvent instanceof NavigationStart) {\n return;\n }\n\n const url = routerStoreState.state.url;\n if (!isSameUrl(this.router.url, url)) {\n this.storeState = storeState;\n this.trigger = RouterTrigger.STORE;\n this.router.navigateByUrl(url).catch(error => {\n this.errorHandler.handleError(error);\n });\n }\n }\n\n private setUpRouterEventsListener(): void {\n const dispatchNavLate =\n this.config.navigationActionTiming ===\n NavigationActionTiming.PostActivation;\n let routesRecognized: RoutesRecognized;\n\n this.router.events\n .pipe(withLatestFrom(this.store))\n .subscribe(([event, storeState]) => {\n this.lastEvent = event;\n\n if (event instanceof NavigationStart) {\n this.routerState = this.serializer.serialize(\n this.router.routerState.snapshot\n );\n if (this.trigger !== RouterTrigger.STORE) {\n this.storeState = storeState;\n this.dispatchRouterRequest(event);\n }\n } else if (event instanceof RoutesRecognized) {\n routesRecognized = event;\n\n if (!dispatchNavLate && this.trigger !== RouterTrigger.STORE) {\n this.dispatchRouterNavigation(event);\n }\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 !== RouterTrigger.STORE) {\n if (dispatchNavLate) {\n this.dispatchRouterNavigation(routesRecognized);\n }\n this.dispatchRouterNavigated(event);\n }\n this.reset();\n }\n });\n }\n\n private dispatchRouterRequest(event: NavigationStart): void {\n this.dispatchRouterAction(ROUTER_REQUEST, { event });\n }\n\n private dispatchRouterNavigation(\n lastRoutesRecognized: RoutesRecognized\n ): void {\n const nextRouterState = this.serializer.serialize(\n lastRoutesRecognized.state\n );\n this.dispatchRouterAction(ROUTER_NAVIGATION, {\n routerState: nextRouterState,\n event: new RoutesRecognized(\n lastRoutesRecognized.id,\n lastRoutesRecognized.url,\n lastRoutesRecognized.urlAfterRedirects,\n nextRouterState\n ),\n });\n }\n\n private dispatchRouterCancel(event: NavigationCancel): void {\n this.dispatchRouterAction(ROUTER_CANCEL, {\n storeState: this.storeState,\n event,\n });\n }\n\n private dispatchRouterError(event: NavigationError): void {\n this.dispatchRouterAction(ROUTER_ERROR, {\n storeState: this.storeState,\n event: new NavigationError(event.id, event.url, `${event}`),\n });\n }\n\n private dispatchRouterNavigated(event: NavigationEnd): void {\n const routerState = this.serializer.serialize(\n this.router.routerState.snapshot\n );\n this.dispatchRouterAction(ROUTER_NAVIGATED, { event, routerState });\n }\n\n private dispatchRouterAction(\n type: string,\n payload: StoreRouterActionPayload\n ): void {\n this.trigger = RouterTrigger.ROUTER;\n try {\n this.store.dispatch({\n type,\n payload: {\n routerState: this.routerState,\n ...payload,\n event:\n this.config.routerState === RouterState.Minimal\n ? { id: payload.event.id, url: payload.event.url }\n : payload.event,\n },\n });\n } finally {\n this.trigger = RouterTrigger.NONE;\n }\n }\n\n private reset() {\n this.trigger = RouterTrigger.NONE;\n this.storeState = null;\n this.routerState = null;\n }\n}\n\n/**\n * Check if the URLs are matching. Accounts for the possibility of trailing \"/\" in url.\n */\nfunction isSameUrl(first: string, second: string): boolean {\n return stripTrailingSlash(first) === stripTrailingSlash(second);\n}\n\nfunction stripTrailingSlash(text: string): string {\n if (text.length > 0 && text[text.length - 1] === '/') {\n return text.substring(0, text.length - 1);\n }\n return text;\n}\n","import { createSelector } from '@ngrx/store';\nimport { RouterStateSelectors } from './models';\nimport { RouterReducerState } from './reducer';\n\nexport function getSelectors<V>(\n selectState: (state: V) => RouterReducerState<any>\n): RouterStateSelectors<V>;\nexport function getSelectors<V>(\n selectState: (state: V) => RouterReducerState<any>\n): RouterStateSelectors<V> {\n const selectRouterState = createSelector(\n selectState,\n router => router && router.state\n );\n const selectCurrentRoute = createSelector(selectRouterState, routerState => {\n if (!routerState) {\n return undefined;\n }\n let route = routerState.root;\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n });\n const selectQueryParams = createSelector(\n selectCurrentRoute,\n route => route && route.queryParams\n );\n const selectQueryParam = (param: string) =>\n createSelector(selectQueryParams, params => params && params[param]);\n const selectRouteParams = createSelector(\n selectCurrentRoute,\n route => route && route.params\n );\n const selectRouteParam = (param: string) =>\n createSelector(selectRouteParams, params => params && params[param]);\n const selectRouteData = createSelector(\n selectCurrentRoute,\n route => route && route.data\n );\n const selectUrl = createSelector(\n selectRouterState,\n routerState => routerState && routerState.url\n );\n\n return {\n selectCurrentRoute,\n selectQueryParams,\n selectQueryParam,\n selectRouteParams,\n selectRouteParam,\n selectRouteData,\n selectUrl,\n };\n}\n","/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {_ROUTER_CONFIG as ɵngrx_modules_router_store_router_store_a,_createRouterConfig as ɵngrx_modules_router_store_router_store_b} from './src/router_store_module';"],"names":["createAction","props","NavigationActionTiming","InjectionToken","select","withLatestFrom","NavigationStart","RoutesRecognized","NavigationCancel","NavigationError","NavigationEnd","NgModule","tslib_1.__param","Inject","Store","Router","ErrorHandler","createSelector"],"mappings":"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"}
\No newline at end of file