@veloceapps/sdk 8.0.0-1 → 8.0.0-100

Sign up to get free protection for your applications and to get access to all the features.
Files changed (317) hide show
  1. package/README.md +0 -1
  2. package/cms/README.md +0 -20
  3. package/cms/cms.actions.d.ts +7 -1
  4. package/cms/components/element-tools-panel/element-tools-panel.component.d.ts +1 -1
  5. package/cms/components/preview/preview.component.d.ts +1 -2
  6. package/cms/index.d.ts +1 -0
  7. package/cms/modules/runtime/services/runtime.service.d.ts +1 -1
  8. package/cms/services/index.d.ts +0 -1
  9. package/cms/types/common.types.d.ts +3 -0
  10. package/cms/types/index.d.ts +0 -1
  11. package/cms/utils/element.utils.d.ts +4 -1
  12. package/cms/vendor-map.d.ts +21 -13
  13. package/core/README.md +20 -0
  14. package/core/modules/configuration/helpers.d.ts +2 -2
  15. package/core/modules/configuration/services/configuration-runtime.service.d.ts +1 -1
  16. package/core/modules/configuration/services/configuration.service.d.ts +6 -1
  17. package/core/modules/flow-configuration/types/update.types.d.ts +1 -1
  18. package/core/pipes/action-code.pipe.d.ts +8 -0
  19. package/core/pipes/date.pipe.d.ts +2 -1
  20. package/core/pipes/index.d.ts +1 -0
  21. package/core/pipes/pipes.module.d.ts +2 -1
  22. package/core/services/context.service.d.ts +2 -0
  23. package/core/services/flow-info.service.d.ts +24 -0
  24. package/core/services/flow-state.service.d.ts +50 -0
  25. package/core/services/index.d.ts +3 -0
  26. package/core/services/quote-draft.service.d.ts +8 -1
  27. package/core/services/runtime-settings.service.d.ts +4 -1
  28. package/core/types/formatting-settings.types.d.ts +2 -0
  29. package/core/types/index.d.ts +2 -0
  30. package/{cms → core}/types/integration.types.d.ts +1 -0
  31. package/core/types/pipe.types.d.ts +1 -0
  32. package/esm2020/cms/cms.actions.mjs +15 -1
  33. package/esm2020/cms/components/element-children/element-children.component.mjs +3 -3
  34. package/esm2020/cms/components/element-children/element-children.module.mjs +4 -4
  35. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +3 -3
  36. package/esm2020/cms/components/element-drop-handle/element-drop-handle.module.mjs +4 -4
  37. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +8 -5
  38. package/esm2020/cms/components/element-renderer/element-renderer.module.mjs +4 -4
  39. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +5 -5
  40. package/esm2020/cms/components/plugin.component.mjs +3 -3
  41. package/esm2020/cms/components/preview/preview.component.mjs +9 -11
  42. package/esm2020/cms/components/preview/preview.module.mjs +6 -6
  43. package/esm2020/cms/directives/custom-template.directive.mjs +7 -7
  44. package/esm2020/cms/index.mjs +2 -1
  45. package/esm2020/cms/launcher.module.mjs +7 -7
  46. package/esm2020/cms/modules/federated/federated-host.directive.mjs +3 -3
  47. package/esm2020/cms/modules/federated/federated.component.mjs +3 -3
  48. package/esm2020/cms/modules/federated/federated.module.mjs +4 -4
  49. package/esm2020/cms/modules/migrations/migrations.module.mjs +4 -4
  50. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +3 -3
  51. package/esm2020/cms/modules/runtime/runtime.module.mjs +4 -4
  52. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +8 -4
  53. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +3 -3
  54. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +7 -7
  55. package/esm2020/cms/plugins/configuration.plugin.mjs +3 -3
  56. package/esm2020/cms/plugins/element-hover.plugin.mjs +3 -3
  57. package/esm2020/cms/plugins/io.plugin.mjs +14 -5
  58. package/esm2020/cms/plugins/page.plugin.mjs +5 -5
  59. package/esm2020/cms/plugins/region.plugin.mjs +3 -3
  60. package/esm2020/cms/plugins/script.plugin.mjs +3 -3
  61. package/esm2020/cms/services/element-context.service.mjs +3 -3
  62. package/esm2020/cms/services/index.mjs +1 -2
  63. package/esm2020/cms/services/io-provider.service.mjs +3 -3
  64. package/esm2020/cms/services/resources.service.mjs +3 -3
  65. package/esm2020/cms/services/templates.service.mjs +3 -3
  66. package/esm2020/cms/types/common.types.mjs +1 -1
  67. package/esm2020/cms/types/index.mjs +1 -2
  68. package/esm2020/cms/utils/element.utils.mjs +24 -2
  69. package/esm2020/cms/utils/elements-resolver.mjs +6 -3
  70. package/esm2020/cms/vendor-map.mjs +13 -5
  71. package/esm2020/core/core.module.mjs +10 -17
  72. package/esm2020/core/directives/directives.module.mjs +4 -4
  73. package/esm2020/core/directives/primeng-calendar.directive.mjs +3 -3
  74. package/esm2020/core/modules/configuration/configuration.module.mjs +4 -4
  75. package/esm2020/core/modules/configuration/helpers.mjs +8 -3
  76. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +11 -14
  77. package/esm2020/core/modules/configuration/services/configuration.service.mjs +29 -10
  78. package/esm2020/core/modules/configuration/services/configuration.state.mjs +5 -5
  79. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +9 -9
  80. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +4 -4
  81. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +3 -3
  82. package/esm2020/core/modules/flow-configuration/services/flow-update.service.mjs +13 -4
  83. package/esm2020/core/modules/flow-configuration/types/update.types.mjs +1 -1
  84. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  85. package/esm2020/core/pipes/date.pipe.mjs +13 -7
  86. package/esm2020/core/pipes/index.mjs +2 -1
  87. package/esm2020/core/pipes/number.pipe.mjs +3 -3
  88. package/esm2020/core/pipes/pipes.module.mjs +8 -7
  89. package/esm2020/core/pipes/price.pipe.mjs +3 -3
  90. package/esm2020/core/services/context.service.mjs +20 -5
  91. package/esm2020/core/services/flow-info.service.mjs +72 -0
  92. package/esm2020/core/services/flow-state.service.mjs +320 -0
  93. package/esm2020/core/services/index.mjs +4 -1
  94. package/esm2020/core/services/integration.state.mjs +37 -0
  95. package/esm2020/core/services/metric-calculation/metric-calculation.service.mjs +3 -3
  96. package/esm2020/core/services/product-images.service.mjs +3 -3
  97. package/esm2020/core/services/quote-draft.service.mjs +31 -6
  98. package/esm2020/core/services/runtime-settings.service.mjs +20 -5
  99. package/esm2020/core/types/formatting-settings.types.mjs +1 -1
  100. package/esm2020/core/types/index.mjs +3 -1
  101. package/esm2020/core/types/integration.types.mjs +2 -0
  102. package/esm2020/core/types/pipe.types.mjs +2 -0
  103. package/esm2020/src/components/dialog/dialog.component.mjs +3 -3
  104. package/esm2020/src/components/dialog/dialog.module.mjs +4 -4
  105. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +48 -46
  106. package/esm2020/src/components/doc-gen/doc-gen.module.mjs +4 -4
  107. package/esm2020/src/components/flow-header/flow-header.component.mjs +118 -0
  108. package/esm2020/src/components/flow-header/flow-header.module.mjs +19 -0
  109. package/esm2020/src/components/flow-header/index.mjs +2 -0
  110. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +45 -44
  111. package/esm2020/src/components/guided-selling/guided-selling.module.mjs +4 -4
  112. package/esm2020/src/configure-primeng.mjs +33 -0
  113. package/esm2020/src/flow-routing.module.mjs +66 -75
  114. package/esm2020/src/flow.component.mjs +17 -29
  115. package/esm2020/src/flow.module.mjs +11 -9
  116. package/esm2020/src/guards/context.guard.mjs +7 -12
  117. package/esm2020/src/guards/flow.guard.mjs +31 -0
  118. package/esm2020/src/guards/product-unload.guard.mjs +7 -4
  119. package/esm2020/src/guards/root.guard.mjs +17 -13
  120. package/esm2020/src/pages/assets/assets.component.mjs +18 -13
  121. package/esm2020/src/pages/assets/assets.module.mjs +4 -4
  122. package/esm2020/src/pages/catalog/catalog.component.mjs +17 -13
  123. package/esm2020/src/pages/catalog/catalog.module.mjs +4 -4
  124. package/esm2020/src/pages/debug/debug.component.mjs +12 -16
  125. package/esm2020/src/pages/debug/debug.module.mjs +4 -4
  126. package/esm2020/src/pages/empty-account/empty-account.component.mjs +3 -3
  127. package/esm2020/src/pages/empty-account/empty-account.module.mjs +4 -4
  128. package/esm2020/src/pages/product/product.component.mjs +7 -9
  129. package/esm2020/src/pages/product/product.module.mjs +4 -4
  130. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +3 -3
  131. package/esm2020/src/pages/record-not-found/record-not-found.module.mjs +4 -4
  132. package/esm2020/src/pages/remote/remote.component.mjs +13 -14
  133. package/esm2020/src/pages/remote/remote.module.mjs +4 -4
  134. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +17 -13
  135. package/esm2020/src/pages/shopping-cart/shopping-cart.module.mjs +4 -4
  136. package/esm2020/src/resolvers/flow.resolver.mjs +37 -51
  137. package/esm2020/src/resolvers/quote.resolver.mjs +40 -65
  138. package/esm2020/src/services/doc-gen.service.mjs +7 -6
  139. package/esm2020/src/services/flow-dialog.service.mjs +8 -4
  140. package/esm2020/src/services/flow-router.service.mjs +31 -10
  141. package/esm2020/src/services/flow.service.mjs +36 -11
  142. package/esm2020/src/services/guided-selling.service.mjs +7 -6
  143. package/esm2020/src/services/index.mjs +3 -1
  144. package/esm2020/src/types/flow-customization.types.mjs +1 -1
  145. package/esm2020/src/utils/flow.utils.mjs +6 -2
  146. package/fesm2015/veloceapps-sdk-cms.mjs +247 -221
  147. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  148. package/fesm2015/veloceapps-sdk-core.mjs +1373 -880
  149. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  150. package/fesm2015/veloceapps-sdk.mjs +725 -1457
  151. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  152. package/fesm2020/veloceapps-sdk-cms.mjs +269 -241
  153. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  154. package/fesm2020/veloceapps-sdk-core.mjs +1666 -1168
  155. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  156. package/fesm2020/veloceapps-sdk.mjs +794 -1525
  157. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  158. package/package.json +3 -11
  159. package/src/components/doc-gen/doc-gen.component.d.ts +6 -8
  160. package/src/components/flow-header/flow-header.component.d.ts +27 -0
  161. package/src/components/flow-header/flow-header.module.d.ts +9 -0
  162. package/src/components/flow-header/index.d.ts +1 -0
  163. package/src/components/guided-selling/guided-selling.component.d.ts +5 -7
  164. package/src/configure-primeng.d.ts +1 -0
  165. package/src/flow-routing.module.d.ts +6 -7
  166. package/src/flow.component.d.ts +4 -10
  167. package/src/flow.module.d.ts +2 -2
  168. package/src/guards/context.guard.d.ts +4 -5
  169. package/src/guards/flow.guard.d.ts +2 -0
  170. package/src/guards/product-unload.guard.d.ts +2 -2
  171. package/src/guards/root.guard.d.ts +0 -1
  172. package/src/pages/assets/assets.component.d.ts +3 -3
  173. package/src/pages/catalog/catalog.component.d.ts +3 -3
  174. package/src/pages/debug/debug.component.d.ts +5 -8
  175. package/src/pages/product/product.component.d.ts +2 -2
  176. package/src/pages/remote/remote.component.d.ts +1 -2
  177. package/src/pages/shopping-cart/shopping-cart.component.d.ts +3 -3
  178. package/src/resolvers/flow.resolver.d.ts +6 -7
  179. package/src/resolvers/quote.resolver.d.ts +6 -12
  180. package/src/services/doc-gen.service.d.ts +1 -1
  181. package/src/services/flow-dialog.service.d.ts +1 -0
  182. package/src/services/flow-router.service.d.ts +4 -2
  183. package/src/services/flow.service.d.ts +4 -2
  184. package/src/services/guided-selling.service.d.ts +1 -1
  185. package/src/services/index.d.ts +2 -0
  186. package/src/types/flow-customization.types.d.ts +1 -1
  187. package/esm2020/cms/services/integration.state.mjs +0 -37
  188. package/esm2020/cms/types/integration.types.mjs +0 -2
  189. package/esm2020/runtime/components/component-preview/component-preview.component.mjs +0 -125
  190. package/esm2020/runtime/components/index.mjs +0 -5
  191. package/esm2020/runtime/components/section-renderer/section-renderer.component.mjs +0 -67
  192. package/esm2020/runtime/components/ui-runtime/runtime.component.mjs +0 -440
  193. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +0 -108
  194. package/esm2020/runtime/execution/components/children-placeholder/children-placeholder.component.mjs +0 -60
  195. package/esm2020/runtime/execution/components/context-provider/context-provider.component.mjs +0 -39
  196. package/esm2020/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.mjs +0 -67
  197. package/esm2020/runtime/execution/components/federated/federated.component.mjs +0 -74
  198. package/esm2020/runtime/execution/components/velo-attribute/velo-attribute.component.mjs +0 -60
  199. package/esm2020/runtime/execution/components/velo-multiselect/velo-multiselect.component.mjs +0 -130
  200. package/esm2020/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.mjs +0 -72
  201. package/esm2020/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.mjs +0 -97
  202. package/esm2020/runtime/execution/components/velo-port-radio/velo-port-radio.component.mjs +0 -142
  203. package/esm2020/runtime/execution/components/velo-type/velo-type.component.mjs +0 -119
  204. package/esm2020/runtime/execution/directives/section-script.directive.mjs +0 -247
  205. package/esm2020/runtime/execution/directives/sf-query.directive.mjs +0 -35
  206. package/esm2020/runtime/execution/directives/velo-attribute.directive.mjs +0 -88
  207. package/esm2020/runtime/execution/directives/velo-port.directive.mjs +0 -376
  208. package/esm2020/runtime/execution/directives/vl-approval.directive.mjs +0 -23
  209. package/esm2020/runtime/execution/directives/vl-document-attachments.directive.mjs +0 -36
  210. package/esm2020/runtime/execution/directives/vl-document-templates.directive.mjs +0 -60
  211. package/esm2020/runtime/execution/directives/vl-quote.directive.mjs +0 -42
  212. package/esm2020/runtime/execution/directives/vl-ramp.directive.mjs +0 -55
  213. package/esm2020/runtime/execution/runtime-execution.module.mjs +0 -133
  214. package/esm2020/runtime/execution/utils/federated.util.mjs +0 -32
  215. package/esm2020/runtime/index.mjs +0 -5
  216. package/esm2020/runtime/runtime.module.mjs +0 -74
  217. package/esm2020/runtime/services/cart.service.mjs +0 -29
  218. package/esm2020/runtime/services/collapsible-state.service.mjs +0 -34
  219. package/esm2020/runtime/services/configuration.service.mjs +0 -119
  220. package/esm2020/runtime/services/current-state.service.mjs +0 -17
  221. package/esm2020/runtime/services/form-scope.service.mjs +0 -30
  222. package/esm2020/runtime/services/index.mjs +0 -4
  223. package/esm2020/runtime/services/product-model-cache.service.mjs +0 -31
  224. package/esm2020/runtime/services/runtime-context.service.mjs +0 -60
  225. package/esm2020/runtime/services/runtime-form.service.mjs +0 -219
  226. package/esm2020/runtime/services/runtime.service.mjs +0 -115
  227. package/esm2020/runtime/services/section-helper.service.mjs +0 -27
  228. package/esm2020/runtime/services/section-scope.service.mjs +0 -36
  229. package/esm2020/runtime/services/section-store.service.mjs +0 -22
  230. package/esm2020/runtime/services/section.service.mjs +0 -117
  231. package/esm2020/runtime/types/bound-data.types.mjs +0 -7
  232. package/esm2020/runtime/types/index.mjs +0 -3
  233. package/esm2020/runtime/types/quote-states.types.mjs +0 -2
  234. package/esm2020/runtime/types/runtime.types.mjs +0 -2
  235. package/esm2020/runtime/types/script-registry.types.mjs +0 -51
  236. package/esm2020/runtime/utils/line-item.util.mjs +0 -270
  237. package/esm2020/runtime/utils/section.utils.mjs +0 -26
  238. package/esm2020/runtime/utils/sections-binder.helper.mjs +0 -105
  239. package/esm2020/runtime/veloceapps-sdk-runtime.mjs +0 -5
  240. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +0 -119
  241. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +0 -47
  242. package/esm2020/src/components/header/header.component.mjs +0 -355
  243. package/esm2020/src/components/header/header.module.mjs +0 -52
  244. package/esm2020/src/components/header/header.types.mjs +0 -2
  245. package/esm2020/src/components/header/metrics/index.mjs +0 -2
  246. package/esm2020/src/components/header/metrics/metrics.component.mjs +0 -255
  247. package/esm2020/src/components/header/metrics/metrics.definitions.mjs +0 -2
  248. package/esm2020/src/components/header/metrics/metrics.module.mjs +0 -69
  249. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +0 -137
  250. package/esm2020/src/pages/legacy-product/legacy-product.module.mjs +0 -19
  251. package/fesm2015/veloceapps-sdk-runtime.mjs +0 -3770
  252. package/fesm2015/veloceapps-sdk-runtime.mjs.map +0 -1
  253. package/fesm2020/veloceapps-sdk-runtime.mjs +0 -3767
  254. package/fesm2020/veloceapps-sdk-runtime.mjs.map +0 -1
  255. package/runtime/README.md +0 -5
  256. package/runtime/components/component-preview/component-preview.component.d.ts +0 -27
  257. package/runtime/components/index.d.ts +0 -4
  258. package/runtime/components/section-renderer/section-renderer.component.d.ts +0 -25
  259. package/runtime/components/ui-runtime/runtime.component.d.ts +0 -53
  260. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +0 -27
  261. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +0 -30
  262. package/runtime/execution/components/context-provider/context-provider.component.d.ts +0 -14
  263. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +0 -25
  264. package/runtime/execution/components/federated/federated.component.d.ts +0 -36
  265. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +0 -19
  266. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +0 -35
  267. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +0 -22
  268. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +0 -22
  269. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +0 -28
  270. package/runtime/execution/components/velo-type/velo-type.component.d.ts +0 -31
  271. package/runtime/execution/directives/section-script.directive.d.ts +0 -59
  272. package/runtime/execution/directives/sf-query.directive.d.ts +0 -15
  273. package/runtime/execution/directives/velo-attribute.directive.d.ts +0 -26
  274. package/runtime/execution/directives/velo-port.directive.d.ts +0 -74
  275. package/runtime/execution/directives/vl-approval.directive.d.ts +0 -10
  276. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +0 -15
  277. package/runtime/execution/directives/vl-document-templates.directive.d.ts +0 -33
  278. package/runtime/execution/directives/vl-quote.directive.d.ts +0 -14
  279. package/runtime/execution/directives/vl-ramp.directive.d.ts +0 -15
  280. package/runtime/execution/runtime-execution.module.d.ts +0 -25
  281. package/runtime/execution/utils/federated.util.d.ts +0 -6
  282. package/runtime/index.d.ts +0 -4
  283. package/runtime/runtime.module.d.ts +0 -16
  284. package/runtime/services/cart.service.d.ts +0 -15
  285. package/runtime/services/collapsible-state.service.d.ts +0 -15
  286. package/runtime/services/configuration.service.d.ts +0 -20
  287. package/runtime/services/current-state.service.d.ts +0 -8
  288. package/runtime/services/form-scope.service.d.ts +0 -20
  289. package/runtime/services/index.d.ts +0 -3
  290. package/runtime/services/product-model-cache.service.d.ts +0 -14
  291. package/runtime/services/runtime-context.service.d.ts +0 -16
  292. package/runtime/services/runtime-form.service.d.ts +0 -24
  293. package/runtime/services/runtime.service.d.ts +0 -44
  294. package/runtime/services/section-helper.service.d.ts +0 -8
  295. package/runtime/services/section-scope.service.d.ts +0 -14
  296. package/runtime/services/section-store.service.d.ts +0 -11
  297. package/runtime/services/section.service.d.ts +0 -30
  298. package/runtime/types/bound-data.types.d.ts +0 -13
  299. package/runtime/types/index.d.ts +0 -2
  300. package/runtime/types/quote-states.types.d.ts +0 -6
  301. package/runtime/types/runtime.types.d.ts +0 -19
  302. package/runtime/types/script-registry.types.d.ts +0 -13
  303. package/runtime/utils/line-item.util.d.ts +0 -34
  304. package/runtime/utils/section.utils.d.ts +0 -2
  305. package/runtime/utils/sections-binder.helper.d.ts +0 -16
  306. package/src/components/header/cart-overlay/cart-preview.component.d.ts +0 -36
  307. package/src/components/header/cart-overlay/cart-preview.module.d.ts +0 -14
  308. package/src/components/header/header.component.d.ts +0 -70
  309. package/src/components/header/header.module.d.ts +0 -16
  310. package/src/components/header/header.types.d.ts +0 -20
  311. package/src/components/header/metrics/index.d.ts +0 -1
  312. package/src/components/header/metrics/metrics.component.d.ts +0 -67
  313. package/src/components/header/metrics/metrics.definitions.d.ts +0 -1
  314. package/src/components/header/metrics/metrics.module.d.ts +0 -18
  315. package/src/pages/legacy-product/legacy-product.component.d.ts +0 -37
  316. package/src/pages/legacy-product/legacy-product.module.d.ts +0 -9
  317. /package/{cms → core}/services/integration.state.d.ts +0 -0
