@alfresco/adf-content-services 8.1.0-16499147278 → 8.1.0-16877609768

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 (425) hide show
  1. package/bundles/assets/adf-content-services/i18n/de.json +3 -1
  2. package/bundles/assets/adf-content-services/i18n/en.json +3 -1
  3. package/bundles/assets/adf-content-services/i18n/es.json +3 -1
  4. package/bundles/assets/adf-content-services/i18n/fr.json +3 -1
  5. package/bundles/assets/adf-content-services/i18n/it.json +3 -1
  6. package/bundles/assets/adf-content-services/i18n/pl.json +2 -2
  7. package/bundles/assets/adf-content-services/i18n/pt.json +3 -1
  8. package/fesm2022/adf-content-services.mjs +873 -830
  9. package/fesm2022/adf-content-services.mjs.map +1 -1
  10. package/lib/aspect-list/aspect-list.component.d.ts +4 -0
  11. package/lib/aspect-list/interfaces/custom-aspect-paging.interface.d.ts +21 -0
  12. package/lib/aspect-list/public-api.d.ts +1 -0
  13. package/lib/aspect-list/services/aspect-list.service.d.ts +6 -4
  14. package/lib/category/categories-management/categories-management.component.d.ts +4 -0
  15. package/lib/content.module.d.ts +2 -2
  16. package/lib/dialogs/dialog.module.d.ts +6 -5
  17. package/lib/dialogs/download-zip/download-zip.dialog.d.ts +1 -1
  18. package/lib/dialogs/download-zip/download-zip.dialog.module.d.ts +2 -6
  19. package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
  20. package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
  21. package/lib/version-manager/version-list.component.scss +3 -2
  22. package/package.json +3 -5
  23. package/esm2022/adf-content-services.mjs +0 -5
  24. package/esm2022/lib/agent/index.mjs +0 -18
  25. package/esm2022/lib/agent/public-api.mjs +0 -18
  26. package/esm2022/lib/agent/services/agent.service.mjs +0 -60
  27. package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
  28. package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
  29. package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
  30. package/esm2022/lib/api-factories/index.mjs +0 -18
  31. package/esm2022/lib/api-factories/public-api.mjs +0 -19
  32. package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
  33. package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -77
  34. package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -139
  35. package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
  36. package/esm2022/lib/aspect-list/index.mjs +0 -18
  37. package/esm2022/lib/aspect-list/public-api.mjs +0 -24
  38. package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
  39. package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
  40. package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
  41. package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
  42. package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
  43. package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -166
  44. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
  45. package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -65
  46. package/esm2022/lib/breadcrumb/index.mjs +0 -18
  47. package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
  48. package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
  49. package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -308
  50. package/esm2022/lib/category/category.module.mjs +0 -33
  51. package/esm2022/lib/category/index.mjs +0 -18
  52. package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
  53. package/esm2022/lib/category/public-api.mjs +0 -23
  54. package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
  55. package/esm2022/lib/category/services/category.service.mjs +0 -159
  56. package/esm2022/lib/common/events/file.event.mjs +0 -46
  57. package/esm2022/lib/common/index.mjs +0 -18
  58. package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
  59. package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
  60. package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
  61. package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
  62. package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
  63. package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
  64. package/esm2022/lib/common/models/file.model.mjs +0 -53
  65. package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
  66. package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
  67. package/esm2022/lib/common/public-api.mjs +0 -37
  68. package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
  69. package/esm2022/lib/common/services/content.service.mjs +0 -180
  70. package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
  71. package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
  72. package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
  73. package/esm2022/lib/common/services/people-content.service.mjs +0 -138
  74. package/esm2022/lib/common/services/rendition.service.mjs +0 -270
  75. package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
  76. package/esm2022/lib/common/services/sites.service.mjs +0 -243
  77. package/esm2022/lib/common/services/upload.service.mjs +0 -391
  78. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -54
  79. package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -490
  80. package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -128
  81. package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
  82. package/esm2022/lib/content-metadata/index.mjs +0 -18
  83. package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
  84. package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
  85. package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
  86. package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
  87. package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
  88. package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
  89. package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
  90. package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
  91. package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
  92. package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
  93. package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
  94. package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
  95. package/esm2022/lib/content-metadata/public-api.mjs +0 -31
  96. package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
  97. package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
  98. package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
  99. package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
  100. package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
  101. package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
  102. package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
  103. package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
  104. package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
  105. package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
  106. package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
  107. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -617
  108. package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
  109. package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
  110. package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -205
  111. package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
  112. package/esm2022/lib/content-node-selector/index.mjs +0 -18
  113. package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
  114. package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
  115. package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
  116. package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -287
  117. package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
  118. package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
  119. package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
  120. package/esm2022/lib/content-node-share/index.mjs +0 -18
  121. package/esm2022/lib/content-node-share/public-api.mjs +0 -22
  122. package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
  123. package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -57
  124. package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
  125. package/esm2022/lib/content-type/content-type.service.mjs +0 -52
  126. package/esm2022/lib/content-type/index.mjs +0 -20
  127. package/esm2022/lib/content.module.mjs +0 -277
  128. package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -51
  129. package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
  130. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
  131. package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
  132. package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
  133. package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
  134. package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -146
  135. package/esm2022/lib/dialogs/index.mjs +0 -18
  136. package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -224
  137. package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -115
  138. package/esm2022/lib/dialogs/public-api.mjs +0 -25
  139. package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
  140. package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
  141. package/esm2022/lib/directives/content-directive.module.mjs +0 -75
  142. package/esm2022/lib/directives/index.mjs +0 -18
  143. package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
  144. package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
  145. package/esm2022/lib/directives/node-counter.directive.mjs +0 -59
  146. package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
  147. package/esm2022/lib/directives/node-download.directive.mjs +0 -138
  148. package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
  149. package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
  150. package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
  151. package/esm2022/lib/directives/public-api.mjs +0 -28
  152. package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
  153. package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
  154. package/esm2022/lib/document-list/components/document-list.component.mjs +0 -965
  155. package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
  156. package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -42
  157. package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
  158. package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -131
  159. package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -91
  160. package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -86
  161. package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -118
  162. package/esm2022/lib/document-list/components/node.event.mjs +0 -30
  163. package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
  164. package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
  165. package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
  166. package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
  167. package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
  168. package/esm2022/lib/document-list/document-list.module.mjs +0 -75
  169. package/esm2022/lib/document-list/index.mjs +0 -18
  170. package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
  171. package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
  172. package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
  173. package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
  174. package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
  175. package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
  176. package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
  177. package/esm2022/lib/document-list/public-api.mjs +0 -47
  178. package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
  179. package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
  180. package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
  181. package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
  182. package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
  183. package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
  184. package/esm2022/lib/group/index.mjs +0 -18
  185. package/esm2022/lib/group/public-api.mjs +0 -18
  186. package/esm2022/lib/group/services/group.service.mjs +0 -84
  187. package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
  188. package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
  189. package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
  190. package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
  191. package/esm2022/lib/interfaces/index.mjs +0 -18
  192. package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
  193. package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
  194. package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
  195. package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
  196. package/esm2022/lib/interfaces/public-api.mjs +0 -23
  197. package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
  198. package/esm2022/lib/legal-hold/index.mjs +0 -18
  199. package/esm2022/lib/legal-hold/public-api.mjs +0 -18
  200. package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
  201. package/esm2022/lib/material.module.mjs +0 -183
  202. package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
  203. package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
  204. package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
  205. package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
  206. package/esm2022/lib/mock/index.mjs +0 -18
  207. package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
  208. package/esm2022/lib/mock/public-api.mjs +0 -27
  209. package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
  210. package/esm2022/lib/mock/search-query.mock.mjs +0 -40
  211. package/esm2022/lib/mock/search.component.mock.mjs +0 -165
  212. package/esm2022/lib/mock/search.service.mock.mjs +0 -61
  213. package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
  214. package/esm2022/lib/new-version-uploader/index.mjs +0 -18
  215. package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
  216. package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
  217. package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -74
  218. package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
  219. package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
  220. package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
  221. package/esm2022/lib/node-comments/index.mjs +0 -18
  222. package/esm2022/lib/node-comments/node-comments.component.mjs +0 -50
  223. package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
  224. package/esm2022/lib/node-comments/public-api.mjs +0 -20
  225. package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
  226. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
  227. package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -123
  228. package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -102
  229. package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -69
  230. package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
  231. package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
  232. package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
  233. package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -102
  234. package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -87
  235. package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
  236. package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
  237. package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
  238. package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
  239. package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -111
  240. package/esm2022/lib/permission-manager/index.mjs +0 -18
  241. package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
  242. package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
  243. package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
  244. package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
  245. package/esm2022/lib/permission-manager/public-api.mjs +0 -36
  246. package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
  247. package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
  248. package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
  249. package/esm2022/lib/pipes/index.mjs +0 -18
  250. package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
  251. package/esm2022/lib/pipes/public-api.mjs +0 -19
  252. package/esm2022/lib/prediction/index.mjs +0 -18
  253. package/esm2022/lib/prediction/public-api.mjs +0 -18
  254. package/esm2022/lib/prediction/services/index.mjs +0 -18
  255. package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
  256. package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
  257. package/esm2022/lib/search/components/index.mjs +0 -43
  258. package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
  259. package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
  260. package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -158
  261. package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
  262. package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -169
  263. package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -46
  264. package/esm2022/lib/search/components/search-control.component.mjs +0 -180
  265. package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
  266. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
  267. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
  268. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -196
  269. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
  270. package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
  271. package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
  272. package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -223
  273. package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
  274. package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -132
  275. package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
  276. package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -45
  277. package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -80
  278. package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
  279. package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -154
  280. package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
  281. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -104
  282. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -109
  283. package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
  284. package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -63
  285. package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -43
  286. package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -109
  287. package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
  288. package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -122
  289. package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
  290. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
  291. package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -63
  292. package/esm2022/lib/search/components/search-form/index.mjs +0 -18
  293. package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -52
  294. package/esm2022/lib/search/components/search-input/index.mjs +0 -18
  295. package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -108
  296. package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
  297. package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -163
  298. package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
  299. package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -154
  300. package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
  301. package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
  302. package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
  303. package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
  304. package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
  305. package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
  306. package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
  307. package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
  308. package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
  309. package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -145
  310. package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
  311. package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -119
  312. package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
  313. package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
  314. package/esm2022/lib/search/components/search-text/index.mjs +0 -18
  315. package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -134
  316. package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
  317. package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
  318. package/esm2022/lib/search/components/search.component.mjs +0 -152
  319. package/esm2022/lib/search/forms/index.mjs +0 -19
  320. package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
  321. package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
  322. package/esm2022/lib/search/index.mjs +0 -18
  323. package/esm2022/lib/search/mocks/index.mjs +0 -18
  324. package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
  325. package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
  326. package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
  327. package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
  328. package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
  329. package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
  330. package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
  331. package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
  332. package/esm2022/lib/search/models/index.mjs +0 -34
  333. package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
  334. package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
  335. package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
  336. package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
  337. package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
  338. package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
  339. package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
  340. package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
  341. package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
  342. package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
  343. package/esm2022/lib/search/public-api.mjs +0 -24
  344. package/esm2022/lib/search/search-configuration.token.mjs +0 -19
  345. package/esm2022/lib/search/search.module.mjs +0 -192
  346. package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
  347. package/esm2022/lib/search/services/index.mjs +0 -24
  348. package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
  349. package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
  350. package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
  351. package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
  352. package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
  353. package/esm2022/lib/search/services/search.service.mjs +0 -89
  354. package/esm2022/lib/search-ai/index.mjs +0 -18
  355. package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
  356. package/esm2022/lib/search-ai/public-api.mjs +0 -19
  357. package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
  358. package/esm2022/lib/security/index.mjs +0 -18
  359. package/esm2022/lib/security/public-api.mjs +0 -18
  360. package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
  361. package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
  362. package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
  363. package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
  364. package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
  365. package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
  366. package/esm2022/lib/services/index.mjs +0 -18
  367. package/esm2022/lib/services/public-api.mjs +0 -18
  368. package/esm2022/lib/tag/index.mjs +0 -18
  369. package/esm2022/lib/tag/public-api.mjs +0 -24
  370. package/esm2022/lib/tag/services/tag.service.mjs +0 -171
  371. package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -114
  372. package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
  373. package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
  374. package/esm2022/lib/tag/tag.module.mjs +0 -37
  375. package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
  376. package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -370
  377. package/esm2022/lib/testing/content.testing.module.mjs +0 -56
  378. package/esm2022/lib/tree/components/tree.component.mjs +0 -312
  379. package/esm2022/lib/tree/index.mjs +0 -18
  380. package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
  381. package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
  382. package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
  383. package/esm2022/lib/tree/public-api.mjs +0 -23
  384. package/esm2022/lib/tree/services/tree.service.mjs +0 -134
  385. package/esm2022/lib/tree/tree.module.mjs +0 -33
  386. package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -75
  387. package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
  388. package/esm2022/lib/tree-view/index.mjs +0 -18
  389. package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
  390. package/esm2022/lib/tree-view/public-api.mjs +0 -22
  391. package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
  392. package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
  393. package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
  394. package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -190
  395. package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -92
  396. package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
  397. package/esm2022/lib/upload/components/upload-button.component.mjs +0 -133
  398. package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
  399. package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
  400. package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -54
  401. package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
  402. package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
  403. package/esm2022/lib/upload/index.mjs +0 -18
  404. package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
  405. package/esm2022/lib/upload/public-api.mjs +0 -29
  406. package/esm2022/lib/upload/upload.module.mjs +0 -72
  407. package/esm2022/lib/version-compatibility/index.mjs +0 -18
  408. package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
  409. package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
  410. package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
  411. package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
  412. package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
  413. package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
  414. package/esm2022/lib/version-manager/index.mjs +0 -18
  415. package/esm2022/lib/version-manager/public-api.mjs +0 -23
  416. package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -42
  417. package/esm2022/lib/version-manager/version-list.component.mjs +0 -215
  418. package/esm2022/lib/version-manager/version-manager.component.mjs +0 -145
  419. package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
  420. package/esm2022/lib/version-manager/version-upload.component.mjs +0 -154
  421. package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
  422. package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -408
  423. package/esm2022/lib/viewer/index.mjs +0 -18
  424. package/esm2022/lib/viewer/public-api.mjs +0 -19
  425. package/esm2022/public-api.mjs +0 -56
