@openziti/ziti-console-lib 1.0.2 → 1.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/assets/styles/global.scss +70 -0
- package/fesm2022/openziti-ziti-console-lib.mjs +2136 -1327
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/index.d.ts +5689 -6
- package/index.d.ts.map +1 -0
- package/package.json +10 -12
- package/esm2022/lib/ZAC_VERSION.mjs +0 -4
- package/esm2022/lib/app.initializer.mjs +0 -24
- package/esm2022/lib/default-app-config.mjs +0 -5
- package/esm2022/lib/features/card/card.component.mjs +0 -34
- package/esm2022/lib/features/card-list/card-list.component.mjs +0 -55
- package/esm2022/lib/features/config-editor/config-editor.component.mjs +0 -337
- package/esm2022/lib/features/confirm/confirm.component.mjs +0 -77
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +0 -93
- package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +0 -111
- package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +0 -46
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +0 -49
- package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +0 -58
- package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +0 -123
- package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +0 -268
- package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +0 -93
- package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +0 -37
- package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +0 -33
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +0 -138
- package/esm2022/lib/features/data-table/data-table.component.mjs +0 -918
- package/esm2022/lib/features/data-table/data-table.service.mjs +0 -98
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +0 -108
- package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +0 -26
- package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +0 -29
- package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +0 -34
- package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +0 -72
- package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +0 -134
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +0 -189
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +0 -50
- package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +0 -95
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +0 -121
- package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +0 -83
- package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +0 -100
- package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +0 -201
- package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +0 -166
- package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +0 -108
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +0 -126
- package/esm2022/lib/features/extendable/extendable.component.mjs +0 -55
- package/esm2022/lib/features/extendable/extensions-noop.service.mjs +0 -52
- package/esm2022/lib/features/header-bar/header-bar.component.mjs +0 -105
- package/esm2022/lib/features/json-view/json-view.component.mjs +0 -212
- package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +0 -138
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +0 -66
- package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +0 -29
- package/esm2022/lib/features/login/login-dialog.component.mjs +0 -121
- package/esm2022/lib/features/messaging/growler.component.mjs +0 -62
- package/esm2022/lib/features/messaging/growler.model.mjs +0 -24
- package/esm2022/lib/features/messaging/growler.module.mjs +0 -34
- package/esm2022/lib/features/messaging/growler.service.mjs +0 -71
- package/esm2022/lib/features/messaging/logger.service.mjs +0 -174
- package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +0 -30
- package/esm2022/lib/features/no-items/no-items.component.mjs +0 -46
- package/esm2022/lib/features/overrides/overrides.component.mjs +0 -118
- package/esm2022/lib/features/overrides/overrides.service.mjs +0 -114
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +0 -151
- package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +0 -114
- package/esm2022/lib/features/progress-meter/progress-meter.component.mjs +0 -43
- package/esm2022/lib/features/progress-wizard/progress-wizard.component.mjs +0 -90
- package/esm2022/lib/features/projectable-forms/api-session/api-session-form.component.mjs +0 -143
- package/esm2022/lib/features/projectable-forms/api-session/api-session-form.service.mjs +0 -118
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +0 -337
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +0 -114
- package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +0 -399
- package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +0 -95
- package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +0 -217
- package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.mjs +0 -54
- package/esm2022/lib/features/projectable-forms/config-type/config-type-form.component.mjs +0 -244
- package/esm2022/lib/features/projectable-forms/config-type/config-type-form.service.mjs +0 -92
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +0 -275
- package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +0 -137
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +0 -231
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +0 -118
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +0 -277
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +0 -188
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +0 -101
- package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +0 -54
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +0 -135
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +0 -471
- package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +0 -131
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +0 -533
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +0 -79
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.component.mjs +0 -437
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.service.mjs +0 -81
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +0 -315
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +0 -330
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +0 -591
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +0 -1036
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +0 -275
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +0 -172
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +0 -279
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +0 -230
- package/esm2022/lib/features/projectable-forms/session/session-form.component.mjs +0 -213
- package/esm2022/lib/features/projectable-forms/session/session-form.service.mjs +0 -84
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +0 -244
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.service.mjs +0 -130
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.component.mjs +0 -224
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.service.mjs +0 -118
- package/esm2022/lib/features/qr-code/qr-code.component.mjs +0 -166
- package/esm2022/lib/features/quick-add/quick-add.component.mjs +0 -50
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +0 -86
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +0 -61
- package/esm2022/lib/features/side-modal/side-modal.component.mjs +0 -45
- package/esm2022/lib/features/side-navigator/side-navigator.component.mjs +0 -127
- package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +0 -54
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +0 -291
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +0 -586
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +0 -373
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +0 -1706
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +0 -591
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.mjs +0 -883
- package/esm2022/lib/features/visualizer/visualizer-service.class.mjs +0 -32
- package/esm2022/lib/models/api-session.mjs +0 -7
- package/esm2022/lib/models/auth-policy.mjs +0 -31
- package/esm2022/lib/models/certificate-authority.mjs +0 -16
- package/esm2022/lib/models/config-type.mjs +0 -10
- package/esm2022/lib/models/config.mjs +0 -10
- package/esm2022/lib/models/edge-router-policy.mjs +0 -11
- package/esm2022/lib/models/edge-router.mjs +0 -13
- package/esm2022/lib/models/identity.mjs +0 -34
- package/esm2022/lib/models/jwt-signer.mjs +0 -20
- package/esm2022/lib/models/posture-check.mjs +0 -29
- package/esm2022/lib/models/service-edge-router-policy.mjs +0 -11
- package/esm2022/lib/models/service-policy.mjs +0 -13
- package/esm2022/lib/models/service.mjs +0 -12
- package/esm2022/lib/models/session.mjs +0 -7
- package/esm2022/lib/models/terminator.mjs +0 -14
- package/esm2022/lib/pages/api-sessions/api-sessions-page.component.mjs +0 -112
- package/esm2022/lib/pages/api-sessions/api-sessions-page.service.mjs +0 -235
- package/esm2022/lib/pages/attributes/attributes.component.mjs +0 -104
- package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +0 -120
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +0 -215
- package/esm2022/lib/pages/callback/callback.component.mjs +0 -155
- package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.component.mjs +0 -119
- package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +0 -240
- package/esm2022/lib/pages/config-types/config-types-page.component.mjs +0 -130
- package/esm2022/lib/pages/config-types/config-types-page.service.mjs +0 -134
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +0 -134
- package/esm2022/lib/pages/configurations/configurations-page.service.mjs +0 -251
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +0 -128
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +0 -407
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +0 -136
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +0 -354
- package/esm2022/lib/pages/geolocate/geolocate.component.mjs +0 -130
- package/esm2022/lib/pages/identities/identities-page.component.mjs +0 -221
- package/esm2022/lib/pages/identities/identities-page.service.mjs +0 -591
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +0 -160
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.service.mjs +0 -177
- package/esm2022/lib/pages/posture-checks/posture-checks-page.component.mjs +0 -103
- package/esm2022/lib/pages/posture-checks/posture-checks-page.service.mjs +0 -200
- package/esm2022/lib/pages/profile/profile.component.mjs +0 -58
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +0 -122
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +0 -367
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +0 -124
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +0 -446
- package/esm2022/lib/pages/services/services-page.component.mjs +0 -218
- package/esm2022/lib/pages/services/services-page.service.mjs +0 -378
- package/esm2022/lib/pages/sessions/sessions-page.component.mjs +0 -112
- package/esm2022/lib/pages/sessions/sessions-page.service.mjs +0 -228
- package/esm2022/lib/pages/settings/settings.component.mjs +0 -61
- package/esm2022/lib/pages/terminators/terminators-page.component.mjs +0 -97
- package/esm2022/lib/pages/terminators/terminators-page.service.mjs +0 -235
- package/esm2022/lib/pages/transit-routers/transit-routers-page.component.mjs +0 -129
- package/esm2022/lib/pages/transit-routers/transit-routers-page.service.mjs +0 -248
- package/esm2022/lib/safe.pipe.mjs +0 -18
- package/esm2022/lib/services/auth.service.mjs +0 -94
- package/esm2022/lib/services/console-events.service.mjs +0 -20
- package/esm2022/lib/services/csv-download.service.mjs +0 -91
- package/esm2022/lib/services/deactivate-guard.service.mjs +0 -17
- package/esm2022/lib/services/login-service.class.mjs +0 -47
- package/esm2022/lib/services/node-data.service.mjs +0 -397
- package/esm2022/lib/services/noop-login.service.mjs +0 -41
- package/esm2022/lib/services/schema.service.mjs +0 -807
- package/esm2022/lib/services/settings-service.class.mjs +0 -120
- package/esm2022/lib/services/settings.service.mjs +0 -203
- package/esm2022/lib/services/tab-name.service.mjs +0 -76
- package/esm2022/lib/services/validation.service.mjs +0 -156
- package/esm2022/lib/services/ziti-controller-data.service.mjs +0 -340
- package/esm2022/lib/services/ziti-data.service.mjs +0 -100
- package/esm2022/lib/services/ziti-domain-controller.service.mjs +0 -3
- package/esm2022/lib/shared/list-page-component.class.mjs +0 -186
- package/esm2022/lib/shared/list-page-service.class.mjs +0 -244
- package/esm2022/lib/urls.mjs +0 -34
- package/esm2022/lib/zac-routing.module.mjs +0 -34
- package/esm2022/lib/ziti-console-lib.module.mjs +0 -538
- package/esm2022/lib/ziti-console.constants.mjs +0 -20
- package/esm2022/openziti-ziti-console-lib.mjs +0 -5
- package/esm2022/public-api.mjs +0 -130
- package/lib/ZAC_VERSION.d.ts +0 -4
- package/lib/ZAC_VERSION.d.ts.map +0 -1
- package/lib/app.initializer.d.ts +0 -3
- package/lib/app.initializer.d.ts.map +0 -1
- package/lib/default-app-config.d.ts +0 -9
- package/lib/default-app-config.d.ts.map +0 -1
- package/lib/features/card/card.component.d.ts +0 -13
- package/lib/features/card/card.component.d.ts.map +0 -1
- package/lib/features/card-list/card-list.component.d.ts +0 -27
- package/lib/features/card-list/card-list.component.d.ts.map +0 -1
- package/lib/features/config-editor/config-editor.component.d.ts +0 -50
- package/lib/features/config-editor/config-editor.component.d.ts.map +0 -1
- package/lib/features/confirm/confirm.component.d.ts +0 -34
- package/lib/features/confirm/confirm.component.d.ts.map +0 -1
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts +0 -32
- package/lib/features/creation-summary-dialog/creation-summary-dialog.component.d.ts.map +0 -1
- package/lib/features/custom-tags/custom-tags.component.d.ts +0 -37
- package/lib/features/custom-tags/custom-tags.component.d.ts.map +0 -1
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts +0 -16
- package/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.d.ts.map +0 -1
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts +0 -20
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +0 -1
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts +0 -15
- package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts.map +0 -1
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts +0 -22
- package/lib/features/data-table/cells/table-cell-token/table-cell-token.component.d.ts.map +0 -1
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts +0 -52
- package/lib/features/data-table/column-headers/table-column-default/table-column-default.component.d.ts.map +0 -1
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts +0 -27
- package/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.d.ts.map +0 -1
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts +0 -19
- package/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.d.ts.map +0 -1
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts +0 -15
- package/lib/features/data-table/column-headers/table-column-select/table-column-select.component.d.ts.map +0 -1
- package/lib/features/data-table/data-table-filter.service.d.ts +0 -37
- package/lib/features/data-table/data-table-filter.service.d.ts.map +0 -1
- package/lib/features/data-table/data-table.component.d.ts +0 -164
- package/lib/features/data-table/data-table.component.d.ts.map +0 -1
- package/lib/features/data-table/data-table.service.d.ts +0 -20
- package/lib/features/data-table/data-table.service.d.ts.map +0 -1
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts +0 -25
- package/lib/features/data-table/table-filter-bar/filter-bar.component.d.ts.map +0 -1
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts +0 -10
- package/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.d.ts.map +0 -1
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts +0 -15
- package/lib/features/data-table/tooltips/os-tooltip.component.d.ts.map +0 -1
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts +0 -15
- package/lib/features/data-table/tooltips/sdk-tooltip.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts +0 -19
- package/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts +0 -28
- package/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts +0 -50
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts +0 -14
- package/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts +0 -23
- package/lib/features/dynamic-widgets/number/number-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/object/object.component.d.ts +0 -26
- package/lib/features/dynamic-widgets/object/object.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts +0 -24
- package/lib/features/dynamic-widgets/password/password-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts +0 -22
- package/lib/features/dynamic-widgets/port-ranges/port-ranges.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts +0 -60
- package/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts +0 -30
- package/lib/features/dynamic-widgets/selector/selector-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts +0 -27
- package/lib/features/dynamic-widgets/string/string-input.component.d.ts.map +0 -1
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +0 -26
- package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +0 -1
- package/lib/features/extendable/extendable.component.d.ts +0 -15
- package/lib/features/extendable/extendable.component.d.ts.map +0 -1
- package/lib/features/extendable/extensions-noop.service.d.ts +0 -35
- package/lib/features/extendable/extensions-noop.service.d.ts.map +0 -1
- package/lib/features/header-bar/header-bar.component.d.ts +0 -29
- package/lib/features/header-bar/header-bar.component.d.ts.map +0 -1
- package/lib/features/json-view/json-view.component.d.ts +0 -40
- package/lib/features/json-view/json-view.component.d.ts.map +0 -1
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts +0 -35
- package/lib/features/list-page-features/list-page-form/list-page-form.component.d.ts.map +0 -1
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +0 -14
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +0 -1
- package/lib/features/loading-indicator/loading-indicator.component.d.ts +0 -11
- package/lib/features/loading-indicator/loading-indicator.component.d.ts.map +0 -1
- package/lib/features/login/login-dialog.component.d.ts +0 -30
- package/lib/features/login/login-dialog.component.d.ts.map +0 -1
- package/lib/features/messaging/growler.component.d.ts +0 -19
- package/lib/features/messaging/growler.component.d.ts.map +0 -1
- package/lib/features/messaging/growler.model.d.ts +0 -8
- package/lib/features/messaging/growler.model.d.ts.map +0 -1
- package/lib/features/messaging/growler.module.d.ts +0 -10
- package/lib/features/messaging/growler.module.d.ts.map +0 -1
- package/lib/features/messaging/growler.service.d.ts +0 -18
- package/lib/features/messaging/growler.service.d.ts.map +0 -1
- package/lib/features/messaging/logger.service.d.ts +0 -27
- package/lib/features/messaging/logger.service.d.ts.map +0 -1
- package/lib/features/multi-action-button/multi-action-button.component.d.ts +0 -13
- package/lib/features/multi-action-button/multi-action-button.component.d.ts.map +0 -1
- package/lib/features/no-items/no-items.component.d.ts +0 -19
- package/lib/features/no-items/no-items.component.d.ts.map +0 -1
- package/lib/features/overrides/overrides.component.d.ts +0 -33
- package/lib/features/overrides/overrides.component.d.ts.map +0 -1
- package/lib/features/overrides/overrides.service.d.ts +0 -18
- package/lib/features/overrides/overrides.service.d.ts.map +0 -1
- package/lib/features/preview-list/preview-list.component.d.ts +0 -34
- package/lib/features/preview-list/preview-list.component.d.ts.map +0 -1
- package/lib/features/preview-selections/preview-selections.component.d.ts +0 -39
- package/lib/features/preview-selections/preview-selections.component.d.ts.map +0 -1
- package/lib/features/progress-meter/progress-meter.component.d.ts +0 -19
- package/lib/features/progress-meter/progress-meter.component.d.ts.map +0 -1
- package/lib/features/progress-wizard/progress-wizard.component.d.ts +0 -31
- package/lib/features/progress-wizard/progress-wizard.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts +0 -50
- package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/api-session/api-session-form.service.d.ts +0 -27
- package/lib/features/projectable-forms/api-session/api-session-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +0 -74
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts +0 -38
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +0 -80
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts +0 -37
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +0 -62
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.d.ts +0 -28
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts +0 -63
- package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/config-type/config-type-form.service.d.ts +0 -27
- package/lib/features/projectable-forms/config-type/config-type-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +0 -62
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts +0 -33
- package/lib/features/projectable-forms/configuration/configuration.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +0 -53
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts +0 -29
- package/lib/features/projectable-forms/edge-router/edge-router-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +0 -54
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts +0 -40
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts +0 -29
- package/lib/features/projectable-forms/form-field-container/form-field-container.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts +0 -15
- package/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts +0 -38
- package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts +0 -93
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts +0 -20
- package/lib/features/projectable-forms/identity/identity-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +0 -97
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts +0 -21
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts +0 -134
- package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/posture-check/posture-check-form.service.d.ts +0 -23
- package/lib/features/projectable-forms/posture-check/posture-check-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/projectable-form.class.d.ts +0 -92
- package/lib/features/projectable-forms/projectable-form.class.d.ts.map +0 -1
- package/lib/features/projectable-forms/service/service-form.component.d.ts +0 -70
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/service/service-form.service.d.ts +0 -123
- package/lib/features/projectable-forms/service/service-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +0 -173
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +0 -53
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts +0 -38
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +0 -55
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts +0 -48
- package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/session/session-form.component.d.ts +0 -63
- package/lib/features/projectable-forms/session/session-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/session/session-form.service.d.ts +0 -23
- package/lib/features/projectable-forms/session/session-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +0 -58
- package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts +0 -33
- package/lib/features/projectable-forms/terminator/terminator-form.service.d.ts.map +0 -1
- package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts +0 -50
- package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts.map +0 -1
- package/lib/features/projectable-forms/transit-router/transit-router-form.service.d.ts +0 -27
- package/lib/features/projectable-forms/transit-router/transit-router-form.service.d.ts.map +0 -1
- package/lib/features/qr-code/qr-code.component.d.ts +0 -45
- package/lib/features/qr-code/qr-code.component.d.ts.map +0 -1
- package/lib/features/quick-add/quick-add.component.d.ts +0 -15
- package/lib/features/quick-add/quick-add.component.d.ts.map +0 -1
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts +0 -27
- package/lib/features/reset-enrollment/reset-enrollment.component.d.ts.map +0 -1
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts +0 -13
- package/lib/features/reset-enrollment/reset-enrollment.service.d.ts.map +0 -1
- package/lib/features/side-modal/side-modal.component.d.ts +0 -15
- package/lib/features/side-modal/side-modal.component.d.ts.map +0 -1
- package/lib/features/side-navigator/side-navigator.component.d.ts +0 -33
- package/lib/features/side-navigator/side-navigator.component.d.ts.map +0 -1
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts +0 -16
- package/lib/features/sidebars/side-navbar/side-navbar.component.d.ts.map +0 -1
- package/lib/features/tag-selector/tag-selector.component.d.ts +0 -59
- package/lib/features/tag-selector/tag-selector.component.d.ts.map +0 -1
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts +0 -54
- package/lib/features/visualizer/identity-service-path/identity-service-path.component.d.ts.map +0 -1
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts +0 -21
- package/lib/features/visualizer/identity-service-path/identity-service-path.helper.d.ts.map +0 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts +0 -146
- package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts.map +0 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts +0 -172
- package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts.map +0 -1
- package/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.d.ts +0 -35
- package/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.d.ts.map +0 -1
- package/lib/features/visualizer/visualizer-service.class.d.ts +0 -10
- package/lib/features/visualizer/visualizer-service.class.d.ts.map +0 -1
- package/lib/models/api-session.d.ts +0 -18
- package/lib/models/api-session.d.ts.map +0 -1
- package/lib/models/auth-policy.d.ts +0 -8
- package/lib/models/auth-policy.d.ts.map +0 -1
- package/lib/models/certificate-authority.d.ts +0 -14
- package/lib/models/certificate-authority.d.ts.map +0 -1
- package/lib/models/config-type.d.ts +0 -7
- package/lib/models/config-type.d.ts.map +0 -1
- package/lib/models/config.d.ts +0 -7
- package/lib/models/config.d.ts.map +0 -1
- package/lib/models/edge-router-policy.d.ts +0 -8
- package/lib/models/edge-router-policy.d.ts.map +0 -1
- package/lib/models/edge-router.d.ts +0 -10
- package/lib/models/edge-router.d.ts.map +0 -1
- package/lib/models/identity.d.ts +0 -16
- package/lib/models/identity.d.ts.map +0 -1
- package/lib/models/jwt-signer.d.ts +0 -17
- package/lib/models/jwt-signer.d.ts.map +0 -1
- package/lib/models/posture-check.d.ts +0 -17
- package/lib/models/posture-check.d.ts.map +0 -1
- package/lib/models/service-edge-router-policy.d.ts +0 -8
- package/lib/models/service-edge-router-policy.d.ts.map +0 -1
- package/lib/models/service-policy.d.ts +0 -10
- package/lib/models/service-policy.d.ts.map +0 -1
- package/lib/models/service.d.ts +0 -9
- package/lib/models/service.d.ts.map +0 -1
- package/lib/models/session.d.ts +0 -17
- package/lib/models/session.d.ts.map +0 -1
- package/lib/models/terminator.d.ts +0 -11
- package/lib/models/terminator.d.ts.map +0 -1
- package/lib/pages/api-sessions/api-sessions-page.component.d.ts +0 -30
- package/lib/pages/api-sessions/api-sessions-page.component.d.ts.map +0 -1
- package/lib/pages/api-sessions/api-sessions-page.service.d.ts +0 -31
- package/lib/pages/api-sessions/api-sessions-page.service.d.ts.map +0 -1
- package/lib/pages/attributes/attributes.component.d.ts +0 -31
- package/lib/pages/attributes/attributes.component.d.ts.map +0 -1
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts +0 -29
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +0 -1
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts +0 -34
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +0 -1
- package/lib/pages/callback/callback.component.d.ts +0 -22
- package/lib/pages/callback/callback.component.d.ts.map +0 -1
- package/lib/pages/certificate-authorities/certificate-authorities-page.component.d.ts +0 -30
- package/lib/pages/certificate-authorities/certificate-authorities-page.component.d.ts.map +0 -1
- package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts +0 -35
- package/lib/pages/certificate-authorities/certificate-authorities-page.service.d.ts.map +0 -1
- package/lib/pages/config-types/config-types-page.component.d.ts +0 -31
- package/lib/pages/config-types/config-types-page.component.d.ts.map +0 -1
- package/lib/pages/config-types/config-types-page.service.d.ts +0 -29
- package/lib/pages/config-types/config-types-page.service.d.ts.map +0 -1
- package/lib/pages/configurations/configurations-page.component.d.ts +0 -30
- package/lib/pages/configurations/configurations-page.component.d.ts.map +0 -1
- package/lib/pages/configurations/configurations-page.service.d.ts +0 -80
- package/lib/pages/configurations/configurations-page.service.d.ts.map +0 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts +0 -33
- package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +0 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts +0 -63
- package/lib/pages/edge-router-policies/edge-router-policies-page.service.d.ts.map +0 -1
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts +0 -36
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +0 -1
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts +0 -51
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +0 -1
- package/lib/pages/geolocate/geolocate.component.d.ts +0 -32
- package/lib/pages/geolocate/geolocate.component.d.ts.map +0 -1
- package/lib/pages/identities/identities-page.component.d.ts +0 -40
- package/lib/pages/identities/identities-page.component.d.ts.map +0 -1
- package/lib/pages/identities/identities-page.service.d.ts +0 -64
- package/lib/pages/identities/identities-page.service.d.ts.map +0 -1
- package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts +0 -34
- package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts.map +0 -1
- package/lib/pages/jwt-signers/jwt-signers-page.service.d.ts +0 -31
- package/lib/pages/jwt-signers/jwt-signers-page.service.d.ts.map +0 -1
- package/lib/pages/posture-checks/posture-checks-page.component.d.ts +0 -29
- package/lib/pages/posture-checks/posture-checks-page.component.d.ts.map +0 -1
- package/lib/pages/posture-checks/posture-checks-page.service.d.ts +0 -28
- package/lib/pages/posture-checks/posture-checks-page.service.d.ts.map +0 -1
- package/lib/pages/profile/profile.component.d.ts +0 -17
- package/lib/pages/profile/profile.component.d.ts.map +0 -1
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts +0 -33
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +0 -1
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts +0 -57
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.d.ts.map +0 -1
- package/lib/pages/service-policies/service-policies-page.component.d.ts +0 -34
- package/lib/pages/service-policies/service-policies-page.component.d.ts.map +0 -1
- package/lib/pages/service-policies/service-policies-page.service.d.ts +0 -63
- package/lib/pages/service-policies/service-policies-page.service.d.ts.map +0 -1
- package/lib/pages/services/services-page.component.d.ts +0 -42
- package/lib/pages/services/services-page.component.d.ts.map +0 -1
- package/lib/pages/services/services-page.service.d.ts +0 -69
- package/lib/pages/services/services-page.service.d.ts.map +0 -1
- package/lib/pages/sessions/sessions-page.component.d.ts +0 -30
- package/lib/pages/sessions/sessions-page.component.d.ts.map +0 -1
- package/lib/pages/sessions/sessions-page.service.d.ts +0 -30
- package/lib/pages/sessions/sessions-page.service.d.ts.map +0 -1
- package/lib/pages/settings/settings.component.d.ts +0 -23
- package/lib/pages/settings/settings.component.d.ts.map +0 -1
- package/lib/pages/terminators/terminators-page.component.d.ts +0 -29
- package/lib/pages/terminators/terminators-page.component.d.ts.map +0 -1
- package/lib/pages/terminators/terminators-page.service.d.ts +0 -32
- package/lib/pages/terminators/terminators-page.service.d.ts.map +0 -1
- package/lib/pages/transit-routers/transit-routers-page.component.d.ts +0 -35
- package/lib/pages/transit-routers/transit-routers-page.component.d.ts.map +0 -1
- package/lib/pages/transit-routers/transit-routers-page.service.d.ts +0 -50
- package/lib/pages/transit-routers/transit-routers-page.service.d.ts.map +0 -1
- package/lib/safe.pipe.d.ts +0 -11
- package/lib/safe.pipe.d.ts.map +0 -1
- package/lib/services/auth.service.d.ts +0 -21
- package/lib/services/auth.service.d.ts.map +0 -1
- package/lib/services/console-events.service.d.ts +0 -12
- package/lib/services/console-events.service.d.ts.map +0 -1
- package/lib/services/csv-download.service.d.ts +0 -11
- package/lib/services/csv-download.service.d.ts.map +0 -1
- package/lib/services/deactivate-guard.service.d.ts +0 -14
- package/lib/services/deactivate-guard.service.d.ts.map +0 -1
- package/lib/services/login-service.class.d.ts +0 -30
- package/lib/services/login-service.class.d.ts.map +0 -1
- package/lib/services/node-data.service.d.ts +0 -38
- package/lib/services/node-data.service.d.ts.map +0 -1
- package/lib/services/noop-login.service.d.ts +0 -22
- package/lib/services/noop-login.service.d.ts.map +0 -1
- package/lib/services/schema.service.d.ts +0 -63
- package/lib/services/schema.service.d.ts.map +0 -1
- package/lib/services/settings-service.class.d.ts +0 -36
- package/lib/services/settings-service.class.d.ts.map +0 -1
- package/lib/services/settings.service.d.ts +0 -20
- package/lib/services/settings.service.d.ts.map +0 -1
- package/lib/services/tab-name.service.d.ts +0 -20
- package/lib/services/tab-name.service.d.ts.map +0 -1
- package/lib/services/validation.service.d.ts +0 -20
- package/lib/services/validation.service.d.ts.map +0 -1
- package/lib/services/ziti-controller-data.service.d.ts +0 -36
- package/lib/services/ziti-controller-data.service.d.ts.map +0 -1
- package/lib/services/ziti-data.service.d.ts +0 -49
- package/lib/services/ziti-data.service.d.ts.map +0 -1
- package/lib/services/ziti-domain-controller.service.d.ts +0 -13
- package/lib/services/ziti-domain-controller.service.d.ts.map +0 -1
- package/lib/shared/list-page-component.class.d.ts +0 -57
- package/lib/shared/list-page-component.class.d.ts.map +0 -1
- package/lib/shared/list-page-service.class.d.ts +0 -81
- package/lib/shared/list-page-service.class.d.ts.map +0 -1
- package/lib/urls.d.ts +0 -34
- package/lib/urls.d.ts.map +0 -1
- package/lib/zac-routing.module.d.ts +0 -8
- package/lib/zac-routing.module.d.ts.map +0 -1
- package/lib/ziti-console-lib.module.d.ts +0 -121
- package/lib/ziti-console-lib.module.d.ts.map +0 -1
- package/lib/ziti-console.constants.d.ts +0 -5
- package/lib/ziti-console.constants.d.ts.map +0 -1
- package/openziti-ziti-console-lib.d.ts.map +0 -1
- package/public-api.d.ts +0 -127
- package/public-api.d.ts.map +0 -1
|
@@ -1,397 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright NetFoundry Inc.
|
|
3
|
-
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
you may not use this file except in compliance with the License.
|
|
6
|
-
You may obtain a copy of the License at
|
|
7
|
-
|
|
8
|
-
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
|
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
See the License for the specific language governing permissions and
|
|
14
|
-
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Inject, Injectable } from '@angular/core';
|
|
17
|
-
import { SETTINGS_SERVICE } from "./settings.service";
|
|
18
|
-
import { firstValueFrom, map } from "rxjs";
|
|
19
|
-
import { catchError } from "rxjs/operators";
|
|
20
|
-
import { isEmpty, isArray, isNumber, isBoolean } from "lodash";
|
|
21
|
-
import { ZitiDataService } from "./ziti-data.service";
|
|
22
|
-
import { Resolver } from "@stoplight/json-ref-resolver";
|
|
23
|
-
import moment from "moment";
|
|
24
|
-
import * as i0 from "@angular/core";
|
|
25
|
-
import * as i1 from "../features/messaging/logger.service";
|
|
26
|
-
import * as i2 from "../features/messaging/growler.service";
|
|
27
|
-
import * as i3 from "@angular/common/http";
|
|
28
|
-
import * as i4 from "@angular/router";
|
|
29
|
-
import * as i5 from "./settings.service";
|
|
30
|
-
export class NodeDataService extends ZitiDataService {
|
|
31
|
-
constructor(logger, growler, settingsService, httpClient, router) {
|
|
32
|
-
super(logger, growler, settingsService, httpClient, router);
|
|
33
|
-
this.logger = logger;
|
|
34
|
-
this.growler = growler;
|
|
35
|
-
this.settingsService = settingsService;
|
|
36
|
-
this.httpClient = httpClient;
|
|
37
|
-
this.router = router;
|
|
38
|
-
this.dataServiceType = ZitiDataService.NODE_DATA_SERVICE_TYPE;
|
|
39
|
-
}
|
|
40
|
-
post(type, model, chained = false) {
|
|
41
|
-
let clientSub;
|
|
42
|
-
const nodeServerURL = window.location.origin;
|
|
43
|
-
const serviceUrl = nodeServerURL + '/api/dataSave';
|
|
44
|
-
const body = { paging: this.DEFAULT_PAGING, type: type, save: model, chained: chained };
|
|
45
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
46
|
-
const error = "Server Not Accessible";
|
|
47
|
-
if (err.code !== "ECONNREFUSED")
|
|
48
|
-
throw (err);
|
|
49
|
-
throw ({ error: error });
|
|
50
|
-
}), map((results) => {
|
|
51
|
-
if (!isEmpty(results.error)) {
|
|
52
|
-
throw ({ error: results.error });
|
|
53
|
-
}
|
|
54
|
-
return results;
|
|
55
|
-
})));
|
|
56
|
-
}
|
|
57
|
-
put(type, model, id, chained = false) {
|
|
58
|
-
let clientSub;
|
|
59
|
-
const nodeServerURL = window.location.origin;
|
|
60
|
-
const serviceUrl = nodeServerURL + '/api/dataSave';
|
|
61
|
-
const body = { paging: this.DEFAULT_PAGING, type: type, save: model, id: id, chained: chained };
|
|
62
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
63
|
-
const error = "Server Not Accessible";
|
|
64
|
-
if (err.code !== "ECONNREFUSED")
|
|
65
|
-
throw (err);
|
|
66
|
-
throw ({ error: error });
|
|
67
|
-
}), map((results) => {
|
|
68
|
-
if (!isEmpty(results.error)) {
|
|
69
|
-
throw ({ error: results.error });
|
|
70
|
-
}
|
|
71
|
-
return results;
|
|
72
|
-
})));
|
|
73
|
-
}
|
|
74
|
-
patch(type, model, id, chained = false) {
|
|
75
|
-
let clientSub;
|
|
76
|
-
const nodeServerURL = window.location.origin;
|
|
77
|
-
const serviceUrl = nodeServerURL + '/api/dataSave';
|
|
78
|
-
const body = { paging: this.DEFAULT_PAGING, type: type, save: model, id: id, chained: chained };
|
|
79
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
80
|
-
const error = "Server Not Accessible";
|
|
81
|
-
if (err.code !== "ECONNREFUSED")
|
|
82
|
-
throw (err);
|
|
83
|
-
throw ({ error: error });
|
|
84
|
-
}), map((results) => {
|
|
85
|
-
if (!isEmpty(results.error)) {
|
|
86
|
-
throw ({ error: results.error });
|
|
87
|
-
}
|
|
88
|
-
return results;
|
|
89
|
-
})));
|
|
90
|
-
}
|
|
91
|
-
get(type, paging, filters = [], url) {
|
|
92
|
-
const nodeServerURL = window.location.origin;
|
|
93
|
-
const serviceUrl = nodeServerURL + '/api/data';
|
|
94
|
-
const urlFilter = this.getUrlFilter(paging, filters);
|
|
95
|
-
paging.filter = urlFilter;
|
|
96
|
-
const body = { paging: paging, type: type, url: url };
|
|
97
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
98
|
-
const error = "Server Not Accessible";
|
|
99
|
-
if (err.code != "ECONNREFUSED")
|
|
100
|
-
throw ({ error: err.code });
|
|
101
|
-
throw ({ error: error });
|
|
102
|
-
}), map((results) => {
|
|
103
|
-
if (results.error) {
|
|
104
|
-
this.handleError(results);
|
|
105
|
-
}
|
|
106
|
-
return results;
|
|
107
|
-
})));
|
|
108
|
-
}
|
|
109
|
-
getSubdata(entityType, id, dataType) {
|
|
110
|
-
const nodeServerURL = window.location.origin;
|
|
111
|
-
const serviceUrl = nodeServerURL + '/api/subdata';
|
|
112
|
-
const body = { url: `./${entityType}/${id}/${dataType}`, name: entityType, type: dataType };
|
|
113
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
114
|
-
const error = "Server Not Accessible";
|
|
115
|
-
if (err.code != "ECONNREFUSED")
|
|
116
|
-
throw ({ error: err.code });
|
|
117
|
-
throw ({ error: error });
|
|
118
|
-
}), map((results) => {
|
|
119
|
-
if (!isEmpty(results.error)) {
|
|
120
|
-
throw ({ error: results.error });
|
|
121
|
-
}
|
|
122
|
-
else if (results.error) {
|
|
123
|
-
this.handleError(results);
|
|
124
|
-
}
|
|
125
|
-
if (results && !results?.data) {
|
|
126
|
-
results.data = {};
|
|
127
|
-
}
|
|
128
|
-
return results;
|
|
129
|
-
})));
|
|
130
|
-
}
|
|
131
|
-
saveSubdata(entityType, id, dataType, data) {
|
|
132
|
-
const nodeServerURL = window.location.origin;
|
|
133
|
-
const serviceUrl = nodeServerURL + '/api/subSave';
|
|
134
|
-
const body = {
|
|
135
|
-
type: dataType,
|
|
136
|
-
parentType: entityType,
|
|
137
|
-
id: id,
|
|
138
|
-
doing: "POST",
|
|
139
|
-
save: data
|
|
140
|
-
};
|
|
141
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
142
|
-
const error = "Server Not Accessible";
|
|
143
|
-
if (err.code != "ECONNREFUSED")
|
|
144
|
-
throw ({ error: err.code });
|
|
145
|
-
throw ({ error: error });
|
|
146
|
-
}), map((results) => {
|
|
147
|
-
if (!isEmpty(results.error)) {
|
|
148
|
-
throw ({ error: results.error });
|
|
149
|
-
}
|
|
150
|
-
return results;
|
|
151
|
-
})));
|
|
152
|
-
}
|
|
153
|
-
resetEnrollment(id, date) {
|
|
154
|
-
const nodeServerURL = window.location.origin;
|
|
155
|
-
const serviceUrl = nodeServerURL + '/api/resetEnroll';
|
|
156
|
-
const dateStr = moment(date).format("M/D/YYYY hh:mm A");
|
|
157
|
-
const body = {
|
|
158
|
-
date: dateStr,
|
|
159
|
-
id: id
|
|
160
|
-
};
|
|
161
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
162
|
-
const error = "Server Not Accessible";
|
|
163
|
-
if (err.code != "ECONNREFUSED")
|
|
164
|
-
throw ({ error: err.code });
|
|
165
|
-
throw ({ error: error });
|
|
166
|
-
}), map((results) => {
|
|
167
|
-
if (!isEmpty(results.error)) {
|
|
168
|
-
throw ({ error: results.error });
|
|
169
|
-
}
|
|
170
|
-
return results;
|
|
171
|
-
})));
|
|
172
|
-
}
|
|
173
|
-
deleteEnrollment(enrollmentId) {
|
|
174
|
-
const nodeServerURL = window.location.origin;
|
|
175
|
-
const serviceUrl = nodeServerURL + '/api/deleteEnrollment';
|
|
176
|
-
const body = {
|
|
177
|
-
id: enrollmentId
|
|
178
|
-
};
|
|
179
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
180
|
-
const error = "Server Not Accessible";
|
|
181
|
-
if (err.code != "ECONNREFUSED")
|
|
182
|
-
throw ({ error: err.code });
|
|
183
|
-
throw ({ error: error });
|
|
184
|
-
}), map((results) => {
|
|
185
|
-
if (!isEmpty(results.error)) {
|
|
186
|
-
throw ({ error: results.error });
|
|
187
|
-
}
|
|
188
|
-
return results;
|
|
189
|
-
})));
|
|
190
|
-
}
|
|
191
|
-
reissueEnrollment(id, date) {
|
|
192
|
-
const nodeServerURL = window.location.origin;
|
|
193
|
-
const serviceUrl = nodeServerURL + '/api/reissueEnroll';
|
|
194
|
-
const dateStr = moment(date).format("M/D/YYYY hh:mm A");
|
|
195
|
-
const body = {
|
|
196
|
-
date: dateStr,
|
|
197
|
-
id: id
|
|
198
|
-
};
|
|
199
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
200
|
-
const error = "Server Not Accessible";
|
|
201
|
-
if (err.code != "ECONNREFUSED")
|
|
202
|
-
throw ({ error: err.code });
|
|
203
|
-
throw ({ error: error });
|
|
204
|
-
}), map((results) => {
|
|
205
|
-
if (!isEmpty(results.error)) {
|
|
206
|
-
throw ({ error: results.error });
|
|
207
|
-
}
|
|
208
|
-
return results;
|
|
209
|
-
})));
|
|
210
|
-
}
|
|
211
|
-
resetMFA(id) {
|
|
212
|
-
const nodeServerURL = window.location.origin;
|
|
213
|
-
const serviceUrl = nodeServerURL + '/api/mfa';
|
|
214
|
-
const options = {
|
|
215
|
-
body: {
|
|
216
|
-
id: id
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
return firstValueFrom(this.httpClient.delete(serviceUrl, options).pipe(catchError((err) => {
|
|
220
|
-
const error = "Server Not Accessible";
|
|
221
|
-
if (err.code != "ECONNREFUSED")
|
|
222
|
-
throw ({ error: err.code });
|
|
223
|
-
throw ({ error: error });
|
|
224
|
-
}), map((results) => {
|
|
225
|
-
if (!isEmpty(results.error)) {
|
|
226
|
-
throw ({ error: results.error });
|
|
227
|
-
}
|
|
228
|
-
return results;
|
|
229
|
-
})));
|
|
230
|
-
}
|
|
231
|
-
resetPassword(oldPass, newPass, confirmPass) {
|
|
232
|
-
const nodeServerURL = window.location.origin;
|
|
233
|
-
const serviceUrl = nodeServerURL + '/api/reset';
|
|
234
|
-
const options = {
|
|
235
|
-
body: {
|
|
236
|
-
password: oldPass,
|
|
237
|
-
newpassword: newPass,
|
|
238
|
-
confirm: confirmPass
|
|
239
|
-
}
|
|
240
|
-
};
|
|
241
|
-
return firstValueFrom(this.httpClient.delete(serviceUrl, options).pipe(catchError((err) => {
|
|
242
|
-
const error = "Server Not Accessible";
|
|
243
|
-
if (err.code != "ECONNREFUSED")
|
|
244
|
-
throw ({ error: err.code });
|
|
245
|
-
throw ({ error: error });
|
|
246
|
-
}), map((results) => {
|
|
247
|
-
if (!isEmpty(results.error)) {
|
|
248
|
-
throw ({ error: results.error });
|
|
249
|
-
}
|
|
250
|
-
return results;
|
|
251
|
-
})));
|
|
252
|
-
}
|
|
253
|
-
deleteSubdata(entityType, id, dataType, data) {
|
|
254
|
-
const nodeServerURL = window.location.origin;
|
|
255
|
-
const serviceUrl = nodeServerURL + '/api/subSave';
|
|
256
|
-
const body = {
|
|
257
|
-
type: dataType,
|
|
258
|
-
parentType: entityType,
|
|
259
|
-
id: id,
|
|
260
|
-
doing: "DELETE",
|
|
261
|
-
save: data
|
|
262
|
-
};
|
|
263
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
264
|
-
const error = "Server Not Accessible";
|
|
265
|
-
if (err.code != "ECONNREFUSED")
|
|
266
|
-
throw ({ error: err.code });
|
|
267
|
-
throw ({ error: error });
|
|
268
|
-
}), map((results) => {
|
|
269
|
-
if (!isEmpty(results.error)) {
|
|
270
|
-
throw ({ error: results.error });
|
|
271
|
-
}
|
|
272
|
-
return results;
|
|
273
|
-
})));
|
|
274
|
-
}
|
|
275
|
-
delete(type, id) {
|
|
276
|
-
const nodeServerURL = window.location.origin;
|
|
277
|
-
const serviceUrl = nodeServerURL + '/api/delete';
|
|
278
|
-
const body = { paging: this.DEFAULT_PAGING, type: type, ids: [id] };
|
|
279
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
280
|
-
const error = "Server Not Accessible";
|
|
281
|
-
if (err.code != "ECONNREFUSED")
|
|
282
|
-
throw ({ error: err.code });
|
|
283
|
-
throw ({ error: error });
|
|
284
|
-
}), map((results) => {
|
|
285
|
-
if (!isEmpty(results.error)) {
|
|
286
|
-
throw ({ error: results.error });
|
|
287
|
-
}
|
|
288
|
-
return results;
|
|
289
|
-
})));
|
|
290
|
-
}
|
|
291
|
-
call(url) {
|
|
292
|
-
const nodeServerURL = window.location.origin;
|
|
293
|
-
const serviceUrl = nodeServerURL + '/api/call';
|
|
294
|
-
const body = { url: url };
|
|
295
|
-
return firstValueFrom(this.httpClient.post(serviceUrl, body, {}).pipe(catchError((err) => {
|
|
296
|
-
const error = "Server Not Accessible";
|
|
297
|
-
if (err.code != "ECONNREFUSED")
|
|
298
|
-
throw ({ error: err.code });
|
|
299
|
-
throw ({ error: error });
|
|
300
|
-
}), map((results) => {
|
|
301
|
-
if (!isEmpty(results.error)) {
|
|
302
|
-
throw ({ error: results.error });
|
|
303
|
-
}
|
|
304
|
-
return results;
|
|
305
|
-
})));
|
|
306
|
-
}
|
|
307
|
-
schema(data) {
|
|
308
|
-
const resolver = new Resolver();
|
|
309
|
-
return resolver.resolve(data).then((schema) => {
|
|
310
|
-
return schema.result;
|
|
311
|
-
});
|
|
312
|
-
}
|
|
313
|
-
getUrlFilter(paging, filters) {
|
|
314
|
-
let urlFilter = '';
|
|
315
|
-
let toSearchOn = "name";
|
|
316
|
-
let noSearch = filters?.length <= 0;
|
|
317
|
-
if (isEmpty(paging)) {
|
|
318
|
-
paging = {};
|
|
319
|
-
}
|
|
320
|
-
if (paging && paging.sort != null) {
|
|
321
|
-
if (paging.searchOn)
|
|
322
|
-
toSearchOn = paging.searchOn;
|
|
323
|
-
if (paging.noSearch)
|
|
324
|
-
noSearch = true;
|
|
325
|
-
if (!paging.filter)
|
|
326
|
-
paging.filter = "";
|
|
327
|
-
if (!isArray(paging.filter) && isNaN(paging.filter)) {
|
|
328
|
-
paging.filter = paging.filter.split('#').join('');
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
filters.forEach((filter, index) => {
|
|
332
|
-
let filterVal = '';
|
|
333
|
-
switch (filter.type) {
|
|
334
|
-
case 'TEXTINPUT':
|
|
335
|
-
const verb = filter.verb ? filter.verb : 'contains';
|
|
336
|
-
filterVal = `${filter.columnId} ${verb} "${filter.value}"`;
|
|
337
|
-
if (filter.rawFilter) {
|
|
338
|
-
paging.rawFilter = true;
|
|
339
|
-
}
|
|
340
|
-
break;
|
|
341
|
-
case 'SELECT':
|
|
342
|
-
case 'COMBO':
|
|
343
|
-
const val = isNumber(filter.value) || isBoolean(filter.value) ? `${filter.value}` : `"${filter.value}"`;
|
|
344
|
-
filterVal = `${filter.columnId} = ${val}`;
|
|
345
|
-
break;
|
|
346
|
-
case 'DATETIME':
|
|
347
|
-
paging.rawFilter = true;
|
|
348
|
-
filterVal = `${filter.columnId} >= datetime(${filter.value[0]}) and ${filter.columnId} <= datetime(${filter.value[1]})`;
|
|
349
|
-
break;
|
|
350
|
-
case 'ATTRIBUTE':
|
|
351
|
-
paging.rawFilter = true;
|
|
352
|
-
filterVal = this.getAttributeFilter(filter.value, filter.columnId);
|
|
353
|
-
break;
|
|
354
|
-
default:
|
|
355
|
-
filterVal = `${filter.columnId} contains "${filter.value}"`;
|
|
356
|
-
break;
|
|
357
|
-
}
|
|
358
|
-
if (index <= 0) {
|
|
359
|
-
urlFilter = `${filterVal}`;
|
|
360
|
-
}
|
|
361
|
-
else {
|
|
362
|
-
urlFilter += ` and ${filterVal}`;
|
|
363
|
-
}
|
|
364
|
-
});
|
|
365
|
-
return urlFilter;
|
|
366
|
-
}
|
|
367
|
-
getAttributeFilter(val, columnId) {
|
|
368
|
-
let filter = '';
|
|
369
|
-
if (isArray(val)) {
|
|
370
|
-
val.forEach((attr, index) => {
|
|
371
|
-
if (index > 0) {
|
|
372
|
-
filter += ' or ';
|
|
373
|
-
}
|
|
374
|
-
filter += `anyOf(${columnId}) = "${attr}"`;
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
filter = `anyOf(${columnId}) = "${val}"`;
|
|
379
|
-
}
|
|
380
|
-
return filter;
|
|
381
|
-
}
|
|
382
|
-
handleError(results) {
|
|
383
|
-
this.logger.error(results?.error);
|
|
384
|
-
}
|
|
385
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeDataService, deps: [{ token: i1.LoggerService }, { token: i2.GrowlerService }, { token: SETTINGS_SERVICE }, { token: i3.HttpClient }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
386
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeDataService, providedIn: 'root' }); }
|
|
387
|
-
}
|
|
388
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NodeDataService, decorators: [{
|
|
389
|
-
type: Injectable,
|
|
390
|
-
args: [{
|
|
391
|
-
providedIn: 'root'
|
|
392
|
-
}]
|
|
393
|
-
}], ctorParameters: function () { return [{ type: i1.LoggerService }, { type: i2.GrowlerService }, { type: i5.SettingsService, decorators: [{
|
|
394
|
-
type: Inject,
|
|
395
|
-
args: [SETTINGS_SERVICE]
|
|
396
|
-
}] }, { type: i3.HttpClient }, { type: i4.Router }]; } });
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvc2VydmljZXMvbm9kZS1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUlqRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFDckUsT0FBTyxFQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRzFDLE9BQU8sRUFBQyxPQUFPLEVBQU8sT0FBTyxFQUFFLFFBQVEsRUFBTyxTQUFTLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7QUFLNUIsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUloRCxZQUFxQixNQUFxQixFQUNyQixPQUF1QixFQUNHLGVBQWdDLEVBQzFELFVBQXNCLEVBQ3RCLE1BQWM7UUFFL0IsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQU4xQyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ0csb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzFELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU4xQixvQkFBZSxHQUFHLGVB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O2lCQUNwQjtnQkFDRCxNQUFNLElBQUksU0FBUyxRQUFRLFFBQVEsSUFBSSxHQUFHLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsTUFBTSxHQUFHLFNBQVMsUUFBUSxRQUFRLEdBQUcsR0FBRyxDQUFDO1NBQzVDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFPO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3JDLENBQUM7K0dBamFRLGVBQWUsNkVBTUosZ0JBQWdCO21IQU4zQixlQUFlLGNBRlosTUFBTTs7NEZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQU9nQixNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSBcIi4uL2ZlYXR1cmVzL21lc3NhZ2luZy9sb2dnZXIuc2VydmljZVwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uL2ZlYXR1cmVzL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7U0VUVElOR1NfU0VSVklDRSwgU2V0dGluZ3NTZXJ2aWNlfSBmcm9tIFwiLi9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tLCBtYXB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2NhdGNoRXJyb3J9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7RmlsdGVyT2JqfSBmcm9tIFwiLi4vZmVhdHVyZXMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQge2lzRW1wdHksIGdldCwgaXNBcnJheSwgaXNOdW1iZXIsIHNldCwgaXNCb29sZWFufSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge1ppdGlEYXRhU2VydmljZX0gZnJvbSBcIi4veml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7UmVzb2x2ZXJ9IGZyb20gXCJAc3RvcGxpZ2h0L2pzb24tcmVmLXJlc29sdmVyXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOb2RlRGF0YVNlcnZpY2UgZXh0ZW5kcyBaaXRpRGF0YVNlcnZpY2Uge1xuXG4gICAgb3ZlcnJpZGUgZGF0YVNlcnZpY2VUeXBlID0gWml0aURhdGFTZXJ2aWNlLk5PREVfREFUQV9TRVJWSUNFX1RZUEU7XG5cbiAgICBjb25zdHJ1Y3RvcihvdmVycmlkZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGUgZ3Jvd2xlcjogR3Jvd2xlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBvdmVycmlkZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICAgICAgICAgICAgICBvdmVycmlkZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGxvZ2dlciwgZ3Jvd2xlciwgc2V0dGluZ3NTZXJ2aWNlLCBodHRwQ2xpZW50LCByb3V0ZXIpXG4gICAgfVxuXG4gICAgcG9zdCh0eXBlLCBtb2RlbCwgY2hhaW5lZCA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBjbGllbnRTdWI7XG4gICAgICAgIGNvbnN0IG5vZGVTZXJ2ZXJVUkwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgICAgICBjb25zdCBzZXJ2aWNlVXJsID0gbm9kZVNlcnZlclVSTCArICcvYXBpL2RhdGFTYXZlJztcbiAgICAgICAgY29uc3QgYm9keSA9IHtwYWdpbmc6IHRoaXMuREVGQVVMVF9QQUdJTkcsIHR5cGU6IHR5cGUsIHNhdmU6IG1vZGVsLCBjaGFpbmVkOiBjaGFpbmVkfTtcblxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwQ2xpZW50LnBvc3Qoc2VydmljZVVybCxib2R5LHt9KS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gXCJTZXJ2ZXIgTm90IEFjY2Vzc2libGVcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9PSBcIkVDT05OUkVGVVNFRFwiKSB0aHJvdyhlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyh7ZXJyb3I6IGVycm9yfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkocmVzdWx0cy5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogcmVzdWx0cy5lcnJvcn0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHV0KHR5cGUsIG1vZGVsLCBpZCwgY2hhaW5lZCA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBjbGllbnRTdWI7XG4gICAgICAgIGNvbnN0IG5vZGVTZXJ2ZXJVUkwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgICAgICBjb25zdCBzZXJ2aWNlVXJsID0gbm9kZVNlcnZlclVSTCArICcvYXBpL2RhdGFTYXZlJztcbiAgICAgICAgY29uc3QgYm9keSA9IHtwYWdpbmc6IHRoaXMuREVGQVVMVF9QQUdJTkcsIHR5cGU6IHR5cGUsIHNhdmU6IG1vZGVsLCBpZDogaWQsIGNoYWluZWQ6IGNoYWluZWR9O1xuXG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQucG9zdChzZXJ2aWNlVXJsLGJvZHkse30pLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBcIlNlcnZlciBOb3QgQWNjZXNzaWJsZVwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRUNPTk5SRUZVU0VEXCIpIHRocm93KGVycik7XG4gICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogZXJyb3J9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShyZXN1bHRzLmVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiByZXN1bHRzLmVycm9yfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwYXRjaCh0eXBlLCBtb2RlbCwgaWQsIGNoYWluZWQgPSBmYWxzZSkge1xuICAgICAgICBsZXQgY2xpZW50U3ViO1xuICAgICAgICBjb25zdCBub2RlU2VydmVyVVJMID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IG5vZGVTZXJ2ZXJVUkwgKyAnL2FwaS9kYXRhU2F2ZSc7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7cGFnaW5nOiB0aGlzLkRFRkFVTFRfUEFHSU5HLCB0eXBlOiB0eXBlLCBzYXZlOiBtb2RlbCwgaWQ6IGlkLCBjaGFpbmVkOiBjaGFpbmVkfTtcblxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwQ2xpZW50LnBvc3Qoc2VydmljZVVybCxib2R5LHt9KS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gXCJTZXJ2ZXIgTm90IEFjY2Vzc2libGVcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9PSBcIkVDT05OUkVGVVNFRFwiKSB0aHJvdyhlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyh7ZXJyb3I6IGVycm9yfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkocmVzdWx0cy5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogcmVzdWx0cy5lcnJvcn0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0KHR5cGU6IHN0cmluZywgcGFnaW5nOiBhbnksIGZpbHRlcnM6IEZpbHRlck9ialtdID0gW10sIHVybD8pIHtcbiAgICAgICAgY29uc3Qgbm9kZVNlcnZlclVSTCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBub2RlU2VydmVyVVJMICsgJy9hcGkvZGF0YSc7XG4gICAgICAgIGNvbnN0IHVybEZpbHRlciA9IHRoaXMuZ2V0VXJsRmlsdGVyKHBhZ2luZywgZmlsdGVycyk7XG4gICAgICAgIHBhZ2luZy5maWx0ZXIgPSB1cmxGaWx0ZXI7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7cGFnaW5nOiBwYWdpbmcsIHR5cGU6IHR5cGUsIHVybDogdXJsfTtcblxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwQ2xpZW50LnBvc3Qoc2VydmljZVVybCxib2R5LHt9KS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gXCJTZXJ2ZXIgTm90IEFjY2Vzc2libGVcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9IFwiRUNPTk5SRUZVU0VEXCIpIHRocm93KHtlcnJvcjogZXJyLmNvZGV9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiBlcnJvcn0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKHJlc3VsdHMpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRTdWJkYXRhKGVudGl0eVR5cGU6IHN0cmluZywgaWQ6IGFueSwgZGF0YVR5cGU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBub2RlU2VydmVyVVJMID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IG5vZGVTZXJ2ZXJVUkwgKyAnL2FwaS9zdWJkYXRhJztcbiAgICAgICAgY29uc3QgYm9keSA9IHt1cmw6YC4vJHtlbnRpdHlUeXBlfS8ke2lkfS8ke2RhdGFUeXBlfWAsIG5hbWU6IGVudGl0eVR5cGUsIHR5cGU6IGRhdGFUeXBlIH07XG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQucG9zdChzZXJ2aWNlVXJsLCBib2R5LCB7fSkucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IFwiU2VydmVyIE5vdCBBY2Nlc3NpYmxlXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSAhPSBcIkVDT05OUkVGVVNFRFwiKSB0aHJvdyh7ZXJyb3I6IGVyci5jb2RlfSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogZXJyb3J9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShyZXN1bHRzLmVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiByZXN1bHRzLmVycm9yfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0cy5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihyZXN1bHRzKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzICYmICFyZXN1bHRzPy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmRhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIHNhdmVTdWJkYXRhKGVudGl0eVR5cGU6IHN0cmluZywgaWQ6IGFueSwgZGF0YVR5cGU6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3Qgbm9kZVNlcnZlclVSTCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBub2RlU2VydmVyVVJMICsgJy9hcGkvc3ViU2F2ZSc7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgICAgICB0eXBlOiBkYXRhVHlwZSxcbiAgICAgICAgICAgIHBhcmVudFR5cGU6IGVudGl0eVR5cGUsXG4gICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICBkb2luZzogXCJQT1NUXCIsXG4gICAgICAgICAgICBzYXZlOiBkYXRhXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cENsaWVudC5wb3N0KHNlcnZpY2VVcmwsIGJvZHksIHt9KS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gXCJTZXJ2ZXIgTm90IEFjY2Vzc2libGVcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9IFwiRUNPTk5SRUZVU0VEXCIpIHRocm93KHtlcnJvcjogZXJyLmNvZGV9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiBlcnJvcn0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKCFpc0VtcHR5KHJlc3VsdHMuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyh7ZXJyb3I6IHJlc3VsdHMuZXJyb3J9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIHJlc2V0RW5yb2xsbWVudChpZDogc3RyaW5nLCBkYXRlOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBub2RlU2VydmVyVVJMID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IG5vZGVTZXJ2ZXJVUkwgKyAnL2FwaS9yZXNldEVucm9sbCc7XG4gICAgICAgIGNvbnN0IGRhdGVTdHIgPSBtb21lbnQoZGF0ZSkuZm9ybWF0KFwiTS9EL1lZWVkgaGg6bW0gQVwiKTtcbiAgICAgICAgY29uc3QgYm9keSA9IHtcbiAgICAgICAgICAgIGRhdGU6IGRhdGVTdHIsXG4gICAgICAgICAgICBpZDogaWRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwQ2xpZW50LnBvc3Qoc2VydmljZVVybCwgYm9keSwge30pLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBcIlNlcnZlciBOb3QgQWNjZXNzaWJsZVwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT0gXCJFQ09OTlJFRlVTRURcIikgdGhyb3coe2Vycm9yOiBlcnIuY29kZX0pO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyh7ZXJyb3I6IGVycm9yfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkocmVzdWx0cy5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogcmVzdWx0cy5lcnJvcn0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZGVsZXRlRW5yb2xsbWVudChlbnJvbGxtZW50SWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICBjb25zdCBub2RlU2VydmVyVVJMID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBub2RlU2VydmVyVVJMICsgJy9hcGkvZGVsZXRlRW5yb2xsbWVudCc7XG4gICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICBpZDogZW5yb2xsbWVudElkXG4gICAgICB9XG4gICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwQ2xpZW50LnBvc3Qoc2VydmljZVVybCwgYm9keSwge30pLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gXCJTZXJ2ZXIgTm90IEFjY2Vzc2libGVcIjtcbiAgICAgICAgICAgIGlmIChlcnIuY29kZSAhPSBcIkVDT05OUkVGVVNFRFwiKSB0aHJvdyh7ZXJyb3I6IGVyci5jb2RlfSk7XG4gICAgICAgICAgICB0aHJvdyh7ZXJyb3I6IGVycm9yfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWFwKChyZXN1bHRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmKCFpc0VtcHR5KHJlc3VsdHMuZXJyb3IpKSB7XG4gICAgICAgICAgICAgIHRocm93KHtlcnJvcjogcmVzdWx0cy5lcnJvcn0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSByZWlzc3VlRW5yb2xsbWVudChpZDogc3RyaW5nLCBkYXRlOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBub2RlU2VydmVyVVJMID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IG5vZGVTZXJ2ZXJVUkwgKyAnL2FwaS9yZWlzc3VlRW5yb2xsJztcbiAgICAgICAgY29uc3QgZGF0ZVN0ciA9IG1vbWVudChkYXRlKS5mb3JtYXQoXCJNL0QvWVlZWSBoaDptbSBBXCIpO1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgZGF0ZTogZGF0ZVN0cixcbiAgICAgICAgICAgIGlkOiBpZFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQucG9zdChzZXJ2aWNlVXJsLCBib2R5LCB7fSkucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IFwiU2VydmVyIE5vdCBBY2Nlc3NpYmxlXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSAhPSBcIkVDT05OUkVGVVNFRFwiKSB0aHJvdyh7ZXJyb3I6IGVyci5jb2RlfSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogZXJyb3J9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShyZXN1bHRzLmVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiByZXN1bHRzLmVycm9yfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXNldE1GQShpZCkge1xuICAgICAgICBjb25zdCBub2RlU2VydmVyVVJMID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IG5vZGVTZXJ2ZXJVUkwgKyAnL2FwaS9tZmEnO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIGlkOiBpZFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwQ2xpZW50LmRlbGV0ZShzZXJ2aWNlVXJsLCBvcHRpb25zKS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gXCJTZXJ2ZXIgTm90IEFjY2Vzc2libGVcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9IFwiRUNPTk5SRUZVU0VEXCIpIHRocm93KHtlcnJvcjogZXJyLmNvZGV9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiBlcnJvcn0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKCFpc0VtcHR5KHJlc3VsdHMuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyh7ZXJyb3I6IHJlc3VsdHMuZXJyb3J9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlc2V0UGFzc3dvcmQob2xkUGFzcywgbmV3UGFzcywgY29uZmlybVBhc3MpIHtcbiAgICAgICAgY29uc3Qgbm9kZVNlcnZlclVSTCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBub2RlU2VydmVyVVJMICsgJy9hcGkvcmVzZXQnO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBvbGRQYXNzLFxuICAgICAgICAgICAgICAgIG5ld3Bhc3N3b3JkOiBuZXdQYXNzLFxuICAgICAgICAgICAgICAgIGNvbmZpcm06IGNvbmZpcm1QYXNzXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHBDbGllbnQuZGVsZXRlKHNlcnZpY2VVcmwsIG9wdGlvbnMpLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBcIlNlcnZlciBOb3QgQWNjZXNzaWJsZVwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT0gXCJFQ09OTlJFRlVTRURcIikgdGhyb3coe2Vycm9yOiBlcnIuY29kZX0pO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyh7ZXJyb3I6IGVycm9yfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKChyZXN1bHRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYoIWlzRW1wdHkocmVzdWx0cy5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogcmVzdWx0cy5lcnJvcn0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZGVsZXRlU3ViZGF0YShlbnRpdHlUeXBlOiBzdHJpbmcsIGlkOiBhbnksIGRhdGFUeXBlOiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IG5vZGVTZXJ2ZXJVUkwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgICAgICBjb25zdCBzZXJ2aWNlVXJsID0gbm9kZVNlcnZlclVSTCArICcvYXBpL3N1YlNhdmUnO1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgdHlwZTogZGF0YVR5cGUsXG4gICAgICAgICAgICBwYXJlbnRUeXBlOiBlbnRpdHlUeXBlLFxuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgZG9pbmc6IFwiREVMRVRFXCIsXG4gICAgICAgICAgICBzYXZlOiBkYXRhXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cENsaWVudC5wb3N0KHNlcnZpY2VVcmwsIGJvZHksIHt9KS5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gXCJTZXJ2ZXIgTm90IEFjY2Vzc2libGVcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5jb2RlICE9IFwiRUNPTk5SRUZVU0VEXCIpIHRocm93KHtlcnJvcjogZXJyLmNvZGV9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiBlcnJvcn0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKCFpc0VtcHR5KHJlc3VsdHMuZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyh7ZXJyb3I6IHJlc3VsdHMuZXJyb3J9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZSh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgbm9kZVNlcnZlclVSTCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW47XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBub2RlU2VydmVyVVJMICsgJy9hcGkvZGVsZXRlJztcbiAgICAgICAgY29uc3QgYm9keSA9IHtwYWdpbmc6IHRoaXMuREVGQVVMVF9QQUdJTkcsIHR5cGU6IHR5cGUsIGlkczogW2lkXX07XG5cbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cENsaWVudC5wb3N0KHNlcnZpY2VVcmwsYm9keSx7fSkucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IFwiU2VydmVyIE5vdCBBY2Nlc3NpYmxlXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSAhPSBcIkVDT05OUkVGVVNFRFwiKSB0aHJvdyh7ZXJyb3I6IGVyci5jb2RlfSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogZXJyb3J9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShyZXN1bHRzLmVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiByZXN1bHRzLmVycm9yfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjYWxsKHVybCkge1xuICAgICAgICBjb25zdCBub2RlU2VydmVyVVJMID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgICAgY29uc3Qgc2VydmljZVVybCA9IG5vZGVTZXJ2ZXJVUkwgKyAnL2FwaS9jYWxsJztcbiAgICAgICAgY29uc3QgYm9keSA9IHt1cmw6IHVybH07XG5cbiAgICAgICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cENsaWVudC5wb3N0KHNlcnZpY2VVcmwsYm9keSx7fSkucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IFwiU2VydmVyIE5vdCBBY2Nlc3NpYmxlXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIuY29kZSAhPSBcIkVDT05OUkVGVVNFRFwiKSB0aHJvdyh7ZXJyb3I6IGVyci5jb2RlfSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93KHtlcnJvcjogZXJyb3J9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZighaXNFbXB0eShyZXN1bHRzLmVycm9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3coe2Vycm9yOiByZXN1bHRzLmVycm9yfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzY2hlbWEoZGF0YTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSBuZXcgUmVzb2x2ZXIoKTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVyLnJlc29sdmUoZGF0YSkudGhlbigoc2NoZW1hKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hLnJlc3VsdFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVybEZpbHRlcihwYWdpbmcsIGZpbHRlcnM6IGFueVtdKSB7XG4gICAgICAgIGxldCB1cmxGaWx0ZXIgPSAnJztcbiAgICAgICAgbGV0IHRvU2VhcmNoT24gPSBcIm5hbWVcIjtcbiAgICAgICAgbGV0IG5vU2VhcmNoID0gZmlsdGVycz8ubGVuZ3RoIDw9IDA7XG4gICAgICAgIGlmIChpc0VtcHR5KHBhZ2luZykpIHtcbiAgICAgICAgICAgIHBhZ2luZyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWdpbmcgJiYgcGFnaW5nLnNvcnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHBhZ2luZy5zZWFyY2hPbikgdG9TZWFyY2hPbiA9IHBhZ2luZy5zZWFyY2hPbjtcbiAgICAgICAgICAgIGlmIChwYWdpbmcubm9TZWFyY2gpIG5vU2VhcmNoID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICghcGFnaW5nLmZpbHRlcikgcGFnaW5nLmZpbHRlciA9IFwiXCI7XG4gICAgICAgICAgICBpZiAoIWlzQXJyYXkocGFnaW5nLmZpbHRlcikgJiYgaXNOYU4ocGFnaW5nLmZpbHRlcikpIHtcbiAgICAgICAgICAgICAgICBwYWdpbmcuZmlsdGVyID0gcGFnaW5nLmZpbHRlci5zcGxpdCgnIycpLmpvaW4oJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgbGV0IGZpbHRlclZhbCA9ICcnO1xuICAgICAgICAgICAgc3dpdGNoIChmaWx0ZXIudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1RFWFRJTlBVVCc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcmIgPSBmaWx0ZXIudmVyYiA/IGZpbHRlci52ZXJiIDogJ2NvbnRhaW5zJztcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVmFsID0gYCR7ZmlsdGVyLmNvbHVtbklkfSAke3ZlcmJ9IFwiJHtmaWx0ZXIudmFsdWV9XCJgO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLnJhd0ZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5nLnJhd0ZpbHRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnU0VMRUNUJzpcbiAgICAgICAgICAgICAgICBjYXNlICdDT01CTyc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IGlzTnVtYmVyKGZpbHRlci52YWx1ZSkgfHwgaXNCb29sZWFuKGZpbHRlci52YWx1ZSkgPyBgJHtmaWx0ZXIudmFsdWV9YCA6IGBcIiR7ZmlsdGVyLnZhbHVlfVwiYDtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVmFsID0gYCR7ZmlsdGVyLmNvbHVtbklkfSA9ICR7dmFsfWA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0RBVEVUSU1FJzpcbiAgICAgICAgICAgICAgICAgICAgcGFnaW5nLnJhd0ZpbHRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclZhbCA9IGAke2ZpbHRlci5jb2x1bW5JZH0gPj0gZGF0ZXRpbWUoJHtmaWx0ZXIudmFsdWVbMF19KSBhbmQgJHtmaWx0ZXIuY29sdW1uSWR9IDw9IGRhdGV0aW1lKCR7ZmlsdGVyLnZhbHVlWzFdfSlgO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdBVFRSSUJVVEUnOlxuICAgICAgICAgICAgICAgICAgICBwYWdpbmcucmF3RmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVmFsID0gdGhpcy5nZXRBdHRyaWJ1dGVGaWx0ZXIoZmlsdGVyLnZhbHVlLCBmaWx0ZXIuY29sdW1uSWQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJWYWwgPSBgJHtmaWx0ZXIuY29sdW1uSWR9IGNvbnRhaW5zIFwiJHtmaWx0ZXIudmFsdWV9XCJgO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmRleCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdXJsRmlsdGVyID0gYCR7ZmlsdGVyVmFsfWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVybEZpbHRlciArPSBgIGFuZCAke2ZpbHRlclZhbH1gXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB1cmxGaWx0ZXI7XG4gICAgfVxuXG4gICAgZ2V0QXR0cmlidXRlRmlsdGVyKHZhbCwgY29sdW1uSWQpIHtcbiAgICAgICAgbGV0IGZpbHRlciA9ICcnO1xuICAgICAgICBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICAgICAgICB2YWwuZm9yRWFjaCgoYXR0ciwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlciArPSAnIG9yICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbHRlciArPSBgYW55T2YoJHtjb2x1bW5JZH0pID0gXCIke2F0dHJ9XCJgO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWx0ZXIgPSBgYW55T2YoJHtjb2x1bW5JZH0pID0gXCIke3ZhbH1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlcjtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihyZXN1bHRzKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKHJlc3VsdHM/LmVycm9yKVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Injectable, Inject } from '@angular/core';
|
|
2
|
-
import { LoginServiceClass } from "./login-service.class";
|
|
3
|
-
import { SETTINGS_SERVICE } from "./settings.service";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common/http";
|
|
6
|
-
import * as i2 from "@angular/router";
|
|
7
|
-
import * as i3 from "../features/messaging/growler.service";
|
|
8
|
-
import * as i4 from "./settings-service.class";
|
|
9
|
-
export class NoopLoginService extends LoginServiceClass {
|
|
10
|
-
constructor(httpClient, settingsService, router, growlerService) {
|
|
11
|
-
super(httpClient, settingsService, router, growlerService);
|
|
12
|
-
this.httpClient = httpClient;
|
|
13
|
-
this.settingsService = settingsService;
|
|
14
|
-
this.router = router;
|
|
15
|
-
this.growlerService = growlerService;
|
|
16
|
-
}
|
|
17
|
-
init() { }
|
|
18
|
-
clearSession() {
|
|
19
|
-
}
|
|
20
|
-
login(prefix, url, username, password, isTest) {
|
|
21
|
-
}
|
|
22
|
-
logout() {
|
|
23
|
-
}
|
|
24
|
-
observeLogin(serviceUrl, username, password, isTest) {
|
|
25
|
-
}
|
|
26
|
-
checkOriginForController() {
|
|
27
|
-
return Promise.resolve(true);
|
|
28
|
-
}
|
|
29
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NoopLoginService, deps: [{ token: i1.HttpClient }, { token: SETTINGS_SERVICE }, { token: i2.Router }, { token: i3.GrowlerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NoopLoginService, providedIn: 'root' }); }
|
|
31
|
-
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NoopLoginService, decorators: [{
|
|
33
|
-
type: Injectable,
|
|
34
|
-
args: [{
|
|
35
|
-
providedIn: 'root'
|
|
36
|
-
}]
|
|
37
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i4.SettingsServiceClass, decorators: [{
|
|
38
|
-
type: Inject,
|
|
39
|
-
args: [SETTINGS_SERVICE]
|
|
40
|
-
}] }, { type: i2.Router }, { type: i3.GrowlerService }]; } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC1sb2dpbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL3NlcnZpY2VzL25vb3AtbG9naW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBT3BELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxpQkFBaUI7SUFFbkQsWUFDYSxVQUFzQixFQUNJLGVBQXFDLEVBQy9ELE1BQWMsRUFDZCxjQUE4QjtRQUV2QyxLQUFLLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFMbEQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNJLG9CQUFlLEdBQWYsZUFBZSxDQUFzQjtRQUMvRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBRzNDLENBQUM7SUFFUSxJQUFJLEtBQUksQ0FBQztJQUVsQixZQUFZO0lBQ1osQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFFLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxNQUFPO0lBQzlFLENBQUM7SUFFRCxNQUFNO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxVQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxNQUFPO0lBQzVFLENBQUM7SUFFRCx3QkFBd0I7UUFDcEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBM0JRLGdCQUFnQiw0Q0FJYixnQkFBZ0I7bUhBSm5CLGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUtRLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHtMb2dpblNlcnZpY2VDbGFzc30gZnJvbSBcIi4vbG9naW4tc2VydmljZS5jbGFzc1wiO1xuaW1wb3J0IHtTRVRUSU5HU19TRVJWSUNFfSBmcm9tIFwiLi9zZXR0aW5ncy5zZXJ2aWNlXCI7XG5pbXBvcnQge1NldHRpbmdzU2VydmljZUNsYXNzfSBmcm9tIFwiLi9zZXR0aW5ncy1zZXJ2aWNlLmNsYXNzXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vZmVhdHVyZXMvbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5vb3BMb2dpblNlcnZpY2UgZXh0ZW5kcyBMb2dpblNlcnZpY2VDbGFzcyB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgb3ZlcnJpZGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgQEluamVjdChTRVRUSU5HU19TRVJWSUNFKSBvdmVycmlkZSBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZUNsYXNzLFxuICAgICAgICBvdmVycmlkZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgb3ZlcnJpZGUgZ3Jvd2xlclNlcnZpY2U6IEdyb3dsZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGh0dHBDbGllbnQsIHNldHRpbmdzU2VydmljZSwgcm91dGVyLCBncm93bGVyU2VydmljZSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgaW5pdCgpIHt9XG5cbiAgICBjbGVhclNlc3Npb24oKSB7XG4gICAgfVxuXG4gICAgbG9naW4ocHJlZml4OiBzdHJpbmcsIHVybDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBpc1Rlc3Q/KSB7XG4gICAgfVxuXG4gICAgbG9nb3V0KCkge1xuICAgIH1cblxuICAgIG9ic2VydmVMb2dpbihzZXJ2aWNlVXJsOiBzdHJpbmcsIHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGlzVGVzdD8pIHtcbiAgICB9XG5cbiAgICBjaGVja09yaWdpbkZvckNvbnRyb2xsZXIoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG59XG4iXX0=
|