@alfresco/adf-core 8.1.0-16295066092 → 8.1.0-16320806191
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-core/i18n/de.json +1 -1
- package/bundles/assets/adf-core/i18n/es.json +1 -1
- package/bundles/assets/adf-core/i18n/fr.json +1 -1
- package/bundles/assets/adf-core/i18n/it.json +1 -1
- package/bundles/assets/adf-core/i18n/pl.json +1 -1
- package/bundles/assets/adf-core/i18n/pt.json +1 -1
- package/esm2022/adf-core.mjs +5 -0
- package/esm2022/api/alfresco-adf-core-api.mjs +5 -0
- package/esm2022/api/index.mjs +20 -0
- package/esm2022/api/lib/adf-http-client.service.mjs +311 -0
- package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +33 -0
- package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +25 -0
- package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +80 -0
- package/esm2022/api/lib/interfaces.mjs +18 -0
- package/esm2022/api/lib/types.mjs +18 -0
- package/esm2022/auth/alfresco-adf-core-auth.mjs +5 -0
- package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +56 -0
- package/esm2022/auth/authentication.mjs +19 -0
- package/esm2022/auth/index.mjs +19 -0
- package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +5 -0
- package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +82 -0
- package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +42 -0
- package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +44 -0
- package/esm2022/breadcrumbs/index.mjs +19 -0
- package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +5 -0
- package/esm2022/feature-flags/index.mjs +29 -0
- package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +36 -0
- package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +56 -0
- package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +129 -0
- package/esm2022/feature-flags/lib/directives/features.directive.mjs +63 -0
- package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +63 -0
- package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +38 -0
- package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +38 -0
- package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +40 -0
- package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +24 -0
- package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +62 -0
- package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +51 -0
- package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +36 -0
- package/esm2022/feature-flags/lib/services/debug-features.service.mjs +94 -0
- package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +40 -0
- package/esm2022/feature-flags/lib/services/flagset.parser.mjs +38 -0
- package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +62 -0
- package/esm2022/feature-flags/lib/services/storage-features.service.mjs +126 -0
- package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +51 -0
- package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +51 -0
- package/esm2022/lib/about/about-module-list/module-list.component.mjs +51 -0
- package/esm2022/lib/about/about-package/package-list.component.mjs +65 -0
- package/esm2022/lib/about/about-panel.directive.mjs +37 -0
- package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +59 -0
- package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +18 -0
- package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +42 -0
- package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +51 -0
- package/esm2022/lib/about/about.component.mjs +35 -0
- package/esm2022/lib/about/about.module.mjs +75 -0
- package/esm2022/lib/about/index.mjs +18 -0
- package/esm2022/lib/about/interfaces.mjs +18 -0
- package/esm2022/lib/about/public-api.mjs +28 -0
- package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +51 -0
- package/esm2022/lib/app-config/app-config.loader.mjs +41 -0
- package/esm2022/lib/app-config/app-config.module.mjs +33 -0
- package/esm2022/lib/app-config/app-config.pipe.mjs +38 -0
- package/esm2022/lib/app-config/app-config.service.mjs +243 -0
- package/esm2022/lib/app-config/debug-app-config.service.mjs +44 -0
- package/esm2022/lib/app-config/index.mjs +18 -0
- package/esm2022/lib/app-config/public-api.mjs +22 -0
- package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +67 -0
- package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +356 -0
- package/esm2022/lib/auth/basic-auth/content-auth.mjs +189 -0
- package/esm2022/lib/auth/basic-auth/process-auth.mjs +193 -0
- package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +31 -0
- package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +31 -0
- package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +57 -0
- package/esm2022/lib/auth/guard/auth-guard.mjs +53 -0
- package/esm2022/lib/auth/guard/auth-guard.service.mjs +113 -0
- package/esm2022/lib/auth/index.mjs +18 -0
- package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +18 -0
- package/esm2022/lib/auth/interfaces/authentication.interface.mjs +18 -0
- package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +18 -0
- package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +18 -0
- package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +18 -0
- package/esm2022/lib/auth/models/application-access.model.mjs +18 -0
- package/esm2022/lib/auth/models/identity-group.model.mjs +18 -0
- package/esm2022/lib/auth/models/identity-role.model.mjs +30 -0
- package/esm2022/lib/auth/models/identity-user.model.mjs +18 -0
- package/esm2022/lib/auth/models/oauth-config.model.mjs +18 -0
- package/esm2022/lib/auth/models/redirection.model.mjs +28 -0
- package/esm2022/lib/auth/models/user-access.model.mjs +18 -0
- package/esm2022/lib/auth/oidc/auth-config.mjs +19 -0
- package/esm2022/lib/auth/oidc/auth-config.service.mjs +110 -0
- package/esm2022/lib/auth/oidc/auth-routing.module.mjs +34 -0
- package/esm2022/lib/auth/oidc/auth.module.mjs +112 -0
- package/esm2022/lib/auth/oidc/auth.service.mjs +22 -0
- package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +37 -0
- package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +202 -0
- package/esm2022/lib/auth/oidc/public-api.mjs +24 -0
- package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +267 -0
- package/esm2022/lib/auth/oidc/retry-login.service.mjs +66 -0
- package/esm2022/lib/auth/oidc/token.interceptor.mjs +62 -0
- package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +31 -0
- package/esm2022/lib/auth/public-api.mjs +44 -0
- package/esm2022/lib/auth/services/authentication.service.mjs +190 -0
- package/esm2022/lib/auth/services/base-authentication.service.mjs +99 -0
- package/esm2022/lib/auth/services/identity-group.service.mjs +269 -0
- package/esm2022/lib/auth/services/identity-role.service.mjs +99 -0
- package/esm2022/lib/auth/services/identity-user.service.mjs +443 -0
- package/esm2022/lib/auth/services/jwt-helper.service.mjs +205 -0
- package/esm2022/lib/auth/services/oauth2.service.mjs +69 -0
- package/esm2022/lib/auth/services/time-sync.service.mjs +83 -0
- package/esm2022/lib/auth/services/user-access.service.mjs +110 -0
- package/esm2022/lib/avatar/avatar.component.mjs +51 -0
- package/esm2022/lib/blank-page/blank-page.component.mjs +31 -0
- package/esm2022/lib/blank-page/blank-page.module.mjs +33 -0
- package/esm2022/lib/blank-page/index.mjs +18 -0
- package/esm2022/lib/blank-page/public-api.mjs +19 -0
- package/esm2022/lib/button/button.component.mjs +61 -0
- package/esm2022/lib/card-view/card-view.module.mjs +80 -0
- package/esm2022/lib/card-view/components/base-card-view.mjs +51 -0
- package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +66 -0
- package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +55 -0
- package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +39 -0
- package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +182 -0
- package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +108 -0
- package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +64 -0
- package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +46 -0
- package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +137 -0
- package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +113 -0
- package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +239 -0
- package/esm2022/lib/card-view/components/card-view.components.mjs +28 -0
- package/esm2022/lib/card-view/index.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +29 -0
- package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +18 -0
- package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +18 -0
- package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +28 -0
- package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +64 -0
- package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +36 -0
- package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +58 -0
- package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +28 -0
- package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +33 -0
- package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +36 -0
- package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +27 -0
- package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +36 -0
- package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +32 -0
- package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +41 -0
- package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +40 -0
- package/esm2022/lib/card-view/models/card-view.models.mjs +29 -0
- package/esm2022/lib/card-view/public-api.mjs +25 -0
- package/esm2022/lib/card-view/services/card-item-types.service.mjs +54 -0
- package/esm2022/lib/card-view/services/card-view-update.service.mjs +59 -0
- package/esm2022/lib/card-view/services/card-view.services.mjs +19 -0
- package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +31 -0
- package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +35 -0
- package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +34 -0
- package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +35 -0
- package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +35 -0
- package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +35 -0
- package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +32 -0
- package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +31 -0
- package/esm2022/lib/card-view/validators/card-view.validators.mjs +26 -0
- package/esm2022/lib/card-view/validators/validators.map.mjs +26 -0
- package/esm2022/lib/clipboard/clipboard.directive.mjs +98 -0
- package/esm2022/lib/clipboard/clipboard.module.mjs +34 -0
- package/esm2022/lib/clipboard/clipboard.service.mjs +103 -0
- package/esm2022/lib/clipboard/index.mjs +18 -0
- package/esm2022/lib/clipboard/public-api.mjs +21 -0
- package/esm2022/lib/comments/comment-list/comment-list.component.mjs +52 -0
- package/esm2022/lib/comments/comment-list/comment-list.module.mjs +33 -0
- package/esm2022/lib/comments/comment-list/index.mjs +18 -0
- package/esm2022/lib/comments/comment-list/public-api.mjs +19 -0
- package/esm2022/lib/comments/comments.component.mjs +132 -0
- package/esm2022/lib/comments/comments.module.mjs +33 -0
- package/esm2022/lib/comments/index.mjs +18 -0
- package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +18 -0
- package/esm2022/lib/comments/interfaces/comments.token.mjs +19 -0
- package/esm2022/lib/comments/public-api.mjs +22 -0
- package/esm2022/lib/common/index.mjs +35 -0
- package/esm2022/lib/common/interface/search-component.interface.mjs +18 -0
- package/esm2022/lib/common/mock/app-config.service.mock.mjs +47 -0
- package/esm2022/lib/common/models/default-languages.model.mjs +36 -0
- package/esm2022/lib/common/models/log-levels.model.mjs +33 -0
- package/esm2022/lib/common/models/user-info-mode.enum.mjs +25 -0
- package/esm2022/lib/common/services/cookie.service.mjs +82 -0
- package/esm2022/lib/common/services/download.service.mjs +102 -0
- package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +89 -0
- package/esm2022/lib/common/services/highlight-transform.service.mjs +61 -0
- package/esm2022/lib/common/services/language-item.interface.mjs +18 -0
- package/esm2022/lib/common/services/log.service.mjs +171 -0
- package/esm2022/lib/common/services/page-title.service.mjs +63 -0
- package/esm2022/lib/common/services/sort-by-category.service.mjs +81 -0
- package/esm2022/lib/common/services/storage.service.mjs +143 -0
- package/esm2022/lib/common/services/thumbnail.service.mjs +194 -0
- package/esm2022/lib/common/services/url.service.mjs +45 -0
- package/esm2022/lib/common/services/user-preferences.service.mjs +238 -0
- package/esm2022/lib/common/utils/date-fns-adapter.mjs +115 -0
- package/esm2022/lib/common/utils/date-fns-utils.mjs +222 -0
- package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +134 -0
- package/esm2022/lib/common/utils/file-utils.mjs +65 -0
- package/esm2022/lib/common/utils/index.mjs +18 -0
- package/esm2022/lib/common/utils/moment-date-adapter.mjs +202 -0
- package/esm2022/lib/common/utils/moment-date-formats.model.mjs +32 -0
- package/esm2022/lib/common/utils/object-utils.mjs +107 -0
- package/esm2022/lib/common/utils/public-api.mjs +25 -0
- package/esm2022/lib/common/utils/string-utils.mjs +45 -0
- package/esm2022/lib/context-menu/animations.mjs +33 -0
- package/esm2022/lib/context-menu/context-menu-list.component.mjs +91 -0
- package/esm2022/lib/context-menu/context-menu-overlay.mjs +25 -0
- package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +109 -0
- package/esm2022/lib/context-menu/context-menu.directive.mjs +63 -0
- package/esm2022/lib/context-menu/context-menu.module.mjs +35 -0
- package/esm2022/lib/context-menu/context-menu.tokens.mjs +19 -0
- package/esm2022/lib/context-menu/index.mjs +18 -0
- package/esm2022/lib/context-menu/interfaces.mjs +18 -0
- package/esm2022/lib/context-menu/public-api.mjs +21 -0
- package/esm2022/lib/core.module.mjs +314 -0
- package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +45 -0
- package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +65 -0
- package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +55 -0
- package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +113 -0
- package/esm2022/lib/datatable/components/data-cell.event.mjs +31 -0
- package/esm2022/lib/datatable/components/data-row-action.event.mjs +34 -0
- package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +914 -0
- package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +126 -0
- package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +98 -0
- package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +78 -0
- package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +60 -0
- package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +49 -0
- package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +67 -0
- package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +86 -0
- package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +69 -0
- package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +153 -0
- package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +42 -0
- package/esm2022/lib/datatable/data/data-column.model.mjs +18 -0
- package/esm2022/lib/datatable/data/data-row-event.model.mjs +26 -0
- package/esm2022/lib/datatable/data/data-row-update.model.mjs +18 -0
- package/esm2022/lib/datatable/data/data-row.model.mjs +18 -0
- package/esm2022/lib/datatable/data/data-sorting.model.mjs +24 -0
- package/esm2022/lib/datatable/data/data-table.schema.mjs +132 -0
- package/esm2022/lib/datatable/data/datatable-adapter.mjs +18 -0
- package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +46 -0
- package/esm2022/lib/datatable/data/object-datarow.model.mjs +41 -0
- package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +134 -0
- package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +45 -0
- package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +36 -0
- package/esm2022/lib/datatable/data-column/data-column.component.mjs +114 -0
- package/esm2022/lib/datatable/data-column/index.mjs +18 -0
- package/esm2022/lib/datatable/data-column/public-api.mjs +20 -0
- package/esm2022/lib/datatable/datatable.module.mjs +161 -0
- package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +35 -0
- package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +30 -0
- package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +35 -0
- package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +89 -0
- package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +43 -0
- package/esm2022/lib/datatable/directives/loading-template.directive.mjs +46 -0
- package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +43 -0
- package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +46 -0
- package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +46 -0
- package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +173 -0
- package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +72 -0
- package/esm2022/lib/datatable/directives/resizable/types.mjs +18 -0
- package/esm2022/lib/datatable/index.mjs +18 -0
- package/esm2022/lib/datatable/public-api.mjs +55 -0
- package/esm2022/lib/datatable/services/datatable.service.mjs +33 -0
- package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +50 -0
- package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +38 -0
- package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +18 -0
- package/esm2022/lib/dialogs/dialog/dialog.component.mjs +70 -0
- package/esm2022/lib/dialogs/dialog/dialog.model.mjs +22 -0
- package/esm2022/lib/dialogs/dialog/index.mjs +20 -0
- package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +52 -0
- package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +34 -0
- package/esm2022/lib/dialogs/index.mjs +18 -0
- package/esm2022/lib/dialogs/public-api.mjs +25 -0
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +73 -0
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +18 -0
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +33 -0
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +64 -0
- package/esm2022/lib/directives/directive.module.mjs +56 -0
- package/esm2022/lib/directives/highlight.directive.mjs +67 -0
- package/esm2022/lib/directives/index.mjs +18 -0
- package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +67 -0
- package/esm2022/lib/directives/logout.directive.mjs +72 -0
- package/esm2022/lib/directives/public-api.mjs +24 -0
- package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +60 -0
- package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +104 -0
- package/esm2022/lib/directives/upload.directive.mjs +241 -0
- package/esm2022/lib/dynamic-chip-list/chip.mjs +18 -0
- package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +204 -0
- package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +33 -0
- package/esm2022/lib/dynamic-chip-list/index.mjs +18 -0
- package/esm2022/lib/dynamic-chip-list/public-api.mjs +20 -0
- package/esm2022/lib/events/base-ui.event.mjs +21 -0
- package/esm2022/lib/events/base.event.mjs +29 -0
- package/esm2022/lib/events/index.mjs +18 -0
- package/esm2022/lib/events/public-api.mjs +19 -0
- package/esm2022/lib/form/components/form-base.component.mjs +212 -0
- package/esm2022/lib/form/components/form-custom-button.directive.mjs +30 -0
- package/esm2022/lib/form/components/form-field/form-field.component.mjs +142 -0
- package/esm2022/lib/form/components/form-renderer.component.mjs +161 -0
- package/esm2022/lib/form/components/form-section/form-section.component.mjs +46 -0
- package/esm2022/lib/form/components/helpers/buttons-visibility.mjs +37 -0
- package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +37 -0
- package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +48 -0
- package/esm2022/lib/form/components/middlewares/middleware.mjs +19 -0
- package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +77 -0
- package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +59 -0
- package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +52 -0
- package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +28 -0
- package/esm2022/lib/form/components/widgets/core/container.model.mjs +50 -0
- package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +52 -0
- package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +38 -0
- package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/external-content.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +74 -0
- package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +23 -0
- package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +268 -0
- package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +490 -0
- package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +32 -0
- package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +38 -0
- package/esm2022/lib/form/components/widgets/core/form-values.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +33 -0
- package/esm2022/lib/form/components/widgets/core/form.model.mjs +387 -0
- package/esm2022/lib/form/components/widgets/core/group.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/index.mjs +49 -0
- package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +115 -0
- package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/tab.model.mjs +34 -0
- package/esm2022/lib/form/components/widgets/core/theme.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +27 -0
- package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +18 -0
- package/esm2022/lib/form/components/widgets/date/date.widget.mjs +162 -0
- package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +153 -0
- package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +53 -0
- package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +86 -0
- package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +46 -0
- package/esm2022/lib/form/components/widgets/display-text/index.mjs +19 -0
- package/esm2022/lib/form/components/widgets/error/error.component.mjs +92 -0
- package/esm2022/lib/form/components/widgets/header/header.schema.mjs +86 -0
- package/esm2022/lib/form/components/widgets/header/header.widget.mjs +42 -0
- package/esm2022/lib/form/components/widgets/header/index.mjs +19 -0
- package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +69 -0
- package/esm2022/lib/form/components/widgets/index.mjs +71 -0
- package/esm2022/lib/form/components/widgets/json/json.widget.mjs +66 -0
- package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +55 -0
- package/esm2022/lib/form/components/widgets/number/number.widget.mjs +71 -0
- package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +18 -0
- package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +215 -0
- package/esm2022/lib/form/components/widgets/text/text.widget.mjs +65 -0
- package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +63 -0
- package/esm2022/lib/form/components/widgets/widget.component.mjs +110 -0
- package/esm2022/lib/form/events/form-error.event.mjs +24 -0
- package/esm2022/lib/form/events/form-field.event.mjs +24 -0
- package/esm2022/lib/form/events/form-rules.event.mjs +25 -0
- package/esm2022/lib/form/events/form-spinner.event.mjs +23 -0
- package/esm2022/lib/form/events/form.event.mjs +29 -0
- package/esm2022/lib/form/events/index.mjs +24 -0
- package/esm2022/lib/form/events/validate-form-field.event.mjs +24 -0
- package/esm2022/lib/form/events/validate-form.event.mjs +25 -0
- package/esm2022/lib/form/form-base.module.mjs +90 -0
- package/esm2022/lib/form/index.mjs +18 -0
- package/esm2022/lib/form/models/form-rules.model.mjs +77 -0
- package/esm2022/lib/form/models/task-process-variable.model.mjs +19 -0
- package/esm2022/lib/form/models/widget-visibility.model.mjs +104 -0
- package/esm2022/lib/form/pipes/field-style.pipe.mjs +45 -0
- package/esm2022/lib/form/pipes/index.mjs +18 -0
- package/esm2022/lib/form/public-api.mjs +35 -0
- package/esm2022/lib/form/services/form-rendering.service.mjs +53 -0
- package/esm2022/lib/form/services/form-validation-service.interface.mjs +18 -0
- package/esm2022/lib/form/services/form.service.mjs +86 -0
- package/esm2022/lib/form/services/widget-visibility.service.mjs +294 -0
- package/esm2022/lib/header/header.component.mjs +73 -0
- package/esm2022/lib/header/index.mjs +18 -0
- package/esm2022/lib/header/navbar/navbar-item.component.mjs +37 -0
- package/esm2022/lib/header/navbar/navbar.component.mjs +36 -0
- package/esm2022/lib/header/public-api.mjs +20 -0
- package/esm2022/lib/icon/icon.component.mjs +51 -0
- package/esm2022/lib/icon/icon.module.mjs +36 -0
- package/esm2022/lib/icon/index.mjs +18 -0
- package/esm2022/lib/icon/public-api.mjs +19 -0
- package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +86 -0
- package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +33 -0
- package/esm2022/lib/identity-user-info/index.mjs +18 -0
- package/esm2022/lib/identity-user-info/public-api.mjs +19 -0
- package/esm2022/lib/info-drawer/index.mjs +18 -0
- package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +71 -0
- package/esm2022/lib/info-drawer/info-drawer.component.mjs +113 -0
- package/esm2022/lib/info-drawer/info-drawer.module.mjs +53 -0
- package/esm2022/lib/info-drawer/public-api.mjs +20 -0
- package/esm2022/lib/interface/index.mjs +18 -0
- package/esm2022/lib/interface/injection.tokens.mjs +19 -0
- package/esm2022/lib/interface/public-api.mjs +18 -0
- package/esm2022/lib/language-menu/index.mjs +18 -0
- package/esm2022/lib/language-menu/language-menu.component.mjs +61 -0
- package/esm2022/lib/language-menu/language-menu.module.mjs +35 -0
- package/esm2022/lib/language-menu/language-picker.component.mjs +77 -0
- package/esm2022/lib/language-menu/public-api.mjs +21 -0
- package/esm2022/lib/language-menu/service/language.service.interface.mjs +18 -0
- package/esm2022/lib/language-menu/service/language.service.mjs +34 -0
- package/esm2022/lib/layout/components/header/header.component.mjs +99 -0
- package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +180 -0
- package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +82 -0
- package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +145 -0
- package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +33 -0
- package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +33 -0
- package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +33 -0
- package/esm2022/lib/layout/index.mjs +18 -0
- package/esm2022/lib/layout/layout.module.mjs +72 -0
- package/esm2022/lib/layout/public-api.mjs +25 -0
- package/esm2022/lib/login/components/login/login.component.mjs +367 -0
- package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +18 -0
- package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +57 -0
- package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +48 -0
- package/esm2022/lib/login/directives/login-footer.directive.mjs +41 -0
- package/esm2022/lib/login/directives/login-header.directive.mjs +41 -0
- package/esm2022/lib/login/index.mjs +18 -0
- package/esm2022/lib/login/login.module.mjs +54 -0
- package/esm2022/lib/login/models/login-error.event.mjs +22 -0
- package/esm2022/lib/login/models/login-submit.event.mjs +32 -0
- package/esm2022/lib/login/models/login-success.event.mjs +24 -0
- package/esm2022/lib/login/public-api.mjs +27 -0
- package/esm2022/lib/material.module.mjs +254 -0
- package/esm2022/lib/mock/cookie.service.mock.mjs +43 -0
- package/esm2022/lib/mock/data-column.mock.mjs +73 -0
- package/esm2022/lib/mock/event.mock.mjs +39 -0
- package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +225 -0
- package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +347 -0
- package/esm2022/lib/mock/form/form-definition.mock.mjs +403 -0
- package/esm2022/lib/mock/form/form.component.mock.mjs +275 -0
- package/esm2022/lib/mock/form/form.service.mock.mjs +248 -0
- package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +1835 -0
- package/esm2022/lib/mock/index.mjs +18 -0
- package/esm2022/lib/mock/public-api.mjs +27 -0
- package/esm2022/lib/mock/translation.service.mock.mjs +44 -0
- package/esm2022/lib/models/comment.model.mjs +51 -0
- package/esm2022/lib/models/component.model.mjs +24 -0
- package/esm2022/lib/models/decimal-number.model.mjs +26 -0
- package/esm2022/lib/models/general-user.model.mjs +24 -0
- package/esm2022/lib/models/index.mjs +18 -0
- package/esm2022/lib/models/pagination.model.mjs +29 -0
- package/esm2022/lib/models/path.model.mjs +24 -0
- package/esm2022/lib/models/product-version.model.mjs +28 -0
- package/esm2022/lib/models/public-api.mjs +24 -0
- package/esm2022/lib/models/request-pagination.model.mjs +25 -0
- package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +44 -0
- package/esm2022/lib/notifications/components/notification-history.component.mjs +138 -0
- package/esm2022/lib/notifications/helpers/notification.factory.mjs +43 -0
- package/esm2022/lib/notifications/index.mjs +18 -0
- package/esm2022/lib/notifications/models/notification.model.mjs +25 -0
- package/esm2022/lib/notifications/notification-history.module.mjs +35 -0
- package/esm2022/lib/notifications/public-api.mjs +23 -0
- package/esm2022/lib/notifications/services/notification.service.mjs +166 -0
- package/esm2022/lib/pagination/index.mjs +18 -0
- package/esm2022/lib/pagination/infinite-pagination.component.mjs +111 -0
- package/esm2022/lib/pagination/paginated-component.interface.mjs +18 -0
- package/esm2022/lib/pagination/pagination-component.interface.mjs +18 -0
- package/esm2022/lib/pagination/pagination.component.mjs +263 -0
- package/esm2022/lib/pagination/pagination.module.mjs +35 -0
- package/esm2022/lib/pagination/public-api.mjs +22 -0
- package/esm2022/lib/pipes/date-time.pipe.mjs +46 -0
- package/esm2022/lib/pipes/decimal-number.pipe.mjs +78 -0
- package/esm2022/lib/pipes/file-size.pipe.mjs +54 -0
- package/esm2022/lib/pipes/file-type.pipe.mjs +40 -0
- package/esm2022/lib/pipes/format-space.pipe.mjs +39 -0
- package/esm2022/lib/pipes/full-name.pipe.mjs +43 -0
- package/esm2022/lib/pipes/index.mjs +18 -0
- package/esm2022/lib/pipes/localized-date.pipe.mjs +70 -0
- package/esm2022/lib/pipes/multi-value.pipe.mjs +37 -0
- package/esm2022/lib/pipes/pipe.module.mjs +83 -0
- package/esm2022/lib/pipes/public-api.mjs +30 -0
- package/esm2022/lib/pipes/text-highlight.pipe.mjs +39 -0
- package/esm2022/lib/pipes/time-ago.pipe.mjs +65 -0
- package/esm2022/lib/pipes/truncate.pipe.mjs +33 -0
- package/esm2022/lib/pipes/user-initial.pipe.mjs +52 -0
- package/esm2022/lib/pipes/user-like.interface.mjs +18 -0
- package/esm2022/lib/progress/progress.component.mjs +90 -0
- package/esm2022/lib/search-text/animations.mjs +32 -0
- package/esm2022/lib/search-text/index.mjs +18 -0
- package/esm2022/lib/search-text/models/search-text-input.model.mjs +23 -0
- package/esm2022/lib/search-text/public-api.mjs +22 -0
- package/esm2022/lib/search-text/search-text-input.component.mjs +283 -0
- package/esm2022/lib/search-text/search-text-input.module.mjs +35 -0
- package/esm2022/lib/search-text/search-trigger.directive.mjs +181 -0
- package/esm2022/lib/snackbar-content/index.mjs +18 -0
- package/esm2022/lib/snackbar-content/public-api.mjs +20 -0
- package/esm2022/lib/snackbar-content/snack-bar-data.mjs +18 -0
- package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +49 -0
- package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +33 -0
- package/esm2022/lib/sorting-picker/index.mjs +18 -0
- package/esm2022/lib/sorting-picker/public-api.mjs +18 -0
- package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +67 -0
- package/esm2022/lib/templates/empty-content/empty-content.component.mjs +43 -0
- package/esm2022/lib/templates/error-content/error-content.component.mjs +61 -0
- package/esm2022/lib/templates/index.mjs +18 -0
- package/esm2022/lib/templates/public-api.mjs +20 -0
- package/esm2022/lib/templates/template.module.mjs +38 -0
- package/esm2022/lib/testing/core.story.module.mjs +39 -0
- package/esm2022/lib/testing/core.testing.module.mjs +35 -0
- package/esm2022/lib/testing/index.mjs +22 -0
- package/esm2022/lib/testing/noop-auth.module.mjs +80 -0
- package/esm2022/lib/testing/noop-translate.module.mjs +61 -0
- package/esm2022/lib/testing/unit-testing-utils.mjs +364 -0
- package/esm2022/lib/toolbar/index.mjs +18 -0
- package/esm2022/lib/toolbar/public-api.mjs +21 -0
- package/esm2022/lib/toolbar/toolbar-divider.component.mjs +27 -0
- package/esm2022/lib/toolbar/toolbar-title.component.mjs +32 -0
- package/esm2022/lib/toolbar/toolbar.component.mjs +39 -0
- package/esm2022/lib/toolbar/toolbar.module.mjs +36 -0
- package/esm2022/lib/translation/index.mjs +18 -0
- package/esm2022/lib/translation/public-api.mjs +19 -0
- package/esm2022/lib/translation/translate-loader.service.mjs +148 -0
- package/esm2022/lib/translation/translation.service.mjs +148 -0
- package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +36 -0
- package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +220 -0
- package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +64 -0
- package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +550 -0
- package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +60 -0
- package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +48 -0
- package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +198 -0
- package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +85 -0
- package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +32 -0
- package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +216 -0
- package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +46 -0
- package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +34 -0
- package/esm2022/lib/viewer/components/viewer.component.mjs +486 -0
- package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +67 -0
- package/esm2022/lib/viewer/index.mjs +18 -0
- package/esm2022/lib/viewer/models/download-prompt.actions.mjs +23 -0
- package/esm2022/lib/viewer/models/viewer.model.mjs +22 -0
- package/esm2022/lib/viewer/public-api.mjs +40 -0
- package/esm2022/lib/viewer/services/rendering-queue.services.mjs +179 -0
- package/esm2022/lib/viewer/services/view-util.service.mjs +149 -0
- package/esm2022/lib/viewer/viewer.module.mjs +110 -0
- package/esm2022/public-api.mjs +60 -0
- package/esm2022/shell/alfresco-adf-core-shell.mjs +5 -0
- package/esm2022/shell/index.mjs +20 -0
- package/esm2022/shell/lib/components/shell/shell.component.mjs +122 -0
- package/esm2022/shell/lib/services/shell-app.service.mjs +22 -0
- package/esm2022/shell/lib/shell.module.mjs +79 -0
- package/esm2022/shell/lib/shell.routes.mjs +25 -0
- package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +35 -4
- package/fesm2022/adf-core.mjs +1177 -1166
- package/fesm2022/adf-core.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-api.mjs +4 -4
- package/fesm2022/alfresco-adf-core-api.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-auth.mjs +3 -3
- package/fesm2022/alfresco-adf-core-auth.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-breadcrumbs.mjs +11 -11
- package/fesm2022/alfresco-adf-core-breadcrumbs.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-feature-flags.mjs +59 -52
- package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-shell.mjs +21 -96
- package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
- package/lib/app-config/app-config.module.d.ts +0 -1
- package/lib/app-config/public-api.d.ts +0 -1
- package/lib/auth/oidc/auth.module.d.ts +4 -4
- package/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.d.ts +1 -1
- package/lib/card-view/components/base-card-view.d.ts +1 -1
- package/lib/card-view/components/card-view/card-view.component.scss +9 -12
- package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +2 -1
- package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +5 -2
- package/lib/core.module.d.ts +128 -124
- package/lib/datatable/data/data-table.schema.d.ts +1 -1
- package/lib/dialogs/confirm-dialog/confirm.dialog.d.ts +1 -1
- package/lib/dialogs/confirm-dialog/confirm.dialog.module.d.ts +6 -2
- package/lib/form/form-base.module.d.ts +0 -1
- package/lib/testing/core.testing.module.d.ts +0 -1
- package/lib/testing/noop-translate.module.d.ts +2 -1
- package/lib/translation/public-api.d.ts +0 -1
- package/package.json +15 -3
- package/shell/README.md +6 -20
- package/shell/index.d.ts +0 -2
- package/shell/lib/shell.module.d.ts +7 -4
- package/shell/lib/shell.routes.d.ts +1 -13
- package/lib/app-config/provide-app-config.d.ts +0 -23
- package/lib/translation/provide-i18n.d.ts +0 -39
- package/shell/lib/providers.d.ts +0 -36
|
@@ -0,0 +1,22 @@
|
|
|
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 './core.testing.module';
|
|
18
|
+
export * from './core.story.module';
|
|
19
|
+
export * from './noop-translate.module';
|
|
20
|
+
export * from './noop-auth.module';
|
|
21
|
+
export * from './unit-testing-utils';
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zcmMvbGliL3Rlc3RpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2NvcmUudGVzdGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlLnN0b3J5Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL25vb3AtdHJhbnNsYXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL25vb3AtYXV0aC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi91bml0LXRlc3RpbmctdXRpbHMnO1xuIl19
|
|
@@ -0,0 +1,80 @@
|
|
|
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 { APP_INITIALIZER, Injectable, NgModule } from '@angular/core';
|
|
18
|
+
import { AuthModule, JWT_STORAGE_SERVICE } from '../auth/oidc/auth.module';
|
|
19
|
+
import { RedirectAuthService } from '../auth/oidc/redirect-auth.service';
|
|
20
|
+
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
|
21
|
+
import { RouterTestingModule } from '@angular/router/testing';
|
|
22
|
+
import { AppConfigService, StoragePrefixFactory } from '../app-config';
|
|
23
|
+
import { AppConfigServiceMock, CookieService, StorageService } from '../common';
|
|
24
|
+
import { CookieServiceMock } from '../mock';
|
|
25
|
+
import { EMPTY, of } from 'rxjs';
|
|
26
|
+
import { loadAppConfig } from '../app-config/app-config.loader';
|
|
27
|
+
import { AdfHttpClient } from '@alfresco/adf-core/api';
|
|
28
|
+
import * as i0 from "@angular/core";
|
|
29
|
+
import * as i1 from "../auth/oidc/auth.module";
|
|
30
|
+
export class NoopRedirectAuthService extends RedirectAuthService {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(...arguments);
|
|
33
|
+
this.onLogin = EMPTY;
|
|
34
|
+
this.onTokenReceived = of();
|
|
35
|
+
}
|
|
36
|
+
init() {
|
|
37
|
+
return Promise.resolve(true);
|
|
38
|
+
}
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopRedirectAuthService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
40
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopRedirectAuthService, providedIn: 'root' }); }
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopRedirectAuthService, decorators: [{
|
|
43
|
+
type: Injectable,
|
|
44
|
+
args: [{ providedIn: 'root' }]
|
|
45
|
+
}] });
|
|
46
|
+
export class NoopAuthModule {
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
48
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NoopAuthModule, imports: [i1.AuthModule, HttpClientTestingModule, RouterTestingModule] }); }
|
|
49
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopAuthModule, providers: [
|
|
50
|
+
{ provide: AppConfigService, useClass: AppConfigServiceMock },
|
|
51
|
+
{ provide: CookieService, useClass: CookieServiceMock },
|
|
52
|
+
{ provide: RedirectAuthService, useClass: NoopRedirectAuthService },
|
|
53
|
+
{
|
|
54
|
+
provide: APP_INITIALIZER,
|
|
55
|
+
useFactory: loadAppConfig,
|
|
56
|
+
deps: [AppConfigService, StorageService, AdfHttpClient, StoragePrefixFactory],
|
|
57
|
+
multi: true
|
|
58
|
+
},
|
|
59
|
+
{ provide: JWT_STORAGE_SERVICE, useClass: StorageService }
|
|
60
|
+
], imports: [AuthModule.forRoot({ useHash: true }), HttpClientTestingModule, RouterTestingModule] }); }
|
|
61
|
+
}
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopAuthModule, decorators: [{
|
|
63
|
+
type: NgModule,
|
|
64
|
+
args: [{
|
|
65
|
+
imports: [AuthModule.forRoot({ useHash: true }), HttpClientTestingModule, RouterTestingModule],
|
|
66
|
+
providers: [
|
|
67
|
+
{ provide: AppConfigService, useClass: AppConfigServiceMock },
|
|
68
|
+
{ provide: CookieService, useClass: CookieServiceMock },
|
|
69
|
+
{ provide: RedirectAuthService, useClass: NoopRedirectAuthService },
|
|
70
|
+
{
|
|
71
|
+
provide: APP_INITIALIZER,
|
|
72
|
+
useFactory: loadAppConfig,
|
|
73
|
+
deps: [AppConfigService, StorageService, AdfHttpClient, StoragePrefixFactory],
|
|
74
|
+
multi: true
|
|
75
|
+
},
|
|
76
|
+
{ provide: JWT_STORAGE_SERVICE, useClass: StorageService }
|
|
77
|
+
]
|
|
78
|
+
}]
|
|
79
|
+
}] });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC1hdXRoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdGVzdGluZy9ub29wLWF1dGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFHdkQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjtJQURoRTs7UUFFSSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLG9CQUFlLEdBQUcsRUFBRSxFQUFFLENBQUM7S0FLMUI7SUFIRyxJQUFJO1FBQ0EsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBTlEsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FEVixNQUFNOzs0RkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUF5QmxDLE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYywyQkFkMEIsdUJBQXVCLEVBQUUsbUJBQW1CO2dIQWNwRixjQUFjLGFBYlo7WUFDUCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7WUFDN0QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtZQUN2RCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUU7WUFDbkU7Z0JBQ0ksT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFVBQVUsRUFBRSxhQUFhO2dCQUN6QixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixDQUFDO2dCQUM3RSxLQUFLLEVBQUUsSUFBSTthQUNkO1lBQ0QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTtTQUM3RCxZQVpTLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUI7OzRGQWNwRixjQUFjO2tCQWYxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsQ0FBQztvQkFDOUYsU0FBUyxFQUFFO3dCQUNQLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTt3QkFDN0QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTt3QkFDdkQsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFO3dCQUNuRTs0QkFDSSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxFQUFFLGFBQWE7NEJBQ3pCLElBQUksRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLENBQUM7NEJBQzdFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNELEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUU7cUJBQzdEO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIEluamVjdGFibGUsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoTW9kdWxlLCBKV1RfU1RPUkFHRV9TRVJWSUNFIH0gZnJvbSAnLi4vYXV0aC9vaWRjL2F1dGgubW9kdWxlJztcbmltcG9ydCB7IFJlZGlyZWN0QXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL29pZGMvcmVkaXJlY3QtYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBDbGllbnRUZXN0aW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAvdGVzdGluZyc7XG5pbXBvcnQgeyBSb3V0ZXJUZXN0aW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyL3Rlc3RpbmcnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgU3RvcmFnZVByZWZpeEZhY3RvcnkgfSBmcm9tICcuLi9hcHAtY29uZmlnJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2VNb2NrLCBDb29raWVTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlTW9jayB9IGZyb20gJy4uL21vY2snO1xuaW1wb3J0IHsgRU1QVFksIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBsb2FkQXBwQ29uZmlnIH0gZnJvbSAnLi4vYXBwLWNvbmZpZy9hcHAtY29uZmlnLmxvYWRlcic7XG5pbXBvcnQgeyBBZGZIdHRwQ2xpZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlL2FwaSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTm9vcFJlZGlyZWN0QXV0aFNlcnZpY2UgZXh0ZW5kcyBSZWRpcmVjdEF1dGhTZXJ2aWNlIHtcbiAgICBvbkxvZ2luID0gRU1QVFk7XG4gICAgb25Ub2tlblJlY2VpdmVkID0gb2YoKTtcblxuICAgIGluaXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtBdXRoTW9kdWxlLmZvclJvb3QoeyB1c2VIYXNoOiB0cnVlIH0pLCBIdHRwQ2xpZW50VGVzdGluZ01vZHVsZSwgUm91dGVyVGVzdGluZ01vZHVsZV0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQXBwQ29uZmlnU2VydmljZSwgdXNlQ2xhc3M6IEFwcENvbmZpZ1NlcnZpY2VNb2NrIH0sXG4gICAgICAgIHsgcHJvdmlkZTogQ29va2llU2VydmljZSwgdXNlQ2xhc3M6IENvb2tpZVNlcnZpY2VNb2NrIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUmVkaXJlY3RBdXRoU2VydmljZSwgdXNlQ2xhc3M6IE5vb3BSZWRpcmVjdEF1dGhTZXJ2aWNlIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IGxvYWRBcHBDb25maWcsXG4gICAgICAgICAgICBkZXBzOiBbQXBwQ29uZmlnU2VydmljZSwgU3RvcmFnZVNlcnZpY2UsIEFkZkh0dHBDbGllbnQsIFN0b3JhZ2VQcmVmaXhGYWN0b3J5XSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHsgcHJvdmlkZTogSldUX1NUT1JBR0VfU0VSVklDRSwgdXNlQ2xhc3M6IFN0b3JhZ2VTZXJ2aWNlIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5vb3BBdXRoTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
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 { EventEmitter, Injectable, NgModule } from '@angular/core';
|
|
18
|
+
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
|
19
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
20
|
+
import { TranslationService } from '../translation/translation.service';
|
|
21
|
+
import { of } from 'rxjs';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@ngx-translate/core";
|
|
24
|
+
export class NoopTranslationService {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.defaultLang = 'en';
|
|
27
|
+
this.translate = {
|
|
28
|
+
onLangChange: new EventEmitter()
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
addTranslationFolder() { }
|
|
32
|
+
onTranslationChanged() { }
|
|
33
|
+
use() { }
|
|
34
|
+
loadTranslation() { }
|
|
35
|
+
get(key) {
|
|
36
|
+
return of(key);
|
|
37
|
+
}
|
|
38
|
+
instant(key) {
|
|
39
|
+
return key;
|
|
40
|
+
}
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslationService, providedIn: 'root' }); }
|
|
43
|
+
}
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslationService, decorators: [{
|
|
45
|
+
type: Injectable,
|
|
46
|
+
args: [{ providedIn: 'root' }]
|
|
47
|
+
}] });
|
|
48
|
+
export class NoopTranslateModule {
|
|
49
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
50
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, imports: [HttpClientTestingModule, i1.TranslateModule], exports: [TranslateModule] }); }
|
|
51
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, providers: [{ provide: TranslationService, useClass: NoopTranslationService }], imports: [HttpClientTestingModule, TranslateModule.forRoot(), TranslateModule] }); }
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopTranslateModule, decorators: [{
|
|
54
|
+
type: NgModule,
|
|
55
|
+
args: [{
|
|
56
|
+
imports: [HttpClientTestingModule, TranslateModule.forRoot()],
|
|
57
|
+
providers: [{ provide: TranslationService, useClass: NoopTranslationService }],
|
|
58
|
+
exports: [TranslateModule]
|
|
59
|
+
}]
|
|
60
|
+
}] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC10cmFuc2xhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90ZXN0aW5nL25vb3AtdHJhbnNsYXRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXhFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUd0QyxNQUFNLE9BQU8sc0JBQXNCO0lBRG5DO1FBRUksZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFJM0IsY0FBUyxHQUFRO1lBQ2IsWUFBWSxFQUFFLElBQUksWUFBWSxFQUFtQjtTQUNwRCxDQUFDO0tBY0w7SUFaRyxvQkFBb0IsS0FBSSxDQUFDO0lBQ3pCLG9CQUFvQixLQUFJLENBQUM7SUFDekIsR0FBRyxLQUFTLENBQUM7SUFDYixlQUFlLEtBQUksQ0FBQztJQUVwQixHQUFHLENBQUMsR0FBMkI7UUFDM0IsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUEyQjtRQUMvQixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7K0dBcEJRLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRFQsTUFBTTs7NEZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBNkJsQyxNQUFNLE9BQU8sbUJBQW1COytHQUFuQixtQkFBbUI7Z0hBQW5CLG1CQUFtQixZQUpsQix1QkFBdUIsaUNBRXZCLGVBQWU7Z0hBRWhCLG1CQUFtQixhQUhqQixDQUFDLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLFlBRHBFLHVCQUF1QixFQUFFLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFFbEQsZUFBZTs7NEZBRWhCLG1CQUFtQjtrQkFML0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzdELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO29CQUM5RSxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50VGVzdGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwL3Rlc3RpbmcnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IExhbmdDaGFuZ2VFdmVudCB9IGZyb20gJy4uL21vY2snO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOb29wVHJhbnNsYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgVHJhbnNsYXRpb25TZXJ2aWNlIHtcbiAgICBkZWZhdWx0TGFuZzogc3RyaW5nID0gJ2VuJztcbiAgICB1c2VyTGFuZzogc3RyaW5nO1xuICAgIGN1c3RvbUxvYWRlcjogYW55O1xuXG4gICAgdHJhbnNsYXRlOiBhbnkgPSB7XG4gICAgICAgIG9uTGFuZ0NoYW5nZTogbmV3IEV2ZW50RW1pdHRlcjxMYW5nQ2hhbmdlRXZlbnQ+KClcbiAgICB9O1xuXG4gICAgYWRkVHJhbnNsYXRpb25Gb2xkZXIoKSB7fVxuICAgIG9uVHJhbnNsYXRpb25DaGFuZ2VkKCkge31cbiAgICB1c2UoKTogYW55IHt9XG4gICAgbG9hZFRyYW5zbGF0aW9uKCkge31cblxuICAgIGdldChrZXk6IHN0cmluZyB8IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPHN0cmluZyB8IGFueT4ge1xuICAgICAgICByZXR1cm4gb2Yoa2V5KTtcbiAgICB9XG5cbiAgICBpbnN0YW50KGtleTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPik6IHN0cmluZyB8IGFueSB7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtIdHRwQ2xpZW50VGVzdGluZ01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3QoKV0sXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUcmFuc2xhdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOb29wVHJhbnNsYXRpb25TZXJ2aWNlIH1dLFxuICAgIGV4cG9ydHM6IFtUcmFuc2xhdGVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE5vb3BUcmFuc2xhdGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,364 @@
|
|
|
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 { By } from '@angular/platform-browser';
|
|
18
|
+
import { MatSelectHarness } from '@angular/material/select/testing';
|
|
19
|
+
import { MatChipGridHarness, MatChipHarness, MatChipListboxHarness } from '@angular/material/chips/testing';
|
|
20
|
+
import { MatButtonHarness } from '@angular/material/button/testing';
|
|
21
|
+
import { MatIconHarness } from '@angular/material/icon/testing';
|
|
22
|
+
import { MatCheckboxHarness } from '@angular/material/checkbox/testing';
|
|
23
|
+
import { MatErrorHarness, MatFormFieldHarness } from '@angular/material/form-field/testing';
|
|
24
|
+
import { MatInputHarness } from '@angular/material/input/testing';
|
|
25
|
+
import { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';
|
|
26
|
+
import { MatTabGroupHarness } from '@angular/material/tabs/testing';
|
|
27
|
+
import { MatToolbarHarness } from '@angular/material/toolbar/testing';
|
|
28
|
+
import { MatSnackBarHarness } from '@angular/material/snack-bar/testing';
|
|
29
|
+
import { MatProgressBarHarness } from '@angular/material/progress-bar/testing';
|
|
30
|
+
export class UnitTestingUtils {
|
|
31
|
+
constructor(debugElement, loader) {
|
|
32
|
+
this.debugElement = debugElement;
|
|
33
|
+
this.loader = loader;
|
|
34
|
+
this.debugElement = debugElement;
|
|
35
|
+
this.loader = loader;
|
|
36
|
+
}
|
|
37
|
+
setDebugElement(debugElement) {
|
|
38
|
+
this.debugElement = debugElement;
|
|
39
|
+
}
|
|
40
|
+
setLoader(loader) {
|
|
41
|
+
this.loader = loader;
|
|
42
|
+
}
|
|
43
|
+
getByCSS(selector) {
|
|
44
|
+
return this.debugElement.query(By.css(selector));
|
|
45
|
+
}
|
|
46
|
+
getAllByCSS(selector) {
|
|
47
|
+
return this.debugElement.queryAll(By.css(selector));
|
|
48
|
+
}
|
|
49
|
+
getInnerTextByCSS(selector) {
|
|
50
|
+
return this.getByCSS(selector).nativeElement.innerText;
|
|
51
|
+
}
|
|
52
|
+
getByDataAutomationId(dataAutomationId) {
|
|
53
|
+
return this.getByCSS(`[data-automation-id="${dataAutomationId}"]`);
|
|
54
|
+
}
|
|
55
|
+
getByDataAutomationClass(dataAutomationClass) {
|
|
56
|
+
return this.getByCSS(`[data-automation-class="${dataAutomationClass}"]`);
|
|
57
|
+
}
|
|
58
|
+
getInnerTextByDataAutomationId(dataAutomationId) {
|
|
59
|
+
return this.getByDataAutomationId(dataAutomationId).nativeElement.innerText;
|
|
60
|
+
}
|
|
61
|
+
getByDirective(directive) {
|
|
62
|
+
return this.debugElement.query(By.directive(directive));
|
|
63
|
+
}
|
|
64
|
+
/** Perform actions */
|
|
65
|
+
clickByCSS(selector) {
|
|
66
|
+
const element = this.getByCSS(selector);
|
|
67
|
+
element.triggerEventHandler('click', new MouseEvent('click'));
|
|
68
|
+
}
|
|
69
|
+
clickByDataAutomationId(dataAutomationId) {
|
|
70
|
+
this.getByDataAutomationId(dataAutomationId).nativeElement.click();
|
|
71
|
+
}
|
|
72
|
+
doubleClickByDataAutomationId(dataAutomationId) {
|
|
73
|
+
const element = this.getByDataAutomationId(dataAutomationId);
|
|
74
|
+
element.triggerEventHandler('dblclick', new MouseEvent('dblclick'));
|
|
75
|
+
}
|
|
76
|
+
blurByCSS(selector) {
|
|
77
|
+
const element = this.getByCSS(selector);
|
|
78
|
+
element.triggerEventHandler('blur', new FocusEvent('blur'));
|
|
79
|
+
}
|
|
80
|
+
hoverOverByCSS(selector) {
|
|
81
|
+
const element = this.getByCSS(selector);
|
|
82
|
+
element.triggerEventHandler('mouseenter', new MouseEvent('mouseenter'));
|
|
83
|
+
}
|
|
84
|
+
hoverOverByDataAutomationId(dataAutomationId) {
|
|
85
|
+
const element = this.getByDataAutomationId(dataAutomationId);
|
|
86
|
+
element.triggerEventHandler('mouseenter', new MouseEvent('mouseenter'));
|
|
87
|
+
}
|
|
88
|
+
mouseLeaveByCSS(selector) {
|
|
89
|
+
const element = this.getByCSS(selector);
|
|
90
|
+
element.triggerEventHandler('mouseleave', new MouseEvent('mouseleave'));
|
|
91
|
+
}
|
|
92
|
+
mouseLeaveByDataAutomationId(dataAutomationId) {
|
|
93
|
+
const element = this.getByDataAutomationId(dataAutomationId);
|
|
94
|
+
element.triggerEventHandler('mouseleave', new MouseEvent('mouseleave'));
|
|
95
|
+
}
|
|
96
|
+
keyBoardEventByCSS(selector, event, code, key) {
|
|
97
|
+
const element = this.getByCSS(selector);
|
|
98
|
+
element.nativeElement.dispatchEvent(new KeyboardEvent(event, { code, key }));
|
|
99
|
+
}
|
|
100
|
+
dispatchCustomEventByCSS(selector, eventName) {
|
|
101
|
+
const element = this.getByCSS(selector);
|
|
102
|
+
element.nativeElement.dispatchEvent(new CustomEvent(eventName));
|
|
103
|
+
}
|
|
104
|
+
/** Input related methods */
|
|
105
|
+
getInputByCSS(selector) {
|
|
106
|
+
return this.getByCSS(selector)?.nativeElement;
|
|
107
|
+
}
|
|
108
|
+
getInputByDataAutomationId(dataAutomationId) {
|
|
109
|
+
return this.getByDataAutomationId(dataAutomationId)?.nativeElement;
|
|
110
|
+
}
|
|
111
|
+
fillInputByCSS(selector, value) {
|
|
112
|
+
const input = this.getInputByCSS(selector);
|
|
113
|
+
input.value = value;
|
|
114
|
+
input.dispatchEvent(new Event('input'));
|
|
115
|
+
}
|
|
116
|
+
fillInputByDataAutomationId(dataAutomationId, value) {
|
|
117
|
+
const input = this.getInputByDataAutomationId(dataAutomationId);
|
|
118
|
+
input.value = value;
|
|
119
|
+
input.dispatchEvent(new Event('input'));
|
|
120
|
+
}
|
|
121
|
+
/** MatButton related methods */
|
|
122
|
+
async getMatButton() {
|
|
123
|
+
return this.loader.getHarness(MatButtonHarness);
|
|
124
|
+
}
|
|
125
|
+
async getMatButtonByCSS(selector) {
|
|
126
|
+
return this.loader.getHarness(MatButtonHarness.with({ selector }));
|
|
127
|
+
}
|
|
128
|
+
async getMatButtonByDataAutomationId(dataAutomationId) {
|
|
129
|
+
return this.loader.getHarness(MatButtonHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
130
|
+
}
|
|
131
|
+
async checkIfMatButtonExists() {
|
|
132
|
+
return this.loader.hasHarness(MatButtonHarness);
|
|
133
|
+
}
|
|
134
|
+
async checkIfMatButtonExistsWithDataAutomationId(dataAutomationId) {
|
|
135
|
+
return this.loader.hasHarness(MatButtonHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
136
|
+
}
|
|
137
|
+
async clickMatButton() {
|
|
138
|
+
const button = await this.getMatButton();
|
|
139
|
+
await button.click();
|
|
140
|
+
}
|
|
141
|
+
async clickMatButtonByCSS(selector) {
|
|
142
|
+
const button = await this.getMatButtonByCSS(selector);
|
|
143
|
+
await button.click();
|
|
144
|
+
}
|
|
145
|
+
async clickMatButtonByDataAutomationId(dataAutomationId) {
|
|
146
|
+
const button = await this.getMatButtonByDataAutomationId(dataAutomationId);
|
|
147
|
+
await button.click();
|
|
148
|
+
}
|
|
149
|
+
async sendKeysToMatButton(keys) {
|
|
150
|
+
const button = await this.getMatButton();
|
|
151
|
+
const host = await button.host();
|
|
152
|
+
await host.sendKeys(...keys);
|
|
153
|
+
}
|
|
154
|
+
/** MatCheckbox related methods */
|
|
155
|
+
async getMatCheckbox() {
|
|
156
|
+
return this.loader.getHarness(MatCheckboxHarness);
|
|
157
|
+
}
|
|
158
|
+
async getMatCheckboxByDataAutomationId(dataAutomationId) {
|
|
159
|
+
return this.loader.getHarness(MatCheckboxHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
160
|
+
}
|
|
161
|
+
async getMatCheckboxHost() {
|
|
162
|
+
const checkbox = await this.getMatCheckbox();
|
|
163
|
+
return checkbox.host();
|
|
164
|
+
}
|
|
165
|
+
async getAllMatCheckboxes() {
|
|
166
|
+
return this.loader.getAllHarnesses(MatCheckboxHarness);
|
|
167
|
+
}
|
|
168
|
+
async checkIfMatCheckboxIsChecked() {
|
|
169
|
+
const checkbox = await this.getMatCheckbox();
|
|
170
|
+
return checkbox.isChecked();
|
|
171
|
+
}
|
|
172
|
+
async checkIfMatCheckboxesHaveClass(className) {
|
|
173
|
+
const checkboxes = await this.getAllMatCheckboxes();
|
|
174
|
+
return checkboxes.every(async (checkbox) => (await checkbox.host()).hasClass(className));
|
|
175
|
+
}
|
|
176
|
+
async hoverOverMatCheckbox() {
|
|
177
|
+
const host = await this.getMatCheckboxHost();
|
|
178
|
+
await host.hover();
|
|
179
|
+
}
|
|
180
|
+
/** MatIcon related methods */
|
|
181
|
+
async getMatIconOrNull() {
|
|
182
|
+
return this.loader.getHarnessOrNull(MatIconHarness);
|
|
183
|
+
}
|
|
184
|
+
async getMatIconWithAncestorByDataAutomationId(dataAutomationId) {
|
|
185
|
+
return this.loader.getHarness(MatIconHarness.with({ ancestor: `[data-automation-id="${dataAutomationId}"]` }));
|
|
186
|
+
}
|
|
187
|
+
async getMatIconWithAncestorByCSS(selector) {
|
|
188
|
+
return this.loader.getHarness(MatIconHarness.with({ ancestor: selector }));
|
|
189
|
+
}
|
|
190
|
+
async getMatIconWithAncestorByCSSAndName(selector, name) {
|
|
191
|
+
return this.loader.getHarness(MatIconHarness.with({ ancestor: selector, name }));
|
|
192
|
+
}
|
|
193
|
+
async checkIfMatIconExistsWithAncestorByDataAutomationId(dataAutomationId) {
|
|
194
|
+
return this.loader.hasHarness(MatIconHarness.with({ ancestor: `[data-automation-id="${dataAutomationId}"]` }));
|
|
195
|
+
}
|
|
196
|
+
async checkIfMatIconExistsWithAncestorByCSSAndName(selector, name) {
|
|
197
|
+
return this.loader.hasHarness(MatIconHarness.with({ ancestor: selector, name }));
|
|
198
|
+
}
|
|
199
|
+
async clickMatIconWithAncestorByDataAutomationId(dataAutomationId) {
|
|
200
|
+
const icon = await this.getMatIconWithAncestorByDataAutomationId(dataAutomationId);
|
|
201
|
+
const host = await icon.host();
|
|
202
|
+
await host.click();
|
|
203
|
+
}
|
|
204
|
+
/** MatSelect related methods */
|
|
205
|
+
async getMatSelectOptions(isOpened = false) {
|
|
206
|
+
const select = await this.loader.getHarness(MatSelectHarness);
|
|
207
|
+
if (!isOpened) {
|
|
208
|
+
await select.open();
|
|
209
|
+
}
|
|
210
|
+
return select.getOptions();
|
|
211
|
+
}
|
|
212
|
+
async getMatSelectHost() {
|
|
213
|
+
const select = await this.loader.getHarness(MatSelectHarness);
|
|
214
|
+
return select.host();
|
|
215
|
+
}
|
|
216
|
+
async checkIfMatSelectExists() {
|
|
217
|
+
return this.loader.hasHarness(MatSelectHarness);
|
|
218
|
+
}
|
|
219
|
+
async openMatSelect() {
|
|
220
|
+
const select = await this.loader.getHarness(MatSelectHarness);
|
|
221
|
+
await select.open();
|
|
222
|
+
}
|
|
223
|
+
/** MatChips related methods */
|
|
224
|
+
async getMatChipByDataAutomationId(dataAutomationId) {
|
|
225
|
+
return this.loader.getHarness(MatChipHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
226
|
+
}
|
|
227
|
+
async checkIfMatChipExistsWithDataAutomationId(dataAutomationId) {
|
|
228
|
+
return this.loader.hasHarness(MatChipHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
229
|
+
}
|
|
230
|
+
async clickMatChip(dataAutomationId) {
|
|
231
|
+
const chip = await this.getMatChipByDataAutomationId(dataAutomationId);
|
|
232
|
+
const host = await chip.host();
|
|
233
|
+
await host.click();
|
|
234
|
+
}
|
|
235
|
+
async getMatChips() {
|
|
236
|
+
return this.loader.getAllHarnesses(MatChipHarness);
|
|
237
|
+
}
|
|
238
|
+
/** MatChipListbox related methods */
|
|
239
|
+
async getMatChipListboxByDataAutomationId(dataAutomationId) {
|
|
240
|
+
return this.loader.getHarness(MatChipListboxHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
241
|
+
}
|
|
242
|
+
async clickMatChipListbox(dataAutomationId) {
|
|
243
|
+
const chipList = await this.getMatChipListboxByDataAutomationId(dataAutomationId);
|
|
244
|
+
const host = await chipList.host();
|
|
245
|
+
await host.click();
|
|
246
|
+
}
|
|
247
|
+
/** MatChipGrid related methods */
|
|
248
|
+
async checkIfMatChipGridExists() {
|
|
249
|
+
return this.loader.hasHarness(MatChipGridHarness);
|
|
250
|
+
}
|
|
251
|
+
/** MatFromField related methods */
|
|
252
|
+
async getMatFormField() {
|
|
253
|
+
return this.loader.getHarness(MatFormFieldHarness);
|
|
254
|
+
}
|
|
255
|
+
async getMatFormFieldByCSS(selector) {
|
|
256
|
+
return this.loader.getHarness(MatFormFieldHarness.with({ selector }));
|
|
257
|
+
}
|
|
258
|
+
/** MatInput related methods */
|
|
259
|
+
async getMatInput() {
|
|
260
|
+
return this.loader.getHarness(MatInputHarness);
|
|
261
|
+
}
|
|
262
|
+
async getMatInputByCSS(selector) {
|
|
263
|
+
return this.loader.getHarness(MatInputHarness.with({ selector }));
|
|
264
|
+
}
|
|
265
|
+
async getMatInputByDataAutomationId(dataAutomationId) {
|
|
266
|
+
return this.loader.getHarness(MatInputHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
267
|
+
}
|
|
268
|
+
async getMatInputByPlaceholder(placeholder) {
|
|
269
|
+
return this.loader.getHarness(MatInputHarness.with({ placeholder }));
|
|
270
|
+
}
|
|
271
|
+
async getMatInputHost() {
|
|
272
|
+
const input = await this.getMatInput();
|
|
273
|
+
return input.host();
|
|
274
|
+
}
|
|
275
|
+
async checkIfMatInputExists() {
|
|
276
|
+
return this.loader.hasHarness(MatInputHarness);
|
|
277
|
+
}
|
|
278
|
+
async checkIfMatInputExistsWithCSS(selector) {
|
|
279
|
+
return this.loader.hasHarness(MatInputHarness.with({ selector }));
|
|
280
|
+
}
|
|
281
|
+
async checkIfMatInputExistsWithDataAutomationId(dataAutomationId) {
|
|
282
|
+
return this.loader.hasHarness(MatInputHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
283
|
+
}
|
|
284
|
+
async checkIfMatInputExistsWithPlaceholder(placeholder) {
|
|
285
|
+
return this.loader.hasHarness(MatInputHarness.with({ placeholder }));
|
|
286
|
+
}
|
|
287
|
+
async clickMatInput() {
|
|
288
|
+
const input = await this.getMatInput();
|
|
289
|
+
const host = await input.host();
|
|
290
|
+
await host.click();
|
|
291
|
+
}
|
|
292
|
+
async fillMatInput(value) {
|
|
293
|
+
const input = await this.getMatInput();
|
|
294
|
+
await input.setValue(value);
|
|
295
|
+
}
|
|
296
|
+
async fillMatInputByCSS(selector, value) {
|
|
297
|
+
const input = await this.getMatInputByCSS(selector);
|
|
298
|
+
await input.setValue(value);
|
|
299
|
+
}
|
|
300
|
+
async fillMatInputByDataAutomationId(dataAutomationId, value) {
|
|
301
|
+
const input = await this.getMatInputByDataAutomationId(dataAutomationId);
|
|
302
|
+
await input.setValue(value);
|
|
303
|
+
await (await input.host()).dispatchEvent('input');
|
|
304
|
+
}
|
|
305
|
+
async focusMatInput() {
|
|
306
|
+
const input = await this.getMatInput();
|
|
307
|
+
await input.focus();
|
|
308
|
+
}
|
|
309
|
+
async blurMatInput() {
|
|
310
|
+
const input = await this.getMatInput();
|
|
311
|
+
await input.blur();
|
|
312
|
+
}
|
|
313
|
+
async getMatInputValue() {
|
|
314
|
+
const input = await this.getMatInput();
|
|
315
|
+
return input.getValue();
|
|
316
|
+
}
|
|
317
|
+
async getMatInputValueByDataAutomationId(dataAutomationId) {
|
|
318
|
+
const input = await this.getMatInputByDataAutomationId(dataAutomationId);
|
|
319
|
+
return input.getValue();
|
|
320
|
+
}
|
|
321
|
+
async sendKeysToMatInput(keys) {
|
|
322
|
+
const input = await this.getMatInput();
|
|
323
|
+
const host = await input.host();
|
|
324
|
+
await host.sendKeys(...keys);
|
|
325
|
+
}
|
|
326
|
+
/** MatAutoComplete related methods */
|
|
327
|
+
async typeAndGetOptionsForMatAutoComplete(fixture, value) {
|
|
328
|
+
const autocomplete = await this.loader.getHarness(MatAutocompleteHarness);
|
|
329
|
+
await autocomplete.enterText(value);
|
|
330
|
+
fixture.detectChanges();
|
|
331
|
+
return autocomplete.getOptions();
|
|
332
|
+
}
|
|
333
|
+
/** MatError related methods */
|
|
334
|
+
async getMatErrorByCSS(selector) {
|
|
335
|
+
return this.loader.getHarness(MatErrorHarness.with({ selector }));
|
|
336
|
+
}
|
|
337
|
+
async getMatErrorByDataAutomationId(dataAutomationId) {
|
|
338
|
+
return this.loader.getHarness(MatErrorHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` }));
|
|
339
|
+
}
|
|
340
|
+
/** MatTabGroup related methods */
|
|
341
|
+
async getSelectedTabFromMatTabGroup() {
|
|
342
|
+
const tabs = await this.loader.getHarness(MatTabGroupHarness);
|
|
343
|
+
return tabs.getSelectedTab();
|
|
344
|
+
}
|
|
345
|
+
async getSelectedTabLabelFromMatTabGroup() {
|
|
346
|
+
const tab = await this.getSelectedTabFromMatTabGroup();
|
|
347
|
+
return tab.getLabel();
|
|
348
|
+
}
|
|
349
|
+
/** MatToolbar related methods */
|
|
350
|
+
async getMatToolbarHost() {
|
|
351
|
+
const toolbar = await this.loader.getHarness(MatToolbarHarness);
|
|
352
|
+
return toolbar.host();
|
|
353
|
+
}
|
|
354
|
+
/** MatSnackbar related methods */
|
|
355
|
+
async checkIfMatSnackbarExists() {
|
|
356
|
+
return this.loader.hasHarness(MatSnackBarHarness);
|
|
357
|
+
}
|
|
358
|
+
/** MatProgressBar related methods */
|
|
359
|
+
async getMatProgressBarHost() {
|
|
360
|
+
const progress = await this.loader.getHarness(MatProgressBarHarness);
|
|
361
|
+
return progress.host();
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC10ZXN0aW5nLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi90ZXN0aW5nL3VuaXQtdGVzdGluZy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFJSCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUvRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLFlBQW9CLFlBQTJCLEVBQVUsTUFBc0I7UUFBM0QsaUJBQVksR0FBWixZQUFZLENBQWU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFn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O1FBQzlELE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsa0NBQWtDO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDdkQsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGlDQUFpQztJQUVqQyxLQUFLLENBQUMsaUJBQWlCO1FBQ25CLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0NBQWtDO0lBRWxDLEtBQUssQ0FBQyx3QkFBd0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxxQ0FBcUM7SUFFckMsS0FBSyxDQUFDLHFCQUFxQjtRQUN2QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDckUsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBIYXJuZXNzTG9hZGVyLCBUZXN0RWxlbWVudCwgVGVzdEtleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7IERlYnVnRWxlbWVudCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnkgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE1hdFNlbGVjdEhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRPcHRpb25IYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IE1hdENoaXBHcmlkSGFybmVzcywgTWF0Q2hpcEhhcm5lc3MsIE1hdENoaXBMaXN0Ym94SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzL3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0QnV0dG9uSGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi90ZXN0aW5nJztcbmltcG9ydCB7IE1hdEljb25IYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbi90ZXN0aW5nJztcbmltcG9ydCB7IE1hdENoZWNrYm94SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94L3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0RXJyb3JIYXJuZXNzLCBNYXRGb3JtRmllbGRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC90ZXN0aW5nJztcbmltcG9ydCB7IE1hdElucHV0SGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0L3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlSGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZS90ZXN0aW5nJztcbmltcG9ydCB7IENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0VGFiR3JvdXBIYXJuZXNzLCBNYXRUYWJIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicy90ZXN0aW5nJztcbmltcG9ydCB7IE1hdFRvb2xiYXJIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhci90ZXN0aW5nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFySGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhci90ZXN0aW5nJztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFySGFybmVzcyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhci90ZXN0aW5nJztcblxuZXhwb3J0IGNsYXNzIFVuaXRUZXN0aW5nVXRpbHMge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVidWdFbGVtZW50PzogRGVidWdFbGVtZW50LCBwcml2YXRlIGxvYWRlcj86IEhhcm5lc3NMb2FkZXIpIHtcbiAgICAgICAgdGhpcy5kZWJ1Z0VsZW1lbnQgPSBkZWJ1Z0VsZW1lbnQ7XG4gICAgICAgIHRoaXMubG9hZGVyID0gbG9hZGVyO1xuICAgIH1cblxuICAgIHNldERlYnVnRWxlbWVudChkZWJ1Z0VsZW1lbnQ6IERlYnVnRWxlbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlYnVnRWxlbWVudCA9IGRlYnVnRWxlbWVudDtcbiAgICB9XG5cbiAgICBzZXRMb2FkZXIobG9hZGVyOiBIYXJuZXNzTG9hZGVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gbG9hZGVyO1xuICAgIH1cblxuICAgIGdldEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBEZWJ1Z0VsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWJ1Z0VsZW1lbnQucXVlcnkoQnkuY3NzKHNlbGVjdG9yKSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IERlYnVnRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVidWdFbGVtZW50LnF1ZXJ5QWxsKEJ5LmNzcyhzZWxlY3RvcikpO1xuICAgIH1cblxuICAgIGdldElubmVyVGV4dEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUNTUyhzZWxlY3RvcikubmF0aXZlRWxlbWVudC5pbm5lclRleHQ7XG4gICAgfVxuXG4gICAgZ2V0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IERlYnVnRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ5Q1NTKGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWApO1xuICAgIH1cblxuICAgIGdldEJ5RGF0YUF1dG9tYXRpb25DbGFzcyhkYXRhQXV0b21hdGlvbkNsYXNzOiBzdHJpbmcpOiBEZWJ1Z0VsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUNTUyhgW2RhdGEtYXV0b21hdGlvbi1jbGFzcz1cIiR7ZGF0YUF1dG9tYXRpb25DbGFzc31cIl1gKTtcbiAgICB9XG5cbiAgICBnZXRJbm5lclRleHRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0O1xuICAgIH1cblxuICAgIGdldEJ5RGlyZWN0aXZlKGRpcmVjdGl2ZTogVHlwZTxhbnk+KTogRGVidWdFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmRpcmVjdGl2ZShkaXJlY3RpdmUpKTtcbiAgICB9XG5cbiAgICAvKiogUGVyZm9ybSBhY3Rpb25zICovXG5cbiAgICBjbGlja0J5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBlbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXIoJ2NsaWNrJywgbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJykpO1xuICAgIH1cblxuICAgIGNsaWNrQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKS5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgZG91YmxlQ2xpY2tCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgZWxlbWVudC50cmlnZ2VyRXZlbnRIYW5kbGVyKCdkYmxjbGljaycsIG5ldyBNb3VzZUV2ZW50KCdkYmxjbGljaycpKTtcbiAgICB9XG5cbiAgICBibHVyQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGVsZW1lbnQudHJpZ2dlckV2ZW50SGFuZGxlcignYmx1cicsIG5ldyBGb2N1c0V2ZW50KCdibHVyJykpO1xuICAgIH1cblxuICAgIGhvdmVyT3ZlckJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBlbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXIoJ21vdXNlZW50ZXInLCBuZXcgTW91c2VFdmVudCgnbW91c2VlbnRlcicpKTtcbiAgICB9XG5cbiAgICBob3Zlck92ZXJCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgZWxlbWVudC50cmlnZ2VyRXZlbnRIYW5kbGVyKCdtb3VzZWVudGVyJywgbmV3IE1vdXNlRXZlbnQoJ21vdXNlZW50ZXInKSk7XG4gICAgfVxuXG4gICAgbW91c2VMZWF2ZUJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0QnlDU1Moc2VsZWN0b3IpO1xuICAgICAgICBlbGVtZW50LnRyaWdnZXJFdmVudEhhbmRsZXIoJ21vdXNlbGVhdmUnLCBuZXcgTW91c2VFdmVudCgnbW91c2VsZWF2ZScpKTtcbiAgICB9XG5cbiAgICBtb3VzZUxlYXZlQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk7XG4gICAgICAgIGVsZW1lbnQudHJpZ2dlckV2ZW50SGFuZGxlcignbW91c2VsZWF2ZScsIG5ldyBNb3VzZUV2ZW50KCdtb3VzZWxlYXZlJykpO1xuICAgIH1cblxuICAgIGtleUJvYXJkRXZlbnRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nLCBldmVudDogJ2tleXVwJyB8ICdrZXlkb3duJywgY29kZTogc3RyaW5nLCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5nZXRCeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KGV2ZW50LCB7IGNvZGUsIGtleSB9KSk7XG4gICAgfVxuXG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcsIGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGV2ZW50TmFtZSkpO1xuICAgIH1cblxuICAgIC8qKiBJbnB1dCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGdldElucHV0QnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCeUNTUyhzZWxlY3Rvcik/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0SW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKT8ubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBmaWxsSW5wdXRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRJbnB1dEJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xuICAgIH1cblxuICAgIGZpbGxJbnB1dEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmdldElucHV0QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XG4gICAgfVxuXG4gICAgLyoqIE1hdEJ1dHRvbiByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdEJ1dHRvbigpOiBQcm9taXNlPE1hdEJ1dHRvbkhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0QnV0dG9uSGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0QnV0dG9uQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8TWF0QnV0dG9uSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRCdXR0b25IYXJuZXNzLndpdGgoeyBzZWxlY3RvciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0QnV0dG9uQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0QnV0dG9uSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRCdXR0b25IYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdEJ1dHRvbkV4aXN0cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmhhc0hhcm5lc3MoTWF0QnV0dG9uSGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdEJ1dHRvbkV4aXN0c1dpdGhEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRCdXR0b25IYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuZ2V0TWF0QnV0dG9uKCk7XG4gICAgICAgIGF3YWl0IGJ1dHRvbi5jbGljaygpO1xuICAgIH1cblxuICAgIGFzeW5jIGNsaWNrTWF0QnV0dG9uQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLmdldE1hdEJ1dHRvbkJ5Q1NTKHNlbGVjdG9yKTtcbiAgICAgICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRCdXR0b25CeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuZ2V0TWF0QnV0dG9uQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBhd2FpdCBidXR0b24uY2xpY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBzZW5kS2V5c1RvTWF0QnV0dG9uKGtleXM6IChzdHJpbmcgfCBUZXN0S2V5KVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuZ2V0TWF0QnV0dG9uKCk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBhd2FpdCBidXR0b24uaG9zdCgpO1xuICAgICAgICBhd2FpdCBob3N0LnNlbmRLZXlzKC4uLmtleXMpO1xuICAgIH1cblxuICAgIC8qKiBNYXRDaGVja2JveCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdENoZWNrYm94KCk6IFByb21pc2U8TWF0Q2hlY2tib3hIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdENoZWNrYm94SGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0Q2hlY2tib3hCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRDaGVja2JveEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0Q2hlY2tib3hIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0Q2hlY2tib3hIb3N0KCk6IFByb21pc2U8VGVzdEVsZW1lbnQ+IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3ggPSBhd2FpdCB0aGlzLmdldE1hdENoZWNrYm94KCk7XG4gICAgICAgIHJldHVybiBjaGVja2JveC5ob3N0KCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWxsTWF0Q2hlY2tib3hlcygpOiBQcm9taXNlPE1hdENoZWNrYm94SGFybmVzc1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRBbGxIYXJuZXNzZXMoTWF0Q2hlY2tib3hIYXJuZXNzKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0Q2hlY2tib3hJc0NoZWNrZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94ID0gYXdhaXQgdGhpcy5nZXRNYXRDaGVja2JveCgpO1xuICAgICAgICByZXR1cm4gY2hlY2tib3guaXNDaGVja2VkKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdENoZWNrYm94ZXNIYXZlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgY2hlY2tib3hlcyA9IGF3YWl0IHRoaXMuZ2V0QWxsTWF0Q2hlY2tib3hlcygpO1xuICAgICAgICByZXR1cm4gY2hlY2tib3hlcy5ldmVyeShhc3luYyAoY2hlY2tib3gpID0+IChhd2FpdCBjaGVja2JveC5ob3N0KCkpLmhhc0NsYXNzKGNsYXNzTmFtZSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGhvdmVyT3Zlck1hdENoZWNrYm94KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgdGhpcy5nZXRNYXRDaGVja2JveEhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5ob3ZlcigpO1xuICAgIH1cblxuICAgIC8qKiBNYXRJY29uIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0TWF0SWNvbk9yTnVsbCgpOiBQcm9taXNlPE1hdEljb25IYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzT3JOdWxsKE1hdEljb25IYXJuZXNzKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJY29uV2l0aEFuY2VzdG9yQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWF0SWNvbkhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SWNvbkhhcm5lc3Mud2l0aCh7IGFuY2VzdG9yOiBgW2RhdGEtYXV0b21hdGlvbi1pZD1cIiR7ZGF0YUF1dG9tYXRpb25JZH1cIl1gIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJY29uV2l0aEFuY2VzdG9yQnlDU1Moc2VsZWN0b3I6IHN0cmluZyk6IFByb21pc2U8TWF0SWNvbkhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SWNvbkhhcm5lc3Mud2l0aCh7IGFuY2VzdG9yOiBzZWxlY3RvciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SWNvbldpdGhBbmNlc3RvckJ5Q1NTQW5kTmFtZShzZWxlY3Rvcjogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1hdEljb25IYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEljb25IYXJuZXNzLndpdGgoeyBhbmNlc3Rvcjogc2VsZWN0b3IsIG5hbWUgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRJY29uRXhpc3RzV2l0aEFuY2VzdG9yQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJY29uSGFybmVzcy53aXRoKHsgYW5jZXN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRJY29uRXhpc3RzV2l0aEFuY2VzdG9yQnlDU1NBbmROYW1lKHNlbGVjdG9yOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJY29uSGFybmVzcy53aXRoKHsgYW5jZXN0b3I6IHNlbGVjdG9yLCBuYW1lIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjbGlja01hdEljb25XaXRoQW5jZXN0b3JCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGljb24gPSBhd2FpdCB0aGlzLmdldE1hdEljb25XaXRoQW5jZXN0b3JCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZCk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBhd2FpdCBpY29uLmhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKiBNYXRTZWxlY3QgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRTZWxlY3RPcHRpb25zKGlzT3BlbmVkID0gZmFsc2UpOiBQcm9taXNlPE1hdE9wdGlvbkhhcm5lc3NbXT4ge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFNlbGVjdEhhcm5lc3MpO1xuICAgICAgICBpZiAoIWlzT3BlbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzZWxlY3Qub3BlbigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWxlY3QuZ2V0T3B0aW9ucygpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdFNlbGVjdEhvc3QoKTogUHJvbWlzZTxUZXN0RWxlbWVudD4ge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFNlbGVjdEhhcm5lc3MpO1xuICAgICAgICByZXR1cm4gc2VsZWN0Lmhvc3QoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0U2VsZWN0RXhpc3RzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRTZWxlY3RIYXJuZXNzKTtcbiAgICB9XG5cbiAgICBhc3luYyBvcGVuTWF0U2VsZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzZWxlY3QgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFNlbGVjdEhhcm5lc3MpO1xuICAgICAgICBhd2FpdCBzZWxlY3Qub3BlbigpO1xuICAgIH1cblxuICAgIC8qKiBNYXRDaGlwcyByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdENoaXBCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRDaGlwSGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRDaGlwSGFybmVzcy53aXRoKHsgc2VsZWN0b3I6IGBbZGF0YS1hdXRvbWF0aW9uLWlkPVwiJHtkYXRhQXV0b21hdGlvbklkfVwiXWAgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRDaGlwRXhpc3RzV2l0aERhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5oYXNIYXJuZXNzKE1hdENoaXBIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRDaGlwKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBjaGlwID0gYXdhaXQgdGhpcy5nZXRNYXRDaGlwQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgY2hpcC5ob3N0KCk7XG4gICAgICAgIGF3YWl0IGhvc3QuY2xpY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRDaGlwcygpOiBQcm9taXNlPE1hdENoaXBIYXJuZXNzW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEFsbEhhcm5lc3NlcyhNYXRDaGlwSGFybmVzcyk7XG4gICAgfVxuXG4gICAgLyoqIE1hdENoaXBMaXN0Ym94IHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0TWF0Q2hpcExpc3Rib3hCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRDaGlwTGlzdGJveEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0Q2hpcExpc3Rib3hIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2xpY2tNYXRDaGlwTGlzdGJveChkYXRhQXV0b21hdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgY2hpcExpc3QgPSBhd2FpdCB0aGlzLmdldE1hdENoaXBMaXN0Ym94QnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQpO1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgY2hpcExpc3QuaG9zdCgpO1xuICAgICAgICBhd2FpdCBob3N0LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIE1hdENoaXBHcmlkIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgY2hlY2tJZk1hdENoaXBHcmlkRXhpc3RzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRDaGlwR3JpZEhhcm5lc3MpO1xuICAgIH1cblxuICAgIC8qKiBNYXRGcm9tRmllbGQgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyBnZXRNYXRGb3JtRmllbGQoKTogUHJvbWlzZTxNYXRGb3JtRmllbGRIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEZvcm1GaWVsZEhhcm5lc3MpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldE1hdEZvcm1GaWVsZEJ5Q1NTKHNlbGVjdG9yOiBzdHJpbmcpOiBQcm9taXNlPE1hdEZvcm1GaWVsZEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0Rm9ybUZpZWxkSGFybmVzcy53aXRoKHsgc2VsZWN0b3IgfSkpO1xuICAgIH1cblxuICAgIC8qKiBNYXRJbnB1dCByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdElucHV0KCk6IFByb21pc2U8TWF0SW5wdXRIYXJuZXNzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdElucHV0SGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxNYXRJbnB1dEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRJbnB1dEhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0SW5wdXRCeVBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyOiBzdHJpbmcpOiBQcm9taXNlPE1hdElucHV0SGFybmVzcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IHBsYWNlaG9sZGVyIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJbnB1dEhvc3QoKTogUHJvbWlzZTxUZXN0RWxlbWVudD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXQoKTtcbiAgICAgICAgcmV0dXJuIGlucHV0Lmhvc3QoKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0SW5wdXRFeGlzdHMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5oYXNIYXJuZXNzKE1hdElucHV0SGFybmVzcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgY2hlY2tJZk1hdElucHV0RXhpc3RzV2l0aENTUyhzZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlci5oYXNIYXJuZXNzKE1hdElucHV0SGFybmVzcy53aXRoKHsgc2VsZWN0b3IgfSkpO1xuICAgIH1cblxuICAgIGFzeW5jIGNoZWNrSWZNYXRJbnB1dEV4aXN0c1dpdGhEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yOiBgW2RhdGEtYXV0b21hdGlvbi1pZD1cIiR7ZGF0YUF1dG9tYXRpb25JZH1cIl1gIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjaGVja0lmTWF0SW5wdXRFeGlzdHNXaXRoUGxhY2Vob2xkZXIocGxhY2Vob2xkZXI6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRJbnB1dEhhcm5lc3Mud2l0aCh7IHBsYWNlaG9sZGVyIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyBjbGlja01hdElucHV0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXQoKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IGF3YWl0IGlucHV0Lmhvc3QoKTtcbiAgICAgICAgYXdhaXQgaG9zdC5jbGljaygpO1xuICAgIH1cblxuICAgIGFzeW5jIGZpbGxNYXRJbnB1dCh2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICBhd2FpdCBpbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmlsbE1hdElucHV0QnlDU1Moc2VsZWN0b3I6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuZ2V0TWF0SW5wdXRCeUNTUyhzZWxlY3Rvcik7XG4gICAgICAgIGF3YWl0IGlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBhc3luYyBmaWxsTWF0SW5wdXRCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgYXdhaXQgaW5wdXQuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICBhd2FpdCAoYXdhaXQgaW5wdXQuaG9zdCgpKS5kaXNwYXRjaEV2ZW50KCdpbnB1dCcpO1xuICAgIH1cblxuICAgIGFzeW5jIGZvY3VzTWF0SW5wdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICBhd2FpdCBpbnB1dC5mb2N1cygpO1xuICAgIH1cblxuICAgIGFzeW5jIGJsdXJNYXRJbnB1dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBhd2FpdCB0aGlzLmdldE1hdElucHV0KCk7XG4gICAgICAgIGF3YWl0IGlucHV0LmJsdXIoKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJbnB1dFZhbHVlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICByZXR1cm4gaW5wdXQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRNYXRJbnB1dFZhbHVlQnlEYXRhQXV0b21hdGlvbklkKGRhdGFBdXRvbWF0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dEJ5RGF0YUF1dG9tYXRpb25JZChkYXRhQXV0b21hdGlvbklkKTtcbiAgICAgICAgcmV0dXJuIGlucHV0LmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2VuZEtleXNUb01hdElucHV0KGtleXM6IChzdHJpbmcgfCBUZXN0S2V5KVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gYXdhaXQgdGhpcy5nZXRNYXRJbnB1dCgpO1xuICAgICAgICBjb25zdCBob3N0ID0gYXdhaXQgaW5wdXQuaG9zdCgpO1xuICAgICAgICBhd2FpdCBob3N0LnNlbmRLZXlzKC4uLmtleXMpO1xuICAgIH1cblxuICAgIC8qKiBNYXRBdXRvQ29tcGxldGUgcmVsYXRlZCBtZXRob2RzICovXG5cbiAgICBhc3luYyB0eXBlQW5kR2V0T3B0aW9uc0Zvck1hdEF1dG9Db21wbGV0ZShmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4sIHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPE1hdE9wdGlvbkhhcm5lc3NbXT4ge1xuICAgICAgICBjb25zdCBhdXRvY29tcGxldGUgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdEF1dG9jb21wbGV0ZUhhcm5lc3MpO1xuICAgICAgICBhd2FpdCBhdXRvY29tcGxldGUuZW50ZXJUZXh0KHZhbHVlKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgcmV0dXJuIGF1dG9jb21wbGV0ZS5nZXRPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIE1hdEVycm9yIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0TWF0RXJyb3JCeUNTUyhzZWxlY3Rvcjogc3RyaW5nKTogUHJvbWlzZTxNYXRFcnJvckhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0RXJyb3JIYXJuZXNzLndpdGgoeyBzZWxlY3RvciB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TWF0RXJyb3JCeURhdGFBdXRvbWF0aW9uSWQoZGF0YUF1dG9tYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNYXRFcnJvckhhcm5lc3M+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0RXJyb3JIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYFtkYXRhLWF1dG9tYXRpb24taWQ9XCIke2RhdGFBdXRvbWF0aW9uSWR9XCJdYCB9KSk7XG4gICAgfVxuXG4gICAgLyoqIE1hdFRhYkdyb3VwIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgZ2V0U2VsZWN0ZWRUYWJGcm9tTWF0VGFiR3JvdXAoKTogUHJvbWlzZTxNYXRUYWJIYXJuZXNzPiB7XG4gICAgICAgIGNvbnN0IHRhYnMgPSBhd2FpdCB0aGlzLmxvYWRlci5nZXRIYXJuZXNzKE1hdFRhYkdyb3VwSGFybmVzcyk7XG4gICAgICAgIHJldHVybiB0YWJzLmdldFNlbGVjdGVkVGFiKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0U2VsZWN0ZWRUYWJMYWJlbEZyb21NYXRUYWJHcm91cCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCB0aGlzLmdldFNlbGVjdGVkVGFiRnJvbU1hdFRhYkdyb3VwKCk7XG4gICAgICAgIHJldHVybiB0YWIuZ2V0TGFiZWwoKTtcbiAgICB9XG5cbiAgICAvKiogTWF0VG9vbGJhciByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdFRvb2xiYXJIb3N0KCk6IFByb21pc2U8VGVzdEVsZW1lbnQ+IHtcbiAgICAgICAgY29uc3QgdG9vbGJhciA9IGF3YWl0IHRoaXMubG9hZGVyLmdldEhhcm5lc3MoTWF0VG9vbGJhckhhcm5lc3MpO1xuICAgICAgICByZXR1cm4gdG9vbGJhci5ob3N0KCk7XG4gICAgfVxuXG4gICAgLyoqIE1hdFNuYWNrYmFyIHJlbGF0ZWQgbWV0aG9kcyAqL1xuXG4gICAgYXN5bmMgY2hlY2tJZk1hdFNuYWNrYmFyRXhpc3RzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXIuaGFzSGFybmVzcyhNYXRTbmFja0Jhckhhcm5lc3MpO1xuICAgIH1cblxuICAgIC8qKiBNYXRQcm9ncmVzc0JhciByZWxhdGVkIG1ldGhvZHMgKi9cblxuICAgIGFzeW5jIGdldE1hdFByb2dyZXNzQmFySG9zdCgpOiBQcm9taXNlPFRlc3RFbGVtZW50PiB7XG4gICAgICAgIGNvbnN0IHByb2dyZXNzID0gYXdhaXQgdGhpcy5sb2FkZXIuZ2V0SGFybmVzcyhNYXRQcm9ncmVzc0Jhckhhcm5lc3MpO1xuICAgICAgICByZXR1cm4gcHJvZ3Jlc3MuaG9zdCgpO1xuICAgIH1cbn1cbiJdfQ==
|