@daffodil/external-router 0.89.0 → 0.91.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.
@@ -0,0 +1,15 @@
1
+ import { Observable } from 'rxjs';
2
+ import { DaffExternallyResolvableUrl } from '@daffodil/external-router';
3
+ import { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';
4
+ import * as i0 from '@angular/core';
5
+ import { Provider, EnvironmentProviders } from '@angular/core';
6
+
7
+ declare class DaffShopifyExternalRouterDriver implements DaffExternalRouterDriverInterface {
8
+ resolve(url: string): Observable<DaffExternallyResolvableUrl>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<DaffShopifyExternalRouterDriver, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<DaffShopifyExternalRouterDriver>;
11
+ }
12
+
13
+ declare const provideDaffExternalRouterShopifyDriver: () => (Provider | EnvironmentProviders)[];
14
+
15
+ export { DaffShopifyExternalRouterDriver, provideDaffExternalRouterShopifyDriver };
@@ -1,9 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Inject, Injectable, makeEnvironmentProviders } from '@angular/core';
3
- import { of } from 'rxjs';
3
+ import { throwError, of } from 'rxjs';
4
4
  import { daffUriTruncateQueryFragment, daffUriTruncateLeadingSlash } from '@daffodil/core/routing';
5
- import { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION, provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';
5
+ import { DaffExternalRouterNotFoundError } from '@daffodil/external-router';
6
6
  import { createConfigInjectionToken } from '@daffodil/core';
7
+ import { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION, provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';
7
8
 
8
9
  const defaultConfig = {
9
10
  resolver: () => DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION,
@@ -35,10 +36,13 @@ class DaffExternalRouterInMemoryDriver {
35
36
  resolve(url) {
36
37
  const truncatedUrl = daffUriTruncateQueryFragment(url);
37
38
  const resolvedUrl = this.configuration.resolver(truncatedUrl);
38
- return of(resolvedUrl?.url ? {
39
+ if (!resolvedUrl?.url) {
40
+ return throwError(() => new DaffExternalRouterNotFoundError());
41
+ }
42
+ return of({
39
43
  ...resolvedUrl,
40
44
  url: daffUriTruncateLeadingSlash(resolvedUrl.url),
41
- } : DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);
45
+ });
42
46
  }
43
47
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterInMemoryDriver, deps: [{ token: DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
44
48
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterInMemoryDriver, providedIn: 'root' }); }
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-external-router-driver-in-memory.mjs","sources":["../../../libs/external-router/driver/in-memory/src/config.ts","../../../libs/external-router/driver/in-memory/src/in-memory.service.ts","../../../libs/external-router/driver/in-memory/src/provider.ts","../../../libs/external-router/driver/in-memory/src/public_api.ts","../../../libs/external-router/driver/in-memory/src/daffodil-external-router-driver-in-memory.ts"],"sourcesContent":["import { createConfigInjectionToken } from '@daffodil/core';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION } from '@daffodil/external-router/driver';\n\n/**\n * A lookup for a URL.\n * Returns an {@link DaffExternallyResolvableUrl} or\n * {@link DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION} if the URL cannot be resolved\n */\nexport type DaffExternalRouterDriverInMemoryResolver = (url: string) => DaffExternallyResolvableUrl;\n\n/**\n * The configuration for the in-memory driver.\n */\nexport interface DaffExternalRouterDriverInMemoryConfig {\n resolver: DaffExternalRouterDriverInMemoryResolver;\n}\n\nconst defaultConfig: DaffExternalRouterDriverInMemoryConfig = {\n resolver: () => DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION,\n};\n\nexport const {\n /**\n * The token used by Daffodil to hold the driver's configuration.\n *\n * @docs-private\n */\n token: DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG,\n /**\n * Provider function for {@link DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG}.\n */\n provider: provideDaffExternalRouterDriverInMemoryConfig,\n} = createConfigInjectionToken<DaffExternalRouterDriverInMemoryConfig>(defaultConfig, 'DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG');\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Observable,\n of,\n} from 'rxjs';\n\nimport {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport {\n DaffExternalRouterDriverInterface,\n DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION,\n} from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverInMemoryConfig,\n DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG,\n} from './config';\n\n/**\n * The DaffExternalRouterInMemoryDriver is responsible for resolving\n * a URL using the resolver in the provided configuration.\n *\n * @inheritdoc\n *\n * @see {@link DaffExternalRouterInMemoryDriver}\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterInMemoryDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(\n @Inject(DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG)\n private configuration: DaffExternalRouterDriverInMemoryConfig,\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n const truncatedUrl = daffUriTruncateQueryFragment(url);\n const resolvedUrl = this.configuration.resolver(truncatedUrl);\n\n return of(resolvedUrl?.url ? {\n ...resolvedUrl,\n url: daffUriTruncateLeadingSlash(resolvedUrl.url),\n } : DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverInMemoryConfig,\n provideDaffExternalRouterDriverInMemoryConfig,\n} from './config';\nimport { DaffExternalRouterInMemoryDriver } from './in-memory.service';\n\n/**\n * Provides an in-memory implementation of {@link DaffExternalRouterDriver}\n */\nexport const provideDaffExternalRouterInMemoryDriver = (config:\n DaffExternalRouterDriverInMemoryConfig | InjectionToken<DaffExternalRouterDriverInMemoryConfig> = undefined,\n): EnvironmentProviders => makeEnvironmentProviders([\n provideDaffExternalRouterDriver(DaffExternalRouterInMemoryDriver),\n config ? provideDaffExternalRouterDriverInMemoryConfig(config) : [],\n]);\n","/*\n * Public API Surface of @daffodil/external-router/driver/in-memory\n */\n\nexport { DaffExternalRouterInMemoryDriver } from './in-memory.service';\n\nexport {\n DaffExternalRouterDriverInMemoryConfig,\n DaffExternalRouterDriverInMemoryResolver,\n} from './config';\n\nexport { provideDaffExternalRouterInMemoryDriver } from './provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAkBA,MAAM,aAAa,GAA2C;AAC5D,IAAA,QAAQ,EAAE,MAAM,yCAAyC;CAC1D;AAEM,MAAM;AACX;;;;AAIG;AACH,KAAK,EAAE,4CAA4C;AACnD;;AAEG;AACH,QAAQ,EAAE,6CAA6C,GACxD,GAAG,0BAA0B,CAAyC,aAAa,EAAE,8CAA8C,CAAC;;ACTrI;;;;;;;AAOG;MAIU,gCAAgC,CAAA;AAE3C,IAAA,WAAA,CAEU,aAAqD,EAAA;QAArD,IAAA,CAAA,aAAa,GAAb,aAAa;IACpB;AAEH,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,YAAY,GAAG,4BAA4B,CAAC,GAAG,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;AAE7D,QAAA,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,GAAG;AAC3B,YAAA,GAAG,WAAW;AACd,YAAA,GAAG,EAAE,2BAA2B,CAAC,WAAW,CAAC,GAAG,CAAC;AAClD,SAAA,GAAG,yCAAyC,CAAC;IAChD;AAfW,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,kBAGjC,4CAA4C,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAH3C,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cAF/B,MAAM,EAAA,CAAA,CAAA;;2FAEP,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAII,MAAM;2BAAC,4CAA4C;;;ACxBxD;;AAEG;AACI,MAAM,uCAAuC,GAAG,CAAC,MAAA,GAC+C,SAAS,KACrF,wBAAwB,CAAC;IAClD,+BAA+B,CAAC,gCAAgC,CAAC;IACjE,MAAM,GAAG,6CAA6C,CAAC,MAAM,CAAC,GAAG,EAAE;AACpE,CAAA;;ACtBD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"daffodil-external-router-driver-in-memory.mjs","sources":["../../../libs/external-router/driver/in-memory/src/config.ts","../../../libs/external-router/driver/in-memory/src/in-memory.service.ts","../../../libs/external-router/driver/in-memory/src/provider.ts","../../../libs/external-router/driver/in-memory/src/public_api.ts","../../../libs/external-router/driver/in-memory/src/daffodil-external-router-driver-in-memory.ts"],"sourcesContent":["import { createConfigInjectionToken } from '@daffodil/core';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION } from '@daffodil/external-router/driver';\n\n/**\n * A lookup for a URL.\n * Returns an {@link DaffExternallyResolvableUrl} or\n * {@link DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION} if the URL cannot be resolved\n */\nexport type DaffExternalRouterDriverInMemoryResolver = (url: string) => DaffExternallyResolvableUrl;\n\n/**\n * The configuration for the in-memory driver.\n */\nexport interface DaffExternalRouterDriverInMemoryConfig {\n resolver: DaffExternalRouterDriverInMemoryResolver;\n}\n\nconst defaultConfig: DaffExternalRouterDriverInMemoryConfig = {\n resolver: () => DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION,\n};\n\nexport const {\n /**\n * The token used by Daffodil to hold the driver's configuration.\n *\n * @docs-private\n */\n token: DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG,\n /**\n * Provider function for {@link DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG}.\n */\n provider: provideDaffExternalRouterDriverInMemoryConfig,\n} = createConfigInjectionToken<DaffExternalRouterDriverInMemoryConfig>(defaultConfig, 'DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG');\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Observable,\n of,\n throwError,\n} from 'rxjs';\n\nimport {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport {\n DaffExternallyResolvableUrl,\n DaffExternalRouterNotFoundError,\n} from '@daffodil/external-router';\nimport { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverInMemoryConfig,\n DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG,\n} from './config';\n\n/**\n * The DaffExternalRouterInMemoryDriver is responsible for resolving\n * a URL using the resolver in the provided configuration.\n *\n * @inheritdoc\n *\n * @see {@link DaffExternalRouterInMemoryDriver}\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterInMemoryDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(\n @Inject(DAFF_EXTERNAL_ROUTER_DRIVER_IN_MEMORY_CONFIG)\n private configuration: DaffExternalRouterDriverInMemoryConfig,\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n const truncatedUrl = daffUriTruncateQueryFragment(url);\n const resolvedUrl = this.configuration.resolver(truncatedUrl);\n\n if (!resolvedUrl?.url) {\n return throwError(() => new DaffExternalRouterNotFoundError());\n }\n\n return of({\n ...resolvedUrl,\n url: daffUriTruncateLeadingSlash(resolvedUrl.url),\n });\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverInMemoryConfig,\n provideDaffExternalRouterDriverInMemoryConfig,\n} from './config';\nimport { DaffExternalRouterInMemoryDriver } from './in-memory.service';\n\n/**\n * Provides an in-memory implementation of {@link DaffExternalRouterDriver}\n */\nexport const provideDaffExternalRouterInMemoryDriver = (config:\n DaffExternalRouterDriverInMemoryConfig | InjectionToken<DaffExternalRouterDriverInMemoryConfig> = undefined,\n): EnvironmentProviders => makeEnvironmentProviders([\n provideDaffExternalRouterDriver(DaffExternalRouterInMemoryDriver),\n config ? provideDaffExternalRouterDriverInMemoryConfig(config) : [],\n]);\n","/*\n * Public API Surface of @daffodil/external-router/driver/in-memory\n */\n\nexport { DaffExternalRouterInMemoryDriver } from './in-memory.service';\n\nexport {\n DaffExternalRouterDriverInMemoryConfig,\n DaffExternalRouterDriverInMemoryResolver,\n} from './config';\n\nexport { provideDaffExternalRouterInMemoryDriver } from './provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAkBA,MAAM,aAAa,GAA2C;AAC5D,IAAA,QAAQ,EAAE,MAAM,yCAAyC;CAC1D;AAEM,MAAM;AACX;;;;AAIG;AACH,KAAK,EAAE,4CAA4C;AACnD;;AAEG;AACH,QAAQ,EAAE,6CAA6C,GACxD,GAAG,0BAA0B,CAAyC,aAAa,EAAE,8CAA8C,CAAC;;ACRrI;;;;;;;AAOG;MAIU,gCAAgC,CAAA;AAE3C,IAAA,WAAA,CAEU,aAAqD,EAAA;QAArD,IAAA,CAAA,aAAa,GAAb,aAAa;IACpB;AAEH,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,YAAY,GAAG,4BAA4B,CAAC,GAAG,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC;AAE7D,QAAA,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YACrB,OAAO,UAAU,CAAC,MAAM,IAAI,+BAA+B,EAAE,CAAC;QAChE;AAEA,QAAA,OAAO,EAAE,CAAC;AACR,YAAA,GAAG,WAAW;AACd,YAAA,GAAG,EAAE,2BAA2B,CAAC,WAAW,CAAC,GAAG,CAAC;AAClD,SAAA,CAAC;IACJ;AAnBW,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,kBAGjC,4CAA4C,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAH3C,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cAF/B,MAAM,EAAA,CAAA,CAAA;;2FAEP,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;0BAII,MAAM;2BAAC,4CAA4C;;;ACzBxD;;AAEG;AACI,MAAM,uCAAuC,GAAG,CAAC,MAAA,GAC+C,SAAS,KACrF,wBAAwB,CAAC;IAClD,+BAA+B,CAAC,gCAAgC,CAAC;IACjE,MAAM,GAAG,6CAA6C,CAAC,MAAM,CAAC,GAAG,EAAE;AACpE,CAAA;;ACtBD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -4,6 +4,7 @@ import * as i1 from 'apollo-angular';
4
4
  import { gql } from 'apollo-angular';
5
5
  import { map } from 'rxjs/operators';
6
6
  import { daffUriTruncateLeadingSlash, daffUriTruncateQueryFragment } from '@daffodil/core/routing';
7
+ import { DaffExternalRouterNotFoundError, DaffExternalRouterClientError, DaffExternalRouterServerError } from '@daffodil/external-router';
7
8
  import { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION, provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';
8
9
  import { magentoTransformRedirectToHttpCode } from '@daffodil/external-router/driver/magento';
9
10
  import { CommonModule } from '@angular/common';
@@ -50,7 +51,18 @@ class DaffExternalRouterMagentoDriver {
50
51
  url: daffUriTruncateQueryFragment(url),
51
52
  },
52
53
  })
53
- .pipe(map(response => transformResolutionToResolvableUrlv241(response.data.urlResolver)));
54
+ .pipe(map(response => transformResolutionToResolvableUrlv241(response.data.urlResolver)), map((resolution) => {
55
+ if (!resolution || resolution.code === 404) {
56
+ throw new DaffExternalRouterNotFoundError();
57
+ }
58
+ if (resolution.code >= 400 && resolution.code < 500) {
59
+ throw new DaffExternalRouterClientError();
60
+ }
61
+ if (resolution.code >= 500) {
62
+ throw new DaffExternalRouterServerError();
63
+ }
64
+ return resolution;
65
+ }));
54
66
  }
