@eo-sdk/client 10.6.11 → 10.6.13
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/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +2 -0
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +18 -1
- package/esm2020/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +3 -3
- package/esm2020/app/eo-framework/grid/grid.component.mjs +2 -2
- package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +3 -1
- package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +10 -3
- package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +2 -2
- package/fesm2015/eo-sdk-client.mjs +36 -11
- package/fesm2015/eo-sdk-client.mjs.map +1 -1
- package/fesm2020/eo-sdk-client.mjs +36 -11
- package/fesm2020/eo-sdk-client.mjs.map +1 -1
- package/misc/scripts/exclude-core-ng-package.js +11 -0
- package/package.json +2 -10
- package/esm2020/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.mjs +0 -5
- package/esm2020/projects/eo-sdk/core/lib/config/core-config.mjs +0 -23
- package/esm2020/projects/eo-sdk/core/lib/config/core-init.service.mjs +0 -71
- package/esm2020/projects/eo-sdk/core/lib/config/core-init.tokens.mjs +0 -8
- package/esm2020/projects/eo-sdk/core/lib/config/initialize-module.mjs +0 -11
- package/esm2020/projects/eo-sdk/core/lib/config/missing-translation-handler.mjs +0 -15
- package/esm2020/projects/eo-sdk/core/lib/config/translate-json-loader.mjs +0 -130
- package/esm2020/projects/eo-sdk/core/lib/environment.enaio.mjs +0 -12
- package/esm2020/projects/eo-sdk/core/lib/eo-core-shared.module.mjs +0 -24
- package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +0 -117
- package/esm2020/projects/eo-sdk/core/lib/interface/change-password.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/event.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/http-options.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/logger.interface.mjs +0 -7
- package/esm2020/projects/eo-sdk/core/lib/interface/organization-objects.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/tree-node.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/baseparams.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/bpm.model.mjs +0 -70
- package/esm2020/projects/eo-sdk/core/lib/model/custom-action.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/dms-object-history.model.mjs +0 -30
- package/esm2020/projects/eo-sdk/core/lib/model/dms-object.model.mjs +0 -138
- package/esm2020/projects/eo-sdk/core/lib/model/eo-error.model.mjs +0 -37
- package/esm2020/projects/eo-sdk/core/lib/model/eo-user.model.mjs +0 -86
- package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +0 -36
- package/esm2020/projects/eo-sdk/core/lib/model/object-type.model.mjs +0 -39
- package/esm2020/projects/eo-sdk/core/lib/model/org.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/prepared-item.model.mjs +0 -35
- package/esm2020/projects/eo-sdk/core/lib/model/range-value.model.mjs +0 -45
- package/esm2020/projects/eo-sdk/core/lib/model/upload-file-item.model.mjs +0 -17
- package/esm2020/projects/eo-sdk/core/lib/model/upload-target.model.mjs +0 -50
- package/esm2020/projects/eo-sdk/core/lib/model/work-item-history.model.mjs +0 -54
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-interceptor.mjs +0 -29
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +0 -215
- package/esm2020/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/backend/backend.service.mjs +0 -360
- package/esm2020/projects/eo-sdk/core/lib/service/bpm/bpm.service.mjs +0 -286
- package/esm2020/projects/eo-sdk/core/lib/service/cache/app-cache.service.mjs +0 -117
- package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.mjs +0 -60
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.mjs +0 -6
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.mjs +0 -100
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.enum.mjs +0 -6
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.service.mjs +0 -135
- package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +0 -507
- package/esm2020/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/events/event.service.mjs +0 -44
- package/esm2020/projects/eo-sdk/core/lib/service/events/events.mjs +0 -27
- package/esm2020/projects/eo-sdk/core/lib/service/inbox/inbox.service.mjs +0 -111
- package/esm2020/projects/eo-sdk/core/lib/service/logger/console-log.service.mjs +0 -41
- package/esm2020/projects/eo-sdk/core/lib/service/logger/logger.mjs +0 -47
- package/esm2020/projects/eo-sdk/core/lib/service/notifications/notifications.service.mjs +0 -136
- package/esm2020/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +0 -305
- package/esm2020/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/search/search-query.model.mjs +0 -510
- package/esm2020/projects/eo-sdk/core/lib/service/search/search.service.mjs +0 -484
- package/esm2020/projects/eo-sdk/core/lib/service/signing/signing.service.mjs +0 -60
- package/esm2020/projects/eo-sdk/core/lib/service/storage/local-storage.service.mjs +0 -111
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.mjs +0 -216
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.mjs +0 -98
- package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +0 -345
- package/esm2020/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system-status.service.mjs +0 -104
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.enum.mjs +0 -9
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/upload/upload.service.mjs +0 -46
- package/esm2020/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.mjs +0 -83
- package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +0 -399
- package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +0 -304
- package/esm2020/projects/eo-sdk/core/public_api.mjs +0 -85
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6124
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6139
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
- package/projects/eo-sdk/core/README.md +0 -113
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.d.ts.map +0 -1
- package/projects/eo-sdk/core/index.d.ts +0 -6
- package/projects/eo-sdk/core/lib/config/core-config.d.ts +0 -14
- package/projects/eo-sdk/core/lib/config/core-config.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/core-init.service.d.ts +0 -33
- package/projects/eo-sdk/core/lib/config/core-init.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts +0 -8
- package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/initialize-module.d.ts +0 -7
- package/projects/eo-sdk/core/lib/config/initialize-module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts +0 -14
- package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts +0 -21
- package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/environment.enaio.d.ts +0 -6
- package/projects/eo-sdk/core/lib/environment.enaio.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts +0 -12
- package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/eo-core.module.d.ts +0 -46
- package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts +0 -8
- package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/event.interface.d.ts +0 -14
- package/projects/eo-sdk/core/lib/interface/event.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts +0 -17
- package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts +0 -20
- package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts +0 -20
- package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts +0 -24
- package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts +0 -58
- package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/bpm.model.d.ts +0 -253
- package/projects/eo-sdk/core/lib/model/bpm.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts +0 -34
- package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts +0 -59
- package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts +0 -137
- package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts +0 -19
- package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts +0 -107
- package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts +0 -71
- package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/object-type.model.d.ts +0 -125
- package/projects/eo-sdk/core/lib/model/object-type.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/org.model.d.ts +0 -94
- package/projects/eo-sdk/core/lib/model/org.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts +0 -190
- package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/range-value.model.d.ts +0 -22
- package/projects/eo-sdk/core/lib/model/range-value.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts +0 -30
- package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts +0 -60
- package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts +0 -52
- package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts +0 -12
- package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts +0 -23
- package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +0 -104
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts +0 -18
- package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +0 -209
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts +0 -150
- package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts +0 -59
- package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts +0 -54
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts +0 -35
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts +0 -5
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts +0 -16
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts +0 -49
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts +0 -5
- package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts +0 -55
- package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +0 -80
- package/projects/eo-sdk/core/lib/service/config/config.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +0 -286
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts +0 -13
- package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/events/event.service.d.ts +0 -31
- package/projects/eo-sdk/core/lib/service/events/event.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/events/events.d.ts +0 -27
- package/projects/eo-sdk/core/lib/service/events/events.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts +0 -66
- package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts +0 -20
- package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/logger/logger.d.ts +0 -25
- package/projects/eo-sdk/core/lib/service/logger/logger.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts +0 -78
- package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts +0 -9
- package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +0 -189
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts +0 -10
- package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +0 -327
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search.service.d.ts +0 -173
- package/projects/eo-sdk/core/lib/service/search/search.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +0 -52
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts +0 -53
- package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts +0 -15
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts +0 -108
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts +0 -74
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system/system.service.d.ts +0 -125
- package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts +0 -53
- package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts +0 -26
- package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts +0 -8
- package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts +0 -8
- package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +0 -28
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts +0 -50
- package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +0 -216
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/util/utils.d.ts +0 -148
- package/projects/eo-sdk/core/lib/util/utils.d.ts.map +0 -1
- package/projects/eo-sdk/core/public_api.d.ts +0 -82
- package/projects/eo-sdk/core/public_api.d.ts.map +0 -1
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
import { forkJoin as observableForkJoin, of, ReplaySubject } from 'rxjs';
|
|
2
|
-
import { catchError, tap, map, switchMap } from 'rxjs/operators';
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import { ObjectType } from '../../model/object-type.model';
|
|
5
|
-
import { cloneDeep } from 'lodash-es';
|
|
6
|
-
import { Utils } from '../../util/utils';
|
|
7
|
-
import { EnaioEvent } from '../events/events';
|
|
8
|
-
import moment from 'moment';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../backend/backend.service";
|
|
11
|
-
import * as i2 from "../logger/logger";
|
|
12
|
-
import * as i3 from "../events/event.service";
|
|
13
|
-
import * as i4 from "../cache/app-cache.service";
|
|
14
|
-
/**
|
|
15
|
-
* Collection of System Services
|
|
16
|
-
*/
|
|
17
|
-
export class SystemService {
|
|
18
|
-
constructor(backend, logger, eventService, appCache) {
|
|
19
|
-
this.backend = backend;
|
|
20
|
-
this.logger = logger;
|
|
21
|
-
this.eventService = eventService;
|
|
22
|
-
this.appCache = appCache;
|
|
23
|
-
this.systemSource = new ReplaySubject();
|
|
24
|
-
this.system$ = this.systemSource.asObservable();
|
|
25
|
-
// session cache for object type forms
|
|
26
|
-
this.objectTypeForms = [];
|
|
27
|
-
this.cachedRoles = [];
|
|
28
|
-
this.eventService.on(EnaioEvent.SYSTEM_STATUS_SCHEMA_CHANGED).subscribe(() => {
|
|
29
|
-
this.fetchSystemDefinition(this.user);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
set system(s) {
|
|
33
|
-
this._system = s;
|
|
34
|
-
}
|
|
35
|
-
get system() {
|
|
36
|
-
return JSON.parse(JSON.stringify(this._system));
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Gets all ObjectTypes
|
|
40
|
-
*
|
|
41
|
-
* @returns An array containing all object types
|
|
42
|
-
*/
|
|
43
|
-
getObjectTypes() {
|
|
44
|
-
return this.system.types;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Gets an ObjectType by name.
|
|
48
|
-
*
|
|
49
|
-
* @param objectTypeName The name of the object type
|
|
50
|
-
* @returns the ObjectType matching the given name
|
|
51
|
-
*/
|
|
52
|
-
getObjectType(objectTypeName) {
|
|
53
|
-
return this.system.types.find(t => t.name === objectTypeName);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get form elements from form model. This is useful if you have to fetch them
|
|
57
|
-
* for a special situation like SEARCH
|
|
58
|
-
* @param objectTypeName ObjectType to fetch elements for
|
|
59
|
-
* @param situation Form model situation to be fetched
|
|
60
|
-
* @param isContextType Flag indicating that the form model should be fetched for a context mode
|
|
61
|
-
*/
|
|
62
|
-
getFormElementsFromFormModel(objectTypeName, situation, isContextType) {
|
|
63
|
-
return this.getObjectTypeForm(objectTypeName, situation, isContextType ? 'CONTEXT' : null).pipe(switchMap(model => {
|
|
64
|
-
const elements = [];
|
|
65
|
-
this.processFormModelElements(model, elements);
|
|
66
|
-
return of(elements);
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
processFormModelElements(model, elements) {
|
|
70
|
-
model.elements.forEach(e => {
|
|
71
|
-
if (e.type !== "o2mGroup" && e.type !== "o2mGroupStack") {
|
|
72
|
-
elements.push(e);
|
|
73
|
-
}
|
|
74
|
-
else if (e.elements && e.elements.length) {
|
|
75
|
-
this.processFormModelElements(e, elements);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Checks whether or not the given type implements a given supertype
|
|
81
|
-
* @param type Type to be checked
|
|
82
|
-
* @param superTypeName Name of the supertype
|
|
83
|
-
*/
|
|
84
|
-
implementsType(type, superTypeName) {
|
|
85
|
-
return type.name === superTypeName || (type.implements && type.implements.indexOf(superTypeName) !== -1);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Gets a codesystem
|
|
89
|
-
*
|
|
90
|
-
* @param id The codesystems id
|
|
91
|
-
* @returns The codesystem object matching the given id
|
|
92
|
-
*/
|
|
93
|
-
getCodesystem(id) {
|
|
94
|
-
return this.system.codesystems.find(t => t.id === id || t.name === id);
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get the form model of an object type.
|
|
98
|
-
*
|
|
99
|
-
* @param objectTypeName The object type name
|
|
100
|
-
* @param situation The form situation to be fetched
|
|
101
|
-
* @param mode Form mode to fetch (e.g. CONTEXT)
|
|
102
|
-
* @returns The object type form model
|
|
103
|
-
*/
|
|
104
|
-
getObjectTypeForm(objectTypeName, situation, mode) {
|
|
105
|
-
/** check if we have a cached form first */
|
|
106
|
-
let cachedForm;
|
|
107
|
-
let i = 0;
|
|
108
|
-
while (!cachedForm && i < this.objectTypeForms.length) {
|
|
109
|
-
if (this.objectTypeForms[i].name === objectTypeName &&
|
|
110
|
-
this.objectTypeForms[i].mode === mode &&
|
|
111
|
-
this.objectTypeForms[i].situation === situation) {
|
|
112
|
-
cachedForm = this.objectTypeForms[i];
|
|
113
|
-
}
|
|
114
|
-
i++;
|
|
115
|
-
}
|
|
116
|
-
if (cachedForm) {
|
|
117
|
-
/** return a clone of the cached model as otherwise model changes will be added to the chached model */
|
|
118
|
-
return of(cloneDeep(cachedForm));
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
let uri = `/ui/form/${objectTypeName}?situation=${situation}`;
|
|
122
|
-
uri += !!mode ? `&formmode=${mode}` : '';
|
|
123
|
-
/** fetch and cache the requested form, if no cached version was found */
|
|
124
|
-
return this.backend.getViaTempCache(uri, () => this.backend
|
|
125
|
-
.getJson(uri)
|
|
126
|
-
.pipe(tap((model) => this.objectTypeForms.push(cloneDeep(model)))));
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Fetches the backends system definition and updates system$ Observable.
|
|
131
|
-
* Subscribe to the system$ observable instead of calling this function, otherwise you'll trigger fetching the
|
|
132
|
-
* system definition every time.
|
|
133
|
-
*
|
|
134
|
-
* @param user The user to load the system definition for
|
|
135
|
-
* @returns true when successfull
|
|
136
|
-
*/
|
|
137
|
-
getSystemDefinition(user) {
|
|
138
|
-
this.user = user;
|
|
139
|
-
// todo: temporary: OrgChanges could not be recognized but affect object definition
|
|
140
|
-
return this.fetchSystemDefinition(user);
|
|
141
|
-
// todo: enable again when OrgChanges are recognizable (DO NOT DELETE!)
|
|
142
|
-
// // is there a cached version
|
|
143
|
-
// return this.appCache
|
|
144
|
-
// .getItem(this.appCache.SYSTEM_DEFINITION)
|
|
145
|
-
// .catch((error) => {
|
|
146
|
-
// this.logger.error('Error fetching cached version of system definition.', error);
|
|
147
|
-
// return this.fetchSystemDefinition(user);
|
|
148
|
-
// })
|
|
149
|
-
// .flatMap((cachedSystemDefinition: any) => {
|
|
150
|
-
//
|
|
151
|
-
// // yes? then check if it's up to date
|
|
152
|
-
// if (cachedSystemDefinition) {
|
|
153
|
-
//
|
|
154
|
-
// if (
|
|
155
|
-
// user.schema.version !== cachedSystemDefinition.info.version ||
|
|
156
|
-
// user.id !== cachedSystemDefinition.info.user ||
|
|
157
|
-
// user.getSchemaLocale() !== cachedSystemDefinition.info.locale
|
|
158
|
-
// ) {
|
|
159
|
-
// return this.fetchSystemDefinition(user);
|
|
160
|
-
// } else {
|
|
161
|
-
// // cache is up to date. return the cached one
|
|
162
|
-
// this.logger.debug('System definition is up to date, using cached version.', cachedSystemDefinition);
|
|
163
|
-
// this.system = cachedSystemDefinition;
|
|
164
|
-
// this.systemSource.next(this.system);
|
|
165
|
-
// return of(true);
|
|
166
|
-
// }
|
|
167
|
-
// } else {
|
|
168
|
-
// // no cached systemDefinition found
|
|
169
|
-
// return this.fetchSystemDefinition(user);
|
|
170
|
-
// }
|
|
171
|
-
// });
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Creates a value depending on a given Type
|
|
175
|
-
*
|
|
176
|
-
* @param string valueType
|
|
177
|
-
* @returns any
|
|
178
|
-
*/
|
|
179
|
-
getDefaultValue(valueType) {
|
|
180
|
-
let defaultValue;
|
|
181
|
-
switch (valueType) {
|
|
182
|
-
case 'CURRENT_USER': {
|
|
183
|
-
defaultValue = this.user.name;
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
case 'CURRENT_USER_NAME': {
|
|
187
|
-
defaultValue = this.user.title;
|
|
188
|
-
break;
|
|
189
|
-
}
|
|
190
|
-
case 'CURRENT_DATETIME': {
|
|
191
|
-
defaultValue = new Date();
|
|
192
|
-
break;
|
|
193
|
-
}
|
|
194
|
-
case 'CURRENT_DATE': {
|
|
195
|
-
defaultValue = moment().startOf('day').format('yyyy-MM-DD');
|
|
196
|
-
break;
|
|
197
|
-
}
|
|
198
|
-
case 'YEAR': {
|
|
199
|
-
defaultValue = moment().year();
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
case 'MONTH': {
|
|
203
|
-
defaultValue = moment().month() + 1;
|
|
204
|
-
break;
|
|
205
|
-
}
|
|
206
|
-
case 'DAY': {
|
|
207
|
-
defaultValue = moment().date();
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
|
-
case 'HOUR': {
|
|
211
|
-
defaultValue = moment().hour();
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
case 'MINUTE': {
|
|
215
|
-
defaultValue = moment().minute();
|
|
216
|
-
break;
|
|
217
|
-
}
|
|
218
|
-
case 'SECOND': {
|
|
219
|
-
defaultValue = moment().second();
|
|
220
|
-
break;
|
|
221
|
-
}
|
|
222
|
-
case 'WEEK_OF_YEAR': {
|
|
223
|
-
defaultValue = moment().isoWeek();
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
case 'FIRST_DAY_OF_WEEK': {
|
|
227
|
-
defaultValue = moment().startOf('isoWeek').toDate();
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
case 'FIRST_DAY_OF_MONTH': {
|
|
231
|
-
defaultValue = moment().startOf('month').toDate();
|
|
232
|
-
break;
|
|
233
|
-
}
|
|
234
|
-
case 'FIRST_DAY_OF_YEAR': {
|
|
235
|
-
defaultValue = moment().startOf('year').toDate();
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return defaultValue;
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Fetches the system definition from the server. Provided params are used for storing the
|
|
243
|
-
* recent version in cache.
|
|
244
|
-
*
|
|
245
|
-
* @param user The user to fetch the system definition for
|
|
246
|
-
* @return boolean
|
|
247
|
-
*/
|
|
248
|
-
fetchSystemDefinition(user) {
|
|
249
|
-
const fetches = [
|
|
250
|
-
this.backend.getJson('/system/type/list?elements=true&basetypes=true'),
|
|
251
|
-
this.backend.getJson('/system/cs/list?elements=true')
|
|
252
|
-
];
|
|
253
|
-
return observableForkJoin(fetches)
|
|
254
|
-
.pipe(catchError(Utils.catch((error) => {
|
|
255
|
-
this.logger.error('Error fetching recent version of system definition from server.', error);
|
|
256
|
-
this.systemSource.error('Error fetching recent version of system definition from server.');
|
|
257
|
-
})), map((data) => {
|
|
258
|
-
this.objectTypeForms = [];
|
|
259
|
-
const system = {
|
|
260
|
-
/**
|
|
261
|
-
* info about the current system definition
|
|
262
|
-
*/
|
|
263
|
-
info: {
|
|
264
|
-
user: user.id,
|
|
265
|
-
locale: user.getSchemaLocale(),
|
|
266
|
-
version: user.schema.version
|
|
267
|
-
},
|
|
268
|
-
/**
|
|
269
|
-
* supported backend locales
|
|
270
|
-
*/
|
|
271
|
-
locales: user.schema.supportedLocales,
|
|
272
|
-
/**
|
|
273
|
-
* object type definitions
|
|
274
|
-
*/
|
|
275
|
-
types: [],
|
|
276
|
-
/**
|
|
277
|
-
* codesystems cache
|
|
278
|
-
*/
|
|
279
|
-
codesystems: []
|
|
280
|
-
};
|
|
281
|
-
const types = data[0];
|
|
282
|
-
system.types = types.map(t => new ObjectType(t));
|
|
283
|
-
system.codesystems = data[1];
|
|
284
|
-
this.system = system;
|
|
285
|
-
this.systemSource.next(system);
|
|
286
|
-
this.logger.debug('Fetched new version of system definition (user: ' + user.id + ', version: ' + user.schema.version + ').');
|
|
287
|
-
this.appCache
|
|
288
|
-
.setItem(this.appCache.SYSTEM_DEFINITION, system)
|
|
289
|
-
.subscribe(() => {
|
|
290
|
-
this.logger.debug('Cached recent version');
|
|
291
|
-
}, Utils.logError(null, 'Error caching recent version of system definition.'));
|
|
292
|
-
return true;
|
|
293
|
-
}));
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Retrieve an organization object by its ID
|
|
297
|
-
* @param id ID of org object
|
|
298
|
-
*/
|
|
299
|
-
getOrganizationObjectById(id) {
|
|
300
|
-
return this.backend.getJson(`/organization/id/${id}`);
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Fetches the organization object for a given name.
|
|
304
|
-
*
|
|
305
|
-
* @param name The name to fetch object for
|
|
306
|
-
* @returns
|
|
307
|
-
*/
|
|
308
|
-
getOrganizationObject(name) {
|
|
309
|
-
return this.getOrganizationObjects([name]).pipe(map(res => res[0]));
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Fetches a collection of organization objects
|
|
313
|
-
*
|
|
314
|
-
* @param names Array of names to fetch objects for
|
|
315
|
-
* @returns A Array of Organization Objects
|
|
316
|
-
*/
|
|
317
|
-
getOrganizationObjects(names) {
|
|
318
|
-
const toFetch = names.map(name => this.backend.getJson(`/organization/name/${name}`).pipe(catchError(error => of({ id: name, active: false }))));
|
|
319
|
-
return observableForkJoin(toFetch);
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Fetches a collection of organization roles
|
|
323
|
-
*
|
|
324
|
-
* @return A Array of Organization Roles
|
|
325
|
-
*/
|
|
326
|
-
getRoles() {
|
|
327
|
-
if (this.cachedRoles.length) {
|
|
328
|
-
return of(this.cachedRoles);
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
return this.backend
|
|
332
|
-
.get('/organization/role')
|
|
333
|
-
.pipe(map(o => o), tap(roles => (this.cachedRoles = roles)));
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
SystemService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SystemService, deps: [{ token: i1.BackendService }, { token: i2.Logger }, { token: i3.EventService }, { token: i4.AppCacheService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
338
|
-
SystemService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SystemService, providedIn: 'root' });
|
|
339
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SystemService, decorators: [{
|
|
340
|
-
type: Injectable,
|
|
341
|
-
args: [{
|
|
342
|
-
providedIn: 'root'
|
|
343
|
-
}]
|
|
344
|
-
}], ctorParameters: function () { return [{ type: i1.BackendService }, { type: i2.Logger }, { type: i3.EventService }, { type: i4.AppCacheService }]; } });
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxFQUFjLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVuRixPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUt6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFekQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVwQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHdkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7O0FBRTVCOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFXeEIsWUFBb0IsT0FBdUIsRUFDdkIsTUFBYyxFQUNkLFlBQTBCLEVBQzFCLFFBQXlCO1FBSHpCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQVhyQyxpQkFBWSxHQUFHLElBQUksYUFBYSxFQUFPLENBQUM7UUFDekMsWUFBTyxHQUFvQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRW5FLHNDQUFzQztRQUM5QixvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUU1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QUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzQkFBc0IsQ0FBQyxLQUFlO1FBQ3BDLE1BQU0sT0FBTyxHQUF1QyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkwsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQzNCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM3QjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTztpQkFDaEIsR0FBRyxDQUFDLG9CQUFvQixDQUFDO2lCQUN6QixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBYyxDQUFDLEVBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFrQixDQUFDLENBQUMsQ0FDdEQsQ0FBQztTQUNMO0lBQ0gsQ0FBQzs7MEdBcldVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2ZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbiwgb2YsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge2NhdGNoRXJyb3IsIHRhcCwgbWFwLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lPcmdhbml6YXRpb25PYmplY3RzfSBmcm9tICcuLi8uLi9pbnRlcmZhY2Uvb3JnYW5pemF0aW9uLW9iamVjdHMuaW50ZXJmYWNlJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7QXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9hcHAtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XG5pbXBvcnQge09iamVjdFR5cGV9IGZyb20gJy4uLy4uL21vZGVsL29iamVjdC10eXBlLm1vZGVsJztcbmltcG9ydCB7RW9Vc2VyfSBmcm9tICcuLi8uLi9tb2RlbC9lby11c2VyLm1vZGVsJztcbmltcG9ydCB7Y2xvbmVEZWVwfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtPcmdSb2xlfSBmcm9tICcuLi8uLi9tb2RlbC9vcmcubW9kZWwnO1xuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQge0lDb2RlU3lzdGVtfSBmcm9tICcuL3N5c3RlbWRlZmluaXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgU3lzdGVtIFNlcnZpY2VzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN5c3RlbVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgX3N5c3RlbTtcbiAgcHJpdmF0ZSBzeXN0ZW1Tb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxhbnk+KCk7XG4gIHB1YmxpYyBzeXN0ZW0kOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnN5c3RlbVNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAvLyBzZXNzaW9uIGNhY2hlIGZvciBvYmplY3QgdHlwZSBmb3Jtc1xuICBwcml2YXRlIG9iamVjdFR5cGVGb3JtczogYW55W10gPSBbXTtcbiAgcHJpdmF0ZSB1c2VyOiBFb1VzZXI7XG4gIHByaXZhdGUgY2FjaGVkUm9sZXM6IE9yZ1JvbGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgYXBwQ2FjaGU6IEFwcENhY2hlU2VydmljZSkge1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLm9uKEVuYWlvRXZlbnQuU1lTVEVNX1NUQVRVU19TQ0hFTUFfQ0hBTkdFRCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZmV0Y2hTeXN0ZW1EZWZpbml0aW9uKHRoaXMudXNlcik7XG4gICAgfSlcbiAgfVxuXG4gIHNldCBzeXN0ZW0ocyl7XG4gICAgdGhpcy5fc3lzdGVtID0gcztcbiAgfVxuXG4gIGdldCBzeXN0ZW0oKXtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9zeXN0ZW0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBPYmplY3RUeXBlc1xuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIGFsbCBvYmplY3QgdHlwZXNcbiAgICovXG4gIHB1YmxpYyBnZXRPYmplY3RUeXBlcygpOiBPYmplY3RUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbS50eXBlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIE9iamVjdFR5cGUgYnkgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFR5cGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdHlwZVxuICAgKiBAcmV0dXJucyB0aGUgT2JqZWN0VHlwZSBtYXRjaGluZyB0aGUgZ2l2ZW4gbmFtZVxuICAgKi9cbiAgcHVibGljIGdldE9iamVjdFR5cGUob2JqZWN0VHlwZU5hbWU6IHN0cmluZyk6IE9iamVjdFR5cGUge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbS50eXBlcy5maW5kKHQgPT4gdC5uYW1lID09PSBvYmplY3RUeXBlTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGZvcm0gZWxlbWVudHMgZnJvbSBmb3JtIG1vZGVsLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSB0byBmZXRjaCB0aGVtXG4gICAqIGZvciBhIHNwZWNpYWwgc2l0dWF0aW9uIGxpa2UgU0VBUkNIXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlTmFtZSBPYmplY3RUeXBlIHRvIGZldGNoIGVsZW1lbnRzIGZvclxuICAgKiBAcGFyYW0gc2l0dWF0aW9uIEZvcm0gbW9kZWwgc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcbiAgICogQHBhcmFtIGlzQ29udGV4dFR5cGUgRmxhZyBpbmRpY2F0aW5nIHRoYXQgdGhlIGZvcm0gbW9kZWwgc2hvdWxkIGJlIGZldGNoZWQgZm9yIGEgY29udGV4dCBtb2RlXG4gICAqL1xuICBnZXRGb3JtRWxlbWVudHNGcm9tRm9ybU1vZGVsKG9iamVjdFR5cGVOYW1lOiBzdHJpbmcsIHNpdHVhdGlvbjogc3RyaW5nLCBpc0NvbnRleHRUeXBlPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RUeXBlRm9ybShvYmplY3RUeXBlTmFtZSwgc2l0dWF0aW9uLCBpc0NvbnRleHRUeXBlID8gJ0NPTlRFWFQnIDogbnVsbCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChtb2RlbCA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMucHJvY2Vzc0Zvcm1Nb2RlbEVsZW1lbnRzKG1vZGVsLCBlbGVtZW50cyk7XG4gICAgICAgIHJldHVybiBvZihlbGVtZW50cyk7XG4gICAgfSkpXG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NGb3JtTW9kZWxFbGVtZW50cyhtb2RlbDogYW55LCBlbGVtZW50czogYW55W10pIHtcbiAgICBtb2RlbC5lbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgaWYoZS50eXBlICE9PSBcIm8ybUdyb3VwXCIgJiYgZS50eXBlICE9PSBcIm8ybUdyb3VwU3RhY2tcIikge1xuICAgICAgICBlbGVtZW50cy5wdXNoKGUpO1xuICAgICAgfSBlbHNlIGlmKGUuZWxlbWVudHMgJiYgZS5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRm9ybU1vZGVsRWxlbWVudHMoZSwgZWxlbWVudHMpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiB0eXBlIGltcGxlbWVudHMgYSBnaXZlbiBzdXBlcnR5cGVcbiAgICogQHBhcmFtIHR5cGUgVHlwZSB0byBiZSBjaGVja2VkXG4gICAqIEBwYXJhbSBzdXBlclR5cGVOYW1lIE5hbWUgb2YgdGhlIHN1cGVydHlwZVxuICAgKi9cbiAgcHVibGljIGltcGxlbWVudHNUeXBlKHR5cGU6IE9iamVjdFR5cGUsIHN1cGVyVHlwZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlLm5hbWUgPT09IHN1cGVyVHlwZU5hbWUgfHwgKHR5cGUuaW1wbGVtZW50cyAmJiB0eXBlLmltcGxlbWVudHMuaW5kZXhPZihzdXBlclR5cGVOYW1lKSAhPT0gLTEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBjb2Rlc3lzdGVtXG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgY29kZXN5c3RlbXMgaWRcbiAgICogQHJldHVybnMgVGhlIGNvZGVzeXN0ZW0gb2JqZWN0IG1hdGNoaW5nIHRoZSBnaXZlbiBpZFxuICAgKi9cbiAgcHVibGljIGdldENvZGVzeXN0ZW0oaWQ6IHN0cmluZyk6IElDb2RlU3lzdGVtIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW0uY29kZXN5c3RlbXMuZmluZCh0ID0+IHQuaWQgPT09IGlkIHx8IHQubmFtZSA9PT0gaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZm9ybSBtb2RlbCBvZiBhbiBvYmplY3QgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIG9iamVjdFR5cGVOYW1lIFRoZSBvYmplY3QgdHlwZSBuYW1lXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gVGhlIGZvcm0gc2l0dWF0aW9uIHRvIGJlIGZldGNoZWRcbiAgICogQHBhcmFtIG1vZGUgRm9ybSBtb2RlIHRvIGZldGNoIChlLmcuIENPTlRFWFQpXG4gICAqIEByZXR1cm5zIFRoZSBvYmplY3QgdHlwZSBmb3JtIG1vZGVsXG4gICAqL1xuICBwdWJsaWMgZ2V0T2JqZWN0VHlwZUZvcm0ob2JqZWN0VHlwZU5hbWU6IHN0cmluZywgc2l0dWF0aW9uOiBzdHJpbmcsIG1vZGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgLyoqIGNoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZWQgZm9ybSBmaXJzdCAqL1xuICAgIGxldCBjYWNoZWRGb3JtO1xuXG4gICAgbGV0IGkgPSAwO1xuICAgIHdoaWxlICghY2FjaGVkRm9ybSAmJiBpIDwgdGhpcy5vYmplY3RUeXBlRm9ybXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5vYmplY3RUeXBlRm9ybXNbaV0ubmFtZSA9PT0gb2JqZWN0VHlwZU5hbWUgJiZcbiAgICAgICAgdGhpcy5vYmplY3RUeXBlRm9ybXNbaV0ubW9kZSA9PT0gbW9kZSAmJlxuICAgICAgICB0aGlzLm9iamVjdFR5cGVGb3Jtc1tpXS5zaXR1YXRpb24gPT09IHNpdHVhdGlvbikge1xuICAgICAgICBjYWNoZWRGb3JtID0gdGhpcy5vYmplY3RUeXBlRm9ybXNbaV07XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgaWYgKGNhY2hlZEZvcm0pIHtcbiAgICAgIC8qKiByZXR1cm4gYSBjbG9uZSBvZiB0aGUgY2FjaGVkIG1vZGVsIGFzIG90aGVyd2lzZSBtb2RlbCBjaGFuZ2VzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGNoYWNoZWQgbW9kZWwgKi9cbiAgICAgIHJldHVybiBvZihjbG9uZURlZXAoY2FjaGVkRm9ybSkpO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIGxldCB1cmkgPSBgL3VpL2Zvcm0vJHtvYmplY3RUeXBlTmFtZX0/c2l0dWF0aW9uPSR7c2l0dWF0aW9ufWA7XG4gICAgICB1cmkgKz0gISFtb2RlID8gYCZmb3JtbW9kZT0ke21vZGV9YCA6ICcnO1xuXG4gICAgICAvKiogZmV0Y2ggYW5kIGNhY2hlIHRoZSByZXF1ZXN0ZWQgZm9ybSwgaWYgbm8gY2FjaGVkIHZlcnNpb24gd2FzIGZvdW5kICovXG4gICAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZSh1cmksICgpID0+IHRoaXMuYmFja2VuZFxuICAgICAgICAuZ2V0SnNvbih1cmkpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgobW9kZWwpID0+IHRoaXMub2JqZWN0VHlwZUZvcm1zLnB1c2goY2xvbmVEZWVwKG1vZGVsKSkpXG4gICAgICAgICkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBiYWNrZW5kcyBzeXN0ZW0gZGVmaW5pdGlvbiBhbmQgdXBkYXRlcyBzeXN0ZW0kIE9ic2VydmFibGUuXG4gICAqIFN1YnNjcmliZSB0byB0aGUgc3lzdGVtJCBvYnNlcnZhYmxlIGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBvdGhlcndpc2UgeW91J2xsIHRyaWdnZXIgZmV0Y2hpbmcgdGhlXG4gICAqIHN5c3RlbSBkZWZpbml0aW9uIGV2ZXJ5IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyIFRoZSB1c2VyIHRvIGxvYWQgdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZvclxuICAgKiBAcmV0dXJucyB0cnVlIHdoZW4gc3VjY2Vzc2Z1bGxcbiAgICovXG4gIHB1YmxpYyBnZXRTeXN0ZW1EZWZpbml0aW9uKHVzZXI6IEVvVXNlcik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXG4gICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAvLyB0b2RvOiB0ZW1wb3Jhcnk6IE9yZ0NoYW5nZXMgY291bGQgbm90IGJlIHJlY29nbml6ZWQgYnV0IGFmZmVjdCBvYmplY3QgZGVmaW5pdGlvblxuICAgIHJldHVybiB0aGlzLmZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyKTtcblxuICAgIC8vIHRvZG86IGVuYWJsZSBhZ2FpbiB3aGVuIE9yZ0NoYW5nZXMgYXJlIHJlY29nbml6YWJsZSAoRE8gTk9UIERFTEVURSEpXG4gICAgLy8gLy8gaXMgdGhlcmUgYSBjYWNoZWQgdmVyc2lvblxuICAgIC8vIHJldHVybiB0aGlzLmFwcENhY2hlXG4gICAgLy8gICAuZ2V0SXRlbSh0aGlzLmFwcENhY2hlLlNZU1RFTV9ERUZJTklUSU9OKVxuICAgIC8vICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIC8vICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY2FjaGVkIHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24uJywgZXJyb3IpO1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5mZXRjaFN5c3RlbURlZmluaXRpb24odXNlcik7XG4gICAgLy8gICB9KVxuICAgIC8vICAgLmZsYXRNYXAoKGNhY2hlZFN5c3RlbURlZmluaXRpb246IGFueSkgPT4ge1xuICAgIC8vXG4gICAgLy8gICAgIC8vIHllcz8gdGhlbiBjaGVjayBpZiBpdCdzIHVwIHRvIGRhdGVcbiAgICAvLyAgICAgaWYgKGNhY2hlZFN5c3RlbURlZmluaXRpb24pIHtcbiAgICAvL1xuICAgIC8vICAgICAgIGlmIChcbiAgICAvLyAgICAgICAgIHVzZXIuc2NoZW1hLnZlcnNpb24gIT09IGNhY2hlZFN5c3RlbURlZmluaXRpb24uaW5mby52ZXJzaW9uIHx8XG4gICAgLy8gICAgICAgICB1c2VyLmlkICE9PSBjYWNoZWRTeXN0ZW1EZWZpbml0aW9uLmluZm8udXNlciB8fFxuICAgIC8vICAgICAgICAgdXNlci5nZXRTY2hlbWFMb2NhbGUoKSAhPT0gY2FjaGVkU3lzdGVtRGVmaW5pdGlvbi5pbmZvLmxvY2FsZVxuICAgIC8vICAgICAgICkge1xuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hTeXN0ZW1EZWZpbml0aW9uKHVzZXIpO1xuICAgIC8vICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICAvLyBjYWNoZSBpcyB1cCB0byBkYXRlLiByZXR1cm4gdGhlIGNhY2hlZCBvbmVcbiAgICAvLyAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTeXN0ZW0gZGVmaW5pdGlvbiBpcyB1cCB0byBkYXRlLCB1c2luZyBjYWNoZWQgdmVyc2lvbi4nLCBjYWNoZWRTeXN0ZW1EZWZpbml0aW9uKTtcbiAgICAvLyAgICAgICAgIHRoaXMuc3lzdGVtID0gY2FjaGVkU3lzdGVtRGVmaW5pdGlvbjtcbiAgICAvLyAgICAgICAgIHRoaXMuc3lzdGVtU291cmNlLm5leHQodGhpcy5zeXN0ZW0pO1xuICAgIC8vICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAvLyBubyBjYWNoZWQgc3lzdGVtRGVmaW5pdGlvbiBmb3VuZFxuICAgIC8vICAgICAgIHJldHVybiB0aGlzLmZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHZhbHVlIGRlcGVuZGluZyBvbiBhIGdpdmVuIFR5cGVcbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyB2YWx1ZVR5cGVcbiAgICogQHJldHVybnMgYW55XG4gICAqL1xuICBwdWJsaWMgZ2V0RGVmYXVsdFZhbHVlKHZhbHVlVHlwZTogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgZGVmYXVsdFZhbHVlO1xuICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XG4gICAgICBjYXNlICdDVVJSRU5UX1VTRVInOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMudXNlci5uYW1lO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0NVUlJFTlRfVVNFUl9OQU1FJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLnVzZXIudGl0bGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ1VSUkVOVF9EQVRFVElNRSc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDVVJSRU5UX0RBVEUnOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RheScpLmZvcm1hdCgneXl5eS1NTS1ERCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1lFQVInOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLnllYXIoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdNT05USCc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkubW9udGgoKSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREFZJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5kYXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnSE9VUic6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuaG91cigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ01JTlVURSc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkubWludXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnU0VDT05EJzoge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBtb21lbnQoKS5zZWNvbmQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdXRUVLX09GX1lFQVInOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG1vbWVudCgpLmlzb1dlZWsoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdGSVJTVF9EQVlfT0ZfV0VFSyc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc3RhcnRPZignaXNvV2VlaycpLnRvRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0ZJUlNUX0RBWV9PRl9NT05USCc6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdGSVJTVF9EQVlfT0ZfWUVBUic6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpLnRvRGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gdGhlIHNlcnZlci4gUHJvdmlkZWQgcGFyYW1zIGFyZSB1c2VkIGZvciBzdG9yaW5nIHRoZVxuICAgKiByZWNlbnQgdmVyc2lvbiBpbiBjYWNoZS5cbiAgICpcbiAgICogQHBhcmFtIHVzZXIgVGhlIHVzZXIgdG8gZmV0Y2ggdGhlIHN5c3RlbSBkZWZpbml0aW9uIGZvclxuICAgKiBAcmV0dXJuIGJvb2xlYW5cbiAgICovXG4gIGZldGNoU3lzdGVtRGVmaW5pdGlvbih1c2VyOiBFb1VzZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblxuICAgIGNvbnN0IGZldGNoZXMgPSBbXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbignL3N5c3RlbS90eXBlL2xpc3Q/ZWxlbWVudHM9dHJ1ZSZiYXNldHlwZXM9dHJ1ZScpLFxuICAgICAgdGhpcy5iYWNrZW5kLmdldEpzb24oJy9zeXN0ZW0vY3MvbGlzdD9lbGVtZW50cz10cnVlJylcbiAgICBdO1xuXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbihmZXRjaGVzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHJlY2VudCB2ZXJzaW9uIG9mIHN5c3RlbSBkZWZpbml0aW9uIGZyb20gc2VydmVyLicsIGVycm9yKTtcbiAgICAgICAgICB0aGlzLnN5c3RlbVNvdXJjZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgcmVjZW50IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gZnJvbSBzZXJ2ZXIuJyk7XG4gICAgICAgIH0pKSxcbiAgICAgICAgbWFwKChkYXRhKSA9PiB7XG5cbiAgICAgICAgICB0aGlzLm9iamVjdFR5cGVGb3JtcyA9IFtdO1xuICAgICAgICAgIGNvbnN0IHN5c3RlbSA9IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogaW5mbyBhYm91dCB0aGUgY3VycmVudCBzeXN0ZW0gZGVmaW5pdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgIHVzZXI6IHVzZXIuaWQsXG4gICAgICAgICAgICAgIGxvY2FsZTogdXNlci5nZXRTY2hlbWFMb2NhbGUoKSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogdXNlci5zY2hlbWEudmVyc2lvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogc3VwcG9ydGVkIGJhY2tlbmQgbG9jYWxlc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsb2NhbGVzOiB1c2VyLnNjaGVtYS5zdXBwb3J0ZWRMb2NhbGVzLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBvYmplY3QgdHlwZSBkZWZpbml0aW9uc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0eXBlczogW10sXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIGNvZGVzeXN0ZW1zIGNhY2hlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvZGVzeXN0ZW1zOiBbXVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCB0eXBlcyA9IGRhdGFbMF07XG4gICAgICAgICAgc3lzdGVtLnR5cGVzID0gdHlwZXMubWFwKHQgPT4gbmV3IE9iamVjdFR5cGUodCkpO1xuICAgICAgICAgIHN5c3RlbS5jb2Rlc3lzdGVtcyA9IGRhdGFbMV07XG5cbiAgICAgICAgICB0aGlzLnN5c3RlbSA9IHN5c3RlbTtcbiAgICAgICAgICB0aGlzLnN5c3RlbVNvdXJjZS5uZXh0KHN5c3RlbSk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0ZldGNoZWQgbmV3IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24gKHVzZXI6ICcgKyB1c2VyLmlkICsgJywgdmVyc2lvbjogJyArIHVzZXIuc2NoZW1hLnZlcnNpb24gKyAnKS4nKTtcbiAgICAgICAgICB0aGlzLmFwcENhY2hlXG4gICAgICAgICAgICAuc2V0SXRlbSh0aGlzLmFwcENhY2hlLlNZU1RFTV9ERUZJTklUSU9OLCBzeXN0ZW0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0NhY2hlZCByZWNlbnQgdmVyc2lvbicpO1xuICAgICAgICAgICAgfSwgVXRpbHMubG9nRXJyb3IobnVsbCwgJ0Vycm9yIGNhY2hpbmcgcmVjZW50IHZlcnNpb24gb2Ygc3lzdGVtIGRlZmluaXRpb24uJykpO1xuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhbiBvcmdhbml6YXRpb24gb2JqZWN0IGJ5IGl0cyBJRFxuICAgKiBAcGFyYW0gaWQgSUQgb2Ygb3JnIG9iamVjdFxuICAgKi9cbiAgZ2V0T3JnYW5pemF0aW9uT2JqZWN0QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oYC9vcmdhbml6YXRpb24vaWQvJHtpZH1gKVxuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIG9yZ2FuaXphdGlvbiBvYmplY3QgZm9yIGEgZ2l2ZW4gbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgdG8gZmV0Y2ggb2JqZWN0IGZvclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0T3JnYW5pemF0aW9uT2JqZWN0KG5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3JnYW5pemF0aW9uT2JqZWN0cyhbbmFtZV0pLnBpcGUobWFwKHJlcyA9PiByZXNbMF0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgY29sbGVjdGlvbiBvZiBvcmdhbml6YXRpb24gb2JqZWN0c1xuICAgKlxuICAgKiBAcGFyYW0gbmFtZXMgQXJyYXkgb2YgbmFtZXMgdG8gZmV0Y2ggb2JqZWN0cyBmb3JcbiAgICogQHJldHVybnMgQSBBcnJheSBvZiBPcmdhbml6YXRpb24gT2JqZWN0c1xuICAgKi9cbiAgZ2V0T3JnYW5pemF0aW9uT2JqZWN0cyhuYW1lczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPElPcmdhbml6YXRpb25PYmplY3RzW10+IHtcbiAgICBjb25zdCB0b0ZldGNoOiBPYnNlcnZhYmxlPElPcmdhbml6YXRpb25PYmplY3RzPltdID0gbmFtZXMubWFwKG5hbWUgPT4gdGhpcy5iYWNrZW5kLmdldEpzb24oYC9vcmdhbml6YXRpb24vbmFtZS8ke25hbWV9YCkucGlwZShjYXRjaEVycm9yKGVycm9yID0+IG9mKHtpZDogbmFtZSwgYWN0aXZlOiBmYWxzZX0pKSkpO1xuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odG9GZXRjaCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhIGNvbGxlY3Rpb24gb2Ygb3JnYW5pemF0aW9uIHJvbGVzXG4gICAqXG4gICAqIEByZXR1cm4gQSBBcnJheSBvZiBPcmdhbml6YXRpb24gUm9sZXNcbiAgICovXG4gIGdldFJvbGVzKCk6IE9ic2VydmFibGU8T3JnUm9sZVtdPiB7XG4gICAgaWYgKHRoaXMuY2FjaGVkUm9sZXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5jYWNoZWRSb2xlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgICAgLmdldCgnL29yZ2FuaXphdGlvbi9yb2xlJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKG8gPT4gbyBhcyBPcmdSb2xlW10pLFxuICAgICAgICAgIHRhcChyb2xlcyA9PiAodGhpcy5jYWNoZWRSb2xlcyA9IHJvbGVzIGFzIE9yZ1JvbGVbXSkpXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtZGVmaW5pdGlvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtL3N5c3RlbWRlZmluaXRpb24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3lzdGVtRGVmaW5pdGlvbiB7XG4gIGNvZGVzeXN0ZW1zOiBhbnlbXTtcbiAgaW5mbzogSVN5c3RlbURlZmluaXRpb25JbmZvO1xuICBsb2NhbGVzOiBJU3lzdGVtRGVmaW5pdGlvbkxvY2FsZXNbXTtcbiAgdHlwZXM6IGFueVtdO1xufVxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN5c3RlbURlZmluaXRpb25JbmZvIHtcbiAgdXNlcjogc3RyaW5nO1xuICBsb2NhbGU6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xufVxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVN5c3RlbURlZmluaXRpb25Mb2NhbGVzIHtcbiAgY29kZTogc3RyaW5nO1xuICBkaXNwbGF5bmFtZTogc3RyaW5nO1xuICBkaXNwbGF5bmFtZWxvY2FsOiBzdHJpbmc7XG59XG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29kZVN5c3RlbSB7XG4gIGFsbGVsZW1lbnRzc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgZW50cmllczogSUNvZGVTeXN0ZW1zRW50cmllc1tdO1xuICBpZDogc3RyaW5nO1xuICBpbm5lcnRpdGxlcGF0dGVybjogc3RyaW5nO1xuICBsZWFmdGl0bGVwYXR0ZXJuOiBzdHJpbmc7XG4gIHVyaTogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNlcGVyYXRvcjogc3RyaW5nO1xuICBzeXN0ZW06IGJvb2xlYW47XG59XG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29kZVN5c3RlbXNFbnRyaWVzIHtcbiAgYWxsb3dlZG9ubmV3OiBib29sZWFuO1xuICBhbGxvd2Vkb251cGRhdGU6IGJvb2xlYW47XG4gIGRhdGE6IHN0cmluZztcbiAgZGVmYXVsdHJlcHJlc2VudGF0aW9uOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIHR5cGU6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { EnaioEvent } from '../events/events';
|
|
3
|
-
import { Subject, timer } from 'rxjs';
|
|
4
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { SystemStatusEnum } from './system.status.enum';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../events/event.service";
|
|
8
|
-
import * as i2 from "../backend/backend.service";
|
|
9
|
-
import * as i3 from "../cache/app-cache.service";
|
|
10
|
-
export class SystemStatusService {
|
|
11
|
-
constructor(eventService, backend, appCache, ngZone) {
|
|
12
|
-
this.eventService = eventService;
|
|
13
|
-
this.backend = backend;
|
|
14
|
-
this.appCache = appCache;
|
|
15
|
-
this.ngZone = ngZone;
|
|
16
|
-
this.statusCacheKey = 'eo.framework.cache.system.status';
|
|
17
|
-
this.pollingStopTrigger$ = new Subject();
|
|
18
|
-
this.appCache
|
|
19
|
-
.getItem(this.statusCacheKey)
|
|
20
|
-
.subscribe(status => this.currentStatus = status);
|
|
21
|
-
}
|
|
22
|
-
init(pollIntervalMilliSeconds = -1) {
|
|
23
|
-
if (pollIntervalMilliSeconds > -1) {
|
|
24
|
-
this.pollingStopTrigger$ = new Subject();
|
|
25
|
-
this.startPolling(pollIntervalMilliSeconds);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
stop() {
|
|
29
|
-
this.hasBeenStopped = true;
|
|
30
|
-
this.pollingStopTrigger$.next();
|
|
31
|
-
this.pollingStopTrigger$.complete();
|
|
32
|
-
}
|
|
33
|
-
startPolling(pollIntervalMilliSeconds) {
|
|
34
|
-
this.ngZone.runOutsideAngular(() => {
|
|
35
|
-
let requestSubscription;
|
|
36
|
-
timer(0, pollIntervalMilliSeconds)
|
|
37
|
-
.pipe(takeUntil(this.pollingStopTrigger$))
|
|
38
|
-
.subscribe(() => {
|
|
39
|
-
this.ngZone.run(() => {
|
|
40
|
-
// temporary fix while status service is disabled
|
|
41
|
-
this.eventService.trigger(EnaioEvent.SYSTEM_STATUS_INBOX_CHANGED, {});
|
|
42
|
-
});
|
|
43
|
-
// if (requestSubscription) {
|
|
44
|
-
// requestSubscription.unsubscribe();
|
|
45
|
-
// }
|
|
46
|
-
// requestSubscription = this.backend
|
|
47
|
-
// .get('/status', this.backend.getStatusBase())
|
|
48
|
-
// .subscribe((res: ISystemStatus) => {
|
|
49
|
-
// this.handleStatusResult(res);
|
|
50
|
-
// }, err => {
|
|
51
|
-
// this.handleStatusError(err);
|
|
52
|
-
// });
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
handleStatusResult(res) {
|
|
57
|
-
const eventsToBeTriggered = [];
|
|
58
|
-
Object.keys(res).forEach(val => {
|
|
59
|
-
if (this.statusCheck(res, val)) {
|
|
60
|
-
eventsToBeTriggered.push({
|
|
61
|
-
type: this.statusEvent(val),
|
|
62
|
-
data: res
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
if (eventsToBeTriggered.length || this.hasBeenStopped) {
|
|
67
|
-
// if polling has been stopped and get activated again, we need
|
|
68
|
-
// angular to detect changes immediately
|
|
69
|
-
this.ngZone.run(() => {
|
|
70
|
-
eventsToBeTriggered.forEach(e => {
|
|
71
|
-
this.eventService.trigger(e.type, e.data);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
if (eventsToBeTriggered.length || !this.currentStatus) {
|
|
76
|
-
this.currentStatus = res;
|
|
77
|
-
this.appCache.setItem(this.statusCacheKey, res);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
handleStatusError(err) {
|
|
81
|
-
// execute within zone so components are able to be checked
|
|
82
|
-
// Getting a 401 would otherwise not trigger a route change (redirect to login state)
|
|
83
|
-
this.ngZone.run(() => {
|
|
84
|
-
setTimeout(_ => {
|
|
85
|
-
this.stop();
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
statusEvent(val) {
|
|
90
|
-
return EnaioEvent[Object.keys(SystemStatusEnum).find(key => SystemStatusEnum[key] === val)];
|
|
91
|
-
}
|
|
92
|
-
statusCheck(res, statusType) {
|
|
93
|
-
return this.currentStatus && (this.currentStatus[statusType] < res[statusType]);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
SystemStatusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SystemStatusService, deps: [{ token: i1.EventService }, { token: i2.BackendService }, { token: i3.AppCacheService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
97
|
-
SystemStatusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SystemStatusService, providedIn: 'root' });
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SystemStatusService, decorators: [{
|
|
99
|
-
type: Injectable,
|
|
100
|
-
args: [{
|
|
101
|
-
providedIn: 'root'
|
|
102
|
-
}]
|
|
103
|
-
}], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.BackendService }, { type: i3.AppCacheService }, { type: i0.NgZone }]; } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLXN0YXR1cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3N5c3RlbS1zdGF0dXMvc3lzdGVtLXN0YXR1cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxPQUFPLEVBQWdCLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHekMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBS3RELE1BQU0sT0FBTyxtQkFBbUI7SUFROUIsWUFBb0IsWUFBMEIsRUFBVSxPQUF1QixFQUFVLFFBQXlCLEVBQVUsTUFBYztRQUF0SCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBTGxJLG1CQUFjLEdBQUcsa0NBQWtDLENBQUM7UUFHcEQsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUdoRCxJQUFJLENBQUMsUUFBUTthQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQzVCLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSx3QkFBd0IsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNqQyxJQUFJ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VyxDQUFDLEdBQVc7UUFDN0IsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVPLFdBQVcsQ0FBQyxHQUFrQixFQUFFLFVBQWtCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQzs7Z0hBL0ZVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FwcENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvYXBwLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHtJU3lzdGVtU3RhdHVzfSBmcm9tICcuL3N5c3RlbS5zdGF0dXMuaW50ZXJmYWNlJztcbmltcG9ydCB7U3lzdGVtU3RhdHVzRW51bX0gZnJvbSAnLi9zeXN0ZW0uc3RhdHVzLmVudW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTeXN0ZW1TdGF0dXNTZXJ2aWNlIHtcblxuICBwcml2YXRlIGN1cnJlbnRTdGF0dXM6IElTeXN0ZW1TdGF0dXM7XG4gIHByaXZhdGUgc3RhdHVzQ2FjaGVLZXkgPSAnZW8uZnJhbWV3b3JrLmNhY2hlLnN5c3RlbS5zdGF0dXMnO1xuICBwcml2YXRlIGhhc0JlZW5TdG9wcGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgcG9sbGluZ1N0b3BUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSwgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSwgcHJpdmF0ZSBhcHBDYWNoZTogQXBwQ2FjaGVTZXJ2aWNlLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgdGhpcy5hcHBDYWNoZVxuICAgICAgLmdldEl0ZW0odGhpcy5zdGF0dXNDYWNoZUtleSlcbiAgICAgIC5zdWJzY3JpYmUoc3RhdHVzID0+IHRoaXMuY3VycmVudFN0YXR1cyA9IHN0YXR1cyk7XG4gIH1cblxuICBpbml0KHBvbGxJbnRlcnZhbE1pbGxpU2Vjb25kcyA9IC0xKSB7XG4gICAgaWYgKHBvbGxJbnRlcnZhbE1pbGxpU2Vjb25kcyA+IC0xKSB7XG4gICAgICB0aGlzLnBvbGxpbmdTdG9wVHJpZ2dlciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgdGhpcy5zdGFydFBvbGxpbmcocG9sbEludGVydmFsTWlsbGlTZWNvbmRzKTtcbiAgICB9XG4gIH1cblxuICBzdG9wKCkge1xuICAgIHRoaXMuaGFzQmVlblN0b3BwZWQgPSB0cnVlO1xuICAgIHRoaXMucG9sbGluZ1N0b3BUcmlnZ2VyJC5uZXh0KCk7XG4gICAgdGhpcy5wb2xsaW5nU3RvcFRyaWdnZXIkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UG9sbGluZyhwb2xsSW50ZXJ2YWxNaWxsaVNlY29uZHMpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBsZXQgcmVxdWVzdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgICAgdGltZXIoMCwgcG9sbEludGVydmFsTWlsbGlTZWNvbmRzKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5wb2xsaW5nU3RvcFRyaWdnZXIkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIHRlbXBvcmFyeSBmaXggd2hpbGUgc3RhdHVzIHNlcnZpY2UgaXMgZGlzYWJsZWRcbiAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TWVNURU1fU1RBVFVTX0lOQk9YX0NIQU5HRUQsIHt9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIGlmIChyZXF1ZXN0U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgLy8gICByZXF1ZXN0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIC8vIHJlcXVlc3RTdWJzY3JpcHRpb24gPSB0aGlzLmJhY2tlbmRcbiAgICAgICAgICAvLyAgIC5nZXQoJy9zdGF0dXMnLCB0aGlzLmJhY2tlbmQuZ2V0U3RhdHVzQmFzZSgpKVxuICAgICAgICAgIC8vICAgLnN1YnNjcmliZSgocmVzOiBJU3lzdGVtU3RhdHVzKSA9PiB7XG4gICAgICAgICAgLy8gICAgIHRoaXMuaGFuZGxlU3RhdHVzUmVzdWx0KHJlcyk7XG4gICAgICAgICAgLy8gICB9LCBlcnIgPT4ge1xuICAgICAgICAgIC8vICAgICB0aGlzLmhhbmRsZVN0YXR1c0Vycm9yKGVycik7XG4gICAgICAgICAgLy8gICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0YXR1c1Jlc3VsdChyZXM6IElTeXN0ZW1TdGF0dXMpIHtcbiAgICBjb25zdCBldmVudHNUb0JlVHJpZ2dlcmVkOiB7IHR5cGU6IHN0cmluZywgZGF0YTogYW55IH1bXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKHJlcykuZm9yRWFjaCh2YWwgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RhdHVzQ2hlY2socmVzLCB2YWwpKSB7XG4gICAgICAgIGV2ZW50c1RvQmVUcmlnZ2VyZWQucHVzaCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5zdGF0dXNFdmVudCh2YWwpLFxuICAgICAgICAgIGRhdGE6IHJlc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChldmVudHNUb0JlVHJpZ2dlcmVkLmxlbmd0aCB8fCB0aGlzLmhhc0JlZW5TdG9wcGVkKSB7XG4gICAgICAvLyBpZiBwb2xsaW5nIGhhcyBiZWVuIHN0b3BwZWQgYW5kIGdldCBhY3RpdmF0ZWQgYWdhaW4sIHdlIG5lZWRcbiAgICAgIC8vIGFuZ3VsYXIgdG8gZGV0ZWN0IGNoYW5nZXMgaW1tZWRpYXRlbHlcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIGV2ZW50c1RvQmVUcmlnZ2VyZWQuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKGUudHlwZSwgZS5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnRzVG9CZVRyaWdnZXJlZC5sZW5ndGggfHwgIXRoaXMuY3VycmVudFN0YXR1cykge1xuICAgICAgdGhpcy5jdXJyZW50U3RhdHVzID0gcmVzO1xuICAgICAgdGhpcy5hcHBDYWNoZS5zZXRJdGVtKHRoaXMuc3RhdHVzQ2FjaGVLZXksIHJlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0dXNFcnJvcihlcnIpIHtcbiAgICAvLyBleGVjdXRlIHdpdGhpbiB6b25lIHNvIGNvbXBvbmVudHMgYXJlIGFibGUgdG8gYmUgY2hlY2tlZFxuICAgIC8vIEdldHRpbmcgYSA0MDEgd291bGQgb3RoZXJ3aXNlIG5vdCB0cmlnZ2VyIGEgcm91dGUgY2hhbmdlIChyZWRpcmVjdCB0byBsb2dpbiBzdGF0ZSlcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgc2V0VGltZW91dChfID0+IHtcbiAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdHVzRXZlbnQodmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBFbmFpb0V2ZW50W09iamVjdC5rZXlzKFN5c3RlbVN0YXR1c0VudW0pLmZpbmQoa2V5ID0+IFN5c3RlbVN0YXR1c0VudW1ba2V5XSA9PT0gdmFsKV07XG4gIH1cblxuICBwcml2YXRlIHN0YXR1c0NoZWNrKHJlczogSVN5c3RlbVN0YXR1cywgc3RhdHVzVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFN0YXR1cyAmJiAodGhpcy5jdXJyZW50U3RhdHVzW3N0YXR1c1R5cGVdIDwgcmVzW3N0YXR1c1R5cGVdKTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export var SystemStatusEnum;
|
|
2
|
-
(function (SystemStatusEnum) {
|
|
3
|
-
SystemStatusEnum["SYSTEM_STATUS_SCHEMA_CHANGED"] = "schemaChangedOn";
|
|
4
|
-
SystemStatusEnum["SYSTEM_STATUS_ORG_CHANGED"] = "orgChangedOn";
|
|
5
|
-
SystemStatusEnum["SYSTEM_STATUS_SEC_CHANGED"] = "securityChangedOn";
|
|
6
|
-
SystemStatusEnum["SYSTEM_STATUS_ACL_CHANGED"] = "aclChangedOn";
|
|
7
|
-
SystemStatusEnum["SYSTEM_STATUS_INBOX_CHANGED"] = "inboxChangedOn";
|
|
8
|
-
})(SystemStatusEnum || (SystemStatusEnum = {}));
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnN0YXR1cy5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3N5c3RlbS1zdGF0dXMvc3lzdGVtLnN0YXR1cy5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGdCQU1YO0FBTkQsV0FBWSxnQkFBZ0I7SUFDMUIsb0VBQWdELENBQUE7SUFDaEQsOERBQTBDLENBQUE7SUFDMUMsbUVBQStDLENBQUE7SUFDL0MsOERBQTBDLENBQUE7SUFDMUMsa0VBQThDLENBQUE7QUFDaEQsQ0FBQyxFQU5XLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFNM0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTeXN0ZW1TdGF0dXNFbnVtIHtcbiAgU1lTVEVNX1NUQVRVU19TQ0hFTUFfQ0hBTkdFRCA9ICdzY2hlbWFDaGFuZ2VkT24nLFxuICBTWVNURU1fU1RBVFVTX09SR19DSEFOR0VEID0gJ29yZ0NoYW5nZWRPbicsXG4gIFNZU1RFTV9TVEFUVVNfU0VDX0NIQU5HRUQgPSAnc2VjdXJpdHlDaGFuZ2VkT24nLFxuICBTWVNURU1fU1RBVFVTX0FDTF9DSEFOR0VEID0gJ2FjbENoYW5nZWRPbicsXG4gIFNZU1RFTV9TVEFUVVNfSU5CT1hfQ0hBTkdFRCA9ICdpbmJveENoYW5nZWRPbidcbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLnN0YXR1cy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2Uvc3lzdGVtLXN0YXR1cy9zeXN0ZW0uc3RhdHVzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJU3lzdGVtU3RhdHVzIHtcbiAgYWNsQ2hhbmdlZE9uOiBzdHJpbmc7XG4gIGluYm94Q2hhbmdlZE9uOiBzdHJpbmc7XG4gIG9yZ0NoYW5nZWRPbjogc3RyaW5nO1xuICBzY2hlbWFDaGFuZ2VkT246IHN0cmluZztcbiAgc2VjdXJpdHlDaGFuZ2VkT246IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
-
import { Utils } from '../../util/utils';
|
|
4
|
-
import { CORE_CONFIG } from '../../config/core-init.tokens';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common/http";
|
|
7
|
-
import * as i2 from "../user/user.service";
|
|
8
|
-
import * as i3 from "../../config/core-config";
|
|
9
|
-
/**
|
|
10
|
-
* The Upload Service is provides access to Upload data (files)
|
|
11
|
-
*/
|
|
12
|
-
export class UploadService {
|
|
13
|
-
/**
|
|
14
|
-
* @ignore
|
|
15
|
-
*/
|
|
16
|
-
constructor(coreConfig, http, userService) {
|
|
17
|
-
this.coreConfig = coreConfig;
|
|
18
|
-
this.http = http;
|
|
19
|
-
this.userService = userService;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Uploads files.
|
|
23
|
-
*
|
|
24
|
-
* @param uri Upload destination uri
|
|
25
|
-
* @param files Files to be uploaded
|
|
26
|
-
* @returns resolved by the response of the upload destination
|
|
27
|
-
*/
|
|
28
|
-
upload(uri, files) {
|
|
29
|
-
const formData = new FormData();
|
|
30
|
-
const headers = new HttpHeaders({ 'Accept-Language': this.userService.getCurrentUser().getClientLocale() });
|
|
31
|
-
files.forEach(file => formData.append('files[]', file, Utils.encodeFileName(file.name)));
|
|
32
|
-
return this.http.post(uri, formData, { headers, withCredentials: this.coreConfig.withCredentials });
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
UploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: UploadService, deps: [{ token: CORE_CONFIG }, { token: i1.HttpClient }, { token: i2.UserService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
|
-
UploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: UploadService, providedIn: 'root' });
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: UploadService, decorators: [{
|
|
38
|
-
type: Injectable,
|
|
39
|
-
args: [{
|
|
40
|
-
providedIn: 'root'
|
|
41
|
-
}]
|
|
42
|
-
}], ctorParameters: function () { return [{ type: i3.CoreConfig, decorators: [{
|
|
43
|
-
type: Inject,
|
|
44
|
-
args: [CORE_CONFIG]
|
|
45
|
-
}] }, { type: i1.HttpClient }, { type: i2.UserService }]; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvdXBsb2FkL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBYSxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFdkMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7OztBQUcxRDs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBQ3hCOztPQUVHO0lBQ0gsWUFDOEIsVUFBc0IsRUFDMUMsSUFBZ0IsRUFBVSxXQUF3QjtRQUQ5QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQzFDLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUM1RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQWdCLElBQUksV0FBVyxDQUFDLEVBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxlQUFlLEVBQUUsRUFBQyxDQUFDLENBQUM7UUFDdkgsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBQyxDQUFDLENBQUM7SUFDcEcsQ0FBQzs7MEdBckJVLGFBQWEsa0JBS2QsV0FBVzs4R0FMVixhQUFhLGNBRlosTUFBTTsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIvdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xuaW1wb3J0IHtDb3JlQ29uZmlnfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1jb25maWcnO1xuaW1wb3J0IHtDT1JFX0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtaW5pdC50b2tlbnMnO1xuXG5cbi8qKlxuICogVGhlIFVwbG9hZCBTZXJ2aWNlIGlzIHByb3ZpZGVzIGFjY2VzcyB0byBVcGxvYWQgZGF0YSAoZmlsZXMpXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZFNlcnZpY2Uge1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSkge1xuICB9XG5cbiAgLyoqXG4gICAqIFVwbG9hZHMgZmlsZXMuXG4gICAqXG4gICAqIEBwYXJhbSB1cmkgVXBsb2FkIGRlc3RpbmF0aW9uIHVyaVxuICAgKiBAcGFyYW0gZmlsZXMgRmlsZXMgdG8gYmUgdXBsb2FkZWRcbiAgICogQHJldHVybnMgcmVzb2x2ZWQgYnkgdGhlIHJlc3BvbnNlIG9mIHRoZSB1cGxvYWQgZGVzdGluYXRpb25cbiAgICovXG4gIHVwbG9hZCh1cmk6IHN0cmluZywgZmlsZXM6IEZpbGVbXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBjb25zdCBoZWFkZXJzOiBIdHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7J0FjY2VwdC1MYW5ndWFnZSc6IHRoaXMudXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKS5nZXRDbGllbnRMb2NhbGUoKX0pO1xuICAgIGZpbGVzLmZvckVhY2goZmlsZSA9PiBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzW10nLCBmaWxlLCBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlLm5hbWUpKSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVyaSwgZm9ybURhdGEsIHtoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHN9KTtcbiAgfVxufVxuIl19
|