@daffodil/external-router 0.39.12 → 0.41.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.
Files changed (201) hide show
  1. package/daffodil-external-router.d.ts +1 -1
  2. package/driver/daffodil-external-router-driver.d.ts +1 -0
  3. package/driver/in-memory/daffodil-external-router-driver-in-memory.d.ts +1 -1
  4. package/driver/in-memory/in-memory.module.d.ts +5 -0
  5. package/driver/in-memory/in-memory.service.d.ts +3 -0
  6. package/driver/in-memory/package.json +5 -6
  7. package/driver/magento/2.4.1/daffodil-external-router-driver-magento-2.4.1.d.ts +1 -1
  8. package/driver/magento/2.4.1/graphql/queries/resolve-url-v2.4.1.d.ts +1 -1
  9. package/driver/magento/2.4.1/magento.module.d.ts +5 -0
  10. package/driver/magento/2.4.1/magento.service.d.ts +3 -0
  11. package/driver/magento/2.4.1/package.json +5 -6
  12. package/driver/magento/2.4.2/daffodil-external-router-driver-magento-2.4.2.d.ts +1 -1
  13. package/driver/magento/2.4.2/graphql/queries/resolve-url-v2.4.2.d.ts +1 -1
  14. package/driver/magento/2.4.2/magento.module.d.ts +5 -0
  15. package/driver/magento/2.4.2/magento.service.d.ts +3 -0
  16. package/driver/magento/2.4.2/package.json +5 -6
  17. package/driver/magento/daffodil-external-router-driver-magento.d.ts +1 -0
  18. package/driver/magento/package.json +5 -6
  19. package/driver/package.json +5 -6
  20. package/driver/testing/daffodil-external-router-driver-testing.d.ts +1 -1
  21. package/driver/testing/package.json +5 -6
  22. package/driver/testing/testing.module.d.ts +5 -0
  23. package/driver/testing/testing.service.d.ts +3 -0
  24. package/{esm2015/config.js → esm2020/config.mjs} +0 -0
  25. package/esm2020/daffodil-external-router.mjs +5 -0
  26. package/{esm2015/driver/daffodil-external-router-driver.js → esm2020/driver/daffodil-external-router-driver.mjs} +0 -0
  27. package/esm2020/driver/in-memory/config.mjs +15 -0
  28. package/{esm2015/driver/in-memory/daffodil-external-router-driver-in-memory.js → esm2020/driver/in-memory/daffodil-external-router-driver-in-memory.mjs} +1 -2
  29. package/esm2020/driver/in-memory/in-memory.module.mjs +41 -0
  30. package/esm2020/driver/in-memory/in-memory.service.mjs +39 -0
  31. package/{esm2015/driver/in-memory/index.js → esm2020/driver/in-memory/index.mjs} +0 -0
  32. package/{esm2015/driver/in-memory/public_api.js → esm2020/driver/in-memory/public_api.mjs} +0 -0
  33. package/{esm2015/driver/index.js → esm2020/driver/index.mjs} +0 -0
  34. package/{esm2015/driver/interfaces/external-router-driver.interface.js → esm2020/driver/interfaces/external-router-driver.interface.mjs} +0 -0
  35. package/esm2020/driver/magento/2.4.1/daffodil-external-router-driver-magento-2.4.1.mjs +5 -0
  36. package/{esm2015/driver/magento/2.4.1/graphql/queries/resolve-url-v2.4.1.js → esm2020/driver/magento/2.4.1/graphql/queries/resolve-url-v2.4.1.mjs} +0 -0
  37. package/{esm2015/driver/magento/2.4.1/index.js → esm2020/driver/magento/2.4.1/index.mjs} +0 -0
  38. package/esm2020/driver/magento/2.4.1/magento.module.mjs +55 -0
  39. package/esm2020/driver/magento/2.4.1/magento.service.mjs +38 -0
  40. package/{esm2015/driver/magento/2.4.1/public_api.js → esm2020/driver/magento/2.4.1/public_api.mjs} +0 -0
  41. package/esm2020/driver/magento/2.4.1/transforms/resolution-to-resolvable-url.mjs +10 -0
  42. package/esm2020/driver/magento/2.4.2/daffodil-external-router-driver-magento-2.4.2.mjs +5 -0
  43. package/{esm2015/driver/magento/2.4.2/graphql/queries/resolve-url-v2.4.2.js → esm2020/driver/magento/2.4.2/graphql/queries/resolve-url-v2.4.2.mjs} +0 -0
  44. package/{esm2015/driver/magento/2.4.2/index.js → esm2020/driver/magento/2.4.2/index.mjs} +0 -0
  45. package/esm2020/driver/magento/2.4.2/magento.module.mjs +55 -0
  46. package/esm2020/driver/magento/2.4.2/magento.service.mjs +37 -0
  47. package/{esm2015/driver/magento/2.4.2/public_api.js → esm2020/driver/magento/2.4.2/public_api.mjs} +0 -0
  48. package/{esm2015/driver/magento/2.4.2/transforms/resolution-to-resolvable-url.js → esm2020/driver/magento/2.4.2/transforms/resolution-to-resolvable-url.mjs} +0 -0
  49. package/{esm2015/driver/magento/daffodil-external-router-driver-magento.js → esm2020/driver/magento/daffodil-external-router-driver-magento.mjs} +0 -0
  50. package/{esm2015/driver/magento/index.js → esm2020/driver/magento/index.mjs} +0 -0
  51. package/{esm2015/driver/magento/model/public_api.js → esm2020/driver/magento/model/public_api.mjs} +0 -0
  52. package/{esm2015/driver/magento/model/resolution-types.js → esm2020/driver/magento/model/resolution-types.mjs} +0 -0
  53. package/{esm2015/driver/magento/model/url-resolver-response.js → esm2020/driver/magento/model/url-resolver-response.mjs} +0 -0
  54. package/{esm2015/driver/magento/model/url-resolver.js → esm2020/driver/magento/model/url-resolver.mjs} +0 -0
  55. package/{esm2015/driver/magento/public_api.js → esm2020/driver/magento/public_api.mjs} +0 -0
  56. package/{esm2015/driver/magento/transforms/public_api.js → esm2020/driver/magento/transforms/public_api.mjs} +0 -0
  57. package/{esm2015/driver/magento/transforms/redirect-to-http.js → esm2020/driver/magento/transforms/redirect-to-http.mjs} +0 -0
  58. package/{esm2015/driver/not-found-resolution.js → esm2020/driver/not-found-resolution.mjs} +0 -0
  59. package/{esm2015/driver/public_api.js → esm2020/driver/public_api.mjs} +0 -0
  60. package/{esm2015/driver/testing/config.js → esm2020/driver/testing/config.mjs} +0 -0
  61. package/esm2020/driver/testing/daffodil-external-router-driver-testing.mjs +5 -0
  62. package/{esm2015/driver/testing/index.js → esm2020/driver/testing/index.mjs} +0 -0
  63. package/{esm2015/driver/testing/public_api.js → esm2020/driver/testing/public_api.mjs} +0 -0
  64. package/esm2020/driver/testing/testing.module.mjs +38 -0
  65. package/esm2020/driver/testing/testing.service.mjs +45 -0
  66. package/{esm2015/errors/no-wildcard.js → esm2020/errors/no-wildcard.mjs} +0 -0
  67. package/{esm2015/errors/unknown-type.js → esm2020/errors/unknown-type.mjs} +0 -0
  68. package/esm2020/external-router.module.mjs +31 -0
  69. package/{esm2015/model/insertion-strategy.type.js → esm2020/model/insertion-strategy.type.mjs} +0 -0
  70. package/{esm2015/model/public_api.js → esm2020/model/public_api.mjs} +0 -0
  71. package/{esm2015/model/resolvable-route.js → esm2020/model/resolvable-route.mjs} +0 -0
  72. package/{esm2015/model/route-info.js → esm2020/model/route-info.mjs} +0 -0
  73. package/{esm2015/model/route-type.js → esm2020/model/route-type.mjs} +0 -0
  74. package/{esm2015/model/route-with-data-path.js → esm2020/model/route-with-data-path.mjs} +0 -0
  75. package/{esm2015/model/route-without-path.js → esm2020/model/route-without-path.mjs} +0 -0
  76. package/{esm2015/model/type-route-pair.js → esm2020/model/type-route-pair.mjs} +0 -0
  77. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  78. package/esm2020/router/router.service.mjs +43 -0
  79. package/esm2020/router/strategies/insert-data-path.mjs +81 -0
  80. package/{esm2015/router/strategies/insert-route-before-wildcard.js → esm2020/router/strategies/insert-route-before-wildcard.mjs} +0 -0
  81. package/esm2020/router/url-matcher/data-path-matcher.mjs +31 -0
  82. package/{esm2015/routing/daffodil-external-router-routing.js → esm2020/routing/daffodil-external-router-routing.mjs} +0 -0
  83. package/{esm2015/routing/errors/client-error.js → esm2020/routing/errors/client-error.mjs} +0 -0
  84. package/{esm2015/routing/errors/not-found-error.js → esm2020/routing/errors/not-found-error.mjs} +0 -0
  85. package/{esm2015/routing/errors/permanent-redirect.js → esm2020/routing/errors/permanent-redirect.mjs} +0 -0
  86. package/{esm2015/routing/errors/server-error.js → esm2020/routing/errors/server-error.mjs} +0 -0
  87. package/{esm2015/routing/errors/temporary-redirect.js → esm2020/routing/errors/temporary-redirect.mjs} +0 -0
  88. package/esm2020/routing/guard/existence.guard.mjs +77 -0
  89. package/{esm2015/routing/index.js → esm2020/routing/index.mjs} +0 -0
  90. package/{esm2015/routing/processors/process-errors.js → esm2020/routing/processors/process-errors.mjs} +0 -0
  91. package/{esm2015/routing/processors/process-redirect.js → esm2020/routing/processors/process-redirect.mjs} +0 -0
  92. package/{esm2015/routing/public_api.js → esm2020/routing/public_api.mjs} +0 -0
  93. package/{esm2015/token/type-resolvable-routes.token.js → esm2020/token/type-resolvable-routes.token.mjs} +0 -0
  94. package/esm2020/transform/resolved-route-to-route.mjs +24 -0
  95. package/external-router.module.d.ts +5 -0
  96. package/fesm2015/{daffodil-external-router-driver-in-memory.js → daffodil-external-router-driver-in-memory.mjs} +28 -21
  97. package/fesm2015/daffodil-external-router-driver-in-memory.mjs.map +1 -0
  98. package/fesm2015/{daffodil-external-router-driver-magento-2.4.1.js → daffodil-external-router-driver-magento-2.4.1.mjs} +24 -20
  99. package/fesm2015/daffodil-external-router-driver-magento-2.4.1.mjs.map +1 -0
  100. package/fesm2015/{daffodil-external-router-driver-magento-2.4.2.js → daffodil-external-router-driver-magento-2.4.2.mjs} +24 -20
  101. package/fesm2015/daffodil-external-router-driver-magento-2.4.2.mjs.map +1 -0
  102. package/fesm2015/{daffodil-external-router-driver-magento.js → daffodil-external-router-driver-magento.mjs} +1 -1
  103. package/fesm2015/daffodil-external-router-driver-magento.mjs.map +1 -0
  104. package/fesm2015/daffodil-external-router-driver-testing.mjs +101 -0
  105. package/fesm2015/daffodil-external-router-driver-testing.mjs.map +1 -0
  106. package/fesm2015/{daffodil-external-router-driver.js → daffodil-external-router-driver.mjs} +1 -1
  107. package/fesm2015/daffodil-external-router-driver.mjs.map +1 -0
  108. package/fesm2015/daffodil-external-router-routing.mjs +173 -0
  109. package/fesm2015/daffodil-external-router-routing.mjs.map +1 -0
  110. package/fesm2015/{daffodil-external-router.js → daffodil-external-router.mjs} +28 -25
  111. package/fesm2015/daffodil-external-router.mjs.map +1 -0
  112. package/fesm2020/daffodil-external-router-driver-in-memory.mjs +98 -0
  113. package/fesm2020/daffodil-external-router-driver-in-memory.mjs.map +1 -0
  114. package/fesm2020/daffodil-external-router-driver-magento-2.4.1.mjs +122 -0
  115. package/fesm2020/daffodil-external-router-driver-magento-2.4.1.mjs.map +1 -0
  116. package/fesm2020/daffodil-external-router-driver-magento-2.4.2.mjs +122 -0
  117. package/fesm2020/daffodil-external-router-driver-magento-2.4.2.mjs.map +1 -0
  118. package/fesm2020/daffodil-external-router-driver-magento.mjs +22 -0
  119. package/fesm2020/daffodil-external-router-driver-magento.mjs.map +1 -0
  120. package/fesm2020/daffodil-external-router-driver-testing.mjs +99 -0
  121. package/fesm2020/daffodil-external-router-driver-testing.mjs.map +1 -0
  122. package/fesm2020/daffodil-external-router-driver.mjs +30 -0
  123. package/fesm2020/daffodil-external-router-driver.mjs.map +1 -0
  124. package/{fesm2015/daffodil-external-router-routing.js → fesm2020/daffodil-external-router-routing.mjs} +21 -19
  125. package/fesm2020/daffodil-external-router-routing.mjs.map +1 -0
  126. package/fesm2020/daffodil-external-router.mjs +291 -0
  127. package/fesm2020/daffodil-external-router.mjs.map +1 -0
  128. package/package.json +83 -15
  129. package/router/router.service.d.ts +3 -0
  130. package/routing/daffodil-external-router-routing.d.ts +1 -0
  131. package/routing/guard/existence.guard.d.ts +3 -0
  132. package/routing/package.json +5 -6
  133. package/bundles/daffodil-external-router-driver-in-memory.umd.js +0 -100
  134. package/bundles/daffodil-external-router-driver-in-memory.umd.js.map +0 -1
  135. package/bundles/daffodil-external-router-driver-in-memory.umd.min.js +0 -2
  136. package/bundles/daffodil-external-router-driver-in-memory.umd.min.js.map +0 -1
  137. package/bundles/daffodil-external-router-driver-magento-2.4.1.umd.js +0 -438
  138. package/bundles/daffodil-external-router-driver-magento-2.4.1.umd.js.map +0 -1
  139. package/bundles/daffodil-external-router-driver-magento-2.4.1.umd.min.js +0 -16
  140. package/bundles/daffodil-external-router-driver-magento-2.4.1.umd.min.js.map +0 -1
  141. package/bundles/daffodil-external-router-driver-magento-2.4.2.umd.js +0 -435
  142. package/bundles/daffodil-external-router-driver-magento-2.4.2.umd.js.map +0 -1
  143. package/bundles/daffodil-external-router-driver-magento-2.4.2.umd.min.js +0 -16
  144. package/bundles/daffodil-external-router-driver-magento-2.4.2.umd.min.js.map +0 -1
  145. package/bundles/daffodil-external-router-driver-magento.umd.js +0 -31
  146. package/bundles/daffodil-external-router-driver-magento.umd.js.map +0 -1
  147. package/bundles/daffodil-external-router-driver-magento.umd.min.js +0 -2
  148. package/bundles/daffodil-external-router-driver-magento.umd.min.js.map +0 -1
  149. package/bundles/daffodil-external-router-driver-testing.umd.js +0 -101
  150. package/bundles/daffodil-external-router-driver-testing.umd.js.map +0 -1
  151. package/bundles/daffodil-external-router-driver-testing.umd.min.js +0 -2
  152. package/bundles/daffodil-external-router-driver-testing.umd.min.js.map +0 -1
  153. package/bundles/daffodil-external-router-driver.umd.js +0 -39
  154. package/bundles/daffodil-external-router-driver.umd.js.map +0 -1
  155. package/bundles/daffodil-external-router-driver.umd.min.js +0 -2
  156. package/bundles/daffodil-external-router-driver.umd.min.js.map +0 -1
  157. package/bundles/daffodil-external-router-routing.umd.js +0 -505
  158. package/bundles/daffodil-external-router-routing.umd.js.map +0 -1
  159. package/bundles/daffodil-external-router-routing.umd.min.js +0 -16
  160. package/bundles/daffodil-external-router-routing.umd.min.js.map +0 -1
  161. package/bundles/daffodil-external-router.umd.js +0 -625
  162. package/bundles/daffodil-external-router.umd.js.map +0 -1
  163. package/bundles/daffodil-external-router.umd.min.js +0 -16
  164. package/bundles/daffodil-external-router.umd.min.js.map +0 -1
  165. package/daffodil-external-router.metadata.json +0 -1
  166. package/driver/daffodil-external-router-driver.metadata.json +0 -1
  167. package/driver/in-memory/daffodil-external-router-driver-in-memory.metadata.json +0 -1
  168. package/driver/magento/2.4.1/daffodil-external-router-driver-magento-2.4.1.metadata.json +0 -1
  169. package/driver/magento/2.4.2/daffodil-external-router-driver-magento-2.4.2.metadata.json +0 -1
  170. package/driver/magento/daffodil-external-router-driver-magento.metadata.json +0 -1
  171. package/driver/testing/daffodil-external-router-driver-testing.metadata.json +0 -1
  172. package/esm2015/daffodil-external-router.js +0 -6
  173. package/esm2015/driver/in-memory/config.js +0 -17
  174. package/esm2015/driver/in-memory/in-memory.module.js +0 -36
  175. package/esm2015/driver/in-memory/in-memory.service.js +0 -36
  176. package/esm2015/driver/magento/2.4.1/daffodil-external-router-driver-magento-2.4.1.js +0 -6
  177. package/esm2015/driver/magento/2.4.1/magento.module.js +0 -50
  178. package/esm2015/driver/magento/2.4.1/magento.service.js +0 -40
  179. package/esm2015/driver/magento/2.4.1/transforms/resolution-to-resolvable-url.js +0 -13
  180. package/esm2015/driver/magento/2.4.2/daffodil-external-router-driver-magento-2.4.2.js +0 -6
  181. package/esm2015/driver/magento/2.4.2/magento.module.js +0 -50
  182. package/esm2015/driver/magento/2.4.2/magento.service.js +0 -39
  183. package/esm2015/driver/testing/daffodil-external-router-driver-testing.js +0 -6
  184. package/esm2015/driver/testing/testing.module.js +0 -33
  185. package/esm2015/driver/testing/testing.service.js +0 -45
  186. package/esm2015/external-router.module.js +0 -26
  187. package/esm2015/router/router.service.js +0 -44
  188. package/esm2015/router/strategies/insert-data-path.js +0 -83
  189. package/esm2015/router/url-matcher/data-path-matcher.js +0 -32
  190. package/esm2015/routing/guard/existence.guard.js +0 -78
  191. package/esm2015/transform/resolved-route-to-route.js +0 -17
  192. package/fesm2015/daffodil-external-router-driver-in-memory.js.map +0 -1
  193. package/fesm2015/daffodil-external-router-driver-magento-2.4.1.js.map +0 -1
  194. package/fesm2015/daffodil-external-router-driver-magento-2.4.2.js.map +0 -1
  195. package/fesm2015/daffodil-external-router-driver-magento.js.map +0 -1
  196. package/fesm2015/daffodil-external-router-driver-testing.js +0 -93
  197. package/fesm2015/daffodil-external-router-driver-testing.js.map +0 -1
  198. package/fesm2015/daffodil-external-router-driver.js.map +0 -1
  199. package/fesm2015/daffodil-external-router-routing.js.map +0 -1
  200. package/fesm2015/daffodil-external-router.js.map +0 -1
  201. package/routing/daffodil-external-router-routing.metadata.json +0 -1