55
67
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterMagentoDriver, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable }); }
56
68
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterMagentoDriver, providedIn: 'root' }); }
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-external-router-driver-magento-2.4.1.mjs","sources":["../../../libs/external-router/driver/magento/2.4.1/src/graphql/queries/resolve-url-v2.4.1.ts","../../../libs/external-router/driver/magento/2.4.1/src/transforms/resolution-to-resolvable-url.ts","../../../libs/external-router/driver/magento/2.4.1/src/magento.service.ts","../../../libs/external-router/driver/magento/2.4.1/src/magento.module.ts","../../../libs/external-router/driver/magento/2.4.1/src/public_api.ts","../../../libs/external-router/driver/magento/2.4.1/src/daffodil-external-router-driver-magento-2.4.1.ts"],"sourcesContent":["import { gql } from 'apollo-angular';\n\nexport const DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME = 'MagentoResolveUrlv241';\n\n/**\n * This query retrieves a URL resolution from Magento and informs you about\n * what type of route the URL is.\n */\nexport const MagentoResolveUrlv241 = gql`\n\tquery ${DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME}($url: String!) {\n\t\turlResolver(url: $url) {\n\t\t\tid\n\t\t\trelative_url\n\t\t\tredirectCode\n\t\t\ttype\n\t\t}\n\t}\n`;\n","import {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION } from '@daffodil/external-router/driver';\nimport {\n MagentoUrlResolver,\n magentoTransformRedirectToHttpCode,\n} from '@daffodil/external-router/driver/magento';\n\nexport const transformResolutionToResolvableUrlv241 = (\n resolution: MagentoUrlResolver,\n): DaffExternallyResolvableUrl => (resolution ? {\n id: resolution.id?.toString(),\n url: daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(resolution.relative_url)),\n type: resolution.type,\n code: magentoTransformRedirectToHttpCode(resolution.redirectCode),\n} : DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);\n\n","import { Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { daffUriTruncateQueryFragment } from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';\nimport { MagentoUrlResolverResponse } from '@daffodil/external-router/driver/magento';\n\nimport { MagentoResolveUrlv241 } from './graphql/queries/resolve-url-v2.4.1';\nimport { transformResolutionToResolvableUrlv241 } from './transforms/resolution-to-resolvable-url';\n\n/**\n * The DaffExternalRouterMagentoDriver is responsible for translating an\n * arbitrary URI into a DaffExternallyResolvableUrl with Magento environments.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterMagentoDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(private apollo: Apollo) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n return this.apollo\n .query<MagentoUrlResolverResponse>({\n query: MagentoResolveUrlv241,\n variables: {\n url: daffUriTruncateQueryFragment(url),\n },\n })\n .pipe(map(response => transformResolutionToResolvableUrlv241(response.data.urlResolver)));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { provideDaffMagentoCacheableOperation } from '@daffodil/driver/magento';\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve-url-v2.4.1';\nimport { DaffExternalRouterMagentoDriver } from './magento.service';\n/**\n * The module used to configure the {@link DaffExternalRouterDriver} for usage with Magento.\n *\n * @example\n * ```ts\n * @NgModule({\n * declarations: [],\n * imports: [\n * ...\n * DaffExternalRouterDriverMagentoModule.forRoot()\n * ],\n * })\n * export class AppModule{}\n * ```\n *\n * Note that this package depends upon ApolloClient, as the Magento driver uses GraphQl to make it's API calls.\n */\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n})\nexport class DaffExternalRouterDriverMagentoModule {\n\n /**\n * Configures the package for the root injector.\n */\n static forRoot(): ModuleWithProviders<DaffExternalRouterDriverMagentoModule> {\n return {\n ngModule: DaffExternalRouterDriverMagentoModule,\n providers: [\n provideDaffExternalRouterDriver(DaffExternalRouterMagentoDriver),\n provideDaffMagentoCacheableOperation(DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME),\n ],\n };\n }\n}\n","/*\n * Public API Surface of @daffodil/external-router/driver/magento/2-4-1\n */\n\nexport { DaffExternalRouterMagentoDriver } from './magento.service';\nexport { DaffExternalRouterDriverMagentoModule } from './magento.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAEO,MAAM,mCAAmC,GAAG,uBAAuB;AAE1E;;;AAGG;AACI,MAAM,qBAAqB,GAAG,GAAG,CAAA;SAC/B,mCAAmC,CAAA;;;;;;;;CAQ3C;;ACNM,MAAM,sCAAsC,GAAG,CACpD,UAA8B,MACG,UAAU,GAAG;AAC9C,IAAA,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE;IAC7B,GAAG,EAAE,2BAA2B,CAAC,4BAA4B,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACvF,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,IAAA,IAAI,EAAE,kCAAkC,CAAC,UAAU,CAAC,YAAY,CAAC;AAClE,CAAA,GAAG,yCAAyC,CAAC;;ACL9C;;;;;AAKG;MAIU,+BAA+B,CAAA;AAE1C,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IAAW;AAErC,IAAA,OAAO,CAAC,GAAW,EAAA;QACjB,OAAO,IAAI,CAAC;AACT,aAAA,KAAK,CAA6B;AACjC,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,SAAS,EAAE;AACT,gBAAA,GAAG,EAAE,4BAA4B,CAAC,GAAG,CAAC;AACvC,aAAA;SACF;AACA,aAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,sCAAsC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7F;iIAbW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA/B,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cAF9B,MAAM,EAAA,CAAA,CAAA;;2FAEP,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACVD;;;;;;;;;;;;;;;;AAgBG;MAKU,qCAAqC,CAAA;AAEhD;;AAEG;AACH,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,qCAAqC;AAC/C,YAAA,SAAS,EAAE;gBACT,+BAA+B,CAAC,+BAA+B,CAAC;gBAChE,oCAAoC,CAAC,mCAAmC,CAAC;AAC1E,aAAA;SACF;IACH;iIAbW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArC,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qCAAqC,YAFtC,YAAY,CAAA,EAAA,CAAA,CAAA;AAEX,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qCAAqC,YAFtC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAEX,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAJjD,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;AC/BD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"daffodil-external-router-driver-magento-2.4.1.mjs","sources":["../../../libs/external-router/driver/magento/2.4.1/src/graphql/queries/resolve-url-v2.4.1.ts","../../../libs/external-router/driver/magento/2.4.1/src/transforms/resolution-to-resolvable-url.ts","../../../libs/external-router/driver/magento/2.4.1/src/magento.service.ts","../../../libs/external-router/driver/magento/2.4.1/src/magento.module.ts","../../../libs/external-router/driver/magento/2.4.1/src/public_api.ts","../../../libs/external-router/driver/magento/2.4.1/src/daffodil-external-router-driver-magento-2.4.1.ts"],"sourcesContent":["import { gql } from 'apollo-angular';\n\nexport const DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME = 'MagentoResolveUrlv241';\n\n/**\n * This query retrieves a URL resolution from Magento and informs you about\n * what type of route the URL is.\n */\nexport const MagentoResolveUrlv241 = gql`\n\tquery ${DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME}($url: String!) {\n\t\turlResolver(url: $url) {\n\t\t\tid\n\t\t\trelative_url\n\t\t\tredirectCode\n\t\t\ttype\n\t\t}\n\t}\n`;\n","import {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION } from '@daffodil/external-router/driver';\nimport {\n MagentoUrlResolver,\n magentoTransformRedirectToHttpCode,\n} from '@daffodil/external-router/driver/magento';\n\nexport const transformResolutionToResolvableUrlv241 = (\n resolution: MagentoUrlResolver,\n): DaffExternallyResolvableUrl => (resolution ? {\n id: resolution.id?.toString(),\n url: daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(resolution.relative_url)),\n type: resolution.type,\n code: magentoTransformRedirectToHttpCode(resolution.redirectCode),\n} : DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);\n\n","import { Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { daffUriTruncateQueryFragment } from '@daffodil/core/routing';\nimport {\n DaffExternallyResolvableUrl,\n DaffExternalRouterClientError,\n DaffExternalRouterNotFoundError,\n DaffExternalRouterServerError,\n} from '@daffodil/external-router';\nimport { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';\nimport { MagentoUrlResolverResponse } from '@daffodil/external-router/driver/magento';\n\nimport { MagentoResolveUrlv241 } from './graphql/queries/resolve-url-v2.4.1';\nimport { transformResolutionToResolvableUrlv241 } from './transforms/resolution-to-resolvable-url';\n\n/**\n * The DaffExternalRouterMagentoDriver is responsible for translating an\n * arbitrary URI into a DaffExternallyResolvableUrl with Magento environments.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterMagentoDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(private apollo: Apollo) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n return this.apollo\n .query<MagentoUrlResolverResponse>({\n query: MagentoResolveUrlv241,\n variables: {\n url: daffUriTruncateQueryFragment(url),\n },\n })\n .pipe(\n map(response => transformResolutionToResolvableUrlv241(response.data.urlResolver)),\n map((resolution) => {\n if (!resolution || resolution.code === 404) {\n throw new DaffExternalRouterNotFoundError();\n }\n\n if (resolution.code >= 400 && resolution.code < 500) {\n throw new DaffExternalRouterClientError();\n }\n\n if (resolution.code >= 500) {\n throw new DaffExternalRouterServerError();\n }\n\n return resolution;\n }),\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { provideDaffMagentoCacheableOperation } from '@daffodil/driver/magento';\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve-url-v2.4.1';\nimport { DaffExternalRouterMagentoDriver } from './magento.service';\n/**\n * The module used to configure the {@link DaffExternalRouterDriver} for usage with Magento.\n *\n * @example\n * ```ts\n * @NgModule({\n * declarations: [],\n * imports: [\n * ...\n * DaffExternalRouterDriverMagentoModule.forRoot()\n * ],\n * })\n * export class AppModule{}\n * ```\n *\n * Note that this package depends upon ApolloClient, as the Magento driver uses GraphQl to make it's API calls.\n */\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n})\nexport class DaffExternalRouterDriverMagentoModule {\n\n /**\n * Configures the package for the root injector.\n */\n static forRoot(): ModuleWithProviders<DaffExternalRouterDriverMagentoModule> {\n return {\n ngModule: DaffExternalRouterDriverMagentoModule,\n providers: [\n provideDaffExternalRouterDriver(DaffExternalRouterMagentoDriver),\n provideDaffMagentoCacheableOperation(DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME),\n ],\n };\n }\n}\n","/*\n * Public API Surface of @daffodil/external-router/driver/magento/2-4-1\n */\n\nexport { DaffExternalRouterMagentoDriver } from './magento.service';\nexport { DaffExternalRouterDriverMagentoModule } from './magento.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { Injectable, NgModule } from '@angular/core';
3
3
  import * as i1 from 'apollo-angular';
4
4
  import { gql } from 'apollo-angular';
5
5
  import { map } from 'rxjs/operators';
6
+ import { DaffExternalRouterNotFoundError, DaffExternalRouterClientError, DaffExternalRouterServerError } from '@daffodil/external-router';
6
7
  import { daffUriTruncateLeadingSlash, daffUriTruncateQueryFragment } from '@daffodil/core/routing';
7
8
  import { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION, provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';
8
9
  import { magentoTransformRedirectToHttpCode } from '@daffodil/external-router/driver/magento';
@@ -50,7 +51,18 @@ class DaffExternalRouterMagentoDriver {
50
51
  url,
51
52
  },
52
53
  })
53
- .pipe(map(response => transformResolutionToResolvableUrlv242(response.data.urlResolver)));
54
+ .pipe(map(response => transformResolutionToResolvableUrlv242(response.data.urlResolver)), map((resolution) => {
55
+ if (!resolution || resolution.code === 404) {
56
+ throw new DaffExternalRouterNotFoundError();
57
+ }
58
+ if (resolution.code >= 400 && resolution.code < 500) {
59
+ throw new DaffExternalRouterClientError();
60
+ }
61
+ if (resolution.code >= 500) {
62
+ throw new DaffExternalRouterServerError();
63
+ }
64
+ return resolution;
65
+ }));
54
66
  }
