@alfresco/adf-content-services 8.1.0-16121703802 → 8.1.0-16144344582
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.
- package/bundles/assets/adf-content-services/i18n/en.json +3 -1
- package/fesm2022/adf-content-services.mjs +866 -823
- package/fesm2022/adf-content-services.mjs.map +1 -1
- package/lib/aspect-list/aspect-list.component.d.ts +4 -0
- package/lib/aspect-list/interfaces/custom-aspect-paging.interface.d.ts +21 -0
- package/lib/aspect-list/public-api.d.ts +1 -0
- package/lib/aspect-list/services/aspect-list.service.d.ts +6 -4
- package/lib/category/categories-management/categories-management.component.d.ts +4 -0
- package/lib/content.module.d.ts +2 -2
- package/lib/dialogs/dialog.module.d.ts +6 -5
- package/lib/dialogs/download-zip/download-zip.dialog.d.ts +1 -1
- package/lib/dialogs/download-zip/download-zip.dialog.module.d.ts +2 -6
- package/lib/new-version-uploader/new-version-uploader.dialog.scss +1 -1
- package/lib/upload/components/base-upload/upload-base.d.ts +1 -1
- package/package.json +3 -5
- package/esm2022/adf-content-services.mjs +0 -5
- package/esm2022/lib/agent/index.mjs +0 -18
- package/esm2022/lib/agent/public-api.mjs +0 -18
- package/esm2022/lib/agent/services/agent.service.mjs +0 -60
- package/esm2022/lib/alfresco-icon/alfresco-icon.component.mjs +0 -27
- package/esm2022/lib/api-factories/alfresco-api-no-auth.service.mjs +0 -42
- package/esm2022/lib/api-factories/alfresco-api-v2-loader.service.mjs +0 -77
- package/esm2022/lib/api-factories/index.mjs +0 -18
- package/esm2022/lib/api-factories/public-api.mjs +0 -19
- package/esm2022/lib/aspect-list/aspect-list-dialog-data.interface.mjs +0 -18
- package/esm2022/lib/aspect-list/aspect-list-dialog.component.mjs +0 -77
- package/esm2022/lib/aspect-list/aspect-list.component.mjs +0 -139
- package/esm2022/lib/aspect-list/aspect-list.module.mjs +0 -35
- package/esm2022/lib/aspect-list/index.mjs +0 -18
- package/esm2022/lib/aspect-list/public-api.mjs +0 -24
- package/esm2022/lib/aspect-list/services/aspect-list.service.mjs +0 -83
- package/esm2022/lib/aspect-list/services/dialog-aspect-list.service.mjs +0 -86
- package/esm2022/lib/aspect-list/services/node-aspect.service.mjs +0 -52
- package/esm2022/lib/auth-loader/content-auth-loader-factory.mjs +0 -26
- package/esm2022/lib/auth-loader/content-auth-loader.service.mjs +0 -42
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +0 -166
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -35
- package/esm2022/lib/breadcrumb/dropdown-breadcrumb.component.mjs +0 -65
- package/esm2022/lib/breadcrumb/index.mjs +0 -18
- package/esm2022/lib/breadcrumb/public-api.mjs +0 -20
- package/esm2022/lib/category/categories-management/categories-management-mode.mjs +0 -22
- package/esm2022/lib/category/categories-management/categories-management.component.mjs +0 -308
- package/esm2022/lib/category/category.module.mjs +0 -33
- package/esm2022/lib/category/index.mjs +0 -18
- package/esm2022/lib/category/models/category-node.interface.mjs +0 -18
- package/esm2022/lib/category/public-api.mjs +0 -23
- package/esm2022/lib/category/services/category-tree-datasource.service.mjs +0 -80
- package/esm2022/lib/category/services/category.service.mjs +0 -159
- package/esm2022/lib/common/events/file.event.mjs +0 -46
- package/esm2022/lib/common/index.mjs +0 -18
- package/esm2022/lib/common/interfaces/saved-search.interface.mjs +0 -18
- package/esm2022/lib/common/interfaces/search-configuration.interface.mjs +0 -18
- package/esm2022/lib/common/mocks/ecm-user.service.mock.mjs +0 -37
- package/esm2022/lib/common/models/allowable-operations.enum.mjs +0 -30
- package/esm2022/lib/common/models/ecm-company.model.mjs +0 -19
- package/esm2022/lib/common/models/ecm-user.model.mjs +0 -45
- package/esm2022/lib/common/models/file.model.mjs +0 -53
- package/esm2022/lib/common/models/node-metadata.model.mjs +0 -23
- package/esm2022/lib/common/models/permissions.enum.mjs +0 -32
- package/esm2022/lib/common/public-api.mjs +0 -37
- package/esm2022/lib/common/services/card-view-content-update.service.mjs +0 -55
- package/esm2022/lib/common/services/content.service.mjs +0 -180
- package/esm2022/lib/common/services/discovery-api.service.mjs +0 -79
- package/esm2022/lib/common/services/favorites-api.service.mjs +0 -84
- package/esm2022/lib/common/services/nodes-api.service.mjs +0 -251
- package/esm2022/lib/common/services/people-content.service.mjs +0 -138
- package/esm2022/lib/common/services/rendition.service.mjs +0 -270
- package/esm2022/lib/common/services/saved-searches.service.mjs +0 -206
- package/esm2022/lib/common/services/sites.service.mjs +0 -243
- package/esm2022/lib/common/services/upload.service.mjs +0 -391
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata-header.component.mjs +0 -54
- package/esm2022/lib/content-metadata/components/content-metadata/content-metadata.component.mjs +0 -490
- package/esm2022/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.mjs +0 -128
- package/esm2022/lib/content-metadata/content-metadata.module.mjs +0 -36
- package/esm2022/lib/content-metadata/index.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/aspect-oriented-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/card-view-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-custom-panel.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata-panel.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/content-metadata.interfaces.mjs +0 -28
- package/esm2022/lib/content-metadata/interfaces/indifferent-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/layout-oriented-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/organised-property-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/preset-config.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/property-group.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/interfaces/property.interface.mjs +0 -18
- package/esm2022/lib/content-metadata/public-api.mjs +0 -31
- package/esm2022/lib/content-metadata/services/basic-properties.service.mjs +0 -107
- package/esm2022/lib/content-metadata/services/config/aspect-oriented-config.service.mjs +0 -106
- package/esm2022/lib/content-metadata/services/config/content-metadata-config.factory.mjs +0 -76
- package/esm2022/lib/content-metadata/services/config/indifferent-config.service.mjs +0 -40
- package/esm2022/lib/content-metadata/services/config/layout-oriented-config.service.mjs +0 -108
- package/esm2022/lib/content-metadata/services/config/property-group-reader.mjs +0 -33
- package/esm2022/lib/content-metadata/services/content-metadata.service.mjs +0 -99
- package/esm2022/lib/content-metadata/services/content-type-property.service.mjs +0 -134
- package/esm2022/lib/content-metadata/services/property-descriptors.service.mjs +0 -52
- package/esm2022/lib/content-metadata/services/property-groups-translator.service.mjs +0 -169
- package/esm2022/lib/content-node-selector/content-node-dialog.service.mjs +0 -256
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.component.mjs +0 -617
- package/esm2022/lib/content-node-selector/content-node-selector-panel/content-node-selector-panel.service.mjs +0 -66
- package/esm2022/lib/content-node-selector/content-node-selector.component-data.interface.mjs +0 -18
- package/esm2022/lib/content-node-selector/content-node-selector.component.mjs +0 -205
- package/esm2022/lib/content-node-selector/content-node-selector.module.mjs +0 -50
- package/esm2022/lib/content-node-selector/index.mjs +0 -18
- package/esm2022/lib/content-node-selector/name-location-cell/name-location-cell.component.mjs +0 -48
- package/esm2022/lib/content-node-selector/public-api.mjs +0 -25
- package/esm2022/lib/content-node-selector/site-dropdown/sites-dropdown.component.mjs +0 -168
- package/esm2022/lib/content-node-share/content-node-share.dialog.mjs +0 -287
- package/esm2022/lib/content-node-share/content-node-share.directive.mjs +0 -102
- package/esm2022/lib/content-node-share/content-node-share.module.mjs +0 -35
- package/esm2022/lib/content-node-share/content-node-share.settings.mjs +0 -18
- package/esm2022/lib/content-node-share/index.mjs +0 -18
- package/esm2022/lib/content-node-share/public-api.mjs +0 -22
- package/esm2022/lib/content-node-share/services/shared-links-api.service.mjs +0 -83
- package/esm2022/lib/content-type/content-type-dialog.component.mjs +0 -57
- package/esm2022/lib/content-type/content-type-metadata.interface.mjs +0 -18
- package/esm2022/lib/content-type/content-type.service.mjs +0 -52
- package/esm2022/lib/content-type/index.mjs +0 -20
- package/esm2022/lib/content.module.mjs +0 -277
- package/esm2022/lib/dialogs/category-selector/category-selector.dialog.mjs +0 -51
- package/esm2022/lib/dialogs/dialog.module.mjs +0 -52
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.mjs +0 -111
- package/esm2022/lib/dialogs/download-zip/download-zip.dialog.module.mjs +0 -38
- package/esm2022/lib/dialogs/download-zip/services/download-zip.service.mjs +0 -66
- package/esm2022/lib/dialogs/folder/folder-name.validators.mjs +0 -44
- package/esm2022/lib/dialogs/folder/folder.dialog.mjs +0 -146
- package/esm2022/lib/dialogs/index.mjs +0 -18
- package/esm2022/lib/dialogs/library/library.dialog.mjs +0 -224
- package/esm2022/lib/dialogs/node-lock/node-lock.dialog.mjs +0 -115
- package/esm2022/lib/dialogs/public-api.mjs +0 -25
- package/esm2022/lib/directives/auto-focus.directive.mjs +0 -38
- package/esm2022/lib/directives/check-allowable-operation.directive.mjs +0 -126
- package/esm2022/lib/directives/content-directive.module.mjs +0 -75
- package/esm2022/lib/directives/index.mjs +0 -18
- package/esm2022/lib/directives/library-favorite.directive.mjs +0 -119
- package/esm2022/lib/directives/library-membership.directive.mjs +0 -202
- package/esm2022/lib/directives/node-counter.directive.mjs +0 -59
- package/esm2022/lib/directives/node-delete.directive.mjs +0 -177
- package/esm2022/lib/directives/node-download.directive.mjs +0 -138
- package/esm2022/lib/directives/node-favorite.directive.mjs +0 -193
- package/esm2022/lib/directives/node-lock.directive.mjs +0 -57
- package/esm2022/lib/directives/node-restore.directive.mjs +0 -218
- package/esm2022/lib/directives/public-api.mjs +0 -28
- package/esm2022/lib/document-list/components/content-action/content-action-list.component.mjs +0 -60
- package/esm2022/lib/document-list/components/content-action/content-action.component.mjs +0 -196
- package/esm2022/lib/document-list/components/document-list.component.mjs +0 -965
- package/esm2022/lib/document-list/components/document-list.token.mjs +0 -21
- package/esm2022/lib/document-list/components/file-auto-download/file-auto-download.component.mjs +0 -42
- package/esm2022/lib/document-list/components/filter-header/filter-header.component.mjs +0 -107
- package/esm2022/lib/document-list/components/library-name-column/library-name-column.component.mjs +0 -131
- package/esm2022/lib/document-list/components/library-role-column/library-role-column.component.mjs +0 -91
- package/esm2022/lib/document-list/components/library-status-column/library-status-column.component.mjs +0 -86
- package/esm2022/lib/document-list/components/name-column/name-column.component.mjs +0 -118
- package/esm2022/lib/document-list/components/node.event.mjs +0 -30
- package/esm2022/lib/document-list/components/trashcan-name-column/trashcan-name-column.component.mjs +0 -83
- package/esm2022/lib/document-list/data/image-resolver.model.mjs +0 -18
- package/esm2022/lib/document-list/data/row-filter.model.mjs +0 -18
- package/esm2022/lib/document-list/data/share-data-row.model.mjs +0 -102
- package/esm2022/lib/document-list/data/share-datatable-adapter.mjs +0 -258
- package/esm2022/lib/document-list/document-list.module.mjs +0 -75
- package/esm2022/lib/document-list/index.mjs +0 -18
- package/esm2022/lib/document-list/interfaces/document-list-loader.interface.mjs +0 -18
- package/esm2022/lib/document-list/models/content-action.model.mjs +0 -59
- package/esm2022/lib/document-list/models/document-folder.model.mjs +0 -23
- package/esm2022/lib/document-list/models/node-action.enum.mjs +0 -27
- package/esm2022/lib/document-list/models/permissions-style.model.mjs +0 -27
- package/esm2022/lib/document-list/models/permissions.model.mjs +0 -26
- package/esm2022/lib/document-list/models/preset.model.mjs +0 -257
- package/esm2022/lib/document-list/public-api.mjs +0 -47
- package/esm2022/lib/document-list/services/custom-resources.service.mjs +0 -378
- package/esm2022/lib/document-list/services/document-actions.service.mjs +0 -142
- package/esm2022/lib/document-list/services/document-list.service.mjs +0 -175
- package/esm2022/lib/document-list/services/folder-actions.service.mjs +0 -137
- package/esm2022/lib/document-list/services/lock.service.mjs +0 -72
- package/esm2022/lib/document-list/services/node-actions.service.mjs +0 -122
- package/esm2022/lib/group/index.mjs +0 -18
- package/esm2022/lib/group/public-api.mjs +0 -18
- package/esm2022/lib/group/services/group.service.mjs +0 -84
- package/esm2022/lib/infinite-scroll-datasource/index.mjs +0 -18
- package/esm2022/lib/infinite-scroll-datasource/infinite-scroll-datasource.mjs +0 -69
- package/esm2022/lib/infinite-scroll-datasource/public-api.mjs +0 -18
- package/esm2022/lib/interfaces/base-card-view-content-update.interface.mjs +0 -18
- package/esm2022/lib/interfaces/index.mjs +0 -18
- package/esm2022/lib/interfaces/library-entity.interface.mjs +0 -18
- package/esm2022/lib/interfaces/library-membership-error-event.interface.mjs +0 -18
- package/esm2022/lib/interfaces/library-membership-toggle-event.interface.mjs +0 -18
- package/esm2022/lib/interfaces/node-allowable-operation-subject.interface.mjs +0 -18
- package/esm2022/lib/interfaces/public-api.mjs +0 -23
- package/esm2022/lib/interfaces/restore-message-model.interface.mjs +0 -19
- package/esm2022/lib/legal-hold/index.mjs +0 -18
- package/esm2022/lib/legal-hold/public-api.mjs +0 -18
- package/esm2022/lib/legal-hold/services/legal-hold.service.mjs +0 -136
- package/esm2022/lib/material.module.mjs +0 -183
- package/esm2022/lib/mock/alfresco-api.service.mock.mjs +0 -43
- package/esm2022/lib/mock/date-range-search-filter.mock.mjs +0 -65
- package/esm2022/lib/mock/document-library.model.mock.mjs +0 -84
- package/esm2022/lib/mock/document-list.component.mock.mjs +0 -364
- package/esm2022/lib/mock/index.mjs +0 -18
- package/esm2022/lib/mock/new-version-uploader.service.mock.mjs +0 -161
- package/esm2022/lib/mock/public-api.mjs +0 -27
- package/esm2022/lib/mock/search-filter-mock.mjs +0 -637
- package/esm2022/lib/mock/search-query.mock.mjs +0 -40
- package/esm2022/lib/mock/search.component.mock.mjs +0 -165
- package/esm2022/lib/mock/search.service.mock.mjs +0 -61
- package/esm2022/lib/mock/sites-dropdown.component.mock.mjs +0 -281
- package/esm2022/lib/new-version-uploader/index.mjs +0 -18
- package/esm2022/lib/new-version-uploader/models/index.mjs +0 -18
- package/esm2022/lib/new-version-uploader/models/new-version-uploader.model.mjs +0 -24
- package/esm2022/lib/new-version-uploader/new-version-uploader.dialog.mjs +0 -74
- package/esm2022/lib/new-version-uploader/new-version-uploader.module.mjs +0 -33
- package/esm2022/lib/new-version-uploader/new-version-uploader.service.mjs +0 -103
- package/esm2022/lib/new-version-uploader/public-api.mjs +0 -21
- package/esm2022/lib/node-comments/index.mjs +0 -18
- package/esm2022/lib/node-comments/node-comments.component.mjs +0 -50
- package/esm2022/lib/node-comments/node-comments.module.mjs +0 -33
- package/esm2022/lib/node-comments/public-api.mjs +0 -20
- package/esm2022/lib/node-comments/services/node-comments.service.mjs +0 -85
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog-data.interface.mjs +0 -18
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-dialog.component.mjs +0 -123
- package/esm2022/lib/permission-manager/components/add-permission/add-permission-panel.component.mjs +0 -102
- package/esm2022/lib/permission-manager/components/add-permission/add-permission.component.mjs +0 -69
- package/esm2022/lib/permission-manager/components/add-permission/search-config-permission.service.mjs +0 -45
- package/esm2022/lib/permission-manager/components/inherited-button.directive.mjs +0 -67
- package/esm2022/lib/permission-manager/components/node-path-column/node-path-column.component.mjs +0 -56
- package/esm2022/lib/permission-manager/components/permission-container/permission-container.component.mjs +0 -102
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.component.mjs +0 -87
- package/esm2022/lib/permission-manager/components/permission-list/permission-list.service.mjs +0 -219
- package/esm2022/lib/permission-manager/components/pop-over.directive.mjs +0 -134
- package/esm2022/lib/permission-manager/components/user-icon-column/user-icon-column.component.mjs +0 -88
- package/esm2022/lib/permission-manager/components/user-name-column/user-name-column.component.mjs +0 -82
- package/esm2022/lib/permission-manager/components/user-role-column/user-role-column.component.mjs +0 -111
- package/esm2022/lib/permission-manager/index.mjs +0 -18
- package/esm2022/lib/permission-manager/models/member.model.mjs +0 -59
- package/esm2022/lib/permission-manager/models/permission.model.mjs +0 -29
- package/esm2022/lib/permission-manager/models/role.model.mjs +0 -18
- package/esm2022/lib/permission-manager/permission-manager.module.mjs +0 -84
- package/esm2022/lib/permission-manager/public-api.mjs +0 -36
- package/esm2022/lib/permission-manager/services/node-permission-dialog.service.mjs +0 -78
- package/esm2022/lib/permission-manager/services/node-permission.service.mjs +0 -299
- package/esm2022/lib/pipes/content-pipe.module.mjs +0 -37
- package/esm2022/lib/pipes/index.mjs +0 -18
- package/esm2022/lib/pipes/node-name-tooltip.pipe.mjs +0 -69
- package/esm2022/lib/pipes/public-api.mjs +0 -19
- package/esm2022/lib/prediction/index.mjs +0 -18
- package/esm2022/lib/prediction/public-api.mjs +0 -18
- package/esm2022/lib/prediction/services/index.mjs +0 -18
- package/esm2022/lib/prediction/services/prediction.service.mjs +0 -57
- package/esm2022/lib/search/components/empty-search-result.component.mjs +0 -27
- package/esm2022/lib/search/components/index.mjs +0 -43
- package/esm2022/lib/search/components/reset-search.directive.mjs +0 -41
- package/esm2022/lib/search/components/search-check-list/index.mjs +0 -18
- package/esm2022/lib/search/components/search-check-list/search-check-list.component.mjs +0 -158
- package/esm2022/lib/search/components/search-chip-autocomplete-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-chip-autocomplete-input/search-chip-autocomplete-input.component.mjs +0 -169
- package/esm2022/lib/search/components/search-chip-list/search-chip-list.component.mjs +0 -46
- package/esm2022/lib/search/components/search-control.component.mjs +0 -180
- package/esm2022/lib/search/components/search-date-range-tabbed/index.mjs +0 -22
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/date-range-type.mjs +0 -23
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/in-last-date-type.mjs +0 -23
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.component.mjs +0 -196
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range/search-date-range.mjs +0 -18
- package/esm2022/lib/search/components/search-date-range-tabbed/search-date-range-tabbed.component.mjs +0 -201
- package/esm2022/lib/search/components/search-datetime-range/index.mjs +0 -18
- package/esm2022/lib/search/components/search-datetime-range/search-datetime-range.component.mjs +0 -223
- package/esm2022/lib/search/components/search-facet-field/index.mjs +0 -18
- package/esm2022/lib/search/components/search-facet-field/search-facet-field.component.mjs +0 -132
- package/esm2022/lib/search/components/search-filter/index.mjs +0 -19
- package/esm2022/lib/search/components/search-filter/search-filter-card/search-filter-card.component.mjs +0 -45
- package/esm2022/lib/search/components/search-filter/search-filter.component.mjs +0 -80
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/index.mjs +0 -18
- package/esm2022/lib/search/components/search-filter-autocomplete-chips/search-filter-autocomplete-chips.component.mjs +0 -154
- package/esm2022/lib/search/components/search-filter-chips/index.mjs +0 -23
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip/search-facet-chip.component.mjs +0 -104
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-chip-tabbed.component.mjs +0 -109
- package/esm2022/lib/search/components/search-filter-chips/search-facet-chip-tabbed/search-facet-tabbed-content.component.mjs +0 -129
- package/esm2022/lib/search/components/search-filter-chips/search-filter-chips.component.mjs +0 -63
- package/esm2022/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.mjs +0 -43
- package/esm2022/lib/search/components/search-filter-chips/search-widget-chip/search-widget-chip.component.mjs +0 -109
- package/esm2022/lib/search/components/search-filter-container/index.mjs +0 -18
- package/esm2022/lib/search/components/search-filter-container/search-filter-container.component.mjs +0 -122
- package/esm2022/lib/search/components/search-filter-tabbed/index.mjs +0 -19
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tab.directive.mjs +0 -36
- package/esm2022/lib/search/components/search-filter-tabbed/search-filter-tabbed.component.mjs +0 -63
- package/esm2022/lib/search/components/search-form/index.mjs +0 -18
- package/esm2022/lib/search/components/search-form/search-form.component.mjs +0 -52
- package/esm2022/lib/search/components/search-input/index.mjs +0 -18
- package/esm2022/lib/search/components/search-input/search-input.component.mjs +0 -108
- package/esm2022/lib/search/components/search-logical-filter/index.mjs +0 -18
- package/esm2022/lib/search/components/search-logical-filter/search-logical-filter.component.mjs +0 -163
- package/esm2022/lib/search/components/search-number-range/index.mjs +0 -18
- package/esm2022/lib/search/components/search-number-range/search-number-range.component.mjs +0 -154
- package/esm2022/lib/search/components/search-panel/index.mjs +0 -18
- package/esm2022/lib/search/components/search-panel/search-panel.component.mjs +0 -44
- package/esm2022/lib/search/components/search-properties/file-size-condition.mjs +0 -18
- package/esm2022/lib/search/components/search-properties/file-size-operator.enum.mjs +0 -23
- package/esm2022/lib/search/components/search-properties/file-size-unit.enum.mjs +0 -26
- package/esm2022/lib/search/components/search-properties/index.mjs +0 -22
- package/esm2022/lib/search/components/search-properties/search-properties.component.mjs +0 -244
- package/esm2022/lib/search/components/search-properties/search-properties.mjs +0 -18
- package/esm2022/lib/search/components/search-radio/index.mjs +0 -18
- package/esm2022/lib/search/components/search-radio/search-radio.component.mjs +0 -145
- package/esm2022/lib/search/components/search-slider/index.mjs +0 -18
- package/esm2022/lib/search/components/search-slider/search-slider.component.mjs +0 -119
- package/esm2022/lib/search/components/search-sorting-picker/index.mjs +0 -18
- package/esm2022/lib/search/components/search-sorting-picker/search-sorting-picker.component.mjs +0 -77
- package/esm2022/lib/search/components/search-text/index.mjs +0 -18
- package/esm2022/lib/search/components/search-text/search-text.component.mjs +0 -134
- package/esm2022/lib/search/components/search-widget-container/index.mjs +0 -18
- package/esm2022/lib/search/components/search-widget-container/search-widget-container.component.mjs +0 -113
- package/esm2022/lib/search/components/search.component.mjs +0 -152
- package/esm2022/lib/search/forms/index.mjs +0 -19
- package/esm2022/lib/search/forms/live-error-state-matcher.mjs +0 -23
- package/esm2022/lib/search/forms/search-term-validator.mjs +0 -26
- package/esm2022/lib/search/index.mjs +0 -18
- package/esm2022/lib/search/mocks/index.mjs +0 -18
- package/esm2022/lib/search/mocks/search.service.mock.mjs +0 -56
- package/esm2022/lib/search/models/autocomplete-option.interface.mjs +0 -22
- package/esm2022/lib/search/models/facet-field-bucket.interface.mjs +0 -18
- package/esm2022/lib/search/models/facet-field.interface.mjs +0 -29
- package/esm2022/lib/search/models/facet-query.interface.mjs +0 -18
- package/esm2022/lib/search/models/facet-widget.interface.mjs +0 -18
- package/esm2022/lib/search/models/filter-query.interface.mjs +0 -18
- package/esm2022/lib/search/models/filter-search.interface.mjs +0 -18
- package/esm2022/lib/search/models/index.mjs +0 -34
- package/esm2022/lib/search/models/response-facet-query-list.model.mjs +0 -31
- package/esm2022/lib/search/models/search-category.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-configuration.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-filter-list.model.mjs +0 -148
- package/esm2022/lib/search/models/search-form.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-range.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-sorting-definition.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-widget-settings.interface.mjs +0 -18
- package/esm2022/lib/search/models/search-widget.interface.mjs +0 -18
- package/esm2022/lib/search/models/tabbed-facet-field.interface.mjs +0 -18
- package/esm2022/lib/search/public-api.mjs +0 -24
- package/esm2022/lib/search/search-configuration.token.mjs +0 -19
- package/esm2022/lib/search/search.module.mjs +0 -192
- package/esm2022/lib/search/services/base-query-builder.service.mjs +0 -509
- package/esm2022/lib/search/services/index.mjs +0 -24
- package/esm2022/lib/search/services/search-configuration.service.mjs +0 -50
- package/esm2022/lib/search/services/search-facet-filters.service.mjs +0 -374
- package/esm2022/lib/search/services/search-filter.service.mjs +0 -56
- package/esm2022/lib/search/services/search-header-query-builder.service.mjs +0 -136
- package/esm2022/lib/search/services/search-query-builder.service.mjs +0 -48
- package/esm2022/lib/search/services/search.service.mjs +0 -89
- package/esm2022/lib/search-ai/index.mjs +0 -18
- package/esm2022/lib/search-ai/models/search-ai-input-state.mjs +0 -18
- package/esm2022/lib/search-ai/public-api.mjs +0 -19
- package/esm2022/lib/search-ai/services/search-ai.service.mjs +0 -103
- package/esm2022/lib/security/index.mjs +0 -18
- package/esm2022/lib/security/public-api.mjs +0 -18
- package/esm2022/lib/security/services/models/security-controls-group-response.interface.mjs +0 -18
- package/esm2022/lib/security/services/models/security-controls-mark-response.interface.mjs +0 -18
- package/esm2022/lib/security/services/security-controls-groups-marks-security.service.mjs +0 -274
- package/esm2022/lib/security-options-loader/security-options-loader.service.mjs +0 -43
- package/esm2022/lib/services/alfresco-api.interface.mjs +0 -18
- package/esm2022/lib/services/alfresco-api.service.mjs +0 -120
- package/esm2022/lib/services/index.mjs +0 -18
- package/esm2022/lib/services/public-api.mjs +0 -18
- package/esm2022/lib/tag/index.mjs +0 -18
- package/esm2022/lib/tag/public-api.mjs +0 -24
- package/esm2022/lib/tag/services/tag.service.mjs +0 -171
- package/esm2022/lib/tag/tag-actions/tag-actions.component.mjs +0 -114
- package/esm2022/lib/tag/tag-list/tag-list.component.mjs +0 -98
- package/esm2022/lib/tag/tag-node-list/tag-node-list.component.mjs +0 -80
- package/esm2022/lib/tag/tag.module.mjs +0 -37
- package/esm2022/lib/tag/tags-creator/tags-creator-mode.mjs +0 -27
- package/esm2022/lib/tag/tags-creator/tags-creator.component.mjs +0 -370
- package/esm2022/lib/testing/content.testing.module.mjs +0 -56
- package/esm2022/lib/tree/components/tree.component.mjs +0 -312
- package/esm2022/lib/tree/index.mjs +0 -18
- package/esm2022/lib/tree/models/tree-context-menu-result.interface.mjs +0 -18
- package/esm2022/lib/tree/models/tree-node.interface.mjs +0 -22
- package/esm2022/lib/tree/models/tree-response.interface.mjs +0 -18
- package/esm2022/lib/tree/public-api.mjs +0 -23
- package/esm2022/lib/tree/services/tree.service.mjs +0 -134
- package/esm2022/lib/tree/tree.module.mjs +0 -33
- package/esm2022/lib/tree-view/components/tree-view.component.mjs +0 -75
- package/esm2022/lib/tree-view/data/tree-view-datasource.mjs +0 -99
- package/esm2022/lib/tree-view/index.mjs +0 -18
- package/esm2022/lib/tree-view/models/tree-view.model.mjs +0 -28
- package/esm2022/lib/tree-view/public-api.mjs +0 -22
- package/esm2022/lib/tree-view/services/tree-view.service.mjs +0 -38
- package/esm2022/lib/tree-view/tree-view.module.mjs +0 -33
- package/esm2022/lib/upload/components/base-upload/upload-base.mjs +0 -176
- package/esm2022/lib/upload/components/file-uploading-dialog.component.mjs +0 -190
- package/esm2022/lib/upload/components/file-uploading-list-row.component.mjs +0 -92
- package/esm2022/lib/upload/components/file-uploading-list.component.mjs +0 -124
- package/esm2022/lib/upload/components/upload-button.component.mjs +0 -133
- package/esm2022/lib/upload/components/upload-drag-area.component.mjs +0 -112
- package/esm2022/lib/upload/components/upload-files.event.mjs +0 -41
- package/esm2022/lib/upload/components/upload-version-button.component.mjs +0 -54
- package/esm2022/lib/upload/directives/file-draggable.directive.mjs +0 -154
- package/esm2022/lib/upload/directives/toggle-icon.directive.mjs +0 -75
- package/esm2022/lib/upload/index.mjs +0 -18
- package/esm2022/lib/upload/pipes/file-upload-error.pipe.mjs +0 -39
- package/esm2022/lib/upload/public-api.mjs +0 -29
- package/esm2022/lib/upload/upload.module.mjs +0 -72
- package/esm2022/lib/version-compatibility/index.mjs +0 -18
- package/esm2022/lib/version-compatibility/public-api.mjs +0 -20
- package/esm2022/lib/version-compatibility/version-compatibility-factory.mjs +0 -26
- package/esm2022/lib/version-compatibility/version-compatibility.directive.mjs +0 -53
- package/esm2022/lib/version-compatibility/version-compatibility.module.mjs +0 -33
- package/esm2022/lib/version-compatibility/version-compatibility.service.mjs +0 -76
- package/esm2022/lib/version-manager/content-version.service.mjs +0 -53
- package/esm2022/lib/version-manager/index.mjs +0 -18
- package/esm2022/lib/version-manager/public-api.mjs +0 -23
- package/esm2022/lib/version-manager/version-comparison.component.mjs +0 -42
- package/esm2022/lib/version-manager/version-list.component.mjs +0 -215
- package/esm2022/lib/version-manager/version-manager.component.mjs +0 -145
- package/esm2022/lib/version-manager/version-manager.module.mjs +0 -48
- package/esm2022/lib/version-manager/version-upload.component.mjs +0 -154
- package/esm2022/lib/viewer/alfresco-viewer.module.mjs +0 -33
- package/esm2022/lib/viewer/components/alfresco-viewer.component.mjs +0 -408
- package/esm2022/lib/viewer/index.mjs +0 -18
- package/esm2022/lib/viewer/public-api.mjs +0 -19
- package/esm2022/public-api.mjs +0 -56
|
@@ -1,509 +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 { BehaviorSubject, from, ReplaySubject, Subject } from 'rxjs';
|
|
18
|
-
import { SEARCH_LANGUAGE, SearchApi } from '@alfresco/js-api';
|
|
19
|
-
import { Buffer } from 'buffer';
|
|
20
|
-
import { inject } from '@angular/core';
|
|
21
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
22
|
-
export class BaseQueryBuilderService {
|
|
23
|
-
get searchApi() {
|
|
24
|
-
this._searchApi = this._searchApi ?? new SearchApi(this.alfrescoApiService.getInstance());
|
|
25
|
-
return this._searchApi;
|
|
26
|
-
}
|
|
27
|
-
get userQuery() {
|
|
28
|
-
return this._userQuery;
|
|
29
|
-
}
|
|
30
|
-
set userQuery(value) {
|
|
31
|
-
value = (value || '').trim();
|
|
32
|
-
this._userQuery = value ? `(${value})` : '';
|
|
33
|
-
}
|
|
34
|
-
constructor(appConfig, alfrescoApiService) {
|
|
35
|
-
this.appConfig = appConfig;
|
|
36
|
-
this.alfrescoApiService = alfrescoApiService;
|
|
37
|
-
this.router = inject(Router);
|
|
38
|
-
this.activatedRoute = inject(ActivatedRoute);
|
|
39
|
-
/* Stream that emits the search configuration whenever the user change the search forms */
|
|
40
|
-
this.configUpdated = new Subject();
|
|
41
|
-
/* Stream that emits the event each time when search filter finishes loading initial value */
|
|
42
|
-
this.filterLoaded = new Subject();
|
|
43
|
-
/* Stream that emits the query before search whenever user search */
|
|
44
|
-
this.updated = new Subject();
|
|
45
|
-
/* Stream that emits the results whenever user search */
|
|
46
|
-
this.executed = new Subject();
|
|
47
|
-
/* Stream that emits the error whenever user search */
|
|
48
|
-
this.error = new Subject();
|
|
49
|
-
/* Stream that emits search forms */
|
|
50
|
-
this.searchForms = new ReplaySubject(1);
|
|
51
|
-
/* Stream that emits void when change in filterQueries */
|
|
52
|
-
this.filterQueryUpdate = new Subject();
|
|
53
|
-
/* Stream that emits the initial value for some or all search filters */
|
|
54
|
-
this.populateFilters = new BehaviorSubject({});
|
|
55
|
-
this.categories = [];
|
|
56
|
-
this.queryFragments = {};
|
|
57
|
-
this.filterQueries = [];
|
|
58
|
-
this.filterRawParams = {};
|
|
59
|
-
this.paging = null;
|
|
60
|
-
this.sorting = [];
|
|
61
|
-
this.sortingOptions = [];
|
|
62
|
-
this._userQuery = '';
|
|
63
|
-
this.userFacetBuckets = {};
|
|
64
|
-
this.config = {
|
|
65
|
-
categories: []
|
|
66
|
-
};
|
|
67
|
-
// TODO: to be supported in future iterations
|
|
68
|
-
this.ranges = {};
|
|
69
|
-
this.resetToDefaults();
|
|
70
|
-
}
|
|
71
|
-
resetToDefaults(withNavigate = false) {
|
|
72
|
-
if (withNavigate) {
|
|
73
|
-
this.router.navigate([], {
|
|
74
|
-
queryParams: { q: null },
|
|
75
|
-
relativeTo: this.activatedRoute,
|
|
76
|
-
queryParamsHandling: 'merge'
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
const currentConfig = this.getDefaultConfiguration();
|
|
80
|
-
this.resetSearchOptions();
|
|
81
|
-
this.configUpdated.next(currentConfig);
|
|
82
|
-
this.searchForms.next(this.getSearchFormDetails());
|
|
83
|
-
this.setUpSearchConfiguration(currentConfig);
|
|
84
|
-
}
|
|
85
|
-
getDefaultConfiguration() {
|
|
86
|
-
const configurations = this.loadConfiguration();
|
|
87
|
-
if (Array.isArray(configurations)) {
|
|
88
|
-
if (this.selectedConfiguration !== undefined) {
|
|
89
|
-
return configurations[this.selectedConfiguration];
|
|
90
|
-
}
|
|
91
|
-
return configurations.find((configuration) => configuration.default);
|
|
92
|
-
}
|
|
93
|
-
return configurations;
|
|
94
|
-
}
|
|
95
|
-
updateSelectedConfiguration(index) {
|
|
96
|
-
const currentConfig = this.loadConfiguration();
|
|
97
|
-
if (Array.isArray(currentConfig) && currentConfig[index] !== undefined) {
|
|
98
|
-
this.selectedConfiguration = index;
|
|
99
|
-
this.configUpdated.next(currentConfig[index]);
|
|
100
|
-
this.searchForms.next(this.getSearchFormDetails());
|
|
101
|
-
this.resetSearchOptions();
|
|
102
|
-
this.setUpSearchConfiguration(currentConfig[index]);
|
|
103
|
-
this.update();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
resetSearchOptions() {
|
|
107
|
-
this.categories = [];
|
|
108
|
-
this.queryFragments = {};
|
|
109
|
-
this.filterQueries = [];
|
|
110
|
-
this.sorting = [];
|
|
111
|
-
this.sortingOptions = [];
|
|
112
|
-
this.userFacetBuckets = {};
|
|
113
|
-
this.scope = null;
|
|
114
|
-
this.filterRawParams = {};
|
|
115
|
-
this._userQuery = '';
|
|
116
|
-
this.populateFilters.next({});
|
|
117
|
-
}
|
|
118
|
-
getSearchFormDetails() {
|
|
119
|
-
const configurations = this.loadConfiguration();
|
|
120
|
-
if (Array.isArray(configurations)) {
|
|
121
|
-
return configurations.map((configuration, index) => ({
|
|
122
|
-
index,
|
|
123
|
-
name: configuration.name || 'SEARCH.UNKNOWN_CONFIGURATION',
|
|
124
|
-
default: configuration.default || false,
|
|
125
|
-
selected: this.selectedConfiguration !== undefined ? index === this.selectedConfiguration : configuration.default
|
|
126
|
-
}));
|
|
127
|
-
}
|
|
128
|
-
else if (configurations) {
|
|
129
|
-
return [
|
|
130
|
-
{
|
|
131
|
-
index: 0,
|
|
132
|
-
name: configurations.name || 'SEARCH.UNKNOWN_CONFIGURATION',
|
|
133
|
-
default: true,
|
|
134
|
-
selected: true
|
|
135
|
-
}
|
|
136
|
-
];
|
|
137
|
-
}
|
|
138
|
-
return [];
|
|
139
|
-
}
|
|
140
|
-
setUpSearchConfiguration(currentConfiguration) {
|
|
141
|
-
if (currentConfiguration) {
|
|
142
|
-
this.config = JSON.parse(JSON.stringify(currentConfiguration));
|
|
143
|
-
this.categories = (this.config.categories || []).filter((category) => category.enabled);
|
|
144
|
-
this.filterQueries = this.config.filterQueries || [];
|
|
145
|
-
this.userFacetBuckets = {};
|
|
146
|
-
if (this.config.sorting) {
|
|
147
|
-
this.sorting = this.config.sorting.defaults || [];
|
|
148
|
-
this.sortingOptions = this.config.sorting.options || [];
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Adds a facet bucket to a field.
|
|
154
|
-
*
|
|
155
|
-
* @param field The target field
|
|
156
|
-
* @param bucket Bucket to add
|
|
157
|
-
*/
|
|
158
|
-
addUserFacetBucket(field, bucket) {
|
|
159
|
-
if (field && bucket) {
|
|
160
|
-
const buckets = this.userFacetBuckets[field] || [];
|
|
161
|
-
const existing = buckets.find((facetBucket) => facetBucket.label === bucket.label);
|
|
162
|
-
if (!existing) {
|
|
163
|
-
buckets.push(bucket);
|
|
164
|
-
}
|
|
165
|
-
this.userFacetBuckets[field] = buckets;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Gets the buckets currently added to a field
|
|
170
|
-
*
|
|
171
|
-
* @param field The target fields
|
|
172
|
-
* @returns Bucket array
|
|
173
|
-
*/
|
|
174
|
-
getUserFacetBuckets(field) {
|
|
175
|
-
return this.userFacetBuckets[field] || [];
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Removes an existing bucket from a field.
|
|
179
|
-
*
|
|
180
|
-
* @param field The target field
|
|
181
|
-
* @param bucket Bucket to remove
|
|
182
|
-
*/
|
|
183
|
-
removeUserFacetBucket(field, bucket) {
|
|
184
|
-
if (field && bucket) {
|
|
185
|
-
const buckets = this.userFacetBuckets[field] || [];
|
|
186
|
-
this.userFacetBuckets[field] = buckets.filter((facetBucket) => facetBucket.label !== bucket.label);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Adds a filter query to the current query.
|
|
191
|
-
*
|
|
192
|
-
* @param query Query string to add
|
|
193
|
-
*/
|
|
194
|
-
addFilterQuery(query) {
|
|
195
|
-
if (query) {
|
|
196
|
-
const existing = this.filterQueries.find((filterQuery) => filterQuery.query === query);
|
|
197
|
-
if (!existing) {
|
|
198
|
-
this.filterQueries.push({ query });
|
|
199
|
-
this.filterQueryUpdate.next();
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Removes an existing filter query.
|
|
205
|
-
*
|
|
206
|
-
* @param query The query to remove
|
|
207
|
-
*/
|
|
208
|
-
removeFilterQuery(query) {
|
|
209
|
-
if (query) {
|
|
210
|
-
this.filterQueries = this.filterQueries.filter((filterQuery) => filterQuery.query !== query);
|
|
211
|
-
this.filterQueryUpdate.next();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Gets a facet query by label.
|
|
216
|
-
*
|
|
217
|
-
* @param label Label of the query
|
|
218
|
-
* @returns Facet query data
|
|
219
|
-
*/
|
|
220
|
-
getFacetQuery(label) {
|
|
221
|
-
if (label && this.hasFacetQueries) {
|
|
222
|
-
const result = this.config.facetQueries.queries.find((query) => query.label === label);
|
|
223
|
-
if (result) {
|
|
224
|
-
return { ...result };
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Gets a facet field by label.
|
|
231
|
-
*
|
|
232
|
-
* @param label Label of the facet field
|
|
233
|
-
* @returns Facet field data
|
|
234
|
-
*/
|
|
235
|
-
getFacetField(label) {
|
|
236
|
-
if (label) {
|
|
237
|
-
const fields = this.config.facetFields.fields || [];
|
|
238
|
-
const result = fields.find((field) => field.label === label);
|
|
239
|
-
if (result) {
|
|
240
|
-
result.label = this.getSupportedLabel(result.label);
|
|
241
|
-
return { ...result };
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return null;
|
|
245
|
-
}
|
|
246
|
-
setScope(scope) {
|
|
247
|
-
this.scope = scope;
|
|
248
|
-
}
|
|
249
|
-
getScope() {
|
|
250
|
-
return this.scope;
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Builds the current query and triggers the `updated` event.
|
|
254
|
-
*
|
|
255
|
-
* @param queryBody query settings
|
|
256
|
-
*/
|
|
257
|
-
update(queryBody) {
|
|
258
|
-
const query = queryBody ? queryBody : this.buildQuery();
|
|
259
|
-
this.updated.next(query);
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Builds and executes the current query.
|
|
263
|
-
*
|
|
264
|
-
* @param updateQueryParams whether query params should be updated with encoded query
|
|
265
|
-
* @param queryBody query settings
|
|
266
|
-
*/
|
|
267
|
-
async execute(updateQueryParams = true, queryBody) {
|
|
268
|
-
try {
|
|
269
|
-
const query = queryBody ? queryBody : this.buildQuery();
|
|
270
|
-
if (query) {
|
|
271
|
-
if (updateQueryParams) {
|
|
272
|
-
this.updateSearchQueryParams();
|
|
273
|
-
}
|
|
274
|
-
const resultSetPaging = await this.searchApi.search(query);
|
|
275
|
-
this.executed.next(resultSetPaging);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
catch (error) {
|
|
279
|
-
this.error.next(error);
|
|
280
|
-
this.executed.next({
|
|
281
|
-
list: {
|
|
282
|
-
pagination: {
|
|
283
|
-
totalItems: 0
|
|
284
|
-
},
|
|
285
|
-
entries: []
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
search(queryBody) {
|
|
291
|
-
const promise = this.searchApi.search(queryBody);
|
|
292
|
-
promise.then((resultSetPaging) => {
|
|
293
|
-
this.executed.next(resultSetPaging);
|
|
294
|
-
});
|
|
295
|
-
return from(promise);
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Builds the current query.
|
|
299
|
-
*
|
|
300
|
-
* @returns The finished query
|
|
301
|
-
*/
|
|
302
|
-
buildQuery() {
|
|
303
|
-
const query = this.getFinalQuery();
|
|
304
|
-
const include = this.config.include || [];
|
|
305
|
-
if (include.length === 0) {
|
|
306
|
-
include.push('path', 'allowableOperations');
|
|
307
|
-
}
|
|
308
|
-
if (query) {
|
|
309
|
-
const result = {
|
|
310
|
-
query: {
|
|
311
|
-
query,
|
|
312
|
-
language: SEARCH_LANGUAGE.AFTS
|
|
313
|
-
},
|
|
314
|
-
include,
|
|
315
|
-
paging: this.paging,
|
|
316
|
-
fields: this.config.fields,
|
|
317
|
-
filterQueries: this.filterQueries,
|
|
318
|
-
facetQueries: this.facetQueries,
|
|
319
|
-
facetIntervals: this.facetIntervals,
|
|
320
|
-
facetFields: this.facetFields,
|
|
321
|
-
sort: this.sort,
|
|
322
|
-
highlight: this.highlight
|
|
323
|
-
};
|
|
324
|
-
if (this.scope) {
|
|
325
|
-
result.scope = this.scope;
|
|
326
|
-
}
|
|
327
|
-
result['facetFormat'] = 'V2';
|
|
328
|
-
return result;
|
|
329
|
-
}
|
|
330
|
-
return null;
|
|
331
|
-
}
|
|
332
|
-
/**
|
|
333
|
-
* Gets the primary sorting definition.
|
|
334
|
-
*
|
|
335
|
-
* @returns The primary sorting definition
|
|
336
|
-
*/
|
|
337
|
-
getPrimarySorting() {
|
|
338
|
-
if (this.sorting?.length > 0) {
|
|
339
|
-
return this.sorting[0];
|
|
340
|
-
}
|
|
341
|
-
return null;
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Gets all pre-configured sorting options that users can choose from.
|
|
345
|
-
*
|
|
346
|
-
* @returns Pre-configured sorting options
|
|
347
|
-
*/
|
|
348
|
-
getSortingOptions() {
|
|
349
|
-
return this.config?.sorting?.options || [];
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Gets the query group.
|
|
353
|
-
*
|
|
354
|
-
* @param query Target query
|
|
355
|
-
* @returns Query group
|
|
356
|
-
*/
|
|
357
|
-
getQueryGroup(query) {
|
|
358
|
-
return query.group || this.config.facetQueries.label || 'Facet Queries';
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Checks if FacetQueries has been defined
|
|
362
|
-
*
|
|
363
|
-
* @returns True if defined, false otherwise
|
|
364
|
-
*/
|
|
365
|
-
get hasFacetQueries() {
|
|
366
|
-
return this.config?.facetQueries?.queries?.length > 0;
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* Checks if FacetIntervals has been defined
|
|
370
|
-
*
|
|
371
|
-
* @returns True if defined, false otherwise
|
|
372
|
-
*/
|
|
373
|
-
get hasFacetIntervals() {
|
|
374
|
-
return this.config?.facetIntervals?.intervals?.length > 0;
|
|
375
|
-
}
|
|
376
|
-
get hasFacetHighlight() {
|
|
377
|
-
return !!this.config?.highlight;
|
|
378
|
-
}
|
|
379
|
-
get sort() {
|
|
380
|
-
return this.sorting.map((def) => ({
|
|
381
|
-
type: def.type,
|
|
382
|
-
field: def.field,
|
|
383
|
-
ascending: def.ascending
|
|
384
|
-
}));
|
|
385
|
-
}
|
|
386
|
-
get facetQueries() {
|
|
387
|
-
if (this.hasFacetQueries) {
|
|
388
|
-
return this.config.facetQueries.queries.map((query) => {
|
|
389
|
-
query.group = this.getQueryGroup(query);
|
|
390
|
-
return { ...query };
|
|
391
|
-
});
|
|
392
|
-
}
|
|
393
|
-
return null;
|
|
394
|
-
}
|
|
395
|
-
get facetIntervals() {
|
|
396
|
-
if (this.hasFacetIntervals) {
|
|
397
|
-
const configIntervals = this.config.facetIntervals;
|
|
398
|
-
return {
|
|
399
|
-
intervals: configIntervals.intervals.map((interval) => ({
|
|
400
|
-
label: this.getSupportedLabel(interval.label),
|
|
401
|
-
field: interval.field,
|
|
402
|
-
sets: interval.sets.map((set) => ({
|
|
403
|
-
label: this.getSupportedLabel(set.label),
|
|
404
|
-
start: set.start,
|
|
405
|
-
end: set.end,
|
|
406
|
-
startInclusive: set.startInclusive,
|
|
407
|
-
endInclusive: set.endInclusive
|
|
408
|
-
}))
|
|
409
|
-
}))
|
|
410
|
-
};
|
|
411
|
-
}
|
|
412
|
-
return null;
|
|
413
|
-
}
|
|
414
|
-
get highlight() {
|
|
415
|
-
return this.hasFacetHighlight ? this.config.highlight : null;
|
|
416
|
-
}
|
|
417
|
-
getFinalQuery() {
|
|
418
|
-
let query = '';
|
|
419
|
-
if (this.userQuery) {
|
|
420
|
-
this.filterRawParams['userQuery'] = this.userQuery;
|
|
421
|
-
}
|
|
422
|
-
this.categories.forEach((facet) => {
|
|
423
|
-
const customQuery = this.queryFragments[facet.id];
|
|
424
|
-
if (customQuery) {
|
|
425
|
-
if (query.length > 0) {
|
|
426
|
-
query += ' AND ';
|
|
427
|
-
}
|
|
428
|
-
query += `(${customQuery})`;
|
|
429
|
-
}
|
|
430
|
-
});
|
|
431
|
-
let result = [this.userQuery, query].filter((entry) => entry).join(' AND ');
|
|
432
|
-
if (this.userFacetBuckets) {
|
|
433
|
-
Object.keys(this.userFacetBuckets).forEach((key) => {
|
|
434
|
-
const subQuery = (this.userFacetBuckets[key] || [])
|
|
435
|
-
.filter((bucket) => bucket.filterQuery)
|
|
436
|
-
.map((bucket) => bucket.filterQuery)
|
|
437
|
-
.join(' OR ');
|
|
438
|
-
if (subQuery) {
|
|
439
|
-
if (result.length > 0) {
|
|
440
|
-
result += ' AND ';
|
|
441
|
-
}
|
|
442
|
-
result += `(${subQuery})`;
|
|
443
|
-
}
|
|
444
|
-
});
|
|
445
|
-
}
|
|
446
|
-
return result;
|
|
447
|
-
}
|
|
448
|
-
get facetFields() {
|
|
449
|
-
const facetFields = this.config.facetFields?.fields;
|
|
450
|
-
if (facetFields?.length > 0) {
|
|
451
|
-
return {
|
|
452
|
-
facets: facetFields.map((facet) => ({
|
|
453
|
-
field: facet.field,
|
|
454
|
-
mincount: facet.mincount,
|
|
455
|
-
label: this.getSupportedLabel(facet.label),
|
|
456
|
-
limit: facet.limit,
|
|
457
|
-
offset: facet.offset,
|
|
458
|
-
prefix: facet.prefix
|
|
459
|
-
}))
|
|
460
|
-
};
|
|
461
|
-
}
|
|
462
|
-
return null;
|
|
463
|
-
}
|
|
464
|
-
/**
|
|
465
|
-
* Encloses a label name with double quotes if it contains whitespace characters.
|
|
466
|
-
*
|
|
467
|
-
* @param configLabel Original label text
|
|
468
|
-
* @returns Label, possibly with quotes if it contains spaces
|
|
469
|
-
*/
|
|
470
|
-
getSupportedLabel(configLabel) {
|
|
471
|
-
const spaceInsideLabelIndex = configLabel.search(/\s/g);
|
|
472
|
-
if (spaceInsideLabelIndex > -1) {
|
|
473
|
-
return `"${configLabel}"`;
|
|
474
|
-
}
|
|
475
|
-
return configLabel;
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
* Encodes filter configuration stored in filterRawParams object.
|
|
479
|
-
*/
|
|
480
|
-
encodeQuery() {
|
|
481
|
-
this.encodedQuery = Buffer.from(JSON.stringify(this.filterRawParams)).toString('base64');
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Encodes existing filters configuration and updates search query param value.
|
|
485
|
-
*/
|
|
486
|
-
updateSearchQueryParams() {
|
|
487
|
-
this.encodeQuery();
|
|
488
|
-
this.router.navigate([], {
|
|
489
|
-
relativeTo: this.activatedRoute,
|
|
490
|
-
queryParams: { q: this.encodedQuery },
|
|
491
|
-
queryParamsHandling: 'merge'
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
/**
|
|
495
|
-
* Builds search query with provided user query, executes query, encodes latest filter config and navigates to search.
|
|
496
|
-
*
|
|
497
|
-
* @param query user query to search for
|
|
498
|
-
* @param searchUrl search url to navigate to
|
|
499
|
-
*/
|
|
500
|
-
async navigateToSearch(query, searchUrl) {
|
|
501
|
-
this.userQuery = query;
|
|
502
|
-
await this.execute();
|
|
503
|
-
await this.router.navigate([searchUrl], {
|
|
504
|
-
queryParams: { q: this.encodedQuery },
|
|
505
|
-
queryParamsHandling: 'merge'
|
|
506
|
-
});
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1xdWVyeS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3NlYXJjaC9zZXJ2aWNlcy9iYXNlLXF1ZXJ5LWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpGLE9BQU8sRUFNSCxlQUFlLEVBQ2YsU0FBUyxFQUVaLE1BQU0sa0JBQWtCLENBQUM7QUFXMUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsTUFBTSxPQUFnQix1QkFBdUI7SUFJekMsSUFBSSxTQUFTO1FBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBd0NELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsS0FBYTtRQUN2QixLQUFLLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNo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KiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQge1xuICAgIFJlcXVlc3RGYWNldEZpZWxkcyxcbiAgICBSZXF1ZXN0SGlnaGxpZ2h0LFxuICAgIFJlcXVlc3RTY29wZSxcbiAgICBSZXF1ZXN0U29ydERlZmluaXRpb25Jbm5lcixcbiAgICBSZXN1bHRTZXRQYWdpbmcsXG4gICAgU0VBUkNIX0xBTkdVQUdFLFxuICAgIFNlYXJjaEFwaSxcbiAgICBTZWFyY2hSZXF1ZXN0XG59IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgU2VhcmNoQ2F0ZWdvcnkgfSBmcm9tICcuLi9tb2RlbHMvc2VhcmNoLWNhdGVnb3J5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJRdWVyeSB9IGZyb20gJy4uL21vZGVscy9maWx0ZXItcXVlcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlYXJjaFJhbmdlIH0gZnJvbSAnLi4vbW9kZWxzL3NlYXJjaC1yYW5nZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VhcmNoQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9zZWFyY2gtY29uZmlndXJhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmFjZXRRdWVyeSB9IGZyb20gJy4uL21vZGVscy9mYWNldC1xdWVyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VhcmNoU29ydGluZ0RlZmluaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvc2VhcmNoLXNvcnRpbmctZGVmaW5pdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmFjZXRGaWVsZCB9IGZyb20gJy4uL21vZGVscy9mYWNldC1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmFjZXRGaWVsZEJ1Y2tldCB9IGZyb20gJy4uL21vZGVscy9mYWNldC1maWVsZC1idWNrZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNlYXJjaEZvcm0gfSBmcm9tICcuLi9tb2RlbHMvc2VhcmNoLWZvcm0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FsZnJlc2NvLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVF1ZXJ5QnVpbGRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJpdmF0ZSBfc2VhcmNoQXBpOiBTZWFyY2hBcGk7XG4gICAgZ2V0IHNlYXJjaEFwaSgpOiBTZWFyY2hBcGkge1xuICAgICAgICB0aGlzLl9zZWFyY2hBcGkgPSB0aGlzLl9zZWFyY2hBcGkgPz8gbmV3IFNlYXJjaEFwaSh0aGlzLmFsZnJlc2NvQXBpU2VydmljZS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaEFwaTtcbiAgICB9XG5cbiAgICAvKiAgU3RyZWFtIHRoYXQgZW1pdHMgdGhlIHNlYXJjaCBjb25maWd1cmF0aW9uIHdoZW5ldmVyIHRoZSB1c2VyIGNoYW5nZSB0aGUgc2VhcmNoIGZvcm1zICovXG4gICAgY29uZmlnVXBkYXRlZCA9IG5ldyBTdWJqZWN0PFNlYXJjaENvbmZpZ3VyYXRpb24+KCk7XG5cbiAgICAvKiAgU3RyZWFtIHRoYXQgZW1pdHMgdGhlIGV2ZW50IGVhY2ggdGltZSB3aGVuIHNlYXJjaCBmaWx0ZXIgZmluaXNoZXMgbG9hZGluZyBpbml0aWFsIHZhbHVlICovXG4gICAgZmlsdGVyTG9hZGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qICBTdHJlYW0gdGhhdCBlbWl0cyB0aGUgcXVlcnkgYmVmb3JlIHNlYXJjaCB3aGVuZXZlciB1c2VyIHNlYXJjaCAgKi9cbiAgICB1cGRhdGVkID0gbmV3IFN1YmplY3Q8U2VhcmNoUmVxdWVzdD4oKTtcblxuICAgIC8qICBTdHJlYW0gdGhhdCBlbWl0cyB0aGUgcmVzdWx0cyB3aGVuZXZlciB1c2VyIHNlYXJjaCAgKi9cbiAgICBleGVjdXRlZCA9IG5ldyBTdWJqZWN0PFJlc3VsdFNldFBhZ2luZz4oKTtcblxuICAgIC8qICBTdHJlYW0gdGhhdCBlbWl0cyB0aGUgZXJyb3Igd2hlbmV2ZXIgdXNlciBzZWFyY2ggICovXG4gICAgZXJyb3IgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgLyogIFN0cmVhbSB0aGF0IGVtaXRzIHNlYXJjaCBmb3JtcyAgKi9cbiAgICBzZWFyY2hGb3JtcyA9IG5ldyBSZXBsYXlTdWJqZWN0PFNlYXJjaEZvcm1bXT4oMSk7XG5cbiAgICAvKiAgU3RyZWFtIHRoYXQgZW1pdHMgdm9pZCB3aGVuIGNoYW5nZSBpbiBmaWx0ZXJRdWVyaWVzICAqL1xuICAgIGZpbHRlclF1ZXJ5VXBkYXRlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qICBTdHJlYW0gdGhhdCBlbWl0cyB0aGUgaW5pdGlhbCB2YWx1ZSBmb3Igc29tZSBvciBhbGwgc2VhcmNoIGZpbHRlcnMgKi9cbiAgICBwb3B1bGF0ZUZpbHRlcnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2tleTogc3RyaW5nXTogYW55IH0+KHt9KTtcblxuICAgIGNhdGVnb3JpZXM6IFNlYXJjaENhdGVnb3J5W10gPSBbXTtcbiAgICBxdWVyeUZyYWdtZW50czogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgZmlsdGVyUXVlcmllczogRmlsdGVyUXVlcnlbXSA9IFtdO1xuICAgIGZpbHRlclJhd1BhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIHBhZ2luZzogeyBtYXhJdGVtcz86IG51bWJlcjsgc2tpcENvdW50PzogbnVtYmVyIH0gPSBudWxsO1xuICAgIHNvcnRpbmc6IFNlYXJjaFNvcnRpbmdEZWZpbml0aW9uW10gPSBbXTtcbiAgICBzb3J0aW5nT3B0aW9uczogU2VhcmNoU29ydGluZ0RlZmluaXRpb25bXSA9IFtdO1xuICAgIHByaXZhdGUgZW5jb2RlZFF1ZXJ5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzY29wZTogUmVxdWVzdFNjb3BlO1xuICAgIHByaXZhdGUgc2VsZWN0ZWRDb25maWd1cmF0aW9uOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfdXNlclF1ZXJ5ID0gJyc7XG5cbiAgICBwcm90ZWN0ZWQgdXNlckZhY2V0QnVja2V0czogeyBba2V5OiBzdHJpbmddOiBGYWNldEZpZWxkQnVja2V0W10gfSA9IHt9O1xuXG4gICAgZ2V0IHVzZXJRdWVyeSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXNlclF1ZXJ5O1xuICAgIH1cblxuICAgIHNldCB1c2VyUXVlcnkodmFsdWU6IHN0cmluZykge1xuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8fCAnJykudHJpbSgpO1xuICAgICAgICB0aGlzLl91c2VyUXVlcnkgPSB2YWx1ZSA/IGAoJHt2YWx1ZX0pYCA6ICcnO1xuICAgIH1cblxuICAgIGNvbmZpZzogU2VhcmNoQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgY2F0ZWdvcmllczogW11cbiAgICB9O1xuXG4gICAgLy8gVE9ETzogdG8gYmUgc3VwcG9ydGVkIGluIGZ1dHVyZSBpdGVyYXRpb25zXG4gICAgcmFuZ2VzOiB7IFtpZDogc3RyaW5nXTogU2VhcmNoUmFuZ2UgfSA9IHt9O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBhcHBDb25maWc6IEFwcENvbmZpZ1NlcnZpY2UsIHByb3RlY3RlZCByZWFkb25seSBhbGZyZXNjb0FwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSkge1xuICAgICAgICB0aGlzLnJlc2V0VG9EZWZhdWx0cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCBsb2FkQ29uZmlndXJhdGlvbigpOiBTZWFyY2hDb25maWd1cmF0aW9uIHwgU2VhcmNoQ29uZmlndXJhdGlvbltdO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGlzRmlsdGVyU2VydmljZUFjdGl2ZSgpOiBib29sZWFuO1xuXG4gICAgcHVibGljIHJlc2V0VG9EZWZhdWx0cyh3aXRoTmF2aWdhdGUgPSBmYWxzZSkge1xuICAgICAgICBpZiAod2l0aE5hdmlnYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHE6IG51bGwgfSxcbiAgICAgICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb25maWcgPSB0aGlzLmdldERlZmF1bHRDb25maWd1cmF0aW9uKCk7XG4gICAgICAgIHRoaXMucmVzZXRTZWFyY2hPcHRpb25zKCk7XG4gICAgICAgIHRoaXMuY29uZmlnVXBkYXRlZC5uZXh0KGN1cnJlbnRDb25maWcpO1xuICAgICAgICB0aGlzLnNlYXJjaEZvcm1zLm5leHQodGhpcy5nZXRTZWFyY2hGb3JtRGV0YWlscygpKTtcbiAgICAgICAgdGhpcy5zZXRVcFNlYXJjaENvbmZpZ3VyYXRpb24oY3VycmVudENvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlZmF1bHRDb25maWd1cmF0aW9uKCk6IFNlYXJjaENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9ucyA9IHRoaXMubG9hZENvbmZpZ3VyYXRpb24oKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9ucykpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29uZmlndXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb25zW3RoaXMuc2VsZWN0ZWRDb25maWd1cmF0aW9uXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb25zLmZpbmQoKGNvbmZpZ3VyYXRpb24pID0+IGNvbmZpZ3VyYXRpb24uZGVmYXVsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVTZWxlY3RlZENvbmZpZ3VyYXRpb24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50Q29uZmlnID0gdGhpcy5sb2FkQ29uZmlndXJhdGlvbigpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50Q29uZmlnKSAmJiBjdXJyZW50Q29uZmlnW2luZGV4XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlndXJhdGlvbiA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy5jb25maWdVcGRhdGVkLm5leHQoY3VycmVudENvbmZpZ1tpbmRleF0pO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hGb3Jtcy5uZXh0KHRoaXMuZ2V0U2VhcmNoRm9ybURldGFpbHMoKSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VhcmNoT3B0aW9ucygpO1xuICAgICAgICAgICAgdGhpcy5zZXRVcFNlYXJjaENvbmZpZ3VyYXRpb24oY3VycmVudENvbmZpZ1tpbmRleF0pO1xuICAgICAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRTZWFyY2hPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5xdWVyeUZyYWdtZW50cyA9IHt9O1xuICAgICAgICB0aGlzLmZpbHRlclF1ZXJpZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zb3J0aW5nID0gW107XG4gICAgICAgIHRoaXMuc29ydGluZ09wdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy51c2VyRmFjZXRCdWNrZXRzID0ge307XG4gICAgICAgIHRoaXMuc2NvcGUgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbHRlclJhd1BhcmFtcyA9IHt9O1xuICAgICAgICB0aGlzLl91c2VyUXVlcnkgPSAnJztcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUZpbHRlcnMubmV4dCh7fSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlYXJjaEZvcm1EZXRhaWxzKCk6IFNlYXJjaEZvcm1bXSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25zID0gdGhpcy5sb2FkQ29uZmlndXJhdGlvbigpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWd1cmF0aW9ucykpIHtcbiAgICAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9ucy5tYXAoKGNvbmZpZ3VyYXRpb24sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgICAgIG5hbWU6IGNvbmZpZ3VyYXRpb24ubmFtZSB8fCAnU0VBUkNILlVOS05PV05fQ09ORklHVVJBVElPTicsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogY29uZmlndXJhdGlvbi5kZWZhdWx0IHx8IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkQ29uZmlndXJhdGlvbiAhPT0gdW5kZWZpbmVkID8gaW5kZXggPT09IHRoaXMuc2VsZWN0ZWRDb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbi5kZWZhdWx0XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY29uZmlndXJhdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29uZmlndXJhdGlvbnMubmFtZSB8fCAnU0VBUkNILlVOS05PV05fQ09ORklHVVJBVElPTicsXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcFNlYXJjaENvbmZpZ3VyYXRpb24oY3VycmVudENvbmZpZ3VyYXRpb246IFNlYXJjaENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgaWYgKGN1cnJlbnRDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY3VycmVudENvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9ICh0aGlzLmNvbmZpZy5jYXRlZ29yaWVzIHx8IFtdKS5maWx0ZXIoKGNhdGVnb3J5KSA9PiBjYXRlZ29yeS5lbmFibGVkKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUXVlcmllcyA9IHRoaXMuY29uZmlnLmZpbHRlclF1ZXJpZXMgfHwgW107XG4gICAgICAgICAgICB0aGlzLnVzZXJGYWNldEJ1Y2tldHMgPSB7fTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5zb3J0aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zb3J0aW5nID0gdGhpcy5jb25maWcuc29ydGluZy5kZWZhdWx0cyB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNvcnRpbmdPcHRpb25zID0gdGhpcy5jb25maWcuc29ydGluZy5vcHRpb25zIHx8IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGZhY2V0IGJ1Y2tldCB0byBhIGZpZWxkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkIFRoZSB0YXJnZXQgZmllbGRcbiAgICAgKiBAcGFyYW0gYnVja2V0IEJ1Y2tldCB0byBhZGRcbiAgICAgKi9cbiAgICBhZGRVc2VyRmFjZXRCdWNrZXQoZmllbGQ6IHN0cmluZywgYnVja2V0OiBGYWNldEZpZWxkQnVja2V0KSB7XG4gICAgICAgIGlmIChmaWVsZCAmJiBidWNrZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1Y2tldHMgPSB0aGlzLnVzZXJGYWNldEJ1Y2tldHNbZmllbGRdIHx8IFtdO1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBidWNrZXRzLmZpbmQoKGZhY2V0QnVja2V0KSA9PiBmYWNldEJ1Y2tldC5sYWJlbCA9PT0gYnVja2V0LmxhYmVsKTtcbiAgICAgICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICAgICAgICBidWNrZXRzLnB1c2goYnVja2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXNlckZhY2V0QnVja2V0c1tmaWVsZF0gPSBidWNrZXRzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYnVja2V0cyBjdXJyZW50bHkgYWRkZWQgdG8gYSBmaWVsZFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkIFRoZSB0YXJnZXQgZmllbGRzXG4gICAgICogQHJldHVybnMgQnVja2V0IGFycmF5XG4gICAgICovXG4gICAgZ2V0VXNlckZhY2V0QnVja2V0cyhmaWVsZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJGYWNldEJ1Y2tldHNbZmllbGRdIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYW4gZXhpc3RpbmcgYnVja2V0IGZyb20gYSBmaWVsZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZCBUaGUgdGFyZ2V0IGZpZWxkXG4gICAgICogQHBhcmFtIGJ1Y2tldCBCdWNrZXQgdG8gcmVtb3ZlXG4gICAgICovXG4gICAgcmVtb3ZlVXNlckZhY2V0QnVja2V0KGZpZWxkOiBzdHJpbmcsIGJ1Y2tldDogRmFjZXRGaWVsZEJ1Y2tldCkge1xuICAgICAgICBpZiAoZmllbGQgJiYgYnVja2V0KSB7XG4gICAgICAgICAgICBjb25zdCBidWNrZXRzID0gdGhpcy51c2VyRmFjZXRCdWNrZXRzW2ZpZWxkXSB8fCBbXTtcbiAgICAgICAgICAgIHRoaXMudXNlckZhY2V0QnVja2V0c1tmaWVsZF0gPSBidWNrZXRzLmZpbHRlcigoZmFjZXRCdWNrZXQpID0+IGZhY2V0QnVja2V0LmxhYmVsICE9PSBidWNrZXQubGFiZWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGZpbHRlciBxdWVyeSB0byB0aGUgY3VycmVudCBxdWVyeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBxdWVyeSBRdWVyeSBzdHJpbmcgdG8gYWRkXG4gICAgICovXG4gICAgYWRkRmlsdGVyUXVlcnkocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5maWx0ZXJRdWVyaWVzLmZpbmQoKGZpbHRlclF1ZXJ5KSA9PiBmaWx0ZXJRdWVyeS5xdWVyeSA9PT0gcXVlcnkpO1xuICAgICAgICAgICAgaWYgKCFleGlzdGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyUXVlcmllcy5wdXNoKHsgcXVlcnkgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJRdWVyeVVwZGF0ZS5uZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFuIGV4aXN0aW5nIGZpbHRlciBxdWVyeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdG8gcmVtb3ZlXG4gICAgICovXG4gICAgcmVtb3ZlRmlsdGVyUXVlcnkocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUXVlcmllcyA9IHRoaXMuZmlsdGVyUXVlcmllcy5maWx0ZXIoKGZpbHRlclF1ZXJ5KSA9PiBmaWx0ZXJRdWVyeS5xdWVyeSAhPT0gcXVlcnkpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJRdWVyeVVwZGF0ZS5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZmFjZXQgcXVlcnkgYnkgbGFiZWwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGFiZWwgTGFiZWwgb2YgdGhlIHF1ZXJ5XG4gICAgICogQHJldHVybnMgRmFjZXQgcXVlcnkgZGF0YVxuICAgICAqL1xuICAgIGdldEZhY2V0UXVlcnkobGFiZWw6IHN0cmluZyk6IEZhY2V0UXVlcnkge1xuICAgICAgICBpZiAobGFiZWwgJiYgdGhpcy5oYXNGYWNldFF1ZXJpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29uZmlnLmZhY2V0UXVlcmllcy5xdWVyaWVzLmZpbmQoKHF1ZXJ5KSA9PiBxdWVyeS5sYWJlbCA9PT0gbGFiZWwpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnJlc3VsdCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBmYWNldCBmaWVsZCBieSBsYWJlbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBsYWJlbCBMYWJlbCBvZiB0aGUgZmFjZXQgZmllbGRcbiAgICAgKiBAcmV0dXJucyBGYWNldCBmaWVsZCBkYXRhXG4gICAgICovXG4gICAgZ2V0RmFjZXRGaWVsZChsYWJlbDogc3RyaW5nKTogRmFjZXRGaWVsZCB7XG4gICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5jb25maWcuZmFjZXRGaWVsZHMuZmllbGRzIHx8IFtdO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5sYWJlbCA9PT0gbGFiZWwpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5sYWJlbCA9IHRoaXMuZ2V0U3VwcG9ydGVkTGFiZWwocmVzdWx0LmxhYmVsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5yZXN1bHQgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBzZXRTY29wZShzY29wZTogUmVxdWVzdFNjb3BlKSB7XG4gICAgICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB9XG5cbiAgICBnZXRTY29wZSgpOiBSZXF1ZXN0U2NvcGUge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgdGhlIGN1cnJlbnQgcXVlcnkgYW5kIHRyaWdnZXJzIHRoZSBgdXBkYXRlZGAgZXZlbnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcXVlcnlCb2R5IHF1ZXJ5IHNldHRpbmdzXG4gICAgICovXG4gICAgdXBkYXRlKHF1ZXJ5Qm9keT86IFNlYXJjaFJlcXVlc3QpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBxdWVyeUJvZHkgPyBxdWVyeUJvZHkgOiB0aGlzLmJ1aWxkUXVlcnkoKTtcbiAgICAgICAgdGhpcy51cGRhdGVkLm5leHQocXVlcnkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyBhbmQgZXhlY3V0ZXMgdGhlIGN1cnJlbnQgcXVlcnkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXBkYXRlUXVlcnlQYXJhbXMgd2hldGhlciBxdWVyeSBwYXJhbXMgc2hvdWxkIGJlIHVwZGF0ZWQgd2l0aCBlbmNvZGVkIHF1ZXJ5XG4gICAgICogQHBhcmFtIHF1ZXJ5Qm9keSBxdWVyeSBzZXR0aW5nc1xuICAgICAqL1xuICAgIGFzeW5jIGV4ZWN1dGUodXBkYXRlUXVlcnlQYXJhbXMgPSB0cnVlLCBxdWVyeUJvZHk/OiBTZWFyY2hSZXF1ZXN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHF1ZXJ5Qm9keSA/IHF1ZXJ5Qm9keSA6IHRoaXMuYnVpbGRRdWVyeSgpO1xuICAgICAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZVF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VhcmNoUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0U2V0UGFnaW5nOiBSZXN1bHRTZXRQYWdpbmcgPSBhd2FpdCB0aGlzLnNlYXJjaEFwaS5zZWFyY2gocXVlcnkpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlY3V0ZWQubmV4dChyZXN1bHRTZXRQYWdpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5lcnJvci5uZXh0KGVycm9yKTtcblxuICAgICAgICAgICAgdGhpcy5leGVjdXRlZC5uZXh0KHtcbiAgICAgICAgICAgICAgICBsaXN0OiB7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IDBcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZW50cmllczogW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaChxdWVyeUJvZHk6IFNlYXJjaFJlcXVlc3QpOiBPYnNlcnZhYmxlPFJlc3VsdFNldFBhZ2luZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5zZWFyY2hBcGkuc2VhcmNoKHF1ZXJ5Qm9keSk7XG5cbiAgICAgICAgcHJvbWlzZS50aGVuKChyZXN1bHRTZXRQYWdpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZWQubmV4dChyZXN1bHRTZXRQYWdpbmcpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZnJvbShwcm9taXNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgdGhlIGN1cnJlbnQgcXVlcnkuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBUaGUgZmluaXNoZWQgcXVlcnlcbiAgICAgKi9cbiAgICBidWlsZFF1ZXJ5KCk6IFNlYXJjaFJlcXVlc3Qge1xuICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMuZ2V0RmluYWxRdWVyeSgpO1xuXG4gICAgICAgIGNvbnN0IGluY2x1ZGUgPSB0aGlzLmNvbmZpZy5pbmNsdWRlIHx8IFtdO1xuICAgICAgICBpZiAoaW5jbHVkZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGluY2x1ZGUucHVzaCgncGF0aCcsICdhbGxvd2FibGVPcGVyYXRpb25zJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogU2VhcmNoUmVxdWVzdCA9IHtcbiAgICAgICAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IFNFQVJDSF9MQU5HVUFHRS5BRlRTXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBpbmNsdWRlLFxuICAgICAgICAgICAgICAgIHBhZ2luZzogdGhpcy5wYWdpbmcsXG4gICAgICAgICAgICAgICAgZmllbGRzOiB0aGlzLmNvbmZpZy5maWVsZHMsXG4gICAgICAgICAgICAgICAgZmlsdGVyUXVlcmllczogdGhpcy5maWx0ZXJRdWVyaWVzLFxuICAgICAgICAgICAgICAgIGZhY2V0UXVlcmllczogdGhpcy5mYWNldFF1ZXJpZXMsXG4gICAgICAgICAgICAgICAgZmFjZXRJbnRlcnZhbHM6IHRoaXMuZmFjZXRJbnRlcnZhbHMsXG4gICAgICAgICAgICAgICAgZmFjZXRGaWVsZHM6IHRoaXMuZmFjZXRGaWVsZHMsXG4gICAgICAgICAgICAgICAgc29ydDogdGhpcy5zb3J0LFxuICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogdGhpcy5oaWdobGlnaHRcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNjb3BlKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNjb3BlID0gdGhpcy5zY29wZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0WydmYWNldEZvcm1hdCddID0gJ1YyJztcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcmltYXJ5IHNvcnRpbmcgZGVmaW5pdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSBwcmltYXJ5IHNvcnRpbmcgZGVmaW5pdGlvblxuICAgICAqL1xuICAgIGdldFByaW1hcnlTb3J0aW5nKCk6IFNlYXJjaFNvcnRpbmdEZWZpbml0aW9uIHtcbiAgICAgICAgaWYgKHRoaXMuc29ydGluZz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc29ydGluZ1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBwcmUtY29uZmlndXJlZCBzb3J0aW5nIG9wdGlvbnMgdGhhdCB1c2VycyBjYW4gY2hvb3NlIGZyb20uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBQcmUtY29uZmlndXJlZCBzb3J0aW5nIG9wdGlvbnNcbiAgICAgKi9cbiAgICBnZXRTb3J0aW5nT3B0aW9ucygpOiBTZWFyY2hTb3J0aW5nRGVmaW5pdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnPy5zb3J0aW5nPy5vcHRpb25zIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHF1ZXJ5IGdyb3VwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHF1ZXJ5IFRhcmdldCBxdWVyeVxuICAgICAqIEByZXR1cm5zIFF1ZXJ5IGdyb3VwXG4gICAgICovXG4gICAgZ2V0UXVlcnlHcm91cChxdWVyeTogRmFjZXRRdWVyeSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBxdWVyeS5ncm91cCB8fCB0aGlzLmNvbmZpZy5mYWNldFF1ZXJpZXMubGFiZWwgfHwgJ0ZhY2V0IFF1ZXJpZXMnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBGYWNldFF1ZXJpZXMgaGFzIGJlZW4gZGVmaW5lZFxuICAgICAqXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBkZWZpbmVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBnZXQgaGFzRmFjZXRRdWVyaWVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/LmZhY2V0UXVlcmllcz8ucXVlcmllcz8ubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgRmFjZXRJbnRlcnZhbHMgaGFzIGJlZW4gZGVmaW5lZFxuICAgICAqXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBkZWZpbmVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBnZXQgaGFzRmFjZXRJbnRlcnZhbHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmFjZXRJbnRlcnZhbHM/LmludGVydmFscz8ubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXQgaGFzRmFjZXRIaWdobGlnaHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY29uZmlnPy5oaWdobGlnaHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBzb3J0KCk6IFJlcXVlc3RTb3J0RGVmaW5pdGlvbklubmVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3J0aW5nLm1hcCgoZGVmKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogZGVmLnR5cGUsXG4gICAgICAgICAgICBmaWVsZDogZGVmLmZpZWxkLFxuICAgICAgICAgICAgYXNjZW5kaW5nOiBkZWYuYXNjZW5kaW5nXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGZhY2V0UXVlcmllcygpOiBGYWNldFF1ZXJ5W10ge1xuICAgICAgICBpZiAodGhpcy5oYXNGYWNldFF1ZXJpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5mYWNldFF1ZXJpZXMucXVlcmllcy5tYXAoKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgcXVlcnkuZ3JvdXAgPSB0aGlzLmdldFF1ZXJ5R3JvdXAocXVlcnkpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnF1ZXJ5IH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZmFjZXRJbnRlcnZhbHMoKTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMuaGFzRmFjZXRJbnRlcnZhbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0ludGVydmFscyA9IHRoaXMuY29uZmlnLmZhY2V0SW50ZXJ2YWxzO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGludGVydmFsczogY29uZmlnSW50ZXJ2YWxzLmludGVydmFscy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbnRlcnZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0U3VwcG9ydGVkTGFiZWwoaW50ZXJ2YWwubGFiZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBpbnRlcnZhbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRzOiBpbnRlcnZhbC5zZXRzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0U3VwcG9ydGVkTGFiZWwoc2V0LmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydDogc2V0LnN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogc2V0LmVuZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEluY2x1c2l2ZTogc2V0LnN0YXJ0SW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEluY2x1c2l2ZTogc2V0LmVuZEluY2x1c2l2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaGlnaGxpZ2h0KCk6IFJlcXVlc3RIaWdobGlnaHQge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNGYWNldEhpZ2hsaWdodCA/IHRoaXMuY29uZmlnLmhpZ2hsaWdodCA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZpbmFsUXVlcnkoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHF1ZXJ5ID0gJyc7XG4gICAgICAgIGlmICh0aGlzLnVzZXJRdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJSYXdQYXJhbXNbJ3VzZXJRdWVyeSddID0gdGhpcy51c2VyUXVlcnk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzLmZvckVhY2goKGZhY2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21RdWVyeSA9IHRoaXMucXVlcnlGcmFnbWVudHNbZmFjZXQuaWRdO1xuICAgICAgICAgICAgaWYgKGN1c3RvbVF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnkgKz0gJyBBTkQgJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcXVlcnkgKz0gYCgke2N1c3RvbVF1ZXJ5fSlgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgcmVzdWx0ID0gW3RoaXMudXNlclF1ZXJ5LCBxdWVyeV0uZmlsdGVyKChlbnRyeSkgPT4gZW50cnkpLmpvaW4oJyBBTkQgJyk7XG5cbiAgICAgICAgaWYgKHRoaXMudXNlckZhY2V0QnVja2V0cykge1xuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy51c2VyRmFjZXRCdWNrZXRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJRdWVyeSA9ICh0aGlzLnVzZXJGYWNldEJ1Y2tldHNba2V5XSB8fCBbXSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoYnVja2V0KSA9PiBidWNrZXQuZmlsdGVyUXVlcnkpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGJ1Y2tldCkgPT4gYnVja2V0LmZpbHRlclF1ZXJ5KVxuICAgICAgICAgICAgICAgICAgICAuam9pbignIE9SICcpO1xuICAgICAgICAgICAgICAgIGlmIChzdWJRdWVyeSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAnIEFORCAnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBgKCR7c3ViUXVlcnl9KWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZmFjZXRGaWVsZHMoKTogUmVxdWVzdEZhY2V0RmllbGRzIHtcbiAgICAgICAgY29uc3QgZmFjZXRGaWVsZHMgPSB0aGlzLmNvbmZpZy5mYWNldEZpZWxkcz8uZmllbGRzO1xuXG4gICAgICAgIGlmIChmYWNldEZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmYWNldHM6IGZhY2V0RmllbGRzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGZhY2V0KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmFjZXQuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluY291bnQ6IGZhY2V0Lm1pbmNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldFN1cHBvcnRlZExhYmVsKGZhY2V0LmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdDogZmFjZXQubGltaXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBmYWNldC5vZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiBmYWNldC5wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgYW55KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmNsb3NlcyBhIGxhYmVsIG5hbWUgd2l0aCBkb3VibGUgcXVvdGVzIGlmIGl0IGNvbnRhaW5zIHdoaXRlc3BhY2UgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb25maWdMYWJlbCBPcmlnaW5hbCBsYWJlbCB0ZXh0XG4gICAgICogQHJldHVybnMgTGFiZWwsIHBvc3NpYmx5IHdpdGggcXVvdGVzIGlmIGl0IGNvbnRhaW5zIHNwYWNlc1xuICAgICAqL1xuICAgIGdldFN1cHBvcnRlZExhYmVsKGNvbmZpZ0xhYmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBzcGFjZUluc2lkZUxhYmVsSW5kZXggPSBjb25maWdMYWJlbC5zZWFyY2goL1xccy9nKTtcbiAgICAgICAgaWYgKHNwYWNlSW5zaWRlTGFiZWxJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gYFwiJHtjb25maWdMYWJlbH1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmZpZ0xhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuY29kZXMgZmlsdGVyIGNvbmZpZ3VyYXRpb24gc3RvcmVkIGluIGZpbHRlclJhd1BhcmFtcyBvYmplY3QuXG4gICAgICovXG4gICAgZW5jb2RlUXVlcnkoKSB7XG4gICAgICAgIHRoaXMuZW5jb2RlZFF1ZXJ5ID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJSYXdQYXJhbXMpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5jb2RlcyBleGlzdGluZyBmaWx0ZXJzIGNvbmZpZ3VyYXRpb24gYW5kIHVwZGF0ZXMgc2VhcmNoIHF1ZXJ5IHBhcmFtIHZhbHVlLlxuICAgICAqL1xuICAgIHVwZGF0ZVNlYXJjaFF1ZXJ5UGFyYW1zKCkge1xuICAgICAgICB0aGlzLmVuY29kZVF1ZXJ5KCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgcTogdGhpcy5lbmNvZGVkUXVlcnkgfSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIHNlYXJjaCBxdWVyeSB3aXRoIHByb3ZpZGVkIHVzZXIgcXVlcnksIGV4ZWN1dGVzIHF1ZXJ5LCBlbmNvZGVzIGxhdGVzdCBmaWx0ZXIgY29uZmlnIGFuZCBuYXZpZ2F0ZXMgdG8gc2VhcmNoLlxuICAgICAqXG4gICAgICogQHBhcmFtIHF1ZXJ5IHVzZXIgcXVlcnkgdG8gc2VhcmNoIGZvclxuICAgICAqIEBwYXJhbSBzZWFyY2hVcmwgc2VhcmNoIHVybCB0byBuYXZpZ2F0ZSB0b1xuICAgICAqL1xuICAgIGFzeW5jIG5hdmlnYXRlVG9TZWFyY2gocXVlcnk6IHN0cmluZywgc2VhcmNoVXJsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy51c2VyUXVlcnkgPSBxdWVyeTtcbiAgICAgICAgYXdhaXQgdGhpcy5leGVjdXRlKCk7XG4gICAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFtzZWFyY2hVcmxdLCB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtczogeyBxOiB0aGlzLmVuY29kZWRRdWVyeSB9LFxuICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,24 +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
|
-
export * from './base-query-builder.service';
|
|
18
|
-
export * from './search-configuration.service';
|
|
19
|
-
export * from './search-facet-filters.service';
|
|
20
|
-
export * from './search-filter.service';
|
|
21
|
-
export * from './search-header-query-builder.service';
|
|
22
|
-
export * from './search-query-builder.service';
|
|
23
|
-
export * from './search.service';
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3NlYXJjaC9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1mYWNldC1maWx0ZXJzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtZmlsdGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtaGVhZGVyLXF1ZXJ5LWJ1aWxkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2guc2VydmljZSc7XG4iXX0=
|