@@ -0,0 +1,320 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ConfigurationProcessorsApiService, FlowStateApiService, QuoteApiService } from '@veloceapps/api';
3
+ import { ToastService, ToastType } from '@veloceapps/components';
4
+ import { ConfigurationContextMode, EntityUtil, isDefined, UUID, } from '@veloceapps/core';
5
+ import { BehaviorSubject, combineLatest, filter, forkJoin, map, noop, of, switchMap, tap } from 'rxjs';
6
+ import { FlowConfigurationService } from '../modules';
7
+ import { ContextService } from './context.service';
8
+ import { FlowInfoService } from './flow-info.service';
9
+ import { QuoteDraftService } from './quote-draft.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "./context.service";
12
+ import * as i2 from "./quote-draft.service";
13
+ import * as i3 from "./flow-info.service";
14
+ import * as i4 from "../modules";
15
+ import * as i5 from "@veloceapps/api";
16
+ import * as i6 from "@veloceapps/components";
17
+ export class FlowStateService {
18
+ constructor(contextService, quoteDraftService, flowInfoService, flowConfiguration, processorsApiService, flowStateApiService, quoteApiService, toastService) {
19
+ this.contextService = contextService;
20
+ this.quoteDraftService = quoteDraftService;
21
+ this.flowInfoService = flowInfoService;
22
+ this.flowConfiguration = flowConfiguration;
23
+ this.processorsApiService = processorsApiService;
24
+ this.flowStateApiService = flowStateApiService;
25
+ this.quoteApiService = quoteApiService;
26
+ this.toastService = toastService;
27
+ this.NOT_INITIALIZED = Symbol();
28
+ this.stateId$ = new BehaviorSubject(null);
29
+ this.processors = {};
30
+ this.subscriptions = {};
31
+ }
32
+ init$() {
33
+ if (this.getFlowSafe().properties.stateful) {
34
+ return this.initStateful$();
35
+ }
36
+ else {
37
+ return this.initStateless$();
38
+ }
39
+ }
40
+ cleanup() {
41
+ Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());
42
+ this.subscriptions = {};
43
+ if (this.stateId$.value) {
44
+ this.flowStateApiService.cancel(this.stateId$.value).subscribe();
45
+ this.stateId$.next(null);
46
+ }
47
+ this.processors = {};
48
+ }
49
+ isInitialized$() {
50
+ return combineLatest([this.stateId$, this.quoteDraftService.isInitialized$]).pipe(map(values => values.some(Boolean)));
51
+ }
52
+ isInitialized() {
53
+ return Boolean(this.stateId$.value) || this.quoteDraftService.isInitialized;
54
+ }
55
+ execute$(scope, exec) {
56
+ const request = this.execToRequest(scope, exec);
57
+ return this.executeRequest$(request).pipe(map(result => {
58
+ // Keep only requested results
59
+ const actualSelectors = Object.entries(result.selectors).reduce((trunk, [requestId, result]) => {
60
+ if (exec.selectors?.[requestId]) {
61
+ trunk[requestId] = result;
62
+ }
63
+ return trunk;
64
+ }, {});
65
+ return actualSelectors;
66
+ }));
67
+ }
68
+ dispatch$(scope, action, inputData) {
69
+ const exec = {
70
+ actions: [{ name: action, inputData }],
71
+ };
72
+ const request = this.execToRequest(scope, exec);
73
+ return this.executeRequest$(request).pipe(map(noop));
74
+ }
75
+ select$(scope, selectorName, inputData) {
76
+ const requestId = UUID.UUID();
77
+ const request = this.execToRequest(scope, {
78
+ selectors: {
79
+ [requestId]: {
80
+ name: selectorName,
81
+ inputData,
82
+ },
83
+ },
84
+ });
85
+ return this.executeRequest$(request).pipe(map(response => response.selectors[requestId]));
86
+ }
87
+ subscribe$(scope, selectorName, inputData) {
88
+ const inputDataHash = UUID.hex(JSON.stringify(inputData)).slice(0, 8);
89
+ const requestId = `${scope}/${selectorName}/${inputDataHash}`;
90
+ if (!this.subscriptions[requestId]) {
91
+ const request = this.execToRequest(scope, {
92
+ selectors: {
93
+ [requestId]: {
94
+ name: selectorName,
95
+ inputData,
96
+ },
97
+ },
98
+ });
99
+ this.subscriptions[requestId] = {
100
+ request,
101
+ data$: new BehaviorSubject(this.NOT_INITIALIZED),
102
+ };
103
+ this.executeRequest$({}).subscribe();
104
+ }
105
+ return this.subscriptions[requestId].data$.pipe(filter(data => data != this.NOT_INITIALIZED), map(data => data));
106
+ }
107
+ save$() {
108
+ if (this.getFlowSafe().properties.stateful) {
109
+ if (this.stateId$.value) {
110
+ return this.flowStateApiService.save(this.stateId$.value);
111
+ }
112
+ }
113
+ else {
114
+ const quoteDraft = this.quoteDraftService.quoteDraftForActivePriceList;
115
+ if (quoteDraft) {
116
+ return this.quoteApiService.upsertQuote(quoteDraft).pipe(map(noop));
117
+ }
118
+ }
119
+ return of(undefined);
120
+ }
121
+ submit$() {
122
+ if (this.getFlowSafe().properties.stateful) {
123
+ if (this.stateId$.value) {
124
+ return this.flowStateApiService.submit(this.stateId$.value);
125
+ }
126
+ }
127
+ else {
128
+ const quoteDraft = this.quoteDraftService.quoteDraftForActivePriceList;
129
+ if (quoteDraft) {
130
+ return this.quoteApiService.submitQuote(quoteDraft).pipe(map(noop));
131
+ }
132
+ }
133
+ return of(undefined);
134
+ }
135
+ getOwnerIdByScope(scope) {
136
+ const ownerId = this.flowInfoService.templates[scope]?.id;
137
+ if (!ownerId) {
138
+ throw `OwnerId is not found for scope ${scope}`;
139
+ }
140
+ return ownerId;
141
+ }
142
+ getScopeByOwnerId(id) {
143
+ for (const template of Object.values(this.flowInfoService.templates)) {
144
+ if (template.id === id) {
145
+ return template.type;
146
+ }
147
+ }
148
+ return;
149
+ }
150
+ execToRequest(scope, exec) {
151
+ const ownerId = this.getOwnerIdByScope(scope);
152
+ return {
153
+ actions: exec.actions?.map(action => ({ apiName: action.name, ownerId, inputData: action.inputData ?? {} })),
154
+ selectors: exec.selectors &&
155
+ Object.entries(exec.selectors).reduce((trunk, [key, selector]) => ({
156
+ ...trunk,
157
+ [key]: { apiName: selector.name, ownerId, inputData: selector.inputData ?? {} },
158
+ }), {}),
159
+ };
160
+ }
161
+ executeRequest$(request) {
162
+ const fullRequest = {
163
+ ...request,
164
+ selectors: {
165
+ ...request.selectors,
166
+ ...Object.values(this.subscriptions).reduce((trunk, subscription) => {
167
+ return {
168
+ ...trunk,
169
+ ...subscription.request.selectors,
170
+ };
171
+ }, {}),
172
+ },
173
+ };
174
+ const execution$ = this.getFlowSafe().properties.stateful
175
+ ? this.executeStateful$(fullRequest)
176
+ : this.executeStateless$(fullRequest);
177
+ return execution$.pipe(tap(result => {
178
+ Object.entries(result.selectors).forEach(([requestId, selectorResult]) => {
179
+ if (!selectorResult.success) {
180
+ this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });
181
+ }
182
+ const subscription$ = this.subscriptions[requestId]?.data$;
183
+ if (subscription$) {
184
+ subscription$.next(selectorResult);
185
+ }
186
+ });
187
+ }));
188
+ }
189
+ initStateful$() {
190
+ return this.flowStateApiService
191
+ .init({
192
+ quoteId: this.contextService.resolve().headerId,
193
+ params: this.flowInfoService.params ?? {},
194
+ })
195
+ .pipe(map(({ stateId }) => {
196
+ this.stateId$.next(stateId);
197
+ }));
198
+ }
199
+ executeStateful$(request) {
200
+ if (!this.stateId$.value) {
201
+ throw 'Stateful session is not initialized';
202
+ }
203
+ return this.flowStateApiService
204
+ .execute(this.stateId$.value, request)
205
+ .pipe(tap(response => this.stateId$.next(response.stateId)));
206
+ }
207
+ initStateless$() {
208
+ const { headerId } = this.contextService.resolve();
209
+ const { stateful } = this.getFlowSafe().properties;
210
+ const processorsInit$ = stateful == false ? this.initProcessors$() : of(undefined);
211
+ const stateInit$ = this.quoteDraftService
212
+ .init(headerId, this.flowInfoService.params ?? {})
213
+ .pipe(switchMap(() => this.calculate$()));
214
+ return forkJoin([processorsInit$, stateInit$]).pipe(tap(() => this.quoteDraftService.finalizeInit()), map(noop));
215
+ }
216
+ calculate$() {
217
+ const flowState = this.quoteDraftService.quoteDraft;
218
+ if (!flowState) {
219
+ return of(undefined);
220
+ }
221
+ /*
222
+ Don't execute procedures when:
223
+ * Initializing a standalone product configuration UI, as procedure is execute in /price call
224
+ * Initializing an empty account (account with no assets)
225
+ */
226
+ const isEmptyAccountMode = this.contextService.mode === ConfigurationContextMode.ACCOUNT && !this.quoteDraftService.hasProducts;
227
+ if (this.quoteDraftService.isStandalone || isEmptyAccountMode) {
228
+ return of(undefined);
229
+ }
230
+ return this.flowConfiguration.calculate$(flowState);
231
+ }
232
+ executeStateless$(request) {
233
+ return of(undefined).pipe(switchMap(() => {
234
+ if (!this.quoteDraftService.quoteDraft || !request.actions?.length) {
235
+ return of(undefined);
236
+ }
237
+ let flowState = this.quoteDraftService.quoteDraft;
238
+ request.actions.forEach(action => {
239
+ flowState = this.executeActionScript(flowState, action) ?? flowState;
240
+ });
241
+ this.quoteDraftService.updateQuoteDraft(flowState);
242
+ return this.calculate$();
243
+ }), map(() => {
244
+ if (!this.quoteDraftService.quoteDraft) {
245
+ throw 'QuoteDraft is not initialized';
246
+ }
247
+ const flowState = this.quoteDraftService.quoteDraft;
248
+ const executionResult = EntityUtil.entries(request.selectors ?? {}).reduce((result, [key, selector]) => {
249
+ try {
250
+ result.selectors[key] = {
251
+ success: true,
252
+ result: this.executeSelectorScript(flowState, selector),
253
+ };
254
+ }
255
+ catch (e) {
256
+ result.selectors[key] = {
257
+ success: false,
258
+ errorMessage: String(e),
259
+ };
260
+ }
261
+ return result;
262
+ }, { stateId: '', selectors: {} });
263
+ return executionResult;
264
+ }));
265
+ }
266
+ getFlowSafe() {
267
+ if (!this.flowInfoService.flow) {
268
+ throw 'Flow is not defined';
269
+ }
270
+ return this.flowInfoService.flow;
271
+ }
272
+ initProcessors$() {
273
+ const owners$ = Object.values(this.flowInfoService.templates)
274
+ .map(template => {
275
+ if (!template) {
276
+ return;
277
+ }
278
+ return this.processorsApiService.fetchConfigurationProcessors$(template.id).pipe(tap(processors => {
279
+ const processorsMap = processors.reduce((acc, p) => {
280
+ acc[p.apiName] = p;
281
+ return acc;
282
+ }, {});
283
+ this.processors[template.id] = processorsMap;
284
+ }));
285
+ })
286
+ .filter(isDefined);
287
+ return forkJoin(owners$).pipe(map(noop));
288
+ }
289
+ executeActionScript(request, executable) {
290
+ const script = this.processors[executable.ownerId]?.[executable.apiName]?.script;
291
+ if (!script) {
292
+ const scope = this.getScopeByOwnerId(executable.ownerId);
293
+ const scopeText = scope ? ` in ${scope}` : '';
294
+ throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;
295
+ }
296
+ return this.executeProcessorScript(request, script, executable.inputData);
297
+ }
298
+ executeSelectorScript(request, executable) {
299
+ const script = this.processors[executable.ownerId]?.[executable.apiName]?.script;
300
+ if (!script) {
301
+ const scope = this.getScopeByOwnerId(executable.ownerId);
302
+ const scopeText = scope ? ` in ${scope}` : '';
303
+ throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;
304
+ }
305
+ return this.executeProcessorScript(request, script, executable.inputData);
306
+ }
307
+ executeProcessorScript(request, script, inputData) {
308
+ return new Function(`${script}\nreturn transform;`)()({
309
+ request,
310
+ inputData: inputData,
311
+ });
312
+ }
313
+ }
314
+ FlowStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateService, deps: [{ token: i1.ContextService }, { token: i2.QuoteDraftService }, { token: i3.FlowInfoService }, { token: i4.FlowConfigurationService }, { token: i5.ConfigurationProcessorsApiService }, { token: i5.FlowStateApiService }, { token: i5.QuoteApiService }, { token: i6.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
315
+ FlowStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateService, providedIn: 'root' });
316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateService, decorators: [{
317
+ type: Injectable,
318
+ args: [{ providedIn: 'root' }]
319
+ }], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.QuoteDraftService }, { type: i3.FlowInfoService }, { type: i4.FlowConfigurationService }, { type: i5.ConfigurationProcessorsApiService }, { type: i5.FlowStateApiService }, { type: i5.QuoteApiService }, { type: i6.ToastService }]; } });
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9mbG93LXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsd0JBQXdCLEVBRXhCLFVBQVUsRUFRVixTQUFTLEVBRVQsSUFBSSxHQUNMLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7OztBQWMxRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTzNCLFlBQ1UsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLGVBQWdDLEVBQ2hDLGlCQUEyQyxFQUMzQyxvQkFBdUQsRUFDdkQsbUJBQXdDLEVBQ3hDLGVBQWdDLEVBQ2hDLFlBQTBCO1FBUDFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLG9CQUFlLEdB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QWdCO2lIQUFoQixnQkFBZ0IsY0FESCxNQUFNOzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblByb2Nlc3NvcnNBcGlTZXJ2aWNlLCBGbG93U3RhdGVBcGlTZXJ2aWNlLCBRdW90ZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSxcbiAgQ29uZmlndXJhdGlvblByb2Nlc3NvcixcbiAgRW50aXR5VXRpbCxcbiAgRmxvdyxcbiAgRmxvd1N0YXRlLFxuICBGbG93U3RhdGVFeGVjdXRhYmxlRFRPLFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0LFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPLFxuICBGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQsXG4gIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2UsXG4gIGlzRGVmaW5lZCxcbiAgVUlUZW1wbGF0ZVR5cGUsXG4gIFVVSUQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIGZvcmtKb2luLCBtYXAsIG5vb3AsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbW9kdWxlcyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4vY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSB9IGZyb20gJy4vZmxvdy1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVvdGVEcmFmdFNlcnZpY2UgfSBmcm9tICcuL3F1b3RlLWRyYWZ0LnNlcnZpY2UnO1xuXG50eXBlIFByb2Nlc3NvcnNNYXAgPSBQYXJ0aWFsPHtcbiAgW293bmVySWQ6IHN0cmluZ106IHtcbiAgICBbYXBpTmFtZTogc3RyaW5nXTogQ29uZmlndXJhdGlvblByb2Nlc3NvcjtcbiAgfTtcbn0+O1xuXG50eXBlIFN1YnNjcmlwdGlvbiA9IHtcbiAgcmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTztcbiAgZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPjtcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRmxvd1N0YXRlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgTk9UX0lOSVRJQUxJWkVEID0gU3ltYm9sKCk7XG5cbiAgcHJpdmF0ZSBzdGF0ZUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcHJvY2Vzc29yczogUHJvY2Vzc29yc01hcCA9IHt9O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFJlY29yZDxzdHJpbmcsIFN1YnNjcmlwdGlvbj4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlRHJhZnRTZXJ2aWNlOiBRdW90ZURyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIGZsb3dJbmZvU2VydmljZTogRmxvd0luZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHByb2Nlc3NvcnNBcGlTZXJ2aWNlOiBDb25maWd1cmF0aW9uUHJvY2Vzc29yc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVBcGlTZXJ2aWNlOiBGbG93U3RhdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVBcGlTZXJ2aWNlOiBRdW90ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBpbml0JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nZXRGbG93U2FmZSgpLnByb3BlcnRpZXMuc3RhdGVmdWwpIHtcbiAgICAgIHJldHVybiB0aGlzLmluaXRTdGF0ZWZ1bCQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW5pdFN0YXRlbGVzcyQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYW51cCgpOiB2b2lkIHtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykuZm9yRWFjaCgoeyBkYXRhJCB9KSA9PiBkYXRhJC5jb21wbGV0ZSgpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB7fTtcblxuICAgIGlmICh0aGlzLnN0YXRlSWQkLnZhbHVlKSB7XG4gICAgICB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2UuY2FuY2VsKHRoaXMuc3RhdGVJZCQudmFsdWUpLnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zdGF0ZUlkJC5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMucHJvY2Vzc29ycyA9IHt9O1xuICB9XG5cbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnN0YXRlSWQkLCB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQkXSkucGlwZShcbiAgICAgIG1hcCh2YWx1ZXMgPT4gdmFsdWVzLnNvbWUoQm9vbGVhbikpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnN0YXRlSWQkLnZhbHVlKSB8fCB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZSQoXG4gICAgc2NvcGU6IFVJVGVtcGxhdGVUeXBlLFxuICAgIGV4ZWM6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QsXG4gICk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0WydzZWxlY3RvcnMnXT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3Qoc2NvcGUsIGV4ZWMpO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHJlcXVlc3QpLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgLy8gS2VlcCBvbmx5IHJlcXVlc3RlZCByZXN1bHRzXG4gICAgICAgIGNvbnN0IGFjdHVhbFNlbGVjdG9ycyA9IE9iamVjdC5lbnRyaWVzKHJlc3VsdC5zZWxlY3RvcnMpLnJlZHVjZShcbiAgICAgICAgICAodHJ1bms6IFJlY29yZDxzdHJpbmcsIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U+LCBbcmVxdWVzdElkLCByZXN1bHRdKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXhlYy5zZWxlY3RvcnM/LltyZXF1ZXN0SWRdKSB7XG4gICAgICAgICAgICAgIHRydW5rW3JlcXVlc3RJZF0gPSByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1bms7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gYWN0dWFsU2VsZWN0b3JzO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaCQoc2NvcGU6IFVJVGVtcGxhdGVUeXBlLCBhY3Rpb246IHN0cmluZywgaW5wdXREYXRhOiB1bmtub3duKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZXhlYzogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFjdGlvbnM6IFt7IG5hbWU6IGFjdGlvbiwgaW5wdXREYXRhIH1dLFxuICAgIH07XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuZXhlY1RvUmVxdWVzdChzY29wZSwgZXhlYyk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUmVxdWVzdCQocmVxdWVzdCkucGlwZShtYXAobm9vcCkpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdCQ8UmVzcG9uc2UgPSB1bmtub3duPihcbiAgICBzY29wZTogVUlUZW1wbGF0ZVR5cGUsXG4gICAgc2VsZWN0b3JOYW1lOiBzdHJpbmcsXG4gICAgaW5wdXREYXRhPzogdW5rbm93bixcbiAgKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVTZWxlY3RvclJlc3BvbnNlPFJlc3BvbnNlPj4ge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IFVVSUQuVVVJRCgpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmV4ZWNUb1JlcXVlc3Qoc2NvcGUsIHtcbiAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICBbcmVxdWVzdElkXToge1xuICAgICAgICAgIG5hbWU6IHNlbGVjdG9yTmFtZSxcbiAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJlcXVlc3QkKHJlcXVlc3QpLnBpcGUoXG4gICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2Uuc2VsZWN0b3JzW3JlcXVlc3RJZF0gYXMgRmxvd1N0YXRlU2VsZWN0b3JSZXNwb25zZTxSZXNwb25zZT4pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlJDxSZXNwb25zZSA9IHVua25vd24+KFxuICAgIHNjb3BlOiBVSVRlbXBsYXRlVHlwZSxcbiAgICBzZWxlY3Rvck5hbWU6IHN0cmluZyxcbiAgICBpbnB1dERhdGE/OiB1bmtub3duLFxuICApOiBPYnNlcnZhYmxlPEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+PiB7XG4gICAgY29uc3QgaW5wdXREYXRhSGFzaCA9IFVVSUQuaGV4KEpTT04uc3RyaW5naWZ5KGlucHV0RGF0YSkpLnNsaWNlKDAsIDgpO1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9IGAke3Njb3BlfS8ke3NlbGVjdG9yTmFtZX0vJHtpbnB1dERhdGFIYXNofWA7XG5cbiAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9uc1tyZXF1ZXN0SWRdKSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5leGVjVG9SZXF1ZXN0KHNjb3BlLCB7XG4gICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgIFtyZXF1ZXN0SWRdOiB7XG4gICAgICAgICAgICBuYW1lOiBzZWxlY3Rvck5hbWUsXG4gICAgICAgICAgICBpbnB1dERhdGEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXSA9IHtcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgZGF0YSQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5rbm93bj4odGhpcy5OT1RfSU5JVElBTElaRUQpLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCQoe30pLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvbnNbcmVxdWVzdElkXS5kYXRhJC5waXBlKFxuICAgICAgZmlsdGVyKGRhdGEgPT4gZGF0YSAhPSB0aGlzLk5PVF9JTklUSUFMSVpFRCksXG4gICAgICBtYXAoZGF0YSA9PiBkYXRhIGFzIEZsb3dTdGF0ZVNlbGVjdG9yUmVzcG9uc2U8UmVzcG9uc2U+KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmUkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGVJZCQudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5zYXZlKHRoaXMuc3RhdGVJZCQudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Rm9yQWN0aXZlUHJpY2VMaXN0O1xuICAgICAgaWYgKHF1b3RlRHJhZnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVvdGVBcGlTZXJ2aWNlLnVwc2VydFF1b3RlKHF1b3RlRHJhZnQpLnBpcGUobWFwKG5vb3ApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGlmICh0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGVJZCQudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxvd1N0YXRlQXBpU2VydmljZS5zdWJtaXQodGhpcy5zdGF0ZUlkJC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnRGb3JBY3RpdmVQcmljZUxpc3Q7XG4gICAgICBpZiAocXVvdGVEcmFmdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2Uuc3VibWl0UXVvdGUocXVvdGVEcmFmdCkucGlwZShtYXAobm9vcCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPd25lcklkQnlTY29wZShzY29wZTogVUlUZW1wbGF0ZVR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IG93bmVySWQgPSB0aGlzLmZsb3dJbmZvU2VydmljZS50ZW1wbGF0ZXNbc2NvcGVdPy5pZDtcbiAgICBpZiAoIW93bmVySWQpIHtcbiAgICAgIHRocm93IGBPd25lcklkIGlzIG5vdCBmb3VuZCBmb3Igc2NvcGUgJHtzY29wZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBvd25lcklkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY29wZUJ5T3duZXJJZChpZDogc3RyaW5nKTogVUlUZW1wbGF0ZVR5cGUgfCB1bmRlZmluZWQge1xuICAgIGZvciAoY29uc3QgdGVtcGxhdGUgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmZsb3dJbmZvU2VydmljZS50ZW1wbGF0ZXMpKSB7XG4gICAgICBpZiAodGVtcGxhdGUuaWQgPT09IGlkKSB7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZS50eXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY1RvUmVxdWVzdChzY29wZTogVUlUZW1wbGF0ZVR5cGUsIGV4ZWM6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3QpOiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPIHtcbiAgICBjb25zdCBvd25lcklkID0gdGhpcy5nZXRPd25lcklkQnlTY29wZShzY29wZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWN0aW9uczogZXhlYy5hY3Rpb25zPy5tYXAoYWN0aW9uID0+ICh7IGFwaU5hbWU6IGFjdGlvbi5uYW1lLCBvd25lcklkLCBpbnB1dERhdGE6IGFjdGlvbi5pbnB1dERhdGEgPz8ge30gfSkpLFxuICAgICAgc2VsZWN0b3JzOlxuICAgICAgICBleGVjLnNlbGVjdG9ycyAmJlxuICAgICAgICBPYmplY3QuZW50cmllcyhleGVjLnNlbGVjdG9ycykucmVkdWNlKFxuICAgICAgICAgICh0cnVuazogUmVjb3JkPHN0cmluZywgRmxvd1N0YXRlRXhlY3V0YWJsZURUTz4sIFtrZXksIHNlbGVjdG9yXSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnRydW5rLFxuICAgICAgICAgICAgW2tleV06IHsgYXBpTmFtZTogc2VsZWN0b3IubmFtZSwgb3duZXJJZCwgaW5wdXREYXRhOiBzZWxlY3Rvci5pbnB1dERhdGEgPz8ge30gfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlUmVxdWVzdCQocmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PiB7XG4gICAgY29uc3QgZnVsbFJlcXVlc3Q6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlcXVlc3REVE8gPSB7XG4gICAgICAuLi5yZXF1ZXN0LFxuICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgIC4uLnJlcXVlc3Quc2VsZWN0b3JzLFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9ucykucmVkdWNlKFxuICAgICAgICAgICh0cnVuazogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUT1snc2VsZWN0b3JzJ10sIHN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4udHJ1bmssXG4gICAgICAgICAgICAgIC4uLnN1YnNjcmlwdGlvbi5yZXF1ZXN0LnNlbGVjdG9ycyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGV4ZWN1dGlvbiQgPSB0aGlzLmdldEZsb3dTYWZlKCkucHJvcGVydGllcy5zdGF0ZWZ1bFxuICAgICAgPyB0aGlzLmV4ZWN1dGVTdGF0ZWZ1bCQoZnVsbFJlcXVlc3QpXG4gICAgICA6IHRoaXMuZXhlY3V0ZVN0YXRlbGVzcyQoZnVsbFJlcXVlc3QpO1xuXG4gICAgcmV0dXJuIGV4ZWN1dGlvbiQucGlwZShcbiAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICBPYmplY3QuZW50cmllcyhyZXN1bHQuc2VsZWN0b3JzKS5mb3JFYWNoKChbcmVxdWVzdElkLCBzZWxlY3RvclJlc3VsdF0pID0+IHtcbiAgICAgICAgICBpZiAoIXNlbGVjdG9yUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiBUb2FzdFR5cGUuZXJyb3IsIHN1bW1hcnk6IHNlbGVjdG9yUmVzdWx0LmVycm9yTWVzc2FnZSB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24kID0gdGhpcy5zdWJzY3JpcHRpb25zW3JlcXVlc3RJZF0/LmRhdGEkO1xuICAgICAgICAgIGlmIChzdWJzY3JpcHRpb24kKSB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24kLm5leHQoc2VsZWN0b3JSZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U3RhdGVmdWwkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2VcbiAgICAgIC5pbml0KHtcbiAgICAgICAgcXVvdGVJZDogdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkuaGVhZGVySWQsXG4gICAgICAgIHBhcmFtczogdGhpcy5mbG93SW5mb1NlcnZpY2UucGFyYW1zID8/IHt9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHsgc3RhdGVJZCB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZUlkJC5uZXh0KHN0YXRlSWQpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTdGF0ZWZ1bCQocmVxdWVzdDogRmxvd1N0YXRlRXhlY3V0aW9uUmVxdWVzdERUTyk6IE9ic2VydmFibGU8Rmxvd1N0YXRlRXhlY3V0aW9uUmVzdWx0PiB7XG4gICAgaWYgKCF0aGlzLnN0YXRlSWQkLnZhbHVlKSB7XG4gICAgICB0aHJvdyAnU3RhdGVmdWwgc2Vzc2lvbiBpcyBub3QgaW5pdGlhbGl6ZWQnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dTdGF0ZUFwaVNlcnZpY2VcbiAgICAgIC5leGVjdXRlKHRoaXMuc3RhdGVJZCQudmFsdWUsIHJlcXVlc3QpXG4gICAgICAucGlwZSh0YXAocmVzcG9uc2UgPT4gdGhpcy5zdGF0ZUlkJC5uZXh0KHJlc3BvbnNlLnN0YXRlSWQpKSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGF0ZWxlc3MkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgaGVhZGVySWQgfSA9IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpO1xuICAgIGNvbnN0IHsgc3RhdGVmdWwgfSA9IHRoaXMuZ2V0Rmxvd1NhZmUoKS5wcm9wZXJ0aWVzO1xuXG4gICAgY29uc3QgcHJvY2Vzc29yc0luaXQkID0gc3RhdGVmdWwgPT0gZmFsc2UgPyB0aGlzLmluaXRQcm9jZXNzb3JzJCgpIDogb2YodW5kZWZpbmVkKTtcblxuICAgIGNvbnN0IHN0YXRlSW5pdCQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlXG4gICAgICAuaW5pdChoZWFkZXJJZCwgdGhpcy5mbG93SW5mb1NlcnZpY2UucGFyYW1zID8/IHt9KVxuICAgICAgLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuY2FsY3VsYXRlJCgpKSk7XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oW3Byb2Nlc3NvcnNJbml0JCwgc3RhdGVJbml0JF0pLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5maW5hbGl6ZUluaXQoKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBmbG93U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgaWYgKCFmbG93U3RhdGUpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICBEb24ndCBleGVjdXRlIHByb2NlZHVyZXMgd2hlbjpcbiAgICAgICAgKiBJbml0aWFsaXppbmcgYSBzdGFuZGFsb25lIHByb2R1Y3QgY29uZmlndXJhdGlvbiBVSSwgYXMgcHJvY2VkdXJlIGlzIGV4ZWN1dGUgaW4gL3ByaWNlIGNhbGxcbiAgICAgICAgKiBJbml0aWFsaXppbmcgYW4gZW1wdHkgYWNjb3VudCAoYWNjb3VudCB3aXRoIG5vIGFzc2V0cylcbiAgICAqL1xuICAgIGNvbnN0IGlzRW1wdHlBY2NvdW50TW9kZSA9XG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UICYmICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Byb2R1Y3RzO1xuXG4gICAgaWYgKHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNTdGFuZGFsb25lIHx8IGlzRW1wdHlBY2NvdW50TW9kZSkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24uY2FsY3VsYXRlJChmbG93U3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlU3RhdGVsZXNzJChyZXF1ZXN0OiBGbG93U3RhdGVFeGVjdXRpb25SZXF1ZXN0RFRPKTogT2JzZXJ2YWJsZTxGbG93U3RhdGVFeGVjdXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQgfHwgIXJlcXVlc3QuYWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmxvd1N0YXRlID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgICAgICByZXF1ZXN0LmFjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgICAgIGZsb3dTdGF0ZSA9IHRoaXMuZXhlY3V0ZUFjdGlvblNjcmlwdChmbG93U3RhdGUsIGFjdGlvbikgPz8gZmxvd1N0YXRlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnVwZGF0ZVF1b3RlRHJhZnQoZmxvd1N0YXRlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlJCgpO1xuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCkge1xuICAgICAgICAgIHRocm93ICdRdW90ZURyYWZ0IGlzIG5vdCBpbml0aWFsaXplZCc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmbG93U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnQ7XG4gICAgICAgIGNvbnN0IGV4ZWN1dGlvblJlc3VsdCA9IEVudGl0eVV0aWwuZW50cmllcyhyZXF1ZXN0LnNlbGVjdG9ycyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgIChyZXN1bHQ6IEZsb3dTdGF0ZUV4ZWN1dGlvblJlc3VsdCwgW2tleSwgc2VsZWN0b3JdKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXN1bHQuc2VsZWN0b3JzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICByZXN1bHQ6IHRoaXMuZXhlY3V0ZVNlbGVjdG9yU2NyaXB0KGZsb3dTdGF0ZSwgc2VsZWN0b3IpLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICByZXN1bHQuc2VsZWN0b3JzW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBTdHJpbmcoZSksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IHN0YXRlSWQ6ICcnLCBzZWxlY3RvcnM6IHt9IH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGV4ZWN1dGlvblJlc3VsdDtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEZsb3dTYWZlKCk6IEZsb3cge1xuICAgIGlmICghdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdykge1xuICAgICAgdGhyb3cgJ0Zsb3cgaXMgbm90IGRlZmluZWQnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UHJvY2Vzc29ycyQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3Qgb3duZXJzJCA9IE9iamVjdC52YWx1ZXModGhpcy5mbG93SW5mb1NlcnZpY2UudGVtcGxhdGVzKVxuICAgICAgLm1hcCh0ZW1wbGF0ZSA9PiB7XG4gICAgICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzb3JzQXBpU2VydmljZS5mZXRjaENvbmZpZ3VyYXRpb25Qcm9jZXNzb3JzJCh0ZW1wbGF0ZS5pZCkucGlwZShcbiAgICAgICAgICB0YXAocHJvY2Vzc29ycyA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzb3JzTWFwID0gcHJvY2Vzc29ycy5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgQ29uZmlndXJhdGlvblByb2Nlc3Nvcj4sIHApID0+IHtcbiAgICAgICAgICAgICAgYWNjW3AuYXBpTmFtZV0gPSBwO1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pO1xuXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NvcnNbdGVtcGxhdGUuaWRdID0gcHJvY2Vzc29yc01hcDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGlzRGVmaW5lZCk7XG5cbiAgICByZXR1cm4gZm9ya0pvaW4ob3duZXJzJCkucGlwZShtYXAobm9vcCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGVjdXRlQWN0aW9uU2NyaXB0KHJlcXVlc3Q6IEZsb3dTdGF0ZSwgZXhlY3V0YWJsZTogRmxvd1N0YXRlRXhlY3V0YWJsZURUTyk6IEZsb3dTdGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IHNjcmlwdCA9IHRoaXMucHJvY2Vzc29yc1tleGVjdXRhYmxlLm93bmVySWRdPy5bZXhlY3V0YWJsZS5hcGlOYW1lXT8uc2NyaXB0O1xuXG4gICAgaWYgKCFzY3JpcHQpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRTY29wZUJ5T3duZXJJZChleGVjdXRhYmxlLm93bmVySWQpO1xuICAgICAgY29uc3Qgc2NvcGVUZXh0ID0gc2NvcGUgPyBgIGluICR7c2NvcGV9YCA6ICcnO1xuICAgICAgdGhyb3cgYENvbmZpZ3VyYXRpb25Qcm9jZXNzb3IgJHtleGVjdXRhYmxlLmFwaU5hbWV9JHtzY29wZVRleHR9IG5vdCBmb3VuZGA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVByb2Nlc3NvclNjcmlwdChyZXF1ZXN0LCBzY3JpcHQsIGV4ZWN1dGFibGUuaW5wdXREYXRhKSBhcyBGbG93U3RhdGU7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVTZWxlY3RvclNjcmlwdChyZXF1ZXN0OiBGbG93U3RhdGUsIGV4ZWN1dGFibGU6IEZsb3dTdGF0ZUV4ZWN1dGFibGVEVE8pOiB1bmtub3duIHtcbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLnByb2Nlc3NvcnNbZXhlY3V0YWJsZS5vd25lcklkXT8uW2V4ZWN1dGFibGUuYXBpTmFtZV0/LnNjcmlwdDtcblxuICAgIGlmICghc2NyaXB0KSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0U2NvcGVCeU93bmVySWQoZXhlY3V0YWJsZS5vd25lcklkKTtcbiAgICAgIGNvbnN0IHNjb3BlVGV4dCA9IHNjb3BlID8gYCBpbiAke3Njb3BlfWAgOiAnJztcbiAgICAgIHRocm93IGBDb25maWd1cmF0aW9uUHJvY2Vzc29yICR7ZXhlY3V0YWJsZS5hcGlOYW1lfSR7c2NvcGVUZXh0fSBub3QgZm91bmRgO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4ZWN1dGVQcm9jZXNzb3JTY3JpcHQocmVxdWVzdCwgc2NyaXB0LCBleGVjdXRhYmxlLmlucHV0RGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVQcm9jZXNzb3JTY3JpcHQocmVxdWVzdDogRmxvd1N0YXRlLCBzY3JpcHQ6IHN0cmluZywgaW5wdXREYXRhOiB1bmtub3duKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG5ldyBGdW5jdGlvbihgJHtzY3JpcHR9XFxucmV0dXJuIHRyYW5zZm9ybTtgKSgpKHtcbiAgICAgIHJlcXVlc3QsXG4gICAgICBpbnB1dERhdGE6IGlucHV0RGF0YSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,6 +1,9 @@
1
1
  export * from './context.service';
