@scion/workbench 18.0.0-beta.9 → 19.0.0-beta.1

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 (253) hide show
  1. package/design/_workbench-view-global-styles.scss +0 -1
  2. package/fesm2022/scion-workbench.mjs +8556 -8622
  3. package/fesm2022/scion-workbench.mjs.map +1 -1
  4. package/lib/common/css-class.util.d.ts +5 -0
  5. package/lib/common/math.util.d.ts +7 -0
  6. package/lib/common/objects.util.d.ts +1 -1
  7. package/lib/dialog/workbench-dialog.component.d.ts +1 -2
  8. package/lib/layout/migration/model/workbench-layout-migration-v6.model.d.ts +35 -0
  9. package/lib/layout/migration/workbench-layout-migration-v6.service.d.ts +12 -0
  10. package/lib/layout/workbench-layout.model.d.ts +0 -1
  11. package/lib/layout/workbench-layout.service.d.ts +10 -12
  12. package/lib/layout/workench-layout-serializer.service.d.ts +1 -2
  13. package/lib/part/part-action-bar/part-action-bar.component.d.ts +2 -6
  14. package/lib/part/part-bar/part-bar.component.d.ts +66 -48
  15. package/lib/part/view-tab/view-tab.component.d.ts +3 -3
  16. package/lib/public_api.d.ts +0 -2
  17. package/lib/routing/routing.util.d.ts +2 -2
  18. package/lib/view/view-move-handler.service.d.ts +16 -14
  19. package/lib/view/view.component.d.ts +1 -2
  20. package/lib/view//311/265workbench-view.model.d.ts +1 -9
  21. package/lib/view-dnd/grid-drop-targets.util.d.ts +1 -1
  22. package/lib/view-dnd/view-drag.service.d.ts +72 -49
  23. package/lib/view-dnd/view-tab-drag-image-renderer.service.d.ts +11 -36
  24. package/package.json +8 -10
  25. package/esm2022/lib/activation-instant.provider.mjs +0 -29
  26. package/esm2022/lib/common/animation-frame.observable.mjs +0 -37
  27. package/esm2022/lib/common/asserts.util.mjs +0 -31
  28. package/esm2022/lib/common/class-list.mjs +0 -99
  29. package/esm2022/lib/common/coerce-observable.pipe.mjs +0 -28
  30. package/esm2022/lib/common/disposable.mjs +0 -11
  31. package/esm2022/lib/common/dom.util.mjs +0 -100
  32. package/esm2022/lib/common/grid-element-if-visible.pipe.mjs +0 -32
  33. package/esm2022/lib/common/instanceof.pipe.mjs +0 -26
  34. package/esm2022/lib/common/map-coerce.pipe.mjs +0 -28
  35. package/esm2022/lib/common/null-if-empty.pipe.mjs +0 -38
  36. package/esm2022/lib/common/objects.util.mjs +0 -40
  37. package/esm2022/lib/common/observables.mjs +0 -72
  38. package/esm2022/lib/common/operators.mjs +0 -27
  39. package/esm2022/lib/common/public_api.mjs +0 -11
  40. package/esm2022/lib/common/stringify-error.util.mjs +0 -19
  41. package/esm2022/lib/common/throw-error.util.mjs +0 -16
  42. package/esm2022/lib/common/typeof.pipe.mjs +0 -26
  43. package/esm2022/lib/common/uid.util.mjs +0 -22
  44. package/esm2022/lib/common//311/265destroy-ref.mjs +0 -36
  45. package/esm2022/lib/communication/workbench-broadcast-channel.mjs +0 -38
  46. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +0 -114
  47. package/esm2022/lib/content-projection/workbench-element-references.mjs +0 -32
  48. package/esm2022/lib/dialog/dialog-footer/dialog-action-filter.pipe.mjs +0 -26
  49. package/esm2022/lib/dialog/dialog-footer/dialog-footer.component.mjs +0 -34
  50. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-action.directive.mjs +0 -51
  51. package/esm2022/lib/dialog/dialog-footer/workbench-dialog-footer.directive.mjs +0 -46
  52. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +0 -33
  53. package/esm2022/lib/dialog/dialog-header/workbench-dialog-header.directive.mjs +0 -46
  54. package/esm2022/lib/dialog/movable.directive.mjs +0 -126
  55. package/esm2022/lib/dialog/public_api.mjs +0 -15
  56. package/esm2022/lib/dialog/resizable.directive.mjs +0 -392
  57. package/esm2022/lib/dialog/workbench-dialog.component.mjs +0 -250
  58. package/esm2022/lib/dialog/workbench-dialog.mjs +0 -79
  59. package/esm2022/lib/dialog/workbench-dialog.options.mjs +0 -11
  60. package/esm2022/lib/dialog/workbench-dialog.registry.mjs +0 -73
  61. package/esm2022/lib/dialog/workbench-dialog.service.mjs +0 -96
  62. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +0 -310
  63. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +0 -98
  64. package/esm2022/lib/executor/latest-task-executor.mjs +0 -55
  65. package/esm2022/lib/executor/single-task-executor.mjs +0 -72
  66. package/esm2022/lib/filter-field/filter-field.component.mjs +0 -130
  67. package/esm2022/lib/glass-pane/blockable.mjs +0 -11
  68. package/esm2022/lib/glass-pane/blocking.mjs +0 -11
  69. package/esm2022/lib/glass-pane/glass-pane.directive.mjs +0 -120
  70. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +0 -111
  71. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +0 -97
  72. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v2.model.mjs +0 -11
  73. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v3.model.mjs +0 -11
  74. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v4.model.mjs +0 -11
  75. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +0 -11
  76. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +0 -117
  77. package/esm2022/lib/layout/migration/workbench-layout-migration-v4.service.mjs +0 -57
  78. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +0 -67
  79. package/esm2022/lib/layout/public_api.mjs +0 -12
  80. package/esm2022/lib/layout/stringifier.mjs +0 -70
  81. package/esm2022/lib/layout/workbench-layout.component.mjs +0 -90
  82. package/esm2022/lib/layout/workbench-layout.factory.mjs +0 -24
  83. package/esm2022/lib/layout/workbench-layout.mjs +0 -16
  84. package/esm2022/lib/layout/workbench-layout.model.mjs +0 -62
  85. package/esm2022/lib/layout/workbench-layout.service.mjs +0 -68
  86. package/esm2022/lib/layout/workbench-layouts.util.mjs +0 -58
  87. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +0 -109
  88. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +0 -54
  89. package/esm2022/lib/layout//311/265workbench-layout.mjs +0 -876
  90. package/esm2022/lib/logging/console-appender.service.mjs +0 -46
  91. package/esm2022/lib/logging/index.mjs +0 -15
  92. package/esm2022/lib/logging/logger-names.mjs +0 -32
  93. package/esm2022/lib/logging/logger.mjs +0 -36
  94. package/esm2022/lib/logging/logging-support.mjs +0 -26
  95. package/esm2022/lib/logging/logging.model.mjs +0 -45
  96. package/esm2022/lib/logging/public_api.mjs +0 -12
  97. package/esm2022/lib/logging//311/265logger.mjs +0 -73
  98. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +0 -69
  99. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +0 -28
  100. package/esm2022/lib/message-box/public_api.mjs +0 -11
  101. package/esm2022/lib/message-box/workbench-message-box.component.mjs +0 -102
  102. package/esm2022/lib/message-box/workbench-message-box.options.mjs +0 -2
  103. package/esm2022/lib/message-box/workbench-message-box.service.mjs +0 -39
  104. package/esm2022/lib/message-box//311/265workbench-message-box.service.mjs +0 -45
  105. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +0 -71
  106. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +0 -126
  107. package/esm2022/lib/microfrontend-platform/initialization/ng-zone-observable-decorator.mjs +0 -36
  108. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +0 -84
  109. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +0 -63
  110. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +0 -54
  111. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-intent-handler.interceptor.mjs +0 -85
  112. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +0 -140
  113. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +0 -133
  114. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +0 -113
  115. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +0 -43
  116. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +0 -101
  117. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +0 -35
  118. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-intent-handler.interceptor.mjs +0 -88
  119. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-legacy-intent-translator.interceptor.mjs +0 -32
  120. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +0 -121
  121. package/esm2022/lib/microfrontend-platform/microfrontend-notification/microfrontend-notification-intent-handler.service.mjs +0 -45
  122. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +0 -39
  123. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +0 -120
  124. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +0 -55
  125. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +0 -19
  126. package/esm2022/lib/microfrontend-platform/microfrontend-platform-config-loader.mjs +0 -13
  127. package/esm2022/lib/microfrontend-platform/microfrontend-platform.config.mjs +0 -11
  128. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +0 -31
  129. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +0 -132
  130. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +0 -115
  131. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +0 -21
  132. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +0 -112
  133. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +0 -313
  134. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-workbench-view.model.mjs +0 -23
  135. package/esm2022/lib/microfrontend-platform/public_api.mjs +0 -13
  136. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +0 -31
  137. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +0 -127
  138. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +0 -125
  139. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +0 -32
  140. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +0 -191
  141. package/esm2022/lib/migration/workbench-migration.mjs +0 -11
  142. package/esm2022/lib/migration/workbench-migrator.mjs +0 -38
  143. package/esm2022/lib/notification/notification-css-classes.pipe.mjs +0 -24
  144. package/esm2022/lib/notification/notification-list.component.mjs +0 -51
  145. package/esm2022/lib/notification/notification.component.mjs +0 -109
  146. package/esm2022/lib/notification/notification.config.mjs +0 -11
  147. package/esm2022/lib/notification/notification.mjs +0 -19
  148. package/esm2022/lib/notification/notification.service.mjs +0 -134
  149. package/esm2022/lib/notification/public_api.mjs +0 -12
  150. package/esm2022/lib/notification/text-notification.component.mjs +0 -23
  151. package/esm2022/lib/notification//311/265notification.mjs +0 -42
  152. package/esm2022/lib/page-not-found/page-not-found.component.mjs +0 -26
  153. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +0 -31
  154. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +0 -77
  155. package/esm2022/lib/part/part-bar/part-bar.component.mjs +0 -444
  156. package/esm2022/lib/part/part-portal.pipe.mjs +0 -35
  157. package/esm2022/lib/part/part.component.mjs +0 -135
  158. package/esm2022/lib/part/public_api.mjs +0 -13
  159. package/esm2022/lib/part/view-context-menu/accelerator-format.pipe.mjs +0 -31
  160. package/esm2022/lib/part/view-context-menu/text.component.mjs +0 -38
  161. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +0 -89
  162. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +0 -76
  163. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +0 -340
  164. package/esm2022/lib/part/view-list/view-list.component.mjs +0 -117
  165. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +0 -82
  166. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +0 -60
  167. package/esm2022/lib/part/view-tab/view-tab.component.mjs +0 -218
  168. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +0 -29
  169. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +0 -81
  170. package/esm2022/lib/part/workbench-part-action.registry.mjs +0 -23
  171. package/esm2022/lib/part/workbench-part.model.mjs +0 -19
  172. package/esm2022/lib/part/workbench-part.registry.mjs +0 -23
  173. package/esm2022/lib/part//311/265workbench-part.model.mjs +0 -146
  174. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v1.model.mjs +0 -11
  175. package/esm2022/lib/perspective/migration/model/workbench-perspective-migration-v2.model.mjs +0 -11
  176. package/esm2022/lib/perspective/migration/workbench-perspective-migration-v2.service.mjs +0 -57
  177. package/esm2022/lib/perspective/public_api.mjs +0 -11
  178. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +0 -39
  179. package/esm2022/lib/perspective/workbench-perspective-storage.service.mjs +0 -72
  180. package/esm2022/lib/perspective/workbench-perspective-view-conflict-resolver.service.mjs +0 -50
  181. package/esm2022/lib/perspective/workbench-perspective.model.mjs +0 -2
  182. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +0 -23
  183. package/esm2022/lib/perspective/workbench-perspective.service.mjs +0 -180
  184. package/esm2022/lib/perspective/workench-perspective-serializer.service.mjs +0 -62
  185. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +0 -210
  186. package/esm2022/lib/popup/popup.component.mjs +0 -124
  187. package/esm2022/lib/popup/popup.config.mjs +0 -100
  188. package/esm2022/lib/popup/popup.origin.mjs +0 -11
  189. package/esm2022/lib/popup/popup.service.mjs +0 -339
  190. package/esm2022/lib/popup/public_api.mjs +0 -12
  191. package/esm2022/lib/portal/wb-component-portal.mjs +0 -130
  192. package/esm2022/lib/portal/workbench-portal-outlet.directive.mjs +0 -68
  193. package/esm2022/lib/public_api.mjs +0 -32
  194. package/esm2022/lib/registry/workbench-object-registry.mjs +0 -104
  195. package/esm2022/lib/routing/empty-outlet/empty-outlet.component.mjs +0 -31
  196. package/esm2022/lib/routing/public_api.mjs +0 -14
  197. package/esm2022/lib/routing/routing.model.mjs +0 -11
  198. package/esm2022/lib/routing/routing.util.mjs +0 -215
  199. package/esm2022/lib/routing/url-segment-matcher.mjs +0 -46
  200. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +0 -110
  201. package/esm2022/lib/routing/workbench-dialog-differ.mjs +0 -51
  202. package/esm2022/lib/routing/workbench-layout-differ.mjs +0 -61
  203. package/esm2022/lib/routing/workbench-message-box-differ.mjs +0 -51
  204. package/esm2022/lib/routing/workbench-navigational-states.mjs +0 -33
  205. package/esm2022/lib/routing/workbench-popup-differ.mjs +0 -51
  206. package/esm2022/lib/routing/workbench-route-data.mjs +0 -39
  207. package/esm2022/lib/routing/workbench-route-guards.mjs +0 -57
  208. package/esm2022/lib/routing/workbench-router-link.directive.mjs +0 -124
  209. package/esm2022/lib/routing/workbench-router.service.mjs +0 -19
  210. package/esm2022/lib/routing/workbench-url-observer.service.mjs +0 -305
  211. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +0 -58
  212. package/esm2022/lib/routing//311/265location.mjs +0 -70
  213. package/esm2022/lib/routing//311/265workbench-router.service.mjs +0 -359
  214. package/esm2022/lib/startup/public_api.mjs +0 -12
  215. package/esm2022/lib/startup/splash/splash.component.mjs +0 -24
  216. package/esm2022/lib/startup/workbench-initializer.mjs +0 -96
  217. package/esm2022/lib/startup/workbench-launcher.service.mjs +0 -173
  218. package/esm2022/lib/storage/public_api.mjs +0 -11
  219. package/esm2022/lib/storage/workbench-storage.mjs +0 -37
  220. package/esm2022/lib/testing/public_api.mjs +0 -12
  221. package/esm2022/lib/testing/workbench-testing.module.mjs +0 -49
  222. package/esm2022/lib/testing/workbench.provider.mjs +0 -60
  223. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +0 -72
  224. package/esm2022/lib/view/public_api.mjs +0 -11
  225. package/esm2022/lib/view/view-context-provider.mjs +0 -31
  226. package/esm2022/lib/view/view-move-handler.service.mjs +0 -145
  227. package/esm2022/lib/view/view-portal.pipe.mjs +0 -33
  228. package/esm2022/lib/view/view.component.mjs +0 -128
  229. package/esm2022/lib/view/workbench-view.model.mjs +0 -12
  230. package/esm2022/lib/view/workbench-view.registry.mjs +0 -23
  231. package/esm2022/lib/view//311/265workbench-view.model.mjs +0 -375
  232. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +0 -49
  233. package/esm2022/lib/view-dnd/requires-drop-zone.pipe.mjs +0 -58
  234. package/esm2022/lib/view-dnd/view-drag.service.mjs +0 -213
  235. package/esm2022/lib/view-dnd/view-drop-placeholder-renderer.service.mjs +0 -89
  236. package/esm2022/lib/view-dnd/view-drop-zone.directive.mjs +0 -183
  237. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +0 -224
  238. package/esm2022/lib/workbench-config.mjs +0 -15
  239. package/esm2022/lib/workbench-id.mjs +0 -21
  240. package/esm2022/lib/workbench.component.mjs +0 -146
  241. package/esm2022/lib/workbench.constants.mjs +0 -41
  242. package/esm2022/lib/workbench.model.mjs +0 -11
  243. package/esm2022/lib/workbench.module.mjs +0 -101
  244. package/esm2022/lib/workbench.provider.mjs +0 -111
  245. package/esm2022/lib/workbench.service.mjs +0 -29
  246. package/esm2022/lib//311/265workbench.service.mjs +0 -102
  247. package/esm2022/public-api.mjs +0 -14
  248. package/esm2022/scion-workbench.mjs +0 -5
  249. package/lib/common/animation-frame.observable.d.ts +0 -10
  250. package/lib/testing/public_api.d.ts +0 -2
  251. package/lib/testing/workbench-testing.module.d.ts +0 -40
  252. package/lib/testing/workbench.provider.d.ts +0 -31
  253. package/lib/workbench.module.d.ts +0 -65