@@ -1,270 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { Injectable } from '@angular/core';
18
- import { ContentApi, RenditionsApi, VersionsApi } from '@alfresco/js-api';
19
- import { TranslationService, ViewUtilService } from '@alfresco/adf-core';
20
- import { AlfrescoApiService } from '../../services/alfresco-api.service';
21
- import * as i0 from "@angular/core";
22
- import * as i1 from "../../services/alfresco-api.service";
23
- import * as i2 from "@alfresco/adf-core";
24
- export class RenditionService {
25
- static { this.TARGET = '_new'; }
26
- /**
27
- * Content groups based on categorization of files that can be viewed in the web browser. This
28
- * implementation or grouping is tied to the definition the ng component: ViewerRenderComponent
29
- */
30
- static { this.ContentGroup = {
31
- IMAGE: 'image',
32
- MEDIA: 'media',
33
- PDF: 'pdf',
34
- TEXT: 'text'
35
- }; }
36
- /**
37
- * The name of the rendition with the media subtitles in the supported format
38
- */
39
- static { this.SUBTITLES_RENDITION_NAME = 'webvtt'; }
40
- get renditionsApi() {
41
- this._renditionsApi = this._renditionsApi ?? new RenditionsApi(this.apiService.getInstance());
42
- return this._renditionsApi;
43
- }
44
- get contentApi() {
45
- this._contentApi = this._contentApi ?? new ContentApi(this.apiService.getInstance());
46
- return this._contentApi;
47
- }
48
- get versionsApi() {
49
- this._versionsApi = this._versionsApi ?? new VersionsApi(this.apiService.getInstance());
50
- return this._versionsApi;
51
- }
52
- constructor(apiService, translateService, viewUtilsService) {
53
- this.apiService = apiService;
54
- this.translateService = translateService;
55
- this.viewUtilsService = viewUtilsService;
56
- /**
57
- * Based on ViewerRenderComponent Implementation, this value is used to determine how many times we try
58
- * to get the rendition of a file for preview, or printing.
59
- */
60
- this.maxRetries = 5;
61
- /**
62
- * Timeout used for setInterval.
63
- */
64
- this.TRY_TIMEOUT = 10000;
65
- this.DEFAULT_RENDITION = 'imgpreview';
66
- }
67
- getRenditionUrl(nodeId, type, renditionExists) {
68
- return renditionExists && type !== RenditionService.ContentGroup.IMAGE
69
- ? this.contentApi.getRenditionUrl(nodeId, RenditionService.ContentGroup.PDF)
70
- : this.contentApi.getContentUrl(nodeId, false);
71
- }
72
- async waitRendition(nodeId, renditionId, retries) {
73
- if (this.maxRetries > retries) {
74
- const rendition = await this.renditionsApi.getRendition(nodeId, renditionId);
75
- const status = rendition.entry.status.toString();
76
- if (status === 'CREATED') {
77
- return rendition;
78
- }
79
- else {
80
- retries += 1;
81
- await this.wait(1000);
82
- return this.waitRendition(nodeId, renditionId, retries);
83
- }
84
- }
85
- return Promise.resolve(null);
86
- }
87
- wait(ms) {
88
- return new Promise((resolve) => setTimeout(resolve, ms));
89
- }
90
- async getRendition(nodeId, renditionId) {
91
- const renditionPaging = await this.renditionsApi.listRenditions(nodeId);
92
- let rendition = renditionPaging.list.entries.find((renditionEntry) => renditionEntry.entry.id.toLowerCase() === renditionId);
93
- if (rendition) {
94
- const status = rendition.entry.status.toString();
95
- if (status === 'NOT_CREATED') {
96
- try {
97
- await this.renditionsApi.createRendition(nodeId, { id: renditionId });
98
- rendition = await this.waitRendition(nodeId, renditionId, 0);
99
- }
100
- catch {
101
- return null;
102
- }
103
- }
104
- }
105
- return new Promise((resolve) => resolve(rendition));
106
- }
107
- async getNodeRendition(nodeId, versionId) {
108
- try {
109
- return versionId ? await this.resolveNodeRendition(nodeId, 'pdf', versionId) : await this.resolveNodeRendition(nodeId, 'pdf');
110
- }
111
- catch {
112
- return null;
113
- }
114
- }
115
- async resolveNodeRendition(nodeId, renditionId, versionId) {
116
- renditionId = renditionId.toLowerCase();
117
- const supportedRendition = versionId
118
- ? await this.versionsApi.listVersionRenditions(nodeId, versionId)
119
- : await this.renditionsApi.listRenditions(nodeId);
120
- let rendition = this.findRenditionById(supportedRendition, renditionId);
121
- if (!rendition) {
122
- renditionId = this.DEFAULT_RENDITION;
123
- rendition = this.findRenditionById(supportedRendition, this.DEFAULT_RENDITION);
124
- }
125
- if (rendition) {
126
- const status = rendition.entry.status.toString();
127
- const mimeType = rendition.entry.content.mimeType;
128
- if (status === 'NOT_CREATED') {
129
- return { url: await this.requestCreateRendition(nodeId, renditionId, versionId), mimeType };
130
- }
131
- else {
132
- return { url: await this.handleNodeRendition(nodeId, renditionId, versionId), mimeType };
133
- }
134
- }
135
- return null;
136
- }
137
- async requestCreateRendition(nodeId, renditionId, versionId) {
138
- try {
139
- if (versionId) {
140
- await this.versionsApi.createVersionRendition(nodeId, versionId, { id: renditionId });
141
- }
142
- else {
143
- await this.renditionsApi.createRendition(nodeId, { id: renditionId });
144
- }
145
- try {
146
- return versionId ? await this.waitNodeRendition(nodeId, renditionId, versionId) : await this.waitNodeRendition(nodeId, renditionId);
147
- }
148
- catch (e) {
149
- return null;
150
- }
151
- }
152
- catch {
153
- return null;
154
- }
155
- }
156
- findRenditionById(supportedRendition, renditionId) {
157
- return supportedRendition.list.entries.find((renditionEntry) => renditionEntry.entry.id.toLowerCase() === renditionId);
158
- }
159
- async waitNodeRendition(nodeId, renditionId, versionId) {
160
- let currentRetry = 0;
161
- return new Promise((resolve, reject) => {
162
- const intervalId = setInterval(() => {
163
- currentRetry++;
164
- if (this.maxRetries >= currentRetry) {
165
- if (versionId) {
166
- this.versionsApi.getVersionRendition(nodeId, versionId, renditionId).then((rendition) => {
167
- const status = rendition.entry.status.toString();
168
- if (status === 'CREATED') {
169
- clearInterval(intervalId);
170
- return resolve(this.handleNodeRendition(nodeId, rendition.entry.content.mimeType, versionId));
171
- }
172
- }, () => reject(new Error('Error geting version rendition')));
173
- }
174
- else {
175
- this.renditionsApi.getRendition(nodeId, renditionId).then((rendition) => {
176
- const status = rendition.entry.status.toString();
177
- if (status === 'CREATED') {
178
- clearInterval(intervalId);
179
- return resolve(this.handleNodeRendition(nodeId, renditionId, versionId));
180
- }
181
- }, () => reject(new Error('Error getting rendition')));
182
- }
183
- }
184
- else {
185
- clearInterval(intervalId);
186
- return reject(new Error('Error getting rendition'));
187
- }
188
- }, this.TRY_TIMEOUT);
189
- });
190
- }
191
- async handleNodeRendition(nodeId, renditionId, versionId) {
192
- return versionId
193
- ? this.contentApi.getVersionRenditionUrl(nodeId, versionId, renditionId)
194
- : this.contentApi.getRenditionUrl(nodeId, renditionId);
195
- }
196
- async generateMediaTracksRendition(nodeId) {
197
- return this.isRenditionAvailable(nodeId, RenditionService.SUBTITLES_RENDITION_NAME)
198
- .then((value) => {
199
- const tracks = [];
200
- if (value) {
201
- tracks.push({
202
- kind: 'subtitles',
203
- src: this.contentApi.getRenditionUrl(nodeId, RenditionService.SUBTITLES_RENDITION_NAME),
204
- label: this.translateService.instant('ADF_VIEWER.SUBTITLES')
205
- });
206
- }
207
- return tracks;
208
- })
209
- .catch(() => []);
210
- }
211
- async isRenditionAvailable(nodeId, renditionId) {
212
- const renditionPaging = await this.renditionsApi.listRenditions(nodeId);
213
- const rendition = renditionPaging.list.entries.find((renditionEntry) => renditionEntry.entry.id.toLowerCase() === renditionId);
214
- return rendition?.entry?.status?.toString() === 'CREATED' || false;
215
- }
216
- /**
217
- * This method takes a url to trigger the print dialog against, and the type of artifact that it
218
- * is.
219
- * This URL should be one that can be rendered in the browser, for example PDF, Image, or Text
220
- *
221
- * @param url url to print
222
- * @param type type of the rendition
223
- */
224
- printFile(url, type) {
225
- const pwa = window.open(url, RenditionService.TARGET);
226
- if (pwa) {
227
- pwa.onload = () => {
228
- pwa.print();
229
- if (type === RenditionService.ContentGroup.IMAGE) {
230
- // Because of the way chrome focus and close image window vs. pdf preview window
231
- setTimeout(() => {
232
- pwa.close();
233
- }, 500);
234
- }
235
- };
236
- }
237
- }
238
- /**
239
- * Launch the File Print dialog from anywhere other than the preview service, which resolves the
240
- * rendition of the object that can be printed from a web browser.
241
- * These are: images, PDF files, or PDF rendition of files.
242
- * We also force PDF rendition for TEXT type objects, otherwise the default URL is to download.
243
- * TODO there are different TEXT type objects, (HTML, plaintext, xml, etc. we should determine how these are handled)
244
- *
245
- * @param objectId object it
246
- * @param mimeType mime type
247
- */
248
- printFileGeneric(objectId, mimeType) {
249
- const nodeId = objectId;
250
- const type = this.viewUtilsService.getViewerTypeByMimeType(mimeType);
251
- this.getRendition(nodeId, RenditionService.ContentGroup.PDF)
252
- .then((value) => {
253
- const url = this.getRenditionUrl(nodeId, type, !!value);
254
- const printType = type === RenditionService.ContentGroup.PDF || type === RenditionService.ContentGroup.TEXT
255
- ? RenditionService.ContentGroup.PDF
256
- : type;
257
- this.printFile(url, printType);
258
- })
259
- .catch(() => { });
260
- }
261
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RenditionService, deps: [{ token: i1.AlfrescoApiService }, { token: i2.TranslationService }, { token: i2.ViewUtilService }], target: i0.ɵɵFactoryTarget.Injectable }); }
262
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RenditionService, providedIn: 'root' }); }
263
- }
264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RenditionService, decorators: [{
265
- type: Injectable,
266
- args: [{
267
- providedIn: 'root'
268
- }]
269
- }], ctorParameters: () => [{ type: i1.AlfrescoApiService }, { type: i2.TranslationService }, { type: i2.ViewUtilService }] });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGl0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2NvbW1vbi9zZXJ2aWNlcy9yZW5kaXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQW1DLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRyxPQUFPLEVBQVMsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7QUFLekUsTUFBTSxPQUFPLGdCQUFnQjthQUNsQixXQUFNLEdBQUcsTUFBTSxBQUFULENBQVU7SUFFdkI7OztPQUdHO2FBQ0ksaUJBQVksR0FBRztRQUNsQixLQUFLLEVBQUUsT0FBTztRQUNkLEtBQUssRUFBRSxPQUFPO1FBQ2QsR0FBRyxFQUFFLEtBQUs7UUFDVixJQUFJLEVBQUUsTUFBTTtLQUNmLEFBTGtCLENBS2pCO0lBRUY7O09BRUc7YUFDSSw2QkFBd0IsR0FBRyxRQUFRLEFBQVgsQ0FBWTtJQWMzQyxJQUFJLGFBQWE7UUFDYixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBR0QsSUFBSSxVQUFVO1FBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFF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QUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQzthQUN2RCxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEUsTUFBTSxTQUFTLEdBQ1gsSUFBSSxLQUFLLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksSUFBSSxLQUFLLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJO2dCQUNyRixDQUFDLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUc7Z0JBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQzsrR0FqUlEsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGYixNQUFNOzs0RkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50QXBpLCBSZW5kaXRpb25FbnRyeSwgUmVuZGl0aW9uUGFnaW5nLCBSZW5kaXRpb25zQXBpLCBWZXJzaW9uc0FwaSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgVHJhY2ssIFRyYW5zbGF0aW9uU2VydmljZSwgVmlld1V0aWxTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FsZnJlc2NvLWFwaS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSZW5kaXRpb25TZXJ2aWNlIHtcbiAgICBzdGF0aWMgVEFSR0VUID0gJ19uZXcnO1xuXG4gICAgLyoqXG4gICAgICogQ29udGVudCBncm91cHMgYmFzZWQgb24gY2F0ZWdvcml6YXRpb24gb2YgZmlsZXMgdGhhdCBjYW4gYmUgdmlld2VkIGluIHRoZSB3ZWIgYnJvd3Nlci4gVGhpc1xuICAgICAqIGltcGxlbWVudGF0aW9uIG9yIGdyb3VwaW5nIGlzIHRpZWQgdG8gdGhlIGRlZmluaXRpb24gdGhlIG5nIGNvbXBvbmVudDogVmlld2VyUmVuZGVyQ29tcG9uZW50XG4gICAgICovXG4gICAgc3RhdGljIENvbnRlbnRHcm91cCA9IHtcbiAgICAgICAgSU1BR0U6ICdpbWFnZScsXG4gICAgICAgIE1FRElBOiAnbWVkaWEnLFxuICAgICAgICBQREY6ICdwZGYnLFxuICAgICAgICBURVhUOiAndGV4dCdcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIHJlbmRpdGlvbiB3aXRoIHRoZSBtZWRpYSBzdWJ0aXRsZXMgaW4gdGhlIHN1cHBvcnRlZCBmb3JtYXRcbiAgICAgKi9cbiAgICBzdGF0aWMgU1VCVElUTEVTX1JFTkRJVElPTl9OQU1FID0gJ3dlYnZ0dCc7XG5cbiAgICAvKipcbiAgICAgKiBCYXNlZCBvbiBWaWV3ZXJSZW5kZXJDb21wb25lbnQgSW1wbGVtZW50YXRpb24sIHRoaXMgdmFsdWUgaXMgdXNlZCB0byBkZXRlcm1pbmUgaG93IG1hbnkgdGltZXMgd2UgdHJ5XG4gICAgICogdG8gZ2V0IHRoZSByZW5kaXRpb24gb2YgYSBmaWxlIGZvciBwcmV2aWV3LCBvciBwcmludGluZy5cbiAgICAgKi9cbiAgICBtYXhSZXRyaWVzID0gNTtcblxuICAgIC8qKlxuICAgICAqIFRpbWVvdXQgdXNlZCBmb3Igc2V0SW50ZXJ2YWwuXG4gICAgICovXG4gICAgcHJpdmF0ZSBUUllfVElNRU9VVDogbnVtYmVyID0gMTAwMDA7XG5cbiAgICBfcmVuZGl0aW9uc0FwaTogUmVuZGl0aW9uc0FwaTtcbiAgICBnZXQgcmVuZGl0aW9uc0FwaSgpOiBSZW5kaXRpb25zQXBpIHtcbiAgICAgICAgdGhpcy5fcmVuZGl0aW9uc0FwaSA9IHRoaXMuX3JlbmRpdGlvbnNBcGkgPz8gbmV3IFJlbmRpdGlvbnNBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVuZGl0aW9uc0FwaTtcbiAgICB9XG5cbiAgICBfY29udGVudEFwaTogQ29udGVudEFwaTtcbiAgICBnZXQgY29udGVudEFwaSgpOiBDb250ZW50QXBpIHtcbiAgICAgICAgdGhpcy5fY29udGVudEFwaSA9IHRoaXMuX2NvbnRlbnRBcGkgPz8gbmV3IENvbnRlbnRBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudEFwaTtcbiAgICB9XG5cbiAgICBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICAgIHByaXZhdGUgREVGQVVMVF9SRU5ESVRJT046IHN0cmluZyA9ICdpbWdwcmV2aWV3JztcblxuICAgIGdldCB2ZXJzaW9uc0FwaSgpOiBWZXJzaW9uc0FwaSB7XG4gICAgICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb25zQXBpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogQWxmcmVzY29BcGlTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSwgcHJpdmF0ZSB2aWV3VXRpbHNTZXJ2aWNlOiBWaWV3VXRpbFNlcnZpY2UpIHt9XG5cbiAgICBnZXRSZW5kaXRpb25Vcmwobm9kZUlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgcmVuZGl0aW9uRXhpc3RzOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHJlbmRpdGlvbkV4aXN0cyAmJiB0eXBlICE9PSBSZW5kaXRpb25TZXJ2aWNlLkNvbnRlbnRHcm91cC5JTUFHRVxuICAgICAgICAgICAgPyB0aGlzLmNvbnRlbnRBcGkuZ2V0UmVuZGl0aW9uVXJsKG5vZGVJZCwgUmVuZGl0aW9uU2VydmljZS5Db250ZW50R3JvdXAuUERGKVxuICAgICAgICAgICAgOiB0aGlzLmNvbnRlbnRBcGkuZ2V0Q29udGVudFVybChub2RlSWQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHdhaXRSZW5kaXRpb24obm9kZUlkOiBzdHJpbmcsIHJlbmRpdGlvbklkOiBzdHJpbmcsIHJldHJpZXM6IG51bWJlcik6IFByb21pc2U8UmVuZGl0aW9uRW50cnk+IHtcbiAgICAgICAgaWYgKHRoaXMubWF4UmV0cmllcyA+IHJldHJpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbmRpdGlvbiA9IGF3YWl0IHRoaXMucmVuZGl0aW9uc0FwaS5nZXRSZW5kaXRpb24obm9kZUlkLCByZW5kaXRpb25JZCk7XG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSByZW5kaXRpb24uZW50cnkuc3RhdHVzLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdDUkVBVEVEJykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZW5kaXRpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHJpZXMgKz0gMTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLndhaXQoMTAwMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFJlbmRpdGlvbihub2RlSWQsIHJlbmRpdGlvbklkLCByZXRyaWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB3YWl0KG1zOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRSZW5kaXRpb24obm9kZUlkOiBzdHJpbmcsIHJlbmRpdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJlbmRpdGlvbkVudHJ5PiB7XG4gICAgICAgIGNvbnN0IHJlbmRpdGlvblBhZ2luZzogUmVuZGl0aW9uUGFnaW5nID0gYXdhaXQgdGhpcy5yZW5kaXRpb25zQXBpLmxpc3RSZW5kaXRpb25zKG5vZGVJZCk7XG4gICAgICAgIGxldCByZW5kaXRpb246IFJlbmRpdGlvbkVudHJ5ID0gcmVuZGl0aW9uUGFnaW5nLmxpc3QuZW50cmllcy5maW5kKFxuICAgICAgICAgICAgKHJlbmRpdGlvbkVudHJ5OiBSZW5kaXRpb25FbnRyeSkgPT4gcmVuZGl0aW9uRW50cnkuZW50cnkuaWQudG9Mb3dlckNhc2UoKSA9PT0gcmVuZGl0aW9uSWRcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAocmVuZGl0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSByZW5kaXRpb24uZW50cnkuc3RhdHVzLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdOT1RfQ1JFQVRFRCcpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbmRpdGlvbnNBcGkuY3JlYXRlUmVuZGl0aW9uKG5vZGVJZCwgeyBpZDogcmVuZGl0aW9uSWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRpdGlvbiA9IGF3YWl0IHRoaXMud2FpdFJlbmRpdGlvbihub2RlSWQsIHJlbmRpdGlvbklkLCAwKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxSZW5kaXRpb25FbnRyeT4oKHJlc29sdmUpID0+IHJlc29sdmUocmVuZGl0aW9uKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0Tm9kZVJlbmRpdGlvbihub2RlSWQ6IHN0cmluZywgdmVyc2lvbklkPzogc3RyaW5nKTogUHJvbWlzZTx7IHVybDogc3RyaW5nOyBtaW1lVHlwZTogc3RyaW5nIH0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB2ZXJzaW9uSWQgPyBhd2FpdCB0aGlzLnJlc29sdmVOb2RlUmVuZGl0aW9uKG5vZGVJZCwgJ3BkZicsIHZlcnNpb25JZCkgOiBhd2FpdCB0aGlzLnJlc29sdmVOb2RlUmVuZGl0aW9uKG5vZGVJZCwgJ3BkZicpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXNvbHZlTm9kZVJlbmRpdGlvbihub2RlSWQ6IHN0cmluZywgcmVuZGl0aW9uSWQ6IHN0cmluZywgdmVyc2lvbklkPzogc3RyaW5nKTogUHJvbWlzZTx7IHVybDogc3RyaW5nOyBtaW1lVHlwZTogc3RyaW5nIH0+IHtcbiAgICAgICAgcmVuZGl0aW9uSWQgPSByZW5kaXRpb25JZC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGNvbnN0IHN1cHBvcnRlZFJlbmRpdGlvbjogUmVuZGl0aW9uUGFnaW5nID0gdmVyc2lvbklkXG4gICAgICAgICAgICA/IGF3YWl0IHRoaXMudmVyc2lvbnNBcGkubGlzdFZlcnNpb25SZW5kaXRpb25zKG5vZGVJZCwgdmVyc2lvbklkKVxuICAgICAgICAgICAgOiBhd2FpdCB0aGlzLnJlbmRpdGlvbnNBcGkubGlzdFJlbmRpdGlvbnMobm9kZUlkKTtcblxuICAgICAgICBsZXQgcmVuZGl0aW9uID0gdGhpcy5maW5kUmVuZGl0aW9uQnlJZChzdXBwb3J0ZWRSZW5kaXRpb24sIHJlbmRpdGlvbklkKTtcbiAgICAgICAgaWYgKCFyZW5kaXRpb24pIHtcbiAgICAgICAgICAgIHJlbmRpdGlvbklkID0gdGhpcy5ERUZBVUxUX1JFTkRJVElPTjtcbiAgICAgICAgICAgIHJlbmRpdGlvbiA9IHRoaXMuZmluZFJlbmRpdGlvbkJ5SWQoc3VwcG9ydGVkUmVuZGl0aW9uLCB0aGlzLkRFRkFVTFRfUkVORElUSU9OKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZW5kaXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1czogc3RyaW5nID0gcmVuZGl0aW9uLmVudHJ5LnN0YXR1cy50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgbWltZVR5cGU6IHN0cmluZyA9IHJlbmRpdGlvbi5lbnRyeS5jb250ZW50Lm1pbWVUeXBlO1xuXG4gICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnTk9UX0NSRUFURUQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdXJsOiBhd2FpdCB0aGlzLnJlcXVlc3RDcmVhdGVSZW5kaXRpb24obm9kZUlkLCByZW5kaXRpb25JZCwgdmVyc2lvbklkKSwgbWltZVR5cGUgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdXJsOiBhd2FpdCB0aGlzLmhhbmRsZU5vZGVSZW5kaXRpb24obm9kZUlkLCByZW5kaXRpb25JZCwgdmVyc2lvbklkKSwgbWltZVR5cGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVxdWVzdENyZWF0ZVJlbmRpdGlvbihub2RlSWQ6IHN0cmluZywgcmVuZGl0aW9uSWQ6IHN0cmluZywgdmVyc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHZlcnNpb25JZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudmVyc2lvbnNBcGkuY3JlYXRlVmVyc2lvblJlbmRpdGlvbihub2RlSWQsIHZlcnNpb25JZCwgeyBpZDogcmVuZGl0aW9uSWQgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVuZGl0aW9uc0FwaS5jcmVhdGVSZW5kaXRpb24obm9kZUlkLCB7IGlkOiByZW5kaXRpb25JZCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZlcnNpb25JZCA/IGF3YWl0IHRoaXMud2FpdE5vZGVSZW5kaXRpb24obm9kZUlkLCByZW5kaXRpb25JZCwgdmVyc2lvbklkKSA6IGF3YWl0IHRoaXMud2FpdE5vZGVSZW5kaXRpb24obm9kZUlkLCByZW5kaXRpb25JZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRSZW5kaXRpb25CeUlkKHN1cHBvcnRlZFJlbmRpdGlvbjogUmVuZGl0aW9uUGFnaW5nLCByZW5kaXRpb25JZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBzdXBwb3J0ZWRSZW5kaXRpb24ubGlzdC5lbnRyaWVzLmZpbmQoKHJlbmRpdGlvbkVudHJ5OiBSZW5kaXRpb25FbnRyeSkgPT4gcmVuZGl0aW9uRW50cnkuZW50cnkuaWQudG9Mb3dlckNhc2UoKSA9PT0gcmVuZGl0aW9uSWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgd2FpdE5vZGVSZW5kaXRpb24obm9kZUlkOiBzdHJpbmcsIHJlbmRpdGlvbklkOiBzdHJpbmcsIHZlcnNpb25JZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGxldCBjdXJyZW50UmV0cnk6IG51bWJlciA9IDA7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY3VycmVudFJldHJ5Kys7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4UmV0cmllcyA+PSBjdXJyZW50UmV0cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb25JZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJzaW9uc0FwaS5nZXRWZXJzaW9uUmVuZGl0aW9uKG5vZGVJZCwgdmVyc2lvbklkLCByZW5kaXRpb25JZCkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVuZGl0aW9uOiBSZW5kaXRpb25FbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXM6IHN0cmluZyA9IHJlbmRpdGlvbi5lbnRyeS5zdGF0dXMudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnQ1JFQVRFRCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZU5vZGVSZW5kaXRpb24obm9kZUlkLCByZW5kaXRpb24uZW50cnkuY29udGVudC5taW1lVHlwZSwgdmVyc2lvbklkKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHJlamVjdChuZXcgRXJyb3IoJ0Vycm9yIGdldGluZyB2ZXJzaW9uIHJlbmRpdGlvbicpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGl0aW9uc0FwaS5nZXRSZW5kaXRpb24obm9kZUlkLCByZW5kaXRpb25JZCkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVuZGl0aW9uOiBSZW5kaXRpb25FbnRyeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXM6IHN0cmluZyA9IHJlbmRpdGlvbi5lbnRyeS5zdGF0dXMudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09PSAnQ1JFQVRFRCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZU5vZGVSZW5kaXRpb24obm9kZUlkLCByZW5kaXRpb25JZCwgdmVyc2lvbklkKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHJlamVjdChuZXcgRXJyb3IoJ0Vycm9yIGdldHRpbmcgcmVuZGl0aW9uJykpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ0Vycm9yIGdldHRpbmcgcmVuZGl0aW9uJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRoaXMuVFJZX1RJTUVPVVQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGhhbmRsZU5vZGVSZW5kaXRpb24obm9kZUlkOiBzdHJpbmcsIHJlbmRpdGlvbklkOiBzdHJpbmcsIHZlcnNpb25JZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB2ZXJzaW9uSWRcbiAgICAgICAgICAgID8gdGhpcy5jb250ZW50QXBpLmdldFZlcnNpb25SZW5kaXRpb25Vcmwobm9kZUlkLCB2ZXJzaW9uSWQsIHJlbmRpdGlvbklkKVxuICAgICAgICAgICAgOiB0aGlzLmNvbnRlbnRBcGkuZ2V0UmVuZGl0aW9uVXJsKG5vZGVJZCwgcmVuZGl0aW9uSWQpO1xuICAgIH1cblxuICAgIGFzeW5jIGdlbmVyYXRlTWVkaWFUcmFja3NSZW5kaXRpb24obm9kZUlkOiBzdHJpbmcpOiBQcm9taXNlPFRyYWNrW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSZW5kaXRpb25BdmFpbGFibGUobm9kZUlkLCBSZW5kaXRpb25TZXJ2aWNlLlNVQlRJVExFU19SRU5ESVRJT05fTkFNRSlcbiAgICAgICAgICAgIC50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyYWNrcyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0cmFja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnc3VidGl0bGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5jb250ZW50QXBpLmdldFJlbmRpdGlvblVybChub2RlSWQsIFJlbmRpdGlvblNlcnZpY2UuU1VCVElUTEVTX1JFTkRJVElPTl9OQU1FKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQURGX1ZJRVdFUi5TVUJUSVRMRVMnKVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYWNrcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4gW10pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaXNSZW5kaXRpb25BdmFpbGFibGUobm9kZUlkOiBzdHJpbmcsIHJlbmRpdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgcmVuZGl0aW9uUGFnaW5nOiBSZW5kaXRpb25QYWdpbmcgPSBhd2FpdCB0aGlzLnJlbmRpdGlvbnNBcGkubGlzdFJlbmRpdGlvbnMobm9kZUlkKTtcbiAgICAgICAgY29uc3QgcmVuZGl0aW9uOiBSZW5kaXRpb25FbnRyeSA9IHJlbmRpdGlvblBhZ2luZy5saXN0LmVudHJpZXMuZmluZChcbiAgICAgICAgICAgIChyZW5kaXRpb25FbnRyeTogUmVuZGl0aW9uRW50cnkpID0+IHJlbmRpdGlvbkVudHJ5LmVudHJ5LmlkLnRvTG93ZXJDYXNlKCkgPT09IHJlbmRpdGlvbklkXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHJlbmRpdGlvbj8uZW50cnk/LnN0YXR1cz8udG9TdHJpbmcoKSA9PT0gJ0NSRUFURUQnIHx8IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHRha2VzIGEgdXJsIHRvIHRyaWdnZXIgdGhlIHByaW50IGRpYWxvZyBhZ2FpbnN0LCBhbmQgdGhlIHR5cGUgb2YgYXJ0aWZhY3QgdGhhdCBpdFxuICAgICAqIGlzLlxuICAgICAqIFRoaXMgVVJMIHNob3VsZCBiZSBvbmUgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW4gdGhlIGJyb3dzZXIsIGZvciBleGFtcGxlIFBERiwgSW1hZ2UsIG9yIFRleHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cmwgdXJsIHRvIHByaW50XG4gICAgICogQHBhcmFtIHR5cGUgdHlwZSBvZiB0aGUgcmVuZGl0aW9uXG4gICAgICovXG4gICAgcHJpbnRGaWxlKHVybDogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHdhID0gd2luZG93Lm9wZW4odXJsLCBSZW5kaXRpb25TZXJ2aWNlLlRBUkdFVCk7XG4gICAgICAgIGlmIChwd2EpIHtcbiAgICAgICAgICAgIHB3YS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcHdhLnByaW50KCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFJlbmRpdGlvblNlcnZpY2UuQ29udGVudEdyb3VwLklNQUdFKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugb2YgdGhlIHdheSBjaHJvbWUgZm9jdXMgYW5kIGNsb3NlIGltYWdlIHdpbmRvdyB2cy4gcGRmIHByZXZpZXcgd2luZG93XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHdhLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExhdW5jaCB0aGUgRmlsZSBQcmludCBkaWFsb2cgZnJvbSBhbnl3aGVyZSBvdGhlciB0aGFuIHRoZSBwcmV2aWV3IHNlcnZpY2UsIHdoaWNoIHJlc29sdmVzIHRoZVxuICAgICAqIHJlbmRpdGlvbiBvZiB0aGUgb2JqZWN0IHRoYXQgY2FuIGJlIHByaW50ZWQgZnJvbSBhIHdlYiBicm93c2VyLlxuICAgICAqIFRoZXNlIGFyZTogaW1hZ2VzLCBQREYgZmlsZXMsIG9yIFBERiByZW5kaXRpb24gb2YgZmlsZXMuXG4gICAgICogV2UgYWxzbyBmb3JjZSBQREYgcmVuZGl0aW9uIGZvciBURVhUIHR5cGUgb2JqZWN0cywgb3RoZXJ3aXNlIHRoZSBkZWZhdWx0IFVSTCBpcyB0byBkb3dubG9hZC5cbiAgICAgKiBUT0RPIHRoZXJlIGFyZSBkaWZmZXJlbnQgVEVYVCB0eXBlIG9iamVjdHMsIChIVE1MLCBwbGFpbnRleHQsIHhtbCwgZXRjLiB3ZSBzaG91bGQgZGV0ZXJtaW5lIGhvdyB0aGVzZSBhcmUgaGFuZGxlZClcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvYmplY3RJZCBvYmplY3QgaXRcbiAgICAgKiBAcGFyYW0gbWltZVR5cGUgbWltZSB0eXBlXG4gICAgICovXG4gICAgcHJpbnRGaWxlR2VuZXJpYyhvYmplY3RJZDogc3RyaW5nLCBtaW1lVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IG9iamVjdElkO1xuICAgICAgICBjb25zdCB0eXBlOiBzdHJpbmcgPSB0aGlzLnZpZXdVdGlsc1NlcnZpY2UuZ2V0Vmlld2VyVHlwZUJ5TWltZVR5cGUobWltZVR5cGUpO1xuXG4gICAgICAgIHRoaXMuZ2V0UmVuZGl0aW9uKG5vZGVJZCwgUmVuZGl0aW9uU2VydmljZS5Db250ZW50R3JvdXAuUERGKVxuICAgICAgICAgICAgLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsOiBzdHJpbmcgPSB0aGlzLmdldFJlbmRpdGlvblVybChub2RlSWQsIHR5cGUsICEhdmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByaW50VHlwZSA9XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09IFJlbmRpdGlvblNlcnZpY2UuQ29udGVudEdyb3VwLlBERiB8fCB0eXBlID09PSBSZW5kaXRpb25TZXJ2aWNlLkNvbnRlbnRHcm91cC5URVhUXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFJlbmRpdGlvblNlcnZpY2UuQ29udGVudEdyb3VwLlBERlxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0eXBlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJpbnRGaWxlKHVybCwgcHJpbnRUeXBlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,206 +0,0 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { NodesApi, PreferencesApi } from '@alfresco/js-api';
18
- import { inject, Injectable, InjectionToken } from '@angular/core';
19
- import { of, from, ReplaySubject, throwError } from 'rxjs';
20
- import { catchError, concatMap, first, map, switchMap, take, tap } from 'rxjs/operators';
21
- import { AlfrescoApiService } from '../../services/alfresco-api.service';
22
- import { AuthenticationService } from '@alfresco/adf-core';
23
- import * as i0 from "@angular/core";
24
- import * as i1 from "../../services/alfresco-api.service";
25
- import * as i2 from "@alfresco/adf-core";
26
- export const SAVED_SEARCHES_SERVICE_PREFERENCES = new InjectionToken('SAVED_SEARCHES_SERVICE_PREFERENCES');
27
- export class SavedSearchesService {
28
- get nodesApi() {
29
- this._nodesApi = this._nodesApi ?? new NodesApi(this.apiService.getInstance());
30
- return this._nodesApi;
31
- }
32
- get preferencesApi() {
33
- if (this.preferencesService) {
34
- this._preferencesApi = this.preferencesService;
35
- return this._preferencesApi;
36
- }
37
- this._preferencesApi = this._preferencesApi ?? new PreferencesApi(this.apiService.getInstance());
38
- return this._preferencesApi;
39
- }
40
- constructor(apiService, authService) {
41
- this.apiService = apiService;
42
- this.authService = authService;
43
- this.preferencesService = inject(SAVED_SEARCHES_SERVICE_PREFERENCES, { optional: true });
44
- this.savedSearches$ = new ReplaySubject(1);
45
- }
46
- init() {
47
- this.fetchSavedSearches();
48
- }
49
- /**
50
- * Gets a list of saved searches by user.
51
- *
52
- * @returns SavedSearch list containing user saved searches
53
- */
54
- getSavedSearches() {
55
- const savedSearchesMigrated = localStorage.getItem(this.getLocalStorageKey()) ?? '';
56
- if (savedSearchesMigrated === 'true') {
57
- return from(this.preferencesApi.getPreference('-me-', 'saved-searches')).pipe(map((preference) => JSON.parse(preference.entry.value)), catchError(() => of([])));
58
- }
59
- else {
60
- return this.getSavedSearchesNodeId().pipe(take(1), concatMap(() => {
61
- if (this.savedSearchFileNodeId !== '') {
62
- return this.migrateSavedSearches();
63
- }
64
- else {
65
- return from(this.preferencesApi.getPreference('-me-', 'saved-searches')).pipe(map((preference) => JSON.parse(preference.entry.value)), catchError(() => of([])));
66
- }
67
- }));
68
- }
69
- }
70
- /**
71
- * Saves a new search into state and updates state. If there are less than 5 searches,
72
- * it will be pushed on first place, if more it will be pushed to 6th place.
73
- *
74
- * @param newSaveSearch object { name: string, description: string, encodedUrl: string }
75
- * @returns NodeEntry
76
- */
77
- saveSearch(newSaveSearch) {
78
- return this.getSavedSearches().pipe(take(1), switchMap((savedSearches) => {
79
- let updatedSavedSearches = [];
80
- if (savedSearches.length < 5) {
81
- updatedSavedSearches = [{ ...newSaveSearch, order: 0 }, ...savedSearches];
82
- }
83
- else {
84
- const firstFiveSearches = savedSearches.slice(0, 5);
85
- const restOfSearches = savedSearches.slice(5);
86
- updatedSavedSearches = [...firstFiveSearches, { ...newSaveSearch, order: 5 }, ...restOfSearches];
87
- }
88
- updatedSavedSearches = updatedSavedSearches.map((search, index) => ({
89
- ...search,
90
- order: index
91
- }));
92
- return from(this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(updatedSavedSearches))).pipe(map((preference) => JSON.parse(preference.entry.value)), tap(() => this.savedSearches$.next(updatedSavedSearches)));
93
- }), catchError((error) => {
94
- console.error('Error saving new search:', error);
95
- return throwError(() => error);
96
- }));
97
- }
98
- /**
99
- * Replace Save Search with new one and also updates the state.
100
- *
101
- * @param updatedSavedSearch - updated Save Search
102
- * @returns NodeEntry
103
- */
104
- editSavedSearch(updatedSavedSearch) {
105
- let previousSavedSearches;
106
- return this.savedSearches$.pipe(take(1), map((savedSearches) => {
107
- previousSavedSearches = [...savedSearches];
108
- return savedSearches.map((search) => (search.order === updatedSavedSearch.order ? updatedSavedSearch : search));
109
- }), tap((updatedSearches) => {
110
- this.savedSearches$.next(updatedSearches);
111
- }), switchMap((updatedSearches) => from(this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(updatedSearches))).pipe(map((preference) => JSON.parse(preference.entry.value)))), catchError((error) => {
112
- this.savedSearches$.next(previousSavedSearches);
113
- return throwError(() => error);
114
- }));
115
- }
116
- /**
117
- * Deletes Save Search and update state.
118
- *
119
- * @param deletedSavedSearch - Save Search to delete
120
- * @returns NodeEntry
121
- */
122
- deleteSavedSearch(deletedSavedSearch) {
123
- let previousSavedSearchesOrder;
124
- return this.savedSearches$.pipe(take(1), map((savedSearches) => {
125
- previousSavedSearchesOrder = [...savedSearches];
126
- const updatedSearches = savedSearches.filter((search) => search.order !== deletedSavedSearch.order);
127
- return updatedSearches.map((search, index) => ({
128
- ...search,
129
- order: index
130
- }));
131
- }), tap((updatedSearches) => {
132
- this.savedSearches$.next(updatedSearches);
133
- }), switchMap((updatedSearches) => from(this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(updatedSearches))).pipe(map((preference) => JSON.parse(preference.entry.value)))), catchError((error) => {
134
- this.savedSearches$.next(previousSavedSearchesOrder);
135
- return throwError(() => error);
136
- }));
137
- }
138
- /**
139
- * Reorders saved search place
140
- *
141
- * @param previousIndex - previous index of saved search
142
- * @param currentIndex - new index of saved search
143
- */
144
- changeOrder(previousIndex, currentIndex) {
145
- let previousSavedSearchesOrder;
146
- this.savedSearches$
147
- .pipe(take(1), map((savedSearches) => {
148
- previousSavedSearchesOrder = [...savedSearches];
149
- const [movedSearch] = savedSearches.splice(previousIndex, 1);
150
- savedSearches.splice(currentIndex, 0, movedSearch);
151
- return savedSearches.map((search, index) => ({
152
- ...search,
153
- order: index
154
- }));
155
- }), tap((savedSearches) => this.savedSearches$.next(savedSearches)), switchMap((updatedSearches) => from(this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(updatedSearches))).pipe(map((preference) => JSON.parse(preference.entry.value)))), catchError((error) => {
156
- this.savedSearches$.next(previousSavedSearchesOrder);
157
- return throwError(() => error);
158
- }))
159
- .subscribe();
160
- }
161
- getSavedSearchesNodeId() {
162
- return from(this.nodesApi.getNode('-my-', { relativePath: 'config.json' })).pipe(first(), concatMap((configNode) => {
163
- this.savedSearchFileNodeId = configNode.entry.id;
164
- return configNode.entry.id;
165
- }), catchError((error) => {
166
- const errorStatusCode = JSON.parse(error.message).error.statusCode;
167
- if (errorStatusCode === 404) {
168
- localStorage.setItem(this.getLocalStorageKey(), 'true');
169
- return '';
170
- }
171
- else {
172
- return throwError(() => error);
173
- }
174
- }));
175
- }
176
- async mapFileContentToSavedSearches(blob) {
177
- return blob
178
- .text()
179
- .then((content) => (content ? JSON.parse(content) : []))
180
- .catch(() => []);
181
- }
182
- getLocalStorageKey() {
183
- return `saved-searches-${this.authService.getUsername()}-migrated`;
184
- }
185
- fetchSavedSearches() {
186
- this.getSavedSearches()
187
- .pipe(take(1))
188
- .subscribe((searches) => this.savedSearches$.next(searches));
189
- }
190
- migrateSavedSearches() {
191
- return from(this.nodesApi.getNodeContent(this.savedSearchFileNodeId).then((content) => this.mapFileContentToSavedSearches(content))).pipe(tap((savedSearches) => {
192
- this.preferencesApi.updatePreference('-me-', 'saved-searches', JSON.stringify(savedSearches));
193
- localStorage.setItem(this.getLocalStorageKey(), 'true');
194
- this.nodesApi.deleteNode(this.savedSearchFileNodeId, { permanent: true });
195
- }));
196
- }
197
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SavedSearchesService, deps: [{ token: i1.AlfrescoApiService }, { token: i2.AuthenticationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
198
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SavedSearchesService, providedIn: 'root' }); }
199
- }
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SavedSearchesService, decorators: [{
201
- type: Injectable,
202
- args: [{
203
- providedIn: 'root'
204
- }]
205
- }], ctorParameters: () => [{ type: i1.AlfrescoApiService }, { type: i2.AuthenticationService }] });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtc2VhcmNoZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvY29tbW9uL3NlcnZpY2VzL3NhdmVkLXNlYXJjaGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBYSxjQUFjLEVBQXVDLE1BQU0sa0JBQWtCLENBQUM7QUFDNUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBTzNELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLElBQUksY0FBYyxDQUFxQyxvQ0FBb0MsQ0FBQyxDQUFDO0FBSy9JLE1BQU0sT0FBTyxvQkFBb0I7SUFNN0IsSUFBSSxRQUFRO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMvRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFD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QUUsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOytHQTdPUSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZqQixNQUFNOzs0RkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBOb2Rlc0FwaSwgTm9kZUVudHJ5LCBQcmVmZXJlbmNlc0FwaSwgQ29udGVudEZpZWxkc1F1ZXJ5LCBQcmVmZXJlbmNlRW50cnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBmcm9tLCBSZXBsYXlTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBjb25jYXRNYXAsIGZpcnN0LCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxmcmVzY28tYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRTZWFyY2ggfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NhdmVkLXNlYXJjaC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBTYXZlZFNlYXJjaGVzUHJlZmVyZW5jZXNBcGlTZXJ2aWNlIHtcbiAgICBnZXRQcmVmZXJlbmNlOiAocGVyc29uSWQ6IHN0cmluZywgcHJlZmVyZW5jZU5hbWU6IHN0cmluZywgb3B0cz86IENvbnRlbnRGaWVsZHNRdWVyeSkgPT4gUHJvbWlzZTxQcmVmZXJlbmNlRW50cnk+IHwgT2JzZXJ2YWJsZTxQcmVmZXJlbmNlRW50cnk+O1xuICAgIHVwZGF0ZVByZWZlcmVuY2U6IChwZXJzb25JZDogc3RyaW5nLCBwcmVmZXJlbmNlTmFtZTogc3RyaW5nLCBwcmVmZXJlbmNlVmFsdWU6IHN0cmluZykgPT4gUHJvbWlzZTxQcmVmZXJlbmNlRW50cnk+IHwgT2JzZXJ2YWJsZTxQcmVmZXJlbmNlRW50cnk+O1xufVxuXG5leHBvcnQgY29uc3QgU0FWRURfU0VBUkNIRVNfU0VSVklDRV9QUkVGRVJFTkNFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTYXZlZFNlYXJjaGVzUHJlZmVyZW5jZXNBcGlTZXJ2aWNlPignU0FWRURfU0VBUkNIRVNfU0VSVklDRV9QUkVGRVJFTkNFUycpO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNhdmVkU2VhcmNoZXNTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHNhdmVkU2VhcmNoRmlsZU5vZGVJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgX25vZGVzQXBpOiBOb2Rlc0FwaTtcbiAgICBwcml2YXRlIF9wcmVmZXJlbmNlc0FwaTogU2F2ZWRTZWFyY2hlc1ByZWZlcmVuY2VzQXBpU2VydmljZTtcbiAgICBwcml2YXRlIHByZWZlcmVuY2VzU2VydmljZSA9IGluamVjdChTQVZFRF9TRUFSQ0hFU19TRVJWSUNFX1BSRUZFUkVOQ0VTLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgZ2V0IG5vZGVzQXBpKCk6IE5vZGVzQXBpIHtcbiAgICAgICAgdGhpcy5fbm9kZXNBcGkgPSB0aGlzLl9ub2Rlc0FwaSA/PyBuZXcgTm9kZXNBcGkodGhpcy5hcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNBcGk7XG4gICAgfVxuXG4gICAgZ2V0IHByZWZlcmVuY2VzQXBpKCk6IFNhdmVkU2VhcmNoZXNQcmVmZXJlbmNlc0FwaVNlcnZpY2Uge1xuICAgICAgICBpZiAodGhpcy5wcmVmZXJlbmNlc1NlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3ByZWZlcmVuY2VzQXBpID0gdGhpcy5wcmVmZXJlbmNlc1NlcnZpY2U7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJlZmVyZW5jZXNBcGk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wcmVmZXJlbmNlc0FwaSA9IHRoaXMuX3ByZWZlcmVuY2VzQXBpID8/IG5ldyBQcmVmZXJlbmNlc0FwaSh0aGlzLmFwaVNlcnZpY2UuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVmZXJlbmNlc0FwaTtcbiAgICB9XG5cbiAgICByZWFkb25seSBzYXZlZFNlYXJjaGVzJCA9IG5ldyBSZXBsYXlTdWJqZWN0PFNhdmVkU2VhcmNoW10+KDEpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlOiBBbGZyZXNjb0FwaVNlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSkge31cblxuICAgIGluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmV0Y2hTYXZlZFNlYXJjaGVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2Ygc2F2ZWQgc2VhcmNoZXMgYnkgdXNlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFNhdmVkU2VhcmNoIGxpc3QgY29udGFpbmluZyB1c2VyIHNhdmVkIHNlYXJjaGVzXG4gICAgICovXG4gICAgZ2V0U2F2ZWRTZWFyY2hlcygpOiBPYnNlcnZhYmxlPFNhdmVkU2VhcmNoW10+IHtcbiAgICAgICAgY29uc3Qgc2F2ZWRTZWFyY2hlc01pZ3JhdGVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5nZXRMb2NhbFN0b3JhZ2VLZXkoKSkgPz8gJyc7XG4gICAgICAgIGlmIChzYXZlZFNlYXJjaGVzTWlncmF0ZWQgPT09ICd0cnVlJykge1xuICAgICAgICAgICAgcmV0dXJuIGZyb20odGhpcy5wcmVmZXJlbmNlc0FwaS5nZXRQcmVmZXJlbmNlKCctbWUtJywgJ3NhdmVkLXNlYXJjaGVzJykpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChwcmVmZXJlbmNlKSA9PiBKU09OLnBhcnNlKHByZWZlcmVuY2UuZW50cnkudmFsdWUpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTYXZlZFNlYXJjaGVzTm9kZUlkKCkucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIGNvbmNhdE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNhdmVkU2VhcmNoRmlsZU5vZGVJZCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1pZ3JhdGVTYXZlZFNlYXJjaGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbSh0aGlzLnByZWZlcmVuY2VzQXBpLmdldFByZWZlcmVuY2UoJy1tZS0nLCAnc2F2ZWQtc2VhcmNoZXMnKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHByZWZlcmVuY2UpID0+IEpTT04ucGFyc2UocHJlZmVyZW5jZS5lbnRyeS52YWx1ZSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgYSBuZXcgc2VhcmNoIGludG8gc3RhdGUgYW5kIHVwZGF0ZXMgc3RhdGUuIElmIHRoZXJlIGFyZSBsZXNzIHRoYW4gNSBzZWFyY2hlcyxcbiAgICAgKiBpdCB3aWxsIGJlIHB1c2hlZCBvbiBmaXJzdCBwbGFjZSwgaWYgbW9yZSBpdCB3aWxsIGJlIHB1c2hlZCB0byA2dGggcGxhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3U2F2ZVNlYXJjaCBvYmplY3QgeyBuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcsIGVuY29kZWRVcmw6IHN0cmluZyB9XG4gICAgICogQHJldHVybnMgTm9kZUVudHJ5XG4gICAgICovXG4gICAgc2F2ZVNlYXJjaChuZXdTYXZlU2VhcmNoOiBQaWNrPFNhdmVkU2VhcmNoLCAnbmFtZScgfCAnZGVzY3JpcHRpb24nIHwgJ2VuY29kZWRVcmwnPik6IE9ic2VydmFibGU8Tm9kZUVudHJ5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNhdmVkU2VhcmNoZXMoKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoc2F2ZWRTZWFyY2hlczogU2F2ZWRTZWFyY2hbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVkU2F2ZWRTZWFyY2hlczogU2F2ZWRTZWFyY2hbXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNhdmVkU2VhcmNoZXMubGVuZ3RoIDwgNSkge1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkU2F2ZWRTZWFyY2hlcyA9IFt7IC4uLm5ld1NhdmVTZWFyY2gsIG9yZGVyOiAwIH0sIC4uLnNhdmVkU2VhcmNoZXNdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Rml2ZVNlYXJjaGVzID0gc2F2ZWRTZWFyY2hlcy5zbGljZSgwLCA1KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdE9mU2VhcmNoZXMgPSBzYXZlZFNlYXJjaGVzLnNsaWNlKDUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRTYXZlZFNlYXJjaGVzID0gWy4uLmZpcnN0Rml2ZVNlYXJjaGVzLCB7IC4uLm5ld1NhdmVTZWFyY2gsIG9yZGVyOiA1IH0sIC4uLnJlc3RPZlNlYXJjaGVzXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB1cGRhdGVkU2F2ZWRTZWFyY2hlcyA9IHVwZGF0ZWRTYXZlZFNlYXJjaGVzLm1hcCgoc2VhcmNoLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc2VhcmNoLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW5kZXhcbiAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbSh0aGlzLnByZWZlcmVuY2VzQXBpLnVwZGF0ZVByZWZlcmVuY2UoJy1tZS0nLCAnc2F2ZWQtc2VhcmNoZXMnLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkU2F2ZWRTZWFyY2hlcykpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHByZWZlcmVuY2UpID0+IEpTT04ucGFyc2UocHJlZmVyZW5jZS5lbnRyeS52YWx1ZSkpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zYXZlZFNlYXJjaGVzJC5uZXh0KHVwZGF0ZWRTYXZlZFNlYXJjaGVzKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBuZXcgc2VhcmNoOicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2UgU2F2ZSBTZWFyY2ggd2l0aCBuZXcgb25lIGFuZCBhbHNvIHVwZGF0ZXMgdGhlIHN0YXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVwZGF0ZWRTYXZlZFNlYXJjaCAtIHVwZGF0ZWQgU2F2ZSBTZWFyY2hcbiAgICAgKiBAcmV0dXJucyBOb2RlRW50cnlcbiAgICAgKi9cbiAgICBlZGl0U2F2ZWRTZWFyY2godXBkYXRlZFNhdmVkU2VhcmNoOiBTYXZlZFNlYXJjaCk6IE9ic2VydmFibGU8Tm9kZUVudHJ5PiB7XG4gICAgICAgIGxldCBwcmV2aW91c1NhdmVkU2VhcmNoZXM6IFNhdmVkU2VhcmNoW107XG4gICAgICAgIHJldHVybiB0aGlzLnNhdmVkU2VhcmNoZXMkLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgbWFwKChzYXZlZFNlYXJjaGVzOiBTYXZlZFNlYXJjaFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTYXZlZFNlYXJjaGVzID0gWy4uLnNhdmVkU2VhcmNoZXNdO1xuICAgICAgICAgICAgICAgIHJldHVybiBzYXZlZFNlYXJjaGVzLm1hcCgoc2VhcmNoKSA9PiAoc2VhcmNoLm9yZGVyID09PSB1cGRhdGVkU2F2ZWRTZWFyY2gub3JkZXIgPyB1cGRhdGVkU2F2ZWRTZWFyY2ggOiBzZWFyY2gpKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCh1cGRhdGVkU2VhcmNoZXM6IFNhdmVkU2VhcmNoW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVkU2VhcmNoZXMkLm5leHQodXBkYXRlZFNlYXJjaGVzKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh1cGRhdGVkU2VhcmNoZXM6IFNhdmVkU2VhcmNoW10pID0+XG4gICAgICAgICAgICAgICAgZnJvbSh0aGlzLnByZWZlcmVuY2VzQXBpLnVwZGF0ZVByZWZlcmVuY2UoJy1tZS0nLCAnc2F2ZWQtc2VhcmNoZXMnLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkU2VhcmNoZXMpKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChwcmVmZXJlbmNlKSA9PiBKU09OLnBhcnNlKHByZWZlcmVuY2UuZW50cnkudmFsdWUpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRTZWFyY2hlcyQubmV4dChwcmV2aW91c1NhdmVkU2VhcmNoZXMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBTYXZlIFNlYXJjaCBhbmQgdXBkYXRlIHN0YXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRlbGV0ZWRTYXZlZFNlYXJjaCAtIFNhdmUgU2VhcmNoIHRvIGRlbGV0ZVxuICAgICAqIEByZXR1cm5zIE5vZGVFbnRyeVxuICAgICAqL1xuICAgIGRlbGV0ZVNhdmVkU2VhcmNoKGRlbGV0ZWRTYXZlZFNlYXJjaDogU2F2ZWRTZWFyY2gpOiBPYnNlcnZhYmxlPE5vZGVFbnRyeT4ge1xuICAgICAgICBsZXQgcHJldmlvdXNTYXZlZFNlYXJjaGVzT3JkZXI6IFNhdmVkU2VhcmNoW107XG4gICAgICAgIHJldHVybiB0aGlzLnNhdmVkU2VhcmNoZXMkLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgbWFwKChzYXZlZFNlYXJjaGVzOiBTYXZlZFNlYXJjaFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTYXZlZFNlYXJjaGVzT3JkZXIgPSBbLi4uc2F2ZWRTZWFyY2hlc107XG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZFNlYXJjaGVzID0gc2F2ZWRTZWFyY2hlcy5maWx0ZXIoKHNlYXJjaCkgPT4gc2VhcmNoLm9yZGVyICE9PSBkZWxldGVkU2F2ZWRTZWFyY2gub3JkZXIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVkU2VhcmNoZXMubWFwKChzZWFyY2gsIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zZWFyY2gsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCh1cGRhdGVkU2VhcmNoZXM6IFNhdmVkU2VhcmNoW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVkU2VhcmNoZXMkLm5leHQodXBkYXRlZFNlYXJjaGVzKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh1cGRhdGVkU2VhcmNoZXM6IFNhdmVkU2VhcmNoW10pID0+XG4gICAgICAgICAgICAgICAgZnJvbSh0aGlzLnByZWZlcmVuY2VzQXBpLnVwZGF0ZVByZWZlcmVuY2UoJy1tZS0nLCAnc2F2ZWQtc2VhcmNoZXMnLCBKU09OLnN0cmluZ2lmeSh1cGRhdGVkU2VhcmNoZXMpKSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgbWFwKChwcmVmZXJlbmNlKSA9PiBKU09OLnBhcnNlKHByZWZlcmVuY2UuZW50cnkudmFsdWUpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRTZWFyY2hlcyQubmV4dChwcmV2aW91c1NhdmVkU2VhcmNoZXNPcmRlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW9yZGVycyBzYXZlZCBzZWFyY2ggcGxhY2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcmV2aW91c0luZGV4IC0gcHJldmlvdXMgaW5kZXggb2Ygc2F2ZWQgc2VhcmNoXG4gICAgICogQHBhcmFtIGN1cnJlbnRJbmRleCAtIG5ldyBpbmRleCBvZiBzYXZlZCBzZWFyY2hcbiAgICAgKi9cbiAgICBjaGFuZ2VPcmRlcihwcmV2aW91c0luZGV4OiBudW1iZXIsIGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCBwcmV2aW91c1NhdmVkU2VhcmNoZXNPcmRlcjogU2F2ZWRTZWFyY2hbXTtcbiAgICAgICAgdGhpcy5zYXZlZFNlYXJjaGVzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICBtYXAoKHNhdmVkU2VhcmNoZXM6IFNhdmVkU2VhcmNoW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTYXZlZFNlYXJjaGVzT3JkZXIgPSBbLi4uc2F2ZWRTZWFyY2hlc107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFttb3ZlZFNlYXJjaF0gPSBzYXZlZFNlYXJjaGVzLnNwbGljZShwcmV2aW91c0luZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgc2F2ZWRTZWFyY2hlcy5zcGxpY2UoY3VycmVudEluZGV4LCAwLCBtb3ZlZFNlYXJjaCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzYXZlZFNlYXJjaGVzLm1hcCgoc2VhcmNoLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpbmRleFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFwKChzYXZlZFNlYXJjaGVzOiBTYXZlZFNlYXJjaFtdKSA9PiB0aGlzLnNhdmVkU2VhcmNoZXMkLm5leHQoc2F2ZWRTZWFyY2hlcykpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodXBkYXRlZFNlYXJjaGVzOiBTYXZlZFNlYXJjaFtdKSA9PlxuICAgICAgICAgICAgICAgICAgICBmcm9tKHRoaXMucHJlZmVyZW5jZXNBcGkudXBkYXRlUHJlZmVyZW5jZSgnLW1lLScsICdzYXZlZC1zZWFyY2hlcycsIEpTT04uc3RyaW5naWZ5KHVwZGF0ZWRTZWFyY2hlcykpKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChwcmVmZXJlbmNlKSA9PiBKU09OLnBhcnNlKHByZWZlcmVuY2UuZW50cnkudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhdmVkU2VhcmNoZXMkLm5leHQocHJldmlvdXNTYXZlZFNlYXJjaGVzT3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNhdmVkU2VhcmNoZXNOb2RlSWQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5ub2Rlc0FwaS5nZXROb2RlKCctbXktJywgeyByZWxhdGl2ZVBhdGg6ICdjb25maWcuanNvbicgfSkpLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgY29uY2F0TWFwKChjb25maWdOb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlZFNlYXJjaEZpbGVOb2RlSWQgPSBjb25maWdOb2RlLmVudHJ5LmlkO1xuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWdOb2RlLmVudHJ5LmlkO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yU3RhdHVzQ29kZSA9IEpTT04ucGFyc2UoZXJyb3IubWVzc2FnZSkuZXJyb3Iuc3RhdHVzQ29kZTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JTdGF0dXNDb2RlID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5nZXRMb2NhbFN0b3JhZ2VLZXkoKSwgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbWFwRmlsZUNvbnRlbnRUb1NhdmVkU2VhcmNoZXMoYmxvYjogQmxvYik6IFByb21pc2U8QXJyYXk8U2F2ZWRTZWFyY2g+PiB7XG4gICAgICAgIHJldHVybiBibG9iXG4gICAgICAgICAgICAudGV4dCgpXG4gICAgICAgICAgICAudGhlbigoY29udGVudCkgPT4gKGNvbnRlbnQgPyBKU09OLnBhcnNlKGNvbnRlbnQpIDogW10pKVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IFtdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvY2FsU3RvcmFnZUtleSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYHNhdmVkLXNlYXJjaGVzLSR7dGhpcy5hdXRoU2VydmljZS5nZXRVc2VybmFtZSgpfS1taWdyYXRlZGA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmZXRjaFNhdmVkU2VhcmNoZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U2F2ZWRTZWFyY2hlcygpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VhcmNoZXMpID0+IHRoaXMuc2F2ZWRTZWFyY2hlcyQubmV4dChzZWFyY2hlcykpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWlncmF0ZVNhdmVkU2VhcmNoZXMoKTogT2JzZXJ2YWJsZTxTYXZlZFNlYXJjaFtdPiB7XG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMubm9kZXNBcGkuZ2V0Tm9kZUNvbnRlbnQodGhpcy5zYXZlZFNlYXJjaEZpbGVOb2RlSWQpLnRoZW4oKGNvbnRlbnQpID0+IHRoaXMubWFwRmlsZUNvbnRlbnRUb1NhdmVkU2VhcmNoZXMoY29udGVudCkpKS5waXBlKFxuICAgICAgICAgICAgdGFwKChzYXZlZFNlYXJjaGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVmZXJlbmNlc0FwaS51cGRhdGVQcmVmZXJlbmNlKCctbWUtJywgJ3NhdmVkLXNlYXJjaGVzJywgSlNPTi5zdHJpbmdpZnkoc2F2ZWRTZWFyY2hlcykpO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuZ2V0TG9jYWxTdG9yYWdlS2V5KCksICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2Rlc0FwaS5kZWxldGVOb2RlKHRoaXMuc2F2ZWRTZWFyY2hGaWxlTm9kZUlkLCB7IHBlcm1hbmVudDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19