@@ -0,0 +1,55 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule, } from '@angular/core';
3
+ import { DAFF_MAGENTO_CACHEABLE_OPERATIONS } from '@daffodil/driver/magento';
4
+ import { DaffExternalRouterDriver } from '@daffodil/external-router/driver';
5
+ import { DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME } from './graphql/queries/resolve-url-v2.4.2';
6
+ import { DaffExternalRouterMagentoDriver } from './magento.service';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * The module used to configure the {@link DaffExternalRouterDriver} for usage with Magento.
10
+ *
11
+ * ```ts
12
+ * @NgModule({
13
+ * declarations: [],
14
+ * imports: [
15
+ * ...
16
+ * DaffExternalRouterDriverMagentoModule.forRoot()
17
+ * ],
18
+ * })
19
+ * export class AppModule{}
20
+ * ```
21
+ *
22
+ * Note that this package depends upon ApolloClient, as the Magento driver uses GraphQl to make it's API calls.
23
+ */
24
+ export class DaffExternalRouterDriverMagentoModule {
25
+ /**
26
+ * Configures the package for the root injector.
27
+ */
28
+ static forRoot() {
29
+ return {
30
+ ngModule: DaffExternalRouterDriverMagentoModule,
31
+ providers: [
32
+ {
33
+ provide: DaffExternalRouterDriver,
34
+ useExisting: DaffExternalRouterMagentoDriver,
35
+ },
36
+ {
37
+ provide: DAFF_MAGENTO_CACHEABLE_OPERATIONS,
38
+ useValue: DAFF_MAGENTO_RESOLVE_URL_QUERY_NAME,
39
+ multi: true,
40
+ },
41
+ ],
42
+ };
43
+ }
44
+ }
45
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterDriverMagentoModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterDriverMagentoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
46
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterDriverMagentoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterDriverMagentoModule, imports: [CommonModule] });
47
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterDriverMagentoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterDriverMagentoModule, imports: [[CommonModule]] });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterDriverMagentoModule, decorators: [{
49
+ type: NgModule,
50
+ args: [{
51
+ declarations: [],
52
+ imports: [CommonModule],
53
+ }]
54
+ }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnZW50by5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2V4dGVybmFsLXJvdXRlci9kcml2ZXIvbWFnZW50by8yLjQuMi9zcmMvbWFnZW50by5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUtILE1BQU0sT0FBTyxxQ0FBcUM7SUFFaEQ7O09BRUc7SUFDSCxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUscUNBQXFDO1lBQy9DLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxXQUFXLEVBQUUsK0JBQStCO2lCQUM3QztnQkFDRDtvQkFDRSxPQUFPLEVBQUUsaUNBQWlDO29CQUMxQyxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7O3dLQXBCVSxxQ0FBcUM7eUtBQXJDLHFDQUFxQyxZQUZ0QyxZQUFZO3lLQUVYLHFDQUFxQyxZQUZ2QyxDQUFDLFlBQVksQ0FBQzsyRkFFWixxQ0FBcUM7a0JBSmpELFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgTmdNb2R1bGUsXG4gIE1vZHVsZVdpdGhQcm92aWRlcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEQUZGX01BR0VOVE9fQ0FDSEVBQkxFX09QRVJBVElPTlMgfSBmcm9tICdAZGFmZm9kaWwvZHJpdmVyL21hZ2VudG8nO1xuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVyRHJpdmVyIH0gZnJvbSAnQGRhZmZvZGlsL2V4dGVybmFsLXJvdXRlci9kcml2ZXInO1xuXG5pbXBvcnQgeyBEQUZGX01BR0VOVE9fUkVTT0xWRV9VUkxfUVVFUllfTkFNRSB9IGZyb20gJy4vZ3JhcGhxbC9xdWVyaWVzL3Jlc29sdmUtdXJsLXYyLjQuMic7XG5pbXBvcnQgeyBEYWZmRXh0ZXJuYWxSb3V0ZXJNYWdlbnRvRHJpdmVyIH0gZnJvbSAnLi9tYWdlbnRvLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBtb2R1bGUgdXNlZCB0byBjb25maWd1cmUgdGhlIHtAbGluayBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJ9IGZvciB1c2FnZSB3aXRoIE1hZ2VudG8uXG4gKlxuICogYGBgdHNcbiAqIEBOZ01vZHVsZSh7XG4gKiAgIGRlY2xhcmF0aW9uczogW10sXG4gKiAgIGltcG9ydHM6IFtcbiAqICAgICAuLi5cbiAqICAgICBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJNYWdlbnRvTW9kdWxlLmZvclJvb3QoKVxuICogICBdLFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBBcHBNb2R1bGV7fVxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgcGFja2FnZSBkZXBlbmRzIHVwb24gQXBvbGxvQ2xpZW50LCBhcyB0aGUgTWFnZW50byBkcml2ZXIgdXNlcyBHcmFwaFFsIHRvIG1ha2UgaXQncyBBUEkgY2FsbHMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJNYWdlbnRvTW9kdWxlIHtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgcGFja2FnZSBmb3IgdGhlIHJvb3QgaW5qZWN0b3IuXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPERhZmZFeHRlcm5hbFJvdXRlckRyaXZlck1hZ2VudG9Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IERhZmZFeHRlcm5hbFJvdXRlckRyaXZlck1hZ2VudG9Nb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IERhZmZFeHRlcm5hbFJvdXRlckRyaXZlcixcbiAgICAgICAgICB1c2VFeGlzdGluZzogRGFmZkV4dGVybmFsUm91dGVyTWFnZW50b0RyaXZlcixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IERBRkZfTUFHRU5UT19DQUNIRUFCTEVfT1BFUkFUSU9OUyxcbiAgICAgICAgICB1c2VWYWx1ZTogREFGRl9NQUdFTlRPX1JFU09MVkVfVVJMX1FVRVJZX05BTUUsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Apollo } from 'apollo-angular';
3
+ import { map } from 'rxjs/operators';
4
+ import { MagentoResolveUrlv242 } from './graphql/queries/resolve-url-v2.4.2';
5
+ import { transformResolutionToResolvableUrlv242 } from './transforms/resolution-to-resolvable-url';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "apollo-angular";
8
+ /**
9
+ * The DaffExternalRouterMagentoDriver is responsible for translating an
10
+ * arbitrary URI into a DaffExternallyResolvableUrl with Magento environments.
11
+ *
12
+ * @inheritdoc
13
+ */
14
+ export class DaffExternalRouterMagentoDriver {
15
+ constructor(apollo) {
16
+ this.apollo = apollo;
17
+ }
18
+ resolve(url) {
19
+ return this.apollo
20
+ .query({
21
+ query: MagentoResolveUrlv242,
22
+ variables: {
23
+ url,
24
+ },
25
+ })
26
+ .pipe(map(response => transformResolutionToResolvableUrlv242(response.data.urlResolver)));
27
+ }
28
+ }
29
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterMagentoDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterMagentoDriver, deps: [{ token: i1.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
30
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterMagentoDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterMagentoDriver, providedIn: 'root' });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterMagentoDriver, decorators: [{
32
+ type: Injectable,
33
+ args: [{
34
+ providedIn: 'root',
35
+ }]
36
+ }], ctorParameters: function () { return [{ type: i1.Apollo }]; } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnZW50by5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9leHRlcm5hbC1yb3V0ZXIvZHJpdmVyL21hZ2VudG8vMi40LjIvc3JjL21hZ2VudG8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPckMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7OztBQUduRzs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTywrQkFBK0I7SUFFMUMsWUFDUSxNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNuQixDQUFDO0lBRUosT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNmLEtBQUssQ0FBNkI7WUFDakMsS0FBSyxFQUFFLHFCQUFxQjtZQUM1QixTQUFTLEVBQUU7Z0JBQ1QsR0FBRzthQUNKO1NBQ0YsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDOztrS0FmVSwrQkFBK0I7c0tBQS9CLCtCQUErQixjQUY5QixNQUFNOzJGQUVQLCtCQUErQjtrQkFIM0MsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuaW1wb3J0IHsgRGFmZkV4dGVybmFsbHlSZXNvbHZhYmxlVXJsIH0gZnJvbSAnQGRhZmZvZGlsL2V4dGVybmFsLXJvdXRlcic7XG5pbXBvcnQgeyBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJJbnRlcmZhY2UgfSBmcm9tICdAZGFmZm9kaWwvZXh0ZXJuYWwtcm91dGVyL2RyaXZlcic7XG5pbXBvcnQgeyBNYWdlbnRvVXJsUmVzb2x2ZXJSZXNwb25zZSB9IGZyb20gJ0BkYWZmb2RpbC9leHRlcm5hbC1yb3V0ZXIvZHJpdmVyL21hZ2VudG8nO1xuXG5pbXBvcnQgeyBNYWdlbnRvUmVzb2x2ZVVybHYyNDIgfSBmcm9tICcuL2dyYXBocWwvcXVlcmllcy9yZXNvbHZlLXVybC12Mi40LjInO1xuaW1wb3J0IHsgdHJhbnNmb3JtUmVzb2x1dGlvblRvUmVzb2x2YWJsZVVybHYyNDIgfSBmcm9tICcuL3RyYW5zZm9ybXMvcmVzb2x1dGlvbi10by1yZXNvbHZhYmxlLXVybCc7XG5cblxuLyoqXG4gKiBUaGUgRGFmZkV4dGVybmFsUm91dGVyTWFnZW50b0RyaXZlciBpcyByZXNwb25zaWJsZSBmb3IgdHJhbnNsYXRpbmcgYW5cbiAqIGFyYml0cmFyeSBVUkkgaW50byBhIERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybCB3aXRoIE1hZ2VudG8gZW52aXJvbm1lbnRzLlxuICpcbiAqIEBpbmhlcml0ZG9jXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYWZmRXh0ZXJuYWxSb3V0ZXJNYWdlbnRvRHJpdmVyXG5pbXBsZW1lbnRzIERhZmZFeHRlcm5hbFJvdXRlckRyaXZlckludGVyZmFjZSB7XG4gIGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgYXBvbGxvOiBBcG9sbG8sXG4gICkge31cblxuICByZXNvbHZlKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxEYWZmRXh0ZXJuYWxseVJlc29sdmFibGVVcmw+IHtcbiAgICByZXR1cm4gdGhpcy5hcG9sbG9cbiAgICAgIC5xdWVyeTxNYWdlbnRvVXJsUmVzb2x2ZXJSZXNwb25zZT4oe1xuICAgICAgICBxdWVyeTogTWFnZW50b1Jlc29sdmVVcmx2MjQyLFxuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHRyYW5zZm9ybVJlc29sdXRpb25Ub1Jlc29sdmFibGVVcmx2MjQyKHJlc3BvbnNlLmRhdGEudXJsUmVzb2x2ZXIpKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFmZm9kaWwtZXh0ZXJuYWwtcm91dGVyLWRyaXZlci10ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9leHRlcm5hbC1yb3V0ZXIvZHJpdmVyL3Rlc3Rpbmcvc3JjL2RhZmZvZGlsLWV4dGVybmFsLXJvdXRlci1kcml2ZXItdGVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule, } from '@angular/core';
3
+ import { DaffExternalRouterDriver } from '@daffodil/external-router/driver';
4
+ import { DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG, } from './config';
5
+ import { DaffExternalRouterTestingDriver } from './testing.service';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * The `DaffExternalRouterDriverTestingModule` is an importable NgModule that can
9
+ * be used to configure the {@link DaffExternalRouterTestingDriver}.
10
+ */
11
+ export class DaffExternalRouterDriverTestingModule {
12
+ static forRoot(config) {
13
+ return {
14
+ ngModule: DaffExternalRouterDriverTestingModule,
15
+ providers: [
16
+ {
17
+ provide: DaffExternalRouterDriver,
18
+ useExisting: DaffExternalRouterTestingDriver,
19
+ },
20
+ {
21
+ provide: DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG,
22
+ useValue: config,
23
+ },
24
+ ],
25
+ };
26
+ }
27
+ }
28
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterDriverTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterDriverTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
29
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterDriverTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterDriverTestingModule, imports: [CommonModule] });
30
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterDriverTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterDriverTestingModule, imports: [[CommonModule]] });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterDriverTestingModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ declarations: [],
35
+ imports: [CommonModule],
36
+ }]
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2V4dGVybmFsLXJvdXRlci9kcml2ZXIvdGVzdGluZy9zcmMvdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFNUUsT0FBTyxFQUVMLDBDQUEwQyxHQUMzQyxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFcEU7OztHQUdHO0FBS0gsTUFBTSxPQUFPLHFDQUFxQztJQUNoRCxNQUFNLENBQUMsT0FBTyxDQUNaLE1BQTZDO1FBRTdDLE9BQU87WUFDTCxRQUFRLEVBQUUscUNBQXFDO1lBQy9DLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsd0JBQXdCO29CQUNqQyxXQUFXLEVBQUUsK0JBQStCO2lCQUM3QztnQkFDRDtvQkFDRSxPQUFPLEVBQUUsMENBQTBDO29CQUNuRCxRQUFRLEVBQUUsTUFBTTtpQkFDakI7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOzt3S0FqQlUscUNBQXFDO3lLQUFyQyxxQ0FBcUMsWUFGdEMsWUFBWTt5S0FFWCxxQ0FBcUMsWUFGdkMsQ0FBQyxZQUFZLENBQUM7MkZBRVoscUNBQXFDO2tCQUpqRCxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIE5nTW9kdWxlLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVyRHJpdmVyIH0gZnJvbSAnQGRhZmZvZGlsL2V4dGVybmFsLXJvdXRlci9kcml2ZXInO1xuXG5pbXBvcnQge1xuICBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJUZXN0aW5nQ29uZmlnLFxuICBEQUZGX0VYVEVSTkFMX1JPVVRFUl9EUklWRVJfVEVTVElOR19DT05GSUcsXG59IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlclRlc3RpbmdEcml2ZXIgfSBmcm9tICcuL3Rlc3Rpbmcuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJUZXN0aW5nTW9kdWxlYCBpcyBhbiBpbXBvcnRhYmxlIE5nTW9kdWxlIHRoYXQgY2FuXG4gKiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUge0BsaW5rIERhZmZFeHRlcm5hbFJvdXRlclRlc3RpbmdEcml2ZXJ9LlxuICovXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgRGFmZkV4dGVybmFsUm91dGVyRHJpdmVyVGVzdGluZ01vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KFxuICAgIGNvbmZpZzogRGFmZkV4dGVybmFsUm91dGVyRHJpdmVyVGVzdGluZ0NvbmZpZyxcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJUZXN0aW5nTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJUZXN0aW5nTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXIsXG4gICAgICAgICAgdXNlRXhpc3Rpbmc6IERhZmZFeHRlcm5hbFJvdXRlclRlc3RpbmdEcml2ZXIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBEQUZGX0VYVEVSTkFMX1JPVVRFUl9EUklWRVJfVEVTVElOR19DT05GSUcsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,45 @@
1
+ import { Injectable, Inject, } from '@angular/core';
2
+ import * as faker from '@faker-js/faker/locale/en_US';
3
+ import { of, throwError, } from 'rxjs';
4
+ import { daffUriTruncateLeadingSlash, daffUriTruncateQueryFragment, } from '@daffodil/core/routing';
5
+ import { DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG, } from './config';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * The DaffExternalRouterTestingDriver is responsible for translating an
9
+ * arbitrary URI into a DaffExternallyResolvableUrl in testing environments.
10
+ *
11
+ * @inheritdoc
12
+ *
13
+ * @see {@link DaffExternalRouterTestingDriver}
14
+ */
15
+ export class DaffExternalRouterTestingDriver {
16
+ constructor(testingConfiguration = {}) {
17
+ this.testingConfiguration = testingConfiguration;
18
+ }
19
+ resolve(url) {
20
+ const truncatedUrl = daffUriTruncateLeadingSlash(daffUriTruncateQueryFragment(url));
21
+ if (!this.testingConfiguration[truncatedUrl]) {
22
+ return throwError(`\
23
+ The route '${truncatedUrl}' wasn't provided with a matching type by the testing driver. \
24
+ Did you configure the available route types with DaffExternalRouterDriverTestingModule.forRoot(config)`);
25
+ }
26
+ return of({
27
+ id: faker.datatype.uuid(),
28
+ url: truncatedUrl,
29
+ type: this.testingConfiguration[truncatedUrl],
30
+ code: 200,
31
+ });
32
+ }
33
+ }
34
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterTestingDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterTestingDriver, deps: [{ token: DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
35
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterTestingDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterTestingDriver, providedIn: 'root' });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterTestingDriver, decorators: [{
37
+ type: Injectable,
38
+ args: [{
39
+ providedIn: 'root',
40
+ }]
41
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
42
+ type: Inject,
43
+ args: [DAFF_EXTERNAL_ROUTER_DRIVER_TESTING_CONFIG]
44
+ }] }]; } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9leHRlcm5hbC1yb3V0ZXIvZHJpdmVyL3Rlc3Rpbmcvc3JjL3Rlc3Rpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssS0FBSyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RELE9BQU8sRUFFTCxFQUFFLEVBQ0YsVUFBVSxHQUNYLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw0QkFBNEIsR0FDN0IsTUFBTSx3QkFBd0IsQ0FBQztBQUloQyxPQUFPLEVBRUwsMENBQTBDLEdBQzNDLE1BQU0sVUFBVSxDQUFDOztBQUVsQjs7Ozs7OztHQU9HO0FBSUgsTUFBTSxPQUFPLCtCQUErQjtJQUUxQyxZQUVRLHVCQUE4RCxFQUFFO1FBQWhFLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNEM7SUFDckUsQ0FBQztJQUVKLE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFcEYsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM1QyxPQUFPLFVBQVUsQ0FBQzthQUNYLFlBQVk7dUdBQzhFLENBQUMsQ0FBQztTQUNwRztRQUVELE9BQU8sRUFBRSxDQUFDO1lBQ1IsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ3pCLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDO1lBQzdDLElBQUksRUFBRSxHQUFHO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0tBdEJVLCtCQUErQixrQkFHbEMsMENBQTBDO3NLQUh2QywrQkFBK0IsY0FGOUIsTUFBTTsyRkFFUCwrQkFBK0I7a0JBSDNDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFJRSxNQUFNOzJCQUFDLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIEluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBmYWtlciBmcm9tICdAZmFrZXItanMvZmFrZXIvbG9jYWxlL2VuX1VTJztcbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgZGFmZlVyaVRydW5jYXRlTGVhZGluZ1NsYXNoLFxuICBkYWZmVXJpVHJ1bmNhdGVRdWVyeUZyYWdtZW50LFxufSBmcm9tICdAZGFmZm9kaWwvY29yZS9yb3V0aW5nJztcbmltcG9ydCB7IERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybCB9IGZyb20gJ0BkYWZmb2RpbC9leHRlcm5hbC1yb3V0ZXInO1xuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVyRHJpdmVySW50ZXJmYWNlIH0gZnJvbSAnQGRhZmZvZGlsL2V4dGVybmFsLXJvdXRlci9kcml2ZXInO1xuXG5pbXBvcnQge1xuICBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXJUZXN0aW5nQ29uZmlnLFxuICBEQUZGX0VYVEVSTkFMX1JPVVRFUl9EUklWRVJfVEVTVElOR19DT05GSUcsXG59IGZyb20gJy4vY29uZmlnJztcblxuLyoqXG4gKiBUaGUgRGFmZkV4dGVybmFsUm91dGVyVGVzdGluZ0RyaXZlciBpcyByZXNwb25zaWJsZSBmb3IgdHJhbnNsYXRpbmcgYW5cbiAqIGFyYml0cmFyeSBVUkkgaW50byBhIERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybCBpbiB0ZXN0aW5nIGVudmlyb25tZW50cy5cbiAqXG4gKiBAaW5oZXJpdGRvY1xuICpcbiAqIEBzZWUge0BsaW5rIERhZmZFeHRlcm5hbFJvdXRlclRlc3RpbmdEcml2ZXJ9XG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYWZmRXh0ZXJuYWxSb3V0ZXJUZXN0aW5nRHJpdmVyXG5pbXBsZW1lbnRzIERhZmZFeHRlcm5hbFJvdXRlckRyaXZlckludGVyZmFjZSB7XG4gIGNvbnN0cnVjdG9yKFxuXHRcdEBJbmplY3QoREFGRl9FWFRFUk5BTF9ST1VURVJfRFJJVkVSX1RFU1RJTkdfQ09ORklHKVxuXHRcdHByaXZhdGUgdGVzdGluZ0NvbmZpZ3VyYXRpb246IERhZmZFeHRlcm5hbFJvdXRlckRyaXZlclRlc3RpbmdDb25maWcgPSB7fSxcbiAgKSB7fVxuXG4gIHJlc29sdmUodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybD4ge1xuICAgIGNvbnN0IHRydW5jYXRlZFVybCA9IGRhZmZVcmlUcnVuY2F0ZUxlYWRpbmdTbGFzaChkYWZmVXJpVHJ1bmNhdGVRdWVyeUZyYWdtZW50KHVybCkpO1xuXG4gICAgaWYgKCF0aGlzLnRlc3RpbmdDb25maWd1cmF0aW9uW3RydW5jYXRlZFVybF0pIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGBcXFxuVGhlIHJvdXRlICcke3RydW5jYXRlZFVybH0nIHdhc24ndCBwcm92aWRlZCB3aXRoIGEgbWF0Y2hpbmcgdHlwZSBieSB0aGUgdGVzdGluZyBkcml2ZXIuIFxcXG5EaWQgeW91IGNvbmZpZ3VyZSB0aGUgYXZhaWxhYmxlIHJvdXRlIHR5cGVzIHdpdGggRGFmZkV4dGVybmFsUm91dGVyRHJpdmVyVGVzdGluZ01vZHVsZS5mb3JSb290KGNvbmZpZylgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Yoe1xuICAgICAgaWQ6IGZha2VyLmRhdGF0eXBlLnV1aWQoKSxcbiAgICAgIHVybDogdHJ1bmNhdGVkVXJsLFxuICAgICAgdHlwZTogdGhpcy50ZXN0aW5nQ29uZmlndXJhdGlvblt0cnVuY2F0ZWRVcmxdLFxuICAgICAgY29kZTogMjAwLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule, } from '@angular/core';
3
+ import { DAFF_EXTERNAL_ROUTER_CONFIG, daffExternalRouterConfigurationDefault, } from './config';
4
+ import { daffProvideRoutesResolvableByType } from './token/type-resolvable-routes.token';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * The external `DaffExternalRouterModule` allows you to configure the
8
+ * `@daffodil/external-router` package's behavior.
9
+ */
10
+ export class DaffExternalRouterModule {
11
+ static forRoot(config, routes = []) {
12
+ return {
13
+ ngModule: DaffExternalRouterModule,
14
+ providers: [
15
+ { provide: DAFF_EXTERNAL_ROUTER_CONFIG, useValue: { ...daffExternalRouterConfigurationDefault, ...config } },
16
+ ...daffProvideRoutesResolvableByType(routes),
17
+ ],
18
+ };
19
+ }
20
+ }
21
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
22
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterModule, imports: [CommonModule] });
23
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterModule, imports: [[CommonModule]] });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterModule, decorators: [{
25
+ type: NgModule,
26
+ args: [{
27
+ declarations: [],
28
+ imports: [CommonModule],
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYnMvZXh0ZXJuYWwtcm91dGVyL3NyYy9leHRlcm5hbC1yb3V0ZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFFTCwyQkFBMkIsRUFDM0Isc0NBQXNDLEdBQ3ZDLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUV6Rjs7O0dBR0c7QUFLSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLE1BQU0sQ0FBQyxPQUFPLENBQ1osTUFBZ0QsRUFDaEQsU0FBOEIsRUFBRTtRQUVoQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLHdCQUF3QjtZQUNsQyxTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxzQ0FBc0MsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFDO2dCQUMzRyxHQUFHLGlDQUFpQyxDQUFDLE1BQU0sQ0FBQzthQUM3QztTQUNGLENBQUM7SUFDSixDQUFDOzsySkFaVSx3QkFBd0I7NEpBQXhCLHdCQUF3QixZQUZ6QixZQUFZOzRKQUVYLHdCQUF3QixZQUYxQixDQUFDLFlBQVksQ0FBQzsyRkFFWix3QkFBd0I7a0JBSnBDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgTmdNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBEYWZmRXh0ZXJuYWxSb3V0ZXJDb25maWd1cmF0aW9uLFxuICBEQUZGX0VYVEVSTkFMX1JPVVRFUl9DT05GSUcsXG4gIGRhZmZFeHRlcm5hbFJvdXRlckNvbmZpZ3VyYXRpb25EZWZhdWx0LFxufSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBEYWZmVHlwZVJvdXRlUGFpciB9IGZyb20gJy4vbW9kZWwvdHlwZS1yb3V0ZS1wYWlyJztcbmltcG9ydCB7IGRhZmZQcm92aWRlUm91dGVzUmVzb2x2YWJsZUJ5VHlwZSB9IGZyb20gJy4vdG9rZW4vdHlwZS1yZXNvbHZhYmxlLXJvdXRlcy50b2tlbic7XG5cbi8qKlxuICogVGhlIGV4dGVybmFsIGBEYWZmRXh0ZXJuYWxSb3V0ZXJNb2R1bGVgIGFsbG93cyB5b3UgdG8gY29uZmlndXJlIHRoZVxuICogYEBkYWZmb2RpbC9leHRlcm5hbC1yb3V0ZXJgIHBhY2thZ2UncyBiZWhhdmlvci5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIERhZmZFeHRlcm5hbFJvdXRlck1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KFxuICAgIGNvbmZpZzogUGFydGlhbDxEYWZmRXh0ZXJuYWxSb3V0ZXJDb25maWd1cmF0aW9uPixcbiAgICByb3V0ZXM6IERhZmZUeXBlUm91dGVQYWlyW10gPSBbXSxcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxEYWZmRXh0ZXJuYWxSb3V0ZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IERhZmZFeHRlcm5hbFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IERBRkZfRVhURVJOQUxfUk9VVEVSX0NPTkZJRywgdXNlVmFsdWU6IHsgLi4uZGFmZkV4dGVybmFsUm91dGVyQ29uZmlndXJhdGlvbkRlZmF1bHQsIC4uLmNvbmZpZyB9fSxcbiAgICAgICAgLi4uZGFmZlByb3ZpZGVSb3V0ZXNSZXNvbHZhYmxlQnlUeXBlKHJvdXRlcyksXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,43 @@
1
+ import { Inject, Injectable, } from '@angular/core';
2
+ import { Router, } from '@angular/router';
3
+ import { DaffExternalRouterNoWildcardError } from '../errors/no-wildcard';
4
+ import { DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE } from '../token/type-resolvable-routes.token';
5
+ import { daffTransformResolvedRouteToRoute } from '../transform/resolved-route-to-route';
6
+ import { daffInsertRouteBeforeWildCardStrategy } from './strategies/insert-route-before-wildcard';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/router";
9
+ export class DaffExternalRouter {
10
+ constructor(router, runtimeRoutes) {
11
+ this.router = router;
12
+ this.runtimeRoutes = runtimeRoutes;
13
+ }
14
+ /**
15
+ * Adds a route to the existing router configuration.
16
+ */
17
+ add(resolvedRoute) {
18
+ //Get the route.
19
+ const { route, insertionStrategy, } = daffTransformResolvedRouteToRoute(resolvedRoute, this.runtimeRoutes);
20
+ try {
21
+ //Add it to configuration.
22
+ this.router.config = (insertionStrategy || daffInsertRouteBeforeWildCardStrategy)(route, this.router.config);
23
+ }
24
+ catch (e) {
25
+ if (e instanceof DaffExternalRouterNoWildcardError) {
26
+ throw new DaffExternalRouterNoWildcardError(`${e.message} This usually means you have misconfigured your routes.`);
27
+ }
28
+ throw e;
29
+ }
30
+ }
31
+ }
32
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouter, deps: [{ token: i1.Router }, { token: DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE }], target: i0.ɵɵFactoryTarget.Injectable });
33
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouter, providedIn: 'root' });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouter, decorators: [{
35
+ type: Injectable,
36
+ args: [{
37
+ providedIn: 'root',
38
+ }]
39
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: undefined, decorators: [{
40
+ type: Inject,
41
+ args: [DAFF_EXTERNAL_ROUTER_ROUTES_RESOLVABLE_BY_TYPE]
42
+ }] }]; } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2V4dGVybmFsLXJvdXRlci9zcmMvcm91dGVyL3JvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxNQUFNLEdBRVAsTUFBTSxpQkFBaUIsQ0FBQztBQUd6QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsOENBQThDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7O0FBS2xHLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDVSxNQUFjLEVBRWQsYUFBa0M7UUFGbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVkLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtJQUN4QyxDQUFDO0lBRUw7O09BRUc7SUFDSCxHQUFHLENBQUMsYUFBMEM7UUFDNUMsZ0JBQWdCO1FBQ2hCLE1BQU0sRUFDSixLQUFLLEVBQ0wsaUJBQWlCLEdBQ2xCLEdBQUcsaUNBQWlDLENBQ25DLGFBQWEsRUFDYixJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO1FBRUYsSUFBSTtZQUNGLDBCQUEwQjtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLGlCQUFpQixJQUFJLHFDQUFxQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDOUc7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxZQUFZLGlDQUFpQyxFQUFFO2dCQUNsRCxNQUFNLElBQUksaUNBQWlDLENBQ3pDLEdBQUcsQ0FBQyxDQUFDLE9BQU8seURBQXlELENBQ3RFLENBQUM7YUFDSDtZQUVELE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDOztxSkFoQ1Usa0JBQWtCLHdDQUduQiw4Q0FBOEM7eUpBSDdDLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUlJLE1BQU07MkJBQUMsOENBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFJvdXRlcixcbiAgUm91dGUsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cblxuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVyTm9XaWxkY2FyZEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL25vLXdpbGRjYXJkJztcbmltcG9ydCB7IERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybCB9IGZyb20gJy4uL21vZGVsL3Jlc29sdmFibGUtcm91dGUnO1xuaW1wb3J0IHsgRGFmZlR5cGVSb3V0ZVBhaXIgfSBmcm9tICcuLi9tb2RlbC90eXBlLXJvdXRlLXBhaXInO1xuaW1wb3J0IHsgREFGRl9FWFRFUk5BTF9ST1VURVJfUk9VVEVTX1JFU09MVkFCTEVfQllfVFlQRSB9IGZyb20gJy4uL3Rva2VuL3R5cGUtcmVzb2x2YWJsZS1yb3V0ZXMudG9rZW4nO1xuaW1wb3J0IHsgZGFmZlRyYW5zZm9ybVJlc29sdmVkUm91dGVUb1JvdXRlIH0gZnJvbSAnLi4vdHJhbnNmb3JtL3Jlc29sdmVkLXJvdXRlLXRvLXJvdXRlJztcbmltcG9ydCB7IGRhZmZJbnNlcnRSb3V0ZUJlZm9yZVdpbGRDYXJkU3RyYXRlZ3kgfSBmcm9tICcuL3N0cmF0ZWdpZXMvaW5zZXJ0LXJvdXRlLWJlZm9yZS13aWxkY2FyZCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEYWZmRXh0ZXJuYWxSb3V0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoREFGRl9FWFRFUk5BTF9ST1VURVJfUk9VVEVTX1JFU09MVkFCTEVfQllfVFlQRSlcbiAgICBwcml2YXRlIHJ1bnRpbWVSb3V0ZXM6IERhZmZUeXBlUm91dGVQYWlyW10sXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByb3V0ZSB0byB0aGUgZXhpc3Rpbmcgcm91dGVyIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBhZGQocmVzb2x2ZWRSb3V0ZTogRGFmZkV4dGVybmFsbHlSZXNvbHZhYmxlVXJsKSB7XG4gICAgLy9HZXQgdGhlIHJvdXRlLlxuICAgIGNvbnN0IHtcbiAgICAgIHJvdXRlLFxuICAgICAgaW5zZXJ0aW9uU3RyYXRlZ3ksXG4gICAgfSA9IGRhZmZUcmFuc2Zvcm1SZXNvbHZlZFJvdXRlVG9Sb3V0ZShcbiAgICAgIHJlc29sdmVkUm91dGUsXG4gICAgICB0aGlzLnJ1bnRpbWVSb3V0ZXMsXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICAvL0FkZCBpdCB0byBjb25maWd1cmF0aW9uLlxuICAgICAgdGhpcy5yb3V0ZXIuY29uZmlnID0gKGluc2VydGlvblN0cmF0ZWd5IHx8IGRhZmZJbnNlcnRSb3V0ZUJlZm9yZVdpbGRDYXJkU3RyYXRlZ3kpKHJvdXRlLCB0aGlzLnJvdXRlci5jb25maWcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRGFmZkV4dGVybmFsUm91dGVyTm9XaWxkY2FyZEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBEYWZmRXh0ZXJuYWxSb3V0ZXJOb1dpbGRjYXJkRXJyb3IoXG4gICAgICAgICAgYCR7ZS5tZXNzYWdlfSBUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGhhdmUgbWlzY29uZmlndXJlZCB5b3VyIHJvdXRlcy5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Tests whether or not a route matches a specific Daffodil Route type.
3
+ *
4
+ * See {@link DaffRouteWithDataPath}
5
+ */
6
+ const routeMatchesRouteType = (route, type) => route?.data?.daffExternalRouteType === type;
7
+ /**
8
+ * Adds a path to the `daffPaths` of the given route.
9
+ *
10
+ * See {@link DaffRouteWithDataPath}
11
+ */
12
+ const addRouteToDaffPaths = (route, path) => route.data.daffPaths = {
13
+ ...route.data.daffPaths,
14
+ [path]: path,
15
+ };
16
+ const operateOnRoute = (externalRoute) => (route) => addRouteToDaffPaths(route, externalRoute.path);
17
+ /**
18
+ * Traverse the router config tree, halting after the first match.
19
+ * This traversal is implemented in a pre-order manner. As such, for large
20
+ * configuration trees, it will be most efficient to place externally routed
21
+ * components at the top of router configuration.
22
+ */
23
+ const traverseRouteTree = (routes = [], matcher, operate) => {
24
+ if (routes.length === 0) {
25
+ return routes;
26
+ }
27
+ const stack = [];
28
+ const treeRoot = { children: routes };
29
+ stack.push(treeRoot);
30
+ while (stack.length) {
31
+ const route = stack.pop();
32
+ if (matcher(route)) {
33
+ operate(route);
34
+ break;
35
+ }
36
+ if (route.children) {
37
+ stack.push(...route.children.reverse());
38
+ }
39
+ }
40
+ return routes;
41
+ };
42
+ /**
43
+ * A route insertion strategy that can be used to append external routes onto
44
+ * existing Angular routes. This can be useful when you need to route to
45
+ * an existing lazy-loaded module from multiple externally defined urls.
46
+ *
47
+ * This should be used in combination with the {@link daffDataPathUrlMatcher} to match lazy-loaded modules with
48
+ * associated external urls.
49
+ *
50
+ * For example, you can provide the insertion strategy in the {@link DaffExternalRouterModule} as below.
51
+ *
52
+ * ```ts
53
+ * DaffExternalRouterModule.forRoot({}, [
54
+ * {
55
+ * type: 'CATEGORY',
56
+ * insertionStrategy: daffInsertDataPathStrategy,
57
+ * route: {}
58
+ * }
59
+ * ],
60
+ * ```
61
+ *
62
+ * Then, you can match it with an associated route defined in your Routing
63
+ * configuration with the {@link daffDataPathUrlMatcher}.
64
+ *
65
+ * ```ts
66
+ * export const routes: Routes = [
67
+ * {
68
+ * matcher: daffDataPathUrlMatcher,
69
+ * data: {
70
+ * daffExternalRouteType: "CATEGORY",
71
+ * },
72
+ * loadChildren: () => import('./category/category.module').then((m) => m.MyCategoryModule),
73
+ * }
74
+ * ]
75
+ * ```
76
+ *
77
+ * See {@link DaffRouteWithDataPath}
78
+ *
79
+ */
80
+ export const daffInsertDataPathStrategy = (externalRoute, routes) => traverseRouteTree(routes, (route) => routeMatchesRouteType(route, externalRoute.data?.daffExternalRouteType), operateOnRoute(externalRoute));
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWRhdGEtcGF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZXh0ZXJuYWwtcm91dGVyL3NyYy9yb3V0ZXIvc3RyYXRlZ2llcy9pbnNlcnQtZGF0YS1wYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBOzs7O0dBSUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBNEIsRUFBRSxJQUEyQixFQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixLQUFLLElBQUksQ0FBQztBQUVsSjs7OztHQUlHO0FBQ0gsTUFBTSxtQkFBbUIsR0FFdkIsQ0FBQyxLQUE0QixFQUFFLElBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUk7SUFDdEUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVM7SUFDdkIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUVKLE1BQU0sY0FBYyxHQUFHLENBQUMsYUFBb0IsRUFBMkIsRUFBRSxDQUN2RSxDQUFDLEtBQTRCLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFbkY7Ozs7O0dBS0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLE9BQWtDLEVBQUUsT0FBK0IsRUFBVSxFQUFFO0lBQzdILElBQUcsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUN6QixNQUFNLFFBQVEsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXJCLE9BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRTtRQUNsQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2YsTUFBTTtTQUNQO1FBQ0QsSUFBRyxLQUFLLENBQUMsUUFBUSxFQUFDO1lBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDekM7S0FDRjtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXdDLENBQUMsYUFBb0MsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUN4SixNQUFNLEVBQ04sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLEVBQ2xGLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFJvdXRlLFxuICBSb3V0ZXMsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IERhZmZFeHRlcm5hbFJvdXRlckluc2VydGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vbW9kZWwvaW5zZXJ0aW9uLXN0cmF0ZWd5LnR5cGUnO1xuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWwvcm91dGUtdHlwZSc7XG5pbXBvcnQgeyBEYWZmUm91dGVXaXRoRGF0YVBhdGggfSBmcm9tICcuLi8uLi9tb2RlbC9yb3V0ZS13aXRoLWRhdGEtcGF0aCc7XG5cbi8qKlxuICogVGVzdHMgd2hldGhlciBvciBub3QgYSByb3V0ZSBtYXRjaGVzIGEgc3BlY2lmaWMgRGFmZm9kaWwgUm91dGUgdHlwZS5cbiAqXG4gKiBTZWUge0BsaW5rIERhZmZSb3V0ZVdpdGhEYXRhUGF0aH1cbiAqL1xuY29uc3Qgcm91dGVNYXRjaGVzUm91dGVUeXBlID0gKHJvdXRlOiBEYWZmUm91dGVXaXRoRGF0YVBhdGgsIHR5cGU6IERhZmZFeHRlcm5hbFJvdXRlVHlwZSk6IGJvb2xlYW4gPT4gcm91dGU/LmRhdGE/LmRhZmZFeHRlcm5hbFJvdXRlVHlwZSA9PT0gdHlwZTtcblxuLyoqXG4gKiBBZGRzIGEgcGF0aCB0byB0aGUgYGRhZmZQYXRoc2Agb2YgdGhlIGdpdmVuIHJvdXRlLlxuICpcbiAqIFNlZSB7QGxpbmsgRGFmZlJvdXRlV2l0aERhdGFQYXRofVxuICovXG5jb25zdCBhZGRSb3V0ZVRvRGFmZlBhdGhzOlxuICAocm91dGU6IERhZmZSb3V0ZVdpdGhEYXRhUGF0aCwgcGF0aDogc3RyaW5nKSA9PiBSb3V0ZSA9XG4gIChyb3V0ZTogRGFmZlJvdXRlV2l0aERhdGFQYXRoLCBwYXRoOiBzdHJpbmcpID0+IHJvdXRlLmRhdGEuZGFmZlBhdGhzICA9IHtcbiAgICAuLi5yb3V0ZS5kYXRhLmRhZmZQYXRocyxcbiAgICBbcGF0aF06IHBhdGgsXG4gIH07XG5cbmNvbnN0IG9wZXJhdGVPblJvdXRlID0gKGV4dGVybmFsUm91dGU6IFJvdXRlKTogKHJvdXRlOiBSb3V0ZSkgPT4gUm91dGUgPT5cbiAgKHJvdXRlOiBEYWZmUm91dGVXaXRoRGF0YVBhdGgpID0+IGFkZFJvdXRlVG9EYWZmUGF0aHMocm91dGUsIGV4dGVybmFsUm91dGUucGF0aCk7XG5cbi8qKlxuICogVHJhdmVyc2UgdGhlIHJvdXRlciBjb25maWcgdHJlZSwgaGFsdGluZyBhZnRlciB0aGUgZmlyc3QgbWF0Y2guXG4gKiBUaGlzIHRyYXZlcnNhbCBpcyBpbXBsZW1lbnRlZCBpbiBhIHByZS1vcmRlciBtYW5uZXIuIEFzIHN1Y2gsIGZvciBsYXJnZVxuICogY29uZmlndXJhdGlvbiB0cmVlcywgaXQgd2lsbCBiZSBtb3N0IGVmZmljaWVudCB0byBwbGFjZSBleHRlcm5hbGx5IHJvdXRlZFxuICogY29tcG9uZW50cyBhdCB0aGUgdG9wIG9mIHJvdXRlciBjb25maWd1cmF0aW9uLlxuICovXG5jb25zdCB0cmF2ZXJzZVJvdXRlVHJlZSA9IChyb3V0ZXM6IFJvdXRlcyA9IFtdLCBtYXRjaGVyOiAocm91dGU6IFJvdXRlKSA9PiBib29sZWFuLCBvcGVyYXRlOiAocm91dGU6IFJvdXRlKSA9PiB2b2lkKTogUm91dGVzID0+IHtcbiAgaWYocm91dGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiByb3V0ZXM7XG4gIH1cblxuICBjb25zdCBzdGFjazogUm91dGVzID0gW107XG4gIGNvbnN0IHRyZWVSb290ID0geyBjaGlsZHJlbjogcm91dGVzIH07XG4gIHN0YWNrLnB1c2godHJlZVJvb3QpO1xuXG4gIHdoaWxlKHN0YWNrLmxlbmd0aCkge1xuICAgIGNvbnN0IHJvdXRlID0gc3RhY2sucG9wKCk7XG4gICAgaWYobWF0Y2hlcihyb3V0ZSkpIHtcbiAgICAgIG9wZXJhdGUocm91dGUpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmKHJvdXRlLmNoaWxkcmVuKXtcbiAgICAgIHN0YWNrLnB1c2goLi4ucm91dGUuY2hpbGRyZW4ucmV2ZXJzZSgpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJvdXRlcztcbn07XG5cbi8qKlxuICogQSByb3V0ZSBpbnNlcnRpb24gc3RyYXRlZ3kgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBlbmQgZXh0ZXJuYWwgcm91dGVzIG9udG9cbiAqIGV4aXN0aW5nIEFuZ3VsYXIgcm91dGVzLiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byByb3V0ZSB0b1xuICogYW4gZXhpc3RpbmcgbGF6eS1sb2FkZWQgbW9kdWxlIGZyb20gbXVsdGlwbGUgZXh0ZXJuYWxseSBkZWZpbmVkIHVybHMuXG4gKlxuICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSB7QGxpbmsgZGFmZkRhdGFQYXRoVXJsTWF0Y2hlcn0gdG8gbWF0Y2ggbGF6eS1sb2FkZWQgbW9kdWxlcyB3aXRoXG4gKiBhc3NvY2lhdGVkIGV4dGVybmFsIHVybHMuXG4gKlxuICogRm9yIGV4YW1wbGUsIHlvdSBjYW4gcHJvdmlkZSB0aGUgaW5zZXJ0aW9uIHN0cmF0ZWd5IGluIHRoZSB7QGxpbmsgRGFmZkV4dGVybmFsUm91dGVyTW9kdWxlfSBhcyBiZWxvdy5cbiAqXG4gKiBgYGB0c1xuICogRGFmZkV4dGVybmFsUm91dGVyTW9kdWxlLmZvclJvb3Qoe30sIFtcbiAqICB7XG4gKiAgICB0eXBlOiAnQ0FURUdPUlknLFxuICogICAgaW5zZXJ0aW9uU3RyYXRlZ3k6IGRhZmZJbnNlcnREYXRhUGF0aFN0cmF0ZWd5LFxuICogICAgcm91dGU6IHt9XG4gKiAgfVxuICogXSxcbiAqIGBgYFxuICpcbiAqIFRoZW4sIHlvdSBjYW4gbWF0Y2ggaXQgd2l0aCBhbiBhc3NvY2lhdGVkIHJvdXRlIGRlZmluZWQgaW4geW91ciBSb3V0aW5nXG4gKiBjb25maWd1cmF0aW9uIHdpdGggdGhlIHtAbGluayBkYWZmRGF0YVBhdGhVcmxNYXRjaGVyfS5cbiAqXG4gKiBgYGB0c1xuICogIGV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAgIHtcbiAqICAgICAgbWF0Y2hlcjogZGFmZkRhdGFQYXRoVXJsTWF0Y2hlcixcbiAqICAgICAgZGF0YToge1xuICogICAgICAgIGRhZmZFeHRlcm5hbFJvdXRlVHlwZTogXCJDQVRFR09SWVwiLFxuICogICAgICB9LFxuICogICAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2R1bGUnKS50aGVuKChtKSA9PiBtLk15Q2F0ZWdvcnlNb2R1bGUpLFxuICogICAgfVxuICogXVxuICogYGBgXG4gKlxuICogU2VlIHtAbGluayBEYWZmUm91dGVXaXRoRGF0YVBhdGh9XG4gKlxuICovXG5leHBvcnQgY29uc3QgZGFmZkluc2VydERhdGFQYXRoU3RyYXRlZ3k6IERhZmZFeHRlcm5hbFJvdXRlckluc2VydGlvblN0cmF0ZWd5ID0gKGV4dGVybmFsUm91dGU6IERhZmZSb3V0ZVdpdGhEYXRhUGF0aCwgcm91dGVzOiBSb3V0ZXMpID0+IHRyYXZlcnNlUm91dGVUcmVlKFxuICByb3V0ZXMsXG4gIChyb3V0ZSkgPT4gcm91dGVNYXRjaGVzUm91dGVUeXBlKHJvdXRlLCBleHRlcm5hbFJvdXRlLmRhdGE/LmRhZmZFeHRlcm5hbFJvdXRlVHlwZSksXG4gIG9wZXJhdGVPblJvdXRlKGV4dGVybmFsUm91dGUpLFxuKTtcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ import { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';
2
+ /**
3
+ * A UrlMatcher that does an exact match against a path stored in the special
4
+ * configuration fields that External Router stores on a Route's data.
5
+ *
6
+ * ```ts
7
+ * export const routes: Routes = [
8
+ * {
9
+ * matcher: daffDataPathUrlMatcher,
10
+ * data: {
11
+ * daffExternalRouteType: "CATEGORY",
12
+ * },
13
+ * loadChildren: () => import('./category/category.module').then((m) => m.ShopCategoryModule),
14
+ * }
15
+ * ]
16
+ * ```
17
+ * {@link daffInsertDataPathStrategy }
18
+ * {@link DaffRouteWithDataPath }
19
+ */
20
+ export const daffDataPathUrlMatcher = (segments, group, route) => {
21
+ const path = daffUriTruncateLeadingSlash(segments.reduce((acc, segment) => acc + '/' + segment.path, ''));
22
+ const paths = route?.data?.daffPaths;
23
+ // If we don't have any paths, we can safely fail a match.
24
+ if (!paths) {
25
+ return null;
26
+ }
27
+ // Otherwise, look up the path in the dictionary, failing if a match isn't found,
28
+ // but matching the entire segment if a match is found.
29
+ return path in paths ? { consumed: segments } : null;
30
+ };
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1wYXRoLW1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2V4dGVybmFsLXJvdXRlci9zcmMvcm91dGVyL3VybC1tYXRjaGVyL2RhdGEtcGF0aC1tYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSXJFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFlLENBQUMsUUFBc0IsRUFBRSxLQUFzQixFQUFFLEtBQTRCLEVBQUUsRUFBRTtJQUNqSSxNQUFNLElBQUksR0FBRywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEgsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7SUFFckMsMERBQTBEO0lBQzFELElBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDVCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsaUZBQWlGO0lBQ2pGLHVEQUF1RDtJQUN2RCxPQUFPLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVXJsTWF0Y2hlcixcbiAgVXJsU2VnbWVudCxcbiAgVXJsU2VnbWVudEdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBkYWZmVXJpVHJ1bmNhdGVMZWFkaW5nU2xhc2ggfSBmcm9tICdAZGFmZm9kaWwvY29yZS9yb3V0aW5nJztcblxuaW1wb3J0IHsgRGFmZlJvdXRlV2l0aERhdGFQYXRoIH0gZnJvbSAnLi4vLi4vbW9kZWwvcHVibGljX2FwaSc7XG5cbi8qKlxuICogQSBVcmxNYXRjaGVyIHRoYXQgZG9lcyBhbiBleGFjdCBtYXRjaCBhZ2FpbnN0IGEgcGF0aCBzdG9yZWQgaW4gdGhlIHNwZWNpYWxcbiAqIGNvbmZpZ3VyYXRpb24gZmllbGRzIHRoYXQgRXh0ZXJuYWwgUm91dGVyIHN0b3JlcyBvbiBhIFJvdXRlJ3MgZGF0YS5cbiAqXG4gKiBgYGB0c1xuICogIGV4cG9ydCBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAqICAgIHtcbiAqICAgICAgbWF0Y2hlcjogZGFmZkRhdGFQYXRoVXJsTWF0Y2hlcixcbiAqICAgICAgZGF0YToge1xuICogICAgICAgIGRhZmZFeHRlcm5hbFJvdXRlVHlwZTogXCJDQVRFR09SWVwiLFxuICogICAgICB9LFxuICogICAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2R1bGUnKS50aGVuKChtKSA9PiBtLlNob3BDYXRlZ29yeU1vZHVsZSksXG4gKiAgICB9XG4gKiBdXG4gKiBgYGBcbiAqIHtAbGluayBkYWZmSW5zZXJ0RGF0YVBhdGhTdHJhdGVneSB9XG4gKiB7QGxpbmsgRGFmZlJvdXRlV2l0aERhdGFQYXRoIH1cbiAqL1xuZXhwb3J0IGNvbnN0IGRhZmZEYXRhUGF0aFVybE1hdGNoZXI6IFVybE1hdGNoZXIgPSAoc2VnbWVudHM6IFVybFNlZ21lbnRbXSwgZ3JvdXA6IFVybFNlZ21lbnRHcm91cCwgcm91dGU6IERhZmZSb3V0ZVdpdGhEYXRhUGF0aCkgPT4ge1xuICBjb25zdCBwYXRoID0gZGFmZlVyaVRydW5jYXRlTGVhZGluZ1NsYXNoKHNlZ21lbnRzLnJlZHVjZSgoYWNjOiBzdHJpbmcsIHNlZ21lbnQpID0+IGFjYyArICcvJyArIHNlZ21lbnQucGF0aCwgJycpKTtcbiAgY29uc3QgcGF0aHMgPSByb3V0ZT8uZGF0YT8uZGFmZlBhdGhzO1xuXG4gIC8vIElmIHdlIGRvbid0IGhhdmUgYW55IHBhdGhzLCB3ZSBjYW4gc2FmZWx5IGZhaWwgYSBtYXRjaC5cbiAgaWYoIXBhdGhzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPdGhlcndpc2UsIGxvb2sgdXAgdGhlIHBhdGggaW4gdGhlIGRpY3Rpb25hcnksIGZhaWxpbmcgaWYgYSBtYXRjaCBpc24ndCBmb3VuZCxcbiAgLy8gYnV0IG1hdGNoaW5nIHRoZSBlbnRpcmUgc2VnbWVudCBpZiBhIG1hdGNoIGlzIGZvdW5kLlxuICByZXR1cm4gcGF0aCBpbiBwYXRocyA/ICB7IGNvbnN1bWVkOiBzZWdtZW50cyB9IDogbnVsbDtcbn07XG5cbiJdfQ==
@@ -0,0 +1,77 @@
1
+ import { Injectable, Inject, } from '@angular/core';
2
+ import { Router, } from '@angular/router';
3
+ import { of, } from 'rxjs';
4
+ import { catchError, map, switchMap, } from 'rxjs/operators';
5
+ import { DaffRoutingUriNormalizer } from '@daffodil/core/routing';
6
+ import { DaffExternalRouter, DAFF_EXTERNAL_ROUTER_CONFIG, } from '@daffodil/external-router';
7
+ import { DaffExternalRouterDriver, } from '@daffodil/external-router/driver';
8
+ import { DaffExternalRouterNotFoundError } from '../errors/not-found-error';
9
+ import { DaffExternalRouterPermanentRedirectError } from '../errors/permanent-redirect';
10
+ import { DaffExternalRouterTemporaryRedirectError } from '../errors/temporary-redirect';
11
+ import { processErrors } from '../processors/process-errors';
12
+ import { processRedirects } from '../processors/process-redirect';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@daffodil/external-router";
15
+ import * as i2 from "@angular/router";
16
+ import * as i3 from "@daffodil/core/routing";
17
+ /**
18
+ * The DaffExternalRouterExistenceGuard is responsible for guarding the wildcard route
19
+ * of an Angular App and either navigating to a resolved route upon successful resolution
20
+ * or navigating to the configured route upon a failed resolution.
21
+ */
22
+ export class DaffExternalRouterExistenceGuard {
23
+ constructor(driver, externalRouter, router, config, urlNormalizer) {
24
+ this.driver = driver;
25
+ this.externalRouter = externalRouter;
26
+ this.router = router;
27
+ this.config = config;
28
+ this.urlNormalizer = urlNormalizer;
29
+ }
30
+ canActivate(next, state) {
31
+ return this.driver.resolve(this.urlNormalizer.normalize(state.url)).pipe(map((resolvedRoute) => processErrors(resolvedRoute)), switchMap(resolvedRoute => {
32
+ this.externalRouter.add(resolvedRoute);
33
+ return of(resolvedRoute);
34
+ }), map((resolvedRoute) => processRedirects(resolvedRoute)),
35
+ // Note that we have to use state.url as we want to ensure that we keep any fragments or query strings.
36
+ // When we succeed, redirect to the new route, as config has changed since we init'd.
37
+ map(() => this.router.parseUrl(state.url)),
38
+ // When we fail, we need to process errors as dictated by the error type.
39
+ // Handle redirects
40
+ catchError(error => {
41
+ if (!(error instanceof DaffExternalRouterPermanentRedirectError) &&
42
+ !(error instanceof DaffExternalRouterTemporaryRedirectError)) {
43
+ throw error;
44
+ }
45
+ return of(this.router.parseUrl(error.redirectUrl));
46
+ }),
47
+ // Handle "404"
48
+ catchError((error) => {
49
+ if (!(error instanceof DaffExternalRouterNotFoundError)) {
50
+ throw error;
51
+ }
52
+ return of(this.router.parseUrl(this.config.notFoundResolutionPath));
53
+ }),
54
+ //Otherwise something went horribly wrong and we need to bail out.
55
+ catchError((error) => {
56
+ //TODO(damienwebdev): Add a logging system.
57
+ //This log is intentional until we have a better logging system in place.
58
+ console.log(error);
59
+ return of(this.router.parseUrl(this.config.failedResolutionPath));
60
+ }));
61
+ }
62
+ }
63
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterExistenceGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterExistenceGuard, deps: [{ token: DaffExternalRouterDriver }, { token: i1.DaffExternalRouter }, { token: i2.Router }, { token: DAFF_EXTERNAL_ROUTER_CONFIG }, { token: i3.DaffRoutingUriNormalizer }], target: i0.ɵɵFactoryTarget.Injectable });
64
+ /** @nocollapse */ /** @nocollapse */ DaffExternalRouterExistenceGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterExistenceGuard, providedIn: 'root' });
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffExternalRouterExistenceGuard, decorators: [{
66
+ type: Injectable,
67
+ args: [{
68
+ providedIn: 'root',
69
+ }]
70
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
71
+ type: Inject,
72
+ args: [DaffExternalRouterDriver]
73
+ }] }, { type: i1.DaffExternalRouter }, { type: i2.Router }, { type: undefined, decorators: [{
74
+ type: Inject,
75
+ args: [DAFF_EXTERNAL_ROUTER_CONFIG]
76
+ }] }, { type: i3.DaffRoutingUriNormalizer }]; } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpc3RlbmNlLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9leHRlcm5hbC1yb3V0ZXIvcm91dGluZy9zcmMvZ3VhcmQvZXhpc3RlbmNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxNQUFNLEdBR1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBRUwsRUFBRSxHQUNILE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFVBQVUsRUFDVixHQUFHLEVBQ0gsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLGtCQUFrQixFQUVsQiwyQkFBMkIsR0FFNUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUwsd0JBQXdCLEdBQ3pCLE1BQU0sa0NBQWtDLENBQUM7QUFFMUMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQUVsRTs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxZQUVVLE1BQXlDLEVBQ3pDLGNBQWtDLEVBQ2xDLE1BQWMsRUFFZCxNQUF1QyxFQUN2QyxhQUF1QztRQUx2QyxXQUFNLEdBQU4sTUFBTSxDQUFtQztRQUN6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVkLFdBQU0sR0FBTixNQUFNLENBQWlDO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtJQUM3QyxDQUFDO0lBRUwsV0FBVyxDQUNULElBQTRCLEVBQzVCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN0RSxHQUFHLENBQUMsQ0FBQyxhQUEwQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsRUFDakYsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLGFBQTBDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BGLHVHQUF1RztRQUN2RyxxRkFBcUY7UUFDckYsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyx5RUFBeUU7UUFDekUsbUJBQW1CO1FBQ25CLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUNFLENBQUMsQ0FBQyxLQUFLLFlBQVksd0NBQXdDLENBQUM7Z0JBQzVELENBQUMsQ0FBQyxLQUFLLFlBQVksd0NBQXdDLENBQUMsRUFBRTtnQkFDOUQsTUFBTSxLQUFLLENBQUM7YUFDYjtZQUVELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQztRQUNGLGVBQWU7UUFDZixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksK0JBQStCLENBQUMsRUFBRTtnQkFDdkQsTUFBTSxLQUFLLENBQUM7YUFDYjtZQUVELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQztRQUVGLGtFQUFrRTtRQUNsRSxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQiwyQ0FBMkM7WUFDM0MseUVBQXlFO1lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O21LQXJEVSxnQ0FBZ0Msa0JBRWpDLHdCQUF3QixxRUFJeEIsMkJBQTJCO3VLQU4xQixnQ0FBZ0MsY0FGL0IsTUFBTTsyRkFFUCxnQ0FBZ0M7a0JBSDVDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBSS9CLE1BQU07MkJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBJbmplY3QsXG4gIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENhbkFjdGl2YXRlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBSb3V0ZXIsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG4gIFVybFRyZWUsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBtYXAsXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEYWZmUm91dGluZ1VyaU5vcm1hbGl6ZXIgfSBmcm9tICdAZGFmZm9kaWwvY29yZS9yb3V0aW5nJztcbmltcG9ydCB7XG4gIERhZmZFeHRlcm5hbFJvdXRlcixcbiAgRGFmZkV4dGVybmFsUm91dGVyQ29uZmlndXJhdGlvbixcbiAgREFGRl9FWFRFUk5BTF9ST1VURVJfQ09ORklHLFxuICBEYWZmRXh0ZXJuYWxseVJlc29sdmFibGVVcmwsXG59IGZyb20gJ0BkYWZmb2RpbC9leHRlcm5hbC1yb3V0ZXInO1xuaW1wb3J0IHtcbiAgRGFmZkV4dGVybmFsUm91dGVyRHJpdmVySW50ZXJmYWNlLFxuICBEYWZmRXh0ZXJuYWxSb3V0ZXJEcml2ZXIsXG59IGZyb20gJ0BkYWZmb2RpbC9leHRlcm5hbC1yb3V0ZXIvZHJpdmVyJztcblxuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVyTm90Rm91bmRFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ub3QtZm91bmQtZXJyb3InO1xuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVyUGVybWFuZW50UmVkaXJlY3RFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9wZXJtYW5lbnQtcmVkaXJlY3QnO1xuaW1wb3J0IHsgRGFmZkV4dGVybmFsUm91dGVyVGVtcG9yYXJ5UmVkaXJlY3RFcnJvciB9IGZyb20gJy4uL2Vycm9ycy90ZW1wb3JhcnktcmVkaXJlY3QnO1xuaW1wb3J0IHsgcHJvY2Vzc0Vycm9ycyB9IGZyb20gJy4uL3Byb2Nlc3NvcnMvcHJvY2Vzcy1lcnJvcnMnO1xuaW1wb3J0IHsgcHJvY2Vzc1JlZGlyZWN0cyB9IGZyb20gJy4uL3Byb2Nlc3NvcnMvcHJvY2Vzcy1yZWRpcmVjdCc7XG5cbi8qKlxuICogVGhlIERhZmZFeHRlcm5hbFJvdXRlckV4aXN0ZW5jZUd1YXJkIGlzIHJlc3BvbnNpYmxlIGZvciBndWFyZGluZyB0aGUgd2lsZGNhcmQgcm91dGVcbiAqIG9mIGFuIEFuZ3VsYXIgQXBwIGFuZCBlaXRoZXIgbmF2aWdhdGluZyB0byBhIHJlc29sdmVkIHJvdXRlIHVwb24gc3VjY2Vzc2Z1bCByZXNvbHV0aW9uXG4gKiBvciBuYXZpZ2F0aW5nIHRvIHRoZSBjb25maWd1cmVkIHJvdXRlIHVwb24gYSBmYWlsZWQgcmVzb2x1dGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIERhZmZFeHRlcm5hbFJvdXRlckV4aXN0ZW5jZUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERhZmZFeHRlcm5hbFJvdXRlckRyaXZlcilcbiAgICBwcml2YXRlIGRyaXZlcjogRGFmZkV4dGVybmFsUm91dGVyRHJpdmVySW50ZXJmYWNlLFxuICAgIHByaXZhdGUgZXh0ZXJuYWxSb3V0ZXI6IERhZmZFeHRlcm5hbFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoREFGRl9FWFRFUk5BTF9ST1VURVJfQ09ORklHKVxuICAgIHByaXZhdGUgY29uZmlnOiBEYWZmRXh0ZXJuYWxSb3V0ZXJDb25maWd1cmF0aW9uLFxuICAgIHByaXZhdGUgdXJsTm9ybWFsaXplcjogRGFmZlJvdXRpbmdVcmlOb3JtYWxpemVyLFxuICApIHsgfVxuXG4gIGNhbkFjdGl2YXRlKFxuICAgIG5leHQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXG4gICk6IE9ic2VydmFibGU8VXJsVHJlZSB8IGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5kcml2ZXIucmVzb2x2ZSh0aGlzLnVybE5vcm1hbGl6ZXIubm9ybWFsaXplKHN0YXRlLnVybCkpLnBpcGUoXG4gICAgICBtYXAoKHJlc29sdmVkUm91dGU6IERhZmZFeHRlcm5hbGx5UmVzb2x2YWJsZVVybCkgPT4gcHJvY2Vzc0Vycm9ycyhyZXNvbHZlZFJvdXRlKSksXG4gICAgICBzd2l0Y2hNYXAocmVzb2x2ZWRSb3V0ZSA9PiB7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxSb3V0ZXIuYWRkKHJlc29sdmVkUm91dGUpO1xuICAgICAgICByZXR1cm4gb2YocmVzb2x2ZWRSb3V0ZSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocmVzb2x2ZWRSb3V0ZTogRGFmZkV4dGVybmFsbHlSZXNvbHZhYmxlVXJsKSA9PiBwcm9jZXNzUmVkaXJlY3RzKHJlc29sdmVkUm91dGUpKSxcbiAgICAgIC8vIE5vdGUgdGhhdCB3ZSBoYXZlIHRvIHVzZSBzdGF0ZS51cmwgYXMgd2Ugd2FudCB0byBlbnN1cmUgdGhhdCB3ZSBrZWVwIGFueSBmcmFnbWVudHMgb3IgcXVlcnkgc3RyaW5ncy5cbiAgICAgIC8vIFdoZW4gd2Ugc3VjY2VlZCwgcmVkaXJlY3QgdG8gdGhlIG5ldyByb3V0ZSwgYXMgY29uZmlnIGhhcyBjaGFuZ2VkIHNpbmNlIHdlIGluaXQnZC5cbiAgICAgIG1hcCgoKSA9PiB0aGlzLnJvdXRlci5wYXJzZVVybChzdGF0ZS51cmwpKSxcbiAgICAgIC8vIFdoZW4gd2UgZmFpbCwgd2UgbmVlZCB0byBwcm9jZXNzIGVycm9ycyBhcyBkaWN0YXRlZCBieSB0aGUgZXJyb3IgdHlwZS5cbiAgICAgIC8vIEhhbmRsZSByZWRpcmVjdHNcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIShlcnJvciBpbnN0YW5jZW9mIERhZmZFeHRlcm5hbFJvdXRlclBlcm1hbmVudFJlZGlyZWN0RXJyb3IpICYmXG4gICAgICAgICAgIShlcnJvciBpbnN0YW5jZW9mIERhZmZFeHRlcm5hbFJvdXRlclRlbXBvcmFyeVJlZGlyZWN0RXJyb3IpKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2YodGhpcy5yb3V0ZXIucGFyc2VVcmwoZXJyb3IucmVkaXJlY3RVcmwpKTtcbiAgICAgIH0pLFxuICAgICAgLy8gSGFuZGxlIFwiNDA0XCJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRGFmZkV4dGVybmFsUm91dGVyTm90Rm91bmRFcnJvcikpIHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZih0aGlzLnJvdXRlci5wYXJzZVVybCh0aGlzLmNvbmZpZy5ub3RGb3VuZFJlc29sdXRpb25QYXRoKSk7XG4gICAgICB9KSxcblxuICAgICAgLy9PdGhlcndpc2Ugc29tZXRoaW5nIHdlbnQgaG9ycmlibHkgd3JvbmcgYW5kIHdlIG5lZWQgdG8gYmFpbCBvdXQuXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAvL1RPRE8oZGFtaWVud2ViZGV2KTogQWRkIGEgbG9nZ2luZyBzeXN0ZW0uXG4gICAgICAgIC8vVGhpcyBsb2cgaXMgaW50ZW50aW9uYWwgdW50aWwgd2UgaGF2ZSBhIGJldHRlciBsb2dnaW5nIHN5c3RlbSBpbiBwbGFjZS5cbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICByZXR1cm4gb2YodGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5jb25maWcuZmFpbGVkUmVzb2x1dGlvblBhdGgpKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==