@@ -1,96 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2022 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { EnvironmentInjector, InjectionToken, runInInjectionContext } from '@angular/core';
11
- /**
12
- * The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
13
- * Hooks are called at defined points during startup, enabling the application's controlled initialization.
14
- *
15
- * Initializers registered under this DI token are injected and executed immediately when calling {@link WorkbenchLauncher#launch}.
16
- * After all initializers associated with this DI token have completed, the workbench transitions into the "started" state.
17
- *
18
- * An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
19
- * {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
20
- * Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
21
- */
22
- export const WORKBENCH_STARTUP = new InjectionToken('WORKBENCH_STARTUP');
23
- /**
24
- * The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
25
- * Hooks are called at defined points during startup, enabling the application's controlled initialization.
26
- *
27
- * Initializers registered under this DI token are injected and executed immediately when calling {@link WorkbenchLauncher#launch},
28
- * but before running workbench initializers associated with the {@link WORKBENCH_STARTUP} injection token.
29
- *
30
- * An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
31
- * {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
32
- * Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
33
- */
34
- export const WORKBENCH_PRE_STARTUP = new InjectionToken('WORKBENCH_PRE_STARTUP');
35
- /**
36
- * The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
37
- * Hooks are called at defined points during startup, enabling the application's controlled initialization.
38
- *
39
- * Initializers registered under this DI token are injected and executed before starting the SCION Microfrontend Platform.
40
- * Typically, you would configure the SCION Microfrontend Platform in this lifecycle hook, for example, register interceptors or decorators.
41
- *
42
- * This lifecycle hook is only called if microfrontend support is enabled. Note that you cannot interact with the microfrontend platform
43
- * in this lifecycle hook because it has not been started yet.
44
- *
45
- * An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
46
- * {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
47
- * Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
48
- */
49
- export const MICROFRONTEND_PLATFORM_PRE_STARTUP = new InjectionToken('MICROFRONTEND_PLATFORM_PRE_STARTUP');
50
- /**
51
- * The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
52
- * Hooks are called at defined points during startup, enabling the application's controlled initialization.
53
- *
54
- * Initializers registered under this DI token are injected and executed after started the SCION Microfrontend Platform.
55
- * At this point, the activators of the micro applications are not yet installed. Typically, you would install intent and message
56
- * handlers in this lifecycle hook.
57
- *
58
- * This lifecycle hook is only called if microfrontend support is enabled.
59
- *
60
- * An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
61
- * {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
62
- * Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
63
- */
64
- export const MICROFRONTEND_PLATFORM_POST_STARTUP = new InjectionToken('MICROFRONTEND_PLATFORM_POST_STARTUP');
65
- /**
66
- * The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
67
- * Hooks are called at defined points during startup, enabling the application's controlled initialization.
68
- *
69
- * Initializers registered under this DI token are injected and executed just before the {@link WorkbenchLauncher} completes the workbench
70
- * startup, that is, after all initializers associated with the {@link WORKBENCH_STARTUP} DI token have completed initialization.
71
- *
72
- * An initializer can be any object and is to be provided as a multi-provider. If the initializer is a function or instance of
73
- * {@link WorkbenchInitializer} and returns a Promise, the workbench waits for the Promise to be resolved before proceeding with the startup.
74
- * Initializers can call `inject` to get any required dependencies. Initializers associated with the same DI token may run in parallel.
75
- */
76
- export const WORKBENCH_POST_STARTUP = new InjectionToken('WORKBENCH_POST_STARTUP');
77
- /**
78
- * Runs workbench initializers associated with the given DI token. Initializer functions can call `inject` to get any required dependencies.
79
- */
80
- export async function runWorkbenchInitializers(token, injector) {
81
- const initializers = injector.get(token, undefined, { optional: true }); // eslint-disable-line @typescript-eslint/ban-types
82
- if (!initializers?.length) {
83
- return;
84
- }
85
- // Invoke and await initializer functions.
86
- await Promise.all(initializers.reduce((acc, initializer) => {
87
- if (typeof initializer === 'function') {
88
- return acc.concat(runInInjectionContext(injector.get(EnvironmentInjector), initializer));
89
- }
90
- else if (typeof initializer?.init === 'function') {
91
- return acc.concat(runInInjectionContext(injector.get(EnvironmentInjector), () => initializer.init()));
92
- }
93
- return acc;
94
- }, new Array()));
95
- }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWluaXRpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvc3RhcnR1cC93b3JrYmVuY2gtaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFZLHFCQUFxQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5HOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBK0QsbUJBQW1CLENBQUMsQ0FBQztBQUV2STs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQStELHVCQUF1QixDQUFDLENBQUM7QUFFL0k7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLElBQUksY0FBYyxDQUErRCxvQ0FBb0MsQ0FBQyxDQUFDO0FBRXpLOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxJQUFJLGNBQWMsQ0FBK0QscUNBQXFDLENBQUMsQ0FBQztBQUUzSzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQStELHdCQUF3QixDQUFDLENBQUM7QUE0RGpKOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx3QkFBd0IsQ0FBQyxLQUEwQixFQUFFLFFBQWtCO0lBQzNGLE1BQU0sWUFBWSxHQUFvRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLG1EQUFtRDtJQUMzTCxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU87SUFDVCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQ3pELElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdEMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzNGLENBQUM7YUFDSSxJQUFJLE9BQU8sV0FBVyxFQUFFLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNqRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEcsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUFFLElBQUksS0FBSyxFQUFvQixDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0Vudmlyb25tZW50SW5qZWN0b3IsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGUgU0NJT04gV29ya2JlbmNoIGRlZmluZXMgYSBudW1iZXIgb2YgaW5qZWN0aW9uIHRva2VucyAoYWxzbyBjYWxsZWQgREkgdG9rZW5zKSBhcyBob29rcyBpbnRvIHRoZSB3b3JrYmVuY2gncyBzdGFydHVwIHByb2Nlc3MuXG4gKiBIb29rcyBhcmUgY2FsbGVkIGF0IGRlZmluZWQgcG9pbnRzIGR1cmluZyBzdGFydHVwLCBlbmFibGluZyB0aGUgYXBwbGljYXRpb24ncyBjb250cm9sbGVkIGluaXRpYWxpemF0aW9uLlxuICpcbiAqIEluaXRpYWxpemVycyByZWdpc3RlcmVkIHVuZGVyIHRoaXMgREkgdG9rZW4gYXJlIGluamVjdGVkIGFuZCBleGVjdXRlZCBpbW1lZGlhdGVseSB3aGVuIGNhbGxpbmcge0BsaW5rIFdvcmtiZW5jaExhdW5jaGVyI2xhdW5jaH0uXG4gKiBBZnRlciBhbGwgaW5pdGlhbGl6ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIERJIHRva2VuIGhhdmUgY29tcGxldGVkLCB0aGUgd29ya2JlbmNoIHRyYW5zaXRpb25zIGludG8gdGhlIFwic3RhcnRlZFwiIHN0YXRlLlxuICpcbiAqIEFuIGluaXRpYWxpemVyIGNhbiBiZSBhbnkgb2JqZWN0IGFuZCBpcyB0byBiZSBwcm92aWRlZCBhcyBhIG11bHRpLXByb3ZpZGVyLiBJZiB0aGUgaW5pdGlhbGl6ZXIgaXMgYSBmdW5jdGlvbiBvciBpbnN0YW5jZSBvZlxuICoge0BsaW5rIFdvcmtiZW5jaEluaXRpYWxpemVyfSBhbmQgcmV0dXJucyBhIFByb21pc2UsIHRoZSB3b3JrYmVuY2ggd2FpdHMgZm9yIHRoZSBQcm9taXNlIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHN0YXJ0dXAuXG4gKiBJbml0aWFsaXplcnMgY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuIEluaXRpYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgREkgdG9rZW4gbWF5IHJ1biBpbiBwYXJhbGxlbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktCRU5DSF9TVEFSVFVQID0gbmV3IEluamVjdGlvblRva2VuPFdvcmtiZW5jaEluaXRpYWxpemVyIHwgKCgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB8IG9iamVjdD4oJ1dPUktCRU5DSF9TVEFSVFVQJyk7XG5cbi8qKlxuICogVGhlIFNDSU9OIFdvcmtiZW5jaCBkZWZpbmVzIGEgbnVtYmVyIG9mIGluamVjdGlvbiB0b2tlbnMgKGFsc28gY2FsbGVkIERJIHRva2VucykgYXMgaG9va3MgaW50byB0aGUgd29ya2JlbmNoJ3Mgc3RhcnR1cCBwcm9jZXNzLlxuICogSG9va3MgYXJlIGNhbGxlZCBhdCBkZWZpbmVkIHBvaW50cyBkdXJpbmcgc3RhcnR1cCwgZW5hYmxpbmcgdGhlIGFwcGxpY2F0aW9uJ3MgY29udHJvbGxlZCBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBJbml0aWFsaXplcnMgcmVnaXN0ZXJlZCB1bmRlciB0aGlzIERJIHRva2VuIGFyZSBpbmplY3RlZCBhbmQgZXhlY3V0ZWQgaW1tZWRpYXRlbHkgd2hlbiBjYWxsaW5nIHtAbGluayBXb3JrYmVuY2hMYXVuY2hlciNsYXVuY2h9LFxuICogYnV0IGJlZm9yZSBydW5uaW5nIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSB7QGxpbmsgV09SS0JFTkNIX1NUQVJUVVB9IGluamVjdGlvbiB0b2tlbi5cbiAqXG4gKiBBbiBpbml0aWFsaXplciBjYW4gYmUgYW55IG9iamVjdCBhbmQgaXMgdG8gYmUgcHJvdmlkZWQgYXMgYSBtdWx0aS1wcm92aWRlci4gSWYgdGhlIGluaXRpYWxpemVyIGlzIGEgZnVuY3Rpb24gb3IgaW5zdGFuY2Ugb2ZcbiAqIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYW5kIHJldHVybnMgYSBQcm9taXNlLCB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciB0aGUgUHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzdGFydHVwLlxuICogSW5pdGlhbGl6ZXJzIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBJbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIERJIHRva2VuIG1heSBydW4gaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfUFJFX1NUQVJUVVAgPSBuZXcgSW5qZWN0aW9uVG9rZW48V29ya2JlbmNoSW5pdGlhbGl6ZXIgfCAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgb2JqZWN0PignV09SS0JFTkNIX1BSRV9TVEFSVFVQJyk7XG5cbi8qKlxuICogVGhlIFNDSU9OIFdvcmtiZW5jaCBkZWZpbmVzIGEgbnVtYmVyIG9mIGluamVjdGlvbiB0b2tlbnMgKGFsc28gY2FsbGVkIERJIHRva2VucykgYXMgaG9va3MgaW50byB0aGUgd29ya2JlbmNoJ3Mgc3RhcnR1cCBwcm9jZXNzLlxuICogSG9va3MgYXJlIGNhbGxlZCBhdCBkZWZpbmVkIHBvaW50cyBkdXJpbmcgc3RhcnR1cCwgZW5hYmxpbmcgdGhlIGFwcGxpY2F0aW9uJ3MgY29udHJvbGxlZCBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBJbml0aWFsaXplcnMgcmVnaXN0ZXJlZCB1bmRlciB0aGlzIERJIHRva2VuIGFyZSBpbmplY3RlZCBhbmQgZXhlY3V0ZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBTQ0lPTiBNaWNyb2Zyb250ZW5kIFBsYXRmb3JtLlxuICogVHlwaWNhbGx5LCB5b3Ugd291bGQgY29uZmlndXJlIHRoZSBTQ0lPTiBNaWNyb2Zyb250ZW5kIFBsYXRmb3JtIGluIHRoaXMgbGlmZWN5Y2xlIGhvb2ssIGZvciBleGFtcGxlLCByZWdpc3RlciBpbnRlcmNlcHRvcnMgb3IgZGVjb3JhdG9ycy5cbiAqXG4gKiBUaGlzIGxpZmVjeWNsZSBob29rIGlzIG9ubHkgY2FsbGVkIGlmIG1pY3JvZnJvbnRlbmQgc3VwcG9ydCBpcyBlbmFibGVkLiBOb3RlIHRoYXQgeW91IGNhbm5vdCBpbnRlcmFjdCB3aXRoIHRoZSBtaWNyb2Zyb250ZW5kIHBsYXRmb3JtXG4gKiBpbiB0aGlzIGxpZmVjeWNsZSBob29rIGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LlxuICpcbiAqIEFuIGluaXRpYWxpemVyIGNhbiBiZSBhbnkgb2JqZWN0IGFuZCBpcyB0byBiZSBwcm92aWRlZCBhcyBhIG11bHRpLXByb3ZpZGVyLiBJZiB0aGUgaW5pdGlhbGl6ZXIgaXMgYSBmdW5jdGlvbiBvciBpbnN0YW5jZSBvZlxuICoge0BsaW5rIFdvcmtiZW5jaEluaXRpYWxpemVyfSBhbmQgcmV0dXJucyBhIFByb21pc2UsIHRoZSB3b3JrYmVuY2ggd2FpdHMgZm9yIHRoZSBQcm9taXNlIHRvIGJlIHJlc29sdmVkIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHN0YXJ0dXAuXG4gKiBJbml0aWFsaXplcnMgY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuIEluaXRpYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgREkgdG9rZW4gbWF5IHJ1biBpbiBwYXJhbGxlbC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUFJFX1NUQVJUVVAgPSBuZXcgSW5qZWN0aW9uVG9rZW48V29ya2JlbmNoSW5pdGlhbGl6ZXIgfCAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgb2JqZWN0PignTUlDUk9GUk9OVEVORF9QTEFURk9STV9QUkVfU1RBUlRVUCcpO1xuXG4vKipcbiAqIFRoZSBTQ0lPTiBXb3JrYmVuY2ggZGVmaW5lcyBhIG51bWJlciBvZiBpbmplY3Rpb24gdG9rZW5zIChhbHNvIGNhbGxlZCBESSB0b2tlbnMpIGFzIGhvb2tzIGludG8gdGhlIHdvcmtiZW5jaCdzIHN0YXJ0dXAgcHJvY2Vzcy5cbiAqIEhvb2tzIGFyZSBjYWxsZWQgYXQgZGVmaW5lZCBwb2ludHMgZHVyaW5nIHN0YXJ0dXAsIGVuYWJsaW5nIHRoZSBhcHBsaWNhdGlvbidzIGNvbnRyb2xsZWQgaW5pdGlhbGl6YXRpb24uXG4gKlxuICogSW5pdGlhbGl6ZXJzIHJlZ2lzdGVyZWQgdW5kZXIgdGhpcyBESSB0b2tlbiBhcmUgaW5qZWN0ZWQgYW5kIGV4ZWN1dGVkIGFmdGVyIHN0YXJ0ZWQgdGhlIFNDSU9OIE1pY3JvZnJvbnRlbmQgUGxhdGZvcm0uXG4gKiBBdCB0aGlzIHBvaW50LCB0aGUgYWN0aXZhdG9ycyBvZiB0aGUgbWljcm8gYXBwbGljYXRpb25zIGFyZSBub3QgeWV0IGluc3RhbGxlZC4gVHlwaWNhbGx5LCB5b3Ugd291bGQgaW5zdGFsbCBpbnRlbnQgYW5kIG1lc3NhZ2VcbiAqIGhhbmRsZXJzIGluIHRoaXMgbGlmZWN5Y2xlIGhvb2suXG4gKlxuICogVGhpcyBsaWZlY3ljbGUgaG9vayBpcyBvbmx5IGNhbGxlZCBpZiBtaWNyb2Zyb250ZW5kIHN1cHBvcnQgaXMgZW5hYmxlZC5cbiAqXG4gKiBBbiBpbml0aWFsaXplciBjYW4gYmUgYW55IG9iamVjdCBhbmQgaXMgdG8gYmUgcHJvdmlkZWQgYXMgYSBtdWx0aS1wcm92aWRlci4gSWYgdGhlIGluaXRpYWxpemVyIGlzIGEgZnVuY3Rpb24gb3IgaW5zdGFuY2Ugb2ZcbiAqIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYW5kIHJldHVybnMgYSBQcm9taXNlLCB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciB0aGUgUHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzdGFydHVwLlxuICogSW5pdGlhbGl6ZXJzIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBJbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIERJIHRva2VuIG1heSBydW4gaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBjb25zdCBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxXb3JrYmVuY2hJbml0aWFsaXplciB8ICgoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikgfCBvYmplY3Q+KCdNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUCcpO1xuXG4vKipcbiAqIFRoZSBTQ0lPTiBXb3JrYmVuY2ggZGVmaW5lcyBhIG51bWJlciBvZiBpbmplY3Rpb24gdG9rZW5zIChhbHNvIGNhbGxlZCBESSB0b2tlbnMpIGFzIGhvb2tzIGludG8gdGhlIHdvcmtiZW5jaCdzIHN0YXJ0dXAgcHJvY2Vzcy5cbiAqIEhvb2tzIGFyZSBjYWxsZWQgYXQgZGVmaW5lZCBwb2ludHMgZHVyaW5nIHN0YXJ0dXAsIGVuYWJsaW5nIHRoZSBhcHBsaWNhdGlvbidzIGNvbnRyb2xsZWQgaW5pdGlhbGl6YXRpb24uXG4gKlxuICogSW5pdGlhbGl6ZXJzIHJlZ2lzdGVyZWQgdW5kZXIgdGhpcyBESSB0b2tlbiBhcmUgaW5qZWN0ZWQgYW5kIGV4ZWN1dGVkIGp1c3QgYmVmb3JlIHRoZSB7QGxpbmsgV29ya2JlbmNoTGF1bmNoZXJ9IGNvbXBsZXRlcyB0aGUgd29ya2JlbmNoXG4gKiBzdGFydHVwLCB0aGF0IGlzLCBhZnRlciBhbGwgaW5pdGlhbGl6ZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUge0BsaW5rIFdPUktCRU5DSF9TVEFSVFVQfSBESSB0b2tlbiBoYXZlIGNvbXBsZXRlZCBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBBbiBpbml0aWFsaXplciBjYW4gYmUgYW55IG9iamVjdCBhbmQgaXMgdG8gYmUgcHJvdmlkZWQgYXMgYSBtdWx0aS1wcm92aWRlci4gSWYgdGhlIGluaXRpYWxpemVyIGlzIGEgZnVuY3Rpb24gb3IgaW5zdGFuY2Ugb2ZcbiAqIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYW5kIHJldHVybnMgYSBQcm9taXNlLCB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciB0aGUgUHJvbWlzZSB0byBiZSByZXNvbHZlZCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzdGFydHVwLlxuICogSW5pdGlhbGl6ZXJzIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBJbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIERJIHRva2VuIG1heSBydW4gaW4gcGFyYWxsZWwuXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQID0gbmV3IEluamVjdGlvblRva2VuPFdvcmtiZW5jaEluaXRpYWxpemVyIHwgKCgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB8IG9iamVjdD4oJ1dPUktCRU5DSF9QT1NUX1NUQVJUVVAnKTtcblxuLyoqXG4gKiBBbGxvd3MgaW5pdGlhbGl6aW5nIHRoZSBhcHBsaWNhdGlvbiBkdXJpbmcgd29ya2JlbmNoIHN0YXJ0dXAuXG4gKlxuICogVGhlIFNDSU9OIFdvcmtiZW5jaCBkZWZpbmVzIGEgbnVtYmVyIG9mIGluamVjdGlvbiB0b2tlbnMgKGFsc28gY2FsbGVkIERJIHRva2VucykgYXMgaG9va3MgaW50byB0aGUgd29ya2JlbmNoJ3Mgc3RhcnR1cCBwcm9jZXNzLlxuICogSG9va3MgYXJlIGNhbGxlZCBhdCBkZWZpbmVkIHBvaW50cyBkdXJpbmcgc3RhcnR1cCwgZW5hYmxpbmcgdGhlIGFwcGxpY2F0aW9uJ3MgY29udHJvbGxlZCBpbml0aWFsaXphdGlvbi5cbiAqXG4gKiBUaGUgYXBwbGljYXRpb24gY2FuIGFzc29jaWF0ZSBvbmUgb3IgbW9yZSBpbml0aWFsaXplcnMgd2l0aCBhbnkgb2YgdGhlc2UgREkgdG9rZW5zLiBBbiBpbml0aWFsaXplciBjYW4gYmUgYW55IG9iamVjdCBhbmQgaXMgdG8gYmVcbiAqIHByb3ZpZGVkIGFzIGEgbXVsdGktcHJvdmlkZXIuIElmIHRoZSBpbml0aWFsaXplciBpcyBhIGZ1bmN0aW9uIG9yIGluc3RhbmNlIG9mIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0sIHdoaWNoIGRlZmluZXMgYSBzaW5nbGVcbiAqIG1ldGhvZCwgYGluaXRgLCB0aGUgd29ya2JlbmNoIHdhaXRzIGZvciBpdHMgcmV0dXJuZWQgUHJvbWlzZSB0byByZXNvbHZlIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHN0YXJ0dXAuIEluaXRpYWxpemVycyBjYW4gY2FsbFxuICogYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuIEluaXRpYWxpemVycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgREkgdG9rZW4gbWF5IHJ1biBpbiBwYXJhbGxlbC5cbiAqXG4gKiBGb2xsb3dpbmcgREkgdG9rZW5zIGFyZSBhdmFpbGFibGUgYXMgaG9va3MgaW50byB0aGUgd29ya2JlbmNoJ3Mgc3RhcnR1cCBwcm9jZXNzLCBsaXN0ZWQgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIGluamVjdGVkIGFuZFxuICogZXhlY3V0ZWQuXG4gKlxuICogLSB7QGxpbmsgV09SS0JFTkNIX1BSRV9TVEFSVFVQfVxuICogLSB7QGxpbmsgV09SS0JFTkNIX1NUQVJUVVB9XG4gKiAtIHtAbGluayBXT1JLQkVOQ0hfUE9TVF9TVEFSVFVQfVxuICogLSB7QGxpbmsgTUlDUk9GUk9OVEVORF9QTEFURk9STV9QUkVfU1RBUlRVUH1cbiAqIC0ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQfVxuICpcbiAqICMjIyBFeGFtcGxlIG9mIGhvdyB0byBhc3NvY2lhdGUgYW4gaW5pdGlhbGl6ZXIgd2l0aCB0aGUgREkgdG9rZW4ge0BsaW5rIE1JQ1JPRlJPTlRFTkRfUExBVEZPUk1fUE9TVF9TVEFSVFVQfS5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBATmdNb2R1bGUoe1xuICogICAuLi5cbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAge1xuICogICAgICAgcHJvdmlkZTogTUlDUk9GUk9OVEVORF9QTEFURk9STV9QT1NUX1NUQVJUVVAsXG4gKiAgICAgICBtdWx0aTogdHJ1ZSxcbiAqICAgICAgIHVzZUNsYXNzOiBBcHBJbml0aWFsaXplcixcbiAqICAgICB9XG4gKiAgIF1cbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKlxuICogQEluamVjdGFibGUoKVxuICogZXhwb3J0IGNsYXNzIEFwcEluaXRpYWxpemVyIGltcGxlbWVudHMgV29ya2JlbmNoSW5pdGlhbGl6ZXIge1xuICpcbiAqICAgcHVibGljIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gKiAgICAgLi4uXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaEluaXRpYWxpemVyIHtcblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGR1cmluZyB0aGUgc3RhcnR1cCBvZiB0aGUgd29ya2JlbmNoLlxuICAgKlxuICAgKiBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAqIG9mIHRoZSBESSB0b2tlbiB1bmRlciB3aGljaCB0aGlzIGluaXRpYWxpemVyIGlzIHJlZ2lzdGVyZWQuIE5vdGUgdGhhdCBpbml0aWFsaXplcnNcbiAgICogcmVnaXN0ZXJlZCB1bmRlciB0aGUgc2FtZSBESSB0b2tlbiBtYXkgZXhlY3V0ZSBpbiBwYXJhbGxlbC5cbiAgICpcbiAgICogQHJldHVybiBBIFByb21pc2UgYmxvY2tpbmcgc3RhcnR1cCB1bnRpbCBpdCByZXNvbHZlcy5cbiAgICovXG4gIGluaXQoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBSdW5zIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBESSB0b2tlbi4gSW5pdGlhbGl6ZXIgZnVuY3Rpb25zIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnkgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzKHRva2VuOiBJbmplY3Rpb25Ub2tlbjxhbnk+LCBpbmplY3RvcjogSW5qZWN0b3IpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgaW5pdGlhbGl6ZXJzOiBBcnJheTxXb3JrYmVuY2hJbml0aWFsaXplciB8IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHwgYW55PiB8IG51bGwgPSBpbmplY3Rvci5nZXQodG9rZW4sIHVuZGVmaW5lZCwge29wdGlvbmFsOiB0cnVlfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBpZiAoIWluaXRpYWxpemVycz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gSW52b2tlIGFuZCBhd2FpdCBpbml0aWFsaXplciBmdW5jdGlvbnMuXG4gIGF3YWl0IFByb21pc2UuYWxsKGluaXRpYWxpemVycy5yZWR1Y2UoKGFjYywgaW5pdGlhbGl6ZXIpID0+IHtcbiAgICBpZiAodHlwZW9mIGluaXRpYWxpemVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gYWNjLmNvbmNhdChydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IuZ2V0KEVudmlyb25tZW50SW5qZWN0b3IpLCBpbml0aWFsaXplcikpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgaW5pdGlhbGl6ZXI/LmluaXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3Rvci5nZXQoRW52aXJvbm1lbnRJbmplY3RvciksICgpID0+IGluaXRpYWxpemVyLmluaXQoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBuZXcgQXJyYXk8UHJvbWlzZTx1bmtub3duPj4oKSkpO1xufVxuIl19
@@ -1,173 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2022 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { WorkbenchConfig } from '../workbench-config';
11
- import { APP_INITIALIZER, ApplicationInitStatus, assertNotInReactiveContext, inject, Injectable, makeEnvironmentProviders, NgZone, signal } from '@angular/core';
12
- import { runWorkbenchInitializers, WORKBENCH_POST_STARTUP, WORKBENCH_PRE_STARTUP, WORKBENCH_STARTUP } from './workbench-initializer';
13
- import { LoggerNames } from '../logging';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "../logging";
16
- /**
17
- * Provides API to launch the SCION Workbench.
18
- *
19
- * During workbench startup, the launcher runs registered workbench initializers and waits for them to complete.
20
- * Workbench initializers may execute in parallel. To register a workbench initializer, provide a class implementing
21
- * {@link WorkbenchInitializer} as a multi-provider using the DI class token {@link WorkbenchInitializer}.
22
- *
23
- * The SCION Workbench supports the following launchers:
24
- *
25
- * - **APP_INITIALIZER**
26
- * Launches the workbench in an Angular `APP_INITIALIZER`, which is before bootstrapping the app component.
27
- *
28
- * - **LAZY** (which is the default)
29
- * Launches the workbench at the latest when bootstrapping the workbench root component `<wb-workbench>`.
30
- *
31
- * With this strategy, you are flexible when to start the workbench. You can start the workbench explicitly by
32
- * calling {@link WorkbenchLauncher#launch}, e.g., to launch the workbench from a route guard or app initializer,
33
- * or start it automatically when adding the workbench root component `<wb-workbench>` to the Angular component
34
- * tree.
35
- *
36
- * The workbench component displays a startup splash until completed startup. You can configure a custom splash in
37
- * {@link WorkbenchConfig#startup#splash}. When launching the workbench in an Angular `APP_INITIALIZER`, no splash will
38
- * display since the workbench will start upfront.
39
- */
40
- export class WorkbenchLauncher {
41
- constructor(_startup, _logger, _zone, _injector) {
42
- this._startup = _startup;
43
- this._logger = _logger;
44
- this._zone = _zone;
45
- this._injector = _injector;
46
- this._state = StartupState.Stopped;
47
- const workbenchConfig = inject(WorkbenchConfig, { optional: true });
48
- if (!workbenchConfig) {
49
- throw Error(`[WorkbenchError] Missing required workbench providers. Did you forget to call 'provideWorkbench()' in the providers array of 'bootstrapApplication' or the root 'NgModule'?`);
50
- }
51
- }
52
- /**
53
- * Launches the SCION Workbench.
54
- *
55
- * This method represents the initial entry point that should be called to launch the workbench. The launcher runs
56
- * registered workbench initializers and waits for them to complete. Calling this method has no effect if the workbench
57
- * is already starting or has started.
58
- *
59
- * ### Splash
60
- * When mounting the workbench root component `<wb-workbench>` to the DOM before the workbench startup has finished,
61
- * the workbench will display a startup splash until completed startup.
62
- *
63
- * ### Startup Lifecycle Hooks
64
- * The SCION Workbench defines a number of injection tokens (also called DI tokens) as hooks into the workbench's startup process.
65
- * Hooks are called at defined points during startup, enabling the application's controlled initialization.
66
- *
67
- * The application can associate one or more initializers with any of these DI tokens. An initializer can be any object and is to
68
- * be provided as a multi-provider. If the initializer is a function or instance of {@link WorkbenchInitializer} and returns a Promise,
69
- * the workbench waits for the Promise to be resolved before proceeding with the startup. Initializers can call `inject` to get any
70
- * required dependencies. Initializers associated with the same DI token may run in parallel.
71
- *
72
- * Following DI tokens are available as hooks into the workbench's startup process, listed in the order in which they are injected and
73
- * executed.
74
- *
75
- * - {@link WORKBENCH_PRE_STARTUP}
76
- * - {@link WORKBENCH_STARTUP}
77
- * - {@link MICROFRONTEND_PLATFORM_PRE_STARTUP}
78
- * - {@link MICROFRONTEND_PLATFORM_POST_STARTUP}
79
- * - {@link WORKBENCH_POST_STARTUP}
80
- *
81
- * ### Example of how to hook into the startup process.
82
- *
83
- * ```ts
84
- * {
85
- * provide: WORKBENCH_STARTUP,
86
- * multi: true,
87
- * useValue: () => inject(Initializer).init(),
88
- * }
89
- * ```
90
- *
91
- * @return A Promise that resolves when the workbench has completed the startup or that rejects if the startup failed.
92
- */
93
- async launch() {
94
- assertNotInReactiveContext(this.launch, 'Call WorkbenchLauncher.launch() in a non-reactive (non-tracking) context, such as within the untracked() function.');
95
- // Ensure to run in the Angular zone to check the workbench for changes even if called from outside the Angular zone, e.g. in unit tests.
96
- if (!NgZone.isInAngularZone()) {
97
- return this._zone.run(() => this.launch());
98
- }
99
- switch (this._state) {
100
- case StartupState.Stopped: {
101
- this._logger.debug(() => `Starting Workbench. Waiting for workbench initializers to complete. [launcher=${this._injector.get(ApplicationInitStatus).done ? 'LAZY' : 'APP_INITIALIZER'}]`, LoggerNames.LIFECYCLE);
102
- this._state = StartupState.Starting;
103
- await runWorkbenchInitializers(WORKBENCH_PRE_STARTUP, this._injector);
104
- await runWorkbenchInitializers(WORKBENCH_STARTUP, this._injector);
105
- this._state = StartupState.Started;
106
- await runWorkbenchInitializers(WORKBENCH_POST_STARTUP, this._injector);
107
- this._logger.debug(() => 'Workbench started.', LoggerNames.LIFECYCLE);
108
- this._startup.notifyStarted();
109
- return this._startup.whenStarted;
110
- }
111
- case StartupState.Starting:
112
- case StartupState.Started: {
113
- return this._startup.whenStarted;
114
- }
115
- default: {
116
- throw Error(`[WorkbenchStartupError] Illegal startup state: ${this._state}`);
117
- }
118
- }
119
- }
120
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, deps: [{ token: WorkbenchStartup }, { token: i1.Logger }, { token: i0.NgZone }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
121
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, providedIn: 'root' }); }
122
- }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchLauncher, decorators: [{
124
- type: Injectable,
125
- args: [{ providedIn: 'root' }]
126
- }], ctorParameters: () => [{ type: WorkbenchStartup }, { type: i1.Logger }, { type: i0.NgZone }, { type: i0.Injector }] });
127
- var StartupState;
128
- (function (StartupState) {
129
- StartupState[StartupState["Stopped"] = 0] = "Stopped";
130
- StartupState[StartupState["Starting"] = 1] = "Starting";
131
- StartupState[StartupState["Started"] = 2] = "Started";
132
- })(StartupState || (StartupState = {}));
133
- /**
134
- * Allows waiting for the workbench startup to complete.
135
- */
136
- export class WorkbenchStartup {
137
- constructor() {
138
- /**
139
- * Signals when the workbench completed startup.
140
- */
141
- this.isStarted = signal(false);
142
- /**
143
- * Promise that resolves when the workbench has completed the startup.
144
- */
145
- this.whenStarted = new Promise(resolve => this.notifyStarted = () => {
146
- this.isStarted.set(true);
147
- resolve(true);
148
- });
149
- }
150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
151
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, providedIn: 'root' }); }
152
- }
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchStartup, decorators: [{
154
- type: Injectable,
155
- args: [{ providedIn: 'root' }]
156
- }] });
157
- /**
158
- * Provides a set of DI providers for launching the workbench.
159
- */
160
- export function provideWorkbenchLauncher(workbenchConfig) {
161
- if (workbenchConfig.startup?.launcher !== 'APP_INITIALIZER') {
162
- return [];
163
- }
164
- return makeEnvironmentProviders([{
165
- provide: APP_INITIALIZER,
166
- useFactory: () => {
167
- const launcher = inject(WorkbenchLauncher);
168
- return () => launcher.launch();
169
- },
170
- multi: true,
171
- }]);
172
- }
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxhdW5jaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9zdGFydHVwL3dvcmtiZW5jaC1sYXVuY2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQUUscUJBQXFCLEVBQUUsMEJBQTBCLEVBQXdCLE1BQU0sRUFBRSxVQUFVLEVBQVksd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvTCxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSSxPQUFPLEVBQVMsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDOzs7QUFFL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixRQUEwQixFQUMxQixPQUFlLEVBQ2YsS0FBYSxFQUNiLFNBQW1CO1FBSG5CLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUwvQixXQUFNLEdBQWlCLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFNbEQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixNQUFNLEtBQUssQ0FBQyw2S0FBNkssQ0FBQyxDQUFDO1FBQzdMLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Q0c7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQiwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLG9IQUFvSCxDQUFDLENBQUM7UUFFOUoseUlBQXlJO1FBQ3pJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixLQUFLLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpRkFBaUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2pOLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDcEMsTUFBTSx3QkFBd0IsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RFLE1BQU0sd0JBQXdCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0JBQ25DLE1BQU0sd0JBQXdCLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUMzQixLQUFLLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ25DLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNSLE1BQU0sS0FBSyxDQUFDLGtEQUFrRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMvRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBbkZVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREwsTUFBTTs7MkZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBdUZoQyxJQUFLLFlBRUo7QUFGRCxXQUFLLFlBQVk7SUFDZixxREFBTyxDQUFBO0lBQUUsdURBQVEsQ0FBQTtJQUFFLHFEQUFPLENBQUE7QUFDNUIsQ0FBQyxFQUZJLFlBQVksS0FBWixZQUFZLFFBRWhCO0FBRUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBR0U7O1dBRUc7UUFDYSxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSzFDOztXQUVHO1FBQ2EsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO1lBQ25GLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztLQUNKOzhHQWpCWSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQURKLE1BQU07OzJGQUNsQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQW9CaEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsZUFBZ0M7SUFDdkUsSUFBSSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sd0JBQXdCLENBQUMsQ0FBQztZQUMvQixPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNmLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiAqIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4gKiB3aGljaCBpcyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLTIuMC9cbiAqXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuICovXG5cbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7QVBQX0lOSVRJQUxJWkVSLCBBcHBsaWNhdGlvbkluaXRTdGF0dXMsIGFzc2VydE5vdEluUmVhY3RpdmVDb250ZXh0LCBFbnZpcm9ubWVudFByb3ZpZGVycywgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLCBOZ1pvbmUsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3J1bldvcmtiZW5jaEluaXRpYWxpemVycywgV09SS0JFTkNIX1BPU1RfU1RBUlRVUCwgV09SS0JFTkNIX1BSRV9TVEFSVFVQLCBXT1JLQkVOQ0hfU1RBUlRVUH0gZnJvbSAnLi93b3JrYmVuY2gtaW5pdGlhbGl6ZXInO1xuaW1wb3J0IHtMb2dnZXIsIExvZ2dlck5hbWVzfSBmcm9tICcuLi9sb2dnaW5nJztcblxuLyoqXG4gKiBQcm92aWRlcyBBUEkgdG8gbGF1bmNoIHRoZSBTQ0lPTiBXb3JrYmVuY2guXG4gKlxuICogRHVyaW5nIHdvcmtiZW5jaCBzdGFydHVwLCB0aGUgbGF1bmNoZXIgcnVucyByZWdpc3RlcmVkIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgYW5kIHdhaXRzIGZvciB0aGVtIHRvIGNvbXBsZXRlLlxuICogV29ya2JlbmNoIGluaXRpYWxpemVycyBtYXkgZXhlY3V0ZSBpbiBwYXJhbGxlbC4gVG8gcmVnaXN0ZXIgYSB3b3JrYmVuY2ggaW5pdGlhbGl6ZXIsIHByb3ZpZGUgYSBjbGFzcyBpbXBsZW1lbnRpbmdcbiAqIHtAbGluayBXb3JrYmVuY2hJbml0aWFsaXplcn0gYXMgYSBtdWx0aS1wcm92aWRlciB1c2luZyB0aGUgREkgY2xhc3MgdG9rZW4ge0BsaW5rIFdvcmtiZW5jaEluaXRpYWxpemVyfS5cbiAqXG4gKiBUaGUgU0NJT04gV29ya2JlbmNoIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgbGF1bmNoZXJzOlxuICpcbiAqICAtICoqQVBQX0lOSVRJQUxJWkVSKipcbiAqICAgTGF1bmNoZXMgdGhlIHdvcmtiZW5jaCBpbiBhbiBBbmd1bGFyIGBBUFBfSU5JVElBTElaRVJgLCB3aGljaCBpcyBiZWZvcmUgYm9vdHN0cmFwcGluZyB0aGUgYXBwIGNvbXBvbmVudC5cbiAqXG4gKiAtICoqTEFaWSoqICh3aGljaCBpcyB0aGUgZGVmYXVsdClcbiAqICAgTGF1bmNoZXMgdGhlIHdvcmtiZW5jaCBhdCB0aGUgbGF0ZXN0IHdoZW4gYm9vdHN0cmFwcGluZyB0aGUgd29ya2JlbmNoIHJvb3QgY29tcG9uZW50IGA8d2Itd29ya2JlbmNoPmAuXG4gKlxuICogICBXaXRoIHRoaXMgc3RyYXRlZ3ksIHlvdSBhcmUgZmxleGlibGUgd2hlbiB0byBzdGFydCB0aGUgd29ya2JlbmNoLiBZb3UgY2FuIHN0YXJ0IHRoZSB3b3JrYmVuY2ggZXhwbGljaXRseSBieVxuICogICBjYWxsaW5nIHtAbGluayBXb3JrYmVuY2hMYXVuY2hlciNsYXVuY2h9LCBlLmcuLCB0byBsYXVuY2ggdGhlIHdvcmtiZW5jaCBmcm9tIGEgcm91dGUgZ3VhcmQgb3IgYXBwIGluaXRpYWxpemVyLFxuICogICBvciBzdGFydCBpdCBhdXRvbWF0aWNhbGx5IHdoZW4gYWRkaW5nIHRoZSB3b3JrYmVuY2ggcm9vdCBjb21wb25lbnQgYDx3Yi13b3JrYmVuY2g+YCB0byB0aGUgQW5ndWxhciBjb21wb25lbnRcbiAqICAgdHJlZS5cbiAqXG4gKiBUaGUgd29ya2JlbmNoIGNvbXBvbmVudCBkaXNwbGF5cyBhIHN0YXJ0dXAgc3BsYXNoIHVudGlsIGNvbXBsZXRlZCBzdGFydHVwLiBZb3UgY2FuIGNvbmZpZ3VyZSBhIGN1c3RvbSBzcGxhc2ggaW5cbiAqIHtAbGluayBXb3JrYmVuY2hDb25maWcjc3RhcnR1cCNzcGxhc2h9LiBXaGVuIGxhdW5jaGluZyB0aGUgd29ya2JlbmNoIGluIGFuIEFuZ3VsYXIgYEFQUF9JTklUSUFMSVpFUmAsIG5vIHNwbGFzaCB3aWxsXG4gKiBkaXNwbGF5IHNpbmNlIHRoZSB3b3JrYmVuY2ggd2lsbCBzdGFydCB1cGZyb250LlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXVuY2hlciB7XG5cbiAgcHJpdmF0ZSBfc3RhdGU6IFN0YXJ0dXBTdGF0ZSA9IFN0YXJ0dXBTdGF0ZS5TdG9wcGVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N0YXJ0dXA6IFdvcmtiZW5jaFN0YXJ0dXAsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogTG9nZ2VyLFxuICAgICAgICAgICAgICBwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3Rvcikge1xuICAgIGNvbnN0IHdvcmtiZW5jaENvbmZpZyA9IGluamVjdChXb3JrYmVuY2hDb25maWcsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIGlmICghd29ya2JlbmNoQ29uZmlnKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW1dvcmtiZW5jaEVycm9yXSBNaXNzaW5nIHJlcXVpcmVkIHdvcmtiZW5jaCBwcm92aWRlcnMuIERpZCB5b3UgZm9yZ2V0IHRvIGNhbGwgJ3Byb3ZpZGVXb3JrYmVuY2goKScgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiAnYm9vdHN0cmFwQXBwbGljYXRpb24nIG9yIHRoZSByb290ICdOZ01vZHVsZSc/YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExhdW5jaGVzIHRoZSBTQ0lPTiBXb3JrYmVuY2guXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHJlcHJlc2VudHMgdGhlIGluaXRpYWwgZW50cnkgcG9pbnQgdGhhdCBzaG91bGQgYmUgY2FsbGVkIHRvIGxhdW5jaCB0aGUgd29ya2JlbmNoLiBUaGUgbGF1bmNoZXIgcnVuc1xuICAgKiByZWdpc3RlcmVkIHdvcmtiZW5jaCBpbml0aWFsaXplcnMgYW5kIHdhaXRzIGZvciB0aGVtIHRvIGNvbXBsZXRlLiBDYWxsaW5nIHRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHdvcmtiZW5jaFxuICAgKiBpcyBhbHJlYWR5IHN0YXJ0aW5nIG9yIGhhcyBzdGFydGVkLlxuICAgKlxuICAgKiAjIyMgU3BsYXNoXG4gICAqIFdoZW4gbW91bnRpbmcgdGhlIHdvcmtiZW5jaCByb290IGNvbXBvbmVudCBgPHdiLXdvcmtiZW5jaD5gIHRvIHRoZSBET00gYmVmb3JlIHRoZSB3b3JrYmVuY2ggc3RhcnR1cCBoYXMgZmluaXNoZWQsXG4gICAqIHRoZSB3b3JrYmVuY2ggd2lsbCBkaXNwbGF5IGEgc3RhcnR1cCBzcGxhc2ggdW50aWwgY29tcGxldGVkIHN0YXJ0dXAuXG4gICAqXG4gICAqICMjIyBTdGFydHVwIExpZmVjeWNsZSBIb29rc1xuICAgKiBUaGUgU0NJT04gV29ya2JlbmNoIGRlZmluZXMgYSBudW1iZXIgb2YgaW5qZWN0aW9uIHRva2VucyAoYWxzbyBjYWxsZWQgREkgdG9rZW5zKSBhcyBob29rcyBpbnRvIHRoZSB3b3JrYmVuY2gncyBzdGFydHVwIHByb2Nlc3MuXG4gICAqIEhvb2tzIGFyZSBjYWxsZWQgYXQgZGVmaW5lZCBwb2ludHMgZHVyaW5nIHN0YXJ0dXAsIGVuYWJsaW5nIHRoZSBhcHBsaWNhdGlvbidzIGNvbnRyb2xsZWQgaW5pdGlhbGl6YXRpb24uXG4gICAqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBjYW4gYXNzb2NpYXRlIG9uZSBvciBtb3JlIGluaXRpYWxpemVycyB3aXRoIGFueSBvZiB0aGVzZSBESSB0b2tlbnMuIEFuIGluaXRpYWxpemVyIGNhbiBiZSBhbnkgb2JqZWN0IGFuZCBpcyB0b1xuICAgKiBiZSBwcm92aWRlZCBhcyBhIG11bHRpLXByb3ZpZGVyLiBJZiB0aGUgaW5pdGlhbGl6ZXIgaXMgYSBmdW5jdGlvbiBvciBpbnN0YW5jZSBvZiB7QGxpbmsgV29ya2JlbmNoSW5pdGlhbGl6ZXJ9IGFuZCByZXR1cm5zIGEgUHJvbWlzZSxcbiAgICogdGhlIHdvcmtiZW5jaCB3YWl0cyBmb3IgdGhlIFByb21pc2UgdG8gYmUgcmVzb2x2ZWQgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgc3RhcnR1cC4gSW5pdGlhbGl6ZXJzIGNhbiBjYWxsIGBpbmplY3RgIHRvIGdldCBhbnlcbiAgICogcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiBJbml0aWFsaXplcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIERJIHRva2VuIG1heSBydW4gaW4gcGFyYWxsZWwuXG4gICAqXG4gICAqIEZvbGxvd2luZyBESSB0b2tlbnMgYXJlIGF2YWlsYWJsZSBhcyBob29rcyBpbnRvIHRoZSB3b3JrYmVuY2gncyBzdGFydHVwIHByb2Nlc3MsIGxpc3RlZCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgaW5qZWN0ZWQgYW5kXG4gICAqIGV4ZWN1dGVkLlxuICAgKlxuICAgKiAtIHtAbGluayBXT1JLQkVOQ0hfUFJFX1NUQVJUVVB9XG4gICAqIC0ge0BsaW5rIFdPUktCRU5DSF9TVEFSVFVQfVxuICAgKiAtIHtAbGluayBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BSRV9TVEFSVFVQfVxuICAgKiAtIHtAbGluayBNSUNST0ZST05URU5EX1BMQVRGT1JNX1BPU1RfU1RBUlRVUH1cbiAgICogLSB7QGxpbmsgV09SS0JFTkNIX1BPU1RfU1RBUlRVUH1cbiAgICpcbiAgICogIyMjIEV4YW1wbGUgb2YgaG93IHRvIGhvb2sgaW50byB0aGUgc3RhcnR1cCBwcm9jZXNzLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiB7XG4gICAqICAgcHJvdmlkZTogV09SS0JFTkNIX1NUQVJUVVAsXG4gICAqICAgbXVsdGk6IHRydWUsXG4gICAqICAgdXNlVmFsdWU6ICgpID0+IGluamVjdChJbml0aWFsaXplcikuaW5pdCgpLFxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcmV0dXJuIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHdvcmtiZW5jaCBoYXMgY29tcGxldGVkIHRoZSBzdGFydHVwIG9yIHRoYXQgcmVqZWN0cyBpZiB0aGUgc3RhcnR1cCBmYWlsZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGF1bmNoKCk6IFByb21pc2U8dHJ1ZT4ge1xuICAgIGFzc2VydE5vdEluUmVhY3RpdmVDb250ZXh0KHRoaXMubGF1bmNoLCAnQ2FsbCBXb3JrYmVuY2hMYXVuY2hlci5sYXVuY2goKSBpbiBhIG5vbi1yZWFjdGl2ZSAobm9uLXRyYWNraW5nKSBjb250ZXh0LCBzdWNoIGFzIHdpdGhpbiB0aGUgdW50cmFja2VkKCkgZnVuY3Rpb24uJyk7XG5cbiAgICAvLyBFbnN1cmUgdG8gcnVuIGluIHRoZSBBbmd1bGFyIHpvbmUgdG8gY2hlY2sgdGhlIHdvcmtiZW5jaCBmb3IgY2hhbmdlcyBldmVuIGlmIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIEFuZ3VsYXIgem9uZSwgZS5nLiBpbiB1bml0IHRlc3RzLlxuICAgIGlmICghTmdab25lLmlzSW5Bbmd1bGFyWm9uZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fem9uZS5ydW4oKCkgPT4gdGhpcy5sYXVuY2goKSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLl9zdGF0ZSkge1xuICAgICAgY2FzZSBTdGFydHVwU3RhdGUuU3RvcHBlZDoge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYFN0YXJ0aW5nIFdvcmtiZW5jaC4gV2FpdGluZyBmb3Igd29ya2JlbmNoIGluaXRpYWxpemVycyB0byBjb21wbGV0ZS4gW2xhdW5jaGVyPSR7dGhpcy5faW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uSW5pdFN0YXR1cykuZG9uZSA/ICdMQVpZJyA6ICdBUFBfSU5JVElBTElaRVInfV1gLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IFN0YXJ0dXBTdGF0ZS5TdGFydGluZztcbiAgICAgICAgYXdhaXQgcnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzKFdPUktCRU5DSF9QUkVfU1RBUlRVUCwgdGhpcy5faW5qZWN0b3IpO1xuICAgICAgICBhd2FpdCBydW5Xb3JrYmVuY2hJbml0aWFsaXplcnMoV09SS0JFTkNIX1NUQVJUVVAsIHRoaXMuX2luamVjdG9yKTtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBTdGFydHVwU3RhdGUuU3RhcnRlZDtcbiAgICAgICAgYXdhaXQgcnVuV29ya2JlbmNoSW5pdGlhbGl6ZXJzKFdPUktCRU5DSF9QT1NUX1NUQVJUVVAsIHRoaXMuX2luamVjdG9yKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+ICdXb3JrYmVuY2ggc3RhcnRlZC4nLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgICAgICB0aGlzLl9zdGFydHVwLm5vdGlmeVN0YXJ0ZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0dXAud2hlblN0YXJ0ZWQ7XG4gICAgICB9XG4gICAgICBjYXNlIFN0YXJ0dXBTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgU3RhcnR1cFN0YXRlLlN0YXJ0ZWQ6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0dXAud2hlblN0YXJ0ZWQ7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IEVycm9yKGBbV29ya2JlbmNoU3RhcnR1cEVycm9yXSBJbGxlZ2FsIHN0YXJ0dXAgc3RhdGU6ICR7dGhpcy5fc3RhdGV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmVudW0gU3RhcnR1cFN0YXRlIHtcbiAgU3RvcHBlZCwgU3RhcnRpbmcsIFN0YXJ0ZWRcbn1cblxuLyoqXG4gKiBBbGxvd3Mgd2FpdGluZyBmb3IgdGhlIHdvcmtiZW5jaCBzdGFydHVwIHRvIGNvbXBsZXRlLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hTdGFydHVwIHtcblxuICAvKipcbiAgICogU2lnbmFscyB3aGVuIHRoZSB3b3JrYmVuY2ggY29tcGxldGVkIHN0YXJ0dXAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTdGFydGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG5vdGlmeVN0YXJ0ZWQhOiAoKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgd29ya2JlbmNoIGhhcyBjb21wbGV0ZWQgdGhlIHN0YXJ0dXAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd2hlblN0YXJ0ZWQgPSBuZXcgUHJvbWlzZTx0cnVlPihyZXNvbHZlID0+IHRoaXMubm90aWZ5U3RhcnRlZCA9ICgpID0+IHtcbiAgICB0aGlzLmlzU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgcmVzb2x2ZSh0cnVlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYSBzZXQgb2YgREkgcHJvdmlkZXJzIGZvciBsYXVuY2hpbmcgdGhlIHdvcmtiZW5jaC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVXb3JrYmVuY2hMYXVuY2hlcih3b3JrYmVuY2hDb25maWc6IFdvcmtiZW5jaENvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHwgW10ge1xuICBpZiAod29ya2JlbmNoQ29uZmlnLnN0YXJ0dXA/LmxhdW5jaGVyICE9PSAnQVBQX0lOSVRJQUxJWkVSJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3tcbiAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgY29uc3QgbGF1bmNoZXIgPSBpbmplY3QoV29ya2JlbmNoTGF1bmNoZXIpO1xuICAgICAgcmV0dXJuICgpID0+IGxhdW5jaGVyLmxhdW5jaCgpO1xuICAgIH0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH1dKTtcbn1cbiJdfQ==
@@ -1,11 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2023 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- export { WorkbenchStorage } from './workbench-storage';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3N0b3JhZ2UvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5leHBvcnQge1dvcmtiZW5jaFN0b3JhZ2V9IGZyb20gJy4vd29ya2JlbmNoLXN0b3JhZ2UnO1xuIl19
@@ -1,37 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2023 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { Injectable } from '@angular/core';
11
- import * as i0 from "@angular/core";
12
- /**
13
- * Provides persistent storage to the SCION Workbench.
14
- */
15
- export class WorkbenchStorage {
16
- }
17
- /**
18
- * Default storage used by the SCION workbench to persist data in local storage.
19
- *
20
- * Local storage maintains a persistent storage area per origin. Data does not expire and remains after the browser restarts.
21
- *
22
- * @internal
23
- */
24
- export class DefaultWorkbenchStorage {
25
- load(key) {
26
- return localStorage.getItem(key);
27
- }
28
- store(key, value) {
29
- localStorage.setItem(key, value);
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
32
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: DefaultWorkbenchStorage, decorators: [{
35
- type: Injectable
36
- }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9zdG9yYWdlL3dvcmtiZW5jaC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFekM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGdCQUFnQjtDQWNyQztBQUVEOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFFM0IsSUFBSSxDQUFDLEdBQVc7UUFDckIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDckMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0FSVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBQcm92aWRlcyBwZXJzaXN0ZW50IHN0b3JhZ2UgdG8gdGhlIFNDSU9OIFdvcmtiZW5jaC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdvcmtiZW5jaFN0b3JhZ2Uge1xuXG4gIC8qKlxuICAgKiBNZXRob2QgaW52b2tlZCB0byBsb2FkIGEgdmFsdWUgZnJvbSBwZXJzaXN0ZWQgc3RvcmFnZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBsb2FkKGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB8IHN0cmluZyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCBpbnZva2VkIHRvIHdyaXRlIGEgdmFsdWUgdG8gcGVyc2lzdGVkIHN0b3JhZ2UuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgZHVyaW5nIHBhZ2UgdW5sb2FkLiBJZiBzZW5kaW5nIGRhdGEgdG8gYSB3ZWIgc2VydmVyLFxuICAgKiB1c2UgYG5hdmlnYXRvci5zZW5kQmVhY29uKClgIGluc3RlYWQgb2YgYHdpbmRvdy5mZXRjaCgpYCB0byByZWxpYWJseSB0cmFuc21pdCBkYXRhLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHN0b3JlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG59XG5cbi8qKlxuICogRGVmYXVsdCBzdG9yYWdlIHVzZWQgYnkgdGhlIFNDSU9OIHdvcmtiZW5jaCB0byBwZXJzaXN0IGRhdGEgaW4gbG9jYWwgc3RvcmFnZS5cbiAqXG4gKiBMb2NhbCBzdG9yYWdlIG1haW50YWlucyBhIHBlcnNpc3RlbnQgc3RvcmFnZSBhcmVhIHBlciBvcmlnaW4uIERhdGEgZG9lcyBub3QgZXhwaXJlIGFuZCByZW1haW5zIGFmdGVyIHRoZSBicm93c2VyIHJlc3RhcnRzLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgvKiBETyBOT1QgUFJPVklERSB2aWEgJ3Byb3ZpZGVkSW4nIG1ldGFkYXRhIGFzIHJlZ2lzdGVyZWQgY29uZGl0aW9uYWxseSB1bmRlciBgV29ya2JlbmNoU3RvcmFnZWAgREkgdG9rZW4uICovKVxuZXhwb3J0IGNsYXNzIERlZmF1bHRXb3JrYmVuY2hTdG9yYWdlIGltcGxlbWVudHMgV29ya2JlbmNoU3RvcmFnZSB7XG5cbiAgcHVibGljIGxvYWQoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzdG9yZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICB9XG59XG4iXX0=
@@ -1,12 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2023 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- export { WorkbenchTestingModule } from './workbench-testing.module';
11
- export { provideWorkbenchForTest } from './workbench.provider';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3Rlc3RpbmcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5leHBvcnQge1dvcmtiZW5jaFRlc3RpbmdNb2R1bGV9IGZyb20gJy4vd29ya2JlbmNoLXRlc3RpbmcubW9kdWxlJztcbmV4cG9ydCB7cHJvdmlkZVdvcmtiZW5jaEZvclRlc3R9IGZyb20gJy4vd29ya2JlbmNoLnByb3ZpZGVyJztcbiJdfQ==
@@ -1,49 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { provideWorkbenchForTest } from './workbench.provider';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Sets up the SCION Workbench to be used for testing.
6
- *
7
- * Does the following:
8
- * - provides the workbench with given config
9
- * - configures the workbench to name the initial part 'main'
10
- * - installs a sequence for activation instants
11
- * - configures the testbed to auto-detect changes
12
- * - disables animations
13
- * - performs the initial navigation
14
- *
15
- * ### Usage
16
- *
17
- * ```
18
- * beforeEach(() => {
19
- * TestBed.configureTestingModule({
20
- * imports: [
21
- * WorkbenchTestingModule.forTest(),
22
- * RouterTestingModule.withRoutes([
23
- * {path: 'test-view', component: TestComponent},
24
- * ]),
25
- * ],
26
- * });
27
- * });
28
- * ```
29
- *
30
- * @deprecated since version 17.0.0-beta.8; Register SCION Workbench providers using `provideWorkbench` function instead; API will be removed in a future release; API will be removed in a future release.
31
- */
32
- export class WorkbenchTestingModule {
33
- /**
34
- * Sets up the SCION Workbench to be used for testing.
35
- */
36
- static forTest(config) {
37
- return {
38
- ngModule: WorkbenchTestingModule,
39
- providers: [provideWorkbenchForTest(config)],
40
- };
41
- }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
43
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule }); }
44
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule }); }
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchTestingModule, decorators: [{
47
- type: NgModule
48
- }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXRlc3RpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdGVzdGluZy93b3JrYmVuY2gtdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBRTdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUF3QjtRQUM1QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQzs4R0FWVSxzQkFBc0I7K0dBQXRCLHNCQUFzQjsrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dvcmtiZW5jaENvbmZpZ30gZnJvbSAnLi4vd29ya2JlbmNoLWNvbmZpZyc7XG5pbXBvcnQge3Byb3ZpZGVXb3JrYmVuY2hGb3JUZXN0fSBmcm9tICcuL3dvcmtiZW5jaC5wcm92aWRlcic7XG5cbi8qKlxuICogU2V0cyB1cCB0aGUgU0NJT04gV29ya2JlbmNoIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmcuXG4gKlxuICogRG9lcyB0aGUgZm9sbG93aW5nOlxuICogLSBwcm92aWRlcyB0aGUgd29ya2JlbmNoIHdpdGggZ2l2ZW4gY29uZmlnXG4gKiAtIGNvbmZpZ3VyZXMgdGhlIHdvcmtiZW5jaCB0byBuYW1lIHRoZSBpbml0aWFsIHBhcnQgJ21haW4nXG4gKiAtIGluc3RhbGxzIGEgc2VxdWVuY2UgZm9yIGFjdGl2YXRpb24gaW5zdGFudHNcbiAqIC0gY29uZmlndXJlcyB0aGUgdGVzdGJlZCB0byBhdXRvLWRldGVjdCBjaGFuZ2VzXG4gKiAtIGRpc2FibGVzIGFuaW1hdGlvbnNcbiAqIC0gcGVyZm9ybXMgdGhlIGluaXRpYWwgbmF2aWdhdGlvblxuICpcbiAqICMjIyBVc2FnZVxuICpcbiAqIGBgYFxuICogYmVmb3JlRWFjaCgoKSA9PiB7XG4gKiAgIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gKiAgICAgIGltcG9ydHM6IFtcbiAqICAgICAgICBXb3JrYmVuY2hUZXN0aW5nTW9kdWxlLmZvclRlc3QoKSxcbiAqICAgICAgICBSb3V0ZXJUZXN0aW5nTW9kdWxlLndpdGhSb3V0ZXMoW1xuICogICAgICAgICAge3BhdGg6ICd0ZXN0LXZpZXcnLCBjb21wb25lbnQ6IFRlc3RDb21wb25lbnR9LFxuICogICAgICAgIF0pLFxuICogICAgICBdLFxuICogICAgfSk7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMC4wLWJldGEuODsgUmVnaXN0ZXIgU0NJT04gV29ya2JlbmNoIHByb3ZpZGVycyB1c2luZyBgcHJvdmlkZVdvcmtiZW5jaGAgZnVuY3Rpb24gaW5zdGVhZDsgQVBJIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlOyBBUEkgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXG4gKi9cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoVGVzdGluZ01vZHVsZSB7XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIFNDSU9OIFdvcmtiZW5jaCB0byBiZSB1c2VkIGZvciB0ZXN0aW5nLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmb3JUZXN0KGNvbmZpZz86IFdvcmtiZW5jaENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8V29ya2JlbmNoVGVzdGluZ01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogV29ya2JlbmNoVGVzdGluZ01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3Byb3ZpZGVXb3JrYmVuY2hGb3JUZXN0KGNvbmZpZyldLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,60 +0,0 @@
1
- import { ENVIRONMENT_INITIALIZER, inject, Injectable, makeEnvironmentProviders } from '@angular/core';
2
- import { provideWorkbench } from '../workbench.provider';
3
- import { provideNoopAnimations } from '@angular/platform-browser/animations';
4
- import { ActivationInstantProvider } from '../activation-instant.provider';
5
- import { MAIN_AREA_INITIAL_PART_ID } from '../layout/ɵworkbench-layout';
6
- import { ComponentFixtureAutoDetect } from '@angular/core/testing';
7
- import { Router } from '@angular/router';
8
- import * as i0 from "@angular/core";
9
- /**
10
- * Returns the set of dependency-injection providers to enable and configure the SCION Workbench in tests.
11
- *
12
- * Does the following:
13
- * - provides the workbench with given config
14
- * - configures the workbench to name the initial part 'main'
15
- * - installs a sequence for activation instants
16
- * - configures the testbed to auto-detect changes
17
- * - disables animations
18
- * - performs the initial navigation
19
- *
20
- * ### Usage
21
- *
22
- * ```
23
- * beforeEach(() => {
24
- * TestBed.configureTestingModule({
25
- * imports: [
26
- * WorkbenchTestingModule.forTest(),
27
- * RouterTestingModule.withRoutes([
28
- * {path: 'test-view', component: TestComponent},
29
- * ]),
30
- * ],
31
- * });
32
- * });
33
- * ```
34
- */
35
- export function provideWorkbenchForTest(config) {
36
- return makeEnvironmentProviders([
37
- provideWorkbench(config),
38
- provideNoopAnimations(),
39
- { provide: ActivationInstantProvider, useClass: SequenceInstantProvider },
40
- { provide: MAIN_AREA_INITIAL_PART_ID, useValue: config?.mainAreaInitialPartId ?? 'main' },
41
- { provide: ComponentFixtureAutoDetect, useValue: true },
42
- { provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => inject(Router).initialNavigation() },
43
- { provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => localStorage.clear() },
44
- { provide: ENVIRONMENT_INITIALIZER, multi: true, useValue: () => window.name = '' },
45
- ]);
46
- }
47
- class SequenceInstantProvider {
48
- constructor() {
49
- this._sequence = 0;
50
- }
51
- now() {
52
- return this._sequence++;
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
55
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider }); }
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: SequenceInstantProvider, decorators: [{
58
- type: Injectable
59
- }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvdGVzdGluZy93b3JrYmVuY2gucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLHVCQUF1QixFQUF3QixNQUFNLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBMkQ7SUFDakcsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDeEIscUJBQXFCLEVBQUU7UUFDdkIsRUFBQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFDO1FBQ3ZFLEVBQUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLElBQUksTUFBTSxFQUFDO1FBQ3ZGLEVBQUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUM7UUFDckQsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQUM7UUFDbkcsRUFBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFDO1FBQ3JGLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFDO0tBQ2xGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUNNLHVCQUF1QjtJQUQ3QjtRQUdVLGNBQVMsR0FBRyxDQUFDLENBQUM7S0FLdkI7SUFIUSxHQUFHO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs4R0FORyx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCB7RU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIEVudmlyb25tZW50UHJvdmlkZXJzLCBpbmplY3QsIEluamVjdGFibGUsIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Byb3ZpZGVXb3JrYmVuY2h9IGZyb20gJy4uL3dvcmtiZW5jaC5wcm92aWRlcic7XG5pbXBvcnQge3Byb3ZpZGVOb29wQW5pbWF0aW9uc30gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7QWN0aXZhdGlvbkluc3RhbnRQcm92aWRlcn0gZnJvbSAnLi4vYWN0aXZhdGlvbi1pbnN0YW50LnByb3ZpZGVyJztcbmltcG9ydCB7TUFJTl9BUkVBX0lOSVRJQUxfUEFSVF9JRH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge0NvbXBvbmVudEZpeHR1cmVBdXRvRGV0ZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2V0IG9mIGRlcGVuZGVuY3ktaW5qZWN0aW9uIHByb3ZpZGVycyB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSB0aGUgU0NJT04gV29ya2JlbmNoIGluIHRlc3RzLlxuICpcbiAqIERvZXMgdGhlIGZvbGxvd2luZzpcbiAqIC0gcHJvdmlkZXMgdGhlIHdvcmtiZW5jaCB3aXRoIGdpdmVuIGNvbmZpZ1xuICogLSBjb25maWd1cmVzIHRoZSB3b3JrYmVuY2ggdG8gbmFtZSB0aGUgaW5pdGlhbCBwYXJ0ICdtYWluJ1xuICogLSBpbnN0YWxscyBhIHNlcXVlbmNlIGZvciBhY3RpdmF0aW9uIGluc3RhbnRzXG4gKiAtIGNvbmZpZ3VyZXMgdGhlIHRlc3RiZWQgdG8gYXV0by1kZXRlY3QgY2hhbmdlc1xuICogLSBkaXNhYmxlcyBhbmltYXRpb25zXG4gKiAtIHBlcmZvcm1zIHRoZSBpbml0aWFsIG5hdmlnYXRpb25cbiAqXG4gKiAjIyMgVXNhZ2VcbiAqXG4gKiBgYGBcbiAqIGJlZm9yZUVhY2goKCkgPT4ge1xuICogICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICogICAgICBpbXBvcnRzOiBbXG4gKiAgICAgICAgV29ya2JlbmNoVGVzdGluZ01vZHVsZS5mb3JUZXN0KCksXG4gKiAgICAgICAgUm91dGVyVGVzdGluZ01vZHVsZS53aXRoUm91dGVzKFtcbiAqICAgICAgICAgIHtwYXRoOiAndGVzdC12aWV3JywgY29tcG9uZW50OiBUZXN0Q29tcG9uZW50fSxcbiAqICAgICAgICBdKSxcbiAqICAgICAgXSxcbiAqICAgIH0pO1xuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVXb3JrYmVuY2hGb3JUZXN0KGNvbmZpZz86IFdvcmtiZW5jaENvbmZpZyAmIHttYWluQXJlYUluaXRpYWxQYXJ0SWQ/OiBzdHJpbmd9KTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFtcbiAgICBwcm92aWRlV29ya2JlbmNoKGNvbmZpZyksXG4gICAgcHJvdmlkZU5vb3BBbmltYXRpb25zKCksXG4gICAge3Byb3ZpZGU6IEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIsIHVzZUNsYXNzOiBTZXF1ZW5jZUluc3RhbnRQcm92aWRlcn0sXG4gICAge3Byb3ZpZGU6IE1BSU5fQVJFQV9JTklUSUFMX1BBUlRfSUQsIHVzZVZhbHVlOiBjb25maWc/Lm1haW5BcmVhSW5pdGlhbFBhcnRJZCA/PyAnbWFpbid9LFxuICAgIHtwcm92aWRlOiBDb21wb25lbnRGaXh0dXJlQXV0b0RldGVjdCwgdXNlVmFsdWU6IHRydWV9LFxuICAgIHtwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgbXVsdGk6IHRydWUsIHVzZVZhbHVlOiAoKSA9PiBpbmplY3QoUm91dGVyKS5pbml0aWFsTmF2aWdhdGlvbigpfSxcbiAgICB7cHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIG11bHRpOiB0cnVlLCB1c2VWYWx1ZTogKCkgPT4gbG9jYWxTdG9yYWdlLmNsZWFyKCl9LFxuICAgIHtwcm92aWRlOiBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgbXVsdGk6IHRydWUsIHVzZVZhbHVlOiAoKSA9PiB3aW5kb3cubmFtZSA9ICcnfSxcbiAgXSk7XG59XG5cbkBJbmplY3RhYmxlKC8qIERPIE5PVCBQUk9WSURFIHZpYSAncHJvdmlkZWRJbicgbWV0YWRhdGEgYXMgcmVnaXN0ZXJlZCBvbmx5IGlmIHVzaW5nIGBXb3JrYmVuY2hUZXN0aW5nTW9kdWxlYC4gKi8pXG5jbGFzcyBTZXF1ZW5jZUluc3RhbnRQcm92aWRlciBpbXBsZW1lbnRzIEFjdGl2YXRpb25JbnN0YW50UHJvdmlkZXIge1xuXG4gIHByaXZhdGUgX3NlcXVlbmNlID0gMDtcblxuICBwdWJsaWMgbm93KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcXVlbmNlKys7XG4gIH1cbn1cbiJdfQ==
@@ -1,72 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2023 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- import { inject, Injectable } from '@angular/core';
11
- import { DOCUMENT } from '@angular/common';
12
- import { fromMutation$ } from '@scion/toolkit/observable';
13
- import { distinctUntilChanged, map, startWith } from 'rxjs/operators';
14
- import { toSignal } from '@angular/core/rxjs-interop';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "../storage/workbench-storage";
17
- /**
18
- * Represents the key to associate the activated theme in the storage.
19
- */
20
- const THEME_STORAGE_KEY = 'scion.workbench.theme';
21
- /**
22
- * Enables switching between workbench themes.
23
- */
24
- export class WorkbenchThemeSwitcher {
25
- constructor(_workbenchStorage) {
26
- this._workbenchStorage = _workbenchStorage;
27
- this._documentRoot = inject(DOCUMENT).documentElement;
28
- this.theme = this.detectTheme();
29
- this.activateThemeFromStorage().then();
30
- }
31
- /**
32
- * Switches the theme of the workbench.
33
- *
34
- * @param theme - The name of the theme to switch to.
35
- */
36
- async switchTheme(theme) {
37
- this._documentRoot.setAttribute('sci-theme', theme);
38
- await this._workbenchStorage.store(THEME_STORAGE_KEY, theme);
39
- }
40
- /**
41
- * Detects the current workbench theme from the HTML root element.
42
- */
43
- detectTheme() {
44
- return toSignal(fromMutation$(this._documentRoot, { attributeFilter: ['sci-theme'] })
45
- .pipe(startWith(undefined), map(() => {
46
- const activeTheme = getComputedStyle(this._documentRoot).getPropertyValue('--sci-theme') || null;
47
- if (!activeTheme) {
48
- return null;
49
- }
50
- return {
51
- name: activeTheme,
52
- colorScheme: getComputedStyle(this._documentRoot).colorScheme,
53
- };
54
- }), distinctUntilChanged((a, b) => a?.name === b?.name)), { requireSync: true });
55
- }
56
- /**
57
- * Activates the theme from storage, if any.
58
- */
59
- async activateThemeFromStorage() {
60
- const theme = await this._workbenchStorage.load(THEME_STORAGE_KEY);
61
- if (theme) {
62
- await this.switchTheme(theme);
63
- }
64
- }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, deps: [{ token: i1.WorkbenchStorage }], target: i0.ɵɵFactoryTarget.Injectable }); }
66
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, providedIn: 'root' }); }
67
- }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchThemeSwitcher, decorators: [{
69
- type: Injectable,
70
- args: [{ providedIn: 'root' }]
71
- }], ctorParameters: () => [{ type: i1.WorkbenchStorage }] });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXRoZW1lLXN3aXRjaGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi90aGVtZS93b3JrYmVuY2gtdGhlbWUtc3dpdGNoZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7OztBQUVwRDs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7QUFFbEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBU2pDLFlBQW9CLGlCQUFtQztRQUFuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBUHRDLGtCQUFhLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQVExRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBQyxlQUFlLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBQyxDQUFDO2FBQ2hGLElBQUksQ0FDSCxTQUFTLENBQUMsU0FBaUIsQ0FBQyxFQUM1QixHQUFHLENBQUMsR0FBMEIsRUFBRTtZQUM5QixNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ2pHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTztnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsV0FBVyxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUErQjthQUNsRixDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FDcEQsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyx3QkFBd0I7UUFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbkUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQzs4R0FyRFUsc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FEVixNQUFNOzsyRkFDbEIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtmcm9tTXV0YXRpb24kfSBmcm9tICdAc2Npb24vdG9vbGtpdC9vYnNlcnZhYmxlJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRofSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1dvcmtiZW5jaFN0b3JhZ2V9IGZyb20gJy4uL3N0b3JhZ2Uvd29ya2JlbmNoLXN0b3JhZ2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hUaGVtZX0gZnJvbSAnLi4vd29ya2JlbmNoLm1vZGVsJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBrZXkgdG8gYXNzb2NpYXRlIHRoZSBhY3RpdmF0ZWQgdGhlbWUgaW4gdGhlIHN0b3JhZ2UuXG4gKi9cbmNvbnN0IFRIRU1FX1NUT1JBR0VfS0VZID0gJ3NjaW9uLndvcmtiZW5jaC50aGVtZSc7XG5cbi8qKlxuICogRW5hYmxlcyBzd2l0Y2hpbmcgYmV0d2VlbiB3b3JrYmVuY2ggdGhlbWVzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hUaGVtZVN3aXRjaGVyIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudFJvb3QgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKS5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIHRoZSBjdXJyZW50IHdvcmtiZW5jaCB0aGVtZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0aGVtZTogU2lnbmFsPFdvcmtiZW5jaFRoZW1lIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfd29ya2JlbmNoU3RvcmFnZTogV29ya2JlbmNoU3RvcmFnZSkge1xuICAgIHRoaXMudGhlbWUgPSB0aGlzLmRldGVjdFRoZW1lKCk7XG4gICAgdGhpcy5hY3RpdmF0ZVRoZW1lRnJvbVN0b3JhZ2UoKS50aGVuKCk7XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoZXMgdGhlIHRoZW1lIG9mIHRoZSB3b3JrYmVuY2guXG4gICAqXG4gICAqIEBwYXJhbSB0aGVtZSAtIFRoZSBuYW1lIG9mIHRoZSB0aGVtZSB0byBzd2l0Y2ggdG8uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3dpdGNoVGhlbWUodGhlbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX2RvY3VtZW50Um9vdC5zZXRBdHRyaWJ1dGUoJ3NjaS10aGVtZScsIHRoZW1lKTtcbiAgICBhd2FpdCB0aGlzLl93b3JrYmVuY2hTdG9yYWdlLnN0b3JlKFRIRU1FX1NUT1JBR0VfS0VZLCB0aGVtZSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0cyB0aGUgY3VycmVudCB3b3JrYmVuY2ggdGhlbWUgZnJvbSB0aGUgSFRNTCByb290IGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIGRldGVjdFRoZW1lKCk6IFNpZ25hbDxXb3JrYmVuY2hUaGVtZSB8IG51bGw+IHtcbiAgICByZXR1cm4gdG9TaWduYWwoZnJvbU11dGF0aW9uJCh0aGlzLl9kb2N1bWVudFJvb3QsIHthdHRyaWJ1dGVGaWx0ZXI6IFsnc2NpLXRoZW1lJ119KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQgYXMgdm9pZCksXG4gICAgICAgIG1hcCgoKTogV29ya2JlbmNoVGhlbWUgfCBudWxsID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVUaGVtZSA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5fZG9jdW1lbnRSb290KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXNjaS10aGVtZScpIHx8IG51bGw7XG4gICAgICAgICAgaWYgKCFhY3RpdmVUaGVtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBhY3RpdmVUaGVtZSxcbiAgICAgICAgICAgIGNvbG9yU2NoZW1lOiBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2RvY3VtZW50Um9vdCkuY29sb3JTY2hlbWUgYXMgJ2xpZ2h0JyB8ICdkYXJrJyxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGE/Lm5hbWUgPT09IGI/Lm5hbWUpLFxuICAgICAgKSwge3JlcXVpcmVTeW5jOiB0cnVlfSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSB0aGVtZSBmcm9tIHN0b3JhZ2UsIGlmIGFueS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgYWN0aXZhdGVUaGVtZUZyb21TdG9yYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRoZW1lID0gYXdhaXQgdGhpcy5fd29ya2JlbmNoU3RvcmFnZS5sb2FkKFRIRU1FX1NUT1JBR0VfS0VZKTtcbiAgICBpZiAodGhlbWUpIHtcbiAgICAgIGF3YWl0IHRoaXMuc3dpdGNoVGhlbWUodGhlbWUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,11 +0,0 @@
1
- /*
2
- * Copyright (c) 2018-2023 Swiss Federal Railways
3
- *
4
- * This program and the accompanying materials are made
5
- * available under the terms of the Eclipse Public License 2.0
6
- * which is available at https://www.eclipse.org/legal/epl-2.0/
7
- *
8
- * SPDX-License-Identifier: EPL-2.0
9
- */
10
- export { WorkbenchView } from './workbench-view.model';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3ZpZXcvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBQyxhQUFhLEVBQVMsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuZXhwb3J0IHtXb3JrYmVuY2hWaWV3LCBWaWV3SWR9IGZyb20gJy4vd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuIl19