@daffodil/external-router 0.78.0 → 0.79.0
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/README.md +116 -7
- package/config.d.ts +1 -10
- package/driver/in-memory/config.d.ts +1 -7
- package/driver/in-memory/in-memory.module.d.ts +2 -0
- package/driver/in-memory/provider.d.ts +6 -0
- package/driver/in-memory/public_api.d.ts +1 -0
- package/driver/interfaces/external-router-driver.interface.d.ts +2 -6
- package/driver/magento/2.4.3/provider.d.ts +5 -0
- package/driver/magento/2.4.3/public_api.d.ts +1 -0
- package/driver/public_api.d.ts +1 -1
- package/driver/testing/config.d.ts +3 -9
- package/driver/testing/provider.d.ts +6 -0
- package/driver/testing/public_api.d.ts +1 -0
- package/esm2022/config.mjs +8 -7
- package/esm2022/driver/in-memory/config.mjs +8 -6
- package/esm2022/driver/in-memory/in-memory.module.mjs +8 -15
- package/esm2022/driver/in-memory/provider.mjs +12 -0
- package/esm2022/driver/in-memory/public_api.mjs +2 -1
- package/esm2022/driver/interfaces/external-router-driver.interface.mjs +8 -3
- package/esm2022/driver/magento/2.4.1/magento.module.mjs +5 -12
- package/esm2022/driver/magento/2.4.2/magento.module.mjs +5 -12
- package/esm2022/driver/magento/2.4.3/magento.module.mjs +5 -12
- package/esm2022/driver/magento/2.4.3/provider.mjs +13 -0
- package/esm2022/driver/magento/2.4.3/public_api.mjs +2 -1
- package/esm2022/driver/public_api.mjs +2 -2
- package/esm2022/driver/testing/config.mjs +8 -6
- package/esm2022/driver/testing/provider.mjs +12 -0
- package/esm2022/driver/testing/public_api.mjs +2 -1
- package/esm2022/driver/testing/testing.module.mjs +5 -11
- package/esm2022/driver/testing/testing.service.mjs +13 -11
- package/esm2022/model/public_api.mjs +1 -1
- package/esm2022/model/route-with-seo-data.mjs +1 -1
- package/esm2022/provide-external-router.mjs +6 -0
- package/esm2022/public_api.mjs +2 -10
- package/esm2022/routing/guard/external-matcher-type.guard.mjs +43 -0
- package/esm2022/routing/helper/convert-to-path.mjs +7 -0
- package/esm2022/routing/public_api.mjs +2 -2
- package/fesm2022/daffodil-external-router-driver-in-memory.mjs +22 -18
- package/fesm2022/daffodil-external-router-driver-in-memory.mjs.map +1 -1
- package/fesm2022/daffodil-external-router-driver-magento-2.4.1.mjs +4 -11
- package/fesm2022/daffodil-external-router-driver-magento-2.4.1.mjs.map +1 -1
- package/fesm2022/daffodil-external-router-driver-magento-2.4.2.mjs +4 -11
- package/fesm2022/daffodil-external-router-driver-magento-2.4.2.mjs.map +1 -1
- package/fesm2022/daffodil-external-router-driver-magento-2.4.3.mjs +14 -13
- package/fesm2022/daffodil-external-router-driver-magento-2.4.3.mjs.map +1 -1
- package/fesm2022/daffodil-external-router-driver-testing.mjs +31 -25
- package/fesm2022/daffodil-external-router-driver-testing.mjs.map +1 -1
- package/fesm2022/daffodil-external-router-driver.mjs +8 -3
- package/fesm2022/daffodil-external-router-driver.mjs.map +1 -1
- package/fesm2022/daffodil-external-router-routing.mjs +40 -66
- package/fesm2022/daffodil-external-router-routing.mjs.map +1 -1
- package/fesm2022/daffodil-external-router.mjs +10 -282
- package/fesm2022/daffodil-external-router.mjs.map +1 -1
- package/model/public_api.d.ts +2 -5
- package/model/route-with-seo-data.d.ts +3 -4
- package/package.json +1 -1
- package/provide-external-router.d.ts +3 -0
- package/public_api.d.ts +1 -9
- package/routing/guard/external-matcher-type.guard.d.ts +10 -0
- package/routing/helper/convert-to-path.d.ts +7 -0
- package/routing/public_api.d.ts +1 -1
- package/errors/no-wildcard.d.ts +0 -9
- package/errors/unknown-type.d.ts +0 -9
- package/esm2022/errors/no-wildcard.mjs +0 -12
- package/esm2022/errors/unknown-type.mjs +0 -12
- package/esm2022/external-router.module.mjs +0 -31
- package/esm2022/model/insertion-strategy.type.mjs +0 -2
- package/esm2022/model/route-info.mjs +0 -2
- package/esm2022/model/route-with-data-path.mjs +0 -2
- package/esm2022/model/route-with-type.mjs +0 -2
- package/esm2022/model/route-without-path.mjs +0 -2
- package/esm2022/model/type-route-pair.mjs +0 -2
- package/esm2022/router/router.service.mjs +0 -43
- package/esm2022/router/strategies/insert-data-path.mjs +0 -84
- package/esm2022/router/strategies/insert-route-before-wildcard.mjs +0 -17
- package/esm2022/router/url-matcher/data-path-matcher.mjs +0 -31
- package/esm2022/routing/guard/existence.guard.mjs +0 -77
- package/esm2022/token/type-resolvable-routes.token.mjs +0 -29
- package/esm2022/transform/resolved-route-to-route.mjs +0 -24
- package/esm2022/util/extract-daff-path-data.mjs +0 -9
- package/external-router.module.d.ts +0 -15
- package/model/insertion-strategy.type.d.ts +0 -8
- package/model/route-info.d.ts +0 -9
- package/model/route-with-data-path.d.ts +0 -14
- package/model/route-with-type.d.ts +0 -12
- package/model/route-without-path.d.ts +0 -7
- package/model/type-route-pair.d.ts +0 -26
- package/router/router.service.d.ts +0 -15
- package/router/strategies/insert-data-path.d.ts +0 -40
- package/router/strategies/insert-route-before-wildcard.d.ts +0 -6
- package/router/url-matcher/data-path-matcher.d.ts +0 -20
- package/routing/guard/existence.guard.d.ts +0 -22
- package/token/type-resolvable-routes.token.d.ts +0 -14
- package/transform/resolved-route-to-route.d.ts +0 -7
- package/util/extract-daff-path-data.d.ts +0 -6
@@ -1,43 +0,0 @@
|
|
1
|
-
import { Inject, Injectable, } from '@angular/core';
|
2
|
-
import { Router, } from '@angular/router';
|
3
|
-
import { daffInsertRouteBeforeWildCardStrategy } from './strategies/insert-route-before-wildcard';
|
4
|
-
import { DaffExternalRouterNoWildcardError } from '../errors/no-wildcard';
|
5
|
-
import { DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE } from '../token/type-resolvable-routes.token';
|
6
|
-
import { daffTransformResolvedRouteToRoute } from '../transform/resolved-route-to-route';
|
7
|
-
import * as i0 from "@angular/core";
|
8
|
-
import * as i1 from "@angular/router";
|
9
|
-
export class DaffExternalRouter {
|
10
|
-
constructor(router, runtimeRoutes) {
|
11
|
-
this.router = router;
|
12
|
-
this.runtimeRoutes = runtimeRoutes;
|
13
|
-
}
|
14
|
-
/**
|
15
|
-
* Adds a route to the existing router configuration.
|
16
|
-
*/
|
17
|
-
add(resolvedRoute) {
|
18
|
-
//Get the route.
|
19
|
-
const { route, insertionStrategy, } = daffTransformResolvedRouteToRoute(resolvedRoute, this.runtimeRoutes);
|
20
|
-
try {
|
21
|
-
//Add it to configuration.
|
22
|
-
this.router.config = (insertionStrategy || daffInsertRouteBeforeWildCardStrategy)(route, this.router.config);
|
23
|
-
}
|
24
|
-
catch (e) {
|
25
|
-
if (e instanceof DaffExternalRouterNoWildcardError) {
|
26
|
-
throw new DaffExternalRouterNoWildcardError(`${e.message} This usually means you have misconfigured your routes.`);
|
27
|
-
}
|
28
|
-
throw e;
|
29
|
-
}
|
30
|
-
}
|
31
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffExternalRouter, deps: [{ token: i1.Router }, { token: DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
32
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffExternalRouter, providedIn: 'root' }); }
|
33
|
-
}
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffExternalRouter, decorators: [{
|
35
|
-
type: Injectable,
|
36
|
-
args: [{
|
37
|
-
providedIn: 'root',
|
38
|
-
}]
|
39
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: undefined, decorators: [{
|
40
|
-
type: Inject,
|
41
|
-
args: [DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE]
|
42
|
-
}] }] });
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2V4dGVybmFsLXJvdXRlci9zcmMvcm91dGVyL3JvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxNQUFNLEdBRVAsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsOENBQThDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7O0FBS3pGLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxNQUFjLEVBRWQsYUFBa0M7UUFGbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVkLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtJQUN4QyxDQUFDO0lBRUw7O09BRUc7SUFDSCxHQUFHLENBQUMsYUFBMEM7UUFDNUMsZ0JBQWdCO1FBQ2hCLE1BQU0sRUFDSixLQUFLLEVBQ0wsaUJBQWlCLEdBQ2xCLEdBQUcsaUNBQWlDLENBQ25DLGFBQWEsRUFDYixJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsaUJBQWlCLElBQUkscUNBQXFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxZQUFZLGlDQUFpQyxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sSUFBSSxpQ0FBaUMsQ0FDekMsR0FBRyxDQUFDLENBQUMsT0FBTyx5REFBeUQsQ0FDdEUsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO2lJQWhDVSxrQkFBa0Isd0NBR25CLDhDQUE4QztxSUFIN0Msa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUlJLE1BQU07MkJBQUMsOENBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFJvdXRlcixcbiAgUm91dGUsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cblxuaW1wb3J0IHsgZGFmZkluc2VydFJvdXRlQmVmb3JlV2lsZENhcmRTdHJhdGVneSB9IGZyb20gJy4vc3RyYXRlZ2llcy9pbnNlcnQtcm91dGUtYmVmb3JlLXdpbGRjYXJkJztcbmltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlck5vV2lsZGNhcmRFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9uby13aWxkY2FyZCc7XG5pbXBvcnQgeyBEYWZmRXh0ZXJuYWxseVJlc29sdmFibGVVcmwgfSBmcm9tICcuLi9tb2RlbC9yZXNvbHZhYmxlLXJvdXRlJztcbmltcG9ydCB7IERhZmZUeXBlUm91dGVQYWlyIH0gZnJvbSAnLi4vbW9kZWwvdHlwZS1yb3V0ZS1wYWlyJztcbmltcG9ydCB7IERBRkZfRVhURVJOQUxfUk9VVEVSX1JPVVRFU19SRVNPTFZBQkxFX0JZX1RZUEUgfSBmcm9tICcuLi90b2tlbi90eXBlLXJlc29sdmFibGUtcm91dGVzLnRva2VuJztcbmltcG9ydCB7IGRhZmZUcmFuc2Zvcm1SZXNvbHZlZFJvdXRlVG9Sb3V0ZSB9IGZyb20gJy4uL3RyYW5zZm9ybS9yZXNvbHZlZC1yb3V0ZS10by1yb3V0ZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYWZmRXh0ZXJuYWxSb3V0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoREFGRl9FWFRFUk5BTF9ST1VURVJfUk9VVEVTX1JFU09MVkFCTEVfQllfVFlQRSlcbiAgICBwcml2YXRlIHJ1bnRpbWVSb3V0ZXM6IERhZmZUeXBlUm91dGVQYWlyW10sXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByb3V0ZSB0byB0aGUgZXhpc3Rpbmcgcm91dGVyIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBhZGQocmVzb2x2ZWRSb3V0ZTogRGFmZkV4dGVybmFsbHlSZXNvbHZhYmxlVXJsKSB7XG4gICAgLy9HZXQgdGhlIHJvdXRlLlxuICAgIGNvbnN0IHtcbiAgICAgIHJvdXRlLFxuICAgICAgaW5zZXJ0aW9uU3RyYXRlZ3ksXG4gICAgfSA9IGRhZmZUcmFuc2Zvcm1SZXNvbHZlZFJvdXRlVG9Sb3V0ZShcbiAgICAgIHJlc29sdmVkUm91dGUsXG4gICAgICB0aGlzLnJ1bnRpbWVSb3V0ZXMsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICAvL0FkZCBpdCB0byBjb25maWd1cmF0aW9uLlxuICAgICAgdGhpcy5yb3V0ZXIuY29uZmlnID0gKGluc2VydGlvblN0cmF0ZWd5IHx8IGRhZmZJbnNlcnRSb3V0ZUJlZm9yZVdpbGRDYXJkU3RyYXRlZ3kpKHJvdXRlLCB0aGlzLnJvdXRlci5jb25maWcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRGFmZkV4dGVybmFsUm91dGVyTm9XaWxkY2FyZEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBEYWZmRXh0ZXJuYWxSb3V0ZXJOb1dpbGRjYXJkRXJyb3IoXG4gICAgICAgICAgYCR7ZS5tZXNzYWdlfSBUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGhhdmUgbWlzY29uZmlndXJlZCB5b3VyIHJvdXRlcy5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxufVxuIl19
|
@@ -1,84 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Tests whether or not a route matches a specific Daffodil Route type.
|
3
|
-
*
|
4
|
-
* See {@link DaffRouteWithDataPath}
|
5
|
-
*/
|
6
|
-
const routeMatchesRouteType = (route, type) => route?.data?.daffExternalRouteType === type;
|
7
|
-
/**
|
8
|
-
* Adds a path to the `daffPaths` of the given route.
|
9
|
-
*
|
10
|
-
* See {@link DaffRouteWithDataPath}
|
11
|
-
*/
|
12
|
-
const addRouteToDaffPaths = (route, externalRoute) => {
|
13
|
-
route.data.daffPaths = {
|
14
|
-
...route.data.daffPaths,
|
15
|
-
[externalRoute.path]: externalRoute.data,
|
16
|
-
};
|
17
|
-
return route;
|
18
|
-
};
|
19
|
-
const operateOnRoute = (externalRoute) => (route) => addRouteToDaffPaths(route, externalRoute);
|
20
|
-
/**
|
21
|
-
* Traverse the router config tree, halting after the first match.
|
22
|
-
* This traversal is implemented in a pre-order manner. As such, for large
|
23
|
-
* configuration trees, it will be most efficient to place externally routed
|
24
|
-
* components at the top of router configuration.
|
25
|
-
*/
|
26
|
-
const traverseRouteTree = (routes = [], matcher, operate) => {
|
27
|
-
if (routes.length === 0) {
|
28
|
-
return routes;
|
29
|
-
}
|
30
|
-
const stack = [];
|
31
|
-
const treeRoot = { children: routes };
|
32
|
-
stack.push(treeRoot);
|
33
|
-
while (stack.length) {
|
34
|
-
const route = stack.pop();
|
35
|
-
if (matcher(route)) {
|
36
|
-
operate(route);
|
37
|
-
break;
|
38
|
-
}
|
39
|
-
if (route.children) {
|
40
|
-
stack.push(...route.children.reverse());
|
41
|
-
}
|
42
|
-
}
|
43
|
-
return routes;
|
44
|
-
};
|
45
|
-
/**
|
46
|
-
* A route insertion strategy that can be used to append external routes onto
|
47
|
-
* existing Angular routes. This can be useful when you need to route to
|
48
|
-
* an existing lazy-loaded module from multiple externally defined urls.
|
49
|
-
*
|
50
|
-
* This should be used in combination with the {@link daffDataPathUrlMatcher} to match lazy-loaded modules with
|
51
|
-
* associated external urls.
|
52
|
-
*
|
53
|
-
* For example, you can provide the insertion strategy in the {@link DaffExternalRouterModule} as below.
|
54
|
-
*
|
55
|
-
* ```ts
|
56
|
-
* DaffExternalRouterModule.forRoot({}, [
|
57
|
-
* {
|
58
|
-
* type: 'CATEGORY',
|
59
|
-
* insertionStrategy: daffInsertDataPathStrategy,
|
60
|
-
* route: {}
|
61
|
-
* }
|
62
|
-
* ],
|
63
|
-
* ```
|
64
|
-
*
|
65
|
-
* Then, you can match it with an associated route defined in your Routing
|
66
|
-
* configuration with the {@link daffDataPathUrlMatcher}.
|
67
|
-
*
|
68
|
-
* ```ts
|
69
|
-
* export const routes: Routes = [
|
70
|
-
* {
|
71
|
-
* matcher: daffDataPathUrlMatcher,
|
72
|
-
* data: {
|
73
|
-
* daffExternalRouteType: "CATEGORY",
|
74
|
-
* },
|
75
|
-
* loadChildren: () => import('./category/category.module').then((m) => m.MyCategoryModule),
|
76
|
-
* }
|
77
|
-
* ]
|
78
|
-
* ```
|
79
|
-
*
|
80
|
-
* See {@link DaffRouteWithDataPath}
|
81
|
-
*
|
82
|
-
*/
|
83
|
-
export const daffInsertDataPathStrategy = (externalRoute, routes) => traverseRouteTree(routes, (route) => routeMatchesRouteType(route, externalRoute.daffExternalRouteType), operateOnRoute(externalRoute));
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWRhdGEtcGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZXh0ZXJuYWwtcm91dGVyL3NyYy9yb3V0ZXIvc3RyYXRlZ2llcy9pbnNlcnQtZGF0YS1wYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBOzs7O0dBSUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFFLElBQTJCLEVBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUscUJBQXFCLEtBQUssSUFBSSxDQUFDO0FBRWxJOzs7O0dBSUc7QUFDSCxNQUFNLG1CQUFtQixHQUN2QixDQUFDLEtBQTRCLEVBQUUsYUFBb0IsRUFBRSxFQUFFO0lBQ3JELEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHO1FBQ3JCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTO1FBQ3ZCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxJQUFJO0tBQ3pDLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVKLE1BQU0sY0FBYyxHQUNsQixDQUFDLGFBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBNEIsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBRXhHOzs7OztHQUtHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxPQUFrQyxFQUFFLE9BQXNCLEVBQVUsRUFBRTtJQUNwSCxJQUFHLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUN6QixNQUFNLFFBQVEsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXJCLE9BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25CLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNmLE1BQU07UUFDUixDQUFDO1FBQ0QsSUFBRyxLQUFLLENBQUMsUUFBUSxFQUFDLENBQUM7WUFDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXdDLENBQUMsYUFBdUQsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUMzSyxNQUFNLEVBQ04sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMscUJBQXFCLENBQUMsRUFDNUUsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUm91dGUsXG4gIFJvdXRlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVySW5zZXJ0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9tb2RlbC9pbnNlcnRpb24tc3RyYXRlZ3kudHlwZSc7XG5pbXBvcnQgeyBEYWZmRXh0ZXJuYWxSb3V0ZVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9yb3V0ZS10eXBlJztcbmltcG9ydCB7IERhZmZSb3V0ZVdpdGhEYXRhUGF0aCB9IGZyb20gJy4uLy4uL21vZGVsL3JvdXRlLXdpdGgtZGF0YS1wYXRoJztcbmltcG9ydCB7IERhZmZSb3V0ZVdpdGhTZW9EYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWwvcm91dGUtd2l0aC1zZW8tZGF0YSc7XG5pbXBvcnQgeyBEYWZmUm91dGVXaXRoVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL3JvdXRlLXdpdGgtdHlwZSc7XG5cbnR5cGUgUm91dGVPcGVyYXRvciA9IChyb3V0ZTogUm91dGUpID0+IFJvdXRlO1xudHlwZSBFeHRlcm5hbFJvdXRlT3BlcmF0b3IgPSAocm91dGU6IERhZmZSb3V0ZVdpdGhEYXRhUGF0aCwgZXh0ZXJuYWxSb3V0ZTogUm91dGUpID0+IFJvdXRlO1xudHlwZSBJbnNlcnRpb25PcGVyYXRvckZhY3RvcnkgPSAoZXh0ZXJuYWxSb3V0ZTogUm91dGUpID0+IFJvdXRlT3BlcmF0b3I7XG5cbi8qKlxuICogVGVzdHMgd2hldGhlciBvciBub3QgYSByb3V0ZSBtYXRjaGVzIGEgc3BlY2lmaWMgRGFmZm9kaWwgUm91dGUgdHlwZS5cbiAqXG4gKiBTZWUge0BsaW5rIERhZmZSb3V0ZVdpdGhEYXRhUGF0aH1cbiAqL1xuY29uc3Qgcm91dGVNYXRjaGVzUm91dGVUeXBlID0gKHJvdXRlOiBSb3V0ZSwgdHlwZTogRGFmZkV4dGVybmFsUm91dGVUeXBlKTogYm9vbGVhbiA9PiByb3V0ZT8uZGF0YT8uZGFmZkV4dGVybmFsUm91dGVUeXBlID09PSB0eXBlO1xuXG4vKipcbiAqIEFkZHMgYSBwYXRoIHRvIHRoZSBgZGFmZlBhdGhzYCBvZiB0aGUgZ2l2ZW4gcm91dGUuXG4gKlxuICogU2VlIHtAbGluayBEYWZmUm91dGVXaXRoRGF0YVBhdGh9XG4gKi9cbmNvbnN0IGFkZFJvdXRlVG9EYWZmUGF0aHM6IEV4dGVybmFsUm91dGVPcGVyYXRvciA9XG4gIChyb3V0ZTogRGFmZlJvdXRlV2l0aERhdGFQYXRoLCBleHRlcm5hbFJvdXRlOiBSb3V0ZSkgPT4ge1xuICAgIHJvdXRlLmRhdGEuZGFmZlBhdGhzID0ge1xuICAgICAgLi4ucm91dGUuZGF0YS5kYWZmUGF0aHMsXG4gICAgICBbZXh0ZXJuYWxSb3V0ZS5wYXRoXTogZXh0ZXJuYWxSb3V0ZS5kYXRhLFxuICAgIH07XG4gICAgcmV0dXJuIHJvdXRlO1xuICB9O1xuXG5jb25zdCBvcGVyYXRlT25Sb3V0ZTogSW5zZXJ0aW9uT3BlcmF0b3JGYWN0b3J5ID1cbiAgKGV4dGVybmFsUm91dGU6IFJvdXRlKSA9PiAocm91dGU6IERhZmZSb3V0ZVdpdGhEYXRhUGF0aCkgPT4gYWRkUm91dGVUb0RhZmZQYXRocyhyb3V0ZSwgZXh0ZXJuYWxSb3V0ZSk7XG5cbi8qKlxuICogVHJhdmVyc2UgdGhlIHJvdXRlciBjb25maWcgdHJlZSwgaGFsdGluZyBhZnRlciB0aGUgZmlyc3QgbWF0Y2guXG4gKiBUaGlzIHRyYXZlcnNhbCBpcyBpbXBsZW1lbnRlZCBpbiBhIHByZS1vcmRlciBtYW5uZXIuIEFzIHN1Y2gsIGZvciBsYXJnZVxuICogY29uZmlndXJhdGlvbiB0cmVlcywgaXQgd2lsbCBiZSBtb3N0IGVmZmljaWVudCB0byBwbGFjZSBleHRlcm5hbGx5IHJvdXRlZFxuICogY29tcG9uZW50cyBhdCB0aGUgdG9wIG9mIHJvdXRlciBjb25maWd1cmF0aW9uLlxuICovXG5jb25zdCB0cmF2ZXJzZVJvdXRlVHJlZSA9IChyb3V0ZXM6IFJvdXRlcyA9IFtdLCBtYXRjaGVyOiAocm91dGU6IFJvdXRlKSA9PiBib29sZWFuLCBvcGVyYXRlOiBSb3V0ZU9wZXJhdG9yKTogUm91dGVzID0+IHtcbiAgaWYocm91dGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiByb3V0ZXM7XG4gIH1cblxuICBjb25zdCBzdGFjazogUm91dGVzID0gW107XG4gIGNvbnN0IHRyZWVSb290ID0geyBjaGlsZHJlbjogcm91dGVzIH07XG4gIHN0YWNrLnB1c2godHJlZVJvb3QpO1xuXG4gIHdoaWxlKHN0YWNrLmxlbmd0aCkge1xuICAgIGNvbnN0IHJvdXRlID0gc3RhY2sucG9wKCk7XG4gICAgaWYobWF0Y2hlcihyb3V0ZSkpIHtcbiAgICAgIG9wZXJhdGUocm91dGUpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmKHJvdXRlLmNoaWxkcmVuKXtcbiAgICAgIHN0YWNrLnB1c2goLi4ucm91dGUuY2hpbGRyZW4ucmV2ZXJzZSgpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJvdXRlcztcbn07XG5cbi8qKlxuICogQSByb3V0ZSBpbnNlcnRpb24gc3RyYXRlZ3kgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBlbmQgZXh0ZXJuYWwgcm91dGVzIG9udG9cbiAqIGV4aXN0aW5nIEFuZ3VsYXIgcm91dGVzLiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byByb3V0ZSB0b1xuICogYW4gZXhpc3RpbmcgbGF6eS1sb2FkZWQgbW9kdWxlIGZyb20gbXVsdGlwbGUgZXh0ZXJuYWxseSBkZWZpbmVkIHVybHMuXG4gKlxuICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSB7QGxpbmsgZGFmZkRhdGFQYXRoVXJsTWF0Y2hlcn0gdG8gbWF0Y2ggbGF6eS1sb2FkZWQgbW9kdWxlcyB3aXRoXG4gKiBhc3NvY2lhdGVkIGV4dGVybmFsIHVybHMuXG4gKlxuICogRm9yIGV4YW1wbGUsIHlvdSBjYW4gcHJvdmlkZSB0aGUgaW5zZXJ0aW9uIHN0cmF0ZWd5IGluIHRoZSB7QGxpbmsgRGFmZkV4dGVybmFsUm91dGVyTW9kdWxlfSBhcyBiZWxvdy5cbiAqXG4gKiBgYGB0c1xuICogRGFmZkV4dGVybmFsUm91dGVyTW9kdWxlLmZvclJvb3Qoe30sIFtcbiAqICB7XG4gKiAgICB0eXBlOiAnQ0FURUdPUlknLFxuICogICAgaW5zZXJ0aW9uU3RyYXRlZ3k6IGRhZmZJbnNlcnREYXRhUGF0aFN0cmF0ZWd5LFxuICogICAgcm91dGU6IHt9XG4gKiAgfVxuICogXSxcbiAqIGBgYFxuICpcbiAqIFRoZW4sIHlvdSBjYW4gbWF0Y2ggaXQgd2l0aCBhbiBhc3NvY2lhdGVkIHJvdXRlIGRlZmluZWQgaW4geW91ciBSb3V0aW5nXG4gKiBjb25maWd1cmF0aW9uIHdpdGggdGhlIHtAbGluayBkYWZmRGF0YVBhdGhVcmxNYXRjaGVyfS5cbiAqXG4gKiBgYGB0c1xuICogIGV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAgIHtcbiAqICAgICAgbWF0Y2hlcjogZGFmZkRhdGFQYXRoVXJsTWF0Y2hlcixcbiAqICAgICAgZGF0YToge1xuICogICAgICAgIGRhZmZFeHRlcm5hbFJvdXRlVHlwZTogXCJDQVRFR09SWVwiLFxuICogICAgICB9LFxuICogICAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2R1bGUnKS50aGVuKChtKSA9PiBtLk15Q2F0ZWdvcnlNb2R1bGUpLFxuICogICAgfVxuICogXVxuICogYGBgXG4gKlxuICogU2VlIHtAbGluayBEYWZmUm91dGVXaXRoRGF0YVBhdGh9XG4gKlxuICovXG5leHBvcnQgY29uc3QgZGFmZkluc2VydERhdGFQYXRoU3RyYXRlZ3k6IERhZmZFeHRlcm5hbFJvdXRlckluc2VydGlvblN0cmF0ZWd5ID0gKGV4dGVybmFsUm91dGU6IERhZmZSb3V0ZVdpdGhUeXBlICYgRGFmZlJvdXRlV2l0aFNlb0RhdGEsIHJvdXRlczogUm91dGVzKSA9PiB0cmF2ZXJzZVJvdXRlVHJlZShcbiAgcm91dGVzLFxuICAocm91dGUpID0+IHJvdXRlTWF0Y2hlc1JvdXRlVHlwZShyb3V0ZSwgZXh0ZXJuYWxSb3V0ZS5kYWZmRXh0ZXJuYWxSb3V0ZVR5cGUpLFxuICBvcGVyYXRlT25Sb3V0ZShleHRlcm5hbFJvdXRlKSxcbik7XG4iXX0=
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import { DaffExternalRouterNoWildcardError } from '../../errors/no-wildcard';
|
2
|
-
/**
|
3
|
-
* Inserts a Route into Routes right before the wildcard route.
|
4
|
-
* If no wildcard is found, it fails fast with a `DaffExternalRouterNoWildcardError`.
|
5
|
-
*/
|
6
|
-
export const daffInsertRouteBeforeWildCardStrategy = (route, routes) => {
|
7
|
-
const index = routes.findIndex((r) => r.path === '**');
|
8
|
-
if (index === -1) {
|
9
|
-
throw new DaffExternalRouterNoWildcardError('No wildcard (**) route was found during route resolution.');
|
10
|
-
}
|
11
|
-
return [
|
12
|
-
...routes.slice(0, index),
|
13
|
-
route,
|
14
|
-
...routes.slice(index),
|
15
|
-
];
|
16
|
-
};
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LXJvdXRlLWJlZm9yZS13aWxkY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZXh0ZXJuYWwtcm91dGVyL3NyYy9yb3V0ZXIvc3RyYXRlZ2llcy9pbnNlcnQtcm91dGUtYmVmb3JlLXdpbGRjYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzdFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUF3QyxDQUN4RixLQUFZLEVBQ1osTUFBYyxFQUNOLEVBQUU7SUFDVixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzlELElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLGlDQUFpQyxDQUN6QywyREFBMkQsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPO1FBQ0wsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDekIsS0FBSztRQUNMLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7S0FDdkIsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJvdXRlLFxuICBSb3V0ZXMsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlck5vV2lsZGNhcmRFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9ycy9uby13aWxkY2FyZCc7XG5pbXBvcnQgeyBEYWZmRXh0ZXJuYWxSb3V0ZXJJbnNlcnRpb25TdHJhdGVneSB9IGZyb20gJy4uLy4uL21vZGVsL2luc2VydGlvbi1zdHJhdGVneS50eXBlJztcblxuLyoqXG4gKiBJbnNlcnRzIGEgUm91dGUgaW50byBSb3V0ZXMgcmlnaHQgYmVmb3JlIHRoZSB3aWxkY2FyZCByb3V0ZS5cbiAqIElmIG5vIHdpbGRjYXJkIGlzIGZvdW5kLCBpdCBmYWlscyBmYXN0IHdpdGggYSBgRGFmZkV4dGVybmFsUm91dGVyTm9XaWxkY2FyZEVycm9yYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGRhZmZJbnNlcnRSb3V0ZUJlZm9yZVdpbGRDYXJkU3RyYXRlZ3k6IERhZmZFeHRlcm5hbFJvdXRlckluc2VydGlvblN0cmF0ZWd5ID0gKFxuICByb3V0ZTogUm91dGUsXG4gIHJvdXRlczogUm91dGVzLFxuKTogUm91dGVzID0+IHtcbiAgY29uc3QgaW5kZXggPSByb3V0ZXMuZmluZEluZGV4KChyOiBSb3V0ZSkgPT4gci5wYXRoID09PSAnKionKTtcbiAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBEYWZmRXh0ZXJuYWxSb3V0ZXJOb1dpbGRjYXJkRXJyb3IoXG4gICAgICAnTm8gd2lsZGNhcmQgKCoqKSByb3V0ZSB3YXMgZm91bmQgZHVyaW5nIHJvdXRlIHJlc29sdXRpb24uJyxcbiAgICApO1xuICB9XG4gIHJldHVybiBbXG4gICAgLi4ucm91dGVzLnNsaWNlKDAsIGluZGV4KSxcbiAgICByb3V0ZSxcbiAgICAuLi5yb3V0ZXMuc2xpY2UoaW5kZXgpLFxuICBdO1xufTtcbiJdfQ==
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';
|
2
|
-
/**
|
3
|
-
* A UrlMatcher that does an exact match against a path stored in the special
|
4
|
-
* configuration fields that External Router stores on a Route's data.
|
5
|
-
*
|
6
|
-
* ```ts
|
7
|
-
* export const routes: Routes = [
|
8
|
-
* {
|
9
|
-
* matcher: daffDataPathUrlMatcher,
|
10
|
-
* data: {
|
11
|
-
* daffExternalRouteType: "CATEGORY",
|
12
|
-
* },
|
13
|
-
* loadChildren: () => import('./category/category.module').then((m) => m.ShopCategoryModule),
|
14
|
-
* }
|
15
|
-
* ]
|
16
|
-
* ```
|
17
|
-
* {@link daffInsertDataPathStrategy }
|
18
|
-
* {@link DaffRouteWithDataPath }
|
19
|
-
*/
|
20
|
-
export const daffDataPathUrlMatcher = (segments, group, route) => {
|
21
|
-
const path = daffUriTruncateLeadingSlash(segments.reduce((acc, segment) => acc + '/' + segment.path, ''));
|
22
|
-
const paths = route?.data?.daffPaths;
|
23
|
-
// If we don't have any paths, we can safely fail a match.
|
24
|
-
if (!paths) {
|
25
|
-
return null;
|
26
|
-
}
|
27
|
-
// Otherwise, look up the path in the dictionary, failing if a match isn't found,
|
28
|
-
// but matching the entire segment if a match is found.
|
29
|
-
return path in paths ? { consumed: segments } : null;
|
30
|
-
};
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wYXRoLW1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2V4dGVybmFsLXJvdXRlci9zcmMvcm91dGVyL3VybC1tYXRjaGVyL2RhdGEtcGF0aC1tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSXJFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFlLENBQUMsUUFBc0IsRUFBRSxLQUFzQixFQUFFLEtBQTRCLEVBQUUsRUFBRTtJQUNqSSxNQUFNLElBQUksR0FBRywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEgsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7SUFFckMsMERBQTBEO0lBQzFELElBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlGQUFpRjtJQUNqRix1REFBdUQ7SUFDdkQsT0FBTyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFVybE1hdGNoZXIsXG4gIFVybFNlZ21lbnQsXG4gIFVybFNlZ21lbnRHcm91cCxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgZGFmZlVyaVRydW5jYXRlTGVhZGluZ1NsYXNoIH0gZnJvbSAnQGRhZmZvZGlsL2NvcmUvcm91dGluZyc7XG5cbmltcG9ydCB7IERhZmZSb3V0ZVdpdGhEYXRhUGF0aCB9IGZyb20gJy4uLy4uL21vZGVsL3B1YmxpY19hcGknO1xuXG4vKipcbiAqIEEgVXJsTWF0Y2hlciB0aGF0IGRvZXMgYW4gZXhhY3QgbWF0Y2ggYWdhaW5zdCBhIHBhdGggc3RvcmVkIGluIHRoZSBzcGVjaWFsXG4gKiBjb25maWd1cmF0aW9uIGZpZWxkcyB0aGF0IEV4dGVybmFsIFJvdXRlciBzdG9yZXMgb24gYSBSb3V0ZSdzIGRhdGEuXG4gKlxuICogYGBgdHNcbiAqICBleHBvcnQgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgICB7XG4gKiAgICAgIG1hdGNoZXI6IGRhZmZEYXRhUGF0aFVybE1hdGNoZXIsXG4gKiAgICAgIGRhdGE6IHtcbiAqICAgICAgICBkYWZmRXh0ZXJuYWxSb3V0ZVR5cGU6IFwiQ0FURUdPUllcIixcbiAqICAgICAgfSxcbiAqICAgICAgbG9hZENoaWxkcmVuOiAoKSA9PiBpbXBvcnQoJy4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kdWxlJykudGhlbigobSkgPT4gbS5TaG9wQ2F0ZWdvcnlNb2R1bGUpLFxuICogICAgfVxuICogXVxuICogYGBgXG4gKiB7QGxpbmsgZGFmZkluc2VydERhdGFQYXRoU3RyYXRlZ3kgfVxuICoge0BsaW5rIERhZmZSb3V0ZVdpdGhEYXRhUGF0aCB9XG4gKi9cbmV4cG9ydCBjb25zdCBkYWZmRGF0YVBhdGhVcmxNYXRjaGVyOiBVcmxNYXRjaGVyID0gKHNlZ21lbnRzOiBVcmxTZWdtZW50W10sIGdyb3VwOiBVcmxTZWdtZW50R3JvdXAsIHJvdXRlOiBEYWZmUm91dGVXaXRoRGF0YVBhdGgpID0+IHtcbiAgY29uc3QgcGF0aCA9IGRhZmZVcmlUcnVuY2F0ZUxlYWRpbmdTbGFzaChzZWdtZW50cy5yZWR1Y2UoKGFjYzogc3RyaW5nLCBzZWdtZW50KSA9PiBhY2MgKyAnLycgKyBzZWdtZW50LnBhdGgsICcnKSk7XG4gIGNvbnN0IHBhdGhzID0gcm91dGU/LmRhdGE/LmRhZmZQYXRocztcblxuICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFueSBwYXRocywgd2UgY2FuIHNhZmVseSBmYWlsIGEgbWF0Y2guXG4gIGlmKCFwYXRocykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBsb29rIHVwIHRoZSBwYXRoIGluIHRoZSBkaWN0aW9uYXJ5LCBmYWlsaW5nIGlmIGEgbWF0Y2ggaXNuJ3QgZm91bmQsXG4gIC8vIGJ1dCBtYXRjaGluZyB0aGUgZW50aXJlIHNlZ21lbnQgaWYgYSBtYXRjaCBpcyBmb3VuZC5cbiAgcmV0dXJuIHBhdGggaW4gcGF0aHMgPyAgeyBjb25zdW1lZDogc2VnbWVudHMgfSA6IG51bGw7XG59O1xuXG4iXX0=
|
@@ -1,77 +0,0 @@
|
|
1
|
-
import { Injectable, Inject, } from '@angular/core';
|
2
|
-
import { Router, } from '@angular/router';
|
3
|
-
import { of, } from 'rxjs';
|
4
|
-
import { catchError, map, switchMap, } from 'rxjs/operators';
|
5
|
-
import { DaffRoutingUriNormalizer } from '@daffodil/core/routing';
|
6
|
-
import { DaffExternalRouter, DAFF_EXTERNAL_ROUTER_CONFIG, } from '@daffodil/external-router';
|
7
|
-
import { DaffExternalRouterDriver, } from '@daffodil/external-router/driver';
|
8
|
-
import { DaffExternalRouterNotFoundError } from '../errors/not-found-error';
|
9
|
-
import { DaffExternalRouterPermanentRedirectError } from '../errors/permanent-redirect';
|
10
|
-
import { DaffExternalRouterTemporaryRedirectError } from '../errors/temporary-redirect';
|
11
|
-
import { processErrors } from '../processors/process-errors';
|
12
|
-
import { processRedirects } from '../processors/process-redirect';
|
13
|
-
import * as i0 from "@angular/core";
|
14
|
-
import * as i1 from "@daffodil/external-router";
|
15
|
-
import * as i2 from "@angular/router";
|
16
|
-
import * as i3 from "@daffodil/core/routing";
|
17
|
-
/**
|
18
|
-
* The DaffExternalRouterExistenceGuard is responsible for guarding the wildcard route
|
19
|
-
* of an Angular App and either navigating to a resolved route upon successful resolution
|
20
|
-
* or navigating to the configured route upon a failed resolution.
|
21
|
-
*/
|
22
|
-
export class DaffExternalRouterExistenceGuard {
|
23
|
-
constructor(driver, externalRouter, router, config, urlNormalizer) {
|
24
|
-
this.driver = driver;
|
25
|
-
this.externalRouter = externalRouter;
|
26
|
-
this.router = router;
|
27
|
-
this.config = config;
|
28
|
-
this.urlNormalizer = urlNormalizer;
|
29
|
-
}
|
30
|
-
canActivate(next, state) {
|
31
|
-
return this.driver.resolve(this.urlNormalizer.normalize(state.url)).pipe(map((resolvedRoute) => processErrors(resolvedRoute)), switchMap(resolvedRoute => {
|
32
|
-
this.externalRouter.add(resolvedRoute);
|
33
|
-
return of(resolvedRoute);
|
34
|
-
}), map((resolvedRoute) => processRedirects(resolvedRoute)),
|
35
|
-
// Note that we have to use state.url as we want to ensure that we keep any fragments or query strings.
|
36
|
-
// When we succeed, redirect to the new route, as config has changed since we init'd.
|
37
|
-
map(() => this.router.parseUrl(state.url)),
|
38
|
-
// When we fail, we need to process errors as dictated by the error type.
|
39
|
-
// Handle redirects
|
40
|
-
catchError(error => {
|
41
|
-
if (!(error instanceof DaffExternalRouterPermanentRedirectError) &&
|
42
|
-
!(error instanceof DaffExternalRouterTemporaryRedirectError)) {
|
43
|
-
throw error;
|
44
|
-
}
|
45
|
-
return of(this.router.parseUrl(error.redirectUrl));
|
46
|
-
}),
|
47
|
-
// Handle "404"
|
48
|
-
catchError((error) => {
|
49
|
-
if (!(error instanceof DaffExternalRouterNotFoundError)) {
|
50
|
-
throw error;
|
51
|
-
}
|
52
|
-
return of(this.router.parseUrl(this.config.notFoundResolutionPath));
|
53
|
-
}),
|
54
|
-
//Otherwise something went horribly wrong and we need to bail out.
|
55
|
-
catchError((error) => {
|
56
|
-
//TODO(damienwebdev): Add a logging system.
|
57
|
-
//This log is intentional until we have a better logging system in place.
|
58
|
-
console.log(error);
|
59
|
-
return of(this.router.parseUrl(this.config.failedResolutionPath));
|
60
|
-
}));
|
61
|
-
}
|
62
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffExternalRouterExistenceGuard, deps: [{ token: DaffExternalRouterDriver }, { token: i1.DaffExternalRouter }, { token: i2.Router }, { token: DAFF_EXTERNAL_ROUTER_CONFIG }, { token: i3.DaffRoutingUriNormalizer }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
63
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffExternalRouterExistenceGuard, providedIn: 'root' }); }
|
64
|
-
}
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffExternalRouterExistenceGuard, decorators: [{
|
66
|
-
type: Injectable,
|
67
|
-
args: [{
|
68
|
-
providedIn: 'root',
|
69
|
-
}]
|
70
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
71
|
-
type: Inject,
|
72
|
-
args: [DaffExternalRouterDriver]
|
73
|
-
}] }, { type: i1.DaffExternalRouter }, { type: i2.Router }, { type: undefined, decorators: [{
|
74
|
-
type: Inject,
|
75
|
-
args: [DAFF_EXTERNAL_ROUTER_CONFIG]
|
76
|
-
}] }, { type: i3.DaffRoutingUriNormalizer }] });
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpc3RlbmNlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9leHRlcm5hbC1yb3V0ZXIvcm91dGluZy9zcmMvZ3VhcmQvZXhpc3RlbmNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxNQUFNLEdBR1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBRUwsRUFBRSxHQUNILE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFVBQVUsRUFDVixHQUFHLEVBQ0gsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLGtCQUFrQixFQUVsQiwyQkFBMkIsR0FFNUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUwsd0JBQXdCLEdBQ3pCLE1BQU0sa0NBQWtDLENBQUM7QUFFMUMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQUVsRTs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxZQUVVLE1BQXlDLEVBQ3pDLGNBQWtDLEVBQ2xDLE1BQWMsRUFFZCxNQUF1QyxFQUN2QyxhQUF1QztRQUx2QyxXQUFNLEdBQU4sTUFBTSxDQUFtQztRQUN6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVkLFdBQU0sR0FBTixNQUFNLENBQWlDO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtJQUM3QyxDQUFDO0lBRUwsV0FBVyxDQUNULElBQTRCLEVBQzVCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN0RSxHQUFHLENBQUMsQ0FBQyxhQUEwQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsRUFDakYsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLGFBQTBDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BGLHVHQUF1RztRQUN2RyxxRkFBcUY7UUFDckYsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyx5RUFBeUU7UUFDekUsbUJBQW1CO1FBQ25CLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUNFLENBQUMsQ0FBQyxLQUFLLFlBQVksd0NBQXdDLENBQUM7Z0JBQzVELENBQUMsQ0FBQyxLQUFLLFlBQVksd0NBQXdDLENBQUMsRUFBRSxDQUFDO2dCQUMvRCxNQUFNLEtBQUssQ0FBQztZQUNkLENBQUM7WUFFRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUM7UUFDRixlQUFlO1FBQ2YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLCtCQUErQixDQUFDLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDO1lBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDO1FBRUYsa0VBQWtFO1FBQ2xFLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLDJDQUEyQztZQUMzQyx5RUFBeUU7WUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztpSUFyRFUsZ0NBQWdDLGtCQUVqQyx3QkFBd0IscUVBSXhCLDJCQUEyQjtxSUFOMUIsZ0NBQWdDLGNBRi9CLE1BQU07OzJGQUVQLGdDQUFnQztrQkFINUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsd0JBQXdCOzswQkFJL0IsTUFBTTsyQkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIEluamVjdCxcbiAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBVcmxUcmVlLFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGFmZlJvdXRpbmdVcmlOb3JtYWxpemVyIH0gZnJvbSAnQGRhZmZvZGlsL2NvcmUvcm91dGluZyc7XG5pbXBvcnQge1xuICBEYWZmRXh0ZXJuYWxSb3V0ZXIsXG4gIERhZmZFeHRlcm5hbFJvdXRlckNvbmZpZ3VyYXRpb24sXG4gIERBRkZfRVhURVJOQUxfUk9VVEVSX0NPTkZJRyxcbiAgRGFmZkV4dGVybmFsbHlSZXNvbHZhYmxlVXJsLFxufSBmcm9tICdAZGFmZm9kaWwvZXh0ZXJuYWwtcm91dGVyJztcbmltcG9ydCB7XG4gIERhZmZFeHRlcm5hbFJvdXRlckRyaXZlckludGVyZmFjZSxcbiAgRGFmZkV4dGVybmFsUm91dGVyRHJpdmVyLFxufSBmcm9tICdAZGFmZm9kaWwvZXh0ZXJuYWwtcm91dGVyL2RyaXZlcic7XG5cbmltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlck5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvbm90LWZvdW5kLWVycm9yJztcbmltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlclBlcm1hbmVudFJlZGlyZWN0RXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvcGVybWFuZW50LXJlZGlyZWN0JztcbmltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlclRlbXBvcmFyeVJlZGlyZWN0RXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvdGVtcG9yYXJ5LXJlZGlyZWN0JztcbmltcG9ydCB7IHByb2Nlc3NFcnJvcnMgfSBmcm9tICcuLi9wcm9jZXNzb3JzL3Byb2Nlc3MtZXJyb3JzJztcbmltcG9ydCB7IHByb2Nlc3NSZWRpcmVjdHMgfSBmcm9tICcuLi9wcm9jZXNzb3JzL3Byb2Nlc3MtcmVkaXJlY3QnO1xuXG4vKipcbiAqIFRoZSBEYWZmRXh0ZXJuYWxSb3V0ZXJFeGlzdGVuY2VHdWFyZCBpcyByZXNwb25zaWJsZSBmb3IgZ3VhcmRpbmcgdGhlIHdpbGRjYXJkIHJvdXRlXG4gKiBvZiBhbiBBbmd1bGFyIEFwcCBhbmQgZWl0aGVyIG5hdmlnYXRpbmcgdG8gYSByZXNvbHZlZCByb3V0ZSB1cG9uIHN1Y2Nlc3NmdWwgcmVzb2x1dGlvblxuICogb3IgbmF2aWdhdGluZyB0byB0aGUgY29uZmlndXJlZCByb3V0ZSB1cG9uIGEgZmFpbGVkIHJlc29sdXRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYWZmRXh0ZXJuYWxSb3V0ZXJFeGlzdGVuY2VHdWFyZCAge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERhZmZFeHRlcm5hbFJvdXRlckRyaXZlcilcbiAgICBwcml2YXRlIGRyaXZlcjogRGFmZkV4dGVybmFsUm91dGVyRHJpdmVySW50ZXJmYWNlLFxuICAgIHByaXZhdGUgZXh0ZXJuYWxSb3V0ZXI6IERhZmZFeHRlcm5hbFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoREFGRl9FWFRFUk5BTF9ST1VURVJfQ09ORklHKVxuICAgIHByaXZhdGUgY29uZmlnOiBEYWZmRXh0ZXJuYWxSb3V0ZXJDb25maWd1cmF0aW9uLFxuICAgIHByaXZhdGUgdXJsTm9ybWFsaXplcjogRGFmZlJvdXRpbmdVcmlOb3JtYWxpemVyLFxuICApIHsgfVxuXG4gIGNhbkFjdGl2YXRlKFxuICAgIG5leHQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gICk6IE9ic2VydmFibGU8VXJsVHJlZSB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5kcml2ZXIucmVzb2x2ZSh0aGlzLnVybE5vcm1hbGl6ZXIubm9ybWFsaXplKHN0YXRlLnVybCkpLnBpcGUoXG4gICAgICBtYXAoKHJlc29sdmVkUm91dGU6IERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybCkgPT4gcHJvY2Vzc0Vycm9ycyhyZXNvbHZlZFJvdXRlKSksXG4gICAgICBzd2l0Y2hNYXAocmVzb2x2ZWRSb3V0ZSA9PiB7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxSb3V0ZXIuYWRkKHJlc29sdmVkUm91dGUpO1xuICAgICAgICByZXR1cm4gb2YocmVzb2x2ZWRSb3V0ZSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocmVzb2x2ZWRSb3V0ZTogRGFmZkV4dGVybmFsbHlSZXNvbHZhYmxlVXJsKSA9PiBwcm9jZXNzUmVkaXJlY3RzKHJlc29sdmVkUm91dGUpKSxcbiAgICAgIC8vIE5vdGUgdGhhdCB3ZSBoYXZlIHRvIHVzZSBzdGF0ZS51cmwgYXMgd2Ugd2FudCB0byBlbnN1cmUgdGhhdCB3ZSBrZWVwIGFueSBmcmFnbWVudHMgb3IgcXVlcnkgc3RyaW5ncy5cbiAgICAgIC8vIFdoZW4gd2Ugc3VjY2VlZCwgcmVkaXJlY3QgdG8gdGhlIG5ldyByb3V0ZSwgYXMgY29uZmlnIGhhcyBjaGFuZ2VkIHNpbmNlIHdlIGluaXQnZC5cbiAgICAgIG1hcCgoKSA9PiB0aGlzLnJvdXRlci5wYXJzZVVybChzdGF0ZS51cmwpKSxcbiAgICAgIC8vIFdoZW4gd2UgZmFpbCwgd2UgbmVlZCB0byBwcm9jZXNzIGVycm9ycyBhcyBkaWN0YXRlZCBieSB0aGUgZXJyb3IgdHlwZS5cbiAgICAgIC8vIEhhbmRsZSByZWRpcmVjdHNcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIShlcnJvciBpbnN0YW5jZW9mIERhZmZFeHRlcm5hbFJvdXRlclBlcm1hbmVudFJlZGlyZWN0RXJyb3IpICYmXG4gICAgICAgICAgIShlcnJvciBpbnN0YW5jZW9mIERhZmZFeHRlcm5hbFJvdXRlclRlbXBvcmFyeVJlZGlyZWN0RXJyb3IpKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2YodGhpcy5yb3V0ZXIucGFyc2VVcmwoZXJyb3IucmVkaXJlY3RVcmwpKTtcbiAgICAgIH0pLFxuICAgICAgLy8gSGFuZGxlIFwiNDA0XCJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRGFmZkV4dGVybmFsUm91dGVyTm90Rm91bmRFcnJvcikpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZih0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLmNvbmZpZy5ub3RGb3VuZFJlc29sdXRpb25QYXRoKSk7XG4gICAgICB9KSxcblxuICAgICAgLy9PdGhlcndpc2Ugc29tZXRoaW5nIHdlbnQgaG9ycmlibHkgd3JvbmcgYW5kIHdlIG5lZWQgdG8gYmFpbCBvdXQuXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAvL1RPRE8oZGFtaWVud2ViZGV2KTogQWRkIGEgbG9nZ2luZyBzeXN0ZW0uXG4gICAgICAgIC8vVGhpcyBsb2cgaXMgaW50ZW50aW9uYWwgdW50aWwgd2UgaGF2ZSBhIGJldHRlciBsb2dnaW5nIHN5c3RlbSBpbiBwbGFjZS5cbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICByZXR1cm4gb2YodGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5jb25maWcuZmFpbGVkUmVzb2x1dGlvblBhdGgpKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import { InjectionToken, } from '@angular/core';
|
2
|
-
/**
|
3
|
-
* A multi-token that allows you to register route "types" that correspond to routes.
|
4
|
-
*/
|
5
|
-
export const DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE = new InjectionToken('DAFF_EXTERNAL_ROUTER_RESOLVABLE_TYPE_ROUTES', {
|
6
|
-
providedIn: 'root',
|
7
|
-
factory: () => [],
|
8
|
-
});
|
9
|
-
/**
|
10
|
-
* A provider used to connect a type to a route to enable dynamic route resolution at runtime.
|
11
|
-
*/
|
12
|
-
export function daffProvideRouteResolvableByType(typeRoutePair) {
|
13
|
-
return {
|
14
|
-
provide: DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE,
|
15
|
-
multi: true,
|
16
|
-
useValue: typeRoutePair,
|
17
|
-
};
|
18
|
-
}
|
19
|
-
/**
|
20
|
-
* A multi-provider used to connect an array of types to their respective routes.
|
21
|
-
*/
|
22
|
-
export function daffProvideRoutesResolvableByType(routes) {
|
23
|
-
return routes.map((route) => ({
|
24
|
-
provide: DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE,
|
25
|
-
multi: true,
|
26
|
-
useValue: route,
|
27
|
-
}));
|
28
|
-
}
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1yZXNvbHZhYmxlLXJvdXRlcy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvZXh0ZXJuYWwtcm91dGVyL3NyYy90b2tlbi90eXBlLXJlc29sdmFibGUtcm91dGVzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEdBRWYsTUFBTSxlQUFlLENBQUM7QUFPdkI7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4Q0FBOEMsR0FBRyxJQUFJLGNBQWMsQ0FFOUUsNkNBQTZDLEVBQUU7SUFDL0MsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDbEIsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsYUFBZ0M7SUFDL0UsT0FBTztRQUNMLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsS0FBSyxFQUFFLElBQUk7UUFDWCxRQUFRLEVBQUUsYUFBYTtLQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLE1BQTJCO0lBQzNFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0MsT0FBTyxFQUFFLDhDQUE4QztRQUN2RCxLQUFLLEVBQUUsSUFBSTtRQUNYLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGlvblRva2VuLFxuICBQcm92aWRlcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlckluc2VydGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vbW9kZWwvaW5zZXJ0aW9uLXN0cmF0ZWd5LnR5cGUnO1xuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVUeXBlIH0gZnJvbSAnLi4vbW9kZWwvcm91dGUtdHlwZSc7XG5pbXBvcnQgeyBEYWZmUm91dGVXaXRob3V0UGF0aCB9IGZyb20gJy4uL21vZGVsL3JvdXRlLXdpdGhvdXQtcGF0aCc7XG5pbXBvcnQgeyBEYWZmVHlwZVJvdXRlUGFpciB9IGZyb20gJy4uL21vZGVsL3R5cGUtcm91dGUtcGFpcic7XG5cbi8qKlxuICogQSBtdWx0aS10b2tlbiB0aGF0IGFsbG93cyB5b3UgdG8gcmVnaXN0ZXIgcm91dGUgXCJ0eXBlc1wiIHRoYXQgY29ycmVzcG9uZCB0byByb3V0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBEQUZGX0VYVEVSTkFMX1JPVVRFUl9ST1VURVNfUkVTT0xWQUJMRV9CWV9UWVBFID0gbmV3IEluamVjdGlvblRva2VuPFxuICBEYWZmVHlwZVJvdXRlUGFpcltdXG4+KCdEQUZGX0VYVEVSTkFMX1JPVVRFUl9SRVNPTFZBQkxFX1RZUEVfUk9VVEVTJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IFtdLFxufSk7XG5cbi8qKlxuICogQSBwcm92aWRlciB1c2VkIHRvIGNvbm5lY3QgYSB0eXBlIHRvIGEgcm91dGUgdG8gZW5hYmxlIGR5bmFtaWMgcm91dGUgcmVzb2x1dGlvbiBhdCBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGFmZlByb3ZpZGVSb3V0ZVJlc29sdmFibGVCeVR5cGUodHlwZVJvdXRlUGFpcjogRGFmZlR5cGVSb3V0ZVBhaXIpOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogREFGRl9FWFRFUk5BTF9ST1VURVJfUk9VVEVTX1JFU09MVkFCTEVfQllfVFlQRSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgICB1c2VWYWx1ZTogdHlwZVJvdXRlUGFpcixcbiAgfTtcbn1cblxuLyoqXG4gKiBBIG11bHRpLXByb3ZpZGVyIHVzZWQgdG8gY29ubmVjdCBhbiBhcnJheSBvZiB0eXBlcyB0byB0aGVpciByZXNwZWN0aXZlIHJvdXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhZmZQcm92aWRlUm91dGVzUmVzb2x2YWJsZUJ5VHlwZShyb3V0ZXM6IERhZmZUeXBlUm91dGVQYWlyW10pOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIHJvdXRlcy5tYXAoKHJvdXRlOiBEYWZmVHlwZVJvdXRlUGFpcikgPT4gKHtcbiAgICBwcm92aWRlOiBEQUZGX0VYVEVSTkFMX1JPVVRFUl9ST1VURVNfUkVTT0xWQUJMRV9CWV9UWVBFLFxuICAgIG11bHRpOiB0cnVlLFxuICAgIHVzZVZhbHVlOiByb3V0ZSxcbiAgfSkpO1xufVxuIl19
|
@@ -1,24 +0,0 @@
|
|
1
|
-
import { DaffExternalRouterUnknownRouteTypeError } from '../errors/unknown-type';
|
2
|
-
/**
|
3
|
-
* Transforms a DaffExternallyResolvableUrl into an Angular Route.
|
4
|
-
*/
|
5
|
-
export const daffTransformResolvedRouteToRoute = (resolvedRoute, availableTypes) => {
|
6
|
-
const routeType = availableTypes
|
7
|
-
.filter(t => t.type === resolvedRoute.type)
|
8
|
-
.shift();
|
9
|
-
if (!routeType) {
|
10
|
-
throw new DaffExternalRouterUnknownRouteTypeError(`Unable to resolve the route '${resolvedRoute.url}'. Its type is '${resolvedRoute.type}' but a matching route wasn't found.`);
|
11
|
-
}
|
12
|
-
return {
|
13
|
-
route: {
|
14
|
-
path: resolvedRoute.url,
|
15
|
-
daffExternalRouteType: resolvedRoute.type,
|
16
|
-
...routeType.route,
|
17
|
-
data: {
|
18
|
-
...resolvedRoute.data,
|
19
|
-
},
|
20
|
-
},
|
21
|
-
insertionStrategy: routeType.insertionStrategy,
|
22
|
-
};
|
23
|
-
};
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZWQtcm91dGUtdG8tcm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2V4dGVybmFsLXJvdXRlci9zcmMvdHJhbnNmb3JtL3Jlc29sdmVkLXJvdXRlLXRvLXJvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBS2pGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsQ0FDL0MsYUFBMEMsRUFDMUMsY0FBbUMsRUFDcEIsRUFBRTtJQUNqQixNQUFNLFNBQVMsR0FBRyxjQUFjO1NBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLElBQUksQ0FBQztTQUMxQyxLQUFLLEVBQUUsQ0FBQztJQUNYLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSx1Q0FBdUMsQ0FDL0MsZ0NBQWdDLGFBQWEsQ0FBQyxHQUFHLG1CQUFtQixhQUFhLENBQUMsSUFBSSxzQ0FBc0MsQ0FDN0gsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHO1lBQ3ZCLHFCQUFxQixFQUFFLGFBQWEsQ0FBQyxJQUFJO1lBQ3pDLEdBQUcsU0FBUyxDQUFDLEtBQUs7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLEdBQUcsYUFBYSxDQUFDLElBQUk7YUFDdEI7U0FDRjtRQUNELGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxpQkFBaUI7S0FDL0MsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlclVua25vd25Sb3V0ZVR5cGVFcnJvciB9IGZyb20gJy4uL2Vycm9ycy91bmtub3duLXR5cGUnO1xuaW1wb3J0IHsgRGFmZkV4dGVybmFsbHlSZXNvbHZhYmxlVXJsIH0gZnJvbSAnLi4vbW9kZWwvcmVzb2x2YWJsZS1yb3V0ZSc7XG5pbXBvcnQgeyBEYWZmUm91dGVJbmZvIH0gZnJvbSAnLi4vbW9kZWwvcm91dGUtaW5mbyc7XG5pbXBvcnQgeyBEYWZmVHlwZVJvdXRlUGFpciB9IGZyb20gJy4uL21vZGVsL3R5cGUtcm91dGUtcGFpcic7XG5cbi8qKlxuICogVHJhbnNmb3JtcyBhIERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybCBpbnRvIGFuIEFuZ3VsYXIgUm91dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBkYWZmVHJhbnNmb3JtUmVzb2x2ZWRSb3V0ZVRvUm91dGUgPSAoXG4gIHJlc29sdmVkUm91dGU6IERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybCxcbiAgYXZhaWxhYmxlVHlwZXM6IERhZmZUeXBlUm91dGVQYWlyW10sXG4pOiBEYWZmUm91dGVJbmZvID0+IHtcbiAgY29uc3Qgcm91dGVUeXBlID0gYXZhaWxhYmxlVHlwZXNcbiAgICAuZmlsdGVyKHQgPT4gdC50eXBlID09PSByZXNvbHZlZFJvdXRlLnR5cGUpXG4gICAgLnNoaWZ0KCk7XG4gIGlmICghcm91dGVUeXBlKSB7XG4gICAgdGhyb3cgbmV3IERhZmZFeHRlcm5hbFJvdXRlclVua25vd25Sb3V0ZVR5cGVFcnJvcihcbiAgICAgIGBVbmFibGUgdG8gcmVzb2x2ZSB0aGUgcm91dGUgJyR7cmVzb2x2ZWRSb3V0ZS51cmx9Jy4gSXRzIHR5cGUgaXMgJyR7cmVzb2x2ZWRSb3V0ZS50eXBlfScgYnV0IGEgbWF0Y2hpbmcgcm91dGUgd2Fzbid0IGZvdW5kLmAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcm91dGU6IHtcbiAgICAgIHBhdGg6IHJlc29sdmVkUm91dGUudXJsLFxuICAgICAgZGFmZkV4dGVybmFsUm91dGVUeXBlOiByZXNvbHZlZFJvdXRlLnR5cGUsXG4gICAgICAuLi5yb3V0ZVR5cGUucm91dGUsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLnJlc29sdmVkUm91dGUuZGF0YSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnNlcnRpb25TdHJhdGVneTogcm91dGVUeXBlLmluc2VydGlvblN0cmF0ZWd5LFxuICB9O1xufTtcbiJdfQ==
|
@@ -1,9 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Extracts a key from DaffPath data based upon the currently activated
|
3
|
-
* RouteSnapshot.
|
4
|
-
*/
|
5
|
-
export const daffExtractDaffPathData = (snapshot, key) => {
|
6
|
-
const pathFromRoot = snapshot.pathFromRoot.flatMap((route) => route.url).map((seg) => seg.path).join('/');
|
7
|
-
return snapshot.data?.daffPaths?.[pathFromRoot]?.[key] ?? null;
|
8
|
-
};
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1kYWZmLXBhdGgtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvZXh0ZXJuYWwtcm91dGVyL3NyYy91dGlsL2V4dHJhY3QtZGFmZi1wYXRoLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBcUQsUUFBZ0MsRUFBRSxHQUFNLEVBQVEsRUFBRTtJQUM1SSxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRyxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDakUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgRGF0YSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuLyoqXG4gKiBFeHRyYWN0cyBhIGtleSBmcm9tIERhZmZQYXRoIGRhdGEgYmFzZWQgdXBvbiB0aGUgY3VycmVudGx5IGFjdGl2YXRlZFxuICogUm91dGVTbmFwc2hvdC5cbiAqL1xuZXhwb3J0IGNvbnN0IGRhZmZFeHRyYWN0RGFmZlBhdGhEYXRhID0gPFQgZXh0ZW5kcyBEYXRhID0gRGF0YSwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPihzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwga2V5OiBLKTogVFtLXSA9PiB7XG4gIGNvbnN0IHBhdGhGcm9tUm9vdCA9IHNuYXBzaG90LnBhdGhGcm9tUm9vdC5mbGF0TWFwKChyb3V0ZSkgPT4gcm91dGUudXJsKS5tYXAoKHNlZykgPT4gc2VnLnBhdGgpLmpvaW4oJy8nKTtcbiAgcmV0dXJuIHNuYXBzaG90LmRhdGE/LmRhZmZQYXRocz8uW3BhdGhGcm9tUm9vdF0/LltrZXldID8/IG51bGw7XG59O1xuIl19
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { ModuleWithProviders } from '@angular/core';
|
2
|
-
import { DaffExternalRouterConfiguration } from './config';
|
3
|
-
import { DaffTypeRoutePair } from './model/type-route-pair';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "@angular/common";
|
6
|
-
/**
|
7
|
-
* The external `DaffExternalRouterModule` allows you to configure the
|
8
|
-
* `@daffodil/external-router` package's behavior.
|
9
|
-
*/
|
10
|
-
export declare class DaffExternalRouterModule {
|
11
|
-
static forRoot(config: Partial<DaffExternalRouterConfiguration>, routes?: DaffTypeRoutePair[]): ModuleWithProviders<DaffExternalRouterModule>;
|
12
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DaffExternalRouterModule, never>;
|
13
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<DaffExternalRouterModule, never, [typeof i1.CommonModule], never>;
|
14
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<DaffExternalRouterModule>;
|
15
|
-
}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import { Route, Routes } from '@angular/router';
|
2
|
-
/**
|
3
|
-
* A function used to insert a route into a routing config.
|
4
|
-
* The entire routing configuration will be replaced by the return value
|
5
|
-
* so a typical usage should not modify the config beyond simply adding the route
|
6
|
-
* to the desired location.
|
7
|
-
*/
|
8
|
-
export type DaffExternalRouterInsertionStrategy = (route: Route, routes: Routes) => Routes;
|
package/model/route-info.d.ts
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
import { DaffExternalRouterInsertionStrategy } from './insertion-strategy.type';
|
2
|
-
import { DaffRouteWithType } from './route-with-type';
|
3
|
-
/**
|
4
|
-
* An object containing the info needed to insert a route into a configuration.
|
5
|
-
*/
|
6
|
-
export interface DaffRouteInfo {
|
7
|
-
route: DaffRouteWithType;
|
8
|
-
insertionStrategy?: DaffExternalRouterInsertionStrategy;
|
9
|
-
}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { Data, Route } from '@angular/router';
|
2
|
-
import { DaffRouteData } from './route-data';
|
3
|
-
/**
|
4
|
-
* A type that describes the special data that Daffodil will look for when attempting
|
5
|
-
* to match a route based upon path data stored in the `data` key of a route.
|
6
|
-
*
|
7
|
-
* {@link daffDataPathUrlMatcher}
|
8
|
-
* {@link daffInsertDataPathStrategy}
|
9
|
-
*/
|
10
|
-
export type DaffRouteWithDataPath = Route & {
|
11
|
-
data?: {
|
12
|
-
daffPaths?: Record<string, DaffRouteData | Data>;
|
13
|
-
};
|
14
|
-
};
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import { Route } from '@angular/router';
|
2
|
-
import { DaffExternalRouteType } from './route-type';
|
3
|
-
/**
|
4
|
-
* A type that describes the special data that Daffodil will look for when attempting
|
5
|
-
* to match a route based upon path data stored in the `data` key of a route.
|
6
|
-
*
|
7
|
-
* {@link daffDataPathUrlMatcher}
|
8
|
-
* {@link daffInsertDataPathStrategy}
|
9
|
-
*/
|
10
|
-
export type DaffRouteWithType = Route & {
|
11
|
-
daffExternalRouteType: DaffExternalRouteType;
|
12
|
-
};
|
@@ -1,7 +0,0 @@
|
|
1
|
-
import { Route } from '@angular/router';
|
2
|
-
/**
|
3
|
-
* A DaffRouteWithoutPath is a special kind of route definition without a path.
|
4
|
-
* This is useful when defining routes that aren't provided a path initially,
|
5
|
-
* but will be provided with one at a later time, e.g. at runtime.
|
6
|
-
*/
|
7
|
-
export type DaffRouteWithoutPath = Omit<Route, 'path'>;
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { DaffExternalRouterInsertionStrategy } from './insertion-strategy.type';
|
2
|
-
import { DaffExternalRouteType } from './route-type';
|
3
|
-
import { DaffRouteWithoutPath } from './route-without-path';
|
4
|
-
/**
|
5
|
-
* A model used to describe the relationship between a {@link DaffExternalRouterType}
|
6
|
-
* and its corresponding route.
|
7
|
-
*
|
8
|
-
* The DaffTypeRoutePair is the pre-provided "glue" that a developer will provide
|
9
|
-
* ahead-of-time so that that the External Router knows what the list of available
|
10
|
-
* "types" are (along with that type's corresponding route).
|
11
|
-
*
|
12
|
-
* An insertion strategy can be specified if the route needs to be inserted somewhere
|
13
|
-
* other than the root of the route config.
|
14
|
-
* Omitting the insertion strategy will default to inserting the route to the root level,
|
15
|
-
* immediately before the wildcard route.
|
16
|
-
*
|
17
|
-
* @docs-private
|
18
|
-
*/
|
19
|
-
export interface DaffTypeRoutePair {
|
20
|
-
type: DaffExternalRouteType;
|
21
|
-
route: DaffRouteWithoutPath;
|
22
|
-
/**
|
23
|
-
* An optional function to provide route insertion behavior.
|
24
|
-
*/
|
25
|
-
insertionStrategy?: DaffExternalRouterInsertionStrategy;
|
26
|
-
}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { Router } from '@angular/router';
|
2
|
-
import { DaffExternallyResolvableUrl } from '../model/resolvable-route';
|
3
|
-
import { DaffTypeRoutePair } from '../model/type-route-pair';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export declare class DaffExternalRouter {
|
6
|
-
private router;
|
7
|
-
private runtimeRoutes;
|
8
|
-
constructor(router: Router, runtimeRoutes: DaffTypeRoutePair[]);
|
9
|
-
/**
|
10
|
-
* Adds a route to the existing router configuration.
|
11
|
-
*/
|
12
|
-
add(resolvedRoute: DaffExternallyResolvableUrl): void;
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DaffExternalRouter, never>;
|
14
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<DaffExternalRouter>;
|
15
|
-
}
|
@@ -1,40 +0,0 @@
|
|
1
|
-
import { DaffExternalRouterInsertionStrategy } from '../../model/insertion-strategy.type';
|
2
|
-
/**
|
3
|
-
* A route insertion strategy that can be used to append external routes onto
|
4
|
-
* existing Angular routes. This can be useful when you need to route to
|
5
|
-
* an existing lazy-loaded module from multiple externally defined urls.
|
6
|
-
*
|
7
|
-
* This should be used in combination with the {@link daffDataPathUrlMatcher} to match lazy-loaded modules with
|
8
|
-
* associated external urls.
|
9
|
-
*
|
10
|
-
* For example, you can provide the insertion strategy in the {@link DaffExternalRouterModule} as below.
|
11
|
-
*
|
12
|
-
* ```ts
|
13
|
-
* DaffExternalRouterModule.forRoot({}, [
|
14
|
-
* {
|
15
|
-
* type: 'CATEGORY',
|
16
|
-
* insertionStrategy: daffInsertDataPathStrategy,
|
17
|
-
* route: {}
|
18
|
-
* }
|
19
|
-
* ],
|
20
|
-
* ```
|
21
|
-
*
|
22
|
-
* Then, you can match it with an associated route defined in your Routing
|
23
|
-
* configuration with the {@link daffDataPathUrlMatcher}.
|
24
|
-
*
|
25
|
-
* ```ts
|
26
|
-
* export const routes: Routes = [
|
27
|
-
* {
|
28
|
-
* matcher: daffDataPathUrlMatcher,
|
29
|
-
* data: {
|
30
|
-
* daffExternalRouteType: "CATEGORY",
|
31
|
-
* },
|
32
|
-
* loadChildren: () => import('./category/category.module').then((m) => m.MyCategoryModule),
|
33
|
-
* }
|
34
|
-
* ]
|
35
|
-
* ```
|
36
|
-
*
|
37
|
-
* See {@link DaffRouteWithDataPath}
|
38
|
-
*
|
39
|
-
*/
|
40
|
-
export declare const daffInsertDataPathStrategy: DaffExternalRouterInsertionStrategy;
|
@@ -1,6 +0,0 @@
|
|
1
|
-
import { DaffExternalRouterInsertionStrategy } from '../../model/insertion-strategy.type';
|
2
|
-
/**
|
3
|
-
* Inserts a Route into Routes right before the wildcard route.
|
4
|
-
* If no wildcard is found, it fails fast with a `DaffExternalRouterNoWildcardError`.
|
5
|
-
*/
|
6
|
-
export declare const daffInsertRouteBeforeWildCardStrategy: DaffExternalRouterInsertionStrategy;
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { UrlMatcher } from '@angular/router';
|
2
|
-
/**
|
3
|
-
* A UrlMatcher that does an exact match against a path stored in the special
|
4
|
-
* configuration fields that External Router stores on a Route's data.
|
5
|
-
*
|
6
|
-
* ```ts
|
7
|
-
* export const routes: Routes = [
|
8
|
-
* {
|
9
|
-
* matcher: daffDataPathUrlMatcher,
|
10
|
-
* data: {
|
11
|
-
* daffExternalRouteType: "CATEGORY",
|
12
|
-
* },
|
13
|
-
* loadChildren: () => import('./category/category.module').then((m) => m.ShopCategoryModule),
|
14
|
-
* }
|
15
|
-
* ]
|
16
|
-
* ```
|
17
|
-
* {@link daffInsertDataPathStrategy }
|
18
|
-
* {@link DaffRouteWithDataPath }
|
19
|
-
*/
|
20
|
-
export declare const daffDataPathUrlMatcher: UrlMatcher;
|
@@ -1,22 +0,0 @@
|
|
1
|
-
import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
|
2
|
-
import { Observable } from 'rxjs';
|
3
|
-
import { DaffRoutingUriNormalizer } from '@daffodil/core/routing';
|
4
|
-
import { DaffExternalRouter, DaffExternalRouterConfiguration } from '@daffodil/external-router';
|
5
|
-
import { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
/**
|
8
|
-
* The DaffExternalRouterExistenceGuard is responsible for guarding the wildcard route
|
9
|
-
* of an Angular App and either navigating to a resolved route upon successful resolution
|
10
|
-
* or navigating to the configured route upon a failed resolution.
|
11
|
-
*/
|
12
|
-
export declare class DaffExternalRouterExistenceGuard {
|
13
|
-
private driver;
|
14
|
-
private externalRouter;
|
15
|
-
private router;
|
16
|
-
private config;
|
17
|
-
private urlNormalizer;
|
18
|
-
constructor(driver: DaffExternalRouterDriverInterface, externalRouter: DaffExternalRouter, router: Router, config: DaffExternalRouterConfiguration, urlNormalizer: DaffRoutingUriNormalizer);
|
19
|
-
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<UrlTree | boolean>;
|
20
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DaffExternalRouterExistenceGuard, never>;
|
21
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<DaffExternalRouterExistenceGuard>;
|
22
|
-
}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { InjectionToken, Provider } from '@angular/core';
|
2
|
-
import { DaffTypeRoutePair } from '../model/type-route-pair';
|
3
|
-
/**
|
4
|
-
* A multi-token that allows you to register route "types" that correspond to routes.
|
5
|
-
*/
|
6
|
-
export declare const DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE: InjectionToken<DaffTypeRoutePair[]>;
|
7
|
-
/**
|
8
|
-
* A provider used to connect a type to a route to enable dynamic route resolution at runtime.
|
9
|
-
*/
|
10
|
-
export declare function daffProvideRouteResolvableByType(typeRoutePair: DaffTypeRoutePair): Provider;
|
11
|
-
/**
|
12
|
-
* A multi-provider used to connect an array of types to their respective routes.
|
13
|
-
*/
|
14
|
-
export declare function daffProvideRoutesResolvableByType(routes: DaffTypeRoutePair[]): Provider[];
|
@@ -1,7 +0,0 @@
|
|
1
|
-
import { DaffExternallyResolvableUrl } from '../model/resolvable-route';
|
2
|
-
import { DaffRouteInfo } from '../model/route-info';
|
3
|
-
import { DaffTypeRoutePair } from '../model/type-route-pair';
|
4
|
-
/**
|
5
|
-
* Transforms a DaffExternallyResolvableUrl into an Angular Route.
|
6
|
-
*/
|
7
|
-
export declare const daffTransformResolvedRouteToRoute: (resolvedRoute: DaffExternallyResolvableUrl, availableTypes: DaffTypeRoutePair[]) => DaffRouteInfo;
|
@@ -1,6 +0,0 @@
|
|
1
|
-
import { ActivatedRouteSnapshot, Data } from '@angular/router';
|
2
|
-
/**
|
3
|
-
* Extracts a key from DaffPath data based upon the currently activated
|
4
|
-
* RouteSnapshot.
|
5
|
-
*/
|
6
|
-
export declare const daffExtractDaffPathData: <T extends Data = Data, K extends keyof T = keyof T>(snapshot: ActivatedRouteSnapshot, key: K) => T[K];
|