@alfresco/adf-core 8.1.0-16500060130 → 8.1.0
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 +14 -2
- package/bundles/assets/adf-core/i18n/en.json +13 -1
- package/bundles/assets/adf-core/i18n/es.json +14 -2
- package/bundles/assets/adf-core/i18n/fr.json +14 -2
- package/bundles/assets/adf-core/i18n/it.json +14 -2
- package/bundles/assets/adf-core/i18n/pl.json +13 -1
- package/bundles/assets/adf-core/i18n/pt.json +14 -2
- package/feature-flags/lib/components/flags/flags.component.d.ts +2 -2
- package/feature-flags/lib/providers/debug-feature-flags.provider.d.ts +4 -35
- package/fesm2022/adf-core.mjs +1391 -2841
- package/fesm2022/adf-core.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-api.mjs +5 -5
- 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 +52 -59
- package/fesm2022/alfresco-adf-core-feature-flags.mjs.map +1 -1
- package/fesm2022/alfresco-adf-core-shell.mjs +68 -14
- package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
- package/lib/app-config/provide-app-config.d.ts +2 -2
- package/lib/app-config/public-api.d.ts +0 -2
- package/lib/auth/oidc/auth.module.d.ts +10 -13
- package/lib/{mock/form/form-definition-readonly.mock.d.ts → auth/oidc/auth.routes.d.ts} +2 -1
- package/lib/auth/oidc/public-api.d.ts +0 -1
- 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 +12 -9
- package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +1 -2
- package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +6 -5
- package/lib/core.module.d.ts +11 -0
- package/lib/datatable/components/datatable/datatable.component.scss +2 -1
- 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 +2 -6
- package/lib/form/components/form-renderer.component.scss +25 -6
- package/lib/form/components/form-section/form-section.component.scss +23 -1
- package/lib/form/components/widgets/amount/amount.widget.scss +1 -2
- package/lib/form/components/widgets/date-time/date-time.widget.scss +1 -2
- package/lib/form/components/widgets/display-text/display-text.widget.scss +2 -0
- package/lib/mock/data-column.mock.d.ts +0 -2
- package/lib/mock/form/widget-visibility.service.mock.d.ts +0 -5
- package/lib/mock/public-api.d.ts +0 -4
- package/lib/{mock/form/form-definition-visibility.mock.d.ts → testing/app-config-testing.d.ts} +8 -2
- package/lib/testing/index.d.ts +1 -1
- package/lib/testing/noop-auth.module.d.ts +31 -4
- package/lib/testing/unit-testing-utils.d.ts +1 -11
- package/lib/translation/provide-i18n.d.ts +1 -1
- package/lib/viewer/components/img-viewer/img-viewer.component.d.ts +2 -2
- package/lib/viewer/components/viewer.component.d.ts +1 -1
- package/lib/viewer/services/rendering-queue.services.d.ts +2 -2
- package/package.json +3 -15
- package/shell/README.md +13 -3
- package/shell/index.d.ts +1 -0
- package/shell/lib/providers.d.ts +36 -0
- package/shell/lib/shell.module.d.ts +1 -1
- package/esm2022/adf-core.mjs +0 -5
- package/esm2022/api/alfresco-adf-core-api.mjs +0 -5
- package/esm2022/api/index.mjs +0 -20
- package/esm2022/api/lib/adf-http-client.service.mjs +0 -311
- package/esm2022/api/lib/alfresco-api/alfresco-api.param-encoder.mjs +0 -33
- package/esm2022/api/lib/alfresco-api/alfresco-api.response-error.mjs +0 -25
- package/esm2022/api/lib/alfresco-api/alfresco-api.utils.mjs +0 -80
- package/esm2022/api/lib/interfaces.mjs +0 -18
- package/esm2022/api/lib/types.mjs +0 -18
- package/esm2022/auth/alfresco-adf-core-auth.mjs +0 -5
- package/esm2022/auth/authentication-interceptor/authentication.interceptor.mjs +0 -56
- package/esm2022/auth/authentication.mjs +0 -19
- package/esm2022/auth/index.mjs +0 -19
- package/esm2022/breadcrumbs/alfresco-adf-core-breadcrumbs.mjs +0 -5
- package/esm2022/breadcrumbs/components/breadcrumb/breadcrumb.component.mjs +0 -82
- package/esm2022/breadcrumbs/components/breadcrumb-item/breadcrumb-item.component.mjs +0 -42
- package/esm2022/breadcrumbs/directives/breadcrumb-focus.directive.mjs +0 -44
- package/esm2022/breadcrumbs/index.mjs +0 -19
- package/esm2022/feature-flags/alfresco-adf-core-feature-flags.mjs +0 -5
- package/esm2022/feature-flags/index.mjs +0 -29
- package/esm2022/feature-flags/lib/components/feature-flags-wrapper.mjs +0 -36
- package/esm2022/feature-flags/lib/components/feature-override-indicator.component.mjs +0 -56
- package/esm2022/feature-flags/lib/components/flags/flags.component.mjs +0 -129
- package/esm2022/feature-flags/lib/directives/features.directive.mjs +0 -63
- package/esm2022/feature-flags/lib/directives/not-features.directive.mjs +0 -63
- package/esm2022/feature-flags/lib/guards/is-feature-off.guard.mjs +0 -38
- package/esm2022/feature-flags/lib/guards/is-feature-on.guard.mjs +0 -38
- package/esm2022/feature-flags/lib/guards/is-flags-override-on.guard.mjs +0 -40
- package/esm2022/feature-flags/lib/interfaces/features.interface.mjs +0 -24
- package/esm2022/feature-flags/lib/mocks/features-service-mock.factory.mjs +0 -62
- package/esm2022/feature-flags/lib/providers/debug-feature-flags.provider.mjs +0 -51
- package/esm2022/feature-flags/lib/providers/dummy-feature-flags.provider.mjs +0 -36
- package/esm2022/feature-flags/lib/services/debug-features.service.mjs +0 -94
- package/esm2022/feature-flags/lib/services/dummy-features.service.mjs +0 -40
- package/esm2022/feature-flags/lib/services/flagset.parser.mjs +0 -38
- package/esm2022/feature-flags/lib/services/qa-features.helper.mjs +0 -62
- package/esm2022/feature-flags/lib/services/storage-features.service.mjs +0 -126
- package/esm2022/lib/about/about-extension-list/about-extension-list.component.mjs +0 -51
- package/esm2022/lib/about/about-license-list/about-license-list.component.mjs +0 -51
- package/esm2022/lib/about/about-module-list/module-list.component.mjs +0 -51
- package/esm2022/lib/about/about-package/package-list.component.mjs +0 -65
- package/esm2022/lib/about/about-panel.directive.mjs +0 -37
- package/esm2022/lib/about/about-repository-info/about-repository-info.component.mjs +0 -59
- package/esm2022/lib/about/about-repository-info/repository-info.interface.mjs +0 -18
- package/esm2022/lib/about/about-server-settings/about-server-settings.component.mjs +0 -42
- package/esm2022/lib/about/about-status-list/about-status-list.component.mjs +0 -51
- package/esm2022/lib/about/about.component.mjs +0 -35
- package/esm2022/lib/about/about.module.mjs +0 -75
- package/esm2022/lib/about/index.mjs +0 -18
- package/esm2022/lib/about/interfaces.mjs +0 -18
- package/esm2022/lib/about/public-api.mjs +0 -28
- package/esm2022/lib/app-config/app-config-storage-prefix.factory.mjs +0 -51
- package/esm2022/lib/app-config/app-config.loader.mjs +0 -41
- package/esm2022/lib/app-config/app-config.module.mjs +0 -33
- package/esm2022/lib/app-config/app-config.pipe.mjs +0 -38
- package/esm2022/lib/app-config/app-config.service.mjs +0 -243
- package/esm2022/lib/app-config/debug-app-config.service.mjs +0 -44
- package/esm2022/lib/app-config/index.mjs +0 -18
- package/esm2022/lib/app-config/provide-app-config.mjs +0 -44
- package/esm2022/lib/app-config/public-api.mjs +0 -23
- package/esm2022/lib/auth/authentication-interceptor/auth-bearer.interceptor.mjs +0 -67
- package/esm2022/lib/auth/basic-auth/basic-alfresco-auth.service.mjs +0 -369
- package/esm2022/lib/auth/basic-auth/content-auth.mjs +0 -189
- package/esm2022/lib/auth/basic-auth/process-auth.mjs +0 -193
- package/esm2022/lib/auth/guard/auth-guard-bpm.service.mjs +0 -31
- package/esm2022/lib/auth/guard/auth-guard-ecm.service.mjs +0 -31
- package/esm2022/lib/auth/guard/auth-guard-sso-role.service.mjs +0 -57
- package/esm2022/lib/auth/guard/auth-guard.mjs +0 -53
- package/esm2022/lib/auth/guard/auth-guard.service.mjs +0 -113
- package/esm2022/lib/auth/index.mjs +0 -18
- package/esm2022/lib/auth/interfaces/authentication-service.interface.mjs +0 -18
- package/esm2022/lib/auth/interfaces/authentication.interface.mjs +0 -18
- package/esm2022/lib/auth/interfaces/identity-group.interface.mjs +0 -18
- package/esm2022/lib/auth/interfaces/identity-user.service.interface.mjs +0 -18
- package/esm2022/lib/auth/interfaces/openid-configuration.interface.mjs +0 -18
- package/esm2022/lib/auth/models/application-access.model.mjs +0 -18
- package/esm2022/lib/auth/models/identity-group.model.mjs +0 -18
- package/esm2022/lib/auth/models/identity-role.model.mjs +0 -30
- package/esm2022/lib/auth/models/identity-user.model.mjs +0 -18
- package/esm2022/lib/auth/models/oauth-config.model.mjs +0 -18
- package/esm2022/lib/auth/models/redirection.model.mjs +0 -28
- package/esm2022/lib/auth/models/user-access.model.mjs +0 -18
- package/esm2022/lib/auth/oidc/auth-config.mjs +0 -19
- package/esm2022/lib/auth/oidc/auth-config.service.mjs +0 -110
- package/esm2022/lib/auth/oidc/auth-routing.module.mjs +0 -34
- package/esm2022/lib/auth/oidc/auth.module.mjs +0 -112
- package/esm2022/lib/auth/oidc/auth.service.mjs +0 -22
- package/esm2022/lib/auth/oidc/oidc-auth.guard.mjs +0 -37
- package/esm2022/lib/auth/oidc/oidc-authentication.service.mjs +0 -204
- package/esm2022/lib/auth/oidc/public-api.mjs +0 -24
- package/esm2022/lib/auth/oidc/redirect-auth.service.mjs +0 -267
- package/esm2022/lib/auth/oidc/retry-login.service.mjs +0 -66
- package/esm2022/lib/auth/oidc/token.interceptor.mjs +0 -62
- package/esm2022/lib/auth/oidc/view/authentication-confirmation/authentication-confirmation.component.mjs +0 -31
- package/esm2022/lib/auth/public-api.mjs +0 -44
- package/esm2022/lib/auth/services/authentication.service.mjs +0 -190
- package/esm2022/lib/auth/services/base-authentication.service.mjs +0 -95
- package/esm2022/lib/auth/services/identity-group.service.mjs +0 -269
- package/esm2022/lib/auth/services/identity-role.service.mjs +0 -99
- package/esm2022/lib/auth/services/identity-user.service.mjs +0 -443
- package/esm2022/lib/auth/services/jwt-helper.service.mjs +0 -205
- package/esm2022/lib/auth/services/oauth2.service.mjs +0 -69
- package/esm2022/lib/auth/services/time-sync.service.mjs +0 -83
- package/esm2022/lib/auth/services/user-access.service.mjs +0 -110
- package/esm2022/lib/avatar/avatar.component.mjs +0 -51
- package/esm2022/lib/blank-page/blank-page.component.mjs +0 -31
- package/esm2022/lib/blank-page/blank-page.module.mjs +0 -33
- package/esm2022/lib/blank-page/index.mjs +0 -18
- package/esm2022/lib/blank-page/public-api.mjs +0 -19
- package/esm2022/lib/button/button.component.mjs +0 -61
- package/esm2022/lib/card-view/card-view.module.mjs +0 -80
- package/esm2022/lib/card-view/components/base-card-view.mjs +0 -51
- package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +0 -66
- package/esm2022/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.mjs +0 -55
- package/esm2022/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.mjs +0 -39
- package/esm2022/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.mjs +0 -182
- package/esm2022/lib/card-view/components/card-view-item-dispatcher/card-view-item-dispatcher.component.mjs +0 -108
- package/esm2022/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.mjs +0 -64
- package/esm2022/lib/card-view/components/card-view-mapitem/card-view-mapitem.component.mjs +0 -46
- package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +0 -137
- package/esm2022/lib/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.mjs +0 -113
- package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +0 -239
- package/esm2022/lib/card-view/components/card-view.components.mjs +0 -28
- package/esm2022/lib/card-view/index.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/base-card-view-update.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-arrayitem-properties.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-boolitem-properties.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-dateitem-properties.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-item-properties.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-item-validator.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-item.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-keyvaluepairsitem-properties.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-selectitem-properties.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-textitem-pipe-property.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view-textitem-properties.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/card-view.interfaces.mjs +0 -29
- package/esm2022/lib/card-view/interfaces/click-notification.interface.mjs +0 -18
- package/esm2022/lib/card-view/interfaces/update-notification.interface.mjs +0 -18
- package/esm2022/lib/card-view/models/card-view-arrayitem.model.mjs +0 -28
- package/esm2022/lib/card-view/models/card-view-baseitem.model.mjs +0 -64
- package/esm2022/lib/card-view/models/card-view-boolitem.model.mjs +0 -36
- package/esm2022/lib/card-view/models/card-view-dateitem.model.mjs +0 -58
- package/esm2022/lib/card-view/models/card-view-datetimeitem.model.mjs +0 -28
- package/esm2022/lib/card-view/models/card-view-floatitem.model.mjs +0 -33
- package/esm2022/lib/card-view/models/card-view-intitem.model.mjs +0 -36
- package/esm2022/lib/card-view/models/card-view-keyvaluepairs.model.mjs +0 -27
- package/esm2022/lib/card-view/models/card-view-longitem.model.mjs +0 -36
- package/esm2022/lib/card-view/models/card-view-mapitem.model.mjs +0 -32
- package/esm2022/lib/card-view/models/card-view-selectitem.model.mjs +0 -41
- package/esm2022/lib/card-view/models/card-view-textitem.model.mjs +0 -40
- package/esm2022/lib/card-view/models/card-view.models.mjs +0 -29
- package/esm2022/lib/card-view/public-api.mjs +0 -25
- package/esm2022/lib/card-view/services/card-item-types.service.mjs +0 -54
- package/esm2022/lib/card-view/services/card-view-update.service.mjs +0 -59
- package/esm2022/lib/card-view/services/card-view.services.mjs +0 -19
- package/esm2022/lib/card-view/validators/card-view-item-float.validator.mjs +0 -31
- package/esm2022/lib/card-view/validators/card-view-item-int.validator.mjs +0 -35
- package/esm2022/lib/card-view/validators/card-view-item-length.validator.mjs +0 -34
- package/esm2022/lib/card-view/validators/card-view-item-long.validator.mjs +0 -35
- package/esm2022/lib/card-view/validators/card-view-item-match.validator.mjs +0 -35
- package/esm2022/lib/card-view/validators/card-view-item-minmax.validator.mjs +0 -35
- package/esm2022/lib/card-view/validators/card-view-item-only-positive-int.validator.mjs +0 -32
- package/esm2022/lib/card-view/validators/card-view-item-only-positive-long.validator.mjs +0 -31
- package/esm2022/lib/card-view/validators/card-view.validators.mjs +0 -26
- package/esm2022/lib/card-view/validators/validators.map.mjs +0 -26
- package/esm2022/lib/clipboard/clipboard.directive.mjs +0 -98
- package/esm2022/lib/clipboard/clipboard.module.mjs +0 -34
- package/esm2022/lib/clipboard/clipboard.service.mjs +0 -103
- package/esm2022/lib/clipboard/index.mjs +0 -18
- package/esm2022/lib/clipboard/public-api.mjs +0 -21
- package/esm2022/lib/comments/comment-list/comment-list.component.mjs +0 -52
- package/esm2022/lib/comments/comment-list/comment-list.module.mjs +0 -33
- package/esm2022/lib/comments/comment-list/index.mjs +0 -18
- package/esm2022/lib/comments/comment-list/public-api.mjs +0 -19
- package/esm2022/lib/comments/comments.component.mjs +0 -132
- package/esm2022/lib/comments/comments.module.mjs +0 -33
- package/esm2022/lib/comments/index.mjs +0 -18
- package/esm2022/lib/comments/interfaces/comments-service.interface.mjs +0 -18
- package/esm2022/lib/comments/interfaces/comments.token.mjs +0 -19
- package/esm2022/lib/comments/public-api.mjs +0 -22
- package/esm2022/lib/common/index.mjs +0 -35
- package/esm2022/lib/common/interface/search-component.interface.mjs +0 -18
- package/esm2022/lib/common/mock/app-config.service.mock.mjs +0 -47
- package/esm2022/lib/common/models/default-languages.model.mjs +0 -36
- package/esm2022/lib/common/models/log-levels.model.mjs +0 -33
- package/esm2022/lib/common/models/user-info-mode.enum.mjs +0 -25
- package/esm2022/lib/common/services/cookie.service.mjs +0 -82
- package/esm2022/lib/common/services/download.service.mjs +0 -102
- package/esm2022/lib/common/services/dynamic-component-mapper.service.mjs +0 -89
- package/esm2022/lib/common/services/highlight-transform.service.mjs +0 -61
- package/esm2022/lib/common/services/language-item.interface.mjs +0 -18
- package/esm2022/lib/common/services/log.service.mjs +0 -171
- package/esm2022/lib/common/services/page-title.service.mjs +0 -63
- package/esm2022/lib/common/services/sort-by-category.service.mjs +0 -81
- package/esm2022/lib/common/services/storage.service.mjs +0 -143
- package/esm2022/lib/common/services/thumbnail.service.mjs +0 -194
- package/esm2022/lib/common/services/url.service.mjs +0 -45
- package/esm2022/lib/common/services/user-preferences.service.mjs +0 -238
- package/esm2022/lib/common/utils/date-fns-adapter.mjs +0 -115
- package/esm2022/lib/common/utils/date-fns-utils.mjs +0 -222
- package/esm2022/lib/common/utils/datetime-fns-adapter.mjs +0 -134
- package/esm2022/lib/common/utils/file-utils.mjs +0 -65
- package/esm2022/lib/common/utils/index.mjs +0 -18
- package/esm2022/lib/common/utils/moment-date-adapter.mjs +0 -202
- package/esm2022/lib/common/utils/moment-date-formats.model.mjs +0 -32
- package/esm2022/lib/common/utils/object-utils.mjs +0 -107
- package/esm2022/lib/common/utils/public-api.mjs +0 -25
- package/esm2022/lib/common/utils/string-utils.mjs +0 -45
- package/esm2022/lib/context-menu/animations.mjs +0 -33
- package/esm2022/lib/context-menu/context-menu-list.component.mjs +0 -91
- package/esm2022/lib/context-menu/context-menu-overlay.mjs +0 -25
- package/esm2022/lib/context-menu/context-menu-overlay.service.mjs +0 -109
- package/esm2022/lib/context-menu/context-menu.directive.mjs +0 -63
- package/esm2022/lib/context-menu/context-menu.module.mjs +0 -35
- package/esm2022/lib/context-menu/context-menu.tokens.mjs +0 -19
- package/esm2022/lib/context-menu/index.mjs +0 -18
- package/esm2022/lib/context-menu/interfaces.mjs +0 -18
- package/esm2022/lib/context-menu/public-api.mjs +0 -21
- package/esm2022/lib/core.module.mjs +0 -296
- package/esm2022/lib/datatable/components/amount-cell/amount-cell.component.mjs +0 -45
- package/esm2022/lib/datatable/components/boolean-cell/boolean-cell.component.mjs +0 -65
- package/esm2022/lib/datatable/components/columns-selector/columns-search-filter.pipe.mjs +0 -55
- package/esm2022/lib/datatable/components/columns-selector/columns-selector.component.mjs +0 -113
- package/esm2022/lib/datatable/components/data-cell.event.mjs +0 -31
- package/esm2022/lib/datatable/components/data-row-action.event.mjs +0 -34
- package/esm2022/lib/datatable/components/datatable/datatable.component.mjs +0 -914
- package/esm2022/lib/datatable/components/datatable-cell/datatable-cell.component.mjs +0 -126
- package/esm2022/lib/datatable/components/datatable-row/datatable-row.component.mjs +0 -98
- package/esm2022/lib/datatable/components/date-cell/date-cell.component.mjs +0 -78
- package/esm2022/lib/datatable/components/empty-list/empty-list.component.mjs +0 -60
- package/esm2022/lib/datatable/components/filesize-cell/filesize-cell.component.mjs +0 -49
- package/esm2022/lib/datatable/components/icon-cell/icon-cell.component.mjs +0 -67
- package/esm2022/lib/datatable/components/json-cell/json-cell.component.mjs +0 -86
- package/esm2022/lib/datatable/components/location-cell/location-cell.component.mjs +0 -69
- package/esm2022/lib/datatable/components/mocks/datatable.mock.mjs +0 -153
- package/esm2022/lib/datatable/components/number-cell/number-cell.component.mjs +0 -42
- package/esm2022/lib/datatable/data/data-column.model.mjs +0 -18
- package/esm2022/lib/datatable/data/data-row-event.model.mjs +0 -26
- package/esm2022/lib/datatable/data/data-row-update.model.mjs +0 -18
- package/esm2022/lib/datatable/data/data-row.model.mjs +0 -18
- package/esm2022/lib/datatable/data/data-sorting.model.mjs +0 -24
- package/esm2022/lib/datatable/data/data-table.schema.mjs +0 -132
- package/esm2022/lib/datatable/data/datatable-adapter.mjs +0 -18
- package/esm2022/lib/datatable/data/object-datacolumn.model.mjs +0 -46
- package/esm2022/lib/datatable/data/object-datarow.model.mjs +0 -41
- package/esm2022/lib/datatable/data/object-datatable-adapter.mjs +0 -134
- package/esm2022/lib/datatable/data-column/data-column-header.component.mjs +0 -45
- package/esm2022/lib/datatable/data-column/data-column-list.component.mjs +0 -36
- package/esm2022/lib/datatable/data-column/data-column.component.mjs +0 -114
- package/esm2022/lib/datatable/data-column/index.mjs +0 -18
- package/esm2022/lib/datatable/data-column/public-api.mjs +0 -20
- package/esm2022/lib/datatable/datatable.module.mjs +0 -161
- package/esm2022/lib/datatable/directives/custom-empty-content-template.directive.mjs +0 -35
- package/esm2022/lib/datatable/directives/custom-loading-template.directive.mjs +0 -30
- package/esm2022/lib/datatable/directives/custom-no-permission-template.directive.mjs +0 -35
- package/esm2022/lib/datatable/directives/drop-zone.directive.mjs +0 -89
- package/esm2022/lib/datatable/directives/header-filter-template.directive.mjs +0 -43
- package/esm2022/lib/datatable/directives/loading-template.directive.mjs +0 -46
- package/esm2022/lib/datatable/directives/main-data-table-action-template.directive.mjs +0 -43
- package/esm2022/lib/datatable/directives/no-content-template.directive.mjs +0 -46
- package/esm2022/lib/datatable/directives/no-permission-template.directive.mjs +0 -46
- package/esm2022/lib/datatable/directives/resizable/resizable.directive.mjs +0 -173
- package/esm2022/lib/datatable/directives/resizable/resize-handle.directive.mjs +0 -72
- package/esm2022/lib/datatable/directives/resizable/types.mjs +0 -18
- package/esm2022/lib/datatable/index.mjs +0 -18
- package/esm2022/lib/datatable/public-api.mjs +0 -55
- package/esm2022/lib/datatable/services/datatable.service.mjs +0 -33
- package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.mjs +0 -50
- package/esm2022/lib/dialogs/confirm-dialog/confirm.dialog.module.mjs +0 -38
- package/esm2022/lib/dialogs/dialog/dialog-data.interface.mjs +0 -18
- package/esm2022/lib/dialogs/dialog/dialog.component.mjs +0 -70
- package/esm2022/lib/dialogs/dialog/dialog.model.mjs +0 -22
- package/esm2022/lib/dialogs/dialog/index.mjs +0 -20
- package/esm2022/lib/dialogs/edit-json/edit-json.dialog.mjs +0 -52
- package/esm2022/lib/dialogs/edit-json/edit-json.dialog.module.mjs +0 -34
- package/esm2022/lib/dialogs/index.mjs +0 -18
- package/esm2022/lib/dialogs/public-api.mjs +0 -25
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +0 -73
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.model.mjs +0 -18
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +0 -33
- package/esm2022/lib/dialogs/unsaved-changes-dialog/unsaved-changes.guard.mjs +0 -64
- package/esm2022/lib/directives/directive.module.mjs +0 -56
- package/esm2022/lib/directives/highlight.directive.mjs +0 -67
- package/esm2022/lib/directives/index.mjs +0 -18
- package/esm2022/lib/directives/infinite-select-scroll.directive.mjs +0 -67
- package/esm2022/lib/directives/logout.directive.mjs +0 -72
- package/esm2022/lib/directives/public-api.mjs +0 -24
- package/esm2022/lib/directives/tooltip-card/tooltip-card.component.mjs +0 -60
- package/esm2022/lib/directives/tooltip-card/tooltip-card.directive.mjs +0 -104
- package/esm2022/lib/directives/upload.directive.mjs +0 -241
- package/esm2022/lib/dynamic-chip-list/chip.mjs +0 -18
- package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.component.mjs +0 -204
- package/esm2022/lib/dynamic-chip-list/dynamic-chip-list.module.mjs +0 -33
- package/esm2022/lib/dynamic-chip-list/index.mjs +0 -18
- package/esm2022/lib/dynamic-chip-list/public-api.mjs +0 -20
- package/esm2022/lib/events/base-ui.event.mjs +0 -21
- package/esm2022/lib/events/base.event.mjs +0 -29
- package/esm2022/lib/events/index.mjs +0 -18
- package/esm2022/lib/events/public-api.mjs +0 -19
- package/esm2022/lib/form/components/form-base.component.mjs +0 -224
- package/esm2022/lib/form/components/form-custom-button.directive.mjs +0 -30
- package/esm2022/lib/form/components/form-field/form-field.component.mjs +0 -142
- package/esm2022/lib/form/components/form-renderer.component.mjs +0 -161
- package/esm2022/lib/form/components/form-section/form-section.component.mjs +0 -46
- package/esm2022/lib/form/components/helpers/buttons-visibility.mjs +0 -37
- package/esm2022/lib/form/components/inplace-form-input/inplace-form-input.component.mjs +0 -37
- package/esm2022/lib/form/components/middlewares/decimal-middleware.service.mjs +0 -48
- package/esm2022/lib/form/components/middlewares/middleware.mjs +0 -19
- package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +0 -77
- package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +0 -59
- package/esm2022/lib/form/components/widgets/checkbox/checkbox.widget.mjs +0 -52
- package/esm2022/lib/form/components/widgets/core/container-column.model.mjs +0 -28
- package/esm2022/lib/form/components/widgets/core/container.model.mjs +0 -50
- package/esm2022/lib/form/components/widgets/core/content-link.model.mjs +0 -52
- package/esm2022/lib/form/components/widgets/core/displayable-cm-properties.model.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/error-message.model.mjs +0 -38
- package/esm2022/lib/form/components/widgets/core/external-content-link.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/external-content.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-field-file-source.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-field-metadata.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-field-option.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-field-rule.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-field-selected-folder.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-field-templates.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-field-types.mjs +0 -74
- package/esm2022/lib/form/components/widgets/core/form-field-utils.mjs +0 -23
- package/esm2022/lib/form/components/widgets/core/form-field-validator.mjs +0 -268
- package/esm2022/lib/form/components/widgets/core/form-field-variable-options.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-field.model.mjs +0 -490
- package/esm2022/lib/form/components/widgets/core/form-outcome-event.model.mjs +0 -32
- package/esm2022/lib/form/components/widgets/core/form-outcome.model.mjs +0 -38
- package/esm2022/lib/form/components/widgets/core/form-values.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-variable.model.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/form-widget.model.mjs +0 -33
- package/esm2022/lib/form/components/widgets/core/form.model.mjs +0 -387
- package/esm2022/lib/form/components/widgets/core/group.model.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/index.mjs +0 -49
- package/esm2022/lib/form/components/widgets/core/predefined-theme.mjs +0 -115
- package/esm2022/lib/form/components/widgets/core/process-form-model.interface.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/process-variable.model.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/tab.model.mjs +0 -34
- package/esm2022/lib/form/components/widgets/core/theme.model.mjs +0 -18
- package/esm2022/lib/form/components/widgets/core/upload-widget-content-link.model.mjs +0 -27
- package/esm2022/lib/form/components/widgets/core/widget-schema.model.mjs +0 -18
- package/esm2022/lib/form/components/widgets/date/date.widget.mjs +0 -162
- package/esm2022/lib/form/components/widgets/date-time/date-time.widget.mjs +0 -153
- package/esm2022/lib/form/components/widgets/decimal/decimal.component.mjs +0 -53
- package/esm2022/lib/form/components/widgets/display-text/display-text.schema.mjs +0 -86
- package/esm2022/lib/form/components/widgets/display-text/display-text.widget.mjs +0 -46
- package/esm2022/lib/form/components/widgets/display-text/index.mjs +0 -19
- package/esm2022/lib/form/components/widgets/error/error.component.mjs +0 -92
- package/esm2022/lib/form/components/widgets/header/header.schema.mjs +0 -86
- package/esm2022/lib/form/components/widgets/header/header.widget.mjs +0 -42
- package/esm2022/lib/form/components/widgets/header/index.mjs +0 -19
- package/esm2022/lib/form/components/widgets/hyperlink/hyperlink.widget.mjs +0 -69
- package/esm2022/lib/form/components/widgets/index.mjs +0 -71
- package/esm2022/lib/form/components/widgets/json/json.widget.mjs +0 -66
- package/esm2022/lib/form/components/widgets/multiline-text/multiline-text.widget.mjs +0 -55
- package/esm2022/lib/form/components/widgets/number/number.widget.mjs +0 -71
- package/esm2022/lib/form/components/widgets/reactive-widget.interface.mjs +0 -18
- package/esm2022/lib/form/components/widgets/text/text-mask.component.mjs +0 -221
- package/esm2022/lib/form/components/widgets/text/text.widget.mjs +0 -65
- package/esm2022/lib/form/components/widgets/unknown/unknown.widget.mjs +0 -63
- package/esm2022/lib/form/components/widgets/widget.component.mjs +0 -110
- package/esm2022/lib/form/events/form-error.event.mjs +0 -24
- package/esm2022/lib/form/events/form-field.event.mjs +0 -24
- package/esm2022/lib/form/events/form-rules.event.mjs +0 -25
- package/esm2022/lib/form/events/form-spinner.event.mjs +0 -23
- package/esm2022/lib/form/events/form.event.mjs +0 -29
- package/esm2022/lib/form/events/index.mjs +0 -24
- package/esm2022/lib/form/events/validate-form-field.event.mjs +0 -24
- package/esm2022/lib/form/events/validate-form.event.mjs +0 -25
- package/esm2022/lib/form/form-base.module.mjs +0 -75
- package/esm2022/lib/form/index.mjs +0 -18
- package/esm2022/lib/form/models/form-rules.model.mjs +0 -77
- package/esm2022/lib/form/models/task-process-variable.model.mjs +0 -19
- package/esm2022/lib/form/models/widget-visibility.model.mjs +0 -104
- package/esm2022/lib/form/pipes/field-style.pipe.mjs +0 -45
- package/esm2022/lib/form/pipes/index.mjs +0 -18
- package/esm2022/lib/form/public-api.mjs +0 -35
- package/esm2022/lib/form/services/form-rendering.service.mjs +0 -53
- package/esm2022/lib/form/services/form-validation-service.interface.mjs +0 -18
- package/esm2022/lib/form/services/form.service.mjs +0 -86
- package/esm2022/lib/form/services/widget-visibility.service.mjs +0 -294
- package/esm2022/lib/header/header.component.mjs +0 -73
- package/esm2022/lib/header/index.mjs +0 -18
- package/esm2022/lib/header/navbar/navbar-item.component.mjs +0 -37
- package/esm2022/lib/header/navbar/navbar.component.mjs +0 -36
- package/esm2022/lib/header/public-api.mjs +0 -20
- package/esm2022/lib/icon/icon.component.mjs +0 -51
- package/esm2022/lib/icon/icon.module.mjs +0 -36
- package/esm2022/lib/icon/index.mjs +0 -18
- package/esm2022/lib/icon/public-api.mjs +0 -19
- package/esm2022/lib/identity-user-info/identity-user-info.component.mjs +0 -86
- package/esm2022/lib/identity-user-info/identity-user-info.module.mjs +0 -33
- package/esm2022/lib/identity-user-info/index.mjs +0 -18
- package/esm2022/lib/identity-user-info/public-api.mjs +0 -19
- package/esm2022/lib/info-drawer/index.mjs +0 -18
- package/esm2022/lib/info-drawer/info-drawer-layout.component.mjs +0 -71
- package/esm2022/lib/info-drawer/info-drawer.component.mjs +0 -113
- package/esm2022/lib/info-drawer/info-drawer.module.mjs +0 -53
- package/esm2022/lib/info-drawer/public-api.mjs +0 -20
- package/esm2022/lib/interface/index.mjs +0 -18
- package/esm2022/lib/interface/injection.tokens.mjs +0 -19
- package/esm2022/lib/interface/public-api.mjs +0 -18
- package/esm2022/lib/landing-page/index.mjs +0 -18
- package/esm2022/lib/landing-page/provider.mjs +0 -30
- package/esm2022/lib/landing-page/public-api.mjs +0 -18
- package/esm2022/lib/language-menu/index.mjs +0 -18
- package/esm2022/lib/language-menu/language-menu.component.mjs +0 -61
- package/esm2022/lib/language-menu/language-menu.module.mjs +0 -35
- package/esm2022/lib/language-menu/language-picker.component.mjs +0 -77
- package/esm2022/lib/language-menu/public-api.mjs +0 -21
- package/esm2022/lib/language-menu/service/language.service.interface.mjs +0 -18
- package/esm2022/lib/language-menu/service/language.service.mjs +0 -34
- package/esm2022/lib/layout/components/header/header.component.mjs +0 -99
- package/esm2022/lib/layout/components/layout-container/layout-container.component.mjs +0 -180
- package/esm2022/lib/layout/components/sidebar-action/sidebar-action-menu.component.mjs +0 -82
- package/esm2022/lib/layout/components/sidenav-layout/sidenav-layout.component.mjs +0 -145
- package/esm2022/lib/layout/directives/sidenav-layout-content.directive.mjs +0 -33
- package/esm2022/lib/layout/directives/sidenav-layout-header.directive.mjs +0 -33
- package/esm2022/lib/layout/directives/sidenav-layout-navigation.directive.mjs +0 -33
- package/esm2022/lib/layout/index.mjs +0 -18
- package/esm2022/lib/layout/layout.module.mjs +0 -72
- package/esm2022/lib/layout/public-api.mjs +0 -25
- package/esm2022/lib/login/components/login/login.component.mjs +0 -367
- package/esm2022/lib/login/components/login-dialog/login-dialog-component-data.interface.mjs +0 -18
- package/esm2022/lib/login/components/login-dialog/login-dialog.component.mjs +0 -57
- package/esm2022/lib/login/components/login-dialog-panel/login-dialog-panel.component.mjs +0 -48
- package/esm2022/lib/login/directives/login-footer.directive.mjs +0 -41
- package/esm2022/lib/login/directives/login-header.directive.mjs +0 -41
- package/esm2022/lib/login/index.mjs +0 -18
- package/esm2022/lib/login/login.module.mjs +0 -54
- package/esm2022/lib/login/models/login-error.event.mjs +0 -22
- package/esm2022/lib/login/models/login-submit.event.mjs +0 -32
- package/esm2022/lib/login/models/login-success.event.mjs +0 -24
- package/esm2022/lib/login/public-api.mjs +0 -27
- package/esm2022/lib/material.module.mjs +0 -254
- package/esm2022/lib/mock/cookie.service.mock.mjs +0 -43
- package/esm2022/lib/mock/data-column.mock.mjs +0 -73
- package/esm2022/lib/mock/event.mock.mjs +0 -39
- package/esm2022/lib/mock/form/form-definition-readonly.mock.mjs +0 -225
- package/esm2022/lib/mock/form/form-definition-visibility.mock.mjs +0 -347
- package/esm2022/lib/mock/form/form-definition.mock.mjs +0 -403
- package/esm2022/lib/mock/form/form.component.mock.mjs +0 -275
- package/esm2022/lib/mock/form/form.service.mock.mjs +0 -248
- package/esm2022/lib/mock/form/widget-visibility.service.mock.mjs +0 -1835
- package/esm2022/lib/mock/index.mjs +0 -18
- package/esm2022/lib/mock/public-api.mjs +0 -27
- package/esm2022/lib/mock/translation.service.mock.mjs +0 -44
- package/esm2022/lib/models/comment.model.mjs +0 -51
- package/esm2022/lib/models/component.model.mjs +0 -24
- package/esm2022/lib/models/decimal-number.model.mjs +0 -26
- package/esm2022/lib/models/general-user.model.mjs +0 -24
- package/esm2022/lib/models/index.mjs +0 -18
- package/esm2022/lib/models/pagination.model.mjs +0 -29
- package/esm2022/lib/models/path.model.mjs +0 -24
- package/esm2022/lib/models/product-version.model.mjs +0 -28
- package/esm2022/lib/models/public-api.mjs +0 -24
- package/esm2022/lib/models/request-pagination.model.mjs +0 -25
- package/esm2022/lib/notifications/components/add-notification.stories.component.mjs +0 -44
- package/esm2022/lib/notifications/components/notification-history.component.mjs +0 -138
- package/esm2022/lib/notifications/helpers/notification.factory.mjs +0 -43
- package/esm2022/lib/notifications/index.mjs +0 -18
- package/esm2022/lib/notifications/models/notification.model.mjs +0 -25
- package/esm2022/lib/notifications/notification-history.module.mjs +0 -35
- package/esm2022/lib/notifications/public-api.mjs +0 -23
- package/esm2022/lib/notifications/services/notification.service.mjs +0 -166
- package/esm2022/lib/pagination/index.mjs +0 -18
- package/esm2022/lib/pagination/infinite-pagination.component.mjs +0 -111
- package/esm2022/lib/pagination/paginated-component.interface.mjs +0 -18
- package/esm2022/lib/pagination/pagination-component.interface.mjs +0 -18
- package/esm2022/lib/pagination/pagination.component.mjs +0 -263
- package/esm2022/lib/pagination/pagination.module.mjs +0 -35
- package/esm2022/lib/pagination/public-api.mjs +0 -22
- package/esm2022/lib/pipes/date-time.pipe.mjs +0 -46
- package/esm2022/lib/pipes/decimal-number.pipe.mjs +0 -78
- package/esm2022/lib/pipes/file-size.pipe.mjs +0 -54
- package/esm2022/lib/pipes/file-type.pipe.mjs +0 -40
- package/esm2022/lib/pipes/format-space.pipe.mjs +0 -39
- package/esm2022/lib/pipes/full-name.pipe.mjs +0 -43
- package/esm2022/lib/pipes/index.mjs +0 -18
- package/esm2022/lib/pipes/localized-date.pipe.mjs +0 -70
- package/esm2022/lib/pipes/multi-value.pipe.mjs +0 -37
- package/esm2022/lib/pipes/pipe.module.mjs +0 -83
- package/esm2022/lib/pipes/public-api.mjs +0 -30
- package/esm2022/lib/pipes/text-highlight.pipe.mjs +0 -39
- package/esm2022/lib/pipes/time-ago.pipe.mjs +0 -65
- package/esm2022/lib/pipes/truncate.pipe.mjs +0 -33
- package/esm2022/lib/pipes/user-initial.pipe.mjs +0 -52
- package/esm2022/lib/pipes/user-like.interface.mjs +0 -18
- package/esm2022/lib/progress/progress.component.mjs +0 -90
- package/esm2022/lib/search-text/animations.mjs +0 -32
- package/esm2022/lib/search-text/index.mjs +0 -18
- package/esm2022/lib/search-text/models/search-text-input.model.mjs +0 -23
- package/esm2022/lib/search-text/public-api.mjs +0 -22
- package/esm2022/lib/search-text/search-text-input.component.mjs +0 -283
- package/esm2022/lib/search-text/search-text-input.module.mjs +0 -35
- package/esm2022/lib/search-text/search-trigger.directive.mjs +0 -181
- package/esm2022/lib/snackbar-content/index.mjs +0 -18
- package/esm2022/lib/snackbar-content/public-api.mjs +0 -20
- package/esm2022/lib/snackbar-content/snack-bar-data.mjs +0 -18
- package/esm2022/lib/snackbar-content/snackbar-content.component.mjs +0 -49
- package/esm2022/lib/snackbar-content/snackbar-content.module.mjs +0 -33
- package/esm2022/lib/sorting-picker/index.mjs +0 -18
- package/esm2022/lib/sorting-picker/public-api.mjs +0 -18
- package/esm2022/lib/sorting-picker/sorting-picker.component.mjs +0 -67
- package/esm2022/lib/templates/empty-content/empty-content.component.mjs +0 -43
- package/esm2022/lib/templates/error-content/error-content.component.mjs +0 -61
- package/esm2022/lib/templates/index.mjs +0 -18
- package/esm2022/lib/templates/public-api.mjs +0 -20
- package/esm2022/lib/templates/template.module.mjs +0 -38
- package/esm2022/lib/testing/core.story.module.mjs +0 -39
- package/esm2022/lib/testing/core.testing.module.mjs +0 -36
- package/esm2022/lib/testing/index.mjs +0 -22
- package/esm2022/lib/testing/noop-auth.module.mjs +0 -80
- package/esm2022/lib/testing/noop-translate.module.mjs +0 -75
- package/esm2022/lib/testing/unit-testing-utils.mjs +0 -367
- package/esm2022/lib/toolbar/index.mjs +0 -18
- package/esm2022/lib/toolbar/public-api.mjs +0 -21
- package/esm2022/lib/toolbar/toolbar-divider.component.mjs +0 -27
- package/esm2022/lib/toolbar/toolbar-title.component.mjs +0 -32
- package/esm2022/lib/toolbar/toolbar.component.mjs +0 -39
- package/esm2022/lib/toolbar/toolbar.module.mjs +0 -36
- package/esm2022/lib/translation/index.mjs +0 -18
- package/esm2022/lib/translation/provide-i18n.mjs +0 -48
- package/esm2022/lib/translation/public-api.mjs +0 -20
- package/esm2022/lib/translation/translate-loader.service.mjs +0 -153
- package/esm2022/lib/translation/translation.service.mjs +0 -148
- package/esm2022/lib/viewer/components/download-prompt-dialog/download-prompt-dialog.component.mjs +0 -36
- package/esm2022/lib/viewer/components/img-viewer/img-viewer.component.mjs +0 -220
- package/esm2022/lib/viewer/components/media-player/media-player.component.mjs +0 -64
- package/esm2022/lib/viewer/components/pdf-viewer/pdf-viewer.component.mjs +0 -550
- package/esm2022/lib/viewer/components/pdf-viewer-password-dialog/pdf-viewer-password-dialog.mjs +0 -60
- package/esm2022/lib/viewer/components/pdf-viewer-thumb/pdf-viewer-thumb.component.mjs +0 -48
- package/esm2022/lib/viewer/components/pdf-viewer-thumbnails/pdf-viewer-thumbnails.component.mjs +0 -198
- package/esm2022/lib/viewer/components/txt-viewer/txt-viewer.component.mjs +0 -85
- package/esm2022/lib/viewer/components/unknown-format/unknown-format.component.mjs +0 -32
- package/esm2022/lib/viewer/components/viewer-more-actions.component.mjs +0 -34
- package/esm2022/lib/viewer/components/viewer-open-with.component.mjs +0 -34
- package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +0 -216
- package/esm2022/lib/viewer/components/viewer-sidebar.component.mjs +0 -46
- package/esm2022/lib/viewer/components/viewer-toolbar-actions.component.mjs +0 -34
- package/esm2022/lib/viewer/components/viewer-toolbar-custom-actions.component.mjs +0 -34
- package/esm2022/lib/viewer/components/viewer-toolbar.component.mjs +0 -34
- package/esm2022/lib/viewer/components/viewer.component.mjs +0 -492
- package/esm2022/lib/viewer/directives/viewer-extension.directive.mjs +0 -67
- package/esm2022/lib/viewer/index.mjs +0 -18
- package/esm2022/lib/viewer/models/download-prompt.actions.mjs +0 -23
- package/esm2022/lib/viewer/models/viewer.model.mjs +0 -22
- package/esm2022/lib/viewer/public-api.mjs +0 -40
- package/esm2022/lib/viewer/services/rendering-queue.services.mjs +0 -179
- package/esm2022/lib/viewer/services/view-util.service.mjs +0 -149
- package/esm2022/lib/viewer/viewer.module.mjs +0 -110
- package/esm2022/public-api.mjs +0 -61
- package/esm2022/shell/alfresco-adf-core-shell.mjs +0 -5
- package/esm2022/shell/index.mjs +0 -21
- package/esm2022/shell/lib/components/shell/shell.component.mjs +0 -122
- package/esm2022/shell/lib/services/shell-app.service.mjs +0 -22
- package/esm2022/shell/lib/shell.module.mjs +0 -75
- package/esm2022/shell/lib/shell.routes.mjs +0 -50
- package/lib/app-config/app-config.module.d.ts +0 -8
- package/lib/app-config/debug-app-config.service.d.ts +0 -10
- package/lib/auth/oidc/auth-routing.module.d.ts +0 -6
- package/lib/mock/form/form-definition.mock.d.ts +0 -19
- package/lib/mock/form/form.component.mock.d.ts +0 -17
- package/lib/testing/core.testing.module.d.ts +0 -11
|
@@ -1,369 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { Injectable } from '@angular/core';
|
|
18
|
-
import { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';
|
|
19
|
-
import { CookieService } from '../../common/services/cookie.service';
|
|
20
|
-
import { ContentAuth } from './content-auth';
|
|
21
|
-
import { ProcessAuth } from './process-auth';
|
|
22
|
-
import { catchError, map } from 'rxjs/operators';
|
|
23
|
-
import { from } from 'rxjs';
|
|
24
|
-
import { BaseAuthenticationService } from '../services/base-authentication.service';
|
|
25
|
-
import * as i0 from "@angular/core";
|
|
26
|
-
import * as i1 from "../../app-config/app-config.service";
|
|
27
|
-
import * as i2 from "../../common/services/cookie.service";
|
|
28
|
-
import * as i3 from "./content-auth";
|
|
29
|
-
import * as i4 from "./process-auth";
|
|
30
|
-
const REMEMBER_ME_COOKIE_KEY = 'ALFRESCO_REMEMBER_ME';
|
|
31
|
-
const REMEMBER_ME_UNTIL = 1000 * 60 * 60 * 24 * 30;
|
|
32
|
-
export class BasicAlfrescoAuthService extends BaseAuthenticationService {
|
|
33
|
-
constructor(appConfig, cookie, contentAuth, processAuth) {
|
|
34
|
-
super(appConfig, cookie);
|
|
35
|
-
this.contentAuth = contentAuth;
|
|
36
|
-
this.processAuth = processAuth;
|
|
37
|
-
this.redirectUrl = null;
|
|
38
|
-
this.authentications = {
|
|
39
|
-
basicAuth: {
|
|
40
|
-
ticket: ''
|
|
41
|
-
},
|
|
42
|
-
type: 'basic'
|
|
43
|
-
};
|
|
44
|
-
this.appConfig.onLoad.subscribe(() => {
|
|
45
|
-
if (!this.isOauth() && this.isLoggedIn()) {
|
|
46
|
-
this.requireAlfTicket()
|
|
47
|
-
.then(() => {
|
|
48
|
-
this.onLogin.next('logged-in');
|
|
49
|
-
})
|
|
50
|
-
.catch(() => {
|
|
51
|
-
this.contentAuth.invalidateSession();
|
|
52
|
-
this.onLogout.next('logout');
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
this.contentAuth.onLogout.pipe(map((event) => {
|
|
57
|
-
this.onLogout.next(event);
|
|
58
|
-
}));
|
|
59
|
-
this.contentAuth.onLogin.pipe(map((event) => {
|
|
60
|
-
this.onLogin.next(event);
|
|
61
|
-
}));
|
|
62
|
-
this.contentAuth.onError.pipe(map((event) => {
|
|
63
|
-
this.onError.next(event);
|
|
64
|
-
}));
|
|
65
|
-
this.processAuth.onLogout.pipe(map((event) => {
|
|
66
|
-
this.onLogout.next(event);
|
|
67
|
-
}));
|
|
68
|
-
this.processAuth.onLogin.pipe(map((event) => {
|
|
69
|
-
this.onLogin.next(event);
|
|
70
|
-
}));
|
|
71
|
-
this.processAuth.onError.pipe(map((event) => {
|
|
72
|
-
this.onError.next(event);
|
|
73
|
-
}));
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Logs the user in.
|
|
77
|
-
*
|
|
78
|
-
* @param username Username for the login
|
|
79
|
-
* @param password Password for the login
|
|
80
|
-
* @param rememberMe Stores the user's login details if true
|
|
81
|
-
* @returns Object with auth type ("ECM", "BPM" or "ALL") and auth ticket
|
|
82
|
-
*/
|
|
83
|
-
login(username, password, rememberMe = false) {
|
|
84
|
-
return from(this.executeLogin(username, password)).pipe(map((response) => {
|
|
85
|
-
this.saveRememberMeCookie(rememberMe);
|
|
86
|
-
this.onLogin.next(response);
|
|
87
|
-
return {
|
|
88
|
-
type: this.appConfig.get(AppConfigValues.PROVIDERS),
|
|
89
|
-
ticket: response
|
|
90
|
-
};
|
|
91
|
-
}), catchError((err) => this.handleError(err)));
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* login Alfresco API
|
|
95
|
-
*
|
|
96
|
-
* @param username username to login
|
|
97
|
-
* @param password password to login
|
|
98
|
-
* @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.
|
|
99
|
-
*/
|
|
100
|
-
async executeLogin(username, password) {
|
|
101
|
-
if (!this.isCredentialValid(username) || !this.isCredentialValid(password)) {
|
|
102
|
-
return Promise.reject(new Error('missing username or password'));
|
|
103
|
-
}
|
|
104
|
-
if (username) {
|
|
105
|
-
username = username.trim();
|
|
106
|
-
}
|
|
107
|
-
if (this.isBPMProvider()) {
|
|
108
|
-
try {
|
|
109
|
-
return await this.processAuth.login(username, password);
|
|
110
|
-
}
|
|
111
|
-
catch (e) {
|
|
112
|
-
return Promise.reject(e);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else if (this.isECMProvider()) {
|
|
116
|
-
try {
|
|
117
|
-
return await this.contentAuth.login(username, password);
|
|
118
|
-
}
|
|
119
|
-
catch (e) {
|
|
120
|
-
return Promise.reject(e);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else if (this.isALLProvider()) {
|
|
124
|
-
return this.loginBPMECM(username, password);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
return Promise.reject(new Error('Unknown configuration'));
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
loginBPMECM(username, password) {
|
|
131
|
-
const contentPromise = this.contentAuth.login(username, password);
|
|
132
|
-
const processPromise = this.processAuth.login(username, password);
|
|
133
|
-
return new Promise((resolve, reject) => {
|
|
134
|
-
Promise.all([contentPromise, processPromise]).then((data) => {
|
|
135
|
-
this.onLogin.next('success');
|
|
136
|
-
resolve(data);
|
|
137
|
-
}, (error) => {
|
|
138
|
-
this.contentAuth.invalidateSession();
|
|
139
|
-
this.processAuth.invalidateSession();
|
|
140
|
-
if (error.status === 401) {
|
|
141
|
-
this.onError.next('unauthorized');
|
|
142
|
-
}
|
|
143
|
-
this.onError.next('error');
|
|
144
|
-
reject(error);
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Checks whether the "remember me" cookie was set or not.
|
|
150
|
-
*
|
|
151
|
-
* @returns True if set, false otherwise
|
|
152
|
-
*/
|
|
153
|
-
isRememberMeSet() {
|
|
154
|
-
return this.cookie.getItem(REMEMBER_ME_COOKIE_KEY) !== null;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Saves the "remember me" cookie as either a long-life cookie or a session cookie.
|
|
158
|
-
*
|
|
159
|
-
* @param rememberMe Enables a long-life cookie
|
|
160
|
-
*/
|
|
161
|
-
saveRememberMeCookie(rememberMe) {
|
|
162
|
-
let expiration = null;
|
|
163
|
-
if (rememberMe) {
|
|
164
|
-
expiration = new Date();
|
|
165
|
-
const time = expiration.getTime();
|
|
166
|
-
const expireTime = time + REMEMBER_ME_UNTIL;
|
|
167
|
-
expiration.setTime(expireTime);
|
|
168
|
-
}
|
|
169
|
-
this.cookie.setItem(REMEMBER_ME_COOKIE_KEY, '1', expiration, null);
|
|
170
|
-
}
|
|
171
|
-
isCredentialValid(credential) {
|
|
172
|
-
return credential !== undefined && credential !== null && credential !== '';
|
|
173
|
-
}
|
|
174
|
-
getToken() {
|
|
175
|
-
if (this.isBPMProvider()) {
|
|
176
|
-
return this.processAuth.getToken();
|
|
177
|
-
}
|
|
178
|
-
else if (this.isECMProvider()) {
|
|
179
|
-
return this.contentAuth.getToken();
|
|
180
|
-
}
|
|
181
|
-
else if (this.isALLProvider()) {
|
|
182
|
-
return this.contentAuth.getToken();
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
return '';
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* @deprecated
|
|
190
|
-
* @returns content auth token
|
|
191
|
-
*/
|
|
192
|
-
getTicketEcm() {
|
|
193
|
-
return this.contentAuth.getToken();
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* @deprecated
|
|
197
|
-
* @returns process auth token
|
|
198
|
-
*/
|
|
199
|
-
getTicketBpm() {
|
|
200
|
-
return this.processAuth.getToken();
|
|
201
|
-
}
|
|
202
|
-
isBpmLoggedIn() {
|
|
203
|
-
return this.processAuth.isLoggedIn();
|
|
204
|
-
}
|
|
205
|
-
isEcmLoggedIn() {
|
|
206
|
-
return this.contentAuth.isLoggedIn();
|
|
207
|
-
}
|
|
208
|
-
isLoggedIn() {
|
|
209
|
-
const authWithCredentials = this.isKerberosEnabled();
|
|
210
|
-
if (this.isBPMProvider()) {
|
|
211
|
-
return this.processAuth.isLoggedIn();
|
|
212
|
-
}
|
|
213
|
-
else if (this.isECMProvider()) {
|
|
214
|
-
return authWithCredentials ? true : this.contentAuth.isLoggedIn();
|
|
215
|
-
}
|
|
216
|
-
else if (this.isALLProvider()) {
|
|
217
|
-
return authWithCredentials ? true : this.contentAuth.isLoggedIn() && this.processAuth.isLoggedIn();
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* logout Alfresco API
|
|
225
|
-
*
|
|
226
|
-
* @returns A promise that returns {logout} if resolved and {error} if rejected.
|
|
227
|
-
*/
|
|
228
|
-
async logout() {
|
|
229
|
-
if (this.isBPMProvider()) {
|
|
230
|
-
return this.processAuth.logout();
|
|
231
|
-
}
|
|
232
|
-
else if (this.isECMProvider()) {
|
|
233
|
-
return this.contentAuth.logout();
|
|
234
|
-
}
|
|
235
|
-
else if (this.isALLProvider()) {
|
|
236
|
-
return this.logoutBPMECM();
|
|
237
|
-
}
|
|
238
|
-
return Promise.resolve();
|
|
239
|
-
}
|
|
240
|
-
logoutBPMECM() {
|
|
241
|
-
const contentPromise = this.contentAuth.logout();
|
|
242
|
-
const processPromise = this.processAuth.logout();
|
|
243
|
-
return new Promise((resolve, reject) => {
|
|
244
|
-
Promise.all([contentPromise, processPromise]).then(() => {
|
|
245
|
-
this.contentAuth.ticket = undefined;
|
|
246
|
-
this.processAuth.ticket = undefined;
|
|
247
|
-
this.onLogout.next('logout');
|
|
248
|
-
resolve('logout');
|
|
249
|
-
}, (error) => {
|
|
250
|
-
if (error.status === 401) {
|
|
251
|
-
this.onError.next('unauthorized');
|
|
252
|
-
}
|
|
253
|
-
this.onError.next('error');
|
|
254
|
-
reject(error);
|
|
255
|
-
});
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
reset() {
|
|
259
|
-
// do nothing
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Gets the URL to redirect to after login.
|
|
263
|
-
*
|
|
264
|
-
* @returns The redirect URL
|
|
265
|
-
*/
|
|
266
|
-
getRedirect() {
|
|
267
|
-
const provider = this.appConfig.get(AppConfigValues.PROVIDERS);
|
|
268
|
-
return this.hasValidRedirection(provider) ? this.redirectUrl.url : null;
|
|
269
|
-
}
|
|
270
|
-
setRedirect(url) {
|
|
271
|
-
this.redirectUrl = url;
|
|
272
|
-
}
|
|
273
|
-
hasValidRedirection(provider) {
|
|
274
|
-
return this.redirectUrl && (this.redirectUrl.provider === provider || this.hasSelectedProviderAll(provider));
|
|
275
|
-
}
|
|
276
|
-
hasSelectedProviderAll(provider) {
|
|
277
|
-
return this.redirectUrl && (this.redirectUrl.provider === 'ALL' || provider === 'ALL');
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* @deprecated use `getUsername()` instead
|
|
281
|
-
* @returns the username of the authenticated user
|
|
282
|
-
*/
|
|
283
|
-
getBpmUsername() {
|
|
284
|
-
return this.processAuth.getUsername();
|
|
285
|
-
}
|
|
286
|
-
/**
|
|
287
|
-
* @deprecated use `getUsername()` instead
|
|
288
|
-
* @returns the username of the authenticated user
|
|
289
|
-
*/
|
|
290
|
-
getEcmUsername() {
|
|
291
|
-
return this.contentAuth.getUsername();
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Gets the username of the authenticated user.
|
|
295
|
-
*
|
|
296
|
-
* @returns the username of the authenticated user
|
|
297
|
-
*/
|
|
298
|
-
getUsername() {
|
|
299
|
-
if (this.isBPMProvider()) {
|
|
300
|
-
return this.processAuth.getUsername();
|
|
301
|
-
}
|
|
302
|
-
else if (this.isECMProvider()) {
|
|
303
|
-
return this.contentAuth.getUsername();
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
return this.contentAuth.getUsername();
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Does kerberos enabled?
|
|
311
|
-
*
|
|
312
|
-
* @returns True if enabled, false otherwise
|
|
313
|
-
*/
|
|
314
|
-
isKerberosEnabled() {
|
|
315
|
-
return this.appConfig.get(AppConfigValues.AUTH_WITH_CREDENTIALS, false);
|
|
316
|
-
}
|
|
317
|
-
getAuthHeaders(requestUrl, header) {
|
|
318
|
-
return this.addBasicAuth(requestUrl, header);
|
|
319
|
-
}
|
|
320
|
-
addBasicAuth(requestUrl, header) {
|
|
321
|
-
if (this.isKerberosEnabled()) {
|
|
322
|
-
return header;
|
|
323
|
-
}
|
|
324
|
-
const ticket = this.getTicketEcmBase64(requestUrl);
|
|
325
|
-
if (!ticket) {
|
|
326
|
-
return header;
|
|
327
|
-
}
|
|
328
|
-
return header.set('Authorization', ticket);
|
|
329
|
-
}
|
|
330
|
-
async requireAlfTicket() {
|
|
331
|
-
return this.contentAuth.requireAlfTicket();
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Gets the BPM ticket from the Storage in Base 64 format.
|
|
335
|
-
*
|
|
336
|
-
* @param requestUrl the request url
|
|
337
|
-
* @returns The ticket or `null` if none was found
|
|
338
|
-
*/
|
|
339
|
-
getTicketEcmBase64(requestUrl) {
|
|
340
|
-
let ticket = null;
|
|
341
|
-
const bpmRoot = `/${this.appConfig.get(AppConfigValues.CONTEXTROOTBPM) || 'activiti-app'}/`;
|
|
342
|
-
const ecmRoot = `/${this.appConfig.get(AppConfigValues.CONTEXTROOTECM) || 'alfresco'}/`;
|
|
343
|
-
if (requestUrl?.includes(ecmRoot) && !requestUrl.includes(bpmRoot)) {
|
|
344
|
-
ticket = this.getContentServicesTicket();
|
|
345
|
-
}
|
|
346
|
-
else if (requestUrl?.includes(bpmRoot) && !requestUrl.includes(ecmRoot)) {
|
|
347
|
-
ticket = this.getProcessServicesTicket();
|
|
348
|
-
}
|
|
349
|
-
else if (requestUrl?.includes(ecmRoot) && requestUrl.includes(bpmRoot)) {
|
|
350
|
-
ticket = requestUrl.indexOf(ecmRoot) < requestUrl.indexOf(bpmRoot) ? this.getContentServicesTicket() : this.getProcessServicesTicket();
|
|
351
|
-
}
|
|
352
|
-
return ticket;
|
|
353
|
-
}
|
|
354
|
-
getProcessServicesTicket() {
|
|
355
|
-
return this.processAuth.getToken()?.startsWith('Basic ') ? this.processAuth.getToken() : 'Basic ' + this.processAuth.getToken();
|
|
356
|
-
}
|
|
357
|
-
getContentServicesTicket() {
|
|
358
|
-
return 'Basic ' + btoa(this.contentAuth.getToken());
|
|
359
|
-
}
|
|
360
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BasicAlfrescoAuthService, deps: [{ token: i1.AppConfigService }, { token: i2.CookieService }, { token: i3.ContentAuth }, { token: i4.ProcessAuth }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
361
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BasicAlfrescoAuthService, providedIn: 'root' }); }
|
|
362
|
-
}
|
|
363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BasicAlfrescoAuthService, decorators: [{
|
|
364
|
-
type: Injectable,
|
|
365
|
-
args: [{
|
|
366
|
-
providedIn: 'root'
|
|
367
|
-
}]
|
|
368
|
-
}], ctorParameters: () => [{ type: i1.AppConfigService }, { type: i2.CookieService }, { type: i3.ContentAuth }, { type: i4.ProcessAuth }] });
|
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtYWxmcmVzY28tYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9hdXRoL2Jhc2ljLWF1dGgvYmFzaWMtYWxmcmVzY28tYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUV4QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7O0FBR3BGLE1BQU0sc0JBQXNCLEdBQUcsc0JBQXNCLENBQUM7QUFDdEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBS25ELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx5QkFBeUI7SUFVbkUsWUFBWSxTQUEyQixFQUFFLE1BQXFCLEVBQVUsV0FBd0IsRUFBVSxXQUF3QjtRQUM5SCxLQUFLLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRDJDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFUeEgsZ0JBQVcsR0FBcUIsSUFBSSxDQUFDO1FB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LENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwSSxDQUFDO0lBRU8sd0JBQXdCO1FBQzVCLE9BQU8sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQzsrR0F0WFEsd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FGckIsTUFBTTs7NEZBRVQsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgQXBwQ29uZmlnVmFsdWVzIH0gZnJvbSAnLi4vLi4vYXBwLWNvbmZpZy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2F1dGhlbnRpY2F0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL2Nvb2tpZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRBdXRoIH0gZnJvbSAnLi9jb250ZW50LWF1dGgnO1xuaW1wb3J0IHsgUHJvY2Vzc0F1dGggfSBmcm9tICcuL3Byb2Nlc3MtYXV0aCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZWRpcmVjdGlvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3JlZGlyZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IEJhc2VBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9iYXNlLWF1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmNvbnN0IFJFTUVNQkVSX01FX0NPT0tJRV9LRVkgPSAnQUxGUkVTQ09fUkVNRU1CRVJfTUUnO1xuY29uc3QgUkVNRU1CRVJfTUVfVU5USUwgPSAxMDAwICogNjAgKiA2MCAqIDI0ICogMzA7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFzaWNBbGZyZXNjb0F1dGhTZXJ2aWNlIGV4dGVuZHMgQmFzZUF1dGhlbnRpY2F0aW9uU2VydmljZSB7XG4gICAgcHJvdGVjdGVkIHJlZGlyZWN0VXJsOiBSZWRpcmVjdGlvbk1vZGVsID0gbnVsbDtcblxuICAgIGF1dGhlbnRpY2F0aW9uczogQXV0aGVudGljYXRpb24gPSB7XG4gICAgICAgIGJhc2ljQXV0aDoge1xuICAgICAgICAgICAgdGlja2V0OiAnJ1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiAnYmFzaWMnXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSwgY29va2llOiBDb29raWVTZXJ2aWNlLCBwcml2YXRlIGNvbnRlbnRBdXRoOiBDb250ZW50QXV0aCwgcHJpdmF0ZSBwcm9jZXNzQXV0aDogUHJvY2Vzc0F1dGgpIHtcbiAgICAgICAgc3VwZXIoYXBwQ29uZmlnLCBjb29raWUpO1xuXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnLm9uTG9hZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzT2F1dGgoKSAmJiB0aGlzLmlzTG9nZ2VkSW4oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWlyZUFsZlRpY2tldCgpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Mb2dpbi5uZXh0KCdsb2dnZWQtaW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEF1dGguaW52YWxpZGF0ZVNlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Mb2dvdXQubmV4dCgnbG9nb3V0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRBdXRoLm9uTG9nb3V0LnBpcGUoXG4gICAgICAgICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxvZ291dC5uZXh0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29udGVudEF1dGgub25Mb2dpbi5waXBlKFxuICAgICAgICAgICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25Mb2dpbi5uZXh0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY29udGVudEF1dGgub25FcnJvci5waXBlKFxuICAgICAgICAgICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25FcnJvci5uZXh0KGV2ZW50KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucHJvY2Vzc0F1dGgub25Mb2dvdXQucGlwZShcbiAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTG9nb3V0Lm5leHQoZXZlbnQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzQXV0aC5vbkxvZ2luLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkxvZ2luLm5leHQoZXZlbnQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzQXV0aC5vbkVycm9yLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yLm5leHQoZXZlbnQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2dzIHRoZSB1c2VyIGluLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVzZXJuYW1lIFVzZXJuYW1lIGZvciB0aGUgbG9naW5cbiAgICAgKiBAcGFyYW0gcGFzc3dvcmQgUGFzc3dvcmQgZm9yIHRoZSBsb2dpblxuICAgICAqIEBwYXJhbSByZW1lbWJlck1lIFN0b3JlcyB0aGUgdXNlcidzIGxvZ2luIGRldGFpbHMgaWYgdHJ1ZVxuICAgICAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGF1dGggdHlwZSAoXCJFQ01cIiwgXCJCUE1cIiBvciBcIkFMTFwiKSBhbmQgYXV0aCB0aWNrZXRcbiAgICAgKi9cbiAgICBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCByZW1lbWJlck1lOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPHsgdHlwZTogc3RyaW5nOyB0aWNrZXQ6IGFueSB9PiB7XG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuZXhlY3V0ZUxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVSZW1lbWJlck1lQ29va2llKHJlbWVtYmVyTWUpO1xuICAgICAgICAgICAgICAgIHRoaXMub25Mb2dpbi5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0aGlzLmFwcENvbmZpZy5nZXQoQXBwQ29uZmlnVmFsdWVzLlBST1ZJREVSUyksXG4gICAgICAgICAgICAgICAgICAgIHRpY2tldDogcmVzcG9uc2VcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2dpbiBBbGZyZXNjbyBBUElcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZSB0byBsb2dpblxuICAgICAqIEBwYXJhbSBwYXNzd29yZCBwYXNzd29yZCB0byBsb2dpblxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJldHVybnMge25ldyBhdXRoZW50aWNhdGlvbiB0aWNrZXR9IGlmIHJlc29sdmVkIGFuZCB7ZXJyb3J9IGlmIHJlamVjdGVkLlxuICAgICAqL1xuICAgIGFzeW5jIGV4ZWN1dGVMb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQ3JlZGVudGlhbFZhbGlkKHVzZXJuYW1lKSB8fCAhdGhpcy5pc0NyZWRlbnRpYWxWYWxpZChwYXNzd29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ21pc3NpbmcgdXNlcm5hbWUgb3IgcGFzc3dvcmQnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXNlcm5hbWUpIHtcbiAgICAgICAgICAgIHVzZXJuYW1lID0gdXNlcm5hbWUudHJpbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNCUE1Qcm92aWRlcigpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2Nlc3NBdXRoLmxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNFQ01Qcm92aWRlcigpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbnRlbnRBdXRoLmxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNBTExQcm92aWRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2dpbkJQTUVDTSh1c2VybmFtZSwgcGFzc3dvcmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignVW5rbm93biBjb25maWd1cmF0aW9uJykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dpbkJQTUVDTSh1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgY29udGVudFByb21pc2UgPSB0aGlzLmNvbnRlbnRBdXRoLmxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCk7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NQcm9taXNlID0gdGhpcy5wcm9jZXNzQXV0aC5sb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBQcm9taXNlLmFsbChbY29udGVudFByb21pc2UsIHByb2Nlc3NQcm9taXNlXSkudGhlbihcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9naW4ubmV4dCgnc3VjY2VzcycpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEF1dGguaW52YWxpZGF0ZVNlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzQXV0aC5pbnZhbGlkYXRlU2Vzc2lvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yLm5leHQoJ3VuYXV0aG9yaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25FcnJvci5uZXh0KCdlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBcInJlbWVtYmVyIG1lXCIgY29va2llIHdhcyBzZXQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHJldHVybnMgVHJ1ZSBpZiBzZXQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGlzUmVtZW1iZXJNZVNldCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29va2llLmdldEl0ZW0oUkVNRU1CRVJfTUVfQ09PS0lFX0tFWSkgIT09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgdGhlIFwicmVtZW1iZXIgbWVcIiBjb29raWUgYXMgZWl0aGVyIGEgbG9uZy1saWZlIGNvb2tpZSBvciBhIHNlc3Npb24gY29va2llLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlbWVtYmVyTWUgRW5hYmxlcyBhIGxvbmctbGlmZSBjb29raWVcbiAgICAgKi9cbiAgICBzYXZlUmVtZW1iZXJNZUNvb2tpZShyZW1lbWJlck1lOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGxldCBleHBpcmF0aW9uID0gbnVsbDtcblxuICAgICAgICBpZiAocmVtZW1iZXJNZSkge1xuICAgICAgICAgICAgZXhwaXJhdGlvbiA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCB0aW1lID0gZXhwaXJhdGlvbi5nZXRUaW1lKCk7XG4gICAgICAgICAgICBjb25zdCBleHBpcmVUaW1lID0gdGltZSArIFJFTUVNQkVSX01FX1VOVElMO1xuICAgICAgICAgICAgZXhwaXJhdGlvbi5zZXRUaW1lKGV4cGlyZVRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29va2llLnNldEl0ZW0oUkVNRU1CRVJfTUVfQ09PS0lFX0tFWSwgJzEnLCBleHBpcmF0aW9uLCBudWxsKTtcbiAgICB9XG5cbiAgICBpc0NyZWRlbnRpYWxWYWxpZChjcmVkZW50aWFsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNyZWRlbnRpYWwgIT09IHVuZGVmaW5lZCAmJiBjcmVkZW50aWFsICE9PSBudWxsICYmIGNyZWRlbnRpYWwgIT09ICcnO1xuICAgIH1cblxuICAgIGdldFRva2VuKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzQlBNUHJvdmlkZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0F1dGguZ2V0VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRUNNUHJvdmlkZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudEF1dGguZ2V0VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQUxMUHJvdmlkZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudEF1dGguZ2V0VG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQHJldHVybnMgY29udGVudCBhdXRoIHRva2VuXG4gICAgICovXG4gICAgZ2V0VGlja2V0RWNtKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRBdXRoLmdldFRva2VuKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBAcmV0dXJucyBwcm9jZXNzIGF1dGggdG9rZW5cbiAgICAgKi9cbiAgICBnZXRUaWNrZXRCcG0oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0F1dGguZ2V0VG9rZW4oKTtcbiAgICB9XG5cbiAgICBpc0JwbUxvZ2dlZEluKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQXV0aC5pc0xvZ2dlZEluKCk7XG4gICAgfVxuXG4gICAgaXNFY21Mb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudEF1dGguaXNMb2dnZWRJbigpO1xuICAgIH1cblxuICAgIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGF1dGhXaXRoQ3JlZGVudGlhbHMgPSB0aGlzLmlzS2VyYmVyb3NFbmFibGVkKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNCUE1Qcm92aWRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQXV0aC5pc0xvZ2dlZEluKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0VDTVByb3ZpZGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBhdXRoV2l0aENyZWRlbnRpYWxzID8gdHJ1ZSA6IHRoaXMuY29udGVudEF1dGguaXNMb2dnZWRJbigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNBTExQcm92aWRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXV0aFdpdGhDcmVkZW50aWFscyA/IHRydWUgOiB0aGlzLmNvbnRlbnRBdXRoLmlzTG9nZ2VkSW4oKSAmJiB0aGlzLnByb2Nlc3NBdXRoLmlzTG9nZ2VkSW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvZ291dCBBbGZyZXNjbyBBUElcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJldHVybnMge2xvZ291dH0gaWYgcmVzb2x2ZWQgYW5kIHtlcnJvcn0gaWYgcmVqZWN0ZWQuXG4gICAgICovXG4gICAgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmICh0aGlzLmlzQlBNUHJvdmlkZXIoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0F1dGgubG9nb3V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0VDTVByb3ZpZGVyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRBdXRoLmxvZ291dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNBTExQcm92aWRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2dvdXRCUE1FQ00oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dvdXRCUE1FQ00oKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgY29udGVudFByb21pc2UgPSB0aGlzLmNvbnRlbnRBdXRoLmxvZ291dCgpO1xuICAgICAgICBjb25zdCBwcm9jZXNzUHJvbWlzZSA9IHRoaXMucHJvY2Vzc0F1dGgubG9nb3V0KCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIFByb21pc2UuYWxsKFtjb250ZW50UHJvbWlzZSwgcHJvY2Vzc1Byb21pc2VdKS50aGVuKFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50QXV0aC50aWNrZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0F1dGgudGlja2V0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9nb3V0Lm5leHQoJ2xvZ291dCcpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCdsb2dvdXQnKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25FcnJvci5uZXh0KCd1bmF1dGhvcml6ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IubmV4dCgnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIFVSTCB0byByZWRpcmVjdCB0byBhZnRlciBsb2dpbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSByZWRpcmVjdCBVUkxcbiAgICAgKi9cbiAgICBnZXRSZWRpcmVjdCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuYXBwQ29uZmlnLmdldDxzdHJpbmc+KEFwcENvbmZpZ1ZhbHVlcy5QUk9WSURFUlMpO1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNWYWxpZFJlZGlyZWN0aW9uKHByb3ZpZGVyKSA/IHRoaXMucmVkaXJlY3RVcmwudXJsIDogbnVsbDtcbiAgICB9XG5cbiAgICBzZXRSZWRpcmVjdCh1cmw/OiBSZWRpcmVjdGlvbk1vZGVsKSB7XG4gICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPSB1cmw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNWYWxpZFJlZGlyZWN0aW9uKHByb3ZpZGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3RVcmwgJiYgKHRoaXMucmVkaXJlY3RVcmwucHJvdmlkZXIgPT09IHByb3ZpZGVyIHx8IHRoaXMuaGFzU2VsZWN0ZWRQcm92aWRlckFsbChwcm92aWRlcikpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzU2VsZWN0ZWRQcm92aWRlckFsbChwcm92aWRlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZGlyZWN0VXJsICYmICh0aGlzLnJlZGlyZWN0VXJsLnByb3ZpZGVyID09PSAnQUxMJyB8fCBwcm92aWRlciA9PT0gJ0FMTCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBgZ2V0VXNlcm5hbWUoKWAgaW5zdGVhZFxuICAgICAqIEByZXR1cm5zIHRoZSB1c2VybmFtZSBvZiB0aGUgYXV0aGVudGljYXRlZCB1c2VyXG4gICAgICovXG4gICAgZ2V0QnBtVXNlcm5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0F1dGguZ2V0VXNlcm5hbWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGdldFVzZXJuYW1lKClgIGluc3RlYWRcbiAgICAgKiBAcmV0dXJucyB0aGUgdXNlcm5hbWUgb2YgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlclxuICAgICAqL1xuICAgIGdldEVjbVVzZXJuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRBdXRoLmdldFVzZXJuYW1lKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdXNlcm5hbWUgb2YgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHRoZSB1c2VybmFtZSBvZiB0aGUgYXV0aGVudGljYXRlZCB1c2VyXG4gICAgICovXG4gICAgZ2V0VXNlcm5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuaXNCUE1Qcm92aWRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzQXV0aC5nZXRVc2VybmFtZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNFQ01Qcm92aWRlcigpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50QXV0aC5nZXRVc2VybmFtZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudEF1dGguZ2V0VXNlcm5hbWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvZXMga2VyYmVyb3MgZW5hYmxlZD9cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICovXG4gICAgaXNLZXJiZXJvc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcENvbmZpZy5nZXQ8Ym9vbGVhbj4oQXBwQ29uZmlnVmFsdWVzLkFVVEhfV0lUSF9DUkVERU5USUFMUywgZmFsc2UpO1xuICAgIH1cblxuICAgIGdldEF1dGhIZWFkZXJzKHJlcXVlc3RVcmw6IHN0cmluZywgaGVhZGVyOiBIdHRwSGVhZGVycyk6IEh0dHBIZWFkZXJzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkQmFzaWNBdXRoKHJlcXVlc3RVcmwsIGhlYWRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRCYXNpY0F1dGgocmVxdWVzdFVybDogc3RyaW5nLCBoZWFkZXI6IEh0dHBIZWFkZXJzKTogSHR0cEhlYWRlcnMge1xuICAgICAgICBpZiAodGhpcy5pc0tlcmJlcm9zRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaGVhZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGlja2V0ID0gdGhpcy5nZXRUaWNrZXRFY21CYXNlNjQocmVxdWVzdFVybCk7XG5cbiAgICAgICAgaWYgKCF0aWNrZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBoZWFkZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGVhZGVyLnNldCgnQXV0aG9yaXphdGlvbicsIHRpY2tldCk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVxdWlyZUFsZlRpY2tldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudEF1dGgucmVxdWlyZUFsZlRpY2tldCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIEJQTSB0aWNrZXQgZnJvbSB0aGUgU3RvcmFnZSBpbiBCYXNlIDY0IGZvcm1hdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0VXJsIHRoZSByZXF1ZXN0IHVybFxuICAgICAqIEByZXR1cm5zIFRoZSB0aWNrZXQgb3IgYG51bGxgIGlmIG5vbmUgd2FzIGZvdW5kXG4gICAgICovXG4gICAgZ2V0VGlja2V0RWNtQmFzZTY0KHJlcXVlc3RVcmw6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBsZXQgdGlja2V0ID0gbnVsbDtcblxuICAgICAgICBjb25zdCBicG1Sb290ID0gYC8ke3RoaXMuYXBwQ29uZmlnLmdldDxzdHJpbmc+KEFwcENvbmZpZ1ZhbHVlcy5DT05URVhUUk9PVEJQTSkgfHwgJ2FjdGl2aXRpLWFwcCd9L2A7XG4gICAgICAgIGNvbnN0IGVjbVJvb3QgPSBgLyR7dGhpcy5hcHBDb25maWcuZ2V0PHN0cmluZz4oQXBwQ29uZmlnVmFsdWVzLkNPTlRFWFRST09URUNNKSB8fCAnYWxmcmVzY28nfS9gO1xuXG4gICAgICAgIGlmIChyZXF1ZXN0VXJsPy5pbmNsdWRlcyhlY21Sb290KSAmJiAhcmVxdWVzdFVybC5pbmNsdWRlcyhicG1Sb290KSkge1xuICAgICAgICAgICAgdGlja2V0ID0gdGhpcy5nZXRDb250ZW50U2VydmljZXNUaWNrZXQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0VXJsPy5pbmNsdWRlcyhicG1Sb290KSAmJiAhcmVxdWVzdFVybC5pbmNsdWRlcyhlY21Sb290KSkge1xuICAgICAgICAgICAgdGlja2V0ID0gdGhpcy5nZXRQcm9jZXNzU2VydmljZXNUaWNrZXQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0VXJsPy5pbmNsdWRlcyhlY21Sb290KSAmJiByZXF1ZXN0VXJsLmluY2x1ZGVzKGJwbVJvb3QpKSB7XG4gICAgICAgICAgICB0aWNrZXQgPSByZXF1ZXN0VXJsLmluZGV4T2YoZWNtUm9vdCkgPCByZXF1ZXN0VXJsLmluZGV4T2YoYnBtUm9vdCkgPyB0aGlzLmdldENvbnRlbnRTZXJ2aWNlc1RpY2tldCgpIDogdGhpcy5nZXRQcm9jZXNzU2VydmljZXNUaWNrZXQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJvY2Vzc1NlcnZpY2VzVGlja2V0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NBdXRoLmdldFRva2VuKCk/LnN0YXJ0c1dpdGgoJ0Jhc2ljICcpID8gdGhpcy5wcm9jZXNzQXV0aC5nZXRUb2tlbigpIDogJ0Jhc2ljICcgKyB0aGlzLnByb2Nlc3NBdXRoLmdldFRva2VuKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb250ZW50U2VydmljZXNUaWNrZXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdCYXNpYyAnICsgYnRvYSh0aGlzLmNvbnRlbnRBdXRoLmdldFRva2VuKCkpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { Injectable } from '@angular/core';
|
|
18
|
-
import { AdfHttpClient } from '@alfresco/adf-core/api';
|
|
19
|
-
import { AppConfigService, AppConfigValues } from '../../app-config/app-config.service';
|
|
20
|
-
import { StorageService } from '../../common/services/storage.service';
|
|
21
|
-
import { ReplaySubject, Subject } from 'rxjs';
|
|
22
|
-
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "../../app-config/app-config.service";
|
|
24
|
-
import * as i2 from "@alfresco/adf-core/api";
|
|
25
|
-
import * as i3 from "../../common/services/storage.service";
|
|
26
|
-
export class ContentAuth {
|
|
27
|
-
get basePath() {
|
|
28
|
-
const contextRootEcm = this.appConfigService.get(AppConfigValues.CONTEXTROOTECM) || 'alfresco';
|
|
29
|
-
return this.appConfigService.get(AppConfigValues.ECMHOST) + '/' + contextRootEcm + '/api/-default-/public/authentication/versions/1';
|
|
30
|
-
}
|
|
31
|
-
constructor(appConfigService, adfHttpClient, storageService) {
|
|
32
|
-
this.appConfigService = appConfigService;
|
|
33
|
-
this.adfHttpClient = adfHttpClient;
|
|
34
|
-
this.storageService = storageService;
|
|
35
|
-
this.onLogin = new ReplaySubject(1);
|
|
36
|
-
this.onLogout = new ReplaySubject(1);
|
|
37
|
-
this.onError = new Subject();
|
|
38
|
-
this.config = {
|
|
39
|
-
ticketEcm: null
|
|
40
|
-
};
|
|
41
|
-
this.authentications = {
|
|
42
|
-
basicAuth: {
|
|
43
|
-
ticket: ''
|
|
44
|
-
},
|
|
45
|
-
type: 'basic'
|
|
46
|
-
};
|
|
47
|
-
this.appConfigService.onLoad.subscribe(() => {
|
|
48
|
-
this.setConfig();
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
setConfig() {
|
|
52
|
-
if (this.storageService.getItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL)) {
|
|
53
|
-
this.setTicket(this.storageService.getItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
saveUsername(username) {
|
|
57
|
-
this.storageService.setItem('ACS_USERNAME', username);
|
|
58
|
-
}
|
|
59
|
-
getUsername() {
|
|
60
|
-
return this.storageService.getItem('ACS_USERNAME');
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* login Alfresco API
|
|
64
|
-
*
|
|
65
|
-
* @param username username to login
|
|
66
|
-
* @param password password to login
|
|
67
|
-
* @returns A promise that returns {new authentication ticket} if resolved and {error} if rejected.
|
|
68
|
-
*/
|
|
69
|
-
login(username, password) {
|
|
70
|
-
this.authentications.basicAuth.username = username;
|
|
71
|
-
this.authentications.basicAuth.password = password;
|
|
72
|
-
const loginRequest = {};
|
|
73
|
-
loginRequest.userId = this.authentications.basicAuth.username;
|
|
74
|
-
loginRequest.password = this.authentications.basicAuth.password;
|
|
75
|
-
return new Promise((resolve, reject) => {
|
|
76
|
-
this.createTicket(loginRequest)
|
|
77
|
-
.then((data) => {
|
|
78
|
-
this.saveUsername(username);
|
|
79
|
-
this.setTicket(data.entry.id);
|
|
80
|
-
this.adfHttpClient.emit('success');
|
|
81
|
-
this.onLogin.next('success');
|
|
82
|
-
resolve(data.entry.id);
|
|
83
|
-
})
|
|
84
|
-
.catch((error) => {
|
|
85
|
-
this.saveUsername('');
|
|
86
|
-
if (error.status === 401) {
|
|
87
|
-
this.adfHttpClient.emit('unauthorized', error);
|
|
88
|
-
this.onError.next('unauthorized');
|
|
89
|
-
}
|
|
90
|
-
else if (error.status === 403) {
|
|
91
|
-
this.adfHttpClient.emit('forbidden', error);
|
|
92
|
-
this.onError.next('forbidden');
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
this.adfHttpClient.emit('error', error);
|
|
96
|
-
this.onError.next('error');
|
|
97
|
-
}
|
|
98
|
-
reject(error);
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* logout Alfresco API
|
|
104
|
-
*
|
|
105
|
-
* @returns A promise that returns { authentication ticket} if resolved and {error} if rejected.
|
|
106
|
-
*/
|
|
107
|
-
logout() {
|
|
108
|
-
this.saveUsername('');
|
|
109
|
-
return new Promise((resolve, reject) => {
|
|
110
|
-
this.deleteTicket().then(() => {
|
|
111
|
-
this.invalidateSession();
|
|
112
|
-
this.adfHttpClient.emit('logout');
|
|
113
|
-
this.onLogout.next('logout');
|
|
114
|
-
resolve('logout');
|
|
115
|
-
}, (error) => {
|
|
116
|
-
if (error.status === 401) {
|
|
117
|
-
this.adfHttpClient.emit('unauthorized');
|
|
118
|
-
this.onError.next('unauthorized');
|
|
119
|
-
}
|
|
120
|
-
this.adfHttpClient.emit('error');
|
|
121
|
-
this.onError.next('error');
|
|
122
|
-
reject(error);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Set the current Ticket
|
|
128
|
-
*
|
|
129
|
-
* @param ticket a string representing the ticket
|
|
130
|
-
*/
|
|
131
|
-
setTicket(ticket) {
|
|
132
|
-
this.authentications.basicAuth.username = 'ROLE_TICKET';
|
|
133
|
-
this.authentications.basicAuth.password = ticket;
|
|
134
|
-
this.config.ticketEcm = ticket;
|
|
135
|
-
this.storageService.setItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL, ticket);
|
|
136
|
-
this.ticket = ticket;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* @returns the current Ticket
|
|
140
|
-
*/
|
|
141
|
-
getToken() {
|
|
142
|
-
if (!this.ticket) {
|
|
143
|
-
this.onError.next('error');
|
|
144
|
-
}
|
|
145
|
-
return this.ticket;
|
|
146
|
-
}
|
|
147
|
-
invalidateSession() {
|
|
148
|
-
this.storageService.removeItem(AppConfigValues.CONTENT_TICKET_STORAGE_LABEL);
|
|
149
|
-
this.authentications.basicAuth.username = null;
|
|
150
|
-
this.authentications.basicAuth.password = null;
|
|
151
|
-
this.config.ticketEcm = null;
|
|
152
|
-
this.ticket = null;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* @returns If the client is logged in return true
|
|
156
|
-
*/
|
|
157
|
-
isLoggedIn() {
|
|
158
|
-
return !!this.ticket;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* @returns return the Authentication
|
|
162
|
-
*/
|
|
163
|
-
getAuthentication() {
|
|
164
|
-
return this.authentications;
|
|
165
|
-
}
|
|
166
|
-
createTicket(ticketBodyCreate) {
|
|
167
|
-
if (ticketBodyCreate === null || ticketBodyCreate === undefined) {
|
|
168
|
-
this.onError.next(`Missing param ticketBodyCreate`);
|
|
169
|
-
throw new Error(`Missing param ticketBodyCreate`);
|
|
170
|
-
}
|
|
171
|
-
return this.adfHttpClient.post(this.basePath + '/tickets', { bodyParam: ticketBodyCreate });
|
|
172
|
-
}
|
|
173
|
-
async requireAlfTicket() {
|
|
174
|
-
const ticket = await this.adfHttpClient.get(this.basePath + '/tickets/-me-');
|
|
175
|
-
this.setTicket(ticket.entry.id);
|
|
176
|
-
}
|
|
177
|
-
deleteTicket() {
|
|
178
|
-
return this.adfHttpClient.delete(this.basePath + '/tickets/-me-');
|
|
179
|
-
}
|
|
180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentAuth, deps: [{ token: i1.AppConfigService }, { token: i2.AdfHttpClient }, { token: i3.StorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
181
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentAuth, providedIn: 'root' }); }
|
|
182
|
-
}
|
|
183
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ContentAuth, decorators: [{
|
|
184
|
-
type: Injectable,
|
|
185
|
-
args: [{
|
|
186
|
-
providedIn: 'root'
|
|
187
|
-
}]
|
|
188
|
-
}], ctorParameters: () => [{ type: i1.AppConfigService }, { type: i2.AdfHttpClient }, { type: i3.StorageService }] });
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc3JjL2xpYi9hdXRoL2Jhc2ljLWF1dGgvY29udGVudC1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBa0I5QyxNQUFNLE9BQU8sV0FBVztJQWlCcEIsSUFBSSxRQUFRO1FBQ1IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBUyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksVUFBVSxDQUFDO1FBQ3ZHLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBUyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLGNBQWMsR0FBRyxpREFBaUQsQ0FBQztJQUNqSixDQUFDO0lBRUQsWUFBb0IsZ0JBQWtDLEVBQVUsYUFBNEIsRUFBVSxjQUE4QjtRQUFoSCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFyQnBJLFlBQU8sR0FBRyxJQUFJLGFBQWEsQ0FBTSxDQUFDLENBQUMsQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxhQUFhLENBQU0sQ0FBQyxDQUFDLENBQUM7UUFDckMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFHN0IsV0FBTSxHQUFHO1lBQ0wsU0FBUyxFQUFFLElBQUk7U0FDbEIsQ0FBQztRQUVGLG9CQUFlLEdBQW1CO1lBQzlCLFNBQVMsRUFBRTtnQkFDUCxNQUFNLEVBQUUsRUFBRTthQUNiO1lBQ0QsSUFBSSxFQUFFLE9BQU87U0FDaEIsQ0FBQztRQVFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sU0FBUztRQUNiLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQztZQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBZ0I7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0I7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRW5ELE1BQU0sWUFBWSxHQUFRLEVBQUUsQ0FBQztRQUU3QixZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUM5RCxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUVoRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO2lCQUMxQixJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTTtRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNwQixHQUFHLEVBQUU7Z0JBQ0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RCLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNOLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO2dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FDSixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLDRCQUE0QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ04sT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxnQkFBNEI7UUFDckMsSUFBSSxnQkFBZ0IsS0FBSyxJQUFJLElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUVwRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDdEUsQ0FBQzsrR0EvS1EsV0FBVzttSEFBWCxXQUFXLGNBRlIsTUFBTTs7NEZBRVQsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkZkh0dHBDbGllbnQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUvYXBpJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIEFwcENvbmZpZ1ZhbHVlcyB9IGZyb20gJy4uLy4uL2FwcC1jb25maWcvYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvYXV0aGVudGljYXRpb24uaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBUaWNrZXRCb2R5IHtcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGlja2V0RW50cnkge1xuICAgIGVudHJ5OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgfTtcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50QXV0aCB7XG4gICAgb25Mb2dpbiA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oMSk7XG4gICAgb25Mb2dvdXQgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KDEpO1xuICAgIG9uRXJyb3IgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICB0aWNrZXQ6IHN0cmluZztcbiAgICBjb25maWcgPSB7XG4gICAgICAgIHRpY2tldEVjbTogbnVsbFxuICAgIH07XG5cbiAgICBhdXRoZW50aWNhdGlvbnM6IEF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICBiYXNpY0F1dGg6IHtcbiAgICAgICAgICAgIHRpY2tldDogJydcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogJ2Jhc2ljJ1xuICAgIH07XG5cbiAgICBnZXQgYmFzZVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY29udGV4dFJvb3RFY20gPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0PHN0cmluZz4oQXBwQ29uZmlnVmFsdWVzLkNPTlRFWFRST09URUNNKSB8fCAnYWxmcmVzY28nO1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldDxzdHJpbmc+KEFwcENvbmZpZ1ZhbHVlcy5FQ01IT1NUKSArICcvJyArIGNvbnRleHRSb290RWNtICsgJy9hcGkvLWRlZmF1bHQtL3B1YmxpYy9hdXRoZW50aWNhdGlvbi92ZXJzaW9ucy8xJztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsIHByaXZhdGUgYWRmSHR0cENsaWVudDogQWRmSHR0cENsaWVudCwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLm9uTG9hZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRDb25maWcoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb25maWcoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oQXBwQ29uZmlnVmFsdWVzLkNPTlRFTlRfVElDS0VUX1NUT1JBR0VfTEFCRUwpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRpY2tldCh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oQXBwQ29uZmlnVmFsdWVzLkNPTlRFTlRfVElDS0VUX1NUT1JBR0VfTEFCRUwpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNhdmVVc2VybmFtZSh1c2VybmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnQUNTX1VTRVJOQU1FJywgdXNlcm5hbWUpO1xuICAgIH1cblxuICAgIGdldFVzZXJuYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCdBQ1NfVVNFUk5BTUUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2dpbiBBbGZyZXNjbyBBUElcbiAgICAgKlxuICAgICAqIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZSB0byBsb2dpblxuICAgICAqIEBwYXJhbSBwYXNzd29yZCBwYXNzd29yZCB0byBsb2dpblxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJldHVybnMge25ldyBhdXRoZW50aWNhdGlvbiB0aWNrZXR9IGlmIHJlc29sdmVkIGFuZCB7ZXJyb3J9IGlmIHJlamVjdGVkLlxuICAgICAqL1xuICAgIGxvZ2luKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9ucy5iYXNpY0F1dGgudXNlcm5hbWUgPSB1c2VybmFtZTtcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbnMuYmFzaWNBdXRoLnBhc3N3b3JkID0gcGFzc3dvcmQ7XG5cbiAgICAgICAgY29uc3QgbG9naW5SZXF1ZXN0OiBhbnkgPSB7fTtcblxuICAgICAgICBsb2dpblJlcXVlc3QudXNlcklkID0gdGhpcy5hdXRoZW50aWNhdGlvbnMuYmFzaWNBdXRoLnVzZXJuYW1lO1xuICAgICAgICBsb2dpblJlcXVlc3QucGFzc3dvcmQgPSB0aGlzLmF1dGhlbnRpY2F0aW9ucy5iYXNpY0F1dGgucGFzc3dvcmQ7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGlja2V0KGxvZ2luUmVxdWVzdClcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUaWNrZXQoZGF0YS5lbnRyeS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRmSHR0cENsaWVudC5lbWl0KCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Mb2dpbi5uZXh0KCdzdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YS5lbnRyeS5pZCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVVzZXJuYW1lKCcnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZkh0dHBDbGllbnQuZW1pdCgndW5hdXRob3JpemVkJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yLm5leHQoJ3VuYXV0aG9yaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZkh0dHBDbGllbnQuZW1pdCgnZm9yYmlkZGVuJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yLm5leHQoJ2ZvcmJpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGZIdHRwQ2xpZW50LmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yLm5leHQoJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9nb3V0IEFsZnJlc2NvIEFQSVxuICAgICAqXG4gICAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmV0dXJucyB7IGF1dGhlbnRpY2F0aW9uIHRpY2tldH0gaWYgcmVzb2x2ZWQgYW5kIHtlcnJvcn0gaWYgcmVqZWN0ZWQuXG4gICAgICovXG4gICAgbG9nb3V0KCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHRoaXMuc2F2ZVVzZXJuYW1lKCcnKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlVGlja2V0KCkudGhlbihcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZGF0ZVNlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGZIdHRwQ2xpZW50LmVtaXQoJ2xvZ291dCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9nb3V0Lm5leHQoJ2xvZ291dCcpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCdsb2dvdXQnKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRmSHR0cENsaWVudC5lbWl0KCd1bmF1dGhvcml6ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25FcnJvci5uZXh0KCd1bmF1dGhvcml6ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZkh0dHBDbGllbnQuZW1pdCgnZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkVycm9yLm5leHQoJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBjdXJyZW50IFRpY2tldFxuICAgICAqXG4gICAgICogQHBhcmFtIHRpY2tldCBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRpY2tldFxuICAgICAqL1xuICAgIHNldFRpY2tldCh0aWNrZXQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9ucy5iYXNpY0F1dGgudXNlcm5hbWUgPSAnUk9MRV9USUNLRVQnO1xuICAgICAgICB0aGlzLmF1dGhlbnRpY2F0aW9ucy5iYXNpY0F1dGgucGFzc3dvcmQgPSB0aWNrZXQ7XG4gICAgICAgIHRoaXMuY29uZmlnLnRpY2tldEVjbSA9IHRpY2tldDtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKEFwcENvbmZpZ1ZhbHVlcy5DT05URU5UX1RJQ0tFVF9TVE9SQUdFX0xBQkVMLCB0aWNrZXQpO1xuICAgICAgICB0aGlzLnRpY2tldCA9IHRpY2tldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgY3VycmVudCBUaWNrZXRcbiAgICAgKi9cbiAgICBnZXRUb2tlbigpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMudGlja2V0KSB7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IubmV4dCgnZXJyb3InKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRpY2tldDtcbiAgICB9XG5cbiAgICBpbnZhbGlkYXRlU2Vzc2lvbigpIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKEFwcENvbmZpZ1ZhbHVlcy5DT05URU5UX1RJQ0tFVF9TVE9SQUdFX0xBQkVMKTtcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbnMuYmFzaWNBdXRoLnVzZXJuYW1lID0gbnVsbDtcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbnMuYmFzaWNBdXRoLnBhc3N3b3JkID0gbnVsbDtcbiAgICAgICAgdGhpcy5jb25maWcudGlja2V0RWNtID0gbnVsbDtcbiAgICAgICAgdGhpcy50aWNrZXQgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIElmIHRoZSBjbGllbnQgaXMgbG9nZ2VkIGluIHJldHVybiB0cnVlXG4gICAgICovXG4gICAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50aWNrZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgcmV0dXJuIHRoZSBBdXRoZW50aWNhdGlvblxuICAgICAqL1xuICAgIGdldEF1dGhlbnRpY2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdXRoZW50aWNhdGlvbnM7XG4gICAgfVxuXG4gICAgY3JlYXRlVGlja2V0KHRpY2tldEJvZHlDcmVhdGU6IFRpY2tldEJvZHkpOiBQcm9taXNlPFRpY2tldEVudHJ5PiB7XG4gICAgICAgIGlmICh0aWNrZXRCb2R5Q3JlYXRlID09PSBudWxsIHx8IHRpY2tldEJvZHlDcmVhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5vbkVycm9yLm5leHQoYE1pc3NpbmcgcGFyYW0gdGlja2V0Qm9keUNyZWF0ZWApO1xuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgcGFyYW0gdGlja2V0Qm9keUNyZWF0ZWApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYWRmSHR0cENsaWVudC5wb3N0KHRoaXMuYmFzZVBhdGggKyAnL3RpY2tldHMnLCB7IGJvZHlQYXJhbTogdGlja2V0Qm9keUNyZWF0ZSB9KTtcbiAgICB9XG5cbiAgICBhc3luYyByZXF1aXJlQWxmVGlja2V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB0aWNrZXQgPSBhd2FpdCB0aGlzLmFkZkh0dHBDbGllbnQuZ2V0KHRoaXMuYmFzZVBhdGggKyAnL3RpY2tldHMvLW1lLScpO1xuICAgICAgICB0aGlzLnNldFRpY2tldCh0aWNrZXQuZW50cnkuaWQpO1xuICAgIH1cblxuICAgIGRlbGV0ZVRpY2tldCgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGZIdHRwQ2xpZW50LmRlbGV0ZSh0aGlzLmJhc2VQYXRoICsgJy90aWNrZXRzLy1tZS0nKTtcbiAgICB9XG59XG4iXX0=
|