55
67
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterMagentoDriver, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable }); }
56
68
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterMagentoDriver, providedIn: 'root' }); }
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-external-router-driver-magento-2.4.2.mjs","sources":["../../../libs/external-router/driver/magento/2.4.2/src/graphql/queries/resolve-url-v2.4.2.ts","../../../libs/external-router/driver/magento/2.4.2/src/transforms/resolution-to-resolvable-url.ts","../../../libs/external-router/driver/magento/2.4.2/src/magento.service.ts","../../../libs/external-router/driver/magento/2.4.2/src/magento.module.ts","../../../libs/external-router/driver/magento/2.4.2/src/public_api.ts","../../../libs/external-router/driver/magento/2.4.2/src/daffodil-external-router-driver-magento-2.4.2.ts"],"sourcesContent":["import { gql } from 'apollo-angular';\n\nexport const DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME = 'MagentoResolveUrlv242';\n\n/**\n * This query retrieves a URL resolution from Magento and informs you about\n * what type of route the URL is.\n */\nexport const MagentoResolveUrlv242 = gql`\n\tquery ${DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME}($url: String!) {\n\t\turlResolver(url: $url) {\n\t\t\tentity_uid\n\t\t\trelative_url\n\t\t\tredirectCode\n\t\t\ttype\n\t\t}\n\t}\n`;\n","import {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION } from '@daffodil/external-router/driver';\nimport {\n MagentoUrlResolver,\n magentoTransformRedirectToHttpCode,\n} from '@daffodil/external-router/driver/magento';\n\n\nexport const transformResolutionToResolvableUrlv242 = (\n resolution: MagentoUrlResolver,\n): DaffExternallyResolvableUrl => (resolution ? {\n id: resolution.entity_uid,\n url: daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(resolution.relative_url)),\n type: resolution.type,\n code: magentoTransformRedirectToHttpCode(resolution.redirectCode),\n} : DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);\n","import { Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';\nimport { MagentoUrlResolverResponse } from '@daffodil/external-router/driver/magento';\n\nimport { MagentoResolveUrlv242 } from './graphql/queries/resolve-url-v2.4.2';\nimport { transformResolutionToResolvableUrlv242 } from './transforms/resolution-to-resolvable-url';\n\n\n/**\n * The DaffExternalRouterMagentoDriver is responsible for translating an\n * arbitrary URI into a DaffExternallyResolvableUrl with Magento environments.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterMagentoDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(\n private apollo: Apollo,\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n return this.apollo\n .query<MagentoUrlResolverResponse>({\n query: MagentoResolveUrlv242,\n variables: {\n url,\n },\n })\n .pipe(map(response => transformResolutionToResolvableUrlv242(response.data.urlResolver)));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { provideDaffMagentoCacheableOperation } from '@daffodil/driver/magento';\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve-url-v2.4.2';\nimport { DaffExternalRouterMagentoDriver } from './magento.service';\n\n/**\n * The module used to configure the {@link DaffExternalRouterDriver} for usage with Magento.\n *\n * @example\n * ```ts\n * @NgModule({\n * declarations: [],\n * imports: [\n * ...\n * DaffExternalRouterDriverMagentoModule.forRoot()\n * ],\n * })\n * export class AppModule{}\n * ```\n *\n * Note that this package depends upon ApolloClient, as the Magento driver uses GraphQl to make it's API calls.\n */\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n})\nexport class DaffExternalRouterDriverMagentoModule {\n\n /**\n * Configures the package for the root injector.\n */\n static forRoot(): ModuleWithProviders<DaffExternalRouterDriverMagentoModule> {\n return {\n ngModule: DaffExternalRouterDriverMagentoModule,\n providers: [\n provideDaffExternalRouterDriver(DaffExternalRouterMagentoDriver),\n provideDaffMagentoCacheableOperation(DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME),\n ],\n };\n }\n}\n","/*\n * Public API Surface of @daffodil/external-router/driver/magento/2.4.2\n */\n\nexport { DaffExternalRouterMagentoDriver } from './magento.service';\nexport { DaffExternalRouterDriverMagentoModule } from './magento.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAEO,MAAM,mCAAmC,GAAG,uBAAuB;AAE1E;;;AAGG;AACI,MAAM,qBAAqB,GAAG,GAAG,CAAA;SAC/B,mCAAmC,CAAA;;;;;;;;CAQ3C;;ACLM,MAAM,sCAAsC,GAAG,CACpD,UAA8B,MACG,UAAU,GAAG;IAC9C,EAAE,EAAE,UAAU,CAAC,UAAU;IACzB,GAAG,EAAE,2BAA2B,CAAC,4BAA4B,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACvF,IAAI,EAAE,UAAU,CAAC,IAAI;AACrB,IAAA,IAAI,EAAE,kCAAkC,CAAC,UAAU,CAAC,YAAY,CAAC;AAClE,CAAA,GAAG,yCAAyC,CAAC;;ACL9C;;;;;AAKG;MAIU,+BAA+B,CAAA;AAE1C,IAAA,WAAA,CACU,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;IACb;AAEH,IAAA,OAAO,CAAC,GAAW,EAAA;QACjB,OAAO,IAAI,CAAC;AACT,aAAA,KAAK,CAA6B;AACjC,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,SAAS,EAAE;gBACT,GAAG;AACJ,aAAA;SACF;AACA,aAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,sCAAsC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7F;iIAfW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA/B,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cAF9B,MAAM,EAAA,CAAA,CAAA;;2FAEP,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACVD;;;;;;;;;;;;;;;;AAgBG;MAKU,qCAAqC,CAAA;AAEhD;;AAEG;AACH,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,qCAAqC;AAC/C,YAAA,SAAS,EAAE;gBACT,+BAA+B,CAAC,+BAA+B,CAAC;gBAChE,oCAAoC,CAAC,mCAAmC,CAAC;AAC1E,aAAA;SACF;IACH;iIAbW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArC,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qCAAqC,YAFtC,YAAY,CAAA,EAAA,CAAA,CAAA;AAEX,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qCAAqC,YAFtC,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAEX,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAJjD,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA;;;AChCD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"daffodil-external-router-driver-magento-2.4.2.mjs","sources":["../../../libs/external-router/driver/magento/2.4.2/src/graphql/queries/resolve-url-v2.4.2.ts","../../../libs/external-router/driver/magento/2.4.2/src/transforms/resolution-to-resolvable-url.ts","../../../libs/external-router/driver/magento/2.4.2/src/magento.service.ts","../../../libs/external-router/driver/magento/2.4.2/src/magento.module.ts","../../../libs/external-router/driver/magento/2.4.2/src/public_api.ts","../../../libs/external-router/driver/magento/2.4.2/src/daffodil-external-router-driver-magento-2.4.2.ts"],"sourcesContent":["import { gql } from 'apollo-angular';\n\nexport const DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME = 'MagentoResolveUrlv242';\n\n/**\n * This query retrieves a URL resolution from Magento and informs you about\n * what type of route the URL is.\n */\nexport const MagentoResolveUrlv242 = gql`\n\tquery ${DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME}($url: String!) {\n\t\turlResolver(url: $url) {\n\t\t\tentity_uid\n\t\t\trelative_url\n\t\t\tredirectCode\n\t\t\ttype\n\t\t}\n\t}\n`;\n","import {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION } from '@daffodil/external-router/driver';\nimport {\n MagentoUrlResolver,\n magentoTransformRedirectToHttpCode,\n} from '@daffodil/external-router/driver/magento';\n\n\nexport const transformResolutionToResolvableUrlv242 = (\n resolution: MagentoUrlResolver,\n): DaffExternallyResolvableUrl => (resolution ? {\n id: resolution.entity_uid,\n url: daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(resolution.relative_url)),\n type: resolution.type,\n code: magentoTransformRedirectToHttpCode(resolution.redirectCode),\n} : DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);\n","import { Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n\nimport {\n DaffExternallyResolvableUrl,\n DaffExternalRouterClientError,\n DaffExternalRouterNotFoundError,\n DaffExternalRouterServerError,\n} from '@daffodil/external-router';\nimport { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';\nimport { MagentoUrlResolverResponse } from '@daffodil/external-router/driver/magento';\n\nimport { MagentoResolveUrlv242 } from './graphql/queries/resolve-url-v2.4.2';\nimport { transformResolutionToResolvableUrlv242 } from './transforms/resolution-to-resolvable-url';\n\n\n/**\n * The DaffExternalRouterMagentoDriver is responsible for translating an\n * arbitrary URI into a DaffExternallyResolvableUrl with Magento environments.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterMagentoDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(\n private apollo: Apollo,\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n return this.apollo\n .query<MagentoUrlResolverResponse>({\n query: MagentoResolveUrlv242,\n variables: {\n url,\n },\n })\n .pipe(\n map(response => transformResolutionToResolvableUrlv242(response.data.urlResolver)),\n map((resolution) => {\n if (!resolution || resolution.code === 404) {\n throw new DaffExternalRouterNotFoundError();\n }\n\n if (resolution.code >= 400 && resolution.code < 500) {\n throw new DaffExternalRouterClientError();\n }\n\n if (resolution.code >= 500) {\n throw new DaffExternalRouterServerError();\n }\n\n return resolution;\n }),\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { provideDaffMagentoCacheableOperation } from '@daffodil/driver/magento';\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve-url-v2.4.2';\nimport { DaffExternalRouterMagentoDriver } from './magento.service';\n\n/**\n * The module used to configure the {@link DaffExternalRouterDriver} for usage with Magento.\n *\n * @example\n * ```ts\n * @NgModule({\n * declarations: [],\n * imports: [\n * ...\n * DaffExternalRouterDriverMagentoModule.forRoot()\n * ],\n * })\n * export class AppModule{}\n * ```\n *\n * Note that this package depends upon ApolloClient, as the Magento driver uses GraphQl to make it's API calls.\n */\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n})\nexport class DaffExternalRouterDriverMagentoModule {\n\n /**\n * Configures the package for the root injector.\n */\n static forRoot(): ModuleWithProviders<DaffExternalRouterDriverMagentoModule> {\n return {\n ngModule: DaffExternalRouterDriverMagentoModule,\n providers: [\n provideDaffExternalRouterDriver(DaffExternalRouterMagentoDriver),\n provideDaffMagentoCacheableOperation(DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME),\n ],\n };\n }\n}\n","/*\n * Public API Surface of @daffodil/external-router/driver/magento/2.4.2\n */\n\nexport { DaffExternalRouterMagentoDriver } from './magento.service';\nexport { DaffExternalRouterDriverMagentoModule } from './magento.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { DOCUMENT, Inject, Injectable, NgModule, makeEnvironmentProviders } from
3
3
  import * as i1 from 'apollo-angular';
4
4
  import { gql } from 'apollo-angular';
5
5
  import { map } from 'rxjs/operators';
6
+ import { DaffExternalRouterNotFoundError, DaffExternalRouterClientError, DaffExternalRouterServerError } from '@daffodil/external-router';
6
7
  import { daffUriTruncateLeadingSlash, daffUriTruncateQueryFragment } from '@daffodil/core/routing';
7
8
  import { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION, provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';
8
9
  import { magentoTransformRedirectToHttpCode } from '@daffodil/external-router/driver/magento';
@@ -292,7 +293,18 @@ class DaffExternalRouterMagentoDriver {
292
293
  url,
293
294
  },
294
295
  })
295
- .pipe(map((response) => response.data.route), map((route) => transformClientUrls(route, this.document.location.origin)), map(route => transformResolutionToResolvableUrlv243(route)));
296
+ .pipe(map((response) => response.data.route), map((route) => transformClientUrls(route, this.document.location.origin)), map(route => transformResolutionToResolvableUrlv243(route)), map((resolution) => {
297
+ if (!resolution || resolution.code === 404) {
298
+ throw new DaffExternalRouterNotFoundError();
299
+ }
300
+ if (resolution.code >= 400 && resolution.code < 500) {
301
+ throw new DaffExternalRouterClientError();
302
+ }
303
+ if (resolution.code >= 500) {
304
+ throw new DaffExternalRouterServerError();
305
+ }
306
+ return resolution;
307
+ }));
296
308
  }
