@alfresco/aca-playwright-shared 5.1.1-10706961491

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 (211) hide show
  1. package/api/api-client-factory.d.ts +63 -0
  2. package/api/categories-api.d.ts +32 -0
  3. package/api/favorites-api.d.ts +41 -0
  4. package/api/file-actions.d.ts +41 -0
  5. package/api/index.d.ts +37 -0
  6. package/api/node-content-tree.d.ts +32 -0
  7. package/api/nodes-api.d.ts +73 -0
  8. package/api/people-api-models.d.ts +42 -0
  9. package/api/queries-api.d.ts +32 -0
  10. package/api/rules-api.d.ts +79 -0
  11. package/api/search-api.d.ts +33 -0
  12. package/api/shared-links-api.d.ts +36 -0
  13. package/api/sites-api.d.ts +44 -0
  14. package/api/tags-api.d.ts +32 -0
  15. package/api/trashcan-api.d.ts +31 -0
  16. package/base-config/global-variables.d.ts +34 -0
  17. package/base-config/global.setup.d.ts +27 -0
  18. package/base-config/index.d.ts +26 -0
  19. package/base-config/playwright.config.d.ts +25 -0
  20. package/base-config/report-portal.config.d.ts +40 -0
  21. package/esm2020/alfresco-aca-playwright-shared.mjs +5 -0
  22. package/esm2020/api/api-client-factory.mjs +111 -0
  23. package/esm2020/api/categories-api.mjs +65 -0
  24. package/esm2020/api/favorites-api.mjs +129 -0
  25. package/esm2020/api/file-actions.mjs +166 -0
  26. package/esm2020/api/index.mjs +38 -0
  27. package/esm2020/api/node-content-tree.mjs +67 -0
  28. package/esm2020/api/nodes-api.mjs +427 -0
  29. package/esm2020/api/people-api-models.mjs +34 -0
  30. package/esm2020/api/queries-api.mjs +69 -0
  31. package/esm2020/api/rules-api.mjs +251 -0
  32. package/esm2020/api/search-api.mjs +74 -0
  33. package/esm2020/api/shared-links-api.mjs +136 -0
  34. package/esm2020/api/sites-api.mjs +155 -0
  35. package/esm2020/api/tags-api.mjs +61 -0
  36. package/esm2020/api/trashcan-api.mjs +54 -0
  37. package/esm2020/base-config/global-variables.mjs +36 -0
  38. package/esm2020/base-config/global.setup.mjs +66 -0
  39. package/esm2020/base-config/index.mjs +27 -0
  40. package/esm2020/base-config/playwright.config.mjs +78 -0
  41. package/esm2020/base-config/report-portal.config.mjs +48 -0
  42. package/esm2020/fixtures/index.mjs +25 -0
  43. package/esm2020/fixtures/page-initialization.mjs +83 -0
  44. package/esm2020/models/custom-config.mjs +25 -0
  45. package/esm2020/models/index.mjs +26 -0
  46. package/esm2020/models/user-model.mjs +55 -0
  47. package/esm2020/page-objects/components/aca-header.component.mjs +77 -0
  48. package/esm2020/page-objects/components/actions-dropdown.component.mjs +99 -0
  49. package/esm2020/page-objects/components/adf-info-drawer.component.mjs +83 -0
  50. package/esm2020/page-objects/components/base.component.mjs +69 -0
  51. package/esm2020/page-objects/components/breadcrumb/breadcrumb.component.mjs +46 -0
  52. package/esm2020/page-objects/components/conditions.component.mjs +75 -0
  53. package/esm2020/page-objects/components/dataTable/data-table.component.mjs +327 -0
  54. package/esm2020/page-objects/components/dataTable/index.mjs +27 -0
  55. package/esm2020/page-objects/components/dataTable/mat-menu.component.mjs +66 -0
  56. package/esm2020/page-objects/components/dataTable/toolbar.component.mjs +39 -0
  57. package/esm2020/page-objects/components/datetime-picker/datetime-picker.component.mjs +52 -0
  58. package/esm2020/page-objects/components/dialogs/adf-confirm-dialog.component.mjs +35 -0
  59. package/esm2020/page-objects/components/dialogs/adf-folder-dialog.component.mjs +56 -0
  60. package/esm2020/page-objects/components/dialogs/adf-library-dialog.component.mjs +63 -0
  61. package/esm2020/page-objects/components/dialogs/content-node-selector-dialog.mjs +67 -0
  62. package/esm2020/page-objects/components/dialogs/create-from-template-dialog-component.mjs +54 -0
  63. package/esm2020/page-objects/components/dialogs/delete-trash-dialog.component.mjs +53 -0
  64. package/esm2020/page-objects/components/dialogs/edit-dialog.component.mjs +38 -0
  65. package/esm2020/page-objects/components/dialogs/index.mjs +39 -0
  66. package/esm2020/page-objects/components/dialogs/link-rules.component.mjs +57 -0
  67. package/esm2020/page-objects/components/dialogs/manage-versions-dialog.component.mjs +35 -0
  68. package/esm2020/page-objects/components/dialogs/password-overlay-dialog.component.mjs +70 -0
  69. package/esm2020/page-objects/components/dialogs/share-dialog.component.mjs +84 -0
  70. package/esm2020/page-objects/components/dialogs/upload-dialog.component.mjs +35 -0
  71. package/esm2020/page-objects/components/dialogs/upload-new-version-dialog.component.mjs +37 -0
  72. package/esm2020/page-objects/components/dialogs/viewer-overlay-dialog.component.mjs +55 -0
  73. package/esm2020/page-objects/components/error.component.mjs +33 -0
  74. package/esm2020/page-objects/components/index.mjs +50 -0
  75. package/esm2020/page-objects/components/manageRules/index.mjs +26 -0
  76. package/esm2020/page-objects/components/manageRules/manage-rules-dialog.component.mjs +63 -0
  77. package/esm2020/page-objects/components/manageRules/manage-rules.component.mjs +69 -0
  78. package/esm2020/page-objects/components/pagination.component.mjs +173 -0
  79. package/esm2020/page-objects/components/search/search-filters/search-filters-categories.component.mjs +32 -0
  80. package/esm2020/page-objects/components/search/search-filters/search-filters-date.component.mjs +114 -0
  81. package/esm2020/page-objects/components/search/search-filters/search-filters-location.component.mjs +39 -0
  82. package/esm2020/page-objects/components/search/search-filters/search-filters-logic.component.mjs +35 -0
  83. package/esm2020/page-objects/components/search/search-filters/search-filters-properties.component.mjs +82 -0
  84. package/esm2020/page-objects/components/search/search-filters/search-filters-tags.component.mjs +39 -0
  85. package/esm2020/page-objects/components/search/search-filters.component.mjs +44 -0
  86. package/esm2020/page-objects/components/search/search-input.component.mjs +47 -0
  87. package/esm2020/page-objects/components/search/search-overlay.components.mjs +82 -0
  88. package/esm2020/page-objects/components/search/search-sorting-picker.components.mjs +71 -0
  89. package/esm2020/page-objects/components/sidenav.component.mjs +86 -0
  90. package/esm2020/page-objects/components/snackBar/snack-bar.component.mjs +53 -0
  91. package/esm2020/page-objects/components/spinner.component.mjs +40 -0
  92. package/esm2020/page-objects/components/viewer.component.mjs +92 -0
  93. package/esm2020/page-objects/index.mjs +26 -0
  94. package/esm2020/page-objects/pages/base.page.mjs +80 -0
  95. package/esm2020/page-objects/pages/favorites-libraries.page.mjs +42 -0
  96. package/esm2020/page-objects/pages/favorites.page.mjs +48 -0
  97. package/esm2020/page-objects/pages/index.mjs +35 -0
  98. package/esm2020/page-objects/pages/login.page.mjs +61 -0
  99. package/esm2020/page-objects/pages/my-libraries.page.mjs +53 -0
  100. package/esm2020/page-objects/pages/nodes.page.mjs +39 -0
  101. package/esm2020/page-objects/pages/personal-files.page.mjs +84 -0
  102. package/esm2020/page-objects/pages/recent-files.page.mjs +44 -0
  103. package/esm2020/page-objects/pages/search.page.mjs +78 -0
  104. package/esm2020/page-objects/pages/shared.page.mjs +44 -0
  105. package/esm2020/page-objects/pages/trash.page.mjs +44 -0
  106. package/esm2020/page-objects/playwright-base.mjs +31 -0
  107. package/esm2020/public-api.mjs +31 -0
  108. package/esm2020/resources/index.mjs +26 -0
  109. package/esm2020/resources/test-data/index.mjs +26 -0
  110. package/esm2020/resources/test-data/test-data-files-folders.mjs +53 -0
  111. package/esm2020/resources/test-data/test-data-permissions.mjs +331 -0
  112. package/esm2020/resources/test-files/index.mjs +78 -0
  113. package/esm2020/utils/api.mjs +43 -0
  114. package/esm2020/utils/config.mjs +70 -0
  115. package/esm2020/utils/error-strings.mjs +39 -0
  116. package/esm2020/utils/exclude-tests.mjs +35 -0
  117. package/esm2020/utils/index.mjs +34 -0
  118. package/esm2020/utils/library-errors.mjs +29 -0
  119. package/esm2020/utils/logger.mjs +69 -0
  120. package/esm2020/utils/paths.mjs +32 -0
  121. package/esm2020/utils/state-helper.mjs +29 -0
  122. package/esm2020/utils/timeouts.mjs +39 -0
  123. package/esm2020/utils/utils.mjs +144 -0
  124. package/fesm2015/alfresco-aca-playwright-shared.mjs +6251 -0
  125. package/fesm2015/alfresco-aca-playwright-shared.mjs.map +1 -0
  126. package/fesm2020/alfresco-aca-playwright-shared.mjs +6895 -0
  127. package/fesm2020/alfresco-aca-playwright-shared.mjs.map +1 -0
  128. package/fixtures/index.d.ts +24 -0
  129. package/fixtures/page-initialization.d.ts +47 -0
  130. package/index.d.ts +5 -0
  131. package/models/custom-config.d.ts +27 -0
  132. package/models/index.d.ts +25 -0
  133. package/models/user-model.d.ts +37 -0
  134. package/package.json +35 -0
  135. package/page-objects/components/aca-header.component.d.ts +53 -0
  136. package/page-objects/components/actions-dropdown.component.d.ts +71 -0
  137. package/page-objects/components/adf-info-drawer.component.d.ts +64 -0
  138. package/page-objects/components/base.component.d.ts +46 -0
  139. package/page-objects/components/breadcrumb/breadcrumb.component.d.ts +34 -0
  140. package/page-objects/components/conditions.component.d.ts +46 -0
  141. package/page-objects/components/dataTable/data-table.component.d.ts +185 -0
  142. package/page-objects/components/dataTable/index.d.ts +26 -0
  143. package/page-objects/components/dataTable/mat-menu.component.d.ts +41 -0
  144. package/page-objects/components/dataTable/toolbar.component.d.ts +33 -0
  145. package/page-objects/components/datetime-picker/datetime-picker.component.d.ts +36 -0
  146. package/page-objects/components/dialogs/adf-confirm-dialog.component.d.ts +33 -0
  147. package/page-objects/components/dialogs/adf-folder-dialog.component.d.ts +45 -0
  148. package/page-objects/components/dialogs/adf-library-dialog.component.d.ts +45 -0
  149. package/page-objects/components/dialogs/content-node-selector-dialog.d.ts +42 -0
  150. package/page-objects/components/dialogs/create-from-template-dialog-component.d.ts +39 -0
  151. package/page-objects/components/dialogs/delete-trash-dialog.component.d.ts +39 -0
  152. package/page-objects/components/dialogs/edit-dialog.component.d.ts +36 -0
  153. package/page-objects/components/dialogs/index.d.ts +38 -0
  154. package/page-objects/components/dialogs/link-rules.component.d.ts +40 -0
  155. package/page-objects/components/dialogs/manage-versions-dialog.component.d.ts +30 -0
  156. package/page-objects/components/dialogs/password-overlay-dialog.component.d.ts +42 -0
  157. package/page-objects/components/dialogs/share-dialog.component.d.ts +54 -0
  158. package/page-objects/components/dialogs/upload-dialog.component.d.ts +33 -0
  159. package/page-objects/components/dialogs/upload-new-version-dialog.component.d.ts +35 -0
  160. package/page-objects/components/dialogs/viewer-overlay-dialog.component.d.ts +43 -0
  161. package/page-objects/components/error.component.d.ts +31 -0
  162. package/page-objects/components/index.d.ts +49 -0
  163. package/page-objects/components/manageRules/index.d.ts +25 -0
  164. package/page-objects/components/manageRules/manage-rules-dialog.component.d.ts +51 -0
  165. package/page-objects/components/manageRules/manage-rules.component.d.ts +46 -0
  166. package/page-objects/components/pagination.component.d.ts +70 -0
  167. package/page-objects/components/search/search-filters/search-filters-categories.component.d.ts +30 -0
  168. package/page-objects/components/search/search-filters/search-filters-date.component.d.ts +73 -0
  169. package/page-objects/components/search/search-filters/search-filters-location.component.d.ts +32 -0
  170. package/page-objects/components/search/search-filters/search-filters-logic.component.d.ts +33 -0
  171. package/page-objects/components/search/search-filters/search-filters-properties.component.d.ts +42 -0
  172. package/page-objects/components/search/search-filters/search-filters-tags.component.d.ts +32 -0
  173. package/page-objects/components/search/search-filters.component.d.ts +42 -0
  174. package/page-objects/components/search/search-input.component.d.ts +40 -0
  175. package/page-objects/components/search/search-overlay.components.d.ts +45 -0
  176. package/page-objects/components/search/search-sorting-picker.components.d.ts +41 -0
  177. package/page-objects/components/sidenav.component.d.ts +45 -0
  178. package/page-objects/components/snackBar/snack-bar.component.d.ts +37 -0
  179. package/page-objects/components/spinner.component.d.ts +30 -0
  180. package/page-objects/components/viewer.component.d.ts +49 -0
  181. package/page-objects/index.d.ts +25 -0
  182. package/page-objects/pages/base.page.d.ts +52 -0
  183. package/page-objects/pages/favorites-libraries.page.d.ts +40 -0
  184. package/page-objects/pages/favorites.page.d.ts +44 -0
  185. package/page-objects/pages/index.d.ts +34 -0
  186. package/page-objects/pages/login.page.d.ts +48 -0
  187. package/page-objects/pages/my-libraries.page.d.ts +45 -0
  188. package/page-objects/pages/nodes.page.d.ts +37 -0
  189. package/page-objects/pages/personal-files.page.d.ts +57 -0
  190. package/page-objects/pages/recent-files.page.d.ts +42 -0
  191. package/page-objects/pages/search.page.d.ts +54 -0
  192. package/page-objects/pages/shared.page.d.ts +42 -0
  193. package/page-objects/pages/trash.page.d.ts +42 -0
  194. package/page-objects/playwright-base.d.ts +30 -0
  195. package/public-api.d.ts +30 -0
  196. package/resources/index.d.ts +25 -0
  197. package/resources/test-data/index.d.ts +25 -0
  198. package/resources/test-data/test-data-files-folders.d.ts +41 -0
  199. package/resources/test-data/test-data-permissions.d.ts +216 -0
  200. package/resources/test-files/index.d.ts +76 -0
  201. package/utils/api.d.ts +26 -0
  202. package/utils/config.d.ts +69 -0
  203. package/utils/error-strings.d.ts +38 -0
  204. package/utils/exclude-tests.d.ts +24 -0
  205. package/utils/index.d.ts +33 -0
  206. package/utils/library-errors.d.ts +28 -0
  207. package/utils/logger.d.ts +54 -0
  208. package/utils/paths.d.ts +30 -0
  209. package/utils/state-helper.d.ts +27 -0
  210. package/utils/timeouts.d.ts +38 -0
  211. package/utils/utils.d.ts +62 -0
