@daffodil/external-router 0.38.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of @daffodil/external-router might be problematic. Click here for more details.
- package/README.md +10 -0
- package/bundles/daffodil-external-router-driver-magento-2.4.1.umd.js +490 -0
- package/bundles/daffodil-external-router-driver-magento-2.4.1.umd.js.map +1 -0
- package/bundles/daffodil-external-router-driver-magento-2.4.1.umd.min.js +16 -0
- package/bundles/daffodil-external-router-driver-magento-2.4.1.umd.min.js.map +1 -0
- package/bundles/daffodil-external-router-driver-magento-2.4.2.umd.js +487 -0
- package/bundles/daffodil-external-router-driver-magento-2.4.2.umd.js.map +1 -0
- package/bundles/daffodil-external-router-driver-magento-2.4.2.umd.min.js +16 -0
- package/bundles/daffodil-external-router-driver-magento-2.4.2.umd.min.js.map +1 -0
- package/bundles/daffodil-external-router-driver-magento.umd.js +69 -0
- package/bundles/daffodil-external-router-driver-magento.umd.js.map +1 -0
- package/bundles/daffodil-external-router-driver-magento.umd.min.js +2 -0
- package/bundles/daffodil-external-router-driver-magento.umd.min.js.map +1 -0
- package/bundles/daffodil-external-router-driver-testing.umd.js +155 -0
- package/bundles/daffodil-external-router-driver-testing.umd.js.map +1 -0
- package/bundles/daffodil-external-router-driver-testing.umd.min.js +2 -0
- package/bundles/daffodil-external-router-driver-testing.umd.min.js.map +1 -0
- package/bundles/daffodil-external-router-driver.umd.js +79 -0
- package/bundles/daffodil-external-router-driver.umd.js.map +1 -0
- package/bundles/daffodil-external-router-driver.umd.min.js +2 -0
- package/bundles/daffodil-external-router-driver.umd.min.js.map +1 -0
- package/bundles/daffodil-external-router-routing.umd.js +644 -0
- package/bundles/daffodil-external-router-routing.umd.js.map +1 -0
- package/bundles/daffodil-external-router-routing.umd.min.js +16 -0
- package/bundles/daffodil-external-router-routing.umd.min.js.map +1 -0
- package/bundles/daffodil-external-router.umd.js +794 -0
- package/bundles/daffodil-external-router.umd.js.map +1 -0
- package/bundles/daffodil-external-router.umd.min.js +16 -0
- package/bundles/daffodil-external-router.umd.min.js.map +1 -0
- package/config.d.ts +20 -0
- package/daffodil-external-router.d.ts +5 -0
- package/daffodil-external-router.metadata.json +1 -0
- package/driver/daffodil-external-router-driver.d.ts +4 -0
- package/driver/daffodil-external-router-driver.metadata.json +1 -0
- package/driver/index.d.ts +1 -0
- package/driver/interfaces/external-router-driver.interface.d.ts +22 -0
- package/driver/magento/2.4.1/daffodil-external-router-driver-magento-2.4.1.d.ts +5 -0
- package/driver/magento/2.4.1/daffodil-external-router-driver-magento-2.4.1.metadata.json +1 -0
- package/driver/magento/2.4.1/graphql/queries/resolve-url-v2.4.1.d.ts +6 -0
- package/driver/magento/2.4.1/index.d.ts +1 -0
- package/driver/magento/2.4.1/magento.module.d.ts +23 -0
- package/driver/magento/2.4.1/magento.service.d.ts +15 -0
- package/driver/magento/2.4.1/package.json +11 -0
- package/driver/magento/2.4.1/public_api.d.ts +2 -0
- package/driver/magento/2.4.1/transforms/resolution-to-resolvable-url.d.ts +3 -0
- package/driver/magento/2.4.2/daffodil-external-router-driver-magento-2.4.2.d.ts +5 -0
- package/driver/magento/2.4.2/daffodil-external-router-driver-magento-2.4.2.metadata.json +1 -0
- package/driver/magento/2.4.2/graphql/queries/resolve-url-v2.4.2.d.ts +6 -0
- package/driver/magento/2.4.2/index.d.ts +1 -0
- package/driver/magento/2.4.2/magento.module.d.ts +23 -0
- package/driver/magento/2.4.2/magento.service.d.ts +15 -0
- package/driver/magento/2.4.2/package.json +11 -0
- package/driver/magento/2.4.2/public_api.d.ts +2 -0
- package/driver/magento/2.4.2/transforms/resolution-to-resolvable-url.d.ts +3 -0
- package/driver/magento/daffodil-external-router-driver-magento.d.ts +4 -0
- package/driver/magento/daffodil-external-router-driver-magento.metadata.json +1 -0
- package/driver/magento/index.d.ts +1 -0
- package/driver/magento/model/public_api.d.ts +3 -0
- package/driver/magento/model/resolution-types.d.ts +5 -0
- package/driver/magento/model/url-resolver-response.d.ts +4 -0
- package/driver/magento/model/url-resolver.d.ts +13 -0
- package/driver/magento/package.json +11 -0
- package/driver/magento/public_api.d.ts +2 -0
- package/driver/magento/transforms/public_api.d.ts +1 -0
- package/driver/magento/transforms/redirect-to-http.d.ts +4 -0
- package/driver/not-found-resolution.d.ts +8 -0
- package/driver/package.json +11 -0
- package/driver/public_api.d.ts +2 -0
- package/driver/testing/config.d.ts +16 -0
- package/driver/testing/daffodil-external-router-driver-testing.d.ts +5 -0
- package/driver/testing/daffodil-external-router-driver-testing.metadata.json +1 -0
- package/driver/testing/index.d.ts +1 -0
- package/driver/testing/package.json +11 -0
- package/driver/testing/public_api.d.ts +3 -0
- package/driver/testing/testing.module.d.ts +9 -0
- package/driver/testing/testing.service.d.ts +17 -0
- package/errors/no-wildcard.d.ts +9 -0
- package/errors/unknown-type.d.ts +9 -0
- package/esm2015/config.js +41 -0
- package/esm2015/daffodil-external-router.js +11 -0
- package/esm2015/driver/daffodil-external-router-driver.js +10 -0
- package/esm2015/driver/index.js +7 -0
- package/esm2015/driver/interfaces/external-router-driver.interface.js +30 -0
- package/esm2015/driver/magento/2.4.1/daffodil-external-router-driver-magento-2.4.1.js +11 -0
- package/esm2015/driver/magento/2.4.1/graphql/queries/resolve-url-v2.4.1.js +24 -0
- package/esm2015/driver/magento/2.4.1/index.js +7 -0
- package/esm2015/driver/magento/2.4.1/magento.module.js +56 -0
- package/esm2015/driver/magento/2.4.1/magento.service.js +63 -0
- package/esm2015/driver/magento/2.4.1/public_api.js +11 -0
- package/esm2015/driver/magento/2.4.1/transforms/resolution-to-resolvable-url.js +23 -0
- package/esm2015/driver/magento/2.4.2/daffodil-external-router-driver-magento-2.4.2.js +11 -0
- package/esm2015/driver/magento/2.4.2/graphql/queries/resolve-url-v2.4.2.js +24 -0
- package/esm2015/driver/magento/2.4.2/index.js +7 -0
- package/esm2015/driver/magento/2.4.2/magento.module.js +56 -0
- package/esm2015/driver/magento/2.4.2/magento.service.js +62 -0
- package/esm2015/driver/magento/2.4.2/public_api.js +11 -0
- package/esm2015/driver/magento/2.4.2/transforms/resolution-to-resolvable-url.js +20 -0
- package/esm2015/driver/magento/daffodil-external-router-driver-magento.js +10 -0
- package/esm2015/driver/magento/index.js +7 -0
- package/esm2015/driver/magento/model/public_api.js +7 -0
- package/esm2015/driver/magento/model/resolution-types.js +13 -0
- package/esm2015/driver/magento/model/url-resolver-response.js +14 -0
- package/esm2015/driver/magento/model/url-resolver.js +28 -0
- package/esm2015/driver/magento/public_api.js +11 -0
- package/esm2015/driver/magento/transforms/public_api.js +7 -0
- package/esm2015/driver/magento/transforms/redirect-to-http.js +15 -0
- package/esm2015/driver/not-found-resolution.js +19 -0
- package/esm2015/driver/public_api.js +11 -0
- package/esm2015/driver/testing/config.js +27 -0
- package/esm2015/driver/testing/daffodil-external-router-driver-testing.js +11 -0
- package/esm2015/driver/testing/index.js +7 -0
- package/esm2015/driver/testing/public_api.js +11 -0
- package/esm2015/driver/testing/testing.module.js +42 -0
- package/esm2015/driver/testing/testing.service.js +65 -0
- package/esm2015/errors/no-wildcard.js +24 -0
- package/esm2015/errors/unknown-type.js +24 -0
- package/esm2015/external-router.module.js +36 -0
- package/esm2015/model/insertion-strategy.type.js +6 -0
- package/esm2015/model/public_api.js +6 -0
- package/esm2015/model/resolvable-route.js +36 -0
- package/esm2015/model/route-info.js +17 -0
- package/esm2015/model/route-type.js +6 -0
- package/esm2015/model/route-with-data-path.js +6 -0
- package/esm2015/model/route-without-path.js +6 -0
- package/esm2015/model/type-route-pair.js +34 -0
- package/esm2015/public_api.js +19 -0
- package/esm2015/router/router.service.js +67 -0
- package/esm2015/router/strategies/insert-data-path.js +129 -0
- package/esm2015/router/strategies/insert-route-before-wildcard.js +33 -0
- package/esm2015/router/url-matcher/data-path-matcher.js +51 -0
- package/esm2015/routing/daffodil-external-router-routing.js +10 -0
- package/esm2015/routing/errors/client-error.js +23 -0
- package/esm2015/routing/errors/not-found-error.js +23 -0
- package/esm2015/routing/errors/permanent-redirect.js +28 -0
- package/esm2015/routing/errors/server-error.js +23 -0
- package/esm2015/routing/errors/temporary-redirect.js +28 -0
- package/esm2015/routing/guard/existence.guard.js +149 -0
- package/esm2015/routing/index.js +7 -0
- package/esm2015/routing/processors/process-errors.js +32 -0
- package/esm2015/routing/processors/process-redirect.js +28 -0
- package/esm2015/routing/public_api.js +10 -0
- package/esm2015/token/type-resolvable-routes.token.js +46 -0
- package/esm2015/transform/resolved-route-to-route.js +33 -0
- package/external-router.module.d.ts +10 -0
- package/fesm2015/daffodil-external-router-driver-magento-2.4.1.js +177 -0
- package/fesm2015/daffodil-external-router-driver-magento-2.4.1.js.map +1 -0
- package/fesm2015/daffodil-external-router-driver-magento-2.4.2.js +174 -0
- package/fesm2015/daffodil-external-router-driver-magento-2.4.2.js.map +1 -0
- package/fesm2015/daffodil-external-router-driver-magento.js +59 -0
- package/fesm2015/daffodil-external-router-driver-magento.js.map +1 -0
- package/fesm2015/daffodil-external-router-driver-testing.js +148 -0
- package/fesm2015/daffodil-external-router-driver-testing.js.map +1 -0
- package/fesm2015/daffodil-external-router-driver.js +70 -0
- package/fesm2015/daffodil-external-router-driver.js.map +1 -0
- package/fesm2015/daffodil-external-router-routing.js +336 -0
- package/fesm2015/daffodil-external-router-routing.js.map +1 -0
- package/fesm2015/daffodil-external-router.js +489 -0
- package/fesm2015/daffodil-external-router.js.map +1 -0
- package/model/insertion-strategy.type.d.ts +8 -0
- package/model/public_api.d.ts +7 -0
- package/model/resolvable-route.d.ts +27 -0
- package/model/route-info.d.ts +9 -0
- package/model/route-type.d.ts +6 -0
- package/model/route-with-data-path.d.ts +15 -0
- package/model/route-without-path.d.ts +7 -0
- package/model/type-route-pair.d.ts +26 -0
- package/package.json +37 -0
- package/public_api.d.ts +10 -0
- package/router/router.service.d.ts +12 -0
- package/router/strategies/insert-data-path.d.ts +40 -0
- package/router/strategies/insert-route-before-wildcard.d.ts +6 -0
- package/router/url-matcher/data-path-matcher.d.ts +20 -0
- package/routing/daffodil-external-router-routing.d.ts +4 -0
- package/routing/daffodil-external-router-routing.metadata.json +1 -0
- package/routing/errors/client-error.d.ts +8 -0
- package/routing/errors/not-found-error.d.ts +9 -0
- package/routing/errors/permanent-redirect.d.ts +10 -0
- package/routing/errors/server-error.d.ts +8 -0
- package/routing/errors/temporary-redirect.d.ts +10 -0
- package/routing/guard/existence.guard.d.ts +19 -0
- package/routing/index.d.ts +1 -0
- package/routing/package.json +11 -0
- package/routing/processors/process-errors.d.ts +6 -0
- package/routing/processors/process-redirect.d.ts +6 -0
- package/routing/public_api.d.ts +1 -0
- package/token/type-resolvable-routes.token.d.ts +14 -0
- package/transform/resolved-route-to-route.d.ts +7 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"daffodil-external-router-driver-testing.js","sources":["../../../libs/external-router/driver/testing/src/config.ts","../../../libs/external-router/driver/testing/src/testing.service.ts","../../../libs/external-router/driver/testing/src/testing.module.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { DaffExternalRouteType } from '@daffodil/external-router';\n\n/**\n * The configuration for the testing driver. It is a dictionary of \"url\": \"type\",\n * pairs, where the URL is a URL-safe routeable path, e.g. \"sweatshirts\" or \"t-shirts\"\n * and the type is a known type to your application, e.g. \"CATEGORY\".\n */\nexport interface DaffExternalRouterDriverTestingConfig {\n\t[url: string]: DaffExternalRouteType;\n}\n\n/**\n * The token used by Daffodil to hold the driver's configuration.\n *\n * @docs-private\n */\nexport const DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG = new InjectionToken<\n\tDaffExternalRouterDriverTestingConfig\n>('DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG', {\n providedIn: 'root',\n factory: () => ({}),\n});\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport * as faker from 'faker/locale/en_US';\nimport {\n Observable,\n of,\n throwError,\n} from 'rxjs';\n\nimport {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverTestingConfig,\n DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG,\n} from './config';\n\n/**\n * The DaffExternalRouterTestingDriver is responsible for translating an\n * arbitrary URI into a DaffExternallyResolvableUrl in testing environments.\n *\n * @inheritdoc\n *\n * @see {@link DaffExternalRouterTestingDriver}\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterTestingDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(\n\t\t@Inject(DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG)\n\t\tprivate testingConfiguration: DaffExternalRouterDriverTestingConfig = {},\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n const truncatedUrl = daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(url));\n\n if (!this.testingConfiguration[truncatedUrl]) {\n return throwError(`\\\nThe route '${truncatedUrl}' wasn't provided with a matching type by the testing driver. \\\nDid you configure the available route types with DaffExternalRouterDriverTestingModule.forRoot(config)`);\n }\n\n return of({\n id: faker.datatype.uuid(),\n url: truncatedUrl,\n type: this.testingConfiguration[truncatedUrl],\n code: 200,\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { DaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverTestingConfig,\n DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG,\n} from './config';\nimport { DaffExternalRouterTestingDriver } from './testing.service';\n\n/**\n * The `DaffExternalRouterDriverTestingModule` is an importable NgModule that can\n * be used to configure the {@link DaffExternalRouterTestingDriver}.\n */\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n})\nexport class DaffExternalRouterDriverTestingModule {\n static forRoot(\n config: DaffExternalRouterDriverTestingConfig,\n ): ModuleWithProviders<DaffExternalRouterDriverTestingModule> {\n return {\n ngModule: DaffExternalRouterDriverTestingModule,\n providers: [\n {\n provide: DaffExternalRouterDriver,\n useExisting: DaffExternalRouterTestingDriver,\n },\n {\n provide: DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG,\n useValue: config,\n },\n ],\n };\n }\n}\n"],"names":["faker.datatype"],"mappings":";;;;;;;;;;;;;;;;;;oDAWC;;;;;;;MAOY,0CAA0C,GAAG,IAAI,cAAc,CAE1E,4CAA4C,EAAE;IAC9C,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,OAAO,EAAE,CAAC,CAAA;CACpB;;;;;;;;;;;;;;;MCWY,+BAA+B;;;;IAE1C,YAEQ,uBAA8D,EAAE;QAAhE,yBAAoB,GAApB,oBAAoB,CAA4C;KACpE;;;;;IAEJ,OAAO,CAAC,GAAW;;cACX,YAAY,GAAG,2BAA2B,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QAEnF,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE;YAC5C,OAAO,UAAU,CAAC;aACX,YAAY;uGAC8E,CAAC,CAAC;SACpG;QAED,OAAO,EAAE,CAAC;YACR,EAAE,EAAEA,QAAc,CAAC,IAAI,EAAE;YACzB,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;YAC7C,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;KACJ;;;YAzBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;4CAIE,MAAM,SAAC,0CAA0C;;;;;;;;IAAlD,+DACwE;;;;;;;;;;;;MChB7D,qCAAqC;;;;;IAChD,OAAO,OAAO,CACZ,MAA6C;QAE7C,OAAO;YACL,QAAQ,EAAE,qCAAqC;YAC/C,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,wBAAwB;oBACjC,WAAW,EAAE,+BAA+B;iBAC7C;gBACD;oBACE,OAAO,EAAE,0CAA0C;oBACnD,QAAQ,EAAE,MAAM;iBACjB;aACF;SACF,CAAC;KACH;;;YArBF,QAAQ,SAAC;gBACR,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;aACxB;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @fileoverview added by tsickle
|
5
|
+
* Generated from: interfaces/external-router-driver.interface.ts
|
6
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
7
|
+
*/
|
8
|
+
/**
|
9
|
+
* The token for the `\@daffodil/external-router` driver.
|
10
|
+
* @type {?}
|
11
|
+
*/
|
12
|
+
const DaffExternalRouterDriver = new InjectionToken('DaffExternalRouterDriver');
|
13
|
+
/**
|
14
|
+
* The interface for a \@daffodil/external-router driver.
|
15
|
+
*
|
16
|
+
* This driver is responsible for translating a URL into a Route consumable by
|
17
|
+
* Daffodil.
|
18
|
+
* @record
|
19
|
+
*/
|
20
|
+
function DaffExternalRouterDriverInterface() { }
|
21
|
+
if (false) {
|
22
|
+
/**
|
23
|
+
* Resolves a URL with a platform.
|
24
|
+
* Returns information about the type of URL.
|
25
|
+
*
|
26
|
+
* @param {?} url The full URL path qualified with file extension and leading slash but without domain. i.e. /full/path/to/thing.html
|
27
|
+
* @return {?}
|
28
|
+
*/
|
29
|
+
DaffExternalRouterDriverInterface.prototype.resolve = function (url) { };
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* @fileoverview added by tsickle
|
34
|
+
* Generated from: not-found-resolution.ts
|
35
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
36
|
+
*/
|
37
|
+
/**
|
38
|
+
* When a driver fails to find a resolution, it should return a 404.
|
39
|
+
* This const represents the standard "Not Found" resolution that a driver
|
40
|
+
* should return. Drivers are not required to return this value, but may do so
|
41
|
+
* if they would like.
|
42
|
+
* @type {?}
|
43
|
+
*/
|
44
|
+
const DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION = {
|
45
|
+
id: null,
|
46
|
+
url: null,
|
47
|
+
code: 404,
|
48
|
+
type: null,
|
49
|
+
};
|
50
|
+
|
51
|
+
/**
|
52
|
+
* @fileoverview added by tsickle
|
53
|
+
* Generated from: public_api.ts
|
54
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
55
|
+
*/
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @fileoverview added by tsickle
|
59
|
+
* Generated from: index.ts
|
60
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
61
|
+
*/
|
62
|
+
|
63
|
+
/**
|
64
|
+
* @fileoverview added by tsickle
|
65
|
+
* Generated from: daffodil-external-router-driver.ts
|
66
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
67
|
+
*/
|
68
|
+
|
69
|
+
export { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION, DaffExternalRouterDriver };
|
70
|
+
//# sourceMappingURL=daffodil-external-router-driver.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"daffodil-external-router-driver.js","sources":["../../../libs/external-router/driver/src/interfaces/external-router-driver.interface.ts","../../../libs/external-router/driver/src/not-found-resolution.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\n\n/**\n * The token for the `@daffodil/external-router` driver.\n */\nexport const DaffExternalRouterDriver = new InjectionToken<\n\tDaffExternalRouterDriverInterface\n>('DaffExternalRouterDriver');\n\n/**\n * The interface for a @daffodil/external-router driver.\n *\n * This driver is responsible for translating a URL into a Route consumable by\n * Daffodil.\n */\nexport interface DaffExternalRouterDriverInterface {\n /**\n * Resolves a URL with a platform.\n * Returns information about the type of URL.\n *\n * @param url The full URL path qualified with file extension and leading slash but without domain. i.e. /full/path/to/thing.html\n */\n\tresolve(url: string): Observable<DaffExternallyResolvableUrl>;\n}\n","import { DaffExternallyResolvableUrl } from '@daffodil/external-router';\n\n/**\n * When a driver fails to find a resolution, it should return a 404.\n * This const represents the standard \"Not Found\" resolution that a driver\n * should return. Drivers are not required to return this value, but may do so\n * if they would like.\n */\nexport const DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION: DaffExternallyResolvableUrl = {\n id: null,\n url: null,\n code: 404,\n type: null,\n};\n"],"names":[],"mappings":";;;;;;;;;;;MAQa,wBAAwB,GAAG,IAAI,cAAc,CAExD,0BAA0B;;;;;;;;gDAgB3B;;;;;;;;;IADA,yEAA8D;;;;;;;;;;;;;;;MCjBlD,yCAAyC,GAAgC;IACpF,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;;"}
|
@@ -0,0 +1,336 @@
|
|
1
|
+
import { Injectable, Inject, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';
|
2
|
+
import { Router } from '@angular/router';
|
3
|
+
import { of } from 'rxjs';
|
4
|
+
import { map, switchMap, catchError } 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 { DaffInheritableError } from '@daffodil/core';
|
9
|
+
|
10
|
+
/**
|
11
|
+
* @fileoverview added by tsickle
|
12
|
+
* Generated from: errors/client-error.ts
|
13
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
14
|
+
*/
|
15
|
+
/**
|
16
|
+
* An error thrown when the driver encounters a 4xx error.
|
17
|
+
*/
|
18
|
+
class DaffExternalRouterClientError extends DaffInheritableError {
|
19
|
+
/**
|
20
|
+
* @param {?=} message
|
21
|
+
*/
|
22
|
+
constructor(message) {
|
23
|
+
super(message);
|
24
|
+
this.code = '4xx_CLIENT_ERROR';
|
25
|
+
}
|
26
|
+
}
|
27
|
+
if (false) {
|
28
|
+
/** @type {?} */
|
29
|
+
DaffExternalRouterClientError.prototype.code;
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* @fileoverview added by tsickle
|
34
|
+
* Generated from: errors/not-found-error.ts
|
35
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
36
|
+
*/
|
37
|
+
/**
|
38
|
+
* An error thrown when the driver determines that a given url is not resolvable.
|
39
|
+
*/
|
40
|
+
class DaffExternalRouterNotFoundError extends DaffExternalRouterClientError {
|
41
|
+
/**
|
42
|
+
* @param {?=} message
|
43
|
+
*/
|
44
|
+
constructor(message) {
|
45
|
+
super(message);
|
46
|
+
this.code = '404_NOT_FOUND';
|
47
|
+
}
|
48
|
+
}
|
49
|
+
if (false) {
|
50
|
+
/** @type {?} */
|
51
|
+
DaffExternalRouterNotFoundError.prototype.code;
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* @fileoverview added by tsickle
|
56
|
+
* Generated from: errors/permanent-redirect.ts
|
57
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
58
|
+
*/
|
59
|
+
/**
|
60
|
+
* An error thrown when the driver determines that the url needs to be routed somewhere
|
61
|
+
* else permanently.
|
62
|
+
*/
|
63
|
+
class DaffExternalRouterPermanentRedirectError extends DaffInheritableError {
|
64
|
+
/**
|
65
|
+
* @param {?} redirectUrl
|
66
|
+
* @param {?=} message
|
67
|
+
*/
|
68
|
+
constructor(redirectUrl, message) {
|
69
|
+
super(message);
|
70
|
+
this.redirectUrl = redirectUrl;
|
71
|
+
this.code = '302_PERMANENT_REDIRECT';
|
72
|
+
}
|
73
|
+
}
|
74
|
+
if (false) {
|
75
|
+
/** @type {?} */
|
76
|
+
DaffExternalRouterPermanentRedirectError.prototype.code;
|
77
|
+
/** @type {?} */
|
78
|
+
DaffExternalRouterPermanentRedirectError.prototype.redirectUrl;
|
79
|
+
}
|
80
|
+
|
81
|
+
/**
|
82
|
+
* @fileoverview added by tsickle
|
83
|
+
* Generated from: errors/temporary-redirect.ts
|
84
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
85
|
+
*/
|
86
|
+
/**
|
87
|
+
* An error thrown when the driver needs a URI to be temporarily redirected
|
88
|
+
* to another location.
|
89
|
+
*/
|
90
|
+
class DaffExternalRouterTemporaryRedirectError extends DaffInheritableError {
|
91
|
+
/**
|
92
|
+
* @param {?} redirectUrl
|
93
|
+
* @param {?=} message
|
94
|
+
*/
|
95
|
+
constructor(redirectUrl, message) {
|
96
|
+
super(message);
|
97
|
+
this.redirectUrl = redirectUrl;
|
98
|
+
this.code = 'TEMPORARY_REDIRECT';
|
99
|
+
}
|
100
|
+
}
|
101
|
+
if (false) {
|
102
|
+
/** @type {?} */
|
103
|
+
DaffExternalRouterTemporaryRedirectError.prototype.code;
|
104
|
+
/** @type {?} */
|
105
|
+
DaffExternalRouterTemporaryRedirectError.prototype.redirectUrl;
|
106
|
+
}
|
107
|
+
|
108
|
+
/**
|
109
|
+
* @fileoverview added by tsickle
|
110
|
+
* Generated from: errors/server-error.ts
|
111
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
112
|
+
*/
|
113
|
+
/**
|
114
|
+
* An error thrown when the platform performing url resolution fails.
|
115
|
+
*/
|
116
|
+
class DaffExternalRouterServerError extends DaffInheritableError {
|
117
|
+
/**
|
118
|
+
* @param {?=} message
|
119
|
+
*/
|
120
|
+
constructor(message) {
|
121
|
+
super(message);
|
122
|
+
this.code = '5xx_SERVER_ERROR';
|
123
|
+
}
|
124
|
+
}
|
125
|
+
if (false) {
|
126
|
+
/** @type {?} */
|
127
|
+
DaffExternalRouterServerError.prototype.code;
|
128
|
+
}
|
129
|
+
|
130
|
+
/**
|
131
|
+
* @fileoverview added by tsickle
|
132
|
+
* Generated from: processors/process-errors.ts
|
133
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
134
|
+
*/
|
135
|
+
/**
|
136
|
+
* Processes resolved URLs and throws the appropriate error so that External Router
|
137
|
+
* can handle routing errors.
|
138
|
+
* @type {?}
|
139
|
+
*/
|
140
|
+
const processErrors = (/**
|
141
|
+
* @param {?} url
|
142
|
+
* @return {?}
|
143
|
+
*/
|
144
|
+
(url) => {
|
145
|
+
if (url.code === 404) {
|
146
|
+
throw new DaffExternalRouterNotFoundError();
|
147
|
+
}
|
148
|
+
else if (url.code >= 400 && url.code < 500) {
|
149
|
+
throw new DaffExternalRouterClientError();
|
150
|
+
}
|
151
|
+
else if (url.code >= 500) {
|
152
|
+
throw new DaffExternalRouterServerError();
|
153
|
+
}
|
154
|
+
else {
|
155
|
+
return url;
|
156
|
+
}
|
157
|
+
});
|
158
|
+
|
159
|
+
/**
|
160
|
+
* @fileoverview added by tsickle
|
161
|
+
* Generated from: processors/process-redirect.ts
|
162
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
163
|
+
*/
|
164
|
+
/**
|
165
|
+
* Processes resolvedUrls and throws the appropriate error so that External Router
|
166
|
+
* can handle redirects.
|
167
|
+
* @type {?}
|
168
|
+
*/
|
169
|
+
const processRedirects = (/**
|
170
|
+
* @param {?} url
|
171
|
+
* @return {?}
|
172
|
+
*/
|
173
|
+
(url) => {
|
174
|
+
if (url.code === 301) {
|
175
|
+
throw new DaffExternalRouterPermanentRedirectError(url.url);
|
176
|
+
}
|
177
|
+
else if (url.code === 302) {
|
178
|
+
throw new DaffExternalRouterTemporaryRedirectError(url.url);
|
179
|
+
}
|
180
|
+
else {
|
181
|
+
return url;
|
182
|
+
}
|
183
|
+
});
|
184
|
+
|
185
|
+
/**
|
186
|
+
* @fileoverview added by tsickle
|
187
|
+
* Generated from: guard/existence.guard.ts
|
188
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
189
|
+
*/
|
190
|
+
/**
|
191
|
+
* The DaffExternalRouterExistenceGuard is responsible for guarding the wildcard route
|
192
|
+
* of an Angular App and either navigating to a resolved route upon successful resolution
|
193
|
+
* or navigating to the configured route upon a failed resolution.
|
194
|
+
*/
|
195
|
+
class DaffExternalRouterExistenceGuard {
|
196
|
+
/**
|
197
|
+
* @param {?} driver
|
198
|
+
* @param {?} externalRouter
|
199
|
+
* @param {?} router
|
200
|
+
* @param {?} config
|
201
|
+
* @param {?} urlNormalizer
|
202
|
+
*/
|
203
|
+
constructor(driver, externalRouter, router, config, urlNormalizer) {
|
204
|
+
this.driver = driver;
|
205
|
+
this.externalRouter = externalRouter;
|
206
|
+
this.router = router;
|
207
|
+
this.config = config;
|
208
|
+
this.urlNormalizer = urlNormalizer;
|
209
|
+
}
|
210
|
+
/**
|
211
|
+
* @param {?} next
|
212
|
+
* @param {?} state
|
213
|
+
* @return {?}
|
214
|
+
*/
|
215
|
+
canActivate(next, state) {
|
216
|
+
return this.driver.resolve(this.urlNormalizer.normalize(state.url)).pipe(map((/**
|
217
|
+
* @param {?} resolvedRoute
|
218
|
+
* @return {?}
|
219
|
+
*/
|
220
|
+
(resolvedRoute) => processErrors(resolvedRoute))), switchMap((/**
|
221
|
+
* @param {?} resolvedRoute
|
222
|
+
* @return {?}
|
223
|
+
*/
|
224
|
+
resolvedRoute => {
|
225
|
+
this.externalRouter.add(resolvedRoute);
|
226
|
+
return of(resolvedRoute);
|
227
|
+
})), map((/**
|
228
|
+
* @param {?} resolvedRoute
|
229
|
+
* @return {?}
|
230
|
+
*/
|
231
|
+
(resolvedRoute) => processRedirects(resolvedRoute))),
|
232
|
+
// Note that we have to use state.url as we want to ensure that we keep any fragments or query strings.
|
233
|
+
// When we succeed, redirect to the new route, as config has changed since we init'd.
|
234
|
+
map((/**
|
235
|
+
* @return {?}
|
236
|
+
*/
|
237
|
+
() => this.router.parseUrl(state.url))),
|
238
|
+
// When we fail, we need to process errors as dictated by the error type.
|
239
|
+
// Handle redirects
|
240
|
+
catchError((/**
|
241
|
+
* @param {?} error
|
242
|
+
* @return {?}
|
243
|
+
*/
|
244
|
+
error => {
|
245
|
+
if (!(error instanceof DaffExternalRouterPermanentRedirectError) &&
|
246
|
+
!(error instanceof DaffExternalRouterTemporaryRedirectError)) {
|
247
|
+
throw error;
|
248
|
+
}
|
249
|
+
return of(this.router.parseUrl(error.redirectUrl));
|
250
|
+
})),
|
251
|
+
// Handle "404"
|
252
|
+
catchError((/**
|
253
|
+
* @param {?} error
|
254
|
+
* @return {?}
|
255
|
+
*/
|
256
|
+
(error) => {
|
257
|
+
if (!(error instanceof DaffExternalRouterNotFoundError)) {
|
258
|
+
throw error;
|
259
|
+
}
|
260
|
+
return of(this.router.parseUrl(this.config.notFoundResolutionPath));
|
261
|
+
})),
|
262
|
+
//Otherwise something went horribly wrong and we need to bail out.
|
263
|
+
catchError((/**
|
264
|
+
* @param {?} error
|
265
|
+
* @return {?}
|
266
|
+
*/
|
267
|
+
(error) => {
|
268
|
+
//TODO(damienwebdev): Add a logging system.
|
269
|
+
//This log is intentional until we have a better logging system in place.
|
270
|
+
console.log(error);
|
271
|
+
return of(this.router.parseUrl(this.config.failedResolutionPath));
|
272
|
+
})));
|
273
|
+
}
|
274
|
+
}
|
275
|
+
DaffExternalRouterExistenceGuard.decorators = [
|
276
|
+
{ type: Injectable, args: [{
|
277
|
+
providedIn: 'root',
|
278
|
+
},] }
|
279
|
+
];
|
280
|
+
/** @nocollapse */
|
281
|
+
DaffExternalRouterExistenceGuard.ctorParameters = () => [
|
282
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DaffExternalRouterDriver,] }] },
|
283
|
+
{ type: DaffExternalRouter },
|
284
|
+
{ type: Router },
|
285
|
+
{ type: undefined, decorators: [{ type: Inject, args: [DAFF_EXTERNAL_ROUTER_CONFIG,] }] },
|
286
|
+
{ type: DaffRoutingUriNormalizer }
|
287
|
+
];
|
288
|
+
/** @nocollapse */ DaffExternalRouterExistenceGuard.ɵprov = ɵɵdefineInjectable({ factory: function DaffExternalRouterExistenceGuard_Factory() { return new DaffExternalRouterExistenceGuard(ɵɵinject(DaffExternalRouterDriver), ɵɵinject(DaffExternalRouter), ɵɵinject(Router), ɵɵinject(DAFF_EXTERNAL_ROUTER_CONFIG), ɵɵinject(DaffRoutingUriNormalizer)); }, token: DaffExternalRouterExistenceGuard, providedIn: "root" });
|
289
|
+
if (false) {
|
290
|
+
/**
|
291
|
+
* @type {?}
|
292
|
+
* @private
|
293
|
+
*/
|
294
|
+
DaffExternalRouterExistenceGuard.prototype.driver;
|
295
|
+
/**
|
296
|
+
* @type {?}
|
297
|
+
* @private
|
298
|
+
*/
|
299
|
+
DaffExternalRouterExistenceGuard.prototype.externalRouter;
|
300
|
+
/**
|
301
|
+
* @type {?}
|
302
|
+
* @private
|
303
|
+
*/
|
304
|
+
DaffExternalRouterExistenceGuard.prototype.router;
|
305
|
+
/**
|
306
|
+
* @type {?}
|
307
|
+
* @private
|
308
|
+
*/
|
309
|
+
DaffExternalRouterExistenceGuard.prototype.config;
|
310
|
+
/**
|
311
|
+
* @type {?}
|
312
|
+
* @private
|
313
|
+
*/
|
314
|
+
DaffExternalRouterExistenceGuard.prototype.urlNormalizer;
|
315
|
+
}
|
316
|
+
|
317
|
+
/**
|
318
|
+
* @fileoverview added by tsickle
|
319
|
+
* Generated from: public_api.ts
|
320
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
321
|
+
*/
|
322
|
+
|
323
|
+
/**
|
324
|
+
* @fileoverview added by tsickle
|
325
|
+
* Generated from: index.ts
|
326
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
327
|
+
*/
|
328
|
+
|
329
|
+
/**
|
330
|
+
* @fileoverview added by tsickle
|
331
|
+
* Generated from: daffodil-external-router-routing.ts
|
332
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
333
|
+
*/
|
334
|
+
|
335
|
+
export { DaffExternalRouterExistenceGuard };
|
336
|
+
//# sourceMappingURL=daffodil-external-router-routing.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"daffodil-external-router-routing.js","sources":["../../../libs/external-router/routing/src/errors/client-error.ts","../../../libs/external-router/routing/src/errors/not-found-error.ts","../../../libs/external-router/routing/src/errors/permanent-redirect.ts","../../../libs/external-router/routing/src/errors/temporary-redirect.ts","../../../libs/external-router/routing/src/errors/server-error.ts","../../../libs/external-router/routing/src/processors/process-errors.ts","../../../libs/external-router/routing/src/processors/process-redirect.ts","../../../libs/external-router/routing/src/guard/existence.guard.ts"],"sourcesContent":["import {\n DaffError,\n DaffInheritableError,\n} from '@daffodil/core';\n\n/**\n * An error thrown when the driver encounters a 4xx error.\n */\nexport class DaffExternalRouterClientError extends DaffInheritableError\n implements DaffError {\n\tpublic readonly code: string = '4xx_CLIENT_ERROR';\n\n\tconstructor(message?: string) {\n\t super(message);\n\t}\n}\n","import { DaffError } from '@daffodil/core';\n\nimport { DaffExternalRouterClientError } from './client-error';\n\n/**\n * An error thrown when the driver determines that a given url is not resolvable.\n */\nexport class DaffExternalRouterNotFoundError extends DaffExternalRouterClientError\n implements DaffError {\n\tpublic readonly code: string = '404_NOT_FOUND';\n\n\tconstructor(message?: string) {\n\t super(message);\n\t}\n}\n","import {\n DaffError,\n DaffInheritableError,\n} from '@daffodil/core';\n\n/**\n * An error thrown when the driver determines that the url needs to be routed somewhere\n * else permanently.\n */\nexport class DaffExternalRouterPermanentRedirectError extends DaffInheritableError\n implements DaffError {\n\tpublic readonly code: string = '302_PERMANENT_REDIRECT';\n\n\tconstructor(public redirectUrl: string, message?: string) {\n\t super(message);\n\t}\n}\n","import {\n DaffError,\n DaffInheritableError,\n} from '@daffodil/core';\n\n/**\n * An error thrown when the driver needs a URI to be temporarily redirected\n * to another location.\n */\nexport class DaffExternalRouterTemporaryRedirectError extends DaffInheritableError\n implements DaffError {\n\tpublic readonly code: string = 'TEMPORARY_REDIRECT';\n\n\tconstructor(public redirectUrl: string, message?: string) {\n\t super(message);\n\t}\n}\n","import {\n DaffError,\n DaffInheritableError,\n} from '@daffodil/core';\n\n/**\n * An error thrown when the platform performing url resolution fails.\n */\nexport class DaffExternalRouterServerError extends DaffInheritableError\n implements DaffError {\n\tpublic readonly code: string = '5xx_SERVER_ERROR';\n\n\tconstructor(message?: string) {\n\t super(message);\n\t}\n}\n","import { DaffExternallyResolvableUrl } from '@daffodil/external-router';\n\n\nimport { DaffExternalRouterClientError } from '../errors/client-error';\nimport { DaffExternalRouterNotFoundError } from '../errors/not-found-error';\nimport { DaffExternalRouterServerError } from '../errors/server-error';\n\n/**\n * Processes resolved URLs and throws the appropriate error so that External Router\n * can handle routing errors.\n */\nexport const processErrors = (url: DaffExternallyResolvableUrl): DaffExternallyResolvableUrl => {\n if(url.code === 404 ){\n throw new DaffExternalRouterNotFoundError();\n } else if(url.code >= 400 && url.code < 500) {\n throw new DaffExternalRouterClientError();\n } else if(url.code >= 500) {\n throw new DaffExternalRouterServerError();\n } else {\n return url;\n }\n};\n","import { DaffExternallyResolvableUrl } from '@daffodil/external-router';\n\nimport { DaffExternalRouterPermanentRedirectError } from '../errors/permanent-redirect';\nimport { DaffExternalRouterTemporaryRedirectError } from '../errors/temporary-redirect';\n\n/**\n * Processes resolvedUrls and throws the appropriate error so that External Router\n * can handle redirects.\n */\nexport const processRedirects = (url: DaffExternallyResolvableUrl): DaffExternallyResolvableUrl => {\n if(url.code === 301){\n throw new DaffExternalRouterPermanentRedirectError(url.url);\n } else if(url.code === 302) {\n throw new DaffExternalRouterTemporaryRedirectError(url.url);\n } else {\n return url;\n }\n};\n","import { isPlatformServer } from '@angular/common';\nimport {\n Injectable,\n Inject,\n PLATFORM_ID,\n} from '@angular/core';\nimport {\n CanActivate,\n ActivatedRouteSnapshot,\n Router,\n RouterStateSnapshot,\n UrlTree,\n} from '@angular/router';\nimport {\n Observable,\n of,\n} from 'rxjs';\nimport {\n catchError,\n map,\n switchMap,\n} from 'rxjs/operators';\n\nimport { DaffRoutingUriNormalizer } from '@daffodil/core/routing';\nimport {\n DaffExternalRouter,\n DaffExternalRouterConfiguration,\n DAFF_EXTERNAL_ROUTER_CONFIG,\n DaffExternallyResolvableUrl,\n} from '@daffodil/external-router';\nimport {\n DaffExternalRouterDriverInterface,\n DaffExternalRouterDriver,\n} from '@daffodil/external-router/driver';\n\nimport { DaffExternalRouterNotFoundError } from '../errors/not-found-error';\nimport { DaffExternalRouterPermanentRedirectError } from '../errors/permanent-redirect';\nimport { DaffExternalRouterTemporaryRedirectError } from '../errors/temporary-redirect';\nimport { processErrors } from '../processors/process-errors';\nimport { processRedirects } from '../processors/process-redirect';\n\n/**\n * The DaffExternalRouterExistenceGuard is responsible for guarding the wildcard route\n * of an Angular App and either navigating to a resolved route upon successful resolution\n * or navigating to the configured route upon a failed resolution.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterExistenceGuard implements CanActivate {\n constructor(\n @Inject(DaffExternalRouterDriver)\n private driver: DaffExternalRouterDriverInterface,\n private externalRouter: DaffExternalRouter,\n private router: Router,\n @Inject(DAFF_EXTERNAL_ROUTER_CONFIG)\n private config: DaffExternalRouterConfiguration,\n private urlNormalizer: DaffRoutingUriNormalizer,\n ) { }\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<UrlTree | boolean> {\n return this.driver.resolve(this.urlNormalizer.normalize(state.url)).pipe(\n map((resolvedRoute: DaffExternallyResolvableUrl) => processErrors(resolvedRoute)),\n switchMap(resolvedRoute => {\n this.externalRouter.add(resolvedRoute);\n return of(resolvedRoute);\n }),\n map((resolvedRoute: DaffExternallyResolvableUrl) => processRedirects(resolvedRoute)),\n // Note that we have to use state.url as we want to ensure that we keep any fragments or query strings.\n // When we succeed, redirect to the new route, as config has changed since we init'd.\n map(() => this.router.parseUrl(state.url)),\n // When we fail, we need to process errors as dictated by the error type.\n // Handle redirects\n catchError(error => {\n if (\n !(error instanceof DaffExternalRouterPermanentRedirectError) &&\n !(error instanceof DaffExternalRouterTemporaryRedirectError)) {\n throw error;\n }\n\n return of(this.router.parseUrl(error.redirectUrl));\n }),\n // Handle \"404\"\n catchError((error) => {\n if (!(error instanceof DaffExternalRouterNotFoundError)) {\n throw error;\n }\n\n return of(this.router.parseUrl(this.config.notFoundResolutionPath));\n }),\n\n //Otherwise something went horribly wrong and we need to bail out.\n catchError((error) => {\n //TODO(damienwebdev): Add a logging system.\n //This log is intentional until we have a better logging system in place.\n console.log(error);\n return of(this.router.parseUrl(this.config.failedResolutionPath));\n }),\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,489 @@
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
2
|
+
import { InjectionToken, NgModule, Injectable, Inject, ɵɵdefineInjectable, ɵɵinject } from '@angular/core';
|
3
|
+
import { Router } from '@angular/router';
|
4
|
+
import { DaffInheritableError } from '@daffodil/core';
|
5
|
+
import { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';
|
6
|
+
|
7
|
+
/**
|
8
|
+
* @fileoverview added by tsickle
|
9
|
+
* Generated from: config.ts
|
10
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
11
|
+
*/
|
12
|
+
/** @type {?} */
|
13
|
+
const daffExternalRouterConfigurationDefault = {
|
14
|
+
failedResolutionPath: '/',
|
15
|
+
notFoundResolutionPath: '/',
|
16
|
+
};
|
17
|
+
/**
|
18
|
+
* The token holding the runtime configuration for the behavior of the
|
19
|
+
* `\@daffodil/external-router` package.
|
20
|
+
* @type {?}
|
21
|
+
*/
|
22
|
+
const DAFF_EXTERNAL_ROUTER_CONFIG = new InjectionToken('DAFF_EXTERNAL_ROUTER_CONFIG', {
|
23
|
+
providedIn: 'root',
|
24
|
+
factory: (/**
|
25
|
+
* @return {?}
|
26
|
+
*/
|
27
|
+
() => daffExternalRouterConfigurationDefault),
|
28
|
+
});
|
29
|
+
/**
|
30
|
+
* The configuration object for the external router package.
|
31
|
+
* @record
|
32
|
+
*/
|
33
|
+
function DaffExternalRouterConfiguration() { }
|
34
|
+
if (false) {
|
35
|
+
/**
|
36
|
+
* The path to redirect to when external route resolution fails.
|
37
|
+
* @type {?}
|
38
|
+
*/
|
39
|
+
DaffExternalRouterConfiguration.prototype.failedResolutionPath;
|
40
|
+
/**
|
41
|
+
* The path to redirect to when the requested URL is not found.
|
42
|
+
* @type {?}
|
43
|
+
*/
|
44
|
+
DaffExternalRouterConfiguration.prototype.notFoundResolutionPath;
|
45
|
+
}
|
46
|
+
|
47
|
+
/**
|
48
|
+
* @fileoverview added by tsickle
|
49
|
+
* Generated from: token/type-resolvable-routes.token.ts
|
50
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
51
|
+
*/
|
52
|
+
/**
|
53
|
+
* A multi-token that allows you to register route "types" that correspond to routes.
|
54
|
+
* @type {?}
|
55
|
+
*/
|
56
|
+
const DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE = new InjectionToken('DAFF_EXTERNAL_ROUTER_RESOLVABLE_TYPE_ROUTES', {
|
57
|
+
providedIn: 'root',
|
58
|
+
factory: (/**
|
59
|
+
* @return {?}
|
60
|
+
*/
|
61
|
+
() => []),
|
62
|
+
});
|
63
|
+
/**
|
64
|
+
* A provider used to connect a type to a route to enable dynamic route resolution at runtime.
|
65
|
+
* @param {?} typeRoutePair
|
66
|
+
* @return {?}
|
67
|
+
*/
|
68
|
+
function daffProvideRouteResolvableByType(typeRoutePair) {
|
69
|
+
return {
|
70
|
+
provide: DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE,
|
71
|
+
multi: true,
|
72
|
+
useValue: typeRoutePair,
|
73
|
+
};
|
74
|
+
}
|
75
|
+
/**
|
76
|
+
* A multi-provider used to connect an array of types to their respective routes.
|
77
|
+
* @param {?} routes
|
78
|
+
* @return {?}
|
79
|
+
*/
|
80
|
+
function daffProvideRoutesResolvableByType(routes) {
|
81
|
+
return routes.map((/**
|
82
|
+
* @param {?} route
|
83
|
+
* @return {?}
|
84
|
+
*/
|
85
|
+
(route) => ({
|
86
|
+
provide: DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE,
|
87
|
+
multi: true,
|
88
|
+
useValue: route,
|
89
|
+
})));
|
90
|
+
}
|
91
|
+
|
92
|
+
/**
|
93
|
+
* @fileoverview added by tsickle
|
94
|
+
* Generated from: external-router.module.ts
|
95
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
96
|
+
*/
|
97
|
+
/**
|
98
|
+
* The external `DaffExternalRouterModule` allows you to configure the
|
99
|
+
* `\@daffodil/external-router` package's behavior.
|
100
|
+
*/
|
101
|
+
class DaffExternalRouterModule {
|
102
|
+
/**
|
103
|
+
* @param {?} config
|
104
|
+
* @param {?=} routes
|
105
|
+
* @return {?}
|
106
|
+
*/
|
107
|
+
static forRoot(config, routes = []) {
|
108
|
+
return {
|
109
|
+
ngModule: DaffExternalRouterModule,
|
110
|
+
providers: [
|
111
|
+
{ provide: DAFF_EXTERNAL_ROUTER_CONFIG, useValue: Object.assign(Object.assign({}, daffExternalRouterConfigurationDefault), config) },
|
112
|
+
...daffProvideRoutesResolvableByType(routes),
|
113
|
+
],
|
114
|
+
};
|
115
|
+
}
|
116
|
+
}
|
117
|
+
DaffExternalRouterModule.decorators = [
|
118
|
+
{ type: NgModule, args: [{
|
119
|
+
declarations: [],
|
120
|
+
imports: [CommonModule],
|
121
|
+
},] }
|
122
|
+
];
|
123
|
+
|
124
|
+
/**
|
125
|
+
* @fileoverview added by tsickle
|
126
|
+
* Generated from: model/public_api.ts
|
127
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
128
|
+
*/
|
129
|
+
|
130
|
+
/**
|
131
|
+
* @fileoverview added by tsickle
|
132
|
+
* Generated from: errors/no-wildcard.ts
|
133
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
134
|
+
*/
|
135
|
+
/**
|
136
|
+
* An error thrown when there was no wildcard route found in configuration
|
137
|
+
* of the Angular Router.
|
138
|
+
*/
|
139
|
+
class DaffExternalRouterNoWildcardError extends DaffInheritableError {
|
140
|
+
/**
|
141
|
+
* @param {?=} message
|
142
|
+
*/
|
143
|
+
constructor(message) {
|
144
|
+
super(message);
|
145
|
+
this.code = 'NO_WILDCARD_ROUTE';
|
146
|
+
}
|
147
|
+
}
|
148
|
+
if (false) {
|
149
|
+
/** @type {?} */
|
150
|
+
DaffExternalRouterNoWildcardError.prototype.code;
|
151
|
+
}
|
152
|
+
|
153
|
+
/**
|
154
|
+
* @fileoverview added by tsickle
|
155
|
+
* Generated from: errors/unknown-type.ts
|
156
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
157
|
+
*/
|
158
|
+
/**
|
159
|
+
* An error thrown when there is a failure matching a configured route to a
|
160
|
+
* route type.
|
161
|
+
*/
|
162
|
+
class DaffExternalRouterUnknownRouteTypeError extends DaffInheritableError {
|
163
|
+
/**
|
164
|
+
* @param {?=} message
|
165
|
+
*/
|
166
|
+
constructor(message) {
|
167
|
+
super(message);
|
168
|
+
this.code = 'UNKNOWN_ROUTE_TYPE';
|
169
|
+
}
|
170
|
+
}
|
171
|
+
if (false) {
|
172
|
+
/** @type {?} */
|
173
|
+
DaffExternalRouterUnknownRouteTypeError.prototype.code;
|
174
|
+
}
|
175
|
+
|
176
|
+
/**
|
177
|
+
* @fileoverview added by tsickle
|
178
|
+
* Generated from: transform/resolved-route-to-route.ts
|
179
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
180
|
+
*/
|
181
|
+
/**
|
182
|
+
* Transforms a DaffExternallyResolvableUrl into an Angular Route.
|
183
|
+
* @type {?}
|
184
|
+
*/
|
185
|
+
const daffTransformResolvedRouteToRoute = (/**
|
186
|
+
* @param {?} resolvedRoute
|
187
|
+
* @param {?} availableTypes
|
188
|
+
* @return {?}
|
189
|
+
*/
|
190
|
+
(resolvedRoute, availableTypes) => {
|
191
|
+
/** @type {?} */
|
192
|
+
const routeType = availableTypes
|
193
|
+
.filter((/**
|
194
|
+
* @param {?} t
|
195
|
+
* @return {?}
|
196
|
+
*/
|
197
|
+
t => t.type === resolvedRoute.type))
|
198
|
+
.shift();
|
199
|
+
if (!routeType) {
|
200
|
+
throw new DaffExternalRouterUnknownRouteTypeError(`Unable to resolve the route '${resolvedRoute.url}'. Its type is '${resolvedRoute.type}' but a matching route wasn't found.`);
|
201
|
+
}
|
202
|
+
return {
|
203
|
+
route: Object.assign(Object.assign({ path: resolvedRoute.url }, routeType.route), { data: Object.assign({ daffExternalRouteType: resolvedRoute.type }, routeType.route.data) }),
|
204
|
+
insertionStrategy: routeType.insertionStrategy,
|
205
|
+
};
|
206
|
+
});
|
207
|
+
|
208
|
+
/**
|
209
|
+
* @fileoverview added by tsickle
|
210
|
+
* Generated from: router/strategies/insert-route-before-wildcard.ts
|
211
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
212
|
+
*/
|
213
|
+
/**
|
214
|
+
* Inserts a Route into Routes right before the wildcard route.
|
215
|
+
* If no wildcard is found, it fails fast with a `DaffExternalRouterNoWildcardError`.
|
216
|
+
* @type {?}
|
217
|
+
*/
|
218
|
+
const daffInsertRouteBeforeWildCardStrategy = (/**
|
219
|
+
* @param {?} route
|
220
|
+
* @param {?} routes
|
221
|
+
* @return {?}
|
222
|
+
*/
|
223
|
+
(route, routes) => {
|
224
|
+
/** @type {?} */
|
225
|
+
const index = routes.findIndex((/**
|
226
|
+
* @param {?} r
|
227
|
+
* @return {?}
|
228
|
+
*/
|
229
|
+
(r) => r.path === '**'));
|
230
|
+
if (index === -1) {
|
231
|
+
throw new DaffExternalRouterNoWildcardError('No wildcard (**) route was found during route resolution.');
|
232
|
+
}
|
233
|
+
return [
|
234
|
+
...routes.slice(0, index),
|
235
|
+
route,
|
236
|
+
...routes.slice(index),
|
237
|
+
];
|
238
|
+
});
|
239
|
+
|
240
|
+
/**
|
241
|
+
* @fileoverview added by tsickle
|
242
|
+
* Generated from: router/router.service.ts
|
243
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
244
|
+
*/
|
245
|
+
class DaffExternalRouter {
|
246
|
+
/**
|
247
|
+
* @param {?} router
|
248
|
+
* @param {?} runtimeRoutes
|
249
|
+
*/
|
250
|
+
constructor(router, runtimeRoutes) {
|
251
|
+
this.router = router;
|
252
|
+
this.runtimeRoutes = runtimeRoutes;
|
253
|
+
}
|
254
|
+
/**
|
255
|
+
* Adds a route to the existing router configuration.
|
256
|
+
* @param {?} resolvedRoute
|
257
|
+
* @return {?}
|
258
|
+
*/
|
259
|
+
add(resolvedRoute) {
|
260
|
+
//Get the route.
|
261
|
+
const { route, insertionStrategy, } = daffTransformResolvedRouteToRoute(resolvedRoute, this.runtimeRoutes);
|
262
|
+
try {
|
263
|
+
//Add it to configuration.
|
264
|
+
this.router.config = (insertionStrategy || daffInsertRouteBeforeWildCardStrategy)(route, this.router.config);
|
265
|
+
}
|
266
|
+
catch (e) {
|
267
|
+
if (e instanceof DaffExternalRouterNoWildcardError) {
|
268
|
+
throw new DaffExternalRouterNoWildcardError(`${e.message} This usually means you have misconfigured your routes.`);
|
269
|
+
}
|
270
|
+
throw e;
|
271
|
+
}
|
272
|
+
}
|
273
|
+
}
|
274
|
+
DaffExternalRouter.decorators = [
|
275
|
+
{ type: Injectable, args: [{
|
276
|
+
providedIn: 'root',
|
277
|
+
},] }
|
278
|
+
];
|
279
|
+
/** @nocollapse */
|
280
|
+
DaffExternalRouter.ctorParameters = () => [
|
281
|
+
{ type: Router },
|
282
|
+
{ type: Array, decorators: [{ type: Inject, args: [DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE,] }] }
|
283
|
+
];
|
284
|
+
/** @nocollapse */ DaffExternalRouter.ɵprov = ɵɵdefineInjectable({ factory: function DaffExternalRouter_Factory() { return new DaffExternalRouter(ɵɵinject(Router), ɵɵinject(DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE)); }, token: DaffExternalRouter, providedIn: "root" });
|
285
|
+
if (false) {
|
286
|
+
/**
|
287
|
+
* @type {?}
|
288
|
+
* @private
|
289
|
+
*/
|
290
|
+
DaffExternalRouter.prototype.router;
|
291
|
+
/**
|
292
|
+
* @type {?}
|
293
|
+
* @private
|
294
|
+
*/
|
295
|
+
DaffExternalRouter.prototype.runtimeRoutes;
|
296
|
+
}
|
297
|
+
|
298
|
+
/**
|
299
|
+
* @fileoverview added by tsickle
|
300
|
+
* Generated from: router/strategies/insert-data-path.ts
|
301
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
302
|
+
*/
|
303
|
+
/**
|
304
|
+
* Tests whether or not a route matches a specific Daffodil Route type.
|
305
|
+
*
|
306
|
+
* See {\@link DaffRouteWithDataPath}
|
307
|
+
* @type {?}
|
308
|
+
*/
|
309
|
+
const routeMatchesRouteType = (/**
|
310
|
+
* @param {?} route
|
311
|
+
* @param {?} type
|
312
|
+
* @return {?}
|
313
|
+
*/
|
314
|
+
(route, type) => { var _a; return ((_a = route === null || route === void 0 ? void 0 : route.data) === null || _a === void 0 ? void 0 : _a.daffExternalRouteType) === type; });
|
315
|
+
const ɵ0 = routeMatchesRouteType;
|
316
|
+
/**
|
317
|
+
* Adds a path to the `daffPaths` of the given route.
|
318
|
+
*
|
319
|
+
* See {\@link DaffRouteWithDataPath}
|
320
|
+
* @type {?}
|
321
|
+
*/
|
322
|
+
const addRouteToDaffPaths = (/**
|
323
|
+
* @param {?} route
|
324
|
+
* @param {?} path
|
325
|
+
* @return {?}
|
326
|
+
*/
|
327
|
+
(route, path) => route.data.daffPaths = Object.assign(Object.assign({}, route.data.daffPaths), { [path]: path }));
|
328
|
+
const ɵ1 = addRouteToDaffPaths;
|
329
|
+
/** @type {?} */
|
330
|
+
const operateOnRoute = (/**
|
331
|
+
* @param {?} externalRoute
|
332
|
+
* @return {?}
|
333
|
+
*/
|
334
|
+
(externalRoute) => (/**
|
335
|
+
* @param {?} route
|
336
|
+
* @return {?}
|
337
|
+
*/
|
338
|
+
(route) => addRouteToDaffPaths(route, externalRoute.path)));
|
339
|
+
const ɵ2 = operateOnRoute;
|
340
|
+
/**
|
341
|
+
* Traverse the router config tree, halting after the first match.
|
342
|
+
* This traversal is implemented in a pre-order manner. As such, for large
|
343
|
+
* configuration trees, it will be most efficient to place externally routed
|
344
|
+
* components at the top of router configuration.
|
345
|
+
* @type {?}
|
346
|
+
*/
|
347
|
+
const traverseRouteTree = (/**
|
348
|
+
* @param {?=} routes
|
349
|
+
* @param {?=} matcher
|
350
|
+
* @param {?=} operate
|
351
|
+
* @return {?}
|
352
|
+
*/
|
353
|
+
(routes = [], matcher, operate) => {
|
354
|
+
if (routes.length === 0) {
|
355
|
+
return routes;
|
356
|
+
}
|
357
|
+
/** @type {?} */
|
358
|
+
const stack = [];
|
359
|
+
/** @type {?} */
|
360
|
+
const treeRoot = { children: routes };
|
361
|
+
stack.push(treeRoot);
|
362
|
+
while (stack.length) {
|
363
|
+
/** @type {?} */
|
364
|
+
const route = stack.pop();
|
365
|
+
if (matcher(route)) {
|
366
|
+
operate(route);
|
367
|
+
break;
|
368
|
+
}
|
369
|
+
if (route.children) {
|
370
|
+
stack.push(...route.children.reverse());
|
371
|
+
}
|
372
|
+
}
|
373
|
+
return routes;
|
374
|
+
});
|
375
|
+
const ɵ3 = traverseRouteTree;
|
376
|
+
/**
|
377
|
+
* A route insertion strategy that can be used to append external routes onto
|
378
|
+
* existing Angular routes. This can be useful when you need to route to
|
379
|
+
* an existing lazy-loaded module from multiple externally defined urls.
|
380
|
+
*
|
381
|
+
* This should be used in combination with the {\@link daffDataPathUrlMatcher} to match lazy-loaded modules with
|
382
|
+
* associated external urls.
|
383
|
+
*
|
384
|
+
* For example, you can provide the insertion strategy in the {\@link DaffExternalRouterModule} as below.
|
385
|
+
*
|
386
|
+
* ```ts
|
387
|
+
* DaffExternalRouterModule.forRoot({}, [
|
388
|
+
* {
|
389
|
+
* type: 'CATEGORY',
|
390
|
+
* insertionStrategy: daffInsertDataPathStrategy,
|
391
|
+
* route: {}
|
392
|
+
* }
|
393
|
+
* ],
|
394
|
+
* ```
|
395
|
+
*
|
396
|
+
* Then, you can match it with an associated route defined in your Routing
|
397
|
+
* configuration with the {\@link daffDataPathUrlMatcher}.
|
398
|
+
*
|
399
|
+
* ```ts
|
400
|
+
* export const routes: Routes = [
|
401
|
+
* {
|
402
|
+
* matcher: daffDataPathUrlMatcher,
|
403
|
+
* data: {
|
404
|
+
* daffExternalRouteType: "CATEGORY",
|
405
|
+
* },
|
406
|
+
* loadChildren: () => import('./category/category.module').then((m) => m.MyCategoryModule),
|
407
|
+
* }
|
408
|
+
* ]
|
409
|
+
* ```
|
410
|
+
*
|
411
|
+
* See {\@link DaffRouteWithDataPath}
|
412
|
+
*
|
413
|
+
* @type {?}
|
414
|
+
*/
|
415
|
+
const daffInsertDataPathStrategy = (/**
|
416
|
+
* @param {?} externalRoute
|
417
|
+
* @param {?} routes
|
418
|
+
* @return {?}
|
419
|
+
*/
|
420
|
+
(externalRoute, routes) => traverseRouteTree(routes, (/**
|
421
|
+
* @param {?} route
|
422
|
+
* @return {?}
|
423
|
+
*/
|
424
|
+
(route) => { var _a; return routeMatchesRouteType(route, (_a = externalRoute.data) === null || _a === void 0 ? void 0 : _a.daffExternalRouteType); }), operateOnRoute(externalRoute)));
|
425
|
+
|
426
|
+
/**
|
427
|
+
* @fileoverview added by tsickle
|
428
|
+
* Generated from: router/url-matcher/data-path-matcher.ts
|
429
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
430
|
+
*/
|
431
|
+
/**
|
432
|
+
* A UrlMatcher that does an exact match against a path stored in the special
|
433
|
+
* configuration fields that External Router stores on a Route's data.
|
434
|
+
*
|
435
|
+
* ```ts
|
436
|
+
* export const routes: Routes = [
|
437
|
+
* {
|
438
|
+
* matcher: daffDataPathUrlMatcher,
|
439
|
+
* data: {
|
440
|
+
* daffExternalRouteType: "CATEGORY",
|
441
|
+
* },
|
442
|
+
* loadChildren: () => import('./category/category.module').then((m) => m.ShopCategoryModule),
|
443
|
+
* }
|
444
|
+
* ]
|
445
|
+
* ```
|
446
|
+
* {\@link daffInsertDataPathStrategy }
|
447
|
+
* {\@link DaffRouteWithDataPath }
|
448
|
+
* @type {?}
|
449
|
+
*/
|
450
|
+
const daffDataPathUrlMatcher = (/**
|
451
|
+
* @param {?} segments
|
452
|
+
* @param {?} group
|
453
|
+
* @param {?} route
|
454
|
+
* @return {?}
|
455
|
+
*/
|
456
|
+
(segments, group, route) => {
|
457
|
+
var _a;
|
458
|
+
/** @type {?} */
|
459
|
+
const path = daffUriTruncateLeadingSlash(segments.reduce((/**
|
460
|
+
* @param {?} acc
|
461
|
+
* @param {?} segment
|
462
|
+
* @return {?}
|
463
|
+
*/
|
464
|
+
(acc, segment) => acc + '/' + segment.path), ''));
|
465
|
+
/** @type {?} */
|
466
|
+
const paths = (_a = route === null || route === void 0 ? void 0 : route.data) === null || _a === void 0 ? void 0 : _a.daffPaths;
|
467
|
+
// If we don't have any paths, we can safely fail a match.
|
468
|
+
if (!paths) {
|
469
|
+
return null;
|
470
|
+
}
|
471
|
+
// Otherwise, look up the path in the dictionary, failing if a match isn't found,
|
472
|
+
// but matching the entire segment if a match is found.
|
473
|
+
return path in paths ? { consumed: segments } : null;
|
474
|
+
});
|
475
|
+
|
476
|
+
/**
|
477
|
+
* @fileoverview added by tsickle
|
478
|
+
* Generated from: public_api.ts
|
479
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
480
|
+
*/
|
481
|
+
|
482
|
+
/**
|
483
|
+
* @fileoverview added by tsickle
|
484
|
+
* Generated from: daffodil-external-router.ts
|
485
|
+
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
486
|
+
*/
|
487
|
+
|
488
|
+
export { DAFF_EXTERNAL_ROUTER_CONFIG, DaffExternalRouter, DaffExternalRouterModule, DaffExternalRouterNoWildcardError, DaffExternalRouterUnknownRouteTypeError, daffDataPathUrlMatcher, daffInsertDataPathStrategy, daffInsertRouteBeforeWildCardStrategy, daffProvideRouteResolvableByType, DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE as ɵa, daffProvideRoutesResolvableByType as ɵb };
|
489
|
+
//# sourceMappingURL=daffodil-external-router.js.map
|