297
309
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterMagentoDriver, deps: [{ token: i1.Apollo }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
298
310
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterMagentoDriver, providedIn: 'root' }); }
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-external-router-driver-magento-2.4.3.mjs","sources":["../../../libs/external-router/driver/magento/2.4.3/src/graphql/queries/resolve.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/rescale-rating.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/base.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/bundle.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/configurable.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/simple.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/product.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/category/category.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/page/page.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/transform-schema.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/resolution-to-resolvable-url.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/clientify-url-path.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/transform-client-urls.ts","../../../libs/external-router/driver/magento/2.4.3/src/magento.service.ts","../../../libs/external-router/driver/magento/2.4.3/src/magento.module.ts","../../../libs/external-router/driver/magento/2.4.3/src/provider.ts","../../../libs/external-router/driver/magento/2.4.3/src/public_api.ts","../../../libs/external-router/driver/magento/2.4.3/src/daffodil-external-router-driver-magento-2.4.3.ts"],"sourcesContent":["import { gql } from 'apollo-angular';\n\nexport const DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME = 'MagentoResolveUrlv243';\n\n/**\n * This query retrieves a URL resolution from Magento and informs you about\n * what type of route the URL is.\n */\nexport const MagentoResolveUrlv243 = gql`\n\tquery ${DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME}($url: String!) {\n\t\troute(url: $url) {\n\t\t\trelative_url\n\t\t\tredirect_code\n\t\t\ttype\n\t\t\t... on CmsPage {\n\t\t\t\tidentifier\n\t\t\t\ttitle\n\t\t\t\tcontent\n\t\t\t\tmeta_description\n\t\t\t\tmeta_title\n\t\t\t\turl_key\n\t\t\t}\n\t\t\t... on CategoryInterface {\n\t\t\t\tuid\n\t\t\t\tname\n\t\t\t\tmeta_title\n\t\t\t\tmeta_description\n\t\t\t\tcanonical_url\n\t\t\t\tproducts {\n\t\t\t\t\titems {\n\t\t\t\t\t\t\tname\n\t\t\t\t\t\t\tmeta_description\n\t\t\t\t\t\t\tmeta_title\n\t\t\t\t\t\t\tcanonical_url\n\t\t\t\t\t\t\tsku\n\t\t\t\t\t\t\treview_count\n\t\t\t\t\t\t\trating_summary\n\t\t\t\t\t\t\timage {\n\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tprice_range {\n\t\t\t\t\t\t\t\tminimum_price {\n\t\t\t\t\t\t\t\t\tregular_price {\n\t\t\t\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfinal_price {\n\t\t\t\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmaximum_price {\n\t\t\t\t\t\t\t\t\tregular_price {\n\t\t\t\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfinal_price {\n\t\t\t\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t... on ProductInterface {\n\t\t\t\tuid\n\t\t\t\tname\n\t\t\t\tmeta_description\n\t\t\t\tmeta_title\n\t\t\t\tcanonical_url\n\t\t\t\tsku\n\t\t\t\treview_count\n\t\t\t\trating_summary\n\t\t\t\timage {\n\t\t\t\t\turl\n\t\t\t\t}\n\t\t\t\tstock_status\n\t\t\t\tprice_range {\n\t\t\t\t\tminimum_price {\n\t\t\t\t\t\tregular_price {\n\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinal_price {\n\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tmaximum_price {\n\t\t\t\t\t\tregular_price {\n\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinal_price {\n\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`;\n","/**\n * Rescales a rating value from it's max rating\n * to a scale of 5.\n */\nexport const rescaleRatingOutOf5 = (rating: number | null, max: number) => (((rating ?? 0)/max) * 5).toPrecision(2);\n","import { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { rescaleRatingOutOf5 } from '../rescale-rating';\n\nexport const transformMagentoBaseProduct = (product: MagentoProductRoute): Record<string, unknown> => ({\n '@context': 'https://schema.org/',\n '@type': 'Product',\n url: product.canonical_url,\n sku: product.sku,\n name: product.meta_title ?? product.name ?? '',\n ...(product.meta_description && { description: product.meta_description }),\n ...(product.review_count > 0 && { aggregateRating: {\n '@type': 'AggregateRating',\n ratingValue: rescaleRatingOutOf5(product.rating_summary, 100),\n reviewCount: product.review_count,\n }}),\n image: product.image?.url,\n});\n","import { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoBaseProduct } from './base';\n\nexport const transformMagentoBundleProduct = (resolution: MagentoProductRoute): Record<string, unknown> => ({\n ...transformMagentoBaseProduct(resolution),\n offers: {\n '@type': 'AggregateOffer',\n lowPrice: resolution.price_range.minimum_price.final_price.value,\n highPrice: resolution.price_range.maximum_price.final_price.value,\n priceCurrency: resolution.price_range.maximum_price.final_price.currency,\n },\n});\n","import { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoBaseProduct } from './base';\n\nexport const transformMagentoConfigurableProduct = (resolution: MagentoProductRoute): Record<string, unknown> => ({\n ...transformMagentoBaseProduct(resolution),\n offers: {\n '@type': 'AggregateOffer',\n lowPrice: resolution.price_range.minimum_price.final_price.value,\n highPrice: resolution.price_range.maximum_price.final_price.value,\n priceCurrency: resolution.price_range.maximum_price.final_price.currency,\n },\n});\n","\nimport { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoBaseProduct } from './base';\n\nexport const transformMagentoSimpleProduct = (resolution: MagentoProductRoute): Record<string, unknown> => ({\n ...transformMagentoBaseProduct(resolution),\n offers: {\n '@type': 'Offer',\n url: resolution.canonical_url,\n ...(resolution.stock_status && {\n availability: resolution.stock_status === 'IN_STOCK' ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',\n }),\n priceSpecification: [\n {\n '@type': 'UnitPriceSpecification',\n price: resolution.price_range.maximum_price.final_price.value,\n priceCurrency: resolution.price_range.maximum_price.final_price.currency,\n },\n {\n '@type': 'UnitPriceSpecification',\n priceType: 'https://schema.org/ListPrice',\n price: resolution.price_range.maximum_price.regular_price.value,\n priceCurrency: resolution.price_range.maximum_price.regular_price.currency,\n },\n ],\n },\n});\n","import { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoBaseProduct } from './base';\nimport { transformMagentoBundleProduct } from './bundle';\nimport { transformMagentoConfigurableProduct } from './configurable';\nimport { transformMagentoSimpleProduct } from './simple';\n\n/**\n * Computes supplementary SEO schema for Magento product routes.\n */\nexport const transformMagentoProductSchema = (resolution: MagentoProductRoute): Record<string, unknown> => {\n switch(resolution.__typename) {\n case 'BundleProduct':\n return transformMagentoBundleProduct(resolution);\n case 'ConfigurableProduct':\n return transformMagentoConfigurableProduct(resolution);\n case 'SimpleProduct':\n return transformMagentoSimpleProduct(resolution);\n default:\n return transformMagentoBaseProduct(resolution);\n }\n};\n","import { MagentoCategoryRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoProductSchema } from '../product/product';\n\nexport const transformMagentoCategorySchema = (resolution: MagentoCategoryRoute): Record<string, unknown> => ({\n '@context': 'https://schema.org',\n '@type': 'ItemList',\n itemListElement: resolution.products.items.map((item, index) => ({\n '@type': 'ListItem',\n position: index,\n item: transformMagentoProductSchema({\n ...item,\n meta_description: undefined,\n stock_status: undefined,\n }),\n })),\n});\n","import { MagentoCmsPageRoute } from '@daffodil/external-router/driver/magento';\n\nexport const transformMagentoPageSchema = (resolution: MagentoCmsPageRoute): Record<string, unknown> => ({\n '@context': 'https://schema.org',\n '@type': 'Article',\n headline: resolution.meta_title,\n description: resolution.meta_description,\n});\n","import { MagentoRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoCategorySchema } from './category/category';\nimport { transformMagentoPageSchema } from './page/page';\nimport { transformMagentoProductSchema } from './product/product';\n\nexport const transformSchema = (resolution: MagentoRoute): Record<string, any> | null => {\n switch(resolution.type) {\n case 'PRODUCT':\n return transformMagentoProductSchema(resolution);\n case 'CATEGORY':\n return transformMagentoCategorySchema(resolution);\n case 'CMS_PAGE':\n return transformMagentoPageSchema(resolution);\n default:\n return null;\n }\n};\n","import {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION } from '@daffodil/external-router/driver';\nimport {\n magentoTransformRedirectToHttpCode,\n MagentoRoute,\n} from '@daffodil/external-router/driver/magento';\n\nimport { transformSchema } from './schema/transform-schema';\n\nexport const transformResolutionToResolvableUrlv243 = (\n resolution: MagentoRoute,\n): DaffExternallyResolvableUrl => resolution?.type && resolution.type !== 'UNKNOWN'\n ? {\n id: resolution.type === 'CMS_PAGE' ? resolution.identifier : resolution.uid,\n url: daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(resolution.relative_url)),\n type: resolution.type,\n code: magentoTransformRedirectToHttpCode(resolution.redirect_code),\n data: {\n canonical_url: resolution.type === 'CMS_PAGE' ? resolution.url_key : resolution.canonical_url,\n title: resolution.type === 'CMS_PAGE'\n ? resolution.meta_title ?? resolution.title ?? ''\n : resolution.meta_title ?? resolution.name ?? '',\n meta_description: resolution.meta_description,\n schema: {\n ...transformSchema(resolution),\n },\n },\n }\n : DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION;\n","export const clientifyUrlPath = <T extends string | null>(path: T, domain: string) => path ? new URL(path, domain).toString() : path;\n","import { MagentoRoute } from '@daffodil/external-router/driver/magento';\n\nimport { clientifyUrlPath } from './schema/clientify-url-path';\n\nexport const transformClientUrls = <T extends MagentoRoute>(route: T, origin: string) => {\n if(!route) {\n return route;\n }\n\n switch(route.type) {\n case 'CATEGORY':\n return {\n ...route,\n canonical_url: clientifyUrlPath(route.canonical_url, origin),\n products: {\n items: route.products.items.map((product) => ({\n ...product,\n canonical_url: clientifyUrlPath(product.canonical_url, origin),\n })),\n },\n };\n case 'PRODUCT':\n return {\n ...route,\n canonical_url: clientifyUrlPath(route.canonical_url, origin),\n };\n default:\n return route;\n }\n};\n","\nimport {\n Inject,\n Injectable,\n DOCUMENT,\n} from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';\nimport { MagentoRouteResponse } from '@daffodil/external-router/driver/magento';\n\nimport { MagentoResolveUrlv243 } from './graphql/queries/resolve';\nimport { transformResolutionToResolvableUrlv243 } from './transforms/resolution-to-resolvable-url';\nimport { transformClientUrls } from './transforms/transform-client-urls';\n\n\n/**\n * The DaffExternalRouterMagentoDriver is responsible for translating an\n * arbitrary URI into a DaffExternallyResolvableUrl with Magento environments.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterMagentoDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(\n private apollo: Apollo,\n @Inject(DOCUMENT) private document: Document,\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n return this.apollo\n .query<MagentoRouteResponse>({\n query: MagentoResolveUrlv243,\n variables: {\n url,\n },\n })\n .pipe(\n map((response) => response.data.route),\n map((route) => transformClientUrls(route, this.document.location.origin)),\n map(route => transformResolutionToResolvableUrlv243(route)),\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { provideDaffMagentoCacheableOperation } from '@daffodil/driver/magento';\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve';\nimport { DaffExternalRouterMagentoDriver } from './magento.service';\n\n/**\n * The module used to configure the {@link DaffExternalRouterDriver} for usage with Magento.\n *\n * @example\n * ```ts\n * @NgModule({\n * declarations: [],\n * imports: [\n * ...\n * DaffExternalRouterDriverMagentoModule.forRoot()\n * ],\n * })\n * export class AppModule{}\n * ```\n *\n * Note that this package depends upon ApolloClient, as the Magento driver uses GraphQl to make it's API calls.\n */\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n})\nexport class DaffExternalRouterDriverMagentoModule {\n\n /**\n * Configures the package for the root injector.\n */\n static forRoot(): ModuleWithProviders<DaffExternalRouterDriverMagentoModule> {\n return {\n ngModule: DaffExternalRouterDriverMagentoModule,\n providers: [\n provideDaffExternalRouterDriver(DaffExternalRouterMagentoDriver),\n provideDaffMagentoCacheableOperation(DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME),\n ],\n };\n }\n}\n","import {\n EnvironmentProviders,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nimport { provideDaffMagentoCacheableOperation } from '@daffodil/driver/magento';\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve';\nimport { DaffExternalRouterMagentoDriver } from './magento.service';\n\n/**\n * Provides a Magento implementation of {@link DaffExternalRouterDriver}.\n */\nexport const provideDaffExternalRouterMagentoDriver = (\n): EnvironmentProviders => makeEnvironmentProviders([\n provideDaffExternalRouterDriver(DaffExternalRouterMagentoDriver),\n provideDaffMagentoCacheableOperation(DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME),\n]);\n","/*\n * Public API Surface of @daffodil/external-router/driver/magento/2.4.3\n */\n\nexport { DaffExternalRouterMagentoDriver } from './magento.service';\nexport { DaffExternalRouterDriverMagentoModule } from './magento.module';\nexport { provideDaffExternalRouterMagentoDriver } from './provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daffodil-external-router-driver-magento-2.4.3.mjs","sources":["../../../libs/external-router/driver/magento/2.4.3/src/graphql/queries/resolve.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/rescale-rating.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/base.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/bundle.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/configurable.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/simple.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/product/product.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/category/category.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/page/page.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/transform-schema.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/resolution-to-resolvable-url.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/schema/clientify-url-path.ts","../../../libs/external-router/driver/magento/2.4.3/src/transforms/transform-client-urls.ts","../../../libs/external-router/driver/magento/2.4.3/src/magento.service.ts","../../../libs/external-router/driver/magento/2.4.3/src/magento.module.ts","../../../libs/external-router/driver/magento/2.4.3/src/provider.ts","../../../libs/external-router/driver/magento/2.4.3/src/public_api.ts","../../../libs/external-router/driver/magento/2.4.3/src/daffodil-external-router-driver-magento-2.4.3.ts"],"sourcesContent":["import { gql } from 'apollo-angular';\n\nexport const DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME = 'MagentoResolveUrlv243';\n\n/**\n * This query retrieves a URL resolution from Magento and informs you about\n * what type of route the URL is.\n */\nexport const MagentoResolveUrlv243 = gql`\n\tquery ${DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME}($url: String!) {\n\t\troute(url: $url) {\n\t\t\trelative_url\n\t\t\tredirect_code\n\t\t\ttype\n\t\t\t... on CmsPage {\n\t\t\t\tidentifier\n\t\t\t\ttitle\n\t\t\t\tcontent\n\t\t\t\tmeta_description\n\t\t\t\tmeta_title\n\t\t\t\turl_key\n\t\t\t}\n\t\t\t... on CategoryInterface {\n\t\t\t\tuid\n\t\t\t\tname\n\t\t\t\tmeta_title\n\t\t\t\tmeta_description\n\t\t\t\tcanonical_url\n\t\t\t\tproducts {\n\t\t\t\t\titems {\n\t\t\t\t\t\t\tname\n\t\t\t\t\t\t\tmeta_description\n\t\t\t\t\t\t\tmeta_title\n\t\t\t\t\t\t\tcanonical_url\n\t\t\t\t\t\t\tsku\n\t\t\t\t\t\t\treview_count\n\t\t\t\t\t\t\trating_summary\n\t\t\t\t\t\t\timage {\n\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tprice_range {\n\t\t\t\t\t\t\t\tminimum_price {\n\t\t\t\t\t\t\t\t\tregular_price {\n\t\t\t\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfinal_price {\n\t\t\t\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmaximum_price {\n\t\t\t\t\t\t\t\t\tregular_price {\n\t\t\t\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tfinal_price {\n\t\t\t\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t... on ProductInterface {\n\t\t\t\tuid\n\t\t\t\tname\n\t\t\t\tmeta_description\n\t\t\t\tmeta_title\n\t\t\t\tcanonical_url\n\t\t\t\tsku\n\t\t\t\treview_count\n\t\t\t\trating_summary\n\t\t\t\timage {\n\t\t\t\t\turl\n\t\t\t\t}\n\t\t\t\tstock_status\n\t\t\t\tprice_range {\n\t\t\t\t\tminimum_price {\n\t\t\t\t\t\tregular_price {\n\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinal_price {\n\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tmaximum_price {\n\t\t\t\t\t\tregular_price {\n\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinal_price {\n\t\t\t\t\t\t\tcurrency\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`;\n","/**\n * Rescales a rating value from it's max rating\n * to a scale of 5.\n */\nexport const rescaleRatingOutOf5 = (rating: number | null, max: number) => (((rating ?? 0)/max) * 5).toPrecision(2);\n","import { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { rescaleRatingOutOf5 } from '../rescale-rating';\n\nexport const transformMagentoBaseProduct = (product: MagentoProductRoute): Record<string, unknown> => ({\n '@context': 'https://schema.org/',\n '@type': 'Product',\n url: product.canonical_url,\n sku: product.sku,\n name: product.meta_title ?? product.name ?? '',\n ...(product.meta_description && { description: product.meta_description }),\n ...(product.review_count > 0 && { aggregateRating: {\n '@type': 'AggregateRating',\n ratingValue: rescaleRatingOutOf5(product.rating_summary, 100),\n reviewCount: product.review_count,\n }}),\n image: product.image?.url,\n});\n","import { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoBaseProduct } from './base';\n\nexport const transformMagentoBundleProduct = (resolution: MagentoProductRoute): Record<string, unknown> => ({\n ...transformMagentoBaseProduct(resolution),\n offers: {\n '@type': 'AggregateOffer',\n lowPrice: resolution.price_range.minimum_price.final_price.value,\n highPrice: resolution.price_range.maximum_price.final_price.value,\n priceCurrency: resolution.price_range.maximum_price.final_price.currency,\n },\n});\n","import { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoBaseProduct } from './base';\n\nexport const transformMagentoConfigurableProduct = (resolution: MagentoProductRoute): Record<string, unknown> => ({\n ...transformMagentoBaseProduct(resolution),\n offers: {\n '@type': 'AggregateOffer',\n lowPrice: resolution.price_range.minimum_price.final_price.value,\n highPrice: resolution.price_range.maximum_price.final_price.value,\n priceCurrency: resolution.price_range.maximum_price.final_price.currency,\n },\n});\n","\nimport { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoBaseProduct } from './base';\n\nexport const transformMagentoSimpleProduct = (resolution: MagentoProductRoute): Record<string, unknown> => ({\n ...transformMagentoBaseProduct(resolution),\n offers: {\n '@type': 'Offer',\n url: resolution.canonical_url,\n ...(resolution.stock_status && {\n availability: resolution.stock_status === 'IN_STOCK' ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',\n }),\n priceSpecification: [\n {\n '@type': 'UnitPriceSpecification',\n price: resolution.price_range.maximum_price.final_price.value,\n priceCurrency: resolution.price_range.maximum_price.final_price.currency,\n },\n {\n '@type': 'UnitPriceSpecification',\n priceType: 'https://schema.org/ListPrice',\n price: resolution.price_range.maximum_price.regular_price.value,\n priceCurrency: resolution.price_range.maximum_price.regular_price.currency,\n },\n ],\n },\n});\n","import { MagentoProductRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoBaseProduct } from './base';\nimport { transformMagentoBundleProduct } from './bundle';\nimport { transformMagentoConfigurableProduct } from './configurable';\nimport { transformMagentoSimpleProduct } from './simple';\n\n/**\n * Computes supplementary SEO schema for Magento product routes.\n */\nexport const transformMagentoProductSchema = (resolution: MagentoProductRoute): Record<string, unknown> => {\n switch(resolution.__typename) {\n case 'BundleProduct':\n return transformMagentoBundleProduct(resolution);\n case 'ConfigurableProduct':\n return transformMagentoConfigurableProduct(resolution);\n case 'SimpleProduct':\n return transformMagentoSimpleProduct(resolution);\n default:\n return transformMagentoBaseProduct(resolution);\n }\n};\n","import { MagentoCategoryRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoProductSchema } from '../product/product';\n\nexport const transformMagentoCategorySchema = (resolution: MagentoCategoryRoute): Record<string, unknown> => ({\n '@context': 'https://schema.org',\n '@type': 'ItemList',\n itemListElement: resolution.products.items.map((item, index) => ({\n '@type': 'ListItem',\n position: index,\n item: transformMagentoProductSchema({\n ...item,\n meta_description: undefined,\n stock_status: undefined,\n }),\n })),\n});\n","import { MagentoCmsPageRoute } from '@daffodil/external-router/driver/magento';\n\nexport const transformMagentoPageSchema = (resolution: MagentoCmsPageRoute): Record<string, unknown> => ({\n '@context': 'https://schema.org',\n '@type': 'Article',\n headline: resolution.meta_title,\n description: resolution.meta_description,\n});\n","import { MagentoRoute } from '@daffodil/external-router/driver/magento';\n\nimport { transformMagentoCategorySchema } from './category/category';\nimport { transformMagentoPageSchema } from './page/page';\nimport { transformMagentoProductSchema } from './product/product';\n\nexport const transformSchema = (resolution: MagentoRoute): Record<string, any> | null => {\n switch(resolution.type) {\n case 'PRODUCT':\n return transformMagentoProductSchema(resolution);\n case 'CATEGORY':\n return transformMagentoCategorySchema(resolution);\n case 'CMS_PAGE':\n return transformMagentoPageSchema(resolution);\n default:\n return null;\n }\n};\n","import {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION } from '@daffodil/external-router/driver';\nimport {\n magentoTransformRedirectToHttpCode,\n MagentoRoute,\n} from '@daffodil/external-router/driver/magento';\n\nimport { transformSchema } from './schema/transform-schema';\n\nexport const transformResolutionToResolvableUrlv243 = (\n resolution: MagentoRoute,\n): DaffExternallyResolvableUrl => resolution?.type && resolution.type !== 'UNKNOWN'\n ? {\n id: resolution.type === 'CMS_PAGE' ? resolution.identifier : resolution.uid,\n url: daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(resolution.relative_url)),\n type: resolution.type,\n code: magentoTransformRedirectToHttpCode(resolution.redirect_code),\n data: {\n canonical_url: resolution.type === 'CMS_PAGE' ? resolution.url_key : resolution.canonical_url,\n title: resolution.type === 'CMS_PAGE'\n ? resolution.meta_title ?? resolution.title ?? ''\n : resolution.meta_title ?? resolution.name ?? '',\n meta_description: resolution.meta_description,\n schema: {\n ...transformSchema(resolution),\n },\n },\n }\n : DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION;\n","export const clientifyUrlPath = <T extends string | null>(path: T, domain: string) => path ? new URL(path, domain).toString() : path;\n","import { MagentoRoute } from '@daffodil/external-router/driver/magento';\n\nimport { clientifyUrlPath } from './schema/clientify-url-path';\n\nexport const transformClientUrls = <T extends MagentoRoute>(route: T, origin: string) => {\n if(!route) {\n return route;\n }\n\n switch(route.type) {\n case 'CATEGORY':\n return {\n ...route,\n canonical_url: clientifyUrlPath(route.canonical_url, origin),\n products: {\n items: route.products.items.map((product) => ({\n ...product,\n canonical_url: clientifyUrlPath(product.canonical_url, origin),\n })),\n },\n };\n case 'PRODUCT':\n return {\n ...route,\n canonical_url: clientifyUrlPath(route.canonical_url, origin),\n };\n default:\n return route;\n }\n};\n","\nimport {\n Inject,\n Injectable,\n DOCUMENT,\n} from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n\nimport {\n DaffExternallyResolvableUrl,\n DaffExternalRouterClientError,\n DaffExternalRouterNotFoundError,\n DaffExternalRouterServerError,\n} from '@daffodil/external-router';\nimport { DaffExternalRouterDriverInterface } from '@daffodil/external-router/driver';\nimport { MagentoRouteResponse } from '@daffodil/external-router/driver/magento';\n\nimport { MagentoResolveUrlv243 } from './graphql/queries/resolve';\nimport { transformResolutionToResolvableUrlv243 } from './transforms/resolution-to-resolvable-url';\nimport { transformClientUrls } from './transforms/transform-client-urls';\n\n\n/**\n * The DaffExternalRouterMagentoDriver is responsible for translating an\n * arbitrary URI into a DaffExternallyResolvableUrl with Magento environments.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffExternalRouterMagentoDriver\nimplements DaffExternalRouterDriverInterface {\n constructor(\n private apollo: Apollo,\n @Inject(DOCUMENT) private document: Document,\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n return this.apollo\n .query<MagentoRouteResponse>({\n query: MagentoResolveUrlv243,\n variables: {\n url,\n },\n })\n .pipe(\n map((response) => response.data.route),\n map((route) => transformClientUrls(route, this.document.location.origin)),\n map(route => transformResolutionToResolvableUrlv243(route)),\n map((resolution) => {\n if (!resolution || resolution.code === 404) {\n throw new DaffExternalRouterNotFoundError();\n }\n\n if (resolution.code >= 400 && resolution.code < 500) {\n throw new DaffExternalRouterClientError();\n }\n\n if (resolution.code >= 500) {\n throw new DaffExternalRouterServerError();\n }\n\n return resolution;\n }),\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { provideDaffMagentoCacheableOperation } from '@daffodil/driver/magento';\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve';\nimport { DaffExternalRouterMagentoDriver } from './magento.service';\n\n/**\n * The module used to configure the {@link DaffExternalRouterDriver} for usage with Magento.\n *\n * @example\n * ```ts\n * @NgModule({\n * declarations: [],\n * imports: [\n * ...\n * DaffExternalRouterDriverMagentoModule.forRoot()\n * ],\n * })\n * export class AppModule{}\n * ```\n *\n * Note that this package depends upon ApolloClient, as the Magento driver uses GraphQl to make it's API calls.\n */\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n})\nexport class DaffExternalRouterDriverMagentoModule {\n\n /**\n * Configures the package for the root injector.\n */\n static forRoot(): ModuleWithProviders<DaffExternalRouterDriverMagentoModule> {\n return {\n ngModule: DaffExternalRouterDriverMagentoModule,\n providers: [\n provideDaffExternalRouterDriver(DaffExternalRouterMagentoDriver),\n provideDaffMagentoCacheableOperation(DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME),\n ],\n };\n }\n}\n","import {\n EnvironmentProviders,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nimport { provideDaffMagentoCacheableOperation } from '@daffodil/driver/magento';\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve';\nimport { DaffExternalRouterMagentoDriver } from './magento.service';\n\n/**\n * Provides a Magento implementation of {@link DaffExternalRouterDriver}.\n */\nexport const provideDaffExternalRouterMagentoDriver = (\n): EnvironmentProviders => makeEnvironmentProviders([\n provideDaffExternalRouterDriver(DaffExternalRouterMagentoDriver),\n provideDaffMagentoCacheableOperation(DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME),\n]);\n","/*\n * Public API Surface of @daffodil/external-router/driver/magento/2.4.3\n */\n\nexport { DaffExternalRouterMagentoDriver } from './magento.service';\nexport { DaffExternalRouterDriverMagentoModule } from './magento.module';\nexport { provideDaffExternalRouterMagentoDriver } from './provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, makeEnvironmentProviders } from '@angular/core';
3
+ import { of } from 'rxjs';
4
+ import { daffUriTruncateLeadingSlash, daffUriTruncateFileExtension, daffUriTruncateLeadingPathSegments } from '@daffodil/core/routing';
5
+ import { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION, provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';
6
+
7
+ class DaffShopifyExternalRouterDriver {
8
+ resolve(url) {
9
+ const productsMatch = url.match(/^\/?products\/(?<slug>[^/]+?)(?:\.[^/.]+)?$/);
10
+ if (productsMatch && productsMatch.groups?.['slug']) {
11
+ return of({
12
+ id: daffUriTruncateFileExtension(daffUriTruncateLeadingPathSegments(url)),
13
+ url: daffUriTruncateLeadingSlash(url),
14
+ code: 200,
15
+ type: 'PRODUCT',
16
+ });
17
+ }
18
+ return of(DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);
19
+ }
20
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffShopifyExternalRouterDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
21
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffShopifyExternalRouterDriver, providedIn: 'root' }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffShopifyExternalRouterDriver, decorators: [{
24
+ type: Injectable,
25
+ args: [{
26
+ providedIn: 'root',
27
+ }]
28
+ }] });
29
+
30
+ const provideDaffExternalRouterShopifyDriver = () => [
31
+ makeEnvironmentProviders([DaffShopifyExternalRouterDriver]),
32
+ provideDaffExternalRouterDriver(DaffShopifyExternalRouterDriver),
33
+ ];
34
+
35
+ /**
36
+ * Generated bundle index. Do not edit.
37
+ */
38
+
39
+ export { DaffShopifyExternalRouterDriver, provideDaffExternalRouterShopifyDriver };
40
+ //# sourceMappingURL=daffodil-external-router-driver-shopify.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daffodil-external-router-driver-shopify.mjs","sources":["../../../libs/external-router/driver/shopify/src/shopify.service.ts","../../../libs/external-router/driver/shopify/src/provider.ts","../../../libs/external-router/driver/shopify/src/daffodil-external-router-driver-shopify.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n Observable,\n of,\n} from 'rxjs';\n\nimport {\n daffUriTruncateFileExtension,\n daffUriTruncateLeadingPathSegments,\n daffUriTruncateLeadingSlash,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport {\n DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION,\n DaffExternalRouterDriverInterface,\n} from '@daffodil/external-router/driver';\n\n@Injectable({\n providedIn:'root',\n})\nexport class DaffShopifyExternalRouterDriver implements DaffExternalRouterDriverInterface {\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n const productsMatch = url.match(/^\\/?products\\/(?<slug>[^/]+?)(?:\\.[^/.]+)?$/);\n if(productsMatch && productsMatch.groups?.['slug']) {\n return of({\n id: daffUriTruncateFileExtension(daffUriTruncateLeadingPathSegments(url)),\n url: daffUriTruncateLeadingSlash(url),\n code: 200,\n type: 'PRODUCT',\n });\n }\n\n return of(DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);\n }\n}\n","import {\n EnvironmentProviders,\n makeEnvironmentProviders,\n Provider,\n} from '@angular/core';\n\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport { DaffShopifyExternalRouterDriver } from './shopify.service';\n\nexport const provideDaffExternalRouterShopifyDriver = (): (Provider | EnvironmentProviders)[] => [\n makeEnvironmentProviders([DaffShopifyExternalRouterDriver]),\n provideDaffExternalRouterDriver(DaffShopifyExternalRouterDriver),\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAoBa,+BAA+B,CAAA;AAE1C,IAAA,OAAO,CAAC,GAAW,EAAA;QACjB,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC;QAC9E,IAAG,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;AAClD,YAAA,OAAO,EAAE,CAAC;AACR,gBAAA,EAAE,EAAE,4BAA4B,CAAC,kCAAkC,CAAC,GAAG,CAAC,CAAC;AACzE,gBAAA,GAAG,EAAE,2BAA2B,CAAC,GAAG,CAAC;AACrC,gBAAA,IAAI,EAAE,GAAG;AACT,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA,CAAC;QACJ;AAEA,QAAA,OAAO,EAAE,CAAC,yCAAyC,CAAC;IACtD;iIAdW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA/B,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cAF/B,MAAM,EAAA,CAAA,CAAA;;2FAEN,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAC,MAAM;AAClB,iBAAA;;;ACTM,MAAM,sCAAsC,GAAG,MAA2C;AAC/F,IAAA,wBAAwB,CAAC,CAAC,+BAA+B,CAAC,CAAC;IAC3D,+BAA+B,CAAC,+BAA+B,CAAC;;;ACZlE;;AAEG;;;;"}
@@ -1,11 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Inject, Injectable, NgModule, makeEnvironmentProviders } from '@angular/core';
3
3
  import { faker } from '@faker-js/faker/locale/en_US';
4
- import { of } from 'rxjs';
4
+ import { throwError, of } from 'rxjs';
5
5
  import { daffUriTruncateLeadingSlash, daffUriTruncateQueryFragment } from '@daffodil/core/routing';
6
- import { DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION, provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';
6
+ import { DaffExternalRouterNotFoundError, DaffExternalRouterClientError, DaffExternalRouterServerError } from '@daffodil/external-router';
7
7
  import { createConfigInjectionToken } from '@daffodil/core';
8
8
  import { CommonModule } from '@angular/common';
9
+ import { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';
9
10
 
10
11
  const {
11
12
  /**
@@ -33,18 +34,28 @@ class DaffExternalRouterTestingDriver {
33
34
  }
34
35
  resolve(url) {
35
36
  const truncatedUrl = daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(url));
36
- if (!this.testingConfiguration[truncatedUrl]) {
37
- return of(DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);
37
+ const configuredResolution = this.testingConfiguration[truncatedUrl];
38
+ if (!configuredResolution) {
39
+ return throwError(() => new DaffExternalRouterNotFoundError());
38
40
  }
39
- if ((typeof this.testingConfiguration[truncatedUrl]) === 'string') {
40
- return of({
41
+ const resolution = typeof configuredResolution === 'string'
42
+ ? {
41
43
  id: faker.string.uuid(),
42
44
  url: truncatedUrl,
43
- type: this.testingConfiguration[truncatedUrl],
45
+ type: configuredResolution,
44
46
  code: 200,
45
- });
47
+ }
48
+ : configuredResolution;
49
+ if (resolution.code === 404) {
50
+ return throwError(() => new DaffExternalRouterNotFoundError());
46
51
  }
47
- return of(this.testingConfiguration[truncatedUrl]);
52
+ if (resolution.code >= 400 && resolution.code < 500) {
53
+ return throwError(() => new DaffExternalRouterClientError());
54
+ }
55
+ if (resolution.code >= 500) {
56
+ return throwError(() => new DaffExternalRouterServerError());
57
+ }
58
+ return of(resolution);
48
59
  }
49
60
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterTestingDriver, deps: [{ token: DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable }); }
50
61
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: DaffExternalRouterTestingDriver, providedIn: 'root' }); }
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-external-router-driver-testing.mjs","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","../../../libs/external-router/driver/testing/src/provider.ts","../../../libs/external-router/driver/testing/src/public_api.ts","../../../libs/external-router/driver/testing/src/daffodil-external-router-driver-testing.ts"],"sourcesContent":["import { createConfigInjectionToken } from '@daffodil/core';\nimport {\n DaffExternallyResolvableUrl,\n DaffExternalRouteType,\n} 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 [url: string]: DaffExternalRouteType | DaffExternallyResolvableUrl;\n}\n\nexport const {\n /**\n * The token used by Daffodil to hold the driver's configuration.\n *\n * @docs-private\n */\n token: DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG,\n /**\n * Provider function for {@link DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG}.\n */\n provider: provideDaffExternalRouterDriverTestingConfig,\n} = createConfigInjectionToken<DaffExternalRouterDriverTestingConfig>(({}), 'DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG');\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\nimport {\n Observable,\n of,\n} from 'rxjs';\n\nimport {\n daffUriTruncateLeadingSlash,\n daffUriTruncateQueryFragment,\n} from '@daffodil/core/routing';\nimport { DaffExternallyResolvableUrl } from '@daffodil/external-router';\nimport {\n DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION,\n DaffExternalRouterDriverInterface,\n} 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 @Inject(DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG)\n private testingConfiguration: DaffExternalRouterDriverTestingConfig = {},\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n const truncatedUrl = daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(url));\n\n if (!this.testingConfiguration[truncatedUrl]) {\n return of(DAFF_EXTERNAL_ROUTER_NOT_FOUND_RESOLUTION);\n }\n\n if((typeof this.testingConfiguration[truncatedUrl]) === 'string') {\n return of({\n id: faker.string.uuid(),\n url: truncatedUrl,\n type: <string>this.testingConfiguration[truncatedUrl],\n code: 200,\n });\n }\n\n return of(<DaffExternallyResolvableUrl>this.testingConfiguration[truncatedUrl]);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverTestingConfig,\n provideDaffExternalRouterDriverTestingConfig,\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 provideDaffExternalRouterDriver(DaffExternalRouterTestingDriver),\n provideDaffExternalRouterDriverTestingConfig(config),\n ],\n };\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverTestingConfig,\n provideDaffExternalRouterDriverTestingConfig,\n} from './config';\nimport { DaffExternalRouterTestingDriver } from './testing.service';\n\n/**\n * Provides a testing implementation of {@link DaffExternalRouterDriver}\n */\nexport const provideDaffExternalRouterTestingDriver = (config:\n DaffExternalRouterDriverTestingConfig | InjectionToken<DaffExternalRouterDriverTestingConfig>,\n): EnvironmentProviders => makeEnvironmentProviders([\n provideDaffExternalRouterDriver(DaffExternalRouterTestingDriver),\n provideDaffExternalRouterDriverTestingConfig(config),\n]);\n","/*\n * Public API Surface of @daffodil/external-router/driver/testing\n */\n\nexport { DaffExternalRouterTestingDriver } from './testing.service';\nexport { DaffExternalRouterDriverTestingModule } from './testing.module';\n\nexport { DaffExternalRouterDriverTestingConfig } from './config';\nexport { provideDaffExternalRouterTestingDriver } from './provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daffodil-external-router-driver-testing.mjs","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","../../../libs/external-router/driver/testing/src/provider.ts","../../../libs/external-router/driver/testing/src/public_api.ts","../../../libs/external-router/driver/testing/src/daffodil-external-router-driver-testing.ts"],"sourcesContent":["import { createConfigInjectionToken } from '@daffodil/core';\nimport {\n DaffExternallyResolvableUrl,\n DaffExternalRouteType,\n} 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 [url: string]: DaffExternalRouteType | DaffExternallyResolvableUrl;\n}\n\nexport const {\n /**\n * The token used by Daffodil to hold the driver's configuration.\n *\n * @docs-private\n */\n token: DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG,\n /**\n * Provider function for {@link DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG}.\n */\n provider: provideDaffExternalRouterDriverTestingConfig,\n} = createConfigInjectionToken<DaffExternalRouterDriverTestingConfig>(({}), 'DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG');\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport { faker } from '@faker-js/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 {\n DaffExternallyResolvableUrl,\n DaffExternalRouterClientError,\n DaffExternalRouterNotFoundError,\n DaffExternalRouterServerError,\n} 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 @Inject(DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG)\n private testingConfiguration: DaffExternalRouterDriverTestingConfig = {},\n ) {}\n\n resolve(url: string): Observable<DaffExternallyResolvableUrl> {\n const truncatedUrl = daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(url));\n\n const configuredResolution = this.testingConfiguration[truncatedUrl];\n\n if (!configuredResolution) {\n return throwError(() => new DaffExternalRouterNotFoundError());\n }\n\n const resolution: DaffExternallyResolvableUrl = typeof configuredResolution === 'string'\n ? {\n id: faker.string.uuid(),\n url: truncatedUrl,\n type: configuredResolution,\n code: 200,\n }\n : configuredResolution;\n\n if (resolution.code === 404) {\n return throwError(() => new DaffExternalRouterNotFoundError());\n }\n\n if (resolution.code >= 400 && resolution.code < 500) {\n return throwError(() => new DaffExternalRouterClientError());\n }\n\n if (resolution.code >= 500) {\n return throwError(() => new DaffExternalRouterServerError());\n }\n\n return of(resolution);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverTestingConfig,\n provideDaffExternalRouterDriverTestingConfig,\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 provideDaffExternalRouterDriver(DaffExternalRouterTestingDriver),\n provideDaffExternalRouterDriverTestingConfig(config),\n ],\n };\n }\n}\n","import {\n EnvironmentProviders,\n InjectionToken,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nimport { provideDaffExternalRouterDriver } from '@daffodil/external-router/driver';\n\nimport {\n DaffExternalRouterDriverTestingConfig,\n provideDaffExternalRouterDriverTestingConfig,\n} from './config';\nimport { DaffExternalRouterTestingDriver } from './testing.service';\n\n/**\n * Provides a testing implementation of {@link DaffExternalRouterDriver}\n */\nexport const provideDaffExternalRouterTestingDriver = (config:\n DaffExternalRouterDriverTestingConfig | InjectionToken<DaffExternalRouterDriverTestingConfig>,\n): EnvironmentProviders => makeEnvironmentProviders([\n provideDaffExternalRouterDriver(DaffExternalRouterTestingDriver),\n provideDaffExternalRouterDriverTestingConfig(config),\n]);\n","/*\n * Public API Surface of @daffodil/external-router/driver/testing\n */\n\nexport { DaffExternalRouterTestingDriver } from './testing.service';\nexport { DaffExternalRouterDriverTestingModule } from './testing.module';\n\nexport { DaffExternalRouterDriverTestingConfig } from './config';\nexport { provideDaffExternalRouterTestingDriver } from './provider';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,53 +1,8 @@
1
1
  import { inject } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { map, tap, catchError, of } from 'rxjs';
4
- import { DAFF_EXTERNAL_ROUTER_CONFIG } from '@daffodil/external-router';
4
+ import { DaffExternalRouterPermanentRedirectError, DaffExternalRouterTemporaryRedirectError, DAFF_EXTERNAL_ROUTER_CONFIG, DaffExternalRouterNotFoundError } from '@daffodil/external-router';
5
5
  import { DaffExternalRouterDriver } from '@daffodil/external-router/driver';
6
- import { DaffInheritableError } from '@daffodil/core';
7
-
8
- /**
9
- * An error thrown when the driver encounters a 4xx error.
10
- */
11
- class DaffExternalRouterClientError extends DaffInheritableError {
12
- constructor(message) {
13
- super(message);
14
- this.code = '4xx_CLIENT_ERROR';
15
- }
16
- }
17
-
18
- /**
19
- * An error thrown when the driver determines that a given url is not resolvable.
20
- */
21
- class DaffExternalRouterNotFoundError extends DaffExternalRouterClientError {
22
- constructor(message) {
23
- super(message);
24
- this.code = '404_NOT_FOUND';
25
- }
26
- }
27
-
28
- /**
29
- * An error thrown when the driver determines that the url needs to be routed somewhere
30
- * else permanently.
31
- */
32
- class DaffExternalRouterPermanentRedirectError extends DaffInheritableError {
33
- constructor(redirectUrl, message) {
34
- super(message);
35
- this.redirectUrl = redirectUrl;
36
- this.code = '302_PERMANENT_REDIRECT';
37
- }
38
- }
39
-
40
- /**
41
- * An error thrown when the driver needs a URI to be temporarily redirected
42
- * to another location.
43
- */
44
- class DaffExternalRouterTemporaryRedirectError extends DaffInheritableError {
45
- constructor(redirectUrl, message) {
46
- super(message);
47
- this.redirectUrl = redirectUrl;
48
- this.code = 'TEMPORARY_REDIRECT';
49
- }
50
- }
51
6
 
52
7
  /**
53
8
  * Converts a UrlSegment into its complete Url.
@@ -56,35 +11,6 @@ class DaffExternalRouterTemporaryRedirectError extends DaffInheritableError {
56
11
  */
57
12
  const daffConvertToPath = (segments) => segments.map(seg => seg.path).join('/');
58
13
 
59
- /**
60
- * An error thrown when the platform performing url resolution fails.
61
- */
62
- class DaffExternalRouterServerError extends DaffInheritableError {
63
- constructor(message) {
64
- super(message);
65
- this.code = '5xx_SERVER_ERROR';
66
- }
67
- }
68
-
69
- /**
70
- * Processes resolved URLs and throws the appropriate error so that External Router
71
- * can handle routing errors.
72
- */
73
- const processErrors = (url) => {
74
- if (url.code === 404) {
75
- throw new DaffExternalRouterNotFoundError();
76
- }
77
- else if (url.code >= 400 && url.code < 500) {
78
- throw new DaffExternalRouterClientError();
79
- }
80
- else if (url.code >= 500) {
81
- throw new DaffExternalRouterServerError();
82
- }
83
- else {
84
- return url;
85
- }
86
- };
87
-
88
14
  /**
89
15
  * Processes resolvedUrls and throws the appropriate error so that External Router
90
16
  * can handle redirects.
@@ -110,7 +36,7 @@ const processRedirects = (url) => {
110
36
  const daffExternalMatcherTypeGuard = (type) => (route, segments) => {
111
37
  const router = inject(Router);
112
38
  const config = inject(DAFF_EXTERNAL_ROUTER_CONFIG);
113
- return inject(DaffExternalRouterDriver).resolve(daffConvertToPath(segments)).pipe(map(processErrors), map(processRedirects), map((r) => ({ result: r, isMatch: type === r.type })), tap((r) => {
39
+ return inject(DaffExternalRouterDriver).resolve(daffConvertToPath(segments)).pipe(map(processRedirects), map((r) => ({ result: r, isMatch: type === r.type })), tap((r) => {
114
40
  if (r.isMatch) {
115
41
  route.title = r.result.data?.title ?? route.data?.daffSeoData?.title ?? route.title;
116
42
  route.data = { ...route.data, daffSeoData: r.result.data };
@@ -130,7 +56,7 @@ const daffExternalMatcherTypeGuard = (type) => (route, segments) => {
130
56
  return of(false);
131
57
  }),
132
58
  //Otherwise something went horribly wrong and we need to bail out.
133
- catchError((error) => of(router.parseUrl(config.failedResolutionPath))), catchError(() => of(false)));
59
+ catchError(() => of(router.parseUrl(config.failedResolutionPath))), catchError(() => of(false)));
134
60
  };
135
61
 
136
62
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-external-router-routing.mjs","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/helper/convert-to-path.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/external-matcher-type.guard.ts","../../../libs/external-router/routing/src/public_api.ts","../../../libs/external-router/routing/src/daffodil-external-router-routing.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 public readonly code: string = '4xx_CLIENT_ERROR';\n\n constructor(message?: string) {\n super(message);\n }\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 public readonly code: string = '404_NOT_FOUND';\n\n constructor(message?: string) {\n super(message);\n }\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 public readonly code: string = '302_PERMANENT_REDIRECT';\n\n constructor(public redirectUrl: string, message?: string) {\n super(message);\n }\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 public readonly code: string = 'TEMPORARY_REDIRECT';\n\n constructor(public redirectUrl: string, message?: string) {\n super(message);\n }\n}\n","import { UrlSegment } from '@angular/router';\n\n/**\n * Converts a UrlSegment into its complete Url.\n *\n * @docs-private\n */\nexport const daffConvertToPath = (segments: UrlSegment[]) => segments.map(seg => seg.path).join('/');\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 public readonly code: string = '5xx_SERVER_ERROR';\n\n constructor(message?: string) {\n super(message);\n }\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 { inject } from '@angular/core';\nimport {\n Router,\n UrlSegment,\n UrlTree,\n} from '@angular/router';\nimport {\n Observable,\n catchError,\n map,\n of,\n tap,\n} from 'rxjs';\n\nimport {\n DAFF_EXTERNAL_ROUTER_CONFIG,\n DaffExternalRouterConfiguration,\n DaffRouteWithSeoData,\n} from '@daffodil/external-router';\nimport { DaffExternalRouterDriver } 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 { daffConvertToPath } from '../helper/convert-to-path';\nimport { processErrors } from '../processors/process-errors';\nimport { processRedirects } from '../processors/process-redirect';\n\n/**\n * A `canMatch` guard function that will resolve a route externally, allowing Angular to match it.\n *\n * Depending on the resolution result, the route's data will contain `daffSeoData` with supplemental search engine data\n * about the route. The data on the route is cumulative. If other data properties are set, they will be merged alongside daffSeoData.\n */\nexport const daffExternalMatcherTypeGuard = (type: string) => (route: DaffRouteWithSeoData, segments: Array<UrlSegment>): Observable<boolean | UrlTree> => {\n const router = inject(Router);\n const config: DaffExternalRouterConfiguration = inject(DAFF_EXTERNAL_ROUTER_CONFIG);\n return inject(DaffExternalRouterDriver).resolve(daffConvertToPath(segments)).pipe(\n map(processErrors),\n map(processRedirects),\n map((r) => ({ result: r, isMatch: type === r.type })),\n tap((r) => {\n if(r.isMatch) {\n route.title = r.result.data?.title ?? route.data?.daffSeoData?.title ?? route.title;\n route.data = { ...route.data, daffSeoData: r.result.data };\n }\n }),\n map((res) => res.isMatch),\n catchError(error => {\n if (\n !(error instanceof DaffExternalRouterPermanentRedirectError) &&\n !(error instanceof DaffExternalRouterTemporaryRedirectError)) {\n throw error;\n }\n\n return of(router.parseUrl(error.redirectUrl));\n }),\n // Handle \"404\"\n catchError((error) => {\n if (!(error instanceof DaffExternalRouterNotFoundError)) {\n throw error;\n }\n\n return of(false);\n }),\n //Otherwise something went horribly wrong and we need to bail out.\n catchError((error) => of(router.parseUrl(config.failedResolutionPath))),\n catchError(() => of(false)),\n );\n};\n\n\n","/*\n * Public API Surface of @daffodil/external-router/routing\n */\nexport { daffExternalMatcherTypeGuard } from './guard/external-matcher-type.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAKA;;AAEG;AACG,MAAO,6BAA8B,SAAQ,oBAAoB,CAAA;AAIrE,IAAA,WAAA,CAAY,OAAgB,EAAA;QAC1B,KAAK,CAAC,OAAO,CAAC;QAHA,IAAA,CAAA,IAAI,GAAW,kBAAkB;IAIjD;AACD;;ACXD;;AAEG;AACG,MAAO,+BAAgC,SAAQ,6BAA6B,CAAA;AAIhF,IAAA,WAAA,CAAY,OAAgB,EAAA;QAC1B,KAAK,CAAC,OAAO,CAAC;QAHA,IAAA,CAAA,IAAI,GAAW,eAAe;IAI9C;AACD;;ACTD;;;AAGG;AACG,MAAO,wCAAyC,SAAQ,oBAAoB,CAAA;IAIhF,WAAA,CAAmB,WAAmB,EAAE,OAAgB,EAAA;QACtD,KAAK,CAAC,OAAO,CAAC;QADG,IAAA,CAAA,WAAW,GAAX,WAAW;QAFd,IAAA,CAAA,IAAI,GAAW,wBAAwB;IAIvD;AACD;;ACXD;;;AAGG;AACG,MAAO,wCAAyC,SAAQ,oBAAoB,CAAA;IAIhF,WAAA,CAAmB,WAAmB,EAAE,OAAgB,EAAA;QACtD,KAAK,CAAC,OAAO,CAAC;QADG,IAAA,CAAA,WAAW,GAAX,WAAW;QAFd,IAAA,CAAA,IAAI,GAAW,oBAAoB;IAInD;AACD;;ACdD;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,QAAsB,KAAK,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;ACFpG;;AAEG;AACG,MAAO,6BAA8B,SAAQ,oBAAoB,CAAA;AAIrE,IAAA,WAAA,CAAY,OAAgB,EAAA;QAC1B,KAAK,CAAC,OAAO,CAAC;QAHA,IAAA,CAAA,IAAI,GAAW,kBAAkB;IAIjD;AACD;;ACRD;;;AAGG;AACI,MAAM,aAAa,GAAG,CAAC,GAAgC,KAAiC;AAC7F,IAAA,IAAG,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;QACnB,MAAM,IAAI,+BAA+B,EAAE;IAC7C;AAAO,SAAA,IAAG,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE;QAC3C,MAAM,IAAI,6BAA6B,EAAE;IAC3C;AAAO,SAAA,IAAG,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;QACzB,MAAM,IAAI,6BAA6B,EAAE;IAC3C;SAAO;AACL,QAAA,OAAO,GAAG;IACZ;AACF,CAAC;;AChBD;;;AAGG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAgC,KAAiC;AAChG,IAAA,IAAG,GAAG,CAAC,IAAI,KAAK,GAAG,EAAC;AAClB,QAAA,MAAM,IAAI,wCAAwC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7D;AAAO,SAAA,IAAG,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC1B,QAAA,MAAM,IAAI,wCAAwC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7D;SAAO;AACL,QAAA,OAAO,GAAG;IACZ;AACF,CAAC;;ACWD;;;;;AAKG;AACI,MAAM,4BAA4B,GAAG,CAAC,IAAY,KAAK,CAAC,KAA2B,EAAE,QAA2B,KAAmC;AACxJ,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,MAAM,GAAoC,MAAM,CAAC,2BAA2B,CAAC;IACnF,OAAO,MAAM,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC/E,GAAG,CAAC,aAAa,CAAC,EAClB,GAAG,CAAC,gBAAgB,CAAC,EACrB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EACrD,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,QAAA,IAAG,CAAC,CAAC,OAAO,EAAE;YACZ,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK;AACnF,YAAA,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;QAC5D;AACF,IAAA,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,EACzB,UAAU,CAAC,KAAK,IAAG;AACjB,QAAA,IACE,EAAE,KAAK,YAAY,wCAAwC,CAAC;AAC5D,YAAA,EAAE,KAAK,YAAY,wCAAwC,CAAC,EAAE;AAC9D,YAAA,MAAM,KAAK;QACb;QAEA,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/C,IAAA,CAAC,CAAC;;AAEF,IAAA,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,QAAA,IAAI,EAAE,KAAK,YAAY,+BAA+B,CAAC,EAAE;AACvD,YAAA,MAAM,KAAK;QACb;AAEA,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC;AAClB,IAAA,CAAC,CAAC;;AAEF,IAAA,UAAU,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,EACvE,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAC5B;AACH;;ACrEA;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"daffodil-external-router-routing.mjs","sources":["../../../libs/external-router/routing/src/helper/convert-to-path.ts","../../../libs/external-router/routing/src/processors/process-redirect.ts","../../../libs/external-router/routing/src/guard/external-matcher-type.guard.ts","../../../libs/external-router/routing/src/public_api.ts","../../../libs/external-router/routing/src/daffodil-external-router-routing.ts"],"sourcesContent":["import { UrlSegment } from '@angular/router';\n\n/**\n * Converts a UrlSegment into its complete Url.\n *\n * @docs-private\n */\nexport const daffConvertToPath = (segments: UrlSegment[]) => segments.map(seg => seg.path).join('/');\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 { inject } from '@angular/core';\nimport {\n Router,\n UrlSegment,\n UrlTree,\n} from '@angular/router';\nimport {\n Observable,\n catchError,\n map,\n of,\n tap,\n} from 'rxjs';\n\nimport {\n DAFF_EXTERNAL_ROUTER_CONFIG,\n DaffExternalRouterConfiguration,\n DaffRouteWithSeoData,\n} from '@daffodil/external-router';\nimport { DaffExternalRouterDriver } 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 { daffConvertToPath } from '../helper/convert-to-path';\nimport { processRedirects } from '../processors/process-redirect';\n\n/**\n * A `canMatch` guard function that will resolve a route externally, allowing Angular to match it.\n *\n * Depending on the resolution result, the route's data will contain `daffSeoData` with supplemental search engine data\n * about the route. The data on the route is cumulative. If other data properties are set, they will be merged alongside daffSeoData.\n */\nexport const daffExternalMatcherTypeGuard = (type: string) => (route: DaffRouteWithSeoData, segments: Array<UrlSegment>): Observable<boolean | UrlTree> => {\n const router = inject(Router);\n const config: DaffExternalRouterConfiguration = inject(DAFF_EXTERNAL_ROUTER_CONFIG);\n return inject(DaffExternalRouterDriver).resolve(daffConvertToPath(segments)).pipe(\n map(processRedirects),\n map((r) => ({ result: r, isMatch: type === r.type })),\n tap((r) => {\n if(r.isMatch) {\n route.title = r.result.data?.title ?? route.data?.daffSeoData?.title ?? route.title;\n route.data = { ...route.data, daffSeoData: r.result.data };\n }\n }),\n map((res) => res.isMatch),\n catchError(error => {\n if (\n !(error instanceof DaffExternalRouterPermanentRedirectError) &&\n !(error instanceof DaffExternalRouterTemporaryRedirectError)) {\n throw error;\n }\n\n return of(router.parseUrl(error.redirectUrl));\n }),\n // Handle \"404\"\n catchError((error) => {\n if (!(error instanceof DaffExternalRouterNotFoundError)) {\n throw error;\n }\n\n return of(false);\n }),\n //Otherwise something went horribly wrong and we need to bail out.\n catchError(() => of(router.parseUrl(config.failedResolutionPath))),\n catchError(() => of(false)),\n );\n};\n","/*\n * Public API Surface of @daffodil/external-router/routing\n */\nexport { daffExternalMatcherTypeGuard } from './guard/external-matcher-type.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEA;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,QAAsB,KAAK,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;ACFpG;;;AAGG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAgC,KAAiC;AAChG,IAAA,IAAG,GAAG,CAAC,IAAI,KAAK,GAAG,EAAC;AAClB,QAAA,MAAM,IAAI,wCAAwC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7D;AAAO,SAAA,IAAG,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC1B,QAAA,MAAM,IAAI,wCAAwC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7D;SAAO;AACL,QAAA,OAAO,GAAG;IACZ;AACF,CAAC;;ACUD;;;;;AAKG;AACI,MAAM,4BAA4B,GAAG,CAAC,IAAY,KAAK,CAAC,KAA2B,EAAE,QAA2B,KAAmC;AACxJ,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,MAAM,GAAoC,MAAM,CAAC,2BAA2B,CAAC;IACnF,OAAO,MAAM,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC/E,GAAG,CAAC,gBAAgB,CAAC,EACrB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EACrD,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,QAAA,IAAG,CAAC,CAAC,OAAO,EAAE;YACZ,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK;AACnF,YAAA,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;QAC5D;AACF,IAAA,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,EACzB,UAAU,CAAC,KAAK,IAAG;AACjB,QAAA,IACE,EAAE,KAAK,YAAY,wCAAwC,CAAC;AAC5D,YAAA,EAAE,KAAK,YAAY,wCAAwC,CAAC,EAAE;AAC9D,YAAA,MAAM,KAAK;QACb;QAEA,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/C,IAAA,CAAC,CAAC;;AAEF,IAAA,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,QAAA,IAAI,EAAE,KAAK,YAAY,+BAA+B,CAAC,EAAE;AACvD,YAAA,MAAM,KAAK;QACb;AAEA,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC;AAClB,IAAA,CAAC,CAAC;;AAEF,IAAA,UAAU,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAClE,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAC5B;AACH;;ACnEA;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1,4 +1,4 @@
1
- import { createConfigInjectionToken } from '@daffodil/core';
1
+ import { createConfigInjectionToken, DaffInheritableError } from '@daffodil/core';
2
2
  import { makeEnvironmentProviders } from '@angular/core';
3
3
 
4
4
  const daffExternalRouterConfigurationDefault = {
@@ -19,6 +19,58 @@ const provideExternalRouter = (config = {}) => makeEnvironmentProviders([
19
19
  provideDaffExternalRouterConfig(config),
20
20
  ]);
21
21
 
22
+ /**
23
+ * Represents a 4xx client error encountered during external URL resolution.
24
+ */
25
+ class DaffExternalRouterClientError extends DaffInheritableError {
26
+ constructor(message) {
27
+ super(message);
28
+ this.code = '4xx_CLIENT_ERROR';
29
+ }
30
+ }
31
+
32
+ /**
33
+ * Indicates that a URL could not be resolved by an external router driver.
34
+ */
35
+ class DaffExternalRouterNotFoundError extends DaffExternalRouterClientError {
36
+ constructor(message) {
37
+ super(message);
38
+ this.code = '404_NOT_FOUND';
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Signals that the resolved URL should permanently redirect to another location.
44
+ */
45
+ class DaffExternalRouterPermanentRedirectError extends DaffInheritableError {
46
+ constructor(redirectUrl, message) {
47
+ super(message);
48
+ this.redirectUrl = redirectUrl;
49
+ this.code = '302_PERMANENT_REDIRECT';
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Indicates that the external routing platform experienced a server-side failure.
55
+ */
56
+ class DaffExternalRouterServerError extends DaffInheritableError {
57
+ constructor(message) {
58
+ super(message);
59
+ this.code = '5xx_SERVER_ERROR';
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Signals that the resolved URL should temporarily redirect to another location.
65
+ */
66
+ class DaffExternalRouterTemporaryRedirectError extends DaffInheritableError {
67
+ constructor(redirectUrl, message) {
68
+ super(message);
69
+ this.redirectUrl = redirectUrl;
70
+ this.code = 'TEMPORARY_REDIRECT';
71
+ }
72
+ }
73
+
22
74
  /*
23
75
  * Public API Surface of @daffodil/external-router
24
76
  */
@@ -27,5 +79,5 @@ const provideExternalRouter = (config = {}) => makeEnvironmentProviders([
27
79
  * Generated bundle index. Do not edit.
28
80
  */
29
81
 
30
- export { DAFF_EXTERNAL_ROUTER_CONFIG, provideExternalRouter };
82
+ export { DAFF_EXTERNAL_ROUTER_CONFIG, DaffExternalRouterClientError, DaffExternalRouterNotFoundError, DaffExternalRouterPermanentRedirectError, DaffExternalRouterServerError, DaffExternalRouterTemporaryRedirectError, provideExternalRouter };
31
83
  //# sourceMappingURL=daffodil-external-router.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-external-router.mjs","sources":["../../../libs/external-router/src/config.ts","../../../libs/external-router/src/provide-external-router.ts","../../../libs/external-router/src/public_api.ts","../../../libs/external-router/src/daffodil-external-router.ts"],"sourcesContent":["import { createConfigInjectionToken } from '@daffodil/core';\n\nexport const daffExternalRouterConfigurationDefault: DaffExternalRouterConfiguration = {\n failedResolutionPath: '/',\n};\n\nexport const {\n /**\n * The token holding the runtime configuration for the behavior of the\n * `@daffodil/external-router` package.\n */\n token: DAFF_EXTERNAL_ROUTER_CONFIG,\n /**\n * Provider function for {@link DAFF_EXTERNAL_ROUTER_CONFIG}.\n */\n provider: provideDaffExternalRouterConfig,\n} = createConfigInjectionToken<DaffExternalRouterConfiguration>(daffExternalRouterConfigurationDefault, 'DAFF_EXTERNAL_ROUTER_CONFIG');\n\n/**\n * The configuration object for the external router package.\n */\nexport interface DaffExternalRouterConfiguration {\n /**\n * The path to redirect to when external route resolution fails.\n */\n failedResolutionPath: string;\n}\n","import {\n EnvironmentProviders,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nimport {\n DaffExternalRouterConfiguration,\n provideDaffExternalRouterConfig,\n} from './config';\n\nexport const provideExternalRouter = (config: Partial<DaffExternalRouterConfiguration> = {}): EnvironmentProviders => makeEnvironmentProviders([\n provideDaffExternalRouterConfig(config),\n]);\n","/*\n * Public API Surface of @daffodil/external-router\n */\n\nexport {\n DAFF_EXTERNAL_ROUTER_CONFIG,\n DaffExternalRouterConfiguration,\n} from './config';\n\nexport * from './model/public_api';\n\nexport { provideExternalRouter } from './provide-external-router';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEO,MAAM,sCAAsC,GAAoC;AACrF,IAAA,oBAAoB,EAAE,GAAG;CAC1B;AAEM,MAAM;AACX;;;AAGG;AACH,KAAK,EAAE,2BAA2B;AAClC;;AAEG;AACH,QAAQ,EAAE,+BAA+B,GAC1C,GAAG,0BAA0B,CAAkC,sCAAsC,EAAE,6BAA6B;;ACN9H,MAAM,qBAAqB,GAAG,CAAC,MAAA,GAAmD,EAAE,KAA2B,wBAAwB,CAAC;IAC7I,+BAA+B,CAAC,MAAM,CAAC;AACxC,CAAA;;ACZD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"daffodil-external-router.mjs","sources":["../../../libs/external-router/src/config.ts","../../../libs/external-router/src/provide-external-router.ts","../../../libs/external-router/src/errors/client-error.ts","../../../libs/external-router/src/errors/not-found-error.ts","../../../libs/external-router/src/errors/permanent-redirect.ts","../../../libs/external-router/src/errors/server-error.ts","../../../libs/external-router/src/errors/temporary-redirect.ts","../../../libs/external-router/src/public_api.ts","../../../libs/external-router/src/daffodil-external-router.ts"],"sourcesContent":["import { createConfigInjectionToken } from '@daffodil/core';\n\nexport const daffExternalRouterConfigurationDefault: DaffExternalRouterConfiguration = {\n failedResolutionPath: '/',\n};\n\nexport const {\n /**\n * The token holding the runtime configuration for the behavior of the\n * `@daffodil/external-router` package.\n */\n token: DAFF_EXTERNAL_ROUTER_CONFIG,\n /**\n * Provider function for {@link DAFF_EXTERNAL_ROUTER_CONFIG}.\n */\n provider: provideDaffExternalRouterConfig,\n} = createConfigInjectionToken<DaffExternalRouterConfiguration>(daffExternalRouterConfigurationDefault, 'DAFF_EXTERNAL_ROUTER_CONFIG');\n\n/**\n * The configuration object for the external router package.\n */\nexport interface DaffExternalRouterConfiguration {\n /**\n * The path to redirect to when external route resolution fails.\n */\n failedResolutionPath: string;\n}\n","import {\n EnvironmentProviders,\n makeEnvironmentProviders,\n} from '@angular/core';\n\nimport {\n DaffExternalRouterConfiguration,\n provideDaffExternalRouterConfig,\n} from './config';\n\nexport const provideExternalRouter = (config: Partial<DaffExternalRouterConfiguration> = {}): EnvironmentProviders => makeEnvironmentProviders([\n provideDaffExternalRouterConfig(config),\n]);\n","import {\n DaffError,\n DaffInheritableError,\n} from '@daffodil/core';\n\n/**\n * Represents a 4xx client error encountered during external URL resolution.\n */\nexport class DaffExternalRouterClientError extends DaffInheritableError\n implements DaffError {\n readonly code: string = '4xx_CLIENT_ERROR';\n\n constructor(message?: string) {\n super(message);\n }\n}\n","import { DaffError } from '@daffodil/core';\n\nimport { DaffExternalRouterClientError } from './client-error';\n\n/**\n * Indicates that a URL could not be resolved by an external router driver.\n */\nexport class DaffExternalRouterNotFoundError extends DaffExternalRouterClientError\n implements DaffError {\n readonly code = '404_NOT_FOUND';\n\n constructor(message?: string) {\n super(message);\n }\n}\n","import {\n DaffError,\n DaffInheritableError,\n} from '@daffodil/core';\n\n/**\n * Signals that the resolved URL should permanently redirect to another location.\n */\nexport class DaffExternalRouterPermanentRedirectError extends DaffInheritableError\n implements DaffError {\n readonly code: string = '302_PERMANENT_REDIRECT';\n\n constructor(readonly redirectUrl: string, message?: string) {\n super(message);\n }\n}\n","import {\n DaffError,\n DaffInheritableError,\n} from '@daffodil/core';\n\n/**\n * Indicates that the external routing platform experienced a server-side failure.\n */\nexport class DaffExternalRouterServerError extends DaffInheritableError\n implements DaffError {\n readonly code: string = '5xx_SERVER_ERROR';\n\n constructor(message?: string) {\n super(message);\n }\n}\n","import {\n DaffError,\n DaffInheritableError,\n} from '@daffodil/core';\n\n/**\n * Signals that the resolved URL should temporarily redirect to another location.\n */\nexport class DaffExternalRouterTemporaryRedirectError extends DaffInheritableError\n implements DaffError {\n readonly code: string = 'TEMPORARY_REDIRECT';\n\n constructor(readonly redirectUrl: string, message?: string) {\n super(message);\n }\n}\n","/*\n * Public API Surface of @daffodil/external-router\n */\n\nexport {\n DAFF_EXTERNAL_ROUTER_CONFIG,\n DaffExternalRouterConfiguration,\n} from './config';\n\nexport * from './model/public_api';\n\nexport { provideExternalRouter } from './provide-external-router';\nexport * from './errors';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAEO,MAAM,sCAAsC,GAAoC;AACrF,IAAA,oBAAoB,EAAE,GAAG;CAC1B;AAEM,MAAM;AACX;;;AAGG;AACH,KAAK,EAAE,2BAA2B;AAClC;;AAEG;AACH,QAAQ,EAAE,+BAA+B,GAC1C,GAAG,0BAA0B,CAAkC,sCAAsC,EAAE,6BAA6B;;ACN9H,MAAM,qBAAqB,GAAG,CAAC,MAAA,GAAmD,EAAE,KAA2B,wBAAwB,CAAC;IAC7I,+BAA+B,CAAC,MAAM,CAAC;AACxC,CAAA;;ACPD;;AAEG;AACG,MAAO,6BAA8B,SAAQ,oBAAoB,CAAA;AAIrE,IAAA,WAAA,CAAY,OAAgB,EAAA;QAC1B,KAAK,CAAC,OAAO,CAAC;QAHP,IAAA,CAAA,IAAI,GAAW,kBAAkB;IAI1C;AACD;;ACXD;;AAEG;AACG,MAAO,+BAAgC,SAAQ,6BAA6B,CAAA;AAIhF,IAAA,WAAA,CAAY,OAAgB,EAAA;QAC1B,KAAK,CAAC,OAAO,CAAC;QAHP,IAAA,CAAA,IAAI,GAAG,eAAe;IAI/B;AACD;;ACTD;;AAEG;AACG,MAAO,wCAAyC,SAAQ,oBAAoB,CAAA;IAIhF,WAAA,CAAqB,WAAmB,EAAE,OAAgB,EAAA;QACxD,KAAK,CAAC,OAAO,CAAC;QADK,IAAA,CAAA,WAAW,GAAX,WAAW;QAFvB,IAAA,CAAA,IAAI,GAAW,wBAAwB;IAIhD;AACD;;ACVD;;AAEG;AACG,MAAO,6BAA8B,SAAQ,oBAAoB,CAAA;AAIrE,IAAA,WAAA,CAAY,OAAgB,EAAA;QAC1B,KAAK,CAAC,OAAO,CAAC;QAHP,IAAA,CAAA,IAAI,GAAW,kBAAkB;IAI1C;AACD;;ACVD;;AAEG;AACG,MAAO,wCAAyC,SAAQ,oBAAoB,CAAA;IAIhF,WAAA,CAAqB,WAAmB,EAAE,OAAgB,EAAA;QACxD,KAAK,CAAC,OAAO,CAAC;QADK,IAAA,CAAA,WAAW,GAAX,WAAW;QAFvB,IAAA,CAAA,IAAI,GAAW,oBAAoB;IAI5C;AACD;;ACfD;;AAEG;;ACFH;;AAEG;;;;"}
package/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { EnvironmentProviders } from '@angular/core';
3
- import { DaffIdentifiable } from '@daffodil/core';
3
+ import { DaffIdentifiable, DaffInheritableError, DaffError } from '@daffodil/core';
4
4
  import { Route } from '@angular/router';
5
5
 
6
6
  declare const DAFF_EXTERNAL_ROUTER_CONFIG: _angular_core.InjectionToken<DaffExternalRouterConfiguration>;
@@ -92,5 +92,47 @@ type DaffRouteWithSeoData = Route & {
92
92
 
93
93
  declare const provideExternalRouter: (config?: Partial<DaffExternalRouterConfiguration>) => EnvironmentProviders;
94
94
 
95
- export { DAFF_EXTERNAL_ROUTER_CONFIG, provideExternalRouter };
95
+ /**
96
+ * Represents a 4xx client error encountered during external URL resolution.
97
+ */
98
+ declare class DaffExternalRouterClientError extends DaffInheritableError implements DaffError {
99
+ readonly code: string;
100
+ constructor(message?: string);
101
+ }
102
+
103
+ /**
104
+ * Indicates that a URL could not be resolved by an external router driver.
105
+ */
106
+ declare class DaffExternalRouterNotFoundError extends DaffExternalRouterClientError implements DaffError {
107
+ readonly code = "404_NOT_FOUND";
108
+ constructor(message?: string);
109
+ }
110
+
111
+ /**
112
+ * Signals that the resolved URL should permanently redirect to another location.
113
+ */
114
+ declare class DaffExternalRouterPermanentRedirectError extends DaffInheritableError implements DaffError {
115
+ readonly redirectUrl: string;
116
+ readonly code: string;
117
+ constructor(redirectUrl: string, message?: string);
118
+ }
119
+
120
+ /**
121
+ * Indicates that the external routing platform experienced a server-side failure.
122
+ */
123
+ declare class DaffExternalRouterServerError extends DaffInheritableError implements DaffError {
124
+ readonly code: string;
125
+ constructor(message?: string);
126
+ }
127
+
128
+ /**
129
+ * Signals that the resolved URL should temporarily redirect to another location.
130
+ */
131
+ declare class DaffExternalRouterTemporaryRedirectError extends DaffInheritableError implements DaffError {
132
+ readonly redirectUrl: string;
133
+ readonly code: string;
134
+ constructor(redirectUrl: string, message?: string);
135
+ }
136
+
137
+ export { DAFF_EXTERNAL_ROUTER_CONFIG, DaffExternalRouterClientError, DaffExternalRouterNotFoundError, DaffExternalRouterPermanentRedirectError, DaffExternalRouterServerError, DaffExternalRouterTemporaryRedirectError, provideExternalRouter };
96
138
  export type { DaffExternalRouteType, DaffExternalRouterConfiguration, DaffExternallyResolvableUrl, DaffRouteData, DaffRouteWithSeoData };
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@daffodil/external-router","nx":{"targets":{"build":{"outputs":["{workspaceRoot}/dist/external-router"]}}},"version":"0.89.0","description":"A platform-agnostic package that connects the @angular/router with an external routing service (e.g. an API), allowing for runtime route resolution.","repository":{"type":"git","url":"https://github.com/graycoreio/daffodil"},"author":"Graycore LLC","license":"MIT","bugs":{"url":"https://github.com/graycoreio/daffodil/issues"},"homepage":"https://github.com/graycoreio/daffodil","peerDependencies":{"@angular/common":"^20.0.0","@angular/core":"^20.0.0","@angular/router":"^20.0.0","@daffodil/core":"0.89.0","rxjs":"7.8.1"},"optionalDependencies":{"apollo-angular":"^11.0.0","@daffodil/driver":"0.89.0"},"module":"fesm2022/daffodil-external-router.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/daffodil-external-router.mjs"},"./driver":{"types":"./driver/index.d.ts","default":"./fesm2022/daffodil-external-router-driver.mjs"},"./routing":{"types":"./routing/index.d.ts","default":"./fesm2022/daffodil-external-router-routing.mjs"},"./driver/in-memory":{"types":"./driver/in-memory/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-in-memory.mjs"},"./driver/magento":{"types":"./driver/magento/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-magento.mjs"},"./driver/testing":{"types":"./driver/testing/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-testing.mjs"},"./driver/magento/2.4.1":{"types":"./driver/magento/2.4.1/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-magento-2.4.1.mjs"},"./driver/magento/2.4.2":{"types":"./driver/magento/2.4.2/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-magento-2.4.2.mjs"},"./driver/magento/2.4.3":{"types":"./driver/magento/2.4.3/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-magento-2.4.3.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"}}
1
+ {"name":"@daffodil/external-router","nx":{"targets":{"build":{"outputs":["{workspaceRoot}/dist/external-router"]}}},"version":"0.91.0","description":"A platform-agnostic package that connects the @angular/router with an external routing service (e.g. an API), allowing for runtime route resolution.","repository":{"type":"git","url":"https://github.com/graycoreio/daffodil"},"author":"Graycore LLC","license":"MIT","bugs":{"url":"https://github.com/graycoreio/daffodil/issues"},"homepage":"https://github.com/graycoreio/daffodil","peerDependencies":{"@angular/common":"^20.0.0","@angular/core":"^20.0.0","@angular/router":"^20.0.0","@daffodil/core":"0.91.0","rxjs":"^7.0.0"},"optionalDependencies":{"apollo-angular":"^11.0.0","@daffodil/driver":"0.91.0"},"module":"fesm2022/daffodil-external-router.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","default":"./fesm2022/daffodil-external-router.mjs"},"./driver":{"types":"./driver/index.d.ts","default":"./fesm2022/daffodil-external-router-driver.mjs"},"./routing":{"types":"./routing/index.d.ts","default":"./fesm2022/daffodil-external-router-routing.mjs"},"./driver/in-memory":{"types":"./driver/in-memory/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-in-memory.mjs"},"./driver/magento":{"types":"./driver/magento/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-magento.mjs"},"./driver/shopify":{"types":"./driver/shopify/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-shopify.mjs"},"./driver/testing":{"types":"./driver/testing/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-testing.mjs"},"./driver/magento/2.4.1":{"types":"./driver/magento/2.4.1/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-magento-2.4.1.mjs"},"./driver/magento/2.4.2":{"types":"./driver/magento/2.4.2/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-magento-2.4.2.mjs"},"./driver/magento/2.4.3":{"types":"./driver/magento/2.4.3/index.d.ts","default":"./fesm2022/daffodil-external-router-driver-magento-2.4.3.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.6.2"}}