2
+ export * from './flow-info.service';
3
+ export * from './flow-state.service';
4
+ export * from './integration.state';
2
5
  export * from './metric-calculation/metric-calculation.service';
3
6
  export * from './product-images.service';
4
7
  export * from './quote-draft.service';
5
8
  export * from './runtime-settings.service';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGV4dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbWV0cmljLWNhbGN1bGF0aW9uL21ldHJpYy1jYWxjdWxhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdC1pbWFnZXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3F1b3RlLWRyYWZ0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ydW50aW1lLXNldHRpbmdzLnNlcnZpY2UnO1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udGV4dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZmxvdy1pbmZvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9mbG93LXN0YXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlZ3JhdGlvbi5zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL21ldHJpYy1jYWxjdWxhdGlvbi9tZXRyaWMtY2FsY3VsYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2R1Y3QtaW1hZ2VzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9xdW90ZS1kcmFmdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcnVudGltZS1zZXR0aW5ncy5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, filter, map, Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class IntegrationState {
5
+ constructor() {
6
+ this.stateSubj$ = new BehaviorSubject({});
7
+ this.action$ = new Subject();
8
+ }
9
+ get state$() {
10
+ return this.stateSubj$.asObservable();
11
+ }
12
+ get state() {
13
+ return this.stateSubj$.getValue();
14
+ }
15
+ patchState(update) {
16
+ this.stateSubj$.next({ ...this.stateSubj$.getValue(), ...update });
17
+ }
18
+ dispatch(action) {
19
+ this.action$.next(action);
20
+ }
21
+ listen$(actionType) {
22
+ return this.action$.pipe(filter(action => action.type === actionType), map(action => action.payload));
23
+ }
24
+ listenAll$() {
25
+ return this.action$.asObservable();
26
+ }
27
+ clear() {
28
+ this.stateSubj$.next({});
29
+ }
30
+ }
31
+ IntegrationState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IntegrationState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
32
+ IntegrationState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IntegrationState, providedIn: 'root' });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: IntegrationState, decorators: [{
34
+ type: Injectable,
35
+ args: [{ providedIn: 'root' }]
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2ludGVncmF0aW9uLnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJekUsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUVtQixlQUFVLEdBQUcsSUFBSSxlQUFlLENBQUksRUFBTyxDQUFDLENBQUM7UUFDN0MsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFxQixDQUFDO0tBZ0M3RDtJQTlCQyxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQWtCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQXlCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxPQUFPLENBQVUsVUFBa0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsRUFDNUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQVksQ0FBQyxDQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFtQixDQUFDO0lBQ3RELENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7NkdBakNVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEludGVncmF0aW9uQWN0aW9uLCBJbnRlZ3JhdGlvblN0YXRlTW9kZWwgfSBmcm9tICcuLi90eXBlcy9pbnRlZ3JhdGlvbi50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25TdGF0ZTxTID0gSW50ZWdyYXRpb25TdGF0ZU1vZGVsPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Uz4oe30gYXMgUyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uJCA9IG5ldyBTdWJqZWN0PEludGVncmF0aW9uQWN0aW9uPigpO1xuXG4gIHB1YmxpYyBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8Uz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlU3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IFMge1xuICAgIHJldHVybiB0aGlzLnN0YXRlU3ViaiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaFN0YXRlKHVwZGF0ZTogUGFydGlhbDxTPik6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTdWJqJC5uZXh0KHsgLi4udGhpcy5zdGF0ZVN1YmokLmdldFZhbHVlKCksIC4uLnVwZGF0ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaChhY3Rpb246IEludGVncmF0aW9uQWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb24kLm5leHQoYWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBsaXN0ZW4kPFAgPSBhbnk+KGFjdGlvblR5cGU6IHN0cmluZyk6IE9ic2VydmFibGU8UD4ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbiQucGlwZShcbiAgICAgIGZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGUpLFxuICAgICAgbWFwKGFjdGlvbiA9PiBhY3Rpb24ucGF5bG9hZCBhcyBQKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGxpc3RlbkFsbCQ8VCBleHRlbmRzIEludGVncmF0aW9uQWN0aW9uPigpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpb24kLmFzT2JzZXJ2YWJsZSgpIGFzIE9ic2VydmFibGU8VD47XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVN1YmokLm5leHQoe30gYXMgUyk7XG4gIH1cbn1cbiJdfQ==
@@ -76,9 +76,9 @@ export class MetricsCalculationService {
76
76
  return this.activeMetricRules.find(metricRule => metricRule.metrics.find(metric => metric.totalName === name));
77
77
  }
78
78
  }
79
- MetricsCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MetricsCalculationService, deps: [{ token: i1.QuoteDraftService }, { token: i2.FlowConfigurationService }, { token: i3.ConfigurationSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable });
80
- MetricsCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MetricsCalculationService, providedIn: 'root' });
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: MetricsCalculationService, decorators: [{
79
+ MetricsCalculationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MetricsCalculationService, deps: [{ token: i1.QuoteDraftService }, { token: i2.FlowConfigurationService }, { token: i3.ConfigurationSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable });
80
+ MetricsCalculationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MetricsCalculationService, providedIn: 'root' });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MetricsCalculationService, decorators: [{
82
82
  type: Injectable,
83
83
  args: [{ providedIn: 'root' }]
84
84
  }], ctorParameters: function () { return [{ type: i1.QuoteDraftService }, { type: i2.FlowConfigurationService }, { type: i3.ConfigurationSettingsApiService }]; } });
@@ -22,9 +22,9 @@ export class ProductImagesService {
22
22
  .subscribe();
23
23
  }
24
24
  }
25
- ProductImagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ProductImagesService, deps: [{ token: i1.ProductApiService }], target: i0.ɵɵFactoryTarget.Injectable });
26
- ProductImagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ProductImagesService, providedIn: 'root' });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ProductImagesService, decorators: [{
25
+ ProductImagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductImagesService, deps: [{ token: i1.ProductApiService }], target: i0.ɵɵFactoryTarget.Injectable });
26
+ ProductImagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductImagesService, providedIn: 'root' });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ProductImagesService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{ providedIn: 'root' }]
30
30
  }], ctorParameters: function () { return [{ type: i1.ProductApiService }]; } });