@o3r/routing 12.0.0-next.2 → 12.0.0-next.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/o3r-routing.mjs +14 -14
- package/fesm2022/o3r-routing.mjs.map +1 -1
- package/package.json +16 -17
- package/schematics/package.json +3 -0
- package/esm2022/o3r-routing.mjs +0 -5
- package/esm2022/public_api.mjs +0 -3
- package/esm2022/stores/index.mjs +0 -2
- package/esm2022/stores/routing-guard/extra-effects/index.mjs +0 -2
- package/esm2022/stores/routing-guard/extra-effects/ngrx-store-router.effect.mjs +0 -29
- package/esm2022/stores/routing-guard/index.mjs +0 -7
- package/esm2022/stores/routing-guard/routing-guard.actions.mjs +0 -38
- package/esm2022/stores/routing-guard/routing-guard.module.mjs +0 -39
- package/esm2022/stores/routing-guard/routing-guard.reducer.mjs +0 -31
- package/esm2022/stores/routing-guard/routing-guard.selectors.mjs +0 -59
- package/esm2022/stores/routing-guard/routing-guard.state.mjs +0 -25
- package/esm2022/tools/app-server-routing.module.mjs +0 -49
- package/esm2022/tools/index.mjs +0 -3
- package/esm2022/tools/on-navigation-strategy.preloader.mjs +0 -55
package/fesm2022/o3r-routing.mjs
CHANGED
|
@@ -64,10 +64,10 @@ class NgrxStoreRouterEffect {
|
|
|
64
64
|
*/
|
|
65
65
|
this.resetRouterRegistrationOnNavigated$ = createEffect(() => this.actions$.pipe(ofType(ROUTER_NAVIGATED), map(() => clearRoutingGuardEntities())));
|
|
66
66
|
}
|
|
67
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
68
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
67
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: NgrxStoreRouterEffect, deps: [{ token: i1.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
68
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: NgrxStoreRouterEffect }); }
|
|
69
69
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: NgrxStoreRouterEffect, decorators: [{
|
|
71
71
|
type: Injectable
|
|
72
72
|
}], ctorParameters: () => [{ type: i1.Actions }] });
|
|
73
73
|
|
|
@@ -138,13 +138,13 @@ class RoutingGuardStoreModule {
|
|
|
138
138
|
]
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
142
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
143
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
141
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: RoutingGuardStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
142
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.7", ngImport: i0, type: RoutingGuardStoreModule, imports: [i1$1.StoreFeatureModule] }); }
|
|
143
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: RoutingGuardStoreModule, providers: [
|
|
144
144
|
{ provide: ROUTING_GUARD_REDUCER_TOKEN, useFactory: getDefaultRoutingGuardReducer }
|
|
145
145
|
], imports: [StoreModule.forFeature(ROUTING_GUARD_STORE_NAME, ROUTING_GUARD_REDUCER_TOKEN)] }); }
|
|
146
146
|
}
|
|
147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: RoutingGuardStoreModule, decorators: [{
|
|
148
148
|
type: NgModule,
|
|
149
149
|
args: [{
|
|
150
150
|
imports: [
|
|
@@ -250,11 +250,11 @@ class AppServerRoutingModule {
|
|
|
250
250
|
]
|
|
251
251
|
};
|
|
252
252
|
}
|
|
253
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
254
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
255
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
253
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: AppServerRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
254
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.7", ngImport: i0, type: AppServerRoutingModule }); }
|
|
255
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: AppServerRoutingModule }); }
|
|
256
256
|
}
|
|
257
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
257
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: AppServerRoutingModule, decorators: [{
|
|
258
258
|
type: NgModule
|
|
259
259
|
}] });
|
|
260
260
|
|
|
@@ -300,10 +300,10 @@ class O3rOnNavigationPreloadingStrategy {
|
|
|
300
300
|
}
|
|
301
301
|
return of(null);
|
|
302
302
|
}
|
|
303
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
304
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
303
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: O3rOnNavigationPreloadingStrategy, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
304
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: O3rOnNavigationPreloadingStrategy }); }
|
|
305
305
|
}
|
|
306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: O3rOnNavigationPreloadingStrategy, decorators: [{
|
|
307
307
|
type: Injectable
|
|
308
308
|
}], ctorParameters: () => [{ type: i1$2.Router }] });
|
|
309
309
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"o3r-routing.mjs","sources":["../../src/stores/routing-guard/routing-guard.actions.ts","../../src/stores/routing-guard/extra-effects/ngrx-store-router.effect.ts","../../src/stores/routing-guard/routing-guard.state.ts","../../src/stores/routing-guard/routing-guard.reducer.ts","../../src/stores/routing-guard/routing-guard.module.ts","../../src/stores/routing-guard/routing-guard.selectors.ts","../../src/tools/app-server-routing.module.ts","../../src/tools/on-navigation-strategy.preloader.ts","../../src/o3r-routing.ts"],"sourcesContent":["import {\n createAction,\n props,\n} from '@ngrx/store';\nimport {\n RegisteredItemFailureReason,\n} from './routing-guard.state';\n\n/** Entity Actions */\nconst ACTION_REGISTER_ENTITY = '[RoutingGuard] register an entity';\nconst ACTION_SET_ENTITY_AS_FAILURE = '[RoutingGuard] set an entity state as FAILURE';\nconst ACTION_SET_ENTITY_AS_SUCCESS_AND_CLEAR_REASON = '[RoutingGuard] set an entity state as SUCCESS and clear reason';\nconst ACTION_SET_ENTITY_AS_PENDING = '[RoutingGuard] set an entity state as PENDING';\nconst ACTION_CLEAR_ENTITIES = '[RoutingGuard] clear entities';\nconst ACTION_CLEAR_FAILURE_REASON = '[RoutingGuard] clear failure reason for an entity';\nconst ACTION_SET_ENTITY_AS_FAILURE_WITH_REASON = '[RoutingGuard] set an entity state as FAILURE with a reason';\n\nexport interface RoutingGuardActionPayload {\n /** Id of the block instance */\n id: string;\n}\n\nexport interface RoutingGuardFailureReasonPayload {\n /** Id of the block instance */\n id: string;\n /** Reason for failure */\n reason: RegisteredItemFailureReason;\n}\n\n/**\n * Register a new entity in routing guard store\n */\nexport const registerRoutingGuardEntity = createAction(ACTION_REGISTER_ENTITY, props<RoutingGuardActionPayload>());\n\n/**\n * Set an entity in FAILURE status\n */\nexport const setRoutingGuardEntityAsFailure = createAction(ACTION_SET_ENTITY_AS_FAILURE, props<RoutingGuardActionPayload>());\n\n/**\n * Set an entity in SUCCESS status and clear the reason\n */\nexport const setRoutingGuardEntityAsSuccessAndClearReason = createAction(ACTION_SET_ENTITY_AS_SUCCESS_AND_CLEAR_REASON, props<RoutingGuardActionPayload>());\n\n/**\n * Set an entity in PENDING status\n */\nexport const setRoutingGuardEntityAsPending = createAction(ACTION_SET_ENTITY_AS_PENDING, props<RoutingGuardActionPayload>());\n\n/**\n * Clear only the entities, keeps the other attributes in the state\n */\nexport const clearRoutingGuardEntities = createAction(ACTION_CLEAR_ENTITIES);\n\n/**\n * Clear only the entities, keeps the other attributes in the state\n */\nexport const clearRoutingGuardEntitiesFailureReason = createAction(ACTION_CLEAR_FAILURE_REASON, props<RoutingGuardActionPayload>());\n\n/**\n * Set entity in FAILURE status with a reason\n */\nexport const setRoutingGuardEntityFailureWithReason = createAction(ACTION_SET_ENTITY_AS_FAILURE_WITH_REASON, props<RoutingGuardFailureReasonPayload>());\n","import {\n Injectable,\n} from '@angular/core';\nimport {\n Actions,\n createEffect,\n ofType,\n} from '@ngrx/effects';\nimport {\n BaseRouterStoreState,\n ROUTER_NAVIGATED,\n ROUTER_REQUEST,\n RouterRequestAction,\n} from '@ngrx/router-store';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport {\n clearRoutingGuardEntities,\n} from '../routing-guard.actions';\n\n/**\n * Effect to react on Ngrx router store actions\n */\n@Injectable()\nexport class NgrxStoreRouterEffect {\n /**\n * Clear Router registrations when the active history entry changes (ex : click on back/next button Action)\n */\n public resetRouterRegistrationOnRequest$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ROUTER_REQUEST),\n filter((action: RouterRequestAction<BaseRouterStoreState>) => action.payload.event.navigationTrigger === 'popstate'),\n map(() => clearRoutingGuardEntities())\n )\n );\n\n /**\n * Clear Router registrations when navigation happened\n */\n public resetRouterRegistrationOnNavigated$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ROUTER_NAVIGATED),\n map(() => clearRoutingGuardEntities())\n )\n );\n\n constructor(protected actions$: Actions) {}\n}\n","import {\n EntityState,\n} from '@ngrx/entity';\n\n/** Identifies the status of a registered block */\nexport enum RegisteredItemStatus {\n /** block is ready (async call has not been triggered) */\n READY = 'READY',\n /** block is waiting for async call to resolve */\n PENDING = 'PENDING',\n /** block received the async call result and it's a failure */\n FAILURE = 'FAILURE',\n /** block received the async call result and it's a success */\n SUCCESS = 'SUCCESS'\n}\n\n/** Identifies the failure reason for the registered block */\nexport enum RegisteredItemFailureReason {\n /** Routing Failed because the async call result is failure */\n ASYNC_CALL_FAILURE = 'ASYNC_CALL_FAILURE',\n /** Routing failed because the changes to the form has not been saved */\n FORM_UNSAVED = 'FORM_UNSAVED'\n}\n\n/**\n * RoutingGuard model\n */\nexport interface RoutingGuardModel {\n /** Id of the block instance */\n id: string;\n /** Routing status of the block */\n status: RegisteredItemStatus;\n /** Routing Guard blocking reason */\n blockingReason?: RegisteredItemFailureReason;\n}\n\n/**\n * RoutingGuard store state\n */\nexport interface RoutingGuardState extends EntityState<RoutingGuardModel> {}\n\n/**\n * Name of the RoutingGuard Store\n */\nexport const ROUTING_GUARD_STORE_NAME = 'routingGuard';\n\n/**\n * RoutingGuard Store Interface\n */\nexport interface RoutingGuardStore {\n /** RoutingGuard state */\n [ROUTING_GUARD_STORE_NAME]: RoutingGuardState;\n}\n","import {\n createEntityAdapter,\n EntityAdapter,\n} from '@ngrx/entity';\nimport {\n ActionCreator,\n createReducer,\n on,\n ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './routing-guard.actions';\nimport {\n RegisteredItemStatus,\n RoutingGuardModel,\n RoutingGuardState,\n} from './routing-guard.state';\n\n/**\n * RoutingGuard Store adapter\n */\nexport const routingGuardAdapter: EntityAdapter<RoutingGuardModel> = createEntityAdapter<RoutingGuardModel>({\n selectId: (model) => model.id\n});\n\n/**\n * RoutingGuard Store initial value\n */\nexport const routingGuardInitialState: RoutingGuardState = routingGuardAdapter.getInitialState({});\n\n/**\n * List of basic actions for RoutingGuard Store\n */\nexport const routingGuardReducerFeatures: ReducerTypes<RoutingGuardState, ActionCreator[]>[] = [\n on(actions.registerRoutingGuardEntity, (state, payload) =>\n routingGuardAdapter.addOne({ id: payload.id, status: RegisteredItemStatus.READY }, state)),\n\n on(actions.setRoutingGuardEntityAsPending, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.PENDING } }, state)),\n\n on(actions.setRoutingGuardEntityAsFailure, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.FAILURE } }, state)),\n\n on(actions.setRoutingGuardEntityAsSuccessAndClearReason, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.SUCCESS, blockingReason: undefined } }, state)),\n\n on(actions.clearRoutingGuardEntities, (state) => routingGuardAdapter.removeAll(state)),\n\n on(actions.clearRoutingGuardEntitiesFailureReason, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.READY, blockingReason: undefined } }, state)),\n\n on(actions.setRoutingGuardEntityFailureWithReason, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.FAILURE, blockingReason: payload.reason } }, state))\n];\n\n/**\n * RoutingGuard Store reducer\n */\nexport const routingGuardReducer = createReducer(\n routingGuardInitialState,\n ...routingGuardReducerFeatures\n);\n","import {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n StoreModule,\n} from '@ngrx/store';\nimport {\n routingGuardReducer,\n} from './routing-guard.reducer';\nimport {\n ROUTING_GUARD_STORE_NAME,\n RoutingGuardState,\n} from './routing-guard.state';\n\n/** Token of the RoutingGuard reducer */\nexport const ROUTING_GUARD_REDUCER_TOKEN = new InjectionToken<ActionReducer<RoutingGuardState, Action>>('Feature RoutingGuard Reducer');\n\n/** Provide default reducer for RoutingGuard store */\nexport function getDefaultRoutingGuardReducer() {\n return routingGuardReducer;\n}\n\n@NgModule({\n imports: [\n StoreModule.forFeature(ROUTING_GUARD_STORE_NAME, ROUTING_GUARD_REDUCER_TOKEN)\n ],\n providers: [\n { provide: ROUTING_GUARD_REDUCER_TOKEN, useFactory: getDefaultRoutingGuardReducer }\n ]\n})\nexport class RoutingGuardStoreModule {\n public static forRoot<T extends RoutingGuardState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<RoutingGuardStoreModule> {\n return {\n ngModule: RoutingGuardStoreModule,\n providers: [\n { provide: ROUTING_GUARD_REDUCER_TOKEN, useFactory: reducerFactory }\n ]\n };\n }\n}\n","import {\n createFeatureSelector,\n createSelector,\n} from '@ngrx/store';\nimport {\n routingGuardAdapter,\n} from './routing-guard.reducer';\nimport {\n RegisteredItemFailureReason,\n RegisteredItemStatus,\n ROUTING_GUARD_STORE_NAME,\n RoutingGuardState,\n} from './routing-guard.state';\n\nconst { selectIds, selectEntities, selectAll, selectTotal } = routingGuardAdapter.getSelectors();\n\n/** Select RoutingGuard State */\nexport const selectRoutingGuardState = createFeatureSelector<RoutingGuardState>(ROUTING_GUARD_STORE_NAME);\n\n/** Select the array of RoutingGuard ids */\nexport const selectRoutingGuardIds = createSelector(selectRoutingGuardState, selectIds);\n\n/** Select the array of RoutingGuard */\nexport const selectAllRoutingGuard = createSelector(selectRoutingGuardState, selectAll);\n\n/** Select the dictionary of RoutingGuard entities */\nexport const selectRoutingGuardEntities = createSelector(selectRoutingGuardState, selectEntities);\n\n/** Select the total RoutingGuard count */\nexport const selectRoutingGuardTotal = createSelector(selectRoutingGuardState, selectTotal);\n\n/**\n * Selector used to retrieve the list of entities' status\n */\nexport const selectRoutingGuardEntitiesStatusList = createSelector(\n selectRoutingGuardState,\n (state: RoutingGuardState) => {\n return Object.keys(state.entities)\n .filter((key) => !!state.entities[key])\n .map((key) => state.entities[key]!.status);\n }\n);\n\n/**\n * Selector used to retrieve the list of entities' blocking reasons for FAILURE status.\n */\nexport const selectRoutingGuardEntitiesBlockingReasons = createSelector(\n selectRoutingGuardState,\n (state: RoutingGuardState) => {\n return Object.values(state.entities)\n .filter((entity) => !!entity && !!entity.blockingReason)\n .map((entity) => entity!.blockingReason!);\n }\n);\n\n/**\n * Selector used to check that no item is in PENDING state.\n * For example, we will rely on this selector to trigger the canDeactivate logic in the RoutingGuard\n */\nexport const hasNoEntitiesInPendingState = createSelector(\n selectRoutingGuardEntitiesStatusList,\n (statusList: string[]) => {\n return !statusList.includes(RegisteredItemStatus.PENDING);\n }\n);\n\n/**\n * Selector used to check that no item is in FAILURE state.\n * For example, we will rely on this selector to authorize or not the navigation in the RoutingGuard\n */\nexport const hasNoEntitiesInFailureState = createSelector(\n selectRoutingGuardEntitiesStatusList,\n (statusList: string[]) => {\n return !statusList.includes(RegisteredItemStatus.FAILURE);\n }\n);\n\n/**\n * Selector used to check that no item is in READY or FAILURE state.\n * For example, we will rely on this selector to trigger the router navigation and display a loader\n */\nexport const hasNoEntityInReadyOrFailureState = createSelector(\n selectRoutingGuardEntitiesStatusList,\n (statusList: RegisteredItemStatus[]) => {\n return !statusList.some((status) => status === RegisteredItemStatus.READY || status === RegisteredItemStatus.FAILURE);\n }\n);\n\n/**\n * Selector used to check that no item is in FAILURE state with a blocking reason provided.\n * Takes `blockingReason: RegisteredItemFailureReason` as aproperty parameter.\n */\nexport const hasNoEntityFailureStateWithReasons = createSelector(\n selectRoutingGuardEntitiesBlockingReasons,\n (reasons: RegisteredItemFailureReason[], properties: { blockingReason: RegisteredItemFailureReason }) => {\n return !reasons.includes(properties.blockingReason);\n }\n);\n","import {\n APP_BASE_HREF,\n} from '@angular/common';\nimport {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport type {\n BuildTimeProperties,\n} from '@o3r/core';\n\n/**\n * AppBaseHref factory function\n * The APP_BASE_HREF will assume one of the following values (ordered by priority):\n * 1- undefined (or disabled) if it's not a PROD environment\n * 2- the content of the data tag data-appbasehref in the body if it exists\n * 3- the content of config.APP_BASE_HREF if defined\n * 4- otherwise, undefined\n * @param config The application environment configuration\n */\nexport function appBaseHrefFactory(config: BuildTimeProperties) {\n if (config.ENVIRONMENT !== 'prod') {\n return;\n }\n const dynamicBaseHref: string | undefined = document.body.dataset.appbasehref;\n if (typeof dynamicBaseHref !== 'undefined') {\n return dynamicBaseHref;\n }\n return typeof config.APP_BASE_HREF === 'string' ? config.APP_BASE_HREF : undefined;\n}\n\nexport const ENVIRONMENT_CONFIG_TOKEN = new InjectionToken<BuildTimeProperties>('Environment config');\n\n@NgModule()\nexport class AppServerRoutingModule {\n /**\n * Injects the APP_BASE_HREF with a custom factory\n * @param config The application environment configuration\n */\n public static forRoot(config: BuildTimeProperties): ModuleWithProviders<AppServerRoutingModule> {\n return {\n ngModule: AppServerRoutingModule,\n providers: [\n { provide: ENVIRONMENT_CONFIG_TOKEN, useValue: config },\n {\n provide: APP_BASE_HREF,\n useFactory: appBaseHrefFactory,\n deps: [ENVIRONMENT_CONFIG_TOKEN]\n }\n ]\n };\n }\n}\n","import {\n Injectable,\n} from '@angular/core';\nimport {\n NavigationEnd,\n PreloadingStrategy,\n Route,\n Router,\n} from '@angular/router';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport {\n filter,\n switchMap,\n} from 'rxjs/operators';\n\n/**\n * Data to inject to the route parameter to specify preloading strategy\n */\nexport interface O3rOnDemandPreloadingData {\n /** List of page reached that trigger preloading */\n preloadOn: string[] | '*' | RegExp;\n}\n\n/**\n * Check if the route has preload instructions\n * @param data Route data\n */\nexport function hasPreloadingOnDemand(data: any): data is O3rOnDemandPreloadingData {\n if (!data) {\n return false;\n }\n\n return (Array.isArray(data.preloadOn) && data.preloadOn.length > 0)\n || data.preloadOn === '*'\n || data.preloadOn instanceof RegExp;\n}\n\n/**\n * Otter Preloading strategy base on previous route\n * @inheritDoc\n */\n@Injectable()\nexport class O3rOnNavigationPreloadingStrategy implements PreloadingStrategy {\n constructor(private readonly router: Router) {}\n\n /**\n * Check if the module should be preloaded based on the data preload array of routes or regex value\n * @param data Route data\n * @param url URL of current page\n */\n private isUrlMatchingPreloadConfig(data: any, url: string): boolean {\n return (Array.isArray(data.preloadOn) && data.preloadOn.includes(url))\n || (data.preloadOn instanceof RegExp && data.preloadOn.test(url));\n }\n\n /** @inheritDoc */\n public preload(route: Route, preload: () => Observable<any>): Observable<any> {\n if ((route.path || route.matcher) && hasPreloadingOnDemand(route.data)) {\n // On application landing page, check the route to preload.\n if (route.data.preloadOn === '*' || this.isUrlMatchingPreloadConfig(route.data, this.router.routerState.snapshot.url)) {\n return preload();\n }\n\n // On route navigation end, load the routes to preload for the current route.\n return this.router.events\n .pipe(\n filter((r) => r instanceof NavigationEnd && this.isUrlMatchingPreloadConfig(route.data, r.url)),\n switchMap(() => preload())\n );\n }\n return of(null);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["actions.registerRoutingGuardEntity","actions.setRoutingGuardEntityAsPending","actions.setRoutingGuardEntityAsFailure","actions.setRoutingGuardEntityAsSuccessAndClearReason","actions.clearRoutingGuardEntities","actions.clearRoutingGuardEntitiesFailureReason","actions.setRoutingGuardEntityFailureWithReason","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"o3r-routing.mjs","sources":["../../src/stores/routing-guard/routing-guard.actions.ts","../../src/stores/routing-guard/extra-effects/ngrx-store-router.effect.ts","../../src/stores/routing-guard/routing-guard.state.ts","../../src/stores/routing-guard/routing-guard.reducer.ts","../../src/stores/routing-guard/routing-guard.module.ts","../../src/stores/routing-guard/routing-guard.selectors.ts","../../src/tools/app-server-routing.module.ts","../../src/tools/on-navigation-strategy.preloader.ts","../../src/o3r-routing.ts"],"sourcesContent":["import {\n createAction,\n props,\n} from '@ngrx/store';\nimport {\n RegisteredItemFailureReason,\n} from './routing-guard.state';\n\n/** Entity Actions */\nconst ACTION_REGISTER_ENTITY = '[RoutingGuard] register an entity';\nconst ACTION_SET_ENTITY_AS_FAILURE = '[RoutingGuard] set an entity state as FAILURE';\nconst ACTION_SET_ENTITY_AS_SUCCESS_AND_CLEAR_REASON = '[RoutingGuard] set an entity state as SUCCESS and clear reason';\nconst ACTION_SET_ENTITY_AS_PENDING = '[RoutingGuard] set an entity state as PENDING';\nconst ACTION_CLEAR_ENTITIES = '[RoutingGuard] clear entities';\nconst ACTION_CLEAR_FAILURE_REASON = '[RoutingGuard] clear failure reason for an entity';\nconst ACTION_SET_ENTITY_AS_FAILURE_WITH_REASON = '[RoutingGuard] set an entity state as FAILURE with a reason';\n\nexport interface RoutingGuardActionPayload {\n /** Id of the block instance */\n id: string;\n}\n\nexport interface RoutingGuardFailureReasonPayload {\n /** Id of the block instance */\n id: string;\n /** Reason for failure */\n reason: RegisteredItemFailureReason;\n}\n\n/**\n * Register a new entity in routing guard store\n */\nexport const registerRoutingGuardEntity = createAction(ACTION_REGISTER_ENTITY, props<RoutingGuardActionPayload>());\n\n/**\n * Set an entity in FAILURE status\n */\nexport const setRoutingGuardEntityAsFailure = createAction(ACTION_SET_ENTITY_AS_FAILURE, props<RoutingGuardActionPayload>());\n\n/**\n * Set an entity in SUCCESS status and clear the reason\n */\nexport const setRoutingGuardEntityAsSuccessAndClearReason = createAction(ACTION_SET_ENTITY_AS_SUCCESS_AND_CLEAR_REASON, props<RoutingGuardActionPayload>());\n\n/**\n * Set an entity in PENDING status\n */\nexport const setRoutingGuardEntityAsPending = createAction(ACTION_SET_ENTITY_AS_PENDING, props<RoutingGuardActionPayload>());\n\n/**\n * Clear only the entities, keeps the other attributes in the state\n */\nexport const clearRoutingGuardEntities = createAction(ACTION_CLEAR_ENTITIES);\n\n/**\n * Clear only the entities, keeps the other attributes in the state\n */\nexport const clearRoutingGuardEntitiesFailureReason = createAction(ACTION_CLEAR_FAILURE_REASON, props<RoutingGuardActionPayload>());\n\n/**\n * Set entity in FAILURE status with a reason\n */\nexport const setRoutingGuardEntityFailureWithReason = createAction(ACTION_SET_ENTITY_AS_FAILURE_WITH_REASON, props<RoutingGuardFailureReasonPayload>());\n","import {\n Injectable,\n} from '@angular/core';\nimport {\n Actions,\n createEffect,\n ofType,\n} from '@ngrx/effects';\nimport {\n BaseRouterStoreState,\n ROUTER_NAVIGATED,\n ROUTER_REQUEST,\n RouterRequestAction,\n} from '@ngrx/router-store';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport {\n clearRoutingGuardEntities,\n} from '../routing-guard.actions';\n\n/**\n * Effect to react on Ngrx router store actions\n */\n@Injectable()\nexport class NgrxStoreRouterEffect {\n /**\n * Clear Router registrations when the active history entry changes (ex : click on back/next button Action)\n */\n public resetRouterRegistrationOnRequest$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ROUTER_REQUEST),\n filter((action: RouterRequestAction<BaseRouterStoreState>) => action.payload.event.navigationTrigger === 'popstate'),\n map(() => clearRoutingGuardEntities())\n )\n );\n\n /**\n * Clear Router registrations when navigation happened\n */\n public resetRouterRegistrationOnNavigated$ = createEffect(() =>\n this.actions$.pipe(\n ofType(ROUTER_NAVIGATED),\n map(() => clearRoutingGuardEntities())\n )\n );\n\n constructor(protected actions$: Actions) {}\n}\n","import {\n EntityState,\n} from '@ngrx/entity';\n\n/** Identifies the status of a registered block */\nexport enum RegisteredItemStatus {\n /** block is ready (async call has not been triggered) */\n READY = 'READY',\n /** block is waiting for async call to resolve */\n PENDING = 'PENDING',\n /** block received the async call result and it's a failure */\n FAILURE = 'FAILURE',\n /** block received the async call result and it's a success */\n SUCCESS = 'SUCCESS'\n}\n\n/** Identifies the failure reason for the registered block */\nexport enum RegisteredItemFailureReason {\n /** Routing Failed because the async call result is failure */\n ASYNC_CALL_FAILURE = 'ASYNC_CALL_FAILURE',\n /** Routing failed because the changes to the form has not been saved */\n FORM_UNSAVED = 'FORM_UNSAVED'\n}\n\n/**\n * RoutingGuard model\n */\nexport interface RoutingGuardModel {\n /** Id of the block instance */\n id: string;\n /** Routing status of the block */\n status: RegisteredItemStatus;\n /** Routing Guard blocking reason */\n blockingReason?: RegisteredItemFailureReason;\n}\n\n/**\n * RoutingGuard store state\n */\nexport interface RoutingGuardState extends EntityState<RoutingGuardModel> {}\n\n/**\n * Name of the RoutingGuard Store\n */\nexport const ROUTING_GUARD_STORE_NAME = 'routingGuard';\n\n/**\n * RoutingGuard Store Interface\n */\nexport interface RoutingGuardStore {\n /** RoutingGuard state */\n [ROUTING_GUARD_STORE_NAME]: RoutingGuardState;\n}\n","import {\n createEntityAdapter,\n EntityAdapter,\n} from '@ngrx/entity';\nimport {\n ActionCreator,\n createReducer,\n on,\n ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './routing-guard.actions';\nimport {\n RegisteredItemStatus,\n RoutingGuardModel,\n RoutingGuardState,\n} from './routing-guard.state';\n\n/**\n * RoutingGuard Store adapter\n */\nexport const routingGuardAdapter: EntityAdapter<RoutingGuardModel> = createEntityAdapter<RoutingGuardModel>({\n selectId: (model) => model.id\n});\n\n/**\n * RoutingGuard Store initial value\n */\nexport const routingGuardInitialState: RoutingGuardState = routingGuardAdapter.getInitialState({});\n\n/**\n * List of basic actions for RoutingGuard Store\n */\nexport const routingGuardReducerFeatures: ReducerTypes<RoutingGuardState, ActionCreator[]>[] = [\n on(actions.registerRoutingGuardEntity, (state, payload) =>\n routingGuardAdapter.addOne({ id: payload.id, status: RegisteredItemStatus.READY }, state)),\n\n on(actions.setRoutingGuardEntityAsPending, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.PENDING } }, state)),\n\n on(actions.setRoutingGuardEntityAsFailure, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.FAILURE } }, state)),\n\n on(actions.setRoutingGuardEntityAsSuccessAndClearReason, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.SUCCESS, blockingReason: undefined } }, state)),\n\n on(actions.clearRoutingGuardEntities, (state) => routingGuardAdapter.removeAll(state)),\n\n on(actions.clearRoutingGuardEntitiesFailureReason, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.READY, blockingReason: undefined } }, state)),\n\n on(actions.setRoutingGuardEntityFailureWithReason, (state, payload) =>\n routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.FAILURE, blockingReason: payload.reason } }, state))\n];\n\n/**\n * RoutingGuard Store reducer\n */\nexport const routingGuardReducer = createReducer(\n routingGuardInitialState,\n ...routingGuardReducerFeatures\n);\n","import {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n StoreModule,\n} from '@ngrx/store';\nimport {\n routingGuardReducer,\n} from './routing-guard.reducer';\nimport {\n ROUTING_GUARD_STORE_NAME,\n RoutingGuardState,\n} from './routing-guard.state';\n\n/** Token of the RoutingGuard reducer */\nexport const ROUTING_GUARD_REDUCER_TOKEN = new InjectionToken<ActionReducer<RoutingGuardState, Action>>('Feature RoutingGuard Reducer');\n\n/** Provide default reducer for RoutingGuard store */\nexport function getDefaultRoutingGuardReducer() {\n return routingGuardReducer;\n}\n\n@NgModule({\n imports: [\n StoreModule.forFeature(ROUTING_GUARD_STORE_NAME, ROUTING_GUARD_REDUCER_TOKEN)\n ],\n providers: [\n { provide: ROUTING_GUARD_REDUCER_TOKEN, useFactory: getDefaultRoutingGuardReducer }\n ]\n})\nexport class RoutingGuardStoreModule {\n public static forRoot<T extends RoutingGuardState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<RoutingGuardStoreModule> {\n return {\n ngModule: RoutingGuardStoreModule,\n providers: [\n { provide: ROUTING_GUARD_REDUCER_TOKEN, useFactory: reducerFactory }\n ]\n };\n }\n}\n","import {\n createFeatureSelector,\n createSelector,\n} from '@ngrx/store';\nimport {\n routingGuardAdapter,\n} from './routing-guard.reducer';\nimport {\n RegisteredItemFailureReason,\n RegisteredItemStatus,\n ROUTING_GUARD_STORE_NAME,\n RoutingGuardState,\n} from './routing-guard.state';\n\nconst { selectIds, selectEntities, selectAll, selectTotal } = routingGuardAdapter.getSelectors();\n\n/** Select RoutingGuard State */\nexport const selectRoutingGuardState = createFeatureSelector<RoutingGuardState>(ROUTING_GUARD_STORE_NAME);\n\n/** Select the array of RoutingGuard ids */\nexport const selectRoutingGuardIds = createSelector(selectRoutingGuardState, selectIds);\n\n/** Select the array of RoutingGuard */\nexport const selectAllRoutingGuard = createSelector(selectRoutingGuardState, selectAll);\n\n/** Select the dictionary of RoutingGuard entities */\nexport const selectRoutingGuardEntities = createSelector(selectRoutingGuardState, selectEntities);\n\n/** Select the total RoutingGuard count */\nexport const selectRoutingGuardTotal = createSelector(selectRoutingGuardState, selectTotal);\n\n/**\n * Selector used to retrieve the list of entities' status\n */\nexport const selectRoutingGuardEntitiesStatusList = createSelector(\n selectRoutingGuardState,\n (state: RoutingGuardState) => {\n return Object.keys(state.entities)\n .filter((key) => !!state.entities[key])\n .map((key) => state.entities[key]!.status);\n }\n);\n\n/**\n * Selector used to retrieve the list of entities' blocking reasons for FAILURE status.\n */\nexport const selectRoutingGuardEntitiesBlockingReasons = createSelector(\n selectRoutingGuardState,\n (state: RoutingGuardState) => {\n return Object.values(state.entities)\n .filter((entity) => !!entity && !!entity.blockingReason)\n .map((entity) => entity!.blockingReason!);\n }\n);\n\n/**\n * Selector used to check that no item is in PENDING state.\n * For example, we will rely on this selector to trigger the canDeactivate logic in the RoutingGuard\n */\nexport const hasNoEntitiesInPendingState = createSelector(\n selectRoutingGuardEntitiesStatusList,\n (statusList: string[]) => {\n return !statusList.includes(RegisteredItemStatus.PENDING);\n }\n);\n\n/**\n * Selector used to check that no item is in FAILURE state.\n * For example, we will rely on this selector to authorize or not the navigation in the RoutingGuard\n */\nexport const hasNoEntitiesInFailureState = createSelector(\n selectRoutingGuardEntitiesStatusList,\n (statusList: string[]) => {\n return !statusList.includes(RegisteredItemStatus.FAILURE);\n }\n);\n\n/**\n * Selector used to check that no item is in READY or FAILURE state.\n * For example, we will rely on this selector to trigger the router navigation and display a loader\n */\nexport const hasNoEntityInReadyOrFailureState = createSelector(\n selectRoutingGuardEntitiesStatusList,\n (statusList: RegisteredItemStatus[]) => {\n return !statusList.some((status) => status === RegisteredItemStatus.READY || status === RegisteredItemStatus.FAILURE);\n }\n);\n\n/**\n * Selector used to check that no item is in FAILURE state with a blocking reason provided.\n * Takes `blockingReason: RegisteredItemFailureReason` as aproperty parameter.\n */\nexport const hasNoEntityFailureStateWithReasons = createSelector(\n selectRoutingGuardEntitiesBlockingReasons,\n (reasons: RegisteredItemFailureReason[], properties: { blockingReason: RegisteredItemFailureReason }) => {\n return !reasons.includes(properties.blockingReason);\n }\n);\n","import {\n APP_BASE_HREF,\n} from '@angular/common';\nimport {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport type {\n BuildTimeProperties,\n} from '@o3r/core';\n\n/**\n * AppBaseHref factory function\n * The APP_BASE_HREF will assume one of the following values (ordered by priority):\n * 1- undefined (or disabled) if it's not a PROD environment\n * 2- the content of the data tag data-appbasehref in the body if it exists\n * 3- the content of config.APP_BASE_HREF if defined\n * 4- otherwise, undefined\n * @param config The application environment configuration\n */\nexport function appBaseHrefFactory(config: BuildTimeProperties) {\n if (config.ENVIRONMENT !== 'prod') {\n return;\n }\n const dynamicBaseHref: string | undefined = document.body.dataset.appbasehref;\n if (typeof dynamicBaseHref !== 'undefined') {\n return dynamicBaseHref;\n }\n return typeof config.APP_BASE_HREF === 'string' ? config.APP_BASE_HREF : undefined;\n}\n\nexport const ENVIRONMENT_CONFIG_TOKEN = new InjectionToken<BuildTimeProperties>('Environment config');\n\n@NgModule()\nexport class AppServerRoutingModule {\n /**\n * Injects the APP_BASE_HREF with a custom factory\n * @param config The application environment configuration\n */\n public static forRoot(config: BuildTimeProperties): ModuleWithProviders<AppServerRoutingModule> {\n return {\n ngModule: AppServerRoutingModule,\n providers: [\n { provide: ENVIRONMENT_CONFIG_TOKEN, useValue: config },\n {\n provide: APP_BASE_HREF,\n useFactory: appBaseHrefFactory,\n deps: [ENVIRONMENT_CONFIG_TOKEN]\n }\n ]\n };\n }\n}\n","import {\n Injectable,\n} from '@angular/core';\nimport {\n NavigationEnd,\n PreloadingStrategy,\n Route,\n Router,\n} from '@angular/router';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport {\n filter,\n switchMap,\n} from 'rxjs/operators';\n\n/**\n * Data to inject to the route parameter to specify preloading strategy\n */\nexport interface O3rOnDemandPreloadingData {\n /** List of page reached that trigger preloading */\n preloadOn: string[] | '*' | RegExp;\n}\n\n/**\n * Check if the route has preload instructions\n * @param data Route data\n */\nexport function hasPreloadingOnDemand(data: any): data is O3rOnDemandPreloadingData {\n if (!data) {\n return false;\n }\n\n return (Array.isArray(data.preloadOn) && data.preloadOn.length > 0)\n || data.preloadOn === '*'\n || data.preloadOn instanceof RegExp;\n}\n\n/**\n * Otter Preloading strategy base on previous route\n * @inheritDoc\n */\n@Injectable()\nexport class O3rOnNavigationPreloadingStrategy implements PreloadingStrategy {\n constructor(private readonly router: Router) {}\n\n /**\n * Check if the module should be preloaded based on the data preload array of routes or regex value\n * @param data Route data\n * @param url URL of current page\n */\n private isUrlMatchingPreloadConfig(data: any, url: string): boolean {\n return (Array.isArray(data.preloadOn) && data.preloadOn.includes(url))\n || (data.preloadOn instanceof RegExp && data.preloadOn.test(url));\n }\n\n /** @inheritDoc */\n public preload(route: Route, preload: () => Observable<any>): Observable<any> {\n if ((route.path || route.matcher) && hasPreloadingOnDemand(route.data)) {\n // On application landing page, check the route to preload.\n if (route.data.preloadOn === '*' || this.isUrlMatchingPreloadConfig(route.data, this.router.routerState.snapshot.url)) {\n return preload();\n }\n\n // On route navigation end, load the routes to preload for the current route.\n return this.router.events\n .pipe(\n filter((r) => r instanceof NavigationEnd && this.isUrlMatchingPreloadConfig(route.data, r.url)),\n switchMap(() => preload())\n );\n }\n return of(null);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["actions.registerRoutingGuardEntity","actions.setRoutingGuardEntityAsPending","actions.setRoutingGuardEntityAsFailure","actions.setRoutingGuardEntityAsSuccessAndClearReason","actions.clearRoutingGuardEntities","actions.clearRoutingGuardEntitiesFailureReason","actions.setRoutingGuardEntityFailureWithReason","i1"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@o3r/routing",
|
|
3
|
-
"version": "12.0.0-next.
|
|
3
|
+
"version": "12.0.0-next.20",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -11,21 +11,22 @@
|
|
|
11
11
|
"otter-module"
|
|
12
12
|
],
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@angular-devkit/schematics": "^
|
|
15
|
-
"@angular/common": "^
|
|
16
|
-
"@angular/core": "^
|
|
17
|
-
"@angular/platform-browser-dynamic": "^
|
|
18
|
-
"@angular/router": "^
|
|
19
|
-
"@ngrx/effects": "^
|
|
20
|
-
"@ngrx/entity": "^
|
|
21
|
-
"@ngrx/router-store": "^
|
|
22
|
-
"@ngrx/store": "^
|
|
23
|
-
"@o3r/core": "^12.0.0-next.
|
|
24
|
-
"@o3r/routing": "^12.0.0-next.
|
|
25
|
-
"@o3r/schematics": "^12.0.0-next.
|
|
26
|
-
"@schematics/angular": "^
|
|
14
|
+
"@angular-devkit/schematics": "^19.0.0",
|
|
15
|
+
"@angular/common": "^19.0.0",
|
|
16
|
+
"@angular/core": "^19.0.0",
|
|
17
|
+
"@angular/platform-browser-dynamic": "^19.0.0",
|
|
18
|
+
"@angular/router": "^19.0.0",
|
|
19
|
+
"@ngrx/effects": "^19.0.0",
|
|
20
|
+
"@ngrx/entity": "^19.0.0",
|
|
21
|
+
"@ngrx/router-store": "^19.0.0",
|
|
22
|
+
"@ngrx/store": "^19.0.0",
|
|
23
|
+
"@o3r/core": "^12.0.0-next.20",
|
|
24
|
+
"@o3r/routing": "^12.0.0-next.20",
|
|
25
|
+
"@o3r/schematics": "^12.0.0-next.20",
|
|
26
|
+
"@schematics/angular": "^19.0.0",
|
|
27
27
|
"jasmine": "^5.0.0",
|
|
28
|
-
"rxjs": "^7.8.1"
|
|
28
|
+
"rxjs": "^7.8.1",
|
|
29
|
+
"ts-node": "~10.9.2"
|
|
29
30
|
},
|
|
30
31
|
"peerDependenciesMeta": {
|
|
31
32
|
"@angular-devkit/schematics": {
|
|
@@ -56,8 +57,6 @@
|
|
|
56
57
|
},
|
|
57
58
|
".": {
|
|
58
59
|
"types": "./index.d.ts",
|
|
59
|
-
"esm2022": "./esm2022/o3r-routing.mjs",
|
|
60
|
-
"esm": "./esm2022/o3r-routing.mjs",
|
|
61
60
|
"default": "./fesm2022/o3r-routing.mjs"
|
|
62
61
|
}
|
|
63
62
|
},
|
package/esm2022/o3r-routing.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public_api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibzNyLXJvdXRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbzNyLXJvdXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
|
package/esm2022/public_api.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './stores/index';
|
|
2
|
-
export * from './tools/index';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0b3Jlcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xzL2luZGV4JztcbiJdfQ==
|
package/esm2022/stores/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './routing-guard/index';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JvdXRpbmctZ3VhcmQvaW5kZXgnO1xuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './ngrx-store-router.effect';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc3RvcmVzL3JvdXRpbmctZ3VhcmQvZXh0cmEtZWZmZWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uZ3J4LXN0b3JlLXJvdXRlci5lZmZlY3QnO1xuIl19
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Injectable, } from '@angular/core';
|
|
2
|
-
import { Actions, createEffect, ofType, } from '@ngrx/effects';
|
|
3
|
-
import { ROUTER_NAVIGATED, ROUTER_REQUEST, } from '@ngrx/router-store';
|
|
4
|
-
import { filter, map, } from 'rxjs/operators';
|
|
5
|
-
import { clearRoutingGuardEntities, } from '../routing-guard.actions';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@ngrx/effects";
|
|
8
|
-
/**
|
|
9
|
-
* Effect to react on Ngrx router store actions
|
|
10
|
-
*/
|
|
11
|
-
export class NgrxStoreRouterEffect {
|
|
12
|
-
constructor(actions$) {
|
|
13
|
-
this.actions$ = actions$;
|
|
14
|
-
/**
|
|
15
|
-
* Clear Router registrations when the active history entry changes (ex : click on back/next button Action)
|
|
16
|
-
*/
|
|
17
|
-
this.resetRouterRegistrationOnRequest$ = createEffect(() => this.actions$.pipe(ofType(ROUTER_REQUEST), filter((action) => action.payload.event.navigationTrigger === 'popstate'), map(() => clearRoutingGuardEntities())));
|
|
18
|
-
/**
|
|
19
|
-
* Clear Router registrations when navigation happened
|
|
20
|
-
*/
|
|
21
|
-
this.resetRouterRegistrationOnNavigated$ = createEffect(() => this.actions$.pipe(ofType(ROUTER_NAVIGATED), map(() => clearRoutingGuardEntities())));
|
|
22
|
-
}
|
|
23
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgrxStoreRouterEffect, deps: [{ token: i1.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgrxStoreRouterEffect }); }
|
|
25
|
-
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgrxStoreRouterEffect, decorators: [{
|
|
27
|
-
type: Injectable
|
|
28
|
-
}], ctorParameters: () => [{ type: i1.Actions }] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC1zdG9yZS1yb3V0ZXIuZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9yb3V0aW5nLWd1YXJkL2V4dHJhLWVmZmVjdHMvbmdyeC1zdG9yZS1yb3V0ZXIuZWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxZQUFZLEVBQ1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsY0FBYyxHQUVmLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLE1BQU0sRUFDTixHQUFHLEdBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wseUJBQXlCLEdBQzFCLE1BQU0sMEJBQTBCLENBQUM7OztBQUVsQzs7R0FFRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFzQmhDLFlBQXNCLFFBQWlCO1FBQWpCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFyQnZDOztXQUVHO1FBQ0ksc0NBQWlDLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUN0QixNQUFNLENBQUMsQ0FBQyxNQUFpRCxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLENBQUMsRUFDcEgsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FDdkMsQ0FDRixDQUFDO1FBRUY7O1dBRUc7UUFDSSx3Q0FBbUMsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFDeEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FDdkMsQ0FDRixDQUFDO0lBRXdDLENBQUM7a0lBdEJoQyxxQkFBcUI7c0lBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9ucyxcbiAgY3JlYXRlRWZmZWN0LFxuICBvZlR5cGUsXG59IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtcbiAgQmFzZVJvdXRlclN0b3JlU3RhdGUsXG4gIFJPVVRFUl9OQVZJR0FURUQsXG4gIFJPVVRFUl9SRVFVRVNULFxuICBSb3V0ZXJSZXF1ZXN0QWN0aW9uLFxufSBmcm9tICdAbmdyeC9yb3V0ZXItc3RvcmUnO1xuaW1wb3J0IHtcbiAgZmlsdGVyLFxuICBtYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIGNsZWFyUm91dGluZ0d1YXJkRW50aXRpZXMsXG59IGZyb20gJy4uL3JvdXRpbmctZ3VhcmQuYWN0aW9ucyc7XG5cbi8qKlxuICogRWZmZWN0IHRvIHJlYWN0IG9uIE5ncnggcm91dGVyIHN0b3JlIGFjdGlvbnNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ncnhTdG9yZVJvdXRlckVmZmVjdCB7XG4gIC8qKlxuICAgKiBDbGVhciBSb3V0ZXIgcmVnaXN0cmF0aW9ucyB3aGVuIHRoZSBhY3RpdmUgaGlzdG9yeSBlbnRyeSBjaGFuZ2VzIChleCA6IGNsaWNrIG9uIGJhY2svbmV4dCBidXR0b24gQWN0aW9uKVxuICAgKi9cbiAgcHVibGljIHJlc2V0Um91dGVyUmVnaXN0cmF0aW9uT25SZXF1ZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShST1VURVJfUkVRVUVTVCksXG4gICAgICBmaWx0ZXIoKGFjdGlvbjogUm91dGVyUmVxdWVzdEFjdGlvbjxCYXNlUm91dGVyU3RvcmVTdGF0ZT4pID0+IGFjdGlvbi5wYXlsb2FkLmV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnKSxcbiAgICAgIG1hcCgoKSA9PiBjbGVhclJvdXRpbmdHdWFyZEVudGl0aWVzKCkpXG4gICAgKVxuICApO1xuXG4gIC8qKlxuICAgKiBDbGVhciBSb3V0ZXIgcmVnaXN0cmF0aW9ucyB3aGVuIG5hdmlnYXRpb24gaGFwcGVuZWRcbiAgICovXG4gIHB1YmxpYyByZXNldFJvdXRlclJlZ2lzdHJhdGlvbk9uTmF2aWdhdGVkJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShST1VURVJfTkFWSUdBVEVEKSxcbiAgICAgIG1hcCgoKSA9PiBjbGVhclJvdXRpbmdHdWFyZEVudGl0aWVzKCkpXG4gICAgKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBhY3Rpb25zJDogQWN0aW9ucykge31cbn1cbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './extra-effects/index';
|
|
2
|
-
export * from './routing-guard.actions';
|
|
3
|
-
export * from './routing-guard.module';
|
|
4
|
-
export * from './routing-guard.reducer';
|
|
5
|
-
export * from './routing-guard.selectors';
|
|
6
|
-
export * from './routing-guard.state';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3RvcmVzL3JvdXRpbmctZ3VhcmQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2V4dHJhLWVmZmVjdHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nLWd1YXJkLmFjdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nLWd1YXJkLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRpbmctZ3VhcmQucmVkdWNlcic7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRpbmctZ3VhcmQuc2VsZWN0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGluZy1ndWFyZC5zdGF0ZSc7XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { createAction, props, } from '@ngrx/store';
|
|
2
|
-
/** Entity Actions */
|
|
3
|
-
const ACTION_REGISTER_ENTITY = '[RoutingGuard] register an entity';
|
|
4
|
-
const ACTION_SET_ENTITY_AS_FAILURE = '[RoutingGuard] set an entity state as FAILURE';
|
|
5
|
-
const ACTION_SET_ENTITY_AS_SUCCESS_AND_CLEAR_REASON = '[RoutingGuard] set an entity state as SUCCESS and clear reason';
|
|
6
|
-
const ACTION_SET_ENTITY_AS_PENDING = '[RoutingGuard] set an entity state as PENDING';
|
|
7
|
-
const ACTION_CLEAR_ENTITIES = '[RoutingGuard] clear entities';
|
|
8
|
-
const ACTION_CLEAR_FAILURE_REASON = '[RoutingGuard] clear failure reason for an entity';
|
|
9
|
-
const ACTION_SET_ENTITY_AS_FAILURE_WITH_REASON = '[RoutingGuard] set an entity state as FAILURE with a reason';
|
|
10
|
-
/**
|
|
11
|
-
* Register a new entity in routing guard store
|
|
12
|
-
*/
|
|
13
|
-
export const registerRoutingGuardEntity = createAction(ACTION_REGISTER_ENTITY, props());
|
|
14
|
-
/**
|
|
15
|
-
* Set an entity in FAILURE status
|
|
16
|
-
*/
|
|
17
|
-
export const setRoutingGuardEntityAsFailure = createAction(ACTION_SET_ENTITY_AS_FAILURE, props());
|
|
18
|
-
/**
|
|
19
|
-
* Set an entity in SUCCESS status and clear the reason
|
|
20
|
-
*/
|
|
21
|
-
export const setRoutingGuardEntityAsSuccessAndClearReason = createAction(ACTION_SET_ENTITY_AS_SUCCESS_AND_CLEAR_REASON, props());
|
|
22
|
-
/**
|
|
23
|
-
* Set an entity in PENDING status
|
|
24
|
-
*/
|
|
25
|
-
export const setRoutingGuardEntityAsPending = createAction(ACTION_SET_ENTITY_AS_PENDING, props());
|
|
26
|
-
/**
|
|
27
|
-
* Clear only the entities, keeps the other attributes in the state
|
|
28
|
-
*/
|
|
29
|
-
export const clearRoutingGuardEntities = createAction(ACTION_CLEAR_ENTITIES);
|
|
30
|
-
/**
|
|
31
|
-
* Clear only the entities, keeps the other attributes in the state
|
|
32
|
-
*/
|
|
33
|
-
export const clearRoutingGuardEntitiesFailureReason = createAction(ACTION_CLEAR_FAILURE_REASON, props());
|
|
34
|
-
/**
|
|
35
|
-
* Set entity in FAILURE status with a reason
|
|
36
|
-
*/
|
|
37
|
-
export const setRoutingGuardEntityFailureWithReason = createAction(ACTION_SET_ENTITY_AS_FAILURE_WITH_REASON, props());
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1ndWFyZC5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9yb3V0aW5nLWd1YXJkL3JvdXRpbmctZ3VhcmQuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGFBQWEsQ0FBQztBQUtyQixxQkFBcUI7QUFDckIsTUFBTSxzQkFBc0IsR0FBRyxtQ0FBbUMsQ0FBQztBQUNuRSxNQUFNLDRCQUE0QixHQUFHLCtDQUErQyxDQUFDO0FBQ3JGLE1BQU0sNkNBQTZDLEdBQUcsZ0VBQWdFLENBQUM7QUFDdkgsTUFBTSw0QkFBNEIsR0FBRywrQ0FBK0MsQ0FBQztBQUNyRixNQUFNLHFCQUFxQixHQUFHLCtCQUErQixDQUFDO0FBQzlELE1BQU0sMkJBQTJCLEdBQUcsbURBQW1ELENBQUM7QUFDeEYsTUFBTSx3Q0FBd0MsR0FBRyw2REFBNkQsQ0FBQztBQWMvRzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLEVBQTZCLENBQUMsQ0FBQztBQUVuSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLEVBQTZCLENBQUMsQ0FBQztBQUU3SDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUFHLFlBQVksQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLLEVBQTZCLENBQUMsQ0FBQztBQUU1Sjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLFlBQVksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLEVBQTZCLENBQUMsQ0FBQztBQUU3SDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTdFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsWUFBWSxDQUFDLDJCQUEyQixFQUFFLEtBQUssRUFBNkIsQ0FBQyxDQUFDO0FBRXBJOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsWUFBWSxDQUFDLHdDQUF3QyxFQUFFLEtBQUssRUFBb0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlQWN0aW9uLFxuICBwcm9wcyxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgUmVnaXN0ZXJlZEl0ZW1GYWlsdXJlUmVhc29uLFxufSBmcm9tICcuL3JvdXRpbmctZ3VhcmQuc3RhdGUnO1xuXG4vKiogRW50aXR5IEFjdGlvbnMgKi9cbmNvbnN0IEFDVElPTl9SRUdJU1RFUl9FTlRJVFkgPSAnW1JvdXRpbmdHdWFyZF0gcmVnaXN0ZXIgYW4gZW50aXR5JztcbmNvbnN0IEFDVElPTl9TRVRfRU5USVRZX0FTX0ZBSUxVUkUgPSAnW1JvdXRpbmdHdWFyZF0gc2V0IGFuIGVudGl0eSBzdGF0ZSBhcyBGQUlMVVJFJztcbmNvbnN0IEFDVElPTl9TRVRfRU5USVRZX0FTX1NVQ0NFU1NfQU5EX0NMRUFSX1JFQVNPTiA9ICdbUm91dGluZ0d1YXJkXSBzZXQgYW4gZW50aXR5IHN0YXRlIGFzIFNVQ0NFU1MgYW5kIGNsZWFyIHJlYXNvbic7XG5jb25zdCBBQ1RJT05fU0VUX0VOVElUWV9BU19QRU5ESU5HID0gJ1tSb3V0aW5nR3VhcmRdIHNldCBhbiBlbnRpdHkgc3RhdGUgYXMgUEVORElORyc7XG5jb25zdCBBQ1RJT05fQ0xFQVJfRU5USVRJRVMgPSAnW1JvdXRpbmdHdWFyZF0gY2xlYXIgZW50aXRpZXMnO1xuY29uc3QgQUNUSU9OX0NMRUFSX0ZBSUxVUkVfUkVBU09OID0gJ1tSb3V0aW5nR3VhcmRdIGNsZWFyIGZhaWx1cmUgcmVhc29uIGZvciBhbiBlbnRpdHknO1xuY29uc3QgQUNUSU9OX1NFVF9FTlRJVFlfQVNfRkFJTFVSRV9XSVRIX1JFQVNPTiA9ICdbUm91dGluZ0d1YXJkXSBzZXQgYW4gZW50aXR5IHN0YXRlIGFzIEZBSUxVUkUgd2l0aCBhIHJlYXNvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ0d1YXJkQWN0aW9uUGF5bG9hZCB7XG4gIC8qKiBJZCBvZiB0aGUgYmxvY2sgaW5zdGFuY2UgKi9cbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nR3VhcmRGYWlsdXJlUmVhc29uUGF5bG9hZCB7XG4gIC8qKiBJZCBvZiB0aGUgYmxvY2sgaW5zdGFuY2UgKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIFJlYXNvbiBmb3IgZmFpbHVyZSAqL1xuICByZWFzb246IFJlZ2lzdGVyZWRJdGVtRmFpbHVyZVJlYXNvbjtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIG5ldyBlbnRpdHkgaW4gcm91dGluZyBndWFyZCBzdG9yZVxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJSb3V0aW5nR3VhcmRFbnRpdHkgPSBjcmVhdGVBY3Rpb24oQUNUSU9OX1JFR0lTVEVSX0VOVElUWSwgcHJvcHM8Um91dGluZ0d1YXJkQWN0aW9uUGF5bG9hZD4oKSk7XG5cbi8qKlxuICogU2V0IGFuIGVudGl0eSBpbiBGQUlMVVJFIHN0YXR1c1xuICovXG5leHBvcnQgY29uc3Qgc2V0Um91dGluZ0d1YXJkRW50aXR5QXNGYWlsdXJlID0gY3JlYXRlQWN0aW9uKEFDVElPTl9TRVRfRU5USVRZX0FTX0ZBSUxVUkUsIHByb3BzPFJvdXRpbmdHdWFyZEFjdGlvblBheWxvYWQ+KCkpO1xuXG4vKipcbiAqIFNldCBhbiBlbnRpdHkgaW4gU1VDQ0VTUyBzdGF0dXMgYW5kIGNsZWFyIHRoZSByZWFzb25cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFJvdXRpbmdHdWFyZEVudGl0eUFzU3VjY2Vzc0FuZENsZWFyUmVhc29uID0gY3JlYXRlQWN0aW9uKEFDVElPTl9TRVRfRU5USVRZX0FTX1NVQ0NFU1NfQU5EX0NMRUFSX1JFQVNPTiwgcHJvcHM8Um91dGluZ0d1YXJkQWN0aW9uUGF5bG9hZD4oKSk7XG5cbi8qKlxuICogU2V0IGFuIGVudGl0eSBpbiBQRU5ESU5HIHN0YXR1c1xuICovXG5leHBvcnQgY29uc3Qgc2V0Um91dGluZ0d1YXJkRW50aXR5QXNQZW5kaW5nID0gY3JlYXRlQWN0aW9uKEFDVElPTl9TRVRfRU5USVRZX0FTX1BFTkRJTkcsIHByb3BzPFJvdXRpbmdHdWFyZEFjdGlvblBheWxvYWQ+KCkpO1xuXG4vKipcbiAqIENsZWFyIG9ubHkgdGhlIGVudGl0aWVzLCBrZWVwcyB0aGUgb3RoZXIgYXR0cmlidXRlcyBpbiB0aGUgc3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGNsZWFyUm91dGluZ0d1YXJkRW50aXRpZXMgPSBjcmVhdGVBY3Rpb24oQUNUSU9OX0NMRUFSX0VOVElUSUVTKTtcblxuLyoqXG4gKiBDbGVhciBvbmx5IHRoZSBlbnRpdGllcywga2VlcHMgdGhlIG90aGVyIGF0dHJpYnV0ZXMgaW4gdGhlIHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhclJvdXRpbmdHdWFyZEVudGl0aWVzRmFpbHVyZVJlYXNvbiA9IGNyZWF0ZUFjdGlvbihBQ1RJT05fQ0xFQVJfRkFJTFVSRV9SRUFTT04sIHByb3BzPFJvdXRpbmdHdWFyZEFjdGlvblBheWxvYWQ+KCkpO1xuXG4vKipcbiAqIFNldCBlbnRpdHkgaW4gRkFJTFVSRSBzdGF0dXMgd2l0aCBhIHJlYXNvblxuICovXG5leHBvcnQgY29uc3Qgc2V0Um91dGluZ0d1YXJkRW50aXR5RmFpbHVyZVdpdGhSZWFzb24gPSBjcmVhdGVBY3Rpb24oQUNUSU9OX1NFVF9FTlRJVFlfQVNfRkFJTFVSRV9XSVRIX1JFQVNPTiwgcHJvcHM8Um91dGluZ0d1YXJkRmFpbHVyZVJlYXNvblBheWxvYWQ+KCkpO1xuIl19
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { InjectionToken, NgModule, } from '@angular/core';
|
|
2
|
-
import { StoreModule, } from '@ngrx/store';
|
|
3
|
-
import { routingGuardReducer, } from './routing-guard.reducer';
|
|
4
|
-
import { ROUTING_GUARD_STORE_NAME, } from './routing-guard.state';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@ngrx/store";
|
|
7
|
-
/** Token of the RoutingGuard reducer */
|
|
8
|
-
export const ROUTING_GUARD_REDUCER_TOKEN = new InjectionToken('Feature RoutingGuard Reducer');
|
|
9
|
-
/** Provide default reducer for RoutingGuard store */
|
|
10
|
-
export function getDefaultRoutingGuardReducer() {
|
|
11
|
-
return routingGuardReducer;
|
|
12
|
-
}
|
|
13
|
-
export class RoutingGuardStoreModule {
|
|
14
|
-
static forRoot(reducerFactory) {
|
|
15
|
-
return {
|
|
16
|
-
ngModule: RoutingGuardStoreModule,
|
|
17
|
-
providers: [
|
|
18
|
-
{ provide: ROUTING_GUARD_REDUCER_TOKEN, useFactory: reducerFactory }
|
|
19
|
-
]
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RoutingGuardStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
23
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RoutingGuardStoreModule, imports: [i1.StoreFeatureModule] }); }
|
|
24
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RoutingGuardStoreModule, providers: [
|
|
25
|
-
{ provide: ROUTING_GUARD_REDUCER_TOKEN, useFactory: getDefaultRoutingGuardReducer }
|
|
26
|
-
], imports: [StoreModule.forFeature(ROUTING_GUARD_STORE_NAME, ROUTING_GUARD_REDUCER_TOKEN)] }); }
|
|
27
|
-
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RoutingGuardStoreModule, decorators: [{
|
|
29
|
-
type: NgModule,
|
|
30
|
-
args: [{
|
|
31
|
-
imports: [
|
|
32
|
-
StoreModule.forFeature(ROUTING_GUARD_STORE_NAME, ROUTING_GUARD_REDUCER_TOKEN)
|
|
33
|
-
],
|
|
34
|
-
providers: [
|
|
35
|
-
{ provide: ROUTING_GUARD_REDUCER_TOKEN, useFactory: getDefaultRoutingGuardReducer }
|
|
36
|
-
]
|
|
37
|
-
}]
|
|
38
|
-
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1ndWFyZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3RvcmVzL3JvdXRpbmctZ3VhcmQvcm91dGluZy1ndWFyZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFFZCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsR0FDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsbUJBQW1CLEdBQ3BCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLHdCQUF3QixHQUV6QixNQUFNLHVCQUF1QixDQUFDOzs7QUFFL0Isd0NBQXdDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUEyQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRXhJLHFEQUFxRDtBQUNyRCxNQUFNLFVBQVUsNkJBQTZCO0lBQzNDLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQztBQVVELE1BQU0sT0FBTyx1QkFBdUI7SUFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBOEIsY0FBOEM7UUFDL0YsT0FBTztZQUNMLFFBQVEsRUFBRSx1QkFBdUI7WUFDakMsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUU7YUFDckU7U0FDRixDQUFDO0lBQ0osQ0FBQztrSUFSVSx1QkFBdUI7bUlBQXZCLHVCQUF1QjttSUFBdkIsdUJBQXVCLGFBSnZCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsVUFBVSxFQUFFLDZCQUE2QixFQUFFO1NBQ3BGLFlBSkMsV0FBVyxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSwyQkFBMkIsQ0FBQzs7NEZBTXBFLHVCQUF1QjtrQkFSbkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSwyQkFBMkIsQ0FBQztxQkFDOUU7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFVBQVUsRUFBRSw2QkFBNkIsRUFBRTtxQkFDcEY7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3Rpb25Ub2tlbixcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgTmdNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBBY3Rpb25SZWR1Y2VyLFxuICBTdG9yZU1vZHVsZSxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgcm91dGluZ0d1YXJkUmVkdWNlcixcbn0gZnJvbSAnLi9yb3V0aW5nLWd1YXJkLnJlZHVjZXInO1xuaW1wb3J0IHtcbiAgUk9VVElOR19HVUFSRF9TVE9SRV9OQU1FLFxuICBSb3V0aW5nR3VhcmRTdGF0ZSxcbn0gZnJvbSAnLi9yb3V0aW5nLWd1YXJkLnN0YXRlJztcblxuLyoqIFRva2VuIG9mIHRoZSBSb3V0aW5nR3VhcmQgcmVkdWNlciAqL1xuZXhwb3J0IGNvbnN0IFJPVVRJTkdfR1VBUkRfUkVEVUNFUl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBY3Rpb25SZWR1Y2VyPFJvdXRpbmdHdWFyZFN0YXRlLCBBY3Rpb24+PignRmVhdHVyZSBSb3V0aW5nR3VhcmQgUmVkdWNlcicpO1xuXG4vKiogUHJvdmlkZSBkZWZhdWx0IHJlZHVjZXIgZm9yIFJvdXRpbmdHdWFyZCBzdG9yZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRSb3V0aW5nR3VhcmRSZWR1Y2VyKCkge1xuICByZXR1cm4gcm91dGluZ0d1YXJkUmVkdWNlcjtcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoUk9VVElOR19HVUFSRF9TVE9SRV9OQU1FLCBST1VUSU5HX0dVQVJEX1JFRFVDRVJfVE9LRU4pXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogUk9VVElOR19HVUFSRF9SRURVQ0VSX1RPS0VOLCB1c2VGYWN0b3J5OiBnZXREZWZhdWx0Um91dGluZ0d1YXJkUmVkdWNlciB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUm91dGluZ0d1YXJkU3RvcmVNb2R1bGUge1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3Q8VCBleHRlbmRzIFJvdXRpbmdHdWFyZFN0YXRlPihyZWR1Y2VyRmFjdG9yeTogKCkgPT4gQWN0aW9uUmVkdWNlcjxULCBBY3Rpb24+KTogTW9kdWxlV2l0aFByb3ZpZGVyczxSb3V0aW5nR3VhcmRTdG9yZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogUm91dGluZ0d1YXJkU3RvcmVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBST1VUSU5HX0dVQVJEX1JFRFVDRVJfVE9LRU4sIHVzZUZhY3Rvcnk6IHJlZHVjZXJGYWN0b3J5IH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { createEntityAdapter, } from '@ngrx/entity';
|
|
2
|
-
import { createReducer, on, } from '@ngrx/store';
|
|
3
|
-
import * as actions from './routing-guard.actions';
|
|
4
|
-
import { RegisteredItemStatus, } from './routing-guard.state';
|
|
5
|
-
/**
|
|
6
|
-
* RoutingGuard Store adapter
|
|
7
|
-
*/
|
|
8
|
-
export const routingGuardAdapter = createEntityAdapter({
|
|
9
|
-
selectId: (model) => model.id
|
|
10
|
-
});
|
|
11
|
-
/**
|
|
12
|
-
* RoutingGuard Store initial value
|
|
13
|
-
*/
|
|
14
|
-
export const routingGuardInitialState = routingGuardAdapter.getInitialState({});
|
|
15
|
-
/**
|
|
16
|
-
* List of basic actions for RoutingGuard Store
|
|
17
|
-
*/
|
|
18
|
-
export const routingGuardReducerFeatures = [
|
|
19
|
-
on(actions.registerRoutingGuardEntity, (state, payload) => routingGuardAdapter.addOne({ id: payload.id, status: RegisteredItemStatus.READY }, state)),
|
|
20
|
-
on(actions.setRoutingGuardEntityAsPending, (state, payload) => routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.PENDING } }, state)),
|
|
21
|
-
on(actions.setRoutingGuardEntityAsFailure, (state, payload) => routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.FAILURE } }, state)),
|
|
22
|
-
on(actions.setRoutingGuardEntityAsSuccessAndClearReason, (state, payload) => routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.SUCCESS, blockingReason: undefined } }, state)),
|
|
23
|
-
on(actions.clearRoutingGuardEntities, (state) => routingGuardAdapter.removeAll(state)),
|
|
24
|
-
on(actions.clearRoutingGuardEntitiesFailureReason, (state, payload) => routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.READY, blockingReason: undefined } }, state)),
|
|
25
|
-
on(actions.setRoutingGuardEntityFailureWithReason, (state, payload) => routingGuardAdapter.updateOne({ id: payload.id, changes: { status: RegisteredItemStatus.FAILURE, blockingReason: payload.reason } }, state))
|
|
26
|
-
];
|
|
27
|
-
/**
|
|
28
|
-
* RoutingGuard Store reducer
|
|
29
|
-
*/
|
|
30
|
-
export const routingGuardReducer = createReducer(routingGuardInitialState, ...routingGuardReducerFeatures);
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1ndWFyZC5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9yb3V0aW5nLWd1YXJkL3JvdXRpbmctZ3VhcmQucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEdBRXBCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFFTCxhQUFhLEVBQ2IsRUFBRSxHQUVILE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sS0FBSyxPQUFPLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUNMLG9CQUFvQixHQUdyQixNQUFNLHVCQUF1QixDQUFDO0FBRS9COztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXFDLG1CQUFtQixDQUFvQjtJQUMxRyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0NBQzlCLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXNCLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUVuRzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUF1RDtJQUM3RixFQUFFLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ3hELG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUU1RixFQUFFLENBQUMsT0FBTyxDQUFDLDhCQUE4QixFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQzVELG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTlHLEVBQUUsQ0FBQyxPQUFPLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDNUQsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFOUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyw0Q0FBNEMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUMxRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXpJLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV0RixFQUFFLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ3BFLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFdkksRUFBRSxDQUFDLE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUNwRSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsb0JBQW9CLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztDQUMvSSxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxhQUFhLENBQzlDLHdCQUF3QixFQUN4QixHQUFHLDJCQUEyQixDQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlRW50aXR5QWRhcHRlcixcbiAgRW50aXR5QWRhcHRlcixcbn0gZnJvbSAnQG5ncngvZW50aXR5JztcbmltcG9ydCB7XG4gIEFjdGlvbkNyZWF0b3IsXG4gIGNyZWF0ZVJlZHVjZXIsXG4gIG9uLFxuICBSZWR1Y2VyVHlwZXMsXG59IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGFjdGlvbnMgZnJvbSAnLi9yb3V0aW5nLWd1YXJkLmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgUmVnaXN0ZXJlZEl0ZW1TdGF0dXMsXG4gIFJvdXRpbmdHdWFyZE1vZGVsLFxuICBSb3V0aW5nR3VhcmRTdGF0ZSxcbn0gZnJvbSAnLi9yb3V0aW5nLWd1YXJkLnN0YXRlJztcblxuLyoqXG4gKiBSb3V0aW5nR3VhcmQgU3RvcmUgYWRhcHRlclxuICovXG5leHBvcnQgY29uc3Qgcm91dGluZ0d1YXJkQWRhcHRlcjogRW50aXR5QWRhcHRlcjxSb3V0aW5nR3VhcmRNb2RlbD4gPSBjcmVhdGVFbnRpdHlBZGFwdGVyPFJvdXRpbmdHdWFyZE1vZGVsPih7XG4gIHNlbGVjdElkOiAobW9kZWwpID0+IG1vZGVsLmlkXG59KTtcblxuLyoqXG4gKiBSb3V0aW5nR3VhcmQgU3RvcmUgaW5pdGlhbCB2YWx1ZVxuICovXG5leHBvcnQgY29uc3Qgcm91dGluZ0d1YXJkSW5pdGlhbFN0YXRlOiBSb3V0aW5nR3VhcmRTdGF0ZSA9IHJvdXRpbmdHdWFyZEFkYXB0ZXIuZ2V0SW5pdGlhbFN0YXRlKHt9KTtcblxuLyoqXG4gKiAgTGlzdCBvZiBiYXNpYyBhY3Rpb25zIGZvciBSb3V0aW5nR3VhcmQgU3RvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IHJvdXRpbmdHdWFyZFJlZHVjZXJGZWF0dXJlczogUmVkdWNlclR5cGVzPFJvdXRpbmdHdWFyZFN0YXRlLCBBY3Rpb25DcmVhdG9yW10+W10gPSBbXG4gIG9uKGFjdGlvbnMucmVnaXN0ZXJSb3V0aW5nR3VhcmRFbnRpdHksIChzdGF0ZSwgcGF5bG9hZCkgPT5cbiAgICByb3V0aW5nR3VhcmRBZGFwdGVyLmFkZE9uZSh7IGlkOiBwYXlsb2FkLmlkLCBzdGF0dXM6IFJlZ2lzdGVyZWRJdGVtU3RhdHVzLlJFQURZIH0sIHN0YXRlKSksXG5cbiAgb24oYWN0aW9ucy5zZXRSb3V0aW5nR3VhcmRFbnRpdHlBc1BlbmRpbmcsIChzdGF0ZSwgcGF5bG9hZCkgPT5cbiAgICByb3V0aW5nR3VhcmRBZGFwdGVyLnVwZGF0ZU9uZSh7IGlkOiBwYXlsb2FkLmlkLCBjaGFuZ2VzOiB7IHN0YXR1czogUmVnaXN0ZXJlZEl0ZW1TdGF0dXMuUEVORElORyB9IH0sIHN0YXRlKSksXG5cbiAgb24oYWN0aW9ucy5zZXRSb3V0aW5nR3VhcmRFbnRpdHlBc0ZhaWx1cmUsIChzdGF0ZSwgcGF5bG9hZCkgPT5cbiAgICByb3V0aW5nR3VhcmRBZGFwdGVyLnVwZGF0ZU9uZSh7IGlkOiBwYXlsb2FkLmlkLCBjaGFuZ2VzOiB7IHN0YXR1czogUmVnaXN0ZXJlZEl0ZW1TdGF0dXMuRkFJTFVSRSB9IH0sIHN0YXRlKSksXG5cbiAgb24oYWN0aW9ucy5zZXRSb3V0aW5nR3VhcmRFbnRpdHlBc1N1Y2Nlc3NBbmRDbGVhclJlYXNvbiwgKHN0YXRlLCBwYXlsb2FkKSA9PlxuICAgIHJvdXRpbmdHdWFyZEFkYXB0ZXIudXBkYXRlT25lKHsgaWQ6IHBheWxvYWQuaWQsIGNoYW5nZXM6IHsgc3RhdHVzOiBSZWdpc3RlcmVkSXRlbVN0YXR1cy5TVUNDRVNTLCBibG9ja2luZ1JlYXNvbjogdW5kZWZpbmVkIH0gfSwgc3RhdGUpKSxcblxuICBvbihhY3Rpb25zLmNsZWFyUm91dGluZ0d1YXJkRW50aXRpZXMsIChzdGF0ZSkgPT4gcm91dGluZ0d1YXJkQWRhcHRlci5yZW1vdmVBbGwoc3RhdGUpKSxcblxuICBvbihhY3Rpb25zLmNsZWFyUm91dGluZ0d1YXJkRW50aXRpZXNGYWlsdXJlUmVhc29uLCAoc3RhdGUsIHBheWxvYWQpID0+XG4gICAgcm91dGluZ0d1YXJkQWRhcHRlci51cGRhdGVPbmUoeyBpZDogcGF5bG9hZC5pZCwgY2hhbmdlczogeyBzdGF0dXM6IFJlZ2lzdGVyZWRJdGVtU3RhdHVzLlJFQURZLCBibG9ja2luZ1JlYXNvbjogdW5kZWZpbmVkIH0gfSwgc3RhdGUpKSxcblxuICBvbihhY3Rpb25zLnNldFJvdXRpbmdHdWFyZEVudGl0eUZhaWx1cmVXaXRoUmVhc29uLCAoc3RhdGUsIHBheWxvYWQpID0+XG4gICAgcm91dGluZ0d1YXJkQWRhcHRlci51cGRhdGVPbmUoeyBpZDogcGF5bG9hZC5pZCwgY2hhbmdlczogeyBzdGF0dXM6IFJlZ2lzdGVyZWRJdGVtU3RhdHVzLkZBSUxVUkUsIGJsb2NraW5nUmVhc29uOiBwYXlsb2FkLnJlYXNvbiB9IH0sIHN0YXRlKSlcbl07XG5cbi8qKlxuICogUm91dGluZ0d1YXJkIFN0b3JlIHJlZHVjZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHJvdXRpbmdHdWFyZFJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKFxuICByb3V0aW5nR3VhcmRJbml0aWFsU3RhdGUsXG4gIC4uLnJvdXRpbmdHdWFyZFJlZHVjZXJGZWF0dXJlc1xuKTtcbiJdfQ==
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { createFeatureSelector, createSelector, } from '@ngrx/store';
|
|
2
|
-
import { routingGuardAdapter, } from './routing-guard.reducer';
|
|
3
|
-
import { RegisteredItemStatus, ROUTING_GUARD_STORE_NAME, } from './routing-guard.state';
|
|
4
|
-
const { selectIds, selectEntities, selectAll, selectTotal } = routingGuardAdapter.getSelectors();
|
|
5
|
-
/** Select RoutingGuard State */
|
|
6
|
-
export const selectRoutingGuardState = createFeatureSelector(ROUTING_GUARD_STORE_NAME);
|
|
7
|
-
/** Select the array of RoutingGuard ids */
|
|
8
|
-
export const selectRoutingGuardIds = createSelector(selectRoutingGuardState, selectIds);
|
|
9
|
-
/** Select the array of RoutingGuard */
|
|
10
|
-
export const selectAllRoutingGuard = createSelector(selectRoutingGuardState, selectAll);
|
|
11
|
-
/** Select the dictionary of RoutingGuard entities */
|
|
12
|
-
export const selectRoutingGuardEntities = createSelector(selectRoutingGuardState, selectEntities);
|
|
13
|
-
/** Select the total RoutingGuard count */
|
|
14
|
-
export const selectRoutingGuardTotal = createSelector(selectRoutingGuardState, selectTotal);
|
|
15
|
-
/**
|
|
16
|
-
* Selector used to retrieve the list of entities' status
|
|
17
|
-
*/
|
|
18
|
-
export const selectRoutingGuardEntitiesStatusList = createSelector(selectRoutingGuardState, (state) => {
|
|
19
|
-
return Object.keys(state.entities)
|
|
20
|
-
.filter((key) => !!state.entities[key])
|
|
21
|
-
.map((key) => state.entities[key].status);
|
|
22
|
-
});
|
|
23
|
-
/**
|
|
24
|
-
* Selector used to retrieve the list of entities' blocking reasons for FAILURE status.
|
|
25
|
-
*/
|
|
26
|
-
export const selectRoutingGuardEntitiesBlockingReasons = createSelector(selectRoutingGuardState, (state) => {
|
|
27
|
-
return Object.values(state.entities)
|
|
28
|
-
.filter((entity) => !!entity && !!entity.blockingReason)
|
|
29
|
-
.map((entity) => entity.blockingReason);
|
|
30
|
-
});
|
|
31
|
-
/**
|
|
32
|
-
* Selector used to check that no item is in PENDING state.
|
|
33
|
-
* For example, we will rely on this selector to trigger the canDeactivate logic in the RoutingGuard
|
|
34
|
-
*/
|
|
35
|
-
export const hasNoEntitiesInPendingState = createSelector(selectRoutingGuardEntitiesStatusList, (statusList) => {
|
|
36
|
-
return !statusList.includes(RegisteredItemStatus.PENDING);
|
|
37
|
-
});
|
|
38
|
-
/**
|
|
39
|
-
* Selector used to check that no item is in FAILURE state.
|
|
40
|
-
* For example, we will rely on this selector to authorize or not the navigation in the RoutingGuard
|
|
41
|
-
*/
|
|
42
|
-
export const hasNoEntitiesInFailureState = createSelector(selectRoutingGuardEntitiesStatusList, (statusList) => {
|
|
43
|
-
return !statusList.includes(RegisteredItemStatus.FAILURE);
|
|
44
|
-
});
|
|
45
|
-
/**
|
|
46
|
-
* Selector used to check that no item is in READY or FAILURE state.
|
|
47
|
-
* For example, we will rely on this selector to trigger the router navigation and display a loader
|
|
48
|
-
*/
|
|
49
|
-
export const hasNoEntityInReadyOrFailureState = createSelector(selectRoutingGuardEntitiesStatusList, (statusList) => {
|
|
50
|
-
return !statusList.some((status) => status === RegisteredItemStatus.READY || status === RegisteredItemStatus.FAILURE);
|
|
51
|
-
});
|
|
52
|
-
/**
|
|
53
|
-
* Selector used to check that no item is in FAILURE state with a blocking reason provided.
|
|
54
|
-
* Takes `blockingReason: RegisteredItemFailureReason` as aproperty parameter.
|
|
55
|
-
*/
|
|
56
|
-
export const hasNoEntityFailureStateWithReasons = createSelector(selectRoutingGuardEntitiesBlockingReasons, (reasons, properties) => {
|
|
57
|
-
return !reasons.includes(properties.blockingReason);
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1ndWFyZC5zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc3RvcmVzL3JvdXRpbmctZ3VhcmQvcm91dGluZy1ndWFyZC5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLG1CQUFtQixHQUNwQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsd0JBQXdCLEdBRXpCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsTUFBTSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0FBRWpHLGdDQUFnQztBQUNoQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxxQkFBcUIsQ0FBb0Isd0JBQXdCLENBQUMsQ0FBQztBQUUxRywyQ0FBMkM7QUFDM0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUFDLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRXhGLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFeEYscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUVsRywwQ0FBMEM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxDQUFDLHVCQUF1QixFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsY0FBYyxDQUNoRSx1QkFBdUIsRUFDdkIsQ0FBQyxLQUF3QixFQUFFLEVBQUU7SUFDM0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDL0IsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUNGLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFHLGNBQWMsQ0FDckUsdUJBQXVCLEVBQ3ZCLENBQUMsS0FBd0IsRUFBRSxFQUFFO0lBQzNCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1NBQ2pDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztTQUN2RCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU8sQ0FBQyxjQUFlLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQ0YsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLGNBQWMsQ0FDdkQsb0NBQW9DLEVBQ3BDLENBQUMsVUFBb0IsRUFBRSxFQUFFO0lBQ3ZCLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FDRixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsY0FBYyxDQUN2RCxvQ0FBb0MsRUFDcEMsQ0FBQyxVQUFvQixFQUFFLEVBQUU7SUFDdkIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxjQUFjLENBQzVELG9DQUFvQyxFQUNwQyxDQUFDLFVBQWtDLEVBQUUsRUFBRTtJQUNyQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLG9CQUFvQixDQUFDLEtBQUssSUFBSSxNQUFNLEtBQUssb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEgsQ0FBQyxDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxjQUFjLENBQzlELHlDQUF5QyxFQUN6QyxDQUFDLE9BQXNDLEVBQUUsVUFBMkQsRUFBRSxFQUFFO0lBQ3RHLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUZlYXR1cmVTZWxlY3RvcixcbiAgY3JlYXRlU2VsZWN0b3IsXG59IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIHJvdXRpbmdHdWFyZEFkYXB0ZXIsXG59IGZyb20gJy4vcm91dGluZy1ndWFyZC5yZWR1Y2VyJztcbmltcG9ydCB7XG4gIFJlZ2lzdGVyZWRJdGVtRmFpbHVyZVJlYXNvbixcbiAgUmVnaXN0ZXJlZEl0ZW1TdGF0dXMsXG4gIFJPVVRJTkdfR1VBUkRfU1RPUkVfTkFNRSxcbiAgUm91dGluZ0d1YXJkU3RhdGUsXG59IGZyb20gJy4vcm91dGluZy1ndWFyZC5zdGF0ZSc7XG5cbmNvbnN0IHsgc2VsZWN0SWRzLCBzZWxlY3RFbnRpdGllcywgc2VsZWN0QWxsLCBzZWxlY3RUb3RhbCB9ID0gcm91dGluZ0d1YXJkQWRhcHRlci5nZXRTZWxlY3RvcnMoKTtcblxuLyoqIFNlbGVjdCBSb3V0aW5nR3VhcmQgU3RhdGUgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSb3V0aW5nR3VhcmRTdGF0ZSA9IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxSb3V0aW5nR3VhcmRTdGF0ZT4oUk9VVElOR19HVUFSRF9TVE9SRV9OQU1FKTtcblxuLyoqIFNlbGVjdCB0aGUgYXJyYXkgb2YgUm91dGluZ0d1YXJkIGlkcyAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJvdXRpbmdHdWFyZElkcyA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJvdXRpbmdHdWFyZFN0YXRlLCBzZWxlY3RJZHMpO1xuXG4vKiogU2VsZWN0IHRoZSBhcnJheSBvZiBSb3V0aW5nR3VhcmQgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RBbGxSb3V0aW5nR3VhcmQgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RSb3V0aW5nR3VhcmRTdGF0ZSwgc2VsZWN0QWxsKTtcblxuLyoqIFNlbGVjdCB0aGUgZGljdGlvbmFyeSBvZiBSb3V0aW5nR3VhcmQgZW50aXRpZXMgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSb3V0aW5nR3VhcmRFbnRpdGllcyA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJvdXRpbmdHdWFyZFN0YXRlLCBzZWxlY3RFbnRpdGllcyk7XG5cbi8qKiBTZWxlY3QgdGhlIHRvdGFsIFJvdXRpbmdHdWFyZCBjb3VudCAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJvdXRpbmdHdWFyZFRvdGFsID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0Um91dGluZ0d1YXJkU3RhdGUsIHNlbGVjdFRvdGFsKTtcblxuLyoqXG4gKiBTZWxlY3RvciB1c2VkIHRvIHJldHJpZXZlIHRoZSBsaXN0IG9mIGVudGl0aWVzJyBzdGF0dXNcbiAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJvdXRpbmdHdWFyZEVudGl0aWVzU3RhdHVzTGlzdCA9IGNyZWF0ZVNlbGVjdG9yKFxuICBzZWxlY3RSb3V0aW5nR3VhcmRTdGF0ZSxcbiAgKHN0YXRlOiBSb3V0aW5nR3VhcmRTdGF0ZSkgPT4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5lbnRpdGllcylcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gISFzdGF0ZS5lbnRpdGllc1trZXldKVxuICAgICAgLm1hcCgoa2V5KSA9PiBzdGF0ZS5lbnRpdGllc1trZXldIS5zdGF0dXMpO1xuICB9XG4pO1xuXG4vKipcbiAqIFNlbGVjdG9yIHVzZWQgdG8gcmV0cmlldmUgdGhlIGxpc3Qgb2YgZW50aXRpZXMnIGJsb2NraW5nIHJlYXNvbnMgZm9yIEZBSUxVUkUgc3RhdHVzLlxuICovXG5leHBvcnQgY29uc3Qgc2VsZWN0Um91dGluZ0d1YXJkRW50aXRpZXNCbG9ja2luZ1JlYXNvbnMgPSBjcmVhdGVTZWxlY3RvcihcbiAgc2VsZWN0Um91dGluZ0d1YXJkU3RhdGUsXG4gIChzdGF0ZTogUm91dGluZ0d1YXJkU3RhdGUpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhzdGF0ZS5lbnRpdGllcylcbiAgICAgIC5maWx0ZXIoKGVudGl0eSkgPT4gISFlbnRpdHkgJiYgISFlbnRpdHkuYmxvY2tpbmdSZWFzb24pXG4gICAgICAubWFwKChlbnRpdHkpID0+IGVudGl0eSEuYmxvY2tpbmdSZWFzb24hKTtcbiAgfVxuKTtcblxuLyoqXG4gKiBTZWxlY3RvciB1c2VkIHRvIGNoZWNrIHRoYXQgbm8gaXRlbSBpcyBpbiBQRU5ESU5HIHN0YXRlLlxuICogRm9yIGV4YW1wbGUsIHdlIHdpbGwgcmVseSBvbiB0aGlzIHNlbGVjdG9yIHRvIHRyaWdnZXIgdGhlIGNhbkRlYWN0aXZhdGUgbG9naWMgaW4gdGhlIFJvdXRpbmdHdWFyZFxuICovXG5leHBvcnQgY29uc3QgaGFzTm9FbnRpdGllc0luUGVuZGluZ1N0YXRlID0gY3JlYXRlU2VsZWN0b3IoXG4gIHNlbGVjdFJvdXRpbmdHdWFyZEVudGl0aWVzU3RhdHVzTGlzdCxcbiAgKHN0YXR1c0xpc3Q6IHN0cmluZ1tdKSA9PiB7XG4gICAgcmV0dXJuICFzdGF0dXNMaXN0LmluY2x1ZGVzKFJlZ2lzdGVyZWRJdGVtU3RhdHVzLlBFTkRJTkcpO1xuICB9XG4pO1xuXG4vKipcbiAqIFNlbGVjdG9yIHVzZWQgdG8gY2hlY2sgdGhhdCBubyBpdGVtIGlzIGluIEZBSUxVUkUgc3RhdGUuXG4gKiBGb3IgZXhhbXBsZSwgd2Ugd2lsbCByZWx5IG9uIHRoaXMgc2VsZWN0b3IgdG8gYXV0aG9yaXplIG9yIG5vdCB0aGUgbmF2aWdhdGlvbiBpbiB0aGUgUm91dGluZ0d1YXJkXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNOb0VudGl0aWVzSW5GYWlsdXJlU3RhdGUgPSBjcmVhdGVTZWxlY3RvcihcbiAgc2VsZWN0Um91dGluZ0d1YXJkRW50aXRpZXNTdGF0dXNMaXN0LFxuICAoc3RhdHVzTGlzdDogc3RyaW5nW10pID0+IHtcbiAgICByZXR1cm4gIXN0YXR1c0xpc3QuaW5jbHVkZXMoUmVnaXN0ZXJlZEl0ZW1TdGF0dXMuRkFJTFVSRSk7XG4gIH1cbik7XG5cbi8qKlxuICogU2VsZWN0b3IgdXNlZCB0byBjaGVjayB0aGF0IG5vIGl0ZW0gaXMgaW4gUkVBRFkgb3IgRkFJTFVSRSBzdGF0ZS5cbiAqIEZvciBleGFtcGxlLCB3ZSB3aWxsIHJlbHkgb24gdGhpcyBzZWxlY3RvciB0byB0cmlnZ2VyIHRoZSByb3V0ZXIgbmF2aWdhdGlvbiBhbmQgZGlzcGxheSBhIGxvYWRlclxuICovXG5leHBvcnQgY29uc3QgaGFzTm9FbnRpdHlJblJlYWR5T3JGYWlsdXJlU3RhdGUgPSBjcmVhdGVTZWxlY3RvcihcbiAgc2VsZWN0Um91dGluZ0d1YXJkRW50aXRpZXNTdGF0dXNMaXN0LFxuICAoc3RhdHVzTGlzdDogUmVnaXN0ZXJlZEl0ZW1TdGF0dXNbXSkgPT4ge1xuICAgIHJldHVybiAhc3RhdHVzTGlzdC5zb21lKChzdGF0dXMpID0+IHN0YXR1cyA9PT0gUmVnaXN0ZXJlZEl0ZW1TdGF0dXMuUkVBRFkgfHwgc3RhdHVzID09PSBSZWdpc3RlcmVkSXRlbVN0YXR1cy5GQUlMVVJFKTtcbiAgfVxuKTtcblxuLyoqXG4gKiBTZWxlY3RvciB1c2VkIHRvIGNoZWNrIHRoYXQgbm8gaXRlbSBpcyBpbiBGQUlMVVJFIHN0YXRlIHdpdGggYSBibG9ja2luZyByZWFzb24gcHJvdmlkZWQuXG4gKiBUYWtlcyBgYmxvY2tpbmdSZWFzb246IFJlZ2lzdGVyZWRJdGVtRmFpbHVyZVJlYXNvbmAgYXMgYXByb3BlcnR5IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc05vRW50aXR5RmFpbHVyZVN0YXRlV2l0aFJlYXNvbnMgPSBjcmVhdGVTZWxlY3RvcihcbiAgc2VsZWN0Um91dGluZ0d1YXJkRW50aXRpZXNCbG9ja2luZ1JlYXNvbnMsXG4gIChyZWFzb25zOiBSZWdpc3RlcmVkSXRlbUZhaWx1cmVSZWFzb25bXSwgcHJvcGVydGllczogeyBibG9ja2luZ1JlYXNvbjogUmVnaXN0ZXJlZEl0ZW1GYWlsdXJlUmVhc29uIH0pID0+IHtcbiAgICByZXR1cm4gIXJlYXNvbnMuaW5jbHVkZXMocHJvcGVydGllcy5ibG9ja2luZ1JlYXNvbik7XG4gIH1cbik7XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/** Identifies the status of a registered block */
|
|
2
|
-
export var RegisteredItemStatus;
|
|
3
|
-
(function (RegisteredItemStatus) {
|
|
4
|
-
/** block is ready (async call has not been triggered) */
|
|
5
|
-
RegisteredItemStatus["READY"] = "READY";
|
|
6
|
-
/** block is waiting for async call to resolve */
|
|
7
|
-
RegisteredItemStatus["PENDING"] = "PENDING";
|
|
8
|
-
/** block received the async call result and it's a failure */
|
|
9
|
-
RegisteredItemStatus["FAILURE"] = "FAILURE";
|
|
10
|
-
/** block received the async call result and it's a success */
|
|
11
|
-
RegisteredItemStatus["SUCCESS"] = "SUCCESS";
|
|
12
|
-
})(RegisteredItemStatus || (RegisteredItemStatus = {}));
|
|
13
|
-
/** Identifies the failure reason for the registered block */
|
|
14
|
-
export var RegisteredItemFailureReason;
|
|
15
|
-
(function (RegisteredItemFailureReason) {
|
|
16
|
-
/** Routing Failed because the async call result is failure */
|
|
17
|
-
RegisteredItemFailureReason["ASYNC_CALL_FAILURE"] = "ASYNC_CALL_FAILURE";
|
|
18
|
-
/** Routing failed because the changes to the form has not been saved */
|
|
19
|
-
RegisteredItemFailureReason["FORM_UNSAVED"] = "FORM_UNSAVED";
|
|
20
|
-
})(RegisteredItemFailureReason || (RegisteredItemFailureReason = {}));
|
|
21
|
-
/**
|
|
22
|
-
* Name of the RoutingGuard Store
|
|
23
|
-
*/
|
|
24
|
-
export const ROUTING_GUARD_STORE_NAME = 'routingGuard';
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1ndWFyZC5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdG9yZXMvcm91dGluZy1ndWFyZC9yb3V0aW5nLWd1YXJkLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGtEQUFrRDtBQUNsRCxNQUFNLENBQU4sSUFBWSxvQkFTWDtBQVRELFdBQVksb0JBQW9CO0lBQzlCLHlEQUF5RDtJQUN6RCx1Q0FBZSxDQUFBO0lBQ2YsaURBQWlEO0lBQ2pELDJDQUFtQixDQUFBO0lBQ25CLDhEQUE4RDtJQUM5RCwyQ0FBbUIsQ0FBQTtJQUNuQiw4REFBOEQ7SUFDOUQsMkNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVRXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFTL0I7QUFFRCw2REFBNkQ7QUFDN0QsTUFBTSxDQUFOLElBQVksMkJBS1g7QUFMRCxXQUFZLDJCQUEyQjtJQUNyQyw4REFBOEQ7SUFDOUQsd0VBQXlDLENBQUE7SUFDekMsd0VBQXdFO0lBQ3hFLDREQUE2QixDQUFBO0FBQy9CLENBQUMsRUFMVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBS3RDO0FBbUJEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW50aXR5U3RhdGUsXG59IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5cbi8qKiBJZGVudGlmaWVzIHRoZSBzdGF0dXMgb2YgYSByZWdpc3RlcmVkIGJsb2NrICovXG5leHBvcnQgZW51bSBSZWdpc3RlcmVkSXRlbVN0YXR1cyB7XG4gIC8qKiBibG9jayBpcyByZWFkeSAoYXN5bmMgY2FsbCBoYXMgbm90IGJlZW4gdHJpZ2dlcmVkKSAqL1xuICBSRUFEWSA9ICdSRUFEWScsXG4gIC8qKiBibG9jayBpcyB3YWl0aW5nIGZvciBhc3luYyBjYWxsIHRvIHJlc29sdmUgKi9cbiAgUEVORElORyA9ICdQRU5ESU5HJyxcbiAgLyoqIGJsb2NrIHJlY2VpdmVkIHRoZSBhc3luYyBjYWxsIHJlc3VsdCBhbmQgaXQncyBhIGZhaWx1cmUgKi9cbiAgRkFJTFVSRSA9ICdGQUlMVVJFJyxcbiAgLyoqIGJsb2NrIHJlY2VpdmVkIHRoZSBhc3luYyBjYWxsIHJlc3VsdCBhbmQgaXQncyBhIHN1Y2Nlc3MgKi9cbiAgU1VDQ0VTUyA9ICdTVUNDRVNTJ1xufVxuXG4vKiogSWRlbnRpZmllcyB0aGUgZmFpbHVyZSByZWFzb24gZm9yIHRoZSByZWdpc3RlcmVkIGJsb2NrICovXG5leHBvcnQgZW51bSBSZWdpc3RlcmVkSXRlbUZhaWx1cmVSZWFzb24ge1xuICAvKiogUm91dGluZyBGYWlsZWQgYmVjYXVzZSB0aGUgYXN5bmMgY2FsbCByZXN1bHQgaXMgZmFpbHVyZSAqL1xuICBBU1lOQ19DQUxMX0ZBSUxVUkUgPSAnQVNZTkNfQ0FMTF9GQUlMVVJFJyxcbiAgLyoqIFJvdXRpbmcgZmFpbGVkIGJlY2F1c2UgdGhlIGNoYW5nZXMgdG8gdGhlIGZvcm0gaGFzIG5vdCBiZWVuIHNhdmVkICovXG4gIEZPUk1fVU5TQVZFRCA9ICdGT1JNX1VOU0FWRUQnXG59XG5cbi8qKlxuICogUm91dGluZ0d1YXJkIG1vZGVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ0d1YXJkTW9kZWwge1xuICAvKiogSWQgb2YgdGhlIGJsb2NrIGluc3RhbmNlICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBSb3V0aW5nIHN0YXR1cyBvZiB0aGUgYmxvY2sgKi9cbiAgc3RhdHVzOiBSZWdpc3RlcmVkSXRlbVN0YXR1cztcbiAgLyoqIFJvdXRpbmcgR3VhcmQgYmxvY2tpbmcgcmVhc29uICovXG4gIGJsb2NraW5nUmVhc29uPzogUmVnaXN0ZXJlZEl0ZW1GYWlsdXJlUmVhc29uO1xufVxuXG4vKipcbiAqIFJvdXRpbmdHdWFyZCBzdG9yZSBzdGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdHdWFyZFN0YXRlIGV4dGVuZHMgRW50aXR5U3RhdGU8Um91dGluZ0d1YXJkTW9kZWw+IHt9XG5cbi8qKlxuICogTmFtZSBvZiB0aGUgUm91dGluZ0d1YXJkIFN0b3JlXG4gKi9cbmV4cG9ydCBjb25zdCBST1VUSU5HX0dVQVJEX1NUT1JFX05BTUUgPSAncm91dGluZ0d1YXJkJztcblxuLyoqXG4gKiBSb3V0aW5nR3VhcmQgU3RvcmUgSW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ0d1YXJkU3RvcmUge1xuICAvKiogUm91dGluZ0d1YXJkIHN0YXRlICovXG4gIFtST1VUSU5HX0dVQVJEX1NUT1JFX05BTUVdOiBSb3V0aW5nR3VhcmRTdGF0ZTtcbn1cbiJdfQ==
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { APP_BASE_HREF, } from '@angular/common';
|
|
2
|
-
import { InjectionToken, NgModule, } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* AppBaseHref factory function
|
|
6
|
-
* The APP_BASE_HREF will assume one of the following values (ordered by priority):
|
|
7
|
-
* 1- undefined (or disabled) if it's not a PROD environment
|
|
8
|
-
* 2- the content of the data tag data-appbasehref in the body if it exists
|
|
9
|
-
* 3- the content of config.APP_BASE_HREF if defined
|
|
10
|
-
* 4- otherwise, undefined
|
|
11
|
-
* @param config The application environment configuration
|
|
12
|
-
*/
|
|
13
|
-
export function appBaseHrefFactory(config) {
|
|
14
|
-
if (config.ENVIRONMENT !== 'prod') {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
const dynamicBaseHref = document.body.dataset.appbasehref;
|
|
18
|
-
if (typeof dynamicBaseHref !== 'undefined') {
|
|
19
|
-
return dynamicBaseHref;
|
|
20
|
-
}
|
|
21
|
-
return typeof config.APP_BASE_HREF === 'string' ? config.APP_BASE_HREF : undefined;
|
|
22
|
-
}
|
|
23
|
-
export const ENVIRONMENT_CONFIG_TOKEN = new InjectionToken('Environment config');
|
|
24
|
-
export class AppServerRoutingModule {
|
|
25
|
-
/**
|
|
26
|
-
* Injects the APP_BASE_HREF with a custom factory
|
|
27
|
-
* @param config The application environment configuration
|
|
28
|
-
*/
|
|
29
|
-
static forRoot(config) {
|
|
30
|
-
return {
|
|
31
|
-
ngModule: AppServerRoutingModule,
|
|
32
|
-
providers: [
|
|
33
|
-
{ provide: ENVIRONMENT_CONFIG_TOKEN, useValue: config },
|
|
34
|
-
{
|
|
35
|
-
provide: APP_BASE_HREF,
|
|
36
|
-
useFactory: appBaseHrefFactory,
|
|
37
|
-
deps: [ENVIRONMENT_CONFIG_TOKEN]
|
|
38
|
-
}
|
|
39
|
-
]
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppServerRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
43
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: AppServerRoutingModule }); }
|
|
44
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppServerRoutingModule }); }
|
|
45
|
-
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppServerRoutingModule, decorators: [{
|
|
47
|
-
type: NgModule
|
|
48
|
-
}] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlcnZlci1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29scy9hcHAtc2VydmVyLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEdBQ2QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsY0FBYyxFQUVkLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQzs7QUFLdkI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBMkI7SUFDNUQsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxlQUFlLEdBQXVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUM5RSxJQUFJLE9BQU8sZUFBZSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQzNDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLE9BQU8sTUFBTSxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNyRixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQXNCLG9CQUFvQixDQUFDLENBQUM7QUFHdEcsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTJCO1FBQy9DLE9BQU87WUFDTCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUN2RDtvQkFDRSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsVUFBVSxFQUFFLGtCQUFrQjtvQkFDOUIsSUFBSSxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztrSUFqQlUsc0JBQXNCO21JQUF0QixzQkFBc0I7bUlBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFEbEMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFQUF9CQVNFX0hSRUYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBJbmplY3Rpb25Ub2tlbixcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgTmdNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1xuICBCdWlsZFRpbWVQcm9wZXJ0aWVzLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuXG4vKipcbiAqIEFwcEJhc2VIcmVmIGZhY3RvcnkgZnVuY3Rpb25cbiAqIFRoZSBBUFBfQkFTRV9IUkVGIHdpbGwgYXNzdW1lIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcyAob3JkZXJlZCBieSBwcmlvcml0eSk6XG4gKiAxLSB1bmRlZmluZWQgKG9yIGRpc2FibGVkKSBpZiBpdCdzIG5vdCBhIFBST0QgZW52aXJvbm1lbnRcbiAqIDItIHRoZSBjb250ZW50IG9mIHRoZSBkYXRhIHRhZyBkYXRhLWFwcGJhc2VocmVmIGluIHRoZSBib2R5IGlmIGl0IGV4aXN0c1xuICogMy0gdGhlIGNvbnRlbnQgb2YgY29uZmlnLkFQUF9CQVNFX0hSRUYgaWYgZGVmaW5lZFxuICogNC0gb3RoZXJ3aXNlLCB1bmRlZmluZWRcbiAqIEBwYXJhbSBjb25maWcgVGhlIGFwcGxpY2F0aW9uIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcEJhc2VIcmVmRmFjdG9yeShjb25maWc6IEJ1aWxkVGltZVByb3BlcnRpZXMpIHtcbiAgaWYgKGNvbmZpZy5FTlZJUk9OTUVOVCAhPT0gJ3Byb2QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGR5bmFtaWNCYXNlSHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkID0gZG9jdW1lbnQuYm9keS5kYXRhc2V0LmFwcGJhc2VocmVmO1xuICBpZiAodHlwZW9mIGR5bmFtaWNCYXNlSHJlZiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZHluYW1pY0Jhc2VIcmVmO1xuICB9XG4gIHJldHVybiB0eXBlb2YgY29uZmlnLkFQUF9CQVNFX0hSRUYgPT09ICdzdHJpbmcnID8gY29uZmlnLkFQUF9CQVNFX0hSRUYgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBFTlZJUk9OTUVOVF9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QnVpbGRUaW1lUHJvcGVydGllcz4oJ0Vudmlyb25tZW50IGNvbmZpZycpO1xuXG5ATmdNb2R1bGUoKVxuZXhwb3J0IGNsYXNzIEFwcFNlcnZlclJvdXRpbmdNb2R1bGUge1xuICAvKipcbiAgICogSW5qZWN0cyB0aGUgQVBQX0JBU0VfSFJFRiB3aXRoIGEgY3VzdG9tIGZhY3RvcnlcbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgYXBwbGljYXRpb24gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQnVpbGRUaW1lUHJvcGVydGllcyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QXBwU2VydmVyUm91dGluZ01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQXBwU2VydmVyUm91dGluZ01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEVOVklST05NRU5UX0NPTkZJR19UT0tFTiwgdXNlVmFsdWU6IGNvbmZpZyB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVBQX0JBU0VfSFJFRixcbiAgICAgICAgICB1c2VGYWN0b3J5OiBhcHBCYXNlSHJlZkZhY3RvcnksXG4gICAgICAgICAgZGVwczogW0VOVklST05NRU5UX0NPTkZJR19UT0tFTl1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/tools/index.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './app-server-routing.module';
|
|
2
|
-
export * from './on-navigation-strategy.preloader';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHAtc2VydmVyLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vb24tbmF2aWdhdGlvbi1zdHJhdGVneS5wcmVsb2FkZXInO1xuIl19
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Injectable, } from '@angular/core';
|
|
2
|
-
import { NavigationEnd, Router, } from '@angular/router';
|
|
3
|
-
import { of, } from 'rxjs';
|
|
4
|
-
import { filter, switchMap, } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/router";
|
|
7
|
-
/**
|
|
8
|
-
* Check if the route has preload instructions
|
|
9
|
-
* @param data Route data
|
|
10
|
-
*/
|
|
11
|
-
export function hasPreloadingOnDemand(data) {
|
|
12
|
-
if (!data) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
return (Array.isArray(data.preloadOn) && data.preloadOn.length > 0)
|
|
16
|
-
|| data.preloadOn === '*'
|
|
17
|
-
|| data.preloadOn instanceof RegExp;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Otter Preloading strategy base on previous route
|
|
21
|
-
* @inheritDoc
|
|
22
|
-
*/
|
|
23
|
-
export class O3rOnNavigationPreloadingStrategy {
|
|
24
|
-
constructor(router) {
|
|
25
|
-
this.router = router;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Check if the module should be preloaded based on the data preload array of routes or regex value
|
|
29
|
-
* @param data Route data
|
|
30
|
-
* @param url URL of current page
|
|
31
|
-
*/
|
|
32
|
-
isUrlMatchingPreloadConfig(data, url) {
|
|
33
|
-
return (Array.isArray(data.preloadOn) && data.preloadOn.includes(url))
|
|
34
|
-
|| (data.preloadOn instanceof RegExp && data.preloadOn.test(url));
|
|
35
|
-
}
|
|
36
|
-
/** @inheritDoc */
|
|
37
|
-
preload(route, preload) {
|
|
38
|
-
if ((route.path || route.matcher) && hasPreloadingOnDemand(route.data)) {
|
|
39
|
-
// On application landing page, check the route to preload.
|
|
40
|
-
if (route.data.preloadOn === '*' || this.isUrlMatchingPreloadConfig(route.data, this.router.routerState.snapshot.url)) {
|
|
41
|
-
return preload();
|
|
42
|
-
}
|
|
43
|
-
// On route navigation end, load the routes to preload for the current route.
|
|
44
|
-
return this.router.events
|
|
45
|
-
.pipe(filter((r) => r instanceof NavigationEnd && this.isUrlMatchingPreloadConfig(route.data, r.url)), switchMap(() => preload()));
|
|
46
|
-
}
|
|
47
|
-
return of(null);
|
|
48
|
-
}
|
|
49
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: O3rOnNavigationPreloadingStrategy, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
50
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: O3rOnNavigationPreloadingStrategy }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: O3rOnNavigationPreloadingStrategy, decorators: [{
|
|
53
|
-
type: Injectable
|
|
54
|
-
}], ctorParameters: () => [{ type: i1.Router }] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tbmF2aWdhdGlvbi1zdHJhdGVneS5wcmVsb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvb24tbmF2aWdhdGlvbi1zdHJhdGVneS5wcmVsb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUdiLE1BQU0sR0FDUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFFTCxFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDOzs7QUFVeEI7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQVM7SUFDN0MsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztXQUM5RCxJQUFJLENBQUMsU0FBUyxLQUFLLEdBQUc7V0FDdEIsSUFBSSxDQUFDLFNBQVMsWUFBWSxNQUFNLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7R0FHRztBQUVILE1BQU0sT0FBTyxpQ0FBaUM7SUFDNUMsWUFBNkIsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRS9DOzs7O09BSUc7SUFDSywwQkFBMEIsQ0FBQyxJQUFTLEVBQUUsR0FBVztRQUN2RCxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7ZUFDakUsQ0FBQyxJQUFJLENBQUMsU0FBUyxZQUFZLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxPQUFPLENBQUMsS0FBWSxFQUFFLE9BQThCO1FBQ3pELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2RSwyREFBMkQ7WUFDM0QsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RILE9BQU8sT0FBTyxFQUFFLENBQUM7WUFDbkIsQ0FBQztZQUVELDZFQUE2RTtZQUM3RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtpQkFDdEIsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLGFBQWEsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDL0YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQzNCLENBQUM7UUFDTixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztrSUE3QlUsaUNBQWlDO3NJQUFqQyxpQ0FBaUM7OzRGQUFqQyxpQ0FBaUM7a0JBRDdDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb25FbmQsXG4gIFByZWxvYWRpbmdTdHJhdGVneSxcbiAgUm91dGUsXG4gIFJvdXRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIG9mLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGZpbHRlcixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogRGF0YSB0byBpbmplY3QgdG8gdGhlIHJvdXRlIHBhcmFtZXRlciB0byBzcGVjaWZ5IHByZWxvYWRpbmcgc3RyYXRlZ3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPM3JPbkRlbWFuZFByZWxvYWRpbmdEYXRhIHtcbiAgLyoqIExpc3Qgb2YgcGFnZSByZWFjaGVkIHRoYXQgdHJpZ2dlciBwcmVsb2FkaW5nICovXG4gIHByZWxvYWRPbjogc3RyaW5nW10gfCAnKicgfCBSZWdFeHA7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHJvdXRlIGhhcyBwcmVsb2FkIGluc3RydWN0aW9uc1xuICogQHBhcmFtICBkYXRhIFJvdXRlIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1ByZWxvYWRpbmdPbkRlbWFuZChkYXRhOiBhbnkpOiBkYXRhIGlzIE8zck9uRGVtYW5kUHJlbG9hZGluZ0RhdGEge1xuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gKEFycmF5LmlzQXJyYXkoZGF0YS5wcmVsb2FkT24pICYmIGRhdGEucHJlbG9hZE9uLmxlbmd0aCA+IDApXG4gICAgfHwgZGF0YS5wcmVsb2FkT24gPT09ICcqJ1xuICAgIHx8IGRhdGEucHJlbG9hZE9uIGluc3RhbmNlb2YgUmVnRXhwO1xufVxuXG4vKipcbiAqIE90dGVyIFByZWxvYWRpbmcgc3RyYXRlZ3kgYmFzZSBvbiBwcmV2aW91cyByb3V0ZVxuICogQGluaGVyaXREb2NcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE8zck9uTmF2aWdhdGlvblByZWxvYWRpbmdTdHJhdGVneSBpbXBsZW1lbnRzIFByZWxvYWRpbmdTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHRoZSBtb2R1bGUgc2hvdWxkIGJlIHByZWxvYWRlZCBiYXNlZCBvbiB0aGUgZGF0YSBwcmVsb2FkIGFycmF5IG9mIHJvdXRlcyBvciByZWdleCB2YWx1ZVxuICAgKiBAcGFyYW0gZGF0YSBSb3V0ZSBkYXRhXG4gICAqIEBwYXJhbSB1cmwgVVJMIG9mIGN1cnJlbnQgcGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1VybE1hdGNoaW5nUHJlbG9hZENvbmZpZyhkYXRhOiBhbnksIHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChBcnJheS5pc0FycmF5KGRhdGEucHJlbG9hZE9uKSAmJiBkYXRhLnByZWxvYWRPbi5pbmNsdWRlcyh1cmwpKVxuICAgICAgfHwgKGRhdGEucHJlbG9hZE9uIGluc3RhbmNlb2YgUmVnRXhwICYmIGRhdGEucHJlbG9hZE9uLnRlc3QodXJsKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIHByZWxvYWQocm91dGU6IFJvdXRlLCBwcmVsb2FkOiAoKSA9PiBPYnNlcnZhYmxlPGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICgocm91dGUucGF0aCB8fCByb3V0ZS5tYXRjaGVyKSAmJiBoYXNQcmVsb2FkaW5nT25EZW1hbmQocm91dGUuZGF0YSkpIHtcbiAgICAgIC8vIE9uIGFwcGxpY2F0aW9uIGxhbmRpbmcgcGFnZSwgY2hlY2sgdGhlIHJvdXRlIHRvIHByZWxvYWQuXG4gICAgICBpZiAocm91dGUuZGF0YS5wcmVsb2FkT24gPT09ICcqJyB8fCB0aGlzLmlzVXJsTWF0Y2hpbmdQcmVsb2FkQ29uZmlnKHJvdXRlLmRhdGEsIHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkpIHtcbiAgICAgICAgcmV0dXJuIHByZWxvYWQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gT24gcm91dGUgbmF2aWdhdGlvbiBlbmQsIGxvYWQgdGhlIHJvdXRlcyB0byBwcmVsb2FkIGZvciB0aGUgY3VycmVudCByb3V0ZS5cbiAgICAgIHJldHVybiB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChyKSA9PiByIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiB0aGlzLmlzVXJsTWF0Y2hpbmdQcmVsb2FkQ29uZmlnKHJvdXRlLmRhdGEsIHIudXJsKSksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHByZWxvYWQoKSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG59XG4iXX0=
|