@@ -0,0 +1,69 @@
1
+ /*!
2
+ * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { PlaywrightBase } from '../playwright-base';
25
+ import { timeouts } from '../../utils';
26
+ export class BaseComponent extends PlaywrightBase {
27
+ constructor(page, rootElement) {
28
+ super(page);
29
+ this.overlayElement = this.page.locator('.cdk-overlay-backdrop-showing');
30
+ this.progressBar = this.page.locator('mat-progress-bar');
31
+ this.rootElement = rootElement;
32
+ }
33
+ /**
34
+ * Method which should be used across the repository, while creating
35
+ * reference to elements, which are in root element of component.
36
+ *
37
+ * @param cssLocator css selector as String. Need to be in the tree under the root element
38
+ * @param options if you want to localize it by text, then provide an optional hasText
39
+ * @returns Locator object
40
+ */
41
+ getChild(cssLocator, options) {
42
+ return this.page.locator(`${this.rootElement} ${cssLocator}`, options);
43
+ }
44
+ async closeAdditionalOverlayElementIfVisible() {
45
+ if (await this.overlayElement.isVisible()) {
46
+ await this.page.keyboard.press('Escape');
47
+ await this.overlayElement.waitFor({ state: 'detached', timeout: timeouts.medium });
48
+ }
49
+ }
50
+ async spinnerWaitForReload() {
51
+ try {
52
+ await this.page.locator('mat-progress-spinner').waitFor({ state: 'attached', timeout: timeouts.medium });
53
+ await this.page.locator('mat-progress-spinner').waitFor({ state: 'detached', timeout: timeouts.normal });
54
+ }
55
+ catch (e) {
56
+ this.logger.info('Spinner was not present');
57
+ }
58
+ }
59
+ async progressBarWaitForReload() {
60
+ try {
61
+ await this.progressBar.waitFor({ state: 'visible', timeout: timeouts.medium });
62
+ await this.progressBar.waitFor({ state: 'hidden', timeout: timeouts.normal });
63
+ }
64
+ catch (e) {
65
+ this.logger.info('Progress bar was not present');
66
+ }
67
+ }
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtcGxheXdyaWdodC1zaGFyZWQvc3JjL3BhZ2Utb2JqZWN0cy9jb21wb25lbnRzL2Jhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBR0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkMsTUFBTSxPQUFnQixhQUFjLFNBQVEsY0FBYztJQUt4RCxZQUFzQixJQUFVLEVBQUUsV0FBbUI7UUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSk4sbUJBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ3BFLGdCQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUkxRCxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFFBQVEsQ0FBQyxVQUFrQixFQUFFLE9BQXNEO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLFVBQVUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxLQUFLLENBQUMsc0NBQXNDO1FBQzFDLElBQUksTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNwRjtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CO1FBQ3hCLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDekcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQzFHO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyx3QkFBd0I7UUFDNUIsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMvRSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDL0U7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgTG9jYXRvciwgUGFnZSB9IGZyb20gJ0BwbGF5d3JpZ2h0L3Rlc3QnO1xuaW1wb3J0IHsgUGxheXdyaWdodEJhc2UgfSBmcm9tICcuLi9wbGF5d3JpZ2h0LWJhc2UnO1xuaW1wb3J0IHsgdGltZW91dHMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50IGV4dGVuZHMgUGxheXdyaWdodEJhc2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJvb3RFbGVtZW50OiBzdHJpbmc7XG4gIHByaXZhdGUgb3ZlcmxheUVsZW1lbnQgPSB0aGlzLnBhZ2UubG9jYXRvcignLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmcnKTtcbiAgcHJpdmF0ZSBwcm9ncmVzc0JhciA9IHRoaXMucGFnZS5sb2NhdG9yKCdtYXQtcHJvZ3Jlc3MtYmFyJyk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHBhZ2U6IFBhZ2UsIHJvb3RFbGVtZW50OiBzdHJpbmcpIHtcbiAgICBzdXBlcihwYWdlKTtcbiAgICB0aGlzLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHdoaWNoIHNob3VsZCBiZSB1c2VkIGFjcm9zcyB0aGUgcmVwb3NpdG9yeSwgd2hpbGUgY3JlYXRpbmdcbiAgICogcmVmZXJlbmNlIHRvIGVsZW1lbnRzLCB3aGljaCBhcmUgaW4gcm9vdCBlbGVtZW50IG9mIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGNzc0xvY2F0b3IgY3NzIHNlbGVjdG9yIGFzIFN0cmluZy4gTmVlZCB0byBiZSBpbiB0aGUgdHJlZSB1bmRlciB0aGUgcm9vdCBlbGVtZW50XG4gICAqIEBwYXJhbSBvcHRpb25zIGlmIHlvdSB3YW50IHRvIGxvY2FsaXplIGl0IGJ5IHRleHQsIHRoZW4gcHJvdmlkZSBhbiBvcHRpb25hbCBoYXNUZXh0XG4gICAqIEByZXR1cm5zIExvY2F0b3Igb2JqZWN0XG4gICAqL1xuICBnZXRDaGlsZChjc3NMb2NhdG9yOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGhhc1RleHQ/OiBzdHJpbmcgfCBSZWdFeHA7IGhhcz86IExvY2F0b3IgfSk6IExvY2F0b3Ige1xuICAgIHJldHVybiB0aGlzLnBhZ2UubG9jYXRvcihgJHt0aGlzLnJvb3RFbGVtZW50fSAke2Nzc0xvY2F0b3J9YCwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjbG9zZUFkZGl0aW9uYWxPdmVybGF5RWxlbWVudElmVmlzaWJsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoYXdhaXQgdGhpcy5vdmVybGF5RWxlbWVudC5pc1Zpc2libGUoKSkge1xuICAgICAgYXdhaXQgdGhpcy5wYWdlLmtleWJvYXJkLnByZXNzKCdFc2NhcGUnKTtcbiAgICAgIGF3YWl0IHRoaXMub3ZlcmxheUVsZW1lbnQud2FpdEZvcih7IHN0YXRlOiAnZGV0YWNoZWQnLCB0aW1lb3V0OiB0aW1lb3V0cy5tZWRpdW0gfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3Bpbm5lcldhaXRGb3JSZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucGFnZS5sb2NhdG9yKCdtYXQtcHJvZ3Jlc3Mtc3Bpbm5lcicpLndhaXRGb3IoeyBzdGF0ZTogJ2F0dGFjaGVkJywgdGltZW91dDogdGltZW91dHMubWVkaXVtIH0pO1xuICAgICAgYXdhaXQgdGhpcy5wYWdlLmxvY2F0b3IoJ21hdC1wcm9ncmVzcy1zcGlubmVyJykud2FpdEZvcih7IHN0YXRlOiAnZGV0YWNoZWQnLCB0aW1lb3V0OiB0aW1lb3V0cy5ub3JtYWwgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuaW5mbygnU3Bpbm5lciB3YXMgbm90IHByZXNlbnQnKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwcm9ncmVzc0JhcldhaXRGb3JSZWxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucHJvZ3Jlc3NCYXIud2FpdEZvcih7IHN0YXRlOiAndmlzaWJsZScsIHRpbWVvdXQ6IHRpbWVvdXRzLm1lZGl1bSB9KTtcbiAgICAgIGF3YWl0IHRoaXMucHJvZ3Jlc3NCYXIud2FpdEZvcih7IHN0YXRlOiAnaGlkZGVuJywgdGltZW91dDogdGltZW91dHMubm9ybWFsIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oJ1Byb2dyZXNzIGJhciB3YXMgbm90IHByZXNlbnQnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,46 @@
1
+ /*!
2
+ * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { BaseComponent } from '.././base.component';
25
+ export class Breadcrumb extends BaseComponent {
26
+ constructor(page) {
27
+ super(page, Breadcrumb.rootElement);
28
+ this.items = this.getChild('.adf-breadcrumb-item');
29
+ this.currentItem = this.getChild('.adf-breadcrumb-item-current');
30
+ this.getItemByTitle = (name) => this.getChild(`.adf-breadcrumb-item[title=${name}]`);
31
+ }
32
+ async getAllItems() {
33
+ const itemElements = await this.page.$$('adf-breadcrumb .adf-breadcrumb-item');
34
+ const itemTexts = await Promise.all(itemElements.map(async (elem) => {
35
+ const text = await elem.innerText();
36
+ return text.split('\nchevron_right')[0];
37
+ }));
38
+ return itemTexts;
39
+ }
40
+ async clickItem(name) {
41
+ const elem = this.getChild(`.adf-breadcrumb-item[title=${name}]`);
42
+ await elem.click();
43
+ }
44
+ }
45
+ Breadcrumb.rootElement = 'adf-breadcrumb';
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtcGxheXdyaWdodC1zaGFyZWQvc3JjL3BhZ2Utb2JqZWN0cy9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsTUFBTSxPQUFPLFVBQVcsU0FBUSxhQUFhO0lBTTNDLFlBQVksSUFBVTtRQUNwQixLQUFLLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUwvQixVQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlDLGdCQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ25FLG1CQUFjLEdBQUcsQ0FBQyxJQUFZLEVBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsOEJBQThCLElBQUksR0FBRyxDQUFDLENBQUM7SUFJakcsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVk7UUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyw4QkFBOEIsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNsRSxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDOztBQXZCYyxzQkFBVyxHQUFHLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uL2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IExvY2F0b3IsIFBhZ2UgfSBmcm9tICdAcGxheXdyaWdodC90ZXN0JztcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgc3RhdGljIHJvb3RFbGVtZW50ID0gJ2FkZi1icmVhZGNydW1iJztcbiAgcHVibGljIGl0ZW1zID0gdGhpcy5nZXRDaGlsZCgnLmFkZi1icmVhZGNydW1iLWl0ZW0nKTtcbiAgcHVibGljIGN1cnJlbnRJdGVtID0gdGhpcy5nZXRDaGlsZCgnLmFkZi1icmVhZGNydW1iLWl0ZW0tY3VycmVudCcpO1xuICBnZXRJdGVtQnlUaXRsZSA9IChuYW1lOiBzdHJpbmcpOiBMb2NhdG9yID0+IHRoaXMuZ2V0Q2hpbGQoYC5hZGYtYnJlYWRjcnVtYi1pdGVtW3RpdGxlPSR7bmFtZX1dYCk7XG5cbiAgY29uc3RydWN0b3IocGFnZTogUGFnZSkge1xuICAgIHN1cGVyKHBhZ2UsIEJyZWFkY3J1bWIucm9vdEVsZW1lbnQpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWxsSXRlbXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IGl0ZW1FbGVtZW50cyA9IGF3YWl0IHRoaXMucGFnZS4kJCgnYWRmLWJyZWFkY3J1bWIgLmFkZi1icmVhZGNydW1iLWl0ZW0nKTtcbiAgICBjb25zdCBpdGVtVGV4dHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGl0ZW1FbGVtZW50cy5tYXAoYXN5bmMgKGVsZW0pID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGVsZW0uaW5uZXJUZXh0KCk7XG4gICAgICAgIHJldHVybiB0ZXh0LnNwbGl0KCdcXG5jaGV2cm9uX3JpZ2h0JylbMF07XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGl0ZW1UZXh0cztcbiAgfVxuXG4gIGFzeW5jIGNsaWNrSXRlbShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlbGVtID0gdGhpcy5nZXRDaGlsZChgLmFkZi1icmVhZGNydW1iLWl0ZW1bdGl0bGU9JHtuYW1lfV1gKTtcbiAgICBhd2FpdCBlbGVtLmNsaWNrKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,75 @@
1
+ /*!
2
+ * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { ManageRulesDialogComponent } from './manageRules/manage-rules-dialog.component';
25
+ export var Field;
26
+ (function (Field) {
27
+ Field["Name"] = "Name";
28
+ Field["Size"] = "Size";
29
+ Field["Mimetype"] = "Mimetype";
30
+ Field["Encoding"] = "Encoding";
31
+ Field["HasCategory"] = "Has category";
32
+ Field["HasTag"] = "Has tag";
33
+ Field["HasAspect"] = "Has aspect";
34
+ })(Field || (Field = {}));
35
+ export var Comparator;
36
+ (function (Comparator) {
37
+ Comparator["Equals"] = "(=) Equals";
38
+ Comparator["Contains"] = "Contains";
39
+ Comparator["StartsWith"] = "Starts with";
40
+ Comparator["EndsWith"] = "Ends with";
41
+ })(Comparator || (Comparator = {}));
42
+ export class ConditionComponent extends ManageRulesDialogComponent {
43
+ constructor() {
44
+ super(...arguments);
45
+ this.getOptionLocator = (optionName) => this.page.locator(`.cdk-overlay-pane .mat-mdc-option span`, { hasText: optionName });
46
+ }
47
+ async selectField(fields, index) {
48
+ await this.fieldDropDown.nth(index).click();
49
+ const option = this.getOptionLocator(fields);
50
+ await option.click();
51
+ }
52
+ async selectComparator(comparators, index) {
53
+ await this.comparatorDropDown.nth(index).click();
54
+ const option = this.getOptionLocator(comparators);
55
+ await option.click();
56
+ }
57
+ async addCondition(fields, value, index, comparators) {
58
+ await this.addConditionButton.first().click();
59
+ await this.selectField(fields, index);
60
+ if (comparators) {
61
+ await this.selectComparator(comparators, index);
62
+ }
63
+ await this.valueField.nth(index).fill(value);
64
+ }
65
+ async addConditionGroup(fields, value, index, comparators) {
66
+ await this.addConditionGroupButton.last().click();
67
+ await this.addConditionButton.nth(index).click();
68
+ await this.selectField(fields, index);
69
+ if (comparators) {
70
+ await this.selectComparator(comparators, index);
71
+ }
72
+ await this.valueField.nth(index).fill(value);
73
+ }
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtcGxheXdyaWdodC1zaGFyZWQvc3JjL3BhZ2Utb2JqZWN0cy9jb21wb25lbnRzL2NvbmRpdGlvbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBR0gsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFekYsTUFBTSxDQUFOLElBQVksS0FRWDtBQVJELFdBQVksS0FBSztJQUNmLHNCQUFhLENBQUE7SUFDYixzQkFBYSxDQUFBO0lBQ2IsOEJBQXFCLENBQUE7SUFDckIsOEJBQXFCLENBQUE7SUFDckIscUNBQTRCLENBQUE7SUFDNUIsMkJBQWtCLENBQUE7SUFDbEIsaUNBQXdCLENBQUE7QUFDMUIsQ0FBQyxFQVJXLEtBQUssS0FBTCxLQUFLLFFBUWhCO0FBRUQsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQixtQ0FBcUIsQ0FBQTtJQUNyQixtQ0FBcUIsQ0FBQTtJQUNyQix3Q0FBMEIsQ0FBQTtJQUMxQixvQ0FBc0IsQ0FBQTtBQUN4QixDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckI7QUFFRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsMEJBQTBCO0lBQWxFOztRQUNVLHFCQUFnQixHQUFHLENBQUMsVUFBa0IsRUFBVyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsd0NBQXdDLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQWdDbkosQ0FBQztJQTlCUyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQXNCLEVBQUUsS0FBYTtRQUM3RCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLFdBQWdDLEVBQUUsS0FBYTtRQUM1RSxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQXNCLEVBQUUsS0FBYSxFQUFFLEtBQWEsRUFBRSxXQUFpQztRQUN4RyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFzQixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsV0FBaUM7UUFDN0csTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEQsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDakQ7UUFDRCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgTG9jYXRvciB9IGZyb20gJ0BwbGF5d3JpZ2h0L3Rlc3QnO1xuaW1wb3J0IHsgTWFuYWdlUnVsZXNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL21hbmFnZVJ1bGVzL21hbmFnZS1ydWxlcy1kaWFsb2cuY29tcG9uZW50JztcblxuZXhwb3J0IGVudW0gRmllbGQge1xuICBOYW1lID0gJ05hbWUnLFxuICBTaXplID0gJ1NpemUnLFxuICBNaW1ldHlwZSA9ICdNaW1ldHlwZScsXG4gIEVuY29kaW5nID0gJ0VuY29kaW5nJyxcbiAgSGFzQ2F0ZWdvcnkgPSAnSGFzIGNhdGVnb3J5JyxcbiAgSGFzVGFnID0gJ0hhcyB0YWcnLFxuICBIYXNBc3BlY3QgPSAnSGFzIGFzcGVjdCdcbn1cblxuZXhwb3J0IGVudW0gQ29tcGFyYXRvciB7XG4gIEVxdWFscyA9ICcoPSkgRXF1YWxzJyxcbiAgQ29udGFpbnMgPSAnQ29udGFpbnMnLFxuICBTdGFydHNXaXRoID0gJ1N0YXJ0cyB3aXRoJyxcbiAgRW5kc1dpdGggPSAnRW5kcyB3aXRoJ1xufVxuXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uQ29tcG9uZW50IGV4dGVuZHMgTWFuYWdlUnVsZXNEaWFsb2dDb21wb25lbnQge1xuICBwcml2YXRlIGdldE9wdGlvbkxvY2F0b3IgPSAob3B0aW9uTmFtZTogc3RyaW5nKTogTG9jYXRvciA9PiB0aGlzLnBhZ2UubG9jYXRvcihgLmNkay1vdmVybGF5LXBhbmUgLm1hdC1tZGMtb3B0aW9uIHNwYW5gLCB7IGhhc1RleHQ6IG9wdGlvbk5hbWUgfSk7XG5cbiAgcHJpdmF0ZSBhc3luYyBzZWxlY3RGaWVsZChmaWVsZHM6IFBhcnRpYWw8RmllbGQ+LCBpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5maWVsZERyb3BEb3duLm50aChpbmRleCkuY2xpY2soKTtcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLmdldE9wdGlvbkxvY2F0b3IoZmllbGRzKTtcbiAgICBhd2FpdCBvcHRpb24uY2xpY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VsZWN0Q29tcGFyYXRvcihjb21wYXJhdG9yczogUGFydGlhbDxDb21wYXJhdG9yPiwgaW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY29tcGFyYXRvckRyb3BEb3duLm50aChpbmRleCkuY2xpY2soKTtcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLmdldE9wdGlvbkxvY2F0b3IoY29tcGFyYXRvcnMpO1xuICAgIGF3YWl0IG9wdGlvbi5jbGljaygpO1xuICB9XG5cbiAgYXN5bmMgYWRkQ29uZGl0aW9uKGZpZWxkczogUGFydGlhbDxGaWVsZD4sIHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGNvbXBhcmF0b3JzPzogUGFydGlhbDxDb21wYXJhdG9yPik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuYWRkQ29uZGl0aW9uQnV0dG9uLmZpcnN0KCkuY2xpY2soKTtcbiAgICBhd2FpdCB0aGlzLnNlbGVjdEZpZWxkKGZpZWxkcywgaW5kZXgpO1xuICAgIGlmIChjb21wYXJhdG9ycykge1xuICAgICAgYXdhaXQgdGhpcy5zZWxlY3RDb21wYXJhdG9yKGNvbXBhcmF0b3JzLCBpbmRleCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudmFsdWVGaWVsZC5udGgoaW5kZXgpLmZpbGwodmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgYWRkQ29uZGl0aW9uR3JvdXAoZmllbGRzOiBQYXJ0aWFsPEZpZWxkPiwgdmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlciwgY29tcGFyYXRvcnM/OiBQYXJ0aWFsPENvbXBhcmF0b3I+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5hZGRDb25kaXRpb25Hcm91cEJ1dHRvbi5sYXN0KCkuY2xpY2soKTtcbiAgICBhd2FpdCB0aGlzLmFkZENvbmRpdGlvbkJ1dHRvbi5udGgoaW5kZXgpLmNsaWNrKCk7XG4gICAgYXdhaXQgdGhpcy5zZWxlY3RGaWVsZChmaWVsZHMsIGluZGV4KTtcbiAgICBpZiAoY29tcGFyYXRvcnMpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2VsZWN0Q29tcGFyYXRvcihjb21wYXJhdG9ycywgaW5kZXgpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnZhbHVlRmllbGQubnRoKGluZGV4KS5maWxsKHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,327 @@
1
+ /*!
2
+ * Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
3
+ *
4
+ * Alfresco Example Content Application
5
+ *
6
+ * This file is part of the Alfresco Example Content Application.
7
+ * If the software was purchased under a paid Alfresco license, the terms of
8
+ * the paid license agreement will prevail. Otherwise, the software is
9
+ * provided under the following open source license terms:
10
+ *
11
+ * The Alfresco Example Content Application is free software: you can redistribute it and/or modify
12
+ * it under the terms of the GNU Lesser General Public License as published by
13
+ * the Free Software Foundation, either version 3 of the License, or
14
+ * (at your option) any later version.
15
+ *
16
+ * The Alfresco Example Content Application is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU Lesser General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Lesser General Public License
22
+ * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
+ */
24
+ import { BaseComponent } from '../base.component';
25
+ import { MatMenuComponent } from './mat-menu.component';
26
+ import { PaginationActionsType, PaginationComponent } from '../pagination.component';
27
+ import { timeouts } from '../../../utils';
28
+ export class DataTableComponent extends BaseComponent {
29
+ constructor(page, rootElement = DataTableComponent.rootElement) {
30
+ super(page, rootElement);
31
+ this.contextMenuActions = new MatMenuComponent(this.page);
32
+ this.pagination = new PaginationComponent(this.page);
33
+ this.body = this.getChild('.adf-datatable-body');
34
+ this.getEmptyFolderLocator = this.getChild('.adf-empty-folder');
35
+ this.getEmptyContentTitleLocator = this.getChild('adf-empty-content .adf-empty-content__title');
36
+ this.getEmptyContentSubTitleLocator = this.getChild('adf-empty-content .adf-empty-content__subtitle');
37
+ this.getSelectedRow = this.getChild('.adf-datatable-row.adf-is-selected');
38
+ this.sortedColumnHeader = this.getChild(`.adf-datatable__header--sorted-asc .adf-datatable-cell-header-content .adf-datatable-cell-value,
39
+ .adf-datatable__header--sorted-desc .adf-datatable-cell-header-content .adf-datatable-cell-value`);
40
+ this.columnHeaders = this.getChild('.adf-datatable-row .adf-datatable-cell-header .adf-datatable-cell-value');
41
+ this.emptyList = this.getChild('div.adf-no-content-container');
42
+ this.emptyListTitle = this.getChild('.adf-empty-content__title');
43
+ this.emptyListSubtitle = this.getChild('.adf-empty-content__subtitle');
44
+ this.emptySearchText = this.getChild('.empty-search__text');
45
+ this.emptyListTest = this.getChild('adf-custom-empty-content-template');
46
+ this.paginationButton = this.page.locator('.adf-pagination__block button').nth(0);
47
+ this.paginationOptions = this.page.locator('#cdk-overlay-0 button');
48
+ this.sitesVisibility = this.page.locator('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="Visibility"]');
49
+ this.sitesName = this.page.locator('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="Name"]');
50
+ this.sitesRole = this.page.locator('.adf-datatable-body [data-automation-id*="datatable-row"] [aria-label="My Role"]');
51
+ this.lockOwner = this.page.locator('.aca-locked-by--name');
52
+ this.uncheckedCheckbox = this.page.locator('.mat-mdc-checkbox');
53
+ this.checkedCheckbox = this.page.locator('.mat-mdc-checkbox-checked');
54
+ /** Locator for row (or rows) */
55
+ this.getRowLocator = this.page.getByRole('rowgroup').nth(1).locator('adf-datatable-row');
56
+ /** Locator to get "No results found" message */
57
+ this.getNoResultsFoundMessage = this.getChild('adf-custom-empty-content-template', { hasText: 'No results found' });
58
+ /**
59
+ * Method used in cases where we want to check that some record is visible in the datatable. It will consider whole row
60
+ *
61
+ * @returns reference to cell element which contains text.
62
+ */
63
+ this.getRowByName = (name) => this.getChild(`adf-datatable-row`, { hasText: name.toString() });
64
+ /**
65
+ * Method used in cases where we want to check that some record is visible in the datatable.
66
+ * But we want to check it by column header title and value of this column.
67
+ *
68
+ * @returns reference to cell element which contains text.
69
+ */
70
+ this.getRowByColumnTitleAndItsCellValue = (columnTitle, cellValue) => this.page.locator(`//div[contains(@title, '${columnTitle}')]//span[contains(text(), '${cellValue}')]/ancestor::adf-datatable-row`);
71
+ /**
72
+ * Method used in cases where we want to retrieve a row from the datatable based on its numerical order within the array.
73
+ *
74
+ * @returns reference to cell element which contains text.
75
+ */
76
+ this.getNthRow = (orderNum) => this.getRowLocator.nth(orderNum);
77
+ /**
78
+ * Method used in cases where user have possibility to navigate "inside" the element (it's clickable and has link attribute).
79
+ * Perform action .click() to navigate inside it
80
+ *
81
+ * @returns reference to cell element which contains link.
82
+ */
83
+ this.getCellLinkByName = (name) => this.getChild('.adf-cell-value span[role="link"]', { hasText: name });
84
+ /**
85
+ * Method used in cases where we want to localize the element by [aria-label]
86
+ *
87
+ * @returns reference to cell element.
88
+ */
89
+ this.getByAriaLabelTitle = (title) => this.getChild(`[aria-label="${title}"]`);
90
+ /**
91
+ * Method used in cases where we want to get the button (hamburger menu) for row element
92
+ *
93
+ * @returns reference to menu placed in row localized by the name
94
+ */
95
+ this.getActionsButtonByName = (name) => this.getRowByName(name).locator('mat-icon', { hasText: new RegExp(`^\\s*more_vert\\s*$`, 'g') });
96
+ /**
97
+ * Method used in cases where we want to get the edit button and there is no hamburger menu
98
+ *
99
+ * @returns reference to edit button placed in row localized by the name
100
+ */
101
+ this.getEditButtonByName = (name) => this.getRowByName(name).locator('button#editButton');
102
+ /**
103
+ * Method used in cases where we want to get the button and there is no hamburger menu
104
+ *
105
+ * @returns reference to button placed in row localized by the name
106
+ */
107
+ this.getButtonByNameForSpecificRow = (elementTitleInRow, buttonTitle) => this.getRowByName(elementTitleInRow).locator('button', { hasText: buttonTitle });
108
+ /**
109
+ * Method used in cases where you want to get some specific cell (by column name) for row which contains some name/title/etc.
110
+ *
111
+ * @returns reference to cell element
112
+ */
113
+ this.getCellByColumnNameAndRowItem = (item, columnName) => this.getRowByName(item).locator(`[title="${columnName}"]`);
114
+ /**
115
+ * Method used in cases where we want to get the checkbox for row element
116
+ *
117
+ * @returns reference to checkbox placed in row localized by the name
118
+ */
119
+ this.getCheckboxForElement = (item) => this.getRowByName(item).locator('.mat-mdc-checkbox');
120
+ this.getColumnHeaderByTitleLocator = (headerTitle) => this.getChild('[role="columnheader"]', { hasText: headerTitle });
121
+ this.getSearchResultLinkByName = (name) => this.getChild('.aca-search-results-row span[role="link"]', { hasText: name });
122
+ this.getColumnValuesByName = (name) => this.getChild(`div[title="${name}"] span`);
123
+ this.getColumnHeaderByName = (headerTitle) => this.getChild('.adf-datatable-row .adf-datatable-cell-header .adf-datatable-cell-value', { hasText: headerTitle });
124
+ }
125
+ async sortBy(label, order) {
126
+ const sortColumn = await this.getSortedColumnHeaderText();
127
+ let sortOrder = await this.getSortingOrder();
128
+ if (sortColumn !== label) {
129
+ await this.getColumnHeaderByName(label).click({ force: true });
130
+ sortOrder = await this.getSortingOrder();
131
+ }
132
+ if (sortOrder !== order) {
133
+ await this.getChild('span[class*="adf-datatable__header--sorted"]').click();
134
+ }
135
+ }
136
+ /**
137
+ * This method is used when we want to perform right mouse click on the dataTable row and perform some action
138
+ *
139
+ * @param name of the data table element with which we want to click
140
+ * @param action provide which action you want to perform
141
+ */
142
+ async performActionFromExpandableMenu(name, action) {
143
+ await this.goThroughPagesLookingForRowWithName(name);
144
+ const actionButtonLocator = await this.getActionLocatorFromExpandableMenu(name, action);
145
+ await actionButtonLocator.click();
146
+ await this.spinnerWaitForReload();
147
+ }
148
+ /**
149
+ * Click action from the expandable kebab menu for the element in datatable
150
+ *
151
+ * @param name title of the record you would like to proceed
152
+ * @param action provide button title for the action
153
+ * @param subAction if the action is in sub menu, then provide it here
154
+ */
155
+ async performActionForElement(name, action, subAction) {
156
+ await this.getActionsButtonByName(name).click();
157
+ await this.contextMenuActions.getButtonByText(action).click();
158
+ if (subAction) {
159
+ await this.contextMenuActions.getButtonByText(subAction).click();
160
+ }
161
+ }
162
+ /**
163
+ * This method is used when we want to perform double click on the dataTable row to open a file or folder
164
+ *
165
+ * @param name of the data table element with which we want to double click
166
+ */
167
+ async performClickFolderOrFileToOpen(name) {
168
+ await this.getCellLinkByName(name).click();
169
+ await this.spinnerWaitForReload();
170
+ }
171
+ async isItemPresent(name) {
172
+ await this.goThroughPagesLookingForRowWithName(name);
173
+ return this.getRowByName(name).isVisible();
174
+ }
175
+ async getActionLocatorFromExpandableMenu(name, action) {
176
+ await this.getRowByName(name).click({ button: 'right' });
177
+ return this.contextMenuActions.getButtonByText(action);
178
+ }
179
+ async performActionInExpandableMenu(name, action) {
180
+ await this.getRowByName(name).click({ button: 'right' });
181
+ await this.contextMenuActions.getButtonByText(action).click();
182
+ }
183
+ async goThroughPagesLookingForRowWithName(name) {
184
+ await this.spinnerWaitForReload();
185
+ if (await this.getRowByName(name).isVisible()) {
186
+ return null;
187
+ }
188
+ if (await this.pagination.currentPageLocator.isVisible()) {
189
+ if ((await this.pagination.currentPageLocator.textContent()) === ' of 1 ') {
190
+ return null;
191
+ }
192
+ }
193
+ if (await this.pagination.totalPageLocator.isVisible()) {
194
+ const maxPages = (await this.pagination.totalPageLocator?.textContent())?.match(/\d/)[0];
195
+ for (let page = 1; page <= Number(maxPages); page++) {
196
+ if (await this.getRowByName(name).isVisible()) {
197
+ break;
198
+ }
199
+ if (await this.pagination.getArrowLocatorFor(PaginationActionsType.NextPageSelector).isEnabled()) {
200
+ await this.pagination.getArrowLocatorFor(PaginationActionsType.NextPageSelector).click();
201
+ }
202
+ await this.spinnerWaitForReload();
203
+ }
204
+ }
205
+ }
206
+ async selectItems(...names) {
207
+ for (const name of names) {
208
+ const isSelected = await this.isRowSelected(name);
209
+ if (!isSelected) {
210
+ const row = this.getRowByName(name);
211
+ await row.hover();
212
+ await row.locator(this.uncheckedCheckbox).click();
213
+ await row.locator(this.checkedCheckbox).waitFor({ state: 'attached' });
214
+ }
215
+ }
216
+ }
217
+ async isRowSelected(itemName) {
218
+ const row = this.getRowByName(itemName);
219
+ return row.locator(this.checkedCheckbox).isVisible();
220
+ }
221
+ async getColumnHeaders() {
222
+ const columnNameLocator = this.columnHeaders;
223
+ await this.columnHeaders.nth(0).waitFor({ state: 'attached' });
224
+ return columnNameLocator.allTextContents();
225
+ }
226
+ async getSortedColumnHeaderText() {
227
+ return this.sortedColumnHeader.innerText();
228
+ }
229
+ getItemLocationEl(name) {
230
+ return this.getRowByName(name).locator('.aca-location-link');
231
+ }
232
+ async getItemLocationText(name) {
233
+ await this.getItemLocationEl(name).locator('a').waitFor({ state: 'attached' });
234
+ return this.getItemLocationEl(name).innerText();
235
+ }
236
+ async getItemLocationTooltip(name) {
237
+ const location = this.getItemLocationEl(name);
238
+ await location.hover();
239
+ return location.locator('a').getAttribute('title', { timeout: timeouts.normal });
240
+ }
241
+ async clickItemLocation(name) {
242
+ await this.getItemLocationEl(name).click();
243
+ }
244
+ async getSortingOrder() {
245
+ const str = await this.sortedColumnHeader.locator('../..').getAttribute('class');
246
+ if (str.includes('asc')) {
247
+ return 'asc';
248
+ }
249
+ else if (str.includes('desc')) {
250
+ return 'desc';
251
+ }
252
+ return 'none';
253
+ }
254
+ async getRowAllInnerTexts(name) {
255
+ return (await this.getRowByName(name).locator('span').allInnerTexts()).toString();
256
+ }
257
+ async getFirstElementDetail(name) {
258
+ const firstNode = this.getColumnValuesByName(name).first();
259
+ return firstNode.innerText();
260
+ }
261
+ async isEmpty() {
262
+ return this.emptyList.isVisible();
263
+ }
264
+ async getEmptyStateTitle() {
265
+ return (await this.isEmpty()) ? this.emptyListTitle.innerText() : '';
266
+ }
267
+ async getEmptyStateSubtitle() {
268
+ return (await this.isEmpty()) ? this.emptyListSubtitle.innerText() : '';
269
+ }
270
+ async getEmptyListText() {
271
+ return (await this.isEmpty()) ? this.emptyListTest.innerText() : '';
272
+ }
273
+ async getRowsCount() {
274
+ return this.getRowLocator.count();
275
+ }
276
+ async rightClickOnItem(itemName) {
277
+ await this.getCellByColumnNameAndRowItem(itemName, 'Name').click({ button: 'right' });
278
+ }
279
+ async setPaginationTo50() {
280
+ await this.paginationButton.click();
281
+ await this.paginationOptions.getByText('50').click();
282
+ }
283
+ /**
284
+ * Method used to create objects from names and visibility of sites from datatable
285
+ *
286
+ * @returns an object with sites' names and their corresponding visibility values
287
+ */
288
+ async getSitesNameAndVisibility() {
289
+ const rowsCount = await this.sitesName.count();
290
+ const sitesInfo = {};
291
+ for (let i = 0; i < rowsCount; i++) {
292
+ let siteVisibilityText = await this.sitesVisibility.nth(i).textContent();
293
+ let siteNameText = await this.sitesName.nth(i).textContent();
294
+ siteVisibilityText = siteVisibilityText.trim().toUpperCase();
295
+ siteNameText = siteNameText.trim();
296
+ sitesInfo[siteNameText] = siteVisibilityText;
297
+ }
298
+ return sitesInfo;
299
+ }
300
+ /**
301
+ * Method used to create objects from names and roles of sites from datatable
302
+ *
303
+ * @returns an object with sites' names and their corresponding role values
304
+ */
305
+ async getSitesNameAndRole() {
306
+ const rowsCount = await this.sitesName.count();
307
+ const sitesInfo = {};
308
+ for (let i = 0; i < rowsCount; i++) {
309
+ let siteNameText = await this.sitesName.nth(i).textContent();
310
+ let siteRoleText = await this.sitesRole.nth(i).textContent();
311
+ siteNameText = siteNameText.trim();
312
+ siteRoleText = siteRoleText.trim();
313
+ sitesInfo[siteNameText] = siteRoleText;
314
+ }
315
+ return sitesInfo;
316
+ }
317
+ async hasLockIcon(itemName) {
318
+ const row = this.getRowByName(itemName);
319
+ return row.locator('img[src*="lock"]').isVisible();
320
+ }
321
+ async getLockOwner(itemName) {
322
+ const row = this.getRowByName(itemName);
323
+ return row.locator(this.lockOwner).innerText();
324
+ }
325
+ }
326
+ DataTableComponent.rootElement = 'adf-datatable';
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtcGxheXdyaWdodC1zaGFyZWQvc3JjL3BhZ2Utb2JqZWN0cy9jb21wb25lbnRzL2RhdGFUYWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUdILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGFBQWE7SUFJbkQsWUFBWSxJQUFVLEVBQUUsV0FBVyxHQUFHLGtCQUFrQixDQUFDLFdBQVc7UUFDbEUsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUgzQix1QkFBa0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQU05QyxlQUFVLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsU0FBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1QywwQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDM0QsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQzNGLG1DQUE4QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUNqRyxtQkFB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eEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pELENBQUM7O0FBN1ZjLDhCQUFXLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IExvY2F0b3IsIFBhZ2UgfSBmcm9tICdAcGxheXdyaWdodC90ZXN0JztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9tYXQtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkFjdGlvbnNUeXBlLCBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgdGltZW91dHMgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcm9vdEVsZW1lbnQgPSAnYWRmLWRhdGF0YWJsZSc7XG4gIGNvbnRleHRNZW51QWN0aW9ucyA9IG5ldyBNYXRNZW51Q29tcG9uZW50KHRoaXMucGFnZSk7XG5cbiAgY29uc3RydWN0b3IocGFnZTogUGFnZSwgcm9vdEVsZW1lbnQgPSBEYXRhVGFibGVDb21wb25lbnQucm9vdEVsZW1lbnQpIHtcbiAgICBzdXBlcihwYWdlLCByb290RWxlbWVudCk7XG4gIH1cblxuICBwdWJsaWMgcGFnaW5hdGlvbiA9IG5ldyBQYWdpbmF0aW9uQ29tcG9uZW50KHRoaXMucGFnZSk7XG4gIGJvZHkgPSB0aGlzLmdldENoaWxkKCcuYWRmLWRhdGF0YWJsZS1ib2R5Jyk7XG4gIGdldEVtcHR5Rm9sZGVyTG9jYXRvciA9IHRoaXMuZ2V0Q2hpbGQoJy5hZGYtZW1wdHktZm9sZGVyJyk7XG4gIGdldEVtcHR5Q29udGVudFRpdGxlTG9jYXRvciA9IHRoaXMuZ2V0Q2hpbGQoJ2FkZi1lbXB0eS1jb250ZW50IC5hZGYtZW1wdHktY29udGVudF9fdGl0bGUnKTtcbiAgZ2V0RW1wdHlDb250ZW50U3ViVGl0bGVMb2NhdG9yID0gdGhpcy5nZXRDaGlsZCgnYWRmLWVtcHR5LWNvbnRlbnQgLmFkZi1lbXB0eS1jb250ZW50X19zdWJ0aXRsZScpO1xuICBnZXRTZWxlY3RlZFJvdyA9IHRoaXMuZ2V0Q2hpbGQoJy5hZGYtZGF0YXRhYmxlLXJvdy5hZGYtaXMtc2VsZWN0ZWQnKTtcbiAgc29ydGVkQ29sdW1uSGVhZGVyID0gdGhpcy5nZXRDaGlsZChgLmFkZi1kYXRhdGFibGVfX2hlYWRlci0tc29ydGVkLWFzYyAuYWRmLWRhdGF0YWJsZS1jZWxsLWhlYWRlci1jb250ZW50IC5hZGYtZGF0YXRhYmxlLWNlbGwtdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGYtZGF0YXRhYmxlX19oZWFkZXItLXNvcnRlZC1kZXNjIC5hZGYtZGF0YXRhYmxlLWNlbGwtaGVhZGVyLWNvbnRlbnQgLmFkZi1kYXRhdGFibGUtY2VsbC12YWx1ZWApO1xuICBjb2x1bW5IZWFkZXJzID0gdGhpcy5nZXRDaGlsZCgnLmFkZi1kYXRhdGFibGUtcm93IC5hZGYtZGF0YXRhYmxlLWNlbGwtaGVhZGVyIC5hZGYtZGF0YXRhYmxlLWNlbGwtdmFsdWUnKTtcbiAgZW1wdHlMaXN0ID0gdGhpcy5nZXRDaGlsZCgnZGl2LmFkZi1uby1jb250ZW50LWNvbnRhaW5lcicpO1xuICBlbXB0eUxpc3RUaXRsZSA9IHRoaXMuZ2V0Q2hpbGQoJy5hZGYtZW1wdHktY29udGVudF9fdGl0bGUnKTtcbiAgZW1wdHlMaXN0U3VidGl0bGUgPSB0aGlzLmdldENoaWxkKCcuYWRmLWVtcHR5LWNvbnRlbnRfX3N1YnRpdGxlJyk7XG4gIGVtcHR5U2VhcmNoVGV4dCA9IHRoaXMuZ2V0Q2hpbGQoJy5lbXB0eS1zZWFyY2hfX3RleHQnKTtcbiAgZW1wdHlMaXN0VGVzdCA9IHRoaXMuZ2V0Q2hpbGQoJ2FkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZScpO1xuICBwYWdpbmF0aW9uQnV0dG9uID0gdGhpcy5wYWdlLmxvY2F0b3IoJy5hZGYtcGFnaW5hdGlvbl9fYmxvY2sgYnV0dG9uJykubnRoKDApO1xuICBwYWdpbmF0aW9uT3B0aW9ucyA9IHRoaXMucGFnZS5sb2NhdG9yKCcjY2RrLW92ZXJsYXktMCBidXR0b24nKTtcbiAgc2l0ZXNWaXNpYmlsaXR5ID0gdGhpcy5wYWdlLmxvY2F0b3IoJy5hZGYtZGF0YXRhYmxlLWJvZHkgW2RhdGEtYXV0b21hdGlvbi1pZCo9XCJkYXRhdGFibGUtcm93XCJdIFthcmlhLWxhYmVsPVwiVmlzaWJpbGl0eVwiXScpO1xuICBzaXRlc05hbWUgPSB0aGlzLnBhZ2UubG9jYXRvcignLmFkZi1kYXRhdGFibGUtYm9keSBbZGF0YS1hdXRvbWF0aW9uLWlkKj1cImRhdGF0YWJsZS1yb3dcIl0gW2FyaWEtbGFiZWw9XCJOYW1lXCJdJyk7XG4gIHNpdGVzUm9sZSA9IHRoaXMucGFnZS5sb2NhdG9yKCcuYWRmLWRhdGF0YWJsZS1ib2R5IFtkYXRhLWF1dG9tYXRpb24taWQqPVwiZGF0YXRhYmxlLXJvd1wiXSBbYXJpYS1sYWJlbD1cIk15IFJvbGVcIl0nKTtcbiAgbG9ja093bmVyID0gdGhpcy5wYWdlLmxvY2F0b3IoJy5hY2EtbG9ja2VkLWJ5LS1uYW1lJyk7XG4gIHVuY2hlY2tlZENoZWNrYm94ID0gdGhpcy5wYWdlLmxvY2F0b3IoJy5tYXQtbWRjLWNoZWNrYm94Jyk7XG4gIGNoZWNrZWRDaGVja2JveCA9IHRoaXMucGFnZS5sb2NhdG9yKCcubWF0LW1kYy1jaGVja2JveC1jaGVja2VkJyk7XG5cbiAgLyoqIExvY2F0b3IgZm9yIHJvdyAob3Igcm93cykgKi9cbiAgZ2V0Um93TG9jYXRvciA9IHRoaXMucGFnZS5nZXRCeVJvbGUoJ3Jvd2dyb3VwJykubnRoKDEpLmxvY2F0b3IoJ2FkZi1kYXRhdGFibGUtcm93Jyk7XG5cbiAgLyoqIExvY2F0b3IgdG8gZ2V0IFwiTm8gcmVzdWx0cyBmb3VuZFwiIG1lc3NhZ2UgKi9cbiAgZ2V0Tm9SZXN1bHRzRm91bmRNZXNzYWdlID0gdGhpcy5nZXRDaGlsZCgnYWRmLWN1c3RvbS1lbXB0eS1jb250ZW50LXRlbXBsYXRlJywgeyBoYXNUZXh0OiAnTm8gcmVzdWx0cyBmb3VuZCcgfSk7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGluIGNhc2VzIHdoZXJlIHdlIHdhbnQgdG8gY2hlY2sgdGhhdCBzb21lIHJlY29yZCBpcyB2aXNpYmxlIGluIHRoZSBkYXRhdGFibGUuIEl0IHdpbGwgY29uc2lkZXIgd2hvbGUgcm93XG4gICAqXG4gICAqIEByZXR1cm5zIHJlZmVyZW5jZSB0byBjZWxsIGVsZW1lbnQgd2hpY2ggY29udGFpbnMgdGV4dC5cbiAgICovXG4gIGdldFJvd0J5TmFtZSA9IChuYW1lOiBzdHJpbmcgfCBudW1iZXIpOiBMb2NhdG9yID0+IHRoaXMuZ2V0Q2hpbGQoYGFkZi1kYXRhdGFibGUtcm93YCwgeyBoYXNUZXh0OiBuYW1lLnRvU3RyaW5nKCkgfSk7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGluIGNhc2VzIHdoZXJlIHdlIHdhbnQgdG8gY2hlY2sgdGhhdCBzb21lIHJlY29yZCBpcyB2aXNpYmxlIGluIHRoZSBkYXRhdGFibGUuXG4gICAqIEJ1dCB3ZSB3YW50IHRvIGNoZWNrIGl0IGJ5IGNvbHVtbiBoZWFkZXIgdGl0bGUgYW5kIHZhbHVlIG9mIHRoaXMgY29sdW1uLlxuICAgKlxuICAgKiBAcmV0dXJucyByZWZlcmVuY2UgdG8gY2VsbCBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIHRleHQuXG4gICAqL1xuICBnZXRSb3dCeUNvbHVtblRpdGxlQW5kSXRzQ2VsbFZhbHVlID0gKGNvbHVtblRpdGxlOiBzdHJpbmcsIGNlbGxWYWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogTG9jYXRvciA9PlxuICAgIHRoaXMucGFnZS5sb2NhdG9yKGAvL2Rpdltjb250YWlucyhAdGl0bGUsICcke2NvbHVtblRpdGxlfScpXS8vc3Bhbltjb250YWlucyh0ZXh0KCksICcke2NlbGxWYWx1ZX0nKV0vYW5jZXN0b3I6OmFkZi1kYXRhdGFibGUtcm93YCk7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGluIGNhc2VzIHdoZXJlIHdlIHdhbnQgdG8gcmV0cmlldmUgYSByb3cgZnJvbSB0aGUgZGF0YXRhYmxlIGJhc2VkIG9uIGl0cyBudW1lcmljYWwgb3JkZXIgd2l0aGluIHRoZSBhcnJheS5cbiAgICpcbiAgICogQHJldHVybnMgcmVmZXJlbmNlIHRvIGNlbGwgZWxlbWVudCB3aGljaCBjb250YWlucyB0ZXh0LlxuICAgKi9cbiAgZ2V0TnRoUm93ID0gKG9yZGVyTnVtOiBudW1iZXIpOiBMb2NhdG9yID0+IHRoaXMuZ2V0Um93TG9jYXRvci5udGgob3JkZXJOdW0pO1xuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCBpbiBjYXNlcyB3aGVyZSB1c2VyIGhhdmUgcG9zc2liaWxpdHkgdG8gbmF2aWdhdGUgXCJpbnNpZGVcIiB0aGUgZWxlbWVudCAoaXQncyBjbGlja2FibGUgYW5kIGhhcyBsaW5rIGF0dHJpYnV0ZSkuXG4gICAqIFBlcmZvcm0gYWN0aW9uIC5jbGljaygpIHRvIG5hdmlnYXRlIGluc2lkZSBpdFxuICAgKlxuICAgKiBAcmV0dXJucyByZWZlcmVuY2UgdG8gY2VsbCBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIGxpbmsuXG4gICAqL1xuICBnZXRDZWxsTGlua0J5TmFtZSA9IChuYW1lOiBzdHJpbmcpOiBMb2NhdG9yID0+IHRoaXMuZ2V0Q2hpbGQoJy5hZGYtY2VsbC12YWx1ZSBzcGFuW3JvbGU9XCJsaW5rXCJdJywgeyBoYXNUZXh0OiBuYW1lIH0pO1xuXG4gIC8qKlxuICAgKiBNZXRob2QgdXNlZCBpbiBjYXNlcyB3aGVyZSB3ZSB3YW50IHRvIGxvY2FsaXplIHRoZSBlbGVtZW50IGJ5IFthcmlhLWxhYmVsXVxuICAgKlxuICAgKiBAcmV0dXJucyByZWZlcmVuY2UgdG8gY2VsbCBlbGVtZW50LlxuICAgKi9cbiAgZ2V0QnlBcmlhTGFiZWxUaXRsZSA9ICh0aXRsZTogc3RyaW5nKTogTG9jYXRvciA9PiB0aGlzLmdldENoaWxkKGBbYXJpYS1sYWJlbD1cIiR7dGl0bGV9XCJdYCk7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGluIGNhc2VzIHdoZXJlIHdlIHdhbnQgdG8gZ2V0IHRoZSBidXR0b24gKGhhbWJ1cmdlciBtZW51KSBmb3Igcm93IGVsZW1lbnRcbiAgICpcbiAgICogQHJldHVybnMgcmVmZXJlbmNlIHRvIG1lbnUgcGxhY2VkIGluIHJvdyBsb2NhbGl6ZWQgYnkgdGhlIG5hbWVcbiAgICovXG4gIGdldEFjdGlvbnNCdXR0b25CeU5hbWUgPSAobmFtZTogc3RyaW5nKTogTG9jYXRvciA9PlxuICAgIHRoaXMuZ2V0Um93QnlOYW1lKG5hbWUpLmxvY2F0b3IoJ21hdC1pY29uJywgeyBoYXNUZXh0OiBuZXcgUmVnRXhwKGBeXFxcXHMqbW9yZV92ZXJ0XFxcXHMqJGAsICdnJykgfSk7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIGluIGNhc2VzIHdoZXJlIHdlIHdhbnQgdG8gZ2V0IHRoZSBlZGl0IGJ1dHRvbiBhbmQgdGhlcmUgaXMgbm8gaGFtYnVyZ2VyIG1lbnVcbiAgICpcbiAgICogQHJldHVybnMgcmVmZXJlbmNlIHRvIGVkaXQgYnV0dG9uIHBsYWNlZCBpbiByb3cgbG9jYWxpemVkIGJ5IHRoZSBuYW1lXG4gICAqL1xuICBnZXRFZGl0QnV0dG9uQnlOYW1lID0gKG5hbWU6IHN0cmluZyk6IExvY2F0b3IgPT4gdGhpcy5nZXRSb3dCeU5hbWUobmFtZSkubG9jYXRvcignYnV0dG9uI2VkaXRCdXR0b24nKTtcblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgaW4gY2FzZXMgd2hlcmUgd2Ugd2FudCB0byBnZXQgdGhlIGJ1dHRvbiBhbmQgdGhlcmUgaXMgbm8gaGFtYnVyZ2VyIG1lbnVcbiAgICpcbiAgICogQHJldHVybnMgcmVmZXJlbmNlIHRvIGJ1dHRvbiBwbGFjZWQgaW4gcm93IGxvY2FsaXplZCBieSB0aGUgbmFtZVxuICAgKi9cbiAgZ2V0QnV0dG9uQnlOYW1lRm9yU3BlY2lmaWNSb3cgPSAoZWxlbWVudFRpdGxlSW5Sb3c6IHN0cmluZywgYnV0dG9uVGl0bGU6IHN0cmluZyk6IExvY2F0b3IgPT5cbiAgICB0aGlzLmdldFJvd0J5TmFtZShlbGVtZW50VGl0bGVJblJvdykubG9jYXRvcignYnV0dG9uJywgeyBoYXNUZXh0OiBidXR0b25UaXRsZSB9KTtcblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgaW4gY2FzZXMgd2hlcmUgeW91IHdhbnQgdG8gZ2V0IHNvbWUgc3BlY2lmaWMgY2VsbCAoYnkgY29sdW1uIG5hbWUpIGZvciByb3cgd2hpY2ggY29udGFpbnMgc29tZSBuYW1lL3RpdGxlL2V0Yy5cbiAgICpcbiAgICogQHJldHVybnMgcmVmZXJlbmNlIHRvIGNlbGwgZWxlbWVudFxuICAgKi9cbiAgZ2V0Q2VsbEJ5Q29sdW1uTmFtZUFuZFJvd0l0ZW0gPSAoaXRlbTogc3RyaW5nIHwgbnVtYmVyLCBjb2x1bW5OYW1lOiBzdHJpbmcpOiBMb2NhdG9yID0+IHRoaXMuZ2V0Um93QnlOYW1lKGl0ZW0pLmxvY2F0b3IoYFt0aXRsZT1cIiR7Y29sdW1uTmFtZX1cIl1gKTtcblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgaW4gY2FzZXMgd2hlcmUgd2Ugd2FudCB0byBnZXQgdGhlIGNoZWNrYm94IGZvciByb3cgZWxlbWVudFxuICAgKlxuICAgKiBAcmV0dXJucyByZWZlcmVuY2UgdG8gY2hlY2tib3ggcGxhY2VkIGluIHJvdyBsb2NhbGl6ZWQgYnkgdGhlIG5hbWVcbiAgICovXG4gIGdldENoZWNrYm94Rm9yRWxlbWVudCA9IChpdGVtOiBzdHJpbmcpOiBMb2NhdG9yID0+IHRoaXMuZ2V0Um93QnlOYW1lKGl0ZW0pLmxvY2F0b3IoJy5tYXQtbWRjLWNoZWNrYm94Jyk7XG5cbiAgZ2V0Q29sdW1uSGVhZGVyQnlUaXRsZUxvY2F0b3IgPSAoaGVhZGVyVGl0bGU6IHN0cmluZyk6IExvY2F0b3IgPT4gdGhpcy5nZXRDaGlsZCgnW3JvbGU9XCJjb2x1bW5oZWFkZXJcIl0nLCB7IGhhc1RleHQ6IGhlYWRlclRpdGxlIH0pO1xuXG4gIGdldFNlYXJjaFJlc3VsdExpbmtCeU5hbWUgPSAobmFtZTogc3RyaW5nKTogTG9jYXRvciA9PiB0aGlzLmdldENoaWxkKCcuYWNhLXNlYXJjaC1yZXN1bHRzLXJvdyBzcGFuW3JvbGU9XCJsaW5rXCJdJywgeyBoYXNUZXh0OiBuYW1lIH0pO1xuXG4gIGdldENvbHVtblZhbHVlc0J5TmFtZSA9IChuYW1lOiBzdHJpbmcpOiBMb2NhdG9yID0+IHRoaXMuZ2V0Q2hpbGQoYGRpdlt0aXRsZT1cIiR7bmFtZX1cIl0gc3BhbmApO1xuXG4gIGdldENvbHVtbkhlYWRlckJ5TmFtZSA9IChoZWFkZXJUaXRsZTogc3RyaW5nKTogTG9jYXRvciA9PlxuICAgIHRoaXMuZ2V0Q2hpbGQoJy5hZGYtZGF0YXRhYmxlLXJvdyAuYWRmLWRhdGF0YWJsZS1jZWxsLWhlYWRlciAuYWRmLWRhdGF0YWJsZS1jZWxsLXZhbHVlJywgeyBoYXNUZXh0OiBoZWFkZXJUaXRsZSB9KTtcblxuICBhc3luYyBzb3J0QnkobGFiZWw6IHN0cmluZywgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc29ydENvbHVtbiA9IGF3YWl0IHRoaXMuZ2V0U29ydGVkQ29sdW1uSGVhZGVyVGV4dCgpO1xuICAgIGxldCBzb3J0T3JkZXIgPSBhd2FpdCB0aGlzLmdldFNvcnRpbmdPcmRlcigpO1xuICAgIGlmIChzb3J0Q29sdW1uICE9PSBsYWJlbCkge1xuICAgICAgYXdhaXQgdGhpcy5nZXRDb2x1bW5IZWFkZXJCeU5hbWUobGFiZWwpLmNsaWNrKHsgZm9yY2U6IHRydWUgfSk7XG4gICAgICBzb3J0T3JkZXIgPSBhd2FpdCB0aGlzLmdldFNvcnRpbmdPcmRlcigpO1xuICAgIH1cbiAgICBpZiAoc29ydE9yZGVyICE9PSBvcmRlcikge1xuICAgICAgYXdhaXQgdGhpcy5nZXRDaGlsZCgnc3BhbltjbGFzcyo9XCJhZGYtZGF0YXRhYmxlX19oZWFkZXItLXNvcnRlZFwiXScpLmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgd2hlbiB3ZSB3YW50IHRvIHBlcmZvcm0gcmlnaHQgbW91c2UgY2xpY2sgb24gdGhlIGRhdGFUYWJsZSByb3cgYW5kIHBlcmZvcm0gc29tZSBhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgb2YgdGhlIGRhdGEgdGFibGUgZWxlbWVudCB3aXRoIHdoaWNoIHdlIHdhbnQgdG8gY2xpY2tcbiAgICogQHBhcmFtIGFjdGlvbiBwcm92aWRlIHdoaWNoIGFjdGlvbiB5b3Ugd2FudCB0byBwZXJmb3JtXG4gICAqL1xuICBhc3luYyBwZXJmb3JtQWN0aW9uRnJvbUV4cGFuZGFibGVNZW51KG5hbWU6IHN0cmluZyB8IG51bWJlciwgYWN0aW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmdvVGhyb3VnaFBhZ2VzTG9va2luZ0ZvclJvd1dpdGhOYW1lKG5hbWUpO1xuICAgIGNvbnN0IGFjdGlvbkJ1dHRvbkxvY2F0b3IgPSBhd2FpdCB0aGlzLmdldEFjdGlvbkxvY2F0b3JGcm9tRXhwYW5kYWJsZU1lbnUobmFtZSwgYWN0aW9uKTtcbiAgICBhd2FpdCBhY3Rpb25CdXR0b25Mb2NhdG9yLmNsaWNrKCk7XG4gICAgYXdhaXQgdGhpcy5zcGlubmVyV2FpdEZvclJlbG9hZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrIGFjdGlvbiBmcm9tIHRoZSBleHBhbmRhYmxlIGtlYmFiIG1lbnUgZm9yIHRoZSBlbGVtZW50IGluIGRhdGF0YWJsZVxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSB0aXRsZSBvZiB0aGUgcmVjb3JkIHlvdSB3b3VsZCBsaWtlIHRvIHByb2NlZWRcbiAgICogQHBhcmFtIGFjdGlvbiBwcm92aWRlIGJ1dHRvbiB0aXRsZSBmb3IgdGhlIGFjdGlvblxuICAgKiBAcGFyYW0gc3ViQWN0aW9uIGlmIHRoZSBhY3Rpb24gaXMgaW4gc3ViIG1lbnUsIHRoZW4gcHJvdmlkZSBpdCBoZXJlXG4gICAqL1xuICBhc3luYyBwZXJmb3JtQWN0aW9uRm9yRWxlbWVudChuYW1lOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBzdWJBY3Rpb24/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmdldEFjdGlvbnNCdXR0b25CeU5hbWUobmFtZSkuY2xpY2soKTtcbiAgICBhd2FpdCB0aGlzLmNvbnRleHRNZW51QWN0aW9ucy5nZXRCdXR0b25CeVRleHQoYWN0aW9uKS5jbGljaygpO1xuXG4gICAgaWYgKHN1YkFjdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMuZ2V0QnV0dG9uQnlUZXh0KHN1YkFjdGlvbikuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB3aGVuIHdlIHdhbnQgdG8gcGVyZm9ybSBkb3VibGUgY2xpY2sgb24gdGhlIGRhdGFUYWJsZSByb3cgdG8gb3BlbiBhIGZpbGUgb3IgZm9sZGVyXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIG9mIHRoZSBkYXRhIHRhYmxlIGVsZW1lbnQgd2l0aCB3aGljaCB3ZSB3YW50IHRvIGRvdWJsZSBjbGlja1xuICAgKi9cbiAgYXN5bmMgcGVyZm9ybUNsaWNrRm9sZGVyT3JGaWxlVG9PcGVuKG5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZ2V0Q2VsbExpbmtCeU5hbWUobmFtZSkuY2xpY2soKTtcbiAgICBhd2FpdCB0aGlzLnNwaW5uZXJXYWl0Rm9yUmVsb2FkKCk7XG4gIH1cblxuICBhc3luYyBpc0l0ZW1QcmVzZW50KG5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGF3YWl0IHRoaXMuZ29UaHJvdWdoUGFnZXNMb29raW5nRm9yUm93V2l0aE5hbWUobmFtZSk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um93QnlOYW1lKG5hbWUpLmlzVmlzaWJsZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWN0aW9uTG9jYXRvckZyb21FeHBhbmRhYmxlTWVudShuYW1lOiBzdHJpbmcgfCBudW1iZXIsIGFjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxMb2NhdG9yPiB7XG4gICAgYXdhaXQgdGhpcy5nZXRSb3dCeU5hbWUobmFtZSkuY2xpY2soeyBidXR0b246ICdyaWdodCcgfSk7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dE1lbnVBY3Rpb25zLmdldEJ1dHRvbkJ5VGV4dChhY3Rpb24pO1xuICB9XG5cbiAgYXN5bmMgcGVyZm9ybUFjdGlvbkluRXhwYW5kYWJsZU1lbnUobmFtZTogc3RyaW5nIHwgbnVtYmVyLCBhY3Rpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZ2V0Um93QnlOYW1lKG5hbWUpLmNsaWNrKHsgYnV0dG9uOiAncmlnaHQnIH0pO1xuICAgIGF3YWl0IHRoaXMuY29udGV4dE1lbnVBY3Rpb25zLmdldEJ1dHRvbkJ5VGV4dChhY3Rpb24pLmNsaWNrKCk7XG4gIH1cblxuICBhc3luYyBnb1Rocm91Z2hQYWdlc0xvb2tpbmdGb3JSb3dXaXRoTmFtZShuYW1lOiBzdHJpbmcgfCBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNwaW5uZXJXYWl0Rm9yUmVsb2FkKCk7XG4gICAgaWYgKGF3YWl0IHRoaXMuZ2V0Um93QnlOYW1lKG5hbWUpLmlzVmlzaWJsZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoYXdhaXQgdGhpcy5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlTG9jYXRvci5pc1Zpc2libGUoKSkge1xuICAgICAgaWYgKChhd2FpdCB0aGlzLnBhZ2luYXRpb24uY3VycmVudFBhZ2VMb2NhdG9yLnRleHRDb250ZW50KCkpID09PSAnIG9mIDEgJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGF3YWl0IHRoaXMucGFnaW5hdGlvbi50b3RhbFBhZ2VMb2NhdG9yLmlzVmlzaWJsZSgpKSB7XG4gICAgICBjb25zdCBtYXhQYWdlcyA9IChhd2FpdCB0aGlzLnBhZ2luYXRpb24udG90YWxQYWdlTG9jYXRvcj8udGV4dENvbnRlbnQoKSk/Lm1hdGNoKC9cXGQvKVswXTtcbiAgICAgIGZvciAobGV0IHBhZ2UgPSAxOyBwYWdlIDw9IE51bWJlcihtYXhQYWdlcyk7IHBhZ2UrKykge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5nZXRSb3dCeU5hbWUobmFtZSkuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXdhaXQgdGhpcy5wYWdpbmF0aW9uLmdldEFycm93TG9jYXRvckZvcihQYWdpbmF0aW9uQWN0aW9uc1R5cGUuTmV4dFBhZ2VTZWxlY3RvcikuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBhZ2luYXRpb24uZ2V0QXJyb3dMb2NhdG9yRm9yKFBhZ2luYXRpb25BY3Rpb25zVHlwZS5OZXh0UGFnZVNlbGVjdG9yKS5jbGljaygpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc3Bpbm5lcldhaXRGb3JSZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBzZWxlY3RJdGVtcyguLi5uYW1lczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBhd2FpdCB0aGlzLmlzUm93U2VsZWN0ZWQobmFtZSk7XG4gICAgICBpZiAoIWlzU2VsZWN0ZWQpIHtcbiAgICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRSb3dCeU5hbWUobmFtZSk7XG4gICAgICAgIGF3YWl0IHJvdy5ob3ZlcigpO1xuICAgICAgICBhd2FpdCByb3cubG9jYXRvcih0aGlzLnVuY2hlY2tlZENoZWNrYm94KS5jbGljaygpO1xuICAgICAgICBhd2FpdCByb3cubG9jYXRvcih0aGlzLmNoZWNrZWRDaGVja2JveCkud2FpdEZvcih7IHN0YXRlOiAnYXR0YWNoZWQnIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGlzUm93U2VsZWN0ZWQoaXRlbU5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Um93QnlOYW1lKGl0ZW1OYW1lKTtcbiAgICByZXR1cm4gcm93LmxvY2F0b3IodGhpcy5jaGVja2VkQ2hlY2tib3gpLmlzVmlzaWJsZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29sdW1uSGVhZGVycygpOiBQcm9taXNlPEFycmF5PHN0cmluZz4+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lTG9jYXRvciA9IHRoaXMuY29sdW1uSGVhZGVycztcbiAgICBhd2FpdCB0aGlzLmNvbHVtbkhlYWRlcnMubnRoKDApLndhaXRGb3IoeyBzdGF0ZTogJ2F0dGFjaGVkJyB9KTtcbiAgICByZXR1cm4gY29sdW1uTmFtZUxvY2F0b3IuYWxsVGV4dENvbnRlbnRzKCk7XG4gIH1cblxuICBhc3luYyBnZXRTb3J0ZWRDb2x1bW5IZWFkZXJUZXh0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkQ29sdW1uSGVhZGVyLmlubmVyVGV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtTG9jYXRpb25FbChuYW1lOiBzdHJpbmcpOiBMb2NhdG9yIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3dCeU5hbWUobmFtZSkubG9jYXRvcignLmFjYS1sb2NhdGlvbi1saW5rJyk7XG4gIH1cblxuICBhc3luYyBnZXRJdGVtTG9jYXRpb25UZXh0KG5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgYXdhaXQgdGhpcy5nZXRJdGVtTG9jYXRpb25FbChuYW1lKS5sb2NhdG9yKCdhJykud2FpdEZvcih7IHN0YXRlOiAnYXR0YWNoZWQnIH0pO1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW1Mb2NhdGlvbkVsKG5hbWUpLmlubmVyVGV4dCgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0SXRlbUxvY2F0aW9uVG9vbHRpcChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRJdGVtTG9jYXRpb25FbChuYW1lKTtcbiAgICBhd2FpdCBsb2NhdGlvbi5ob3ZlcigpO1xuICAgIHJldHVybiBsb2NhdGlvbi5sb2NhdG9yKCdhJykuZ2V0QXR0cmlidXRlKCd0aXRsZScsIHsgdGltZW91dDogdGltZW91dHMubm9ybWFsIH0pO1xuICB9XG5cbiAgYXN5bmMgY2xpY2tJdGVtTG9jYXRpb24obmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5nZXRJdGVtTG9jYXRpb25FbChuYW1lKS5jbGljaygpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U29ydGluZ09yZGVyKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgc3RyID0gYXdhaXQgdGhpcy5zb3J0ZWRDb2x1bW5IZWFkZXIubG9jYXRvcignLi4vLi4nKS5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyk7XG4gICAgaWYgKHN0ci5pbmNsdWRlcygnYXNjJykpIHtcbiAgICAgIHJldHVybiAnYXNjJztcbiAgICB9IGVsc2UgaWYgKHN0ci5pbmNsdWRlcygnZGVzYycpKSB7XG4gICAgICByZXR1cm4gJ2Rlc2MnO1xuICAgIH1cbiAgICByZXR1cm4gJ25vbmUnO1xuICB9XG5cbiAgYXN5bmMgZ2V0Um93QWxsSW5uZXJUZXh0cyhuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXRSb3dCeU5hbWUobmFtZSkubG9jYXRvcignc3BhbicpLmFsbElubmVyVGV4dHMoKSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZpcnN0RWxlbWVudERldGFpbChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGZpcnN0Tm9kZSA9IHRoaXMuZ2V0Q29sdW1uVmFsdWVzQnlOYW1lKG5hbWUpLmZpcnN0KCk7XG4gICAgcmV0dXJuIGZpcnN0Tm9kZS5pbm5lclRleHQoKTtcbiAgfVxuXG4gIGFzeW5jIGlzRW1wdHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZW1wdHlMaXN0LmlzVmlzaWJsZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0RW1wdHlTdGF0ZVRpdGxlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmlzRW1wdHkoKSkgPyB0aGlzLmVtcHR5TGlzdFRpdGxlLmlubmVyVGV4dCgpIDogJyc7XG4gIH1cblxuICBhc3luYyBnZXRFbXB0eVN0YXRlU3VidGl0bGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaXNFbXB0eSgpKSA/IHRoaXMuZW1wdHlMaXN0U3VidGl0bGUuaW5uZXJUZXh0KCkgOiAnJztcbiAgfVxuXG4gIGFzeW5jIGdldEVtcHR5TGlzdFRleHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuaXNFbXB0eSgpKSA/IHRoaXMuZW1wdHlMaXN0VGVzdC5pbm5lclRleHQoKSA6ICcnO1xuICB9XG5cbiAgYXN5bmMgZ2V0Um93c0NvdW50KCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Um93TG9jYXRvci5jb3VudCgpO1xuICB9XG5cbiAgYXN5bmMgcmlnaHRDbGlja09uSXRlbShpdGVtTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5nZXRDZWxsQnlDb2x1bW5OYW1lQW5kUm93SXRlbShpdGVtTmFtZSwgJ05hbWUnKS5jbGljayh7IGJ1dHRvbjogJ3JpZ2h0JyB9KTtcbiAgfVxuXG4gIGFzeW5jIHNldFBhZ2luYXRpb25UbzUwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucGFnaW5hdGlvbkJ1dHRvbi5jbGljaygpO1xuICAgIGF3YWl0IHRoaXMucGFnaW5hdGlvbk9wdGlvbnMuZ2V0QnlUZXh0KCc1MCcpLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHVzZWQgdG8gY3JlYXRlIG9iamVjdHMgZnJvbSBuYW1lcyBhbmQgdmlzaWJpbGl0eSBvZiBzaXRlcyBmcm9tIGRhdGF0YWJsZVxuICAgKlxuICAgKiBAcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBzaXRlcycgbmFtZXMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSB2YWx1ZXNcbiAgICovXG4gIGFzeW5jIGdldFNpdGVzTmFtZUFuZFZpc2liaWxpdHkoKTogUHJvbWlzZTx7IFtzaXRlTmFtZTogc3RyaW5nXTogc3RyaW5nIH0+IHtcbiAgICBjb25zdCByb3dzQ291bnQgPSBhd2FpdCB0aGlzLnNpdGVzTmFtZS5jb3VudCgpO1xuICAgIGNvbnN0IHNpdGVzSW5mbzogeyBbc2l0ZU5hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzQ291bnQ7IGkrKykge1xuICAgICAgbGV0IHNpdGVWaXNpYmlsaXR5VGV4dCA9IGF3YWl0IHRoaXMuc2l0ZXNWaXNpYmlsaXR5Lm50aChpKS50ZXh0Q29udGVudCgpO1xuICAgICAgbGV0IHNpdGVOYW1lVGV4dCA9IGF3YWl0IHRoaXMuc2l0ZXNOYW1lLm50aChpKS50ZXh0Q29udGVudCgpO1xuICAgICAgc2l0ZVZpc2liaWxpdHlUZXh0ID0gc2l0ZVZpc2liaWxpdHlUZXh0LnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgc2l0ZU5hbWVUZXh0ID0gc2l0ZU5hbWVUZXh0LnRyaW0oKTtcbiAgICAgIHNpdGVzSW5mb1tzaXRlTmFtZVRleHRdID0gc2l0ZVZpc2liaWxpdHlUZXh0O1xuICAgIH1cbiAgICByZXR1cm4gc2l0ZXNJbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB1c2VkIHRvIGNyZWF0ZSBvYmplY3RzIGZyb20gbmFtZXMgYW5kIHJvbGVzIG9mIHNpdGVzIGZyb20gZGF0YXRhYmxlXG4gICAqXG4gICAqIEByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHNpdGVzJyBuYW1lcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyByb2xlIHZhbHVlc1xuICAgKi9cbiAgYXN5bmMgZ2V0U2l0ZXNOYW1lQW5kUm9sZSgpOiBQcm9taXNlPHsgW3NpdGVOYW1lOiBzdHJpbmddOiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHJvd3NDb3VudCA9IGF3YWl0IHRoaXMuc2l0ZXNOYW1lLmNvdW50KCk7XG4gICAgY29uc3Qgc2l0ZXNJbmZvOiB7IFtzaXRlTmFtZTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3NDb3VudDsgaSsrKSB7XG4gICAgICBsZXQgc2l0ZU5hbWVUZXh0ID0gYXdhaXQgdGhpcy5zaXRlc05hbWUubnRoKGkpLnRleHRDb250ZW50KCk7XG4gICAgICBsZXQgc2l0ZVJvbGVUZXh0ID0gYXdhaXQgdGhpcy5zaXRlc1JvbGUubnRoKGkpLnRleHRDb250ZW50KCk7XG4gICAgICBzaXRlTmFtZVRleHQgPSBzaXRlTmFtZVRleHQudHJpbSgpO1xuICAgICAgc2l0ZVJvbGVUZXh0ID0gc2l0ZVJvbGVUZXh0LnRyaW0oKTtcbiAgICAgIHNpdGVzSW5mb1tzaXRlTmFtZVRleHRdID0gc2l0ZVJvbGVUZXh0O1xuICAgIH1cbiAgICByZXR1cm4gc2l0ZXNJbmZvO1xuICB9XG5cbiAgYXN5bmMgaGFzTG9ja0ljb24oaXRlbU5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Um93QnlOYW1lKGl0ZW1OYW1lKTtcbiAgICByZXR1cm4gcm93LmxvY2F0b3IoJ2ltZ1tzcmMqPVwibG9ja1wiXScpLmlzVmlzaWJsZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0TG9ja093bmVyKGl0ZW1OYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Um93QnlOYW1lKGl0ZW1OYW1lKTtcbiAgICByZXR1cm4gcm93LmxvY2F0b3IodGhpcy5sb2NrT3duZXIpLmlubmVyVGV4dCgpO1xuICB9XG59XG4iXX0=