@mediusinc/mng-commons 6.0.0-rc.4 → 6.0.0-rc.6
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/core/components/notification/notification-wrapper.component.d.ts +4 -4
- package/core/error/error.model.d.ts +4 -4
- package/core/helpers/notification.d.ts +2 -2
- package/core/provide.d.ts +3 -3
- package/core/styles/style-constants.d.ts +9 -8
- package/core/styles/style.model.d.ts +2 -1
- package/fesm2022/mediusinc-mng-commons-core.mjs +91 -104
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs +8 -9
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +149 -49
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DTSBP9WQ.mjs +31 -0
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DTSBP9WQ.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-JZpyiDIL.mjs +2118 -0
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-JZpyiDIL.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table.mjs +1 -2154
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +97 -49
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +340 -309
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
- package/form/api/index.d.ts +1 -0
- package/form/api/models/empty-value.model.d.ts +7 -0
- package/form/components/autocomplete/autocomplete.component.d.ts +1 -2
- package/form/components/date-range/date-range.component.d.ts +4 -3
- package/form/components/dropdown/dropdown.component.d.ts +3 -2
- package/form/components/number-range/number-range.component.d.ts +3 -2
- package/form/directives/input-empty-value.directive.d.ts +40 -0
- package/form/directives/input-trim.directive.d.ts +3 -5
- package/form/index.d.ts +1 -0
- package/i18n/en.json +57 -8
- package/i18n/sl.json +1 -3
- package/package.json +16 -42
- package/provide.d.ts +2 -2
- package/table/components/column-toggle/column-toggle.component.d.ts +12 -0
- package/table/components/filter/filter-form/filter-form.component.d.ts +2 -2
- package/table/components/table/table.component.d.ts +0 -1
- package/table/helpers/filters.d.ts +3 -2
- package/table/helpers/notification.d.ts +2 -2
- package/table/services/table-metadata.service.d.ts +3 -3
- package/tableview/action/components/action/action.component.d.ts +1 -0
- package/tableview/action/components/editor/action-editor.component.d.ts +1 -1
- package/tableview/action/components/table/action-table.component.d.ts +2 -1
- package/tableview/action/helpers/notification.d.ts +3 -3
- package/tableview/action/models/execution/action-context.model.d.ts +2 -2
- package/tableview/action/services/action-executor.service.d.ts +1 -1
- package/tableview/api/action/models/execution/action-context.model.d.ts +2 -2
- package/tableview/api/editor/descriptors/editor.descriptor.d.ts +5 -0
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +14 -10
- package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +10 -0
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +36 -9
- package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +1 -1
- package/tableview/api/editor/models/field-action-context.model.d.ts +1 -1
- package/tableview/api/editor/models/field.model.d.ts +1 -2
- package/tableview/api/editor/models/form-editor.interface.d.ts +2 -2
- package/tableview/api/editor/models/formly-custom-field.model.d.ts +1 -1
- package/tableview/api/editor/models/formly-field.model.d.ts +2 -2
- package/tableview/editor/components/editor/form-editor.component.d.ts +2 -2
- package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +1 -1
- package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +2 -1
- package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +4 -6
- package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -2
- package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +2 -2
- package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +8 -15
- package/tableview/editor/components/formly/fields/formly-group-type.abstract.component.d.ts +7 -0
- package/tableview/editor/components/formly/fields/formly-type.abstract.component.d.ts +20 -0
- package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +11 -4
- package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +2 -1
- package/tableview/editor/helpers/formly-config.d.ts +1 -1
- package/tableview/editor/helpers/notification.d.ts +3 -3
- package/tableview/editor/models/formly-config.model.d.ts +10 -1
- package/tableview/editor/models/formly.model.d.ts +23 -0
- package/tableview/editor/services/form-editor.service.d.ts +2 -2
- package/tableview/tableview/router/tableview-route-builder.d.ts +10 -3
- package/tableview/tableview/services/tableview-feature-config.token.d.ts +1 -1
- package/version-info.json +3 -3
- package/esm2022/core/action/action-data.model.mjs +0 -2
- package/esm2022/core/action/action-parameters.model.mjs +0 -2
- package/esm2022/core/components/notification/notification-wrapper.component.mjs +0 -50
- package/esm2022/core/data-list/data-list-params-helpers.mjs +0 -465
- package/esm2022/core/data-list/data-list.model.mjs +0 -2
- package/esm2022/core/data-list/filter-match.model.mjs +0 -105
- package/esm2022/core/data-list/filter-metadata.model.mjs +0 -2
- package/esm2022/core/data-providers/base.data-provider.mjs +0 -16
- package/esm2022/core/data-providers/lookup.data-provider.mjs +0 -2
- package/esm2022/core/descriptors/action.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/column.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/editor.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/enum.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/filter.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/lookup.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/model.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/table.descriptor.mjs +0 -2
- package/esm2022/core/descriptors/tableview.descriptor.mjs +0 -2
- package/esm2022/core/directives/component.directive.mjs +0 -75
- package/esm2022/core/directives/rerender.directive.mjs +0 -25
- package/esm2022/core/directives/template.directive.mjs +0 -29
- package/esm2022/core/enum/enum-helpers.mjs +0 -90
- package/esm2022/core/enum/enum.model.mjs +0 -2
- package/esm2022/core/error/error-handler.mjs +0 -20
- package/esm2022/core/error/error-helpers.mjs +0 -273
- package/esm2022/core/error/error.model.mjs +0 -33
- package/esm2022/core/helpers/coercion.mjs +0 -55
- package/esm2022/core/helpers/date.mjs +0 -119
- package/esm2022/core/helpers/notification.mjs +0 -21
- package/esm2022/core/helpers/number.mjs +0 -19
- package/esm2022/core/helpers/object.mjs +0 -152
- package/esm2022/core/helpers/route.mjs +0 -58
- package/esm2022/core/helpers/string.mjs +0 -57
- package/esm2022/core/helpers/templates.mjs +0 -4
- package/esm2022/core/helpers/type-helpers.mjs +0 -2
- package/esm2022/core/i18n/i18n-common.mjs +0 -24
- package/esm2022/core/i18n/i18n-error.mjs +0 -29
- package/esm2022/core/i18n/i18n-type.mjs +0 -46
- package/esm2022/core/index.mjs +0 -107
- package/esm2022/core/log/log-publisher-console.service.mjs +0 -40
- package/esm2022/core/log/log.model.mjs +0 -10
- package/esm2022/core/log/logger.service.mjs +0 -131
- package/esm2022/core/mediusinc-mng-commons-core.mjs +0 -5
- package/esm2022/core/models/class-attribute.model.mjs +0 -2
- package/esm2022/core/models/class-service.model.mjs +0 -2
- package/esm2022/core/models/getter.model.mjs +0 -2
- package/esm2022/core/models/i18n.model.mjs +0 -2
- package/esm2022/core/models/menu.model.mjs +0 -2
- package/esm2022/core/models/user.model.mjs +0 -2
- package/esm2022/core/models/version.model.mjs +0 -2
- package/esm2022/core/pipes/boolean.pipe.mjs +0 -34
- package/esm2022/core/pipes/class-map.pipe.mjs +0 -23
- package/esm2022/core/pipes/enum.pipe.mjs +0 -38
- package/esm2022/core/pipes/enumerate-async.pipe.mjs +0 -36
- package/esm2022/core/pipes/enumerate.pipe.mjs +0 -49
- package/esm2022/core/pipes/getter.pipe.mjs +0 -21
- package/esm2022/core/pipes/i18n-property.pipe.mjs +0 -19
- package/esm2022/core/pipes/json-path.pipe.mjs +0 -25
- package/esm2022/core/pipes/parametrize.pipe.mjs +0 -86
- package/esm2022/core/pipes/template.pipe.mjs +0 -25
- package/esm2022/core/provide.mjs +0 -79
- package/esm2022/core/reactivity/effect.mjs +0 -22
- package/esm2022/core/reflect/type-enum-decorator.mjs +0 -12
- package/esm2022/core/reflect/type-enum-metadata.mjs +0 -62
- package/esm2022/core/registry/registry.model.mjs +0 -2
- package/esm2022/core/registry/type-registry.mjs +0 -106
- package/esm2022/core/router/route-builder.mjs +0 -431
- package/esm2022/core/router/router.model.mjs +0 -2
- package/esm2022/core/router/routes-builder.mjs +0 -52
- package/esm2022/core/rxjs/map-data-list-result-operator.mjs +0 -22
- package/esm2022/core/security/permission-helpers.mjs +0 -14
- package/esm2022/core/security/permission.guard.mjs +0 -15
- package/esm2022/core/security/permission.service.mjs +0 -101
- package/esm2022/core/security/permissions.model.mjs +0 -93
- package/esm2022/core/services/commons-configuration.service.mjs +0 -189
- package/esm2022/core/services/commons-init.service.mjs +0 -111
- package/esm2022/core/services/commons-router.service.mjs +0 -181
- package/esm2022/core/services/commons-storage.service.mjs +0 -31
- package/esm2022/core/services/commons.service.mjs +0 -324
- package/esm2022/core/services/providers/commons-init.provider.mjs +0 -4
- package/esm2022/core/services/tokens/browser-storage.token.mjs +0 -3
- package/esm2022/core/services/tokens/commons-init.token.mjs +0 -3
- package/esm2022/core/services/tokens/log-publisher.token.mjs +0 -3
- package/esm2022/core/services/tokens/module-config.token.mjs +0 -3
- package/esm2022/core/styles/style-constants.mjs +0 -11
- package/esm2022/core/styles/style.model.mjs +0 -20
- package/esm2022/filter/descriptors/filter-generic.descriptor.mjs +0 -31
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +0 -168
- package/esm2022/filter/descriptors/filter.descriptor.mjs +0 -421
- package/esm2022/filter/index.mjs +0 -8
- package/esm2022/filter/mediusinc-mng-commons-filter.mjs +0 -5
- package/esm2022/filter/models/filter-generic-property.model.mjs +0 -2
- package/esm2022/filter/models/filter.model.mjs +0 -20
- package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +0 -15
- package/esm2022/form/api/data-providers/lookup.data-provider.mjs +0 -15
- package/esm2022/form/api/descriptors/action-button.descriptor.mjs +0 -56
- package/esm2022/form/api/descriptors/button-style.builder.mjs +0 -153
- package/esm2022/form/api/index.mjs +0 -10
- package/esm2022/form/api/mediusinc-mng-commons-form-api.mjs +0 -5
- package/esm2022/form/api/models/button.model.mjs +0 -2
- package/esm2022/form/api/models/trim.model.mjs +0 -2
- package/esm2022/form/components/autocomplete/autocomplete.component.mjs +0 -436
- package/esm2022/form/components/date-range/date-range.component.mjs +0 -147
- package/esm2022/form/components/dropdown/dropdown.component.mjs +0 -372
- package/esm2022/form/components/number-range/number-range.component.mjs +0 -123
- package/esm2022/form/directives/input-trim.directive.mjs +0 -50
- package/esm2022/form/index.mjs +0 -8
- package/esm2022/form/mediusinc-mng-commons-form.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/mediusinc-mng-commons.mjs +0 -5
- package/esm2022/model/class/data-providers/base-from-class-data-provider.factory.mjs +0 -5
- package/esm2022/model/class/descriptors/model-class.descriptor.mjs +0 -28
- package/esm2022/model/class/descriptors/type-class.descriptor.mjs +0 -6
- package/esm2022/model/class/helpers/model.mjs +0 -53
- package/esm2022/model/class/index.mjs +0 -8
- package/esm2022/model/class/mediusinc-mng-commons-model-class.mjs +0 -5
- package/esm2022/model/data-providers/base-from-type-data-provider.factory.mjs +0 -13
- package/esm2022/model/descriptors/enum.descriptor.mjs +0 -28
- package/esm2022/model/descriptors/model.descriptor.mjs +0 -53
- package/esm2022/model/descriptors/type.descriptor.mjs +0 -7
- package/esm2022/model/helpers/i18n.mjs +0 -47
- package/esm2022/model/index.mjs +0 -9
- package/esm2022/model/mediusinc-mng-commons-model.mjs +0 -5
- package/esm2022/provide.mjs +0 -6
- package/esm2022/table/api/class/class-table-attribute-converter.mjs +0 -80
- package/esm2022/table/api/class/class-table-attribute.model.mjs +0 -2
- package/esm2022/table/api/class/class-table-data-provider.factory.mjs +0 -5
- package/esm2022/table/api/class/class-table-descriptor-helpers.mjs +0 -99
- package/esm2022/table/api/class/class-table-descriptor.factory.mjs +0 -21
- package/esm2022/table/api/class/index.mjs +0 -6
- package/esm2022/table/api/class/mediusinc-mng-commons-table-api-class.mjs +0 -5
- package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +0 -15
- package/esm2022/table/api/data-providers/table.data-provider.mjs +0 -33
- package/esm2022/table/api/descriptors/column.descriptor.mjs +0 -475
- package/esm2022/table/api/descriptors/sort.descriptor.mjs +0 -67
- package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +0 -22
- package/esm2022/table/api/descriptors/table.descriptor.mjs +0 -1116
- package/esm2022/table/api/helpers/column-converter.mjs +0 -25
- package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +0 -7
- package/esm2022/table/api/index.mjs +0 -19
- package/esm2022/table/api/mediusinc-mng-commons-table-api.mjs +0 -5
- package/esm2022/table/api/models/column-value.model.mjs +0 -2
- package/esm2022/table/api/models/column.model.mjs +0 -21
- package/esm2022/table/api/models/row-expandable-component.model.mjs +0 -2
- package/esm2022/table/api/models/table-columns.model.mjs +0 -2
- package/esm2022/table/api/models/table-event.model.mjs +0 -2
- package/esm2022/table/api/models/table.model.mjs +0 -21
- package/esm2022/table/components/column-filter/column-filter.component.mjs +0 -389
- package/esm2022/table/components/column-value/column-value.component.mjs +0 -78
- package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +0 -55
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +0 -226
- package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +0 -219
- package/esm2022/table/components/table/table.component.mjs +0 -319
- package/esm2022/table/helpers/filters.mjs +0 -312
- package/esm2022/table/helpers/notification.mjs +0 -21
- package/esm2022/table/helpers/table-layout-prefs.mjs +0 -10
- package/esm2022/table/helpers/table.mjs +0 -24
- package/esm2022/table/index.mjs +0 -24
- package/esm2022/table/mediusinc-mng-commons-table.mjs +0 -5
- package/esm2022/table/models/column-preferences.model.mjs +0 -2
- package/esm2022/table/models/filter.model.mjs +0 -2
- package/esm2022/table/pipes/filter-value.pipe.mjs +0 -77
- package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +0 -27
- package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +0 -25
- package/esm2022/table/provide.mjs +0 -19
- package/esm2022/table/services/table-data.service.mjs +0 -194
- package/esm2022/table/services/table-feature-config.token.mjs +0 -3
- package/esm2022/table/services/table-metadata.service.mjs +0 -136
- package/esm2022/table/services/table-preferences.service.mjs +0 -142
- package/esm2022/tableview/action/components/action/action.component.mjs +0 -277
- package/esm2022/tableview/action/components/editor/action-editor.component.mjs +0 -86
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +0 -428
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +0 -35
- package/esm2022/tableview/action/components/route/action-route.component.mjs +0 -146
- package/esm2022/tableview/action/components/table/action-table.component.mjs +0 -102
- package/esm2022/tableview/action/guards/unsaved-changes.guard.mjs +0 -4
- package/esm2022/tableview/action/helpers/action-execution.mjs +0 -25
- package/esm2022/tableview/action/helpers/i18n.mjs +0 -102
- package/esm2022/tableview/action/helpers/notification.mjs +0 -78
- package/esm2022/tableview/action/helpers/styles.mjs +0 -32
- package/esm2022/tableview/action/models/action-editor-dialog-data.model.mjs +0 -2
- package/esm2022/tableview/action/models/can-component-deactivate.model.mjs +0 -2
- package/esm2022/tableview/action/models/execution/action-context.model.mjs +0 -64
- package/esm2022/tableview/action/models/execution/action-instance.model.mjs +0 -169
- package/esm2022/tableview/action/services/action-error-mapper.service.mjs +0 -20
- package/esm2022/tableview/action/services/action-executor.service.mjs +0 -777
- package/esm2022/tableview/action/services/component-action-executor.service.mjs +0 -19
- package/esm2022/tableview/action/services/data-provider-executor.service.mjs +0 -41
- package/esm2022/tableview/action/services/navigation.service.mjs +0 -53
- package/esm2022/tableview/action/services/providers/provide-action-executor.mjs +0 -9
- package/esm2022/tableview/action/services/providers/provide-view-container.mjs +0 -17
- package/esm2022/tableview/action/services/root-action-executor.service.mjs +0 -18
- package/esm2022/tableview/action/services/tokens/action-editor.token.mjs +0 -3
- package/esm2022/tableview/action/services/view-container.service.mjs +0 -40
- package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +0 -28
- package/esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.mjs +0 -30
- package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +0 -223
- package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +0 -32
- package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +0 -74
- package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +0 -302
- package/esm2022/tableview/api/action/descriptors/editor-action-descriptor.factory.mjs +0 -21
- package/esm2022/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.mjs +0 -21
- package/esm2022/tableview/api/action/descriptors/table-action-descriptor.factory.mjs +0 -37
- package/esm2022/tableview/api/action/descriptors/table-action-editor-descriptor.factory.mjs +0 -40
- package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +0 -100
- package/esm2022/tableview/api/action/models/action-component.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +0 -2
- package/esm2022/tableview/api/action/models/action-editor.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/action-error.model.mjs +0 -14
- package/esm2022/tableview/api/action/models/action.type.mjs +0 -26
- package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/execution/action-execution-error.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/execution/action-instance-state.model.mjs +0 -32
- package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/execution/view-container.model.mjs +0 -2
- package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +0 -11
- package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +0 -28
- package/esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.mjs +0 -3
- package/esm2022/tableview/api/class/editor/class-editor-attribute-converter.mjs +0 -85
- package/esm2022/tableview/api/class/editor/class-editor-attribute.model.mjs +0 -2
- package/esm2022/tableview/api/class/editor/class-editor-data-provider.factory.mjs +0 -5
- package/esm2022/tableview/api/class/editor/class-editor-descriptor-helpers.mjs +0 -95
- package/esm2022/tableview/api/class/editor/class-editor-descriptor.factory.mjs +0 -21
- package/esm2022/tableview/api/class/index.mjs +0 -13
- package/esm2022/tableview/api/class/mediusinc-mng-commons-tableview-api-class.mjs +0 -5
- package/esm2022/tableview/api/class/tableview/class-tableview-attribute-converter.mjs +0 -35
- package/esm2022/tableview/api/class/tableview/class-tableview-attribute.model.mjs +0 -2
- package/esm2022/tableview/api/class/tableview/class-tableview-data-provider.factory.mjs +0 -5
- package/esm2022/tableview/api/class/tableview/class-tableview-descriptor-helpers.mjs +0 -111
- package/esm2022/tableview/api/class/tableview/class-tableview-descriptor.factory.mjs +0 -26
- package/esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.mjs +0 -15
- package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +0 -114
- package/esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.mjs +0 -15
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +0 -437
- package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +0 -51
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +0 -314
- package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +0 -103
- package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +0 -211
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +0 -142
- package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +0 -25
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +0 -402
- package/esm2022/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.mjs +0 -51
- package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/editor.model.mjs +0 -9
- package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/field-validation.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/field.model.mjs +0 -57
- package/esm2022/tableview/api/editor/models/form-editor.event.mjs +0 -28
- package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +0 -2
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +0 -70
- package/esm2022/tableview/api/editor/models/formly-field.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/formly-options.model.mjs +0 -2
- package/esm2022/tableview/api/editor/models/radio.model.mjs +0 -2
- package/esm2022/tableview/api/index.mjs +0 -76
- package/esm2022/tableview/api/mediusinc-mng-commons-tableview-api.mjs +0 -5
- package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +0 -18
- package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +0 -84
- package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +0 -34
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +0 -377
- package/esm2022/tableview/api/tableview/helpers/files-export.mjs +0 -34
- package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +0 -26
- package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +0 -7
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +0 -324
- package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +0 -319
- package/esm2022/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.mjs +0 -2
- package/esm2022/tableview/api/tableview/models/tableview-descriptor-helper.type.mjs +0 -2
- package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +0 -2
- package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +0 -2
- package/esm2022/tableview/editor/components/editor/auto-save-status/auto-save-status.component.mjs +0 -82
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +0 -480
- package/esm2022/tableview/editor/components/formly/constants.mjs +0 -2
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +0 -66
- package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +0 -47
- package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +0 -39
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +0 -165
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +0 -42
- package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +0 -34
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +0 -211
- package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +0 -23
- package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +0 -195
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +0 -239
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +0 -205
- package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -28
- package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +0 -46
- package/esm2022/tableview/editor/components/formly/pipes/formly-field-label.pipe.mjs +0 -19
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +0 -33
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +0 -59
- package/esm2022/tableview/editor/helpers/editor-autosave.mjs +0 -49
- package/esm2022/tableview/editor/helpers/editor-field.mjs +0 -39
- package/esm2022/tableview/editor/helpers/editor-formly.mjs +0 -388
- package/esm2022/tableview/editor/helpers/editor-validators.mjs +0 -25
- package/esm2022/tableview/editor/helpers/field-create.mjs +0 -21
- package/esm2022/tableview/editor/helpers/formly-config.mjs +0 -260
- package/esm2022/tableview/editor/helpers/notification.mjs +0 -11
- package/esm2022/tableview/editor/models/editor-auto-save-preview.model.mjs +0 -2
- package/esm2022/tableview/editor/models/formly-config.model.mjs +0 -2
- package/esm2022/tableview/editor/services/form-editor.service.mjs +0 -96
- package/esm2022/tableview/editor/services/formly-config.provider.mjs +0 -31
- package/esm2022/tableview/index.mjs +0 -67
- package/esm2022/tableview/mediusinc-mng-commons-tableview.mjs +0 -5
- package/esm2022/tableview/provide.mjs +0 -105
- package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +0 -15
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +0 -59
- package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +0 -175
- package/esm2022/tableview/tableview/services/tableview-feature-config.token.mjs +0 -3
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { Injectable, Injector, inject } from '@angular/core';
|
|
2
|
-
import { toObservable } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { combineLatest, of } from 'rxjs';
|
|
4
|
-
import { map } from 'rxjs/operators';
|
|
5
|
-
import { LoggerService } from '../log/logger.service';
|
|
6
|
-
import { CommonsService } from '../services/commons.service';
|
|
7
|
-
import { isPermitted } from './permission-helpers';
|
|
8
|
-
import { PermissionTypeEnum } from './permissions.model';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
export class PermissionService {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.injector = inject(Injector);
|
|
13
|
-
this.commons = inject(CommonsService);
|
|
14
|
-
this.logger = inject(LoggerService).create('AuthorizationService');
|
|
15
|
-
this.userRoles$ = toObservable(this.commons.userRoles);
|
|
16
|
-
}
|
|
17
|
-
canActivateRoute(permissions, route) {
|
|
18
|
-
switch (permissions.authorizationType) {
|
|
19
|
-
case PermissionTypeEnum.All:
|
|
20
|
-
return this.canActivateRouteAll(permissions, route);
|
|
21
|
-
case PermissionTypeEnum.Any:
|
|
22
|
-
return this.canActivateRouteAny(permissions, route);
|
|
23
|
-
case PermissionTypeEnum.Service:
|
|
24
|
-
return this.canActivateRouteService(permissions, route);
|
|
25
|
-
default:
|
|
26
|
-
return this.userRoles$.pipe(map(ur => isPermitted(permissions, ur)));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
canActivateRouteAll(permission, route) {
|
|
30
|
-
return combineLatest(permission.permissions.map(p => this.canActivateRoute(p, route))).pipe(map(res => res.every(ip => ip === true)));
|
|
31
|
-
}
|
|
32
|
-
canActivateRouteAny(permissions, route) {
|
|
33
|
-
return combineLatest(permissions.permissions.map(p => this.canActivateRoute(p, route))).pipe(map(res => res.some(ip => ip === true)));
|
|
34
|
-
}
|
|
35
|
-
canActivateRouteService(permission, route) {
|
|
36
|
-
const serviceInstance = this.injector.get(permission.service);
|
|
37
|
-
if (!serviceInstance) {
|
|
38
|
-
this.logger.debug(`WARNING: Service instance could not be retrieved for type ${permission.service}`);
|
|
39
|
-
return of(false);
|
|
40
|
-
}
|
|
41
|
-
return serviceInstance.canActivateRoute(route);
|
|
42
|
-
}
|
|
43
|
-
isMenuItemVisible(permissions, menuItem) {
|
|
44
|
-
switch (permissions.authorizationType) {
|
|
45
|
-
case PermissionTypeEnum.All:
|
|
46
|
-
return this.isMenuItemVisibleAll(permissions, menuItem);
|
|
47
|
-
case PermissionTypeEnum.Any:
|
|
48
|
-
return this.isMenuItemVisibleAny(permissions, menuItem);
|
|
49
|
-
case PermissionTypeEnum.Service:
|
|
50
|
-
return this.isMenuItemVisibleService(permissions, menuItem);
|
|
51
|
-
default:
|
|
52
|
-
return this.userRoles$.pipe(map(role => isPermitted(permissions, role)));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
isMenuItemVisibleAll(permission, menuItem) {
|
|
56
|
-
return combineLatest(permission.permissions.map(p => this.isMenuItemVisible(p, menuItem))).pipe(map(res => res.every(ip => ip === true)));
|
|
57
|
-
}
|
|
58
|
-
isMenuItemVisibleAny(permission, menuItem) {
|
|
59
|
-
return combineLatest(permission.permissions.map(p => this.isMenuItemVisible(p, menuItem))).pipe(map(res => res.some(ip => ip === true)));
|
|
60
|
-
}
|
|
61
|
-
isMenuItemVisibleService(permission, menuItem) {
|
|
62
|
-
const serviceInstance = this.injector.get(permission.service);
|
|
63
|
-
if (!serviceInstance) {
|
|
64
|
-
this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);
|
|
65
|
-
return of(false);
|
|
66
|
-
}
|
|
67
|
-
return serviceInstance.isMenuitemVisible(menuItem);
|
|
68
|
-
}
|
|
69
|
-
isActionVisible(permissions, actionCtx, route) {
|
|
70
|
-
switch (permissions.authorizationType) {
|
|
71
|
-
case PermissionTypeEnum.All:
|
|
72
|
-
return this.isActionVisibleAll(permissions, actionCtx, route);
|
|
73
|
-
case PermissionTypeEnum.Any:
|
|
74
|
-
return this.isActionVisibleAny(permissions, actionCtx, route);
|
|
75
|
-
case PermissionTypeEnum.Service:
|
|
76
|
-
return this.isActionVisibleService(permissions, actionCtx, route);
|
|
77
|
-
default:
|
|
78
|
-
return this.userRoles$.pipe(map(ur => isPermitted(permissions, ur)));
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
isActionVisibleAll(permission, actionCtx, route) {
|
|
82
|
-
return combineLatest(permission.permissions.map(p => this.isActionVisible(p, actionCtx, route))).pipe(map(res => res.every(ip => ip === true)));
|
|
83
|
-
}
|
|
84
|
-
isActionVisibleAny(permission, actionCtx, route) {
|
|
85
|
-
return combineLatest(permission.permissions.map(p => this.isActionVisible(p, actionCtx, route))).pipe(map(res => res.some(ip => ip === true)));
|
|
86
|
-
}
|
|
87
|
-
isActionVisibleService(permission, actionCtx, route) {
|
|
88
|
-
const serviceInstance = this.injector.get(permission.service);
|
|
89
|
-
if (!serviceInstance) {
|
|
90
|
-
this.logger.debug(`WARNING: Service instance could not be retreived for type ${permission.service}`);
|
|
91
|
-
return of(false);
|
|
92
|
-
}
|
|
93
|
-
return serviceInstance.isActionVisible(actionCtx, route);
|
|
94
|
-
}
|
|
95
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PermissionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
96
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PermissionService }); }
|
|
97
|
-
}
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: PermissionService, decorators: [{
|
|
99
|
-
type: Injectable
|
|
100
|
-
}] });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvc2VjdXJpdHkvcGVybWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUFhLGFBQWEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBeUMsa0JBQWtCLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHNUcsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUV2RSxlQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7S0EyRjdEO0lBekZVLGdCQUFnQixDQUFDLFdBQXlCLEVBQUUsS0FBOEI7UUFDN0UsUUFBUSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLEdBQUc7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixD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QUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25KLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxVQUErQixFQUFFLFNBQTZDLEVBQUUsS0FBOEI7UUFDekksTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2REFBNkQsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDckcsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0EvRlEsaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b09ic2VydmFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uL2xvZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7aXNQZXJtaXR0ZWR9IGZyb20gJy4vcGVybWlzc2lvbi1oZWxwZXJzJztcbmltcG9ydCB7QVBlcm1pc3Npb25zLCBJQWN0aW9uQ29udGV4dFZhbGlkYXRpb24sIFBlcm1pc3Npb25UeXBlRW51bSwgUGVybWlzc2lvbnN9IGZyb20gJy4vcGVybWlzc2lvbnMubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9ucyA9IGluamVjdChDb21tb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTG9nZ2VyU2VydmljZSkuY3JlYXRlKCdBdXRob3JpemF0aW9uU2VydmljZScpO1xuXG4gICAgcHJpdmF0ZSB1c2VyUm9sZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMuY29tbW9ucy51c2VyUm9sZXMpO1xuXG4gICAgcHVibGljIGNhbkFjdGl2YXRlUm91dGUocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucywgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHN3aXRjaCAocGVybWlzc2lvbnMuYXV0aG9yaXphdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZVJvdXRlQWxsKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFsbCwgcm91dGUpO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQW55OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlUm91dGVBbnkocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQW55LCByb3V0ZSk7XG4gICAgICAgICAgICBjYXNlIFBlcm1pc3Npb25UeXBlRW51bS5TZXJ2aWNlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlUm91dGVTZXJ2aWNlKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLlNlcnZpY2UsIHJvdXRlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclJvbGVzJC5waXBlKG1hcCh1ciA9PiBpc1Blcm1pdHRlZChwZXJtaXNzaW9ucywgdXIpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkFjdGl2YXRlUm91dGVBbGwocGVybWlzc2lvbjogUGVybWlzc2lvbnMuQWxsLCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGVybWlzc2lvbi5wZXJtaXNzaW9ucy5tYXAocCA9PiB0aGlzLmNhbkFjdGl2YXRlUm91dGUocCwgcm91dGUpKSkucGlwZShtYXAocmVzID0+IHJlcy5ldmVyeShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkFjdGl2YXRlUm91dGVBbnkocGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLkFueSwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHBlcm1pc3Npb25zLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuY2FuQWN0aXZhdGVSb3V0ZShwLCByb3V0ZSkpKS5waXBlKG1hcChyZXMgPT4gcmVzLnNvbWUoaXAgPT4gaXAgPT09IHRydWUpKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5BY3RpdmF0ZVJvdXRlU2VydmljZShwZXJtaXNzaW9uOiBQZXJtaXNzaW9ucy5TZXJ2aWNlLCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuY2FuQWN0aXZhdGVSb3V0ZShyb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzTWVudUl0ZW1WaXNpYmxlKHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMsIG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgc3dpdGNoIChwZXJtaXNzaW9ucy5hdXRob3JpemF0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQWxsOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzTWVudUl0ZW1WaXNpYmxlQWxsKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFsbCwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQW55OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzTWVudUl0ZW1WaXNpYmxlQW55KHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFueSwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uU2VydmljZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc01lbnVJdGVtVmlzaWJsZVNlcnZpY2UocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuU2VydmljZSwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyUm9sZXMkLnBpcGUobWFwKHJvbGUgPT4gaXNQZXJtaXR0ZWQocGVybWlzc2lvbnMsIHJvbGUpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTWVudUl0ZW1WaXNpYmxlQWxsKHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFsbCwgbWVudUl0ZW06IENvbW1vbnNNZW51SXRlbSkge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChwZXJtaXNzaW9uLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuaXNNZW51SXRlbVZpc2libGUocCwgbWVudUl0ZW0pKSkucGlwZShtYXAocmVzID0+IHJlcy5ldmVyeShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTWVudUl0ZW1WaXNpYmxlQW55KHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFueSwgbWVudUl0ZW06IENvbW1vbnNNZW51SXRlbSkge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChwZXJtaXNzaW9uLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuaXNNZW51SXRlbVZpc2libGUocCwgbWVudUl0ZW0pKSkucGlwZShtYXAocmVzID0+IHJlcy5zb21lKGlwID0+IGlwID09PSB0cnVlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNZW51SXRlbVZpc2libGVTZXJ2aWNlKHBlcm1pc3Npb246IFBlcm1pc3Npb25zLlNlcnZpY2UsIG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0pIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyZWl2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuaXNNZW51aXRlbVZpc2libGUobWVudUl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0FjdGlvblZpc2libGUocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucywgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPGFueSwgYW55Piwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHN3aXRjaCAocGVybWlzc2lvbnMuYXV0aG9yaXphdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0FjdGlvblZpc2libGVBbGwocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQWxsLCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFueTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0FjdGlvblZpc2libGVBbnkocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQW55LCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLlNlcnZpY2U6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNBY3Rpb25WaXNpYmxlU2VydmljZShwZXJtaXNzaW9ucyBhcyBQZXJtaXNzaW9ucy5TZXJ2aWNlLCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclJvbGVzJC5waXBlKG1hcCh1ciA9PiBpc1Blcm1pdHRlZChwZXJtaXNzaW9ucywgdXIpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uVmlzaWJsZUFsbChwZXJtaXNzaW9uOiBQZXJtaXNzaW9ucy5BbGwsIGFjdGlvbkN0eD86IElBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHBlcm1pc3Npb24ucGVybWlzc2lvbnMubWFwKHAgPT4gdGhpcy5pc0FjdGlvblZpc2libGUocCwgYWN0aW9uQ3R4LCByb3V0ZSkpKS5waXBlKG1hcChyZXMgPT4gcmVzLmV2ZXJ5KGlwID0+IGlwID09PSB0cnVlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3Rpb25WaXNpYmxlQW55KHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFueSwgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24+LCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGVybWlzc2lvbi5wZXJtaXNzaW9ucy5tYXAocCA9PiB0aGlzLmlzQWN0aW9uVmlzaWJsZShwLCBhY3Rpb25DdHgsIHJvdXRlKSkpLnBpcGUobWFwKHJlcyA9PiByZXMuc29tZShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uVmlzaWJsZVNlcnZpY2UocGVybWlzc2lvbjogUGVybWlzc2lvbnMuU2VydmljZSwgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24+LCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyZWl2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuaXNBY3Rpb25WaXNpYmxlKGFjdGlvbkN0eCwgcm91dGUpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
export var PermissionTypeEnum;
|
|
2
|
-
(function (PermissionTypeEnum) {
|
|
3
|
-
PermissionTypeEnum["All"] = "ALL";
|
|
4
|
-
PermissionTypeEnum["Any"] = "ANY";
|
|
5
|
-
PermissionTypeEnum["Rbac"] = "ROLE_BASED_ACCESS_CONTROL";
|
|
6
|
-
PermissionTypeEnum["Service"] = "SERVICE";
|
|
7
|
-
})(PermissionTypeEnum || (PermissionTypeEnum = {}));
|
|
8
|
-
export class APermissions {
|
|
9
|
-
constructor(type) {
|
|
10
|
-
this._authorizationType = type;
|
|
11
|
-
}
|
|
12
|
-
get authorizationType() {
|
|
13
|
-
return this._authorizationType;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export var Permissions;
|
|
17
|
-
(function (Permissions) {
|
|
18
|
-
class All extends APermissions {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(PermissionTypeEnum.All);
|
|
21
|
-
this._permissions = [];
|
|
22
|
-
}
|
|
23
|
-
static of(...permissions) {
|
|
24
|
-
const inst = new All();
|
|
25
|
-
inst.and(...permissions);
|
|
26
|
-
return inst;
|
|
27
|
-
}
|
|
28
|
-
get permissions() {
|
|
29
|
-
return this._permissions;
|
|
30
|
-
}
|
|
31
|
-
and(...permissions) {
|
|
32
|
-
this._permissions.push(...permissions);
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
Permissions.All = All;
|
|
37
|
-
class Any extends APermissions {
|
|
38
|
-
constructor() {
|
|
39
|
-
super(PermissionTypeEnum.Any);
|
|
40
|
-
this._permissions = [];
|
|
41
|
-
}
|
|
42
|
-
static of(...permissions) {
|
|
43
|
-
const inst = new Any();
|
|
44
|
-
inst.or(...permissions);
|
|
45
|
-
return inst;
|
|
46
|
-
}
|
|
47
|
-
get permissions() {
|
|
48
|
-
return this._permissions;
|
|
49
|
-
}
|
|
50
|
-
or(...permissions) {
|
|
51
|
-
this._permissions.push(...permissions);
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
Permissions.Any = Any;
|
|
56
|
-
class Roles extends APermissions {
|
|
57
|
-
constructor() {
|
|
58
|
-
super(PermissionTypeEnum.Rbac);
|
|
59
|
-
this._roles = [];
|
|
60
|
-
}
|
|
61
|
-
static of(...roles) {
|
|
62
|
-
const inst = new Roles();
|
|
63
|
-
inst.or(...roles);
|
|
64
|
-
return inst;
|
|
65
|
-
}
|
|
66
|
-
get roles() {
|
|
67
|
-
return this._roles;
|
|
68
|
-
}
|
|
69
|
-
and(...roles) {
|
|
70
|
-
if (this._roles.length === 0) {
|
|
71
|
-
this._roles.push([]);
|
|
72
|
-
}
|
|
73
|
-
this._roles[this._roles.length - 1].push(...roles);
|
|
74
|
-
return this;
|
|
75
|
-
}
|
|
76
|
-
or(...roles) {
|
|
77
|
-
this._roles.push(...roles.map(s => [s]));
|
|
78
|
-
return this;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
Permissions.Roles = Roles;
|
|
82
|
-
class Service extends APermissions {
|
|
83
|
-
constructor(service) {
|
|
84
|
-
super(PermissionTypeEnum.Service);
|
|
85
|
-
this.service = service;
|
|
86
|
-
}
|
|
87
|
-
static of(service) {
|
|
88
|
-
return new Service(service);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
Permissions.Service = Service;
|
|
92
|
-
})(Permissions || (Permissions = {}));
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9zZWN1cml0eS9wZXJtaXNzaW9ucy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzFCLGlDQUFXLENBQUE7SUFDWCxpQ0FBVyxDQUFBO0lBQ1gsd0RBQWtDLENBQUE7SUFDbEMseUNBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQUxXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFLN0I7QUF1Q0QsTUFBTSxPQUFnQixZQUFZO0lBRzlCLFlBQVksSUFBd0I7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztDQUNKO0FBRUQsTUFBTSxLQUFXLFdBQVcsQ0F1RjNCO0FBdkZELFdBQWlCLFdBQVc7SUFDeEIsTUFBYSxHQUFJLFNBQVEsWUFBWTtRQUdqQztZQUNJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUgxQixpQkFBWSxHQUF3QixFQUFFLENBQUM7UUFJL0MsQ0FBQztRQUVNLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFnQztZQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBVyxXQUFXO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3QixDQUFDO1FBRU0sR0FBRyxDQUFDLEdBQUcsV0FBZ0M7WUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0tBQ0o7SUFyQlksZUFBRyxNQXFCZixDQUFBO0lBRUQsTUFBYSxHQUFJLFNBQVEsWUFBWTtRQUdqQztZQUNJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUgxQixpQkFBWSxHQUF3QixFQUFFLENBQUM7UUFJL0MsQ0FBQztRQUVNLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFnQztZQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBVyxXQUFXO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3QixDQUFDO1FBRU0sRUFBRSxDQUFDLEdBQUcsV0FBZ0M7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0tBQ0o7SUFyQlksZUFBRyxNQXFCZixDQUFBO0lBRUQsTUFBYSxLQUFNLFNBQVEsWUFBWTtRQUduQztZQUNJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUgzQixXQUFNLEdBQXlCLEVBQUUsQ0FBQztRQUkxQyxDQUFDO1FBRU0sTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQW9CO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFXLEtBQUs7WUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQztRQUVNLEdBQUcsQ0FBQyxHQUFHLEtBQW9CO1lBQzlCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFTSxFQUFFLENBQUMsR0FBRyxLQUFvQjtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0tBQ0o7SUE3QlksaUJBQUssUUE2QmpCLENBQUE7SUFFRCxNQUFhLE9BQVEsU0FBUSxZQUFZO1FBQ3JDLFlBQW9DLE9BQWlDO1lBQ2pFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQURGLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBRXJFLENBQUM7UUFFTSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWlDO1lBQzlDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsQ0FBQztLQUNKO0lBUlksbUJBQU8sVUFRbkIsQ0FBQTtBQUNMLENBQUMsRUF2RmdCLFdBQVcsS0FBWCxXQUFXLFFBdUYzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3R9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QWN0aW9uUGFyYW1ldGVyc30gZnJvbSAnLi4vYWN0aW9uL2FjdGlvbi1wYXJhbWV0ZXJzLm1vZGVsJztcbmltcG9ydCB7SURhdGFQcm92aWRlcn0gZnJvbSAnLi4vZGF0YS1wcm92aWRlcnMvYmFzZS5kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7SUFjdGlvbkRlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7Q29tbW9uc01lbnVJdGVtfSBmcm9tICcuLi9tb2RlbHMvbWVudS5tb2RlbCc7XG5cbmV4cG9ydCBlbnVtIFBlcm1pc3Npb25UeXBlRW51bSB7XG4gICAgQWxsID0gJ0FMTCcsXG4gICAgQW55ID0gJ0FOWScsXG4gICAgUmJhYyA9ICdST0xFX0JBU0VEX0FDQ0VTU19DT05UUk9MJyxcbiAgICBTZXJ2aWNlID0gJ1NFUlZJQ0UnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPEl0ZW0sIFNlcnZpY2UgPSB1bmRlZmluZWQ+IHtcbiAgICBkZXNjcmlwdG9yOiBJQWN0aW9uRGVzY3JpcHRvcjxJdGVtLCBTZXJ2aWNlPjtcbiAgICBwYXJhbWV0ZXJzOiBBY3Rpb25QYXJhbWV0ZXJzPEl0ZW0+O1xuICAgIHNlcnZpY2VJbnN0YW5jZTogU2VydmljZTtcbiAgICBkYXRhUHJvdmlkZXI/OiBJRGF0YVByb3ZpZGVyPEl0ZW0sIFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQZXJtaXNzaW9uU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcm91dGUgY2FuIGJlIGFjdGl2YXRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdH0gcm91dGUgLSBUaGUgcm91dGUgc25hcHNob3Qgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCByb3V0ZSBmb3IgYWN0aXZhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPGJvb2xlYW4+fSAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBhIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByb3V0ZSBjYW4gYmUgYWN0aXZhdGVkLlxuICAgICAqL1xuICAgIGNhbkFjdGl2YXRlUm91dGUocm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPjsgLy9jaGVjayBndWFyZHNcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIHZpc2liaWxpdHkgb2YgbWVudSBpdGVtLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDb21tb25zTWVudUl0ZW19IG1lbnVJdGVtIC0gVGhlIG1lbnUgaXRlbSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPGJvb2xlYW4+fSAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyBhIGJvb2xlYW4gaW5kaWNhdGluZ1xuICAgICAqIHdoZXRoZXIgdGhlIG1lbnUgaXRlbSBpcyB2aXNpYmxlIG9yIG5vdC5cbiAgICAgKi9cbiAgICBpc01lbnVpdGVtVmlzaWJsZShtZW51SXRlbTogQ29tbW9uc01lbnVJdGVtKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBhY3Rpb24gaXMgdmlzaWJsZSBiYXNlZCBvbiB0aGUgYWN0aW9uIGNvbnRleHQgYW5kIHJvdXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtJQWN0aW9uQ29udGV4dFZhbGlkYXRpb248YW55LCBhbnk+fSBbYWN0aW9uQ3R4XSAtIFRoZSBhY3Rpb24gY29udGV4dCBvYmplY3QgY29udGFpbmluZyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciB2YWxpZGF0aW9uLlxuICAgICAqIEBwYXJhbSB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdH0gW3JvdXRlXSAtIFRoZSBjdXJyZW50IHJvdXRlIHNuYXBzaG90IGNvbnRhaW5pbmcgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgdmFsaWRhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge09ic2VydmFibGU8Ym9vbGVhbj59IC0gQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgYWN0aW9uLlxuICAgICAqL1xuICAgIGlzQWN0aW9uVmlzaWJsZShhY3Rpb25DdHg/OiBJQWN0aW9uQ29udGV4dFZhbGlkYXRpb248YW55LCBhbnk+LCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVBlcm1pc3Npb25zIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hdXRob3JpemF0aW9uVHlwZTogUGVybWlzc2lvblR5cGVFbnVtO1xuXG4gICAgY29uc3RydWN0b3IodHlwZTogUGVybWlzc2lvblR5cGVFbnVtKSB7XG4gICAgICAgIHRoaXMuX2F1dGhvcml6YXRpb25UeXBlID0gdHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGF1dGhvcml6YXRpb25UeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0aG9yaXphdGlvblR5cGU7XG4gICAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBlcm1pc3Npb25zIHtcbiAgICBleHBvcnQgY2xhc3MgQWxsIGV4dGVuZHMgQVBlcm1pc3Npb25zIHtcbiAgICAgICAgcHJpdmF0ZSBfcGVybWlzc2lvbnM6IEFycmF5PEFQZXJtaXNzaW9ucz4gPSBbXTtcblxuICAgICAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgc3VwZXIoUGVybWlzc2lvblR5cGVFbnVtLkFsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIG9mKC4uLnBlcm1pc3Npb25zOiBBcnJheTxBUGVybWlzc2lvbnM+KTogQWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGluc3QgPSBuZXcgQWxsKCk7XG4gICAgICAgICAgICBpbnN0LmFuZCguLi5wZXJtaXNzaW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBnZXQgcGVybWlzc2lvbnMoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgYW5kKC4uLnBlcm1pc3Npb25zOiBBcnJheTxBUGVybWlzc2lvbnM+KTogdGhpcyB7XG4gICAgICAgICAgICB0aGlzLl9wZXJtaXNzaW9ucy5wdXNoKC4uLnBlcm1pc3Npb25zKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0IGNsYXNzIEFueSBleHRlbmRzIEFQZXJtaXNzaW9ucyB7XG4gICAgICAgIHByaXZhdGUgX3Blcm1pc3Npb25zOiBBcnJheTxBUGVybWlzc2lvbnM+ID0gW107XG5cbiAgICAgICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgIHN1cGVyKFBlcm1pc3Npb25UeXBlRW51bS5BbnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBvZiguLi5wZXJtaXNzaW9uczogQXJyYXk8QVBlcm1pc3Npb25zPik6IEFueSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0ID0gbmV3IEFueSgpO1xuICAgICAgICAgICAgaW5zdC5vciguLi5wZXJtaXNzaW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBnZXQgcGVybWlzc2lvbnMoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgb3IoLi4ucGVybWlzc2lvbnM6IEFycmF5PEFQZXJtaXNzaW9ucz4pOiB0aGlzIHtcbiAgICAgICAgICAgIHRoaXMuX3Blcm1pc3Npb25zLnB1c2goLi4ucGVybWlzc2lvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBvcnQgY2xhc3MgUm9sZXMgZXh0ZW5kcyBBUGVybWlzc2lvbnMge1xuICAgICAgICBwcml2YXRlIF9yb2xlczogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBbXTtcblxuICAgICAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgc3VwZXIoUGVybWlzc2lvblR5cGVFbnVtLlJiYWMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBvZiguLi5yb2xlczogQXJyYXk8c3RyaW5nPik6IFJvbGVzIHtcbiAgICAgICAgICAgIGNvbnN0IGluc3QgPSBuZXcgUm9sZXMoKTtcbiAgICAgICAgICAgIGluc3Qub3IoLi4ucm9sZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGluc3Q7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgZ2V0IHJvbGVzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JvbGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGFuZCguLi5yb2xlczogQXJyYXk8c3RyaW5nPik6IHRoaXMge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3JvbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JvbGVzLnB1c2goW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fcm9sZXNbdGhpcy5fcm9sZXMubGVuZ3RoIC0gMV0ucHVzaCguLi5yb2xlcyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvciguLi5yb2xlczogQXJyYXk8c3RyaW5nPik6IHRoaXMge1xuICAgICAgICAgICAgdGhpcy5fcm9sZXMucHVzaCguLi5yb2xlcy5tYXAocyA9PiBbc10pKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0IGNsYXNzIFNlcnZpY2UgZXh0ZW5kcyBBUGVybWlzc2lvbnMge1xuICAgICAgICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBUeXBlPElQZXJtaXNzaW9uU2VydmljZT4pIHtcbiAgICAgICAgICAgIHN1cGVyKFBlcm1pc3Npb25UeXBlRW51bS5TZXJ2aWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgb2Yoc2VydmljZTogVHlwZTxJUGVybWlzc2lvblNlcnZpY2U+KTogU2VydmljZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNlcnZpY2Uoc2VydmljZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { combineLatest, of, tap } from 'rxjs';
|
|
2
|
-
import { catchError, map } from 'rxjs/operators';
|
|
3
|
-
import { throwError } from '../error/error-helpers';
|
|
4
|
-
import { objectDeepMerge } from '../helpers/object';
|
|
5
|
-
export class CommonsConfigurationService {
|
|
6
|
-
static { this._instance = new CommonsConfigurationService(); }
|
|
7
|
-
static get() {
|
|
8
|
-
return CommonsConfigurationService._instance;
|
|
9
|
-
}
|
|
10
|
-
constructor() {
|
|
11
|
-
this.jsonSources = [];
|
|
12
|
-
this.objectSources = [];
|
|
13
|
-
this.configuration = { ...this.projectEnvironment };
|
|
14
|
-
/**
|
|
15
|
-
* returns true if there is no jsonSources
|
|
16
|
-
*/
|
|
17
|
-
this.skipJsonConfigsLoading = () => this.jsonSources === null || this.jsonSources.length === 0;
|
|
18
|
-
/**
|
|
19
|
-
* loads json sources or skips them returning true in both cases
|
|
20
|
-
* used for `skipJsonSourceInit` configuration parameter
|
|
21
|
-
*/
|
|
22
|
-
this.loadJsonConfigurations = () => (this.skipJsonConfigsLoading() ? of(true) : this.loadJsonSources());
|
|
23
|
-
// empty, but needed for private constructor
|
|
24
|
-
}
|
|
25
|
-
init(httpClient, logger) {
|
|
26
|
-
this.http = httpClient;
|
|
27
|
-
this.logger = logger?.create('ConfigurationService');
|
|
28
|
-
return this;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Add commons module config.
|
|
32
|
-
* @param config Module config.
|
|
33
|
-
*/
|
|
34
|
-
addModuleConfigSource(config) {
|
|
35
|
-
this.moduleConfig = config;
|
|
36
|
-
this.mergeConfigs();
|
|
37
|
-
this.logger?.debug(`Module configuration source added.`);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Add project environment source.
|
|
41
|
-
* @param environment Environment.
|
|
42
|
-
*/
|
|
43
|
-
addEnvironmentSource(environment) {
|
|
44
|
-
this.projectEnvironment = environment;
|
|
45
|
-
this.mergeConfigs();
|
|
46
|
-
this.logger?.debug(`Environment configuration source added.`);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Adds new config source from JSON file loaded from HTTP.
|
|
50
|
-
* @param config Config for JSON file.
|
|
51
|
-
* @param loadImmediately Load is by default triggered on app initialization. If immediate load is required, pass true.
|
|
52
|
-
*/
|
|
53
|
-
addJsonSource(config = {}, loadImmediately = false) {
|
|
54
|
-
if (!config) {
|
|
55
|
-
config = {};
|
|
56
|
-
}
|
|
57
|
-
const url = config?.url ?? 'assets/config/env{{environment}}.json';
|
|
58
|
-
const enableEnvProdReplace = config?.enableEnvProd ?? false;
|
|
59
|
-
const sourceInfo = {
|
|
60
|
-
url: url,
|
|
61
|
-
isEnvironment: false,
|
|
62
|
-
environmentEnableEnvProd: enableEnvProdReplace,
|
|
63
|
-
isLoaded: false
|
|
64
|
-
};
|
|
65
|
-
this.jsonSources.push(sourceInfo);
|
|
66
|
-
this.logger?.debug(`JSON configuration source added: ${url}.`);
|
|
67
|
-
if (loadImmediately) {
|
|
68
|
-
return this.loadJsonConfigurations();
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
return of(true);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Adds new config object from any object.
|
|
76
|
-
* @param config Config object.
|
|
77
|
-
*/
|
|
78
|
-
addObjectSource(config) {
|
|
79
|
-
this.objectSources.push(config);
|
|
80
|
-
this.logger?.debug(`Object configuration source added.`);
|
|
81
|
-
this.mergeConfigs();
|
|
82
|
-
}
|
|
83
|
-
loadJsonSources() {
|
|
84
|
-
if (!this.http) {
|
|
85
|
-
this.logger?.warn('HTTP client was not initialized. Json source cannot be loaded');
|
|
86
|
-
return of(false);
|
|
87
|
-
}
|
|
88
|
-
const httpClient = this.http;
|
|
89
|
-
return combineLatest(this.jsonSources
|
|
90
|
-
.filter(source => !source.isLoaded)
|
|
91
|
-
.map(sourceInfo => {
|
|
92
|
-
let url = sourceInfo.url;
|
|
93
|
-
sourceInfo.environment = this.projectEnvironment?.name || (this.projectEnvironment?.production ? (sourceInfo.environmentEnableEnvProd ? 'prod' : null) : 'dev');
|
|
94
|
-
sourceInfo.isEnvironment = !!sourceInfo.environment;
|
|
95
|
-
if (sourceInfo.isEnvironment) {
|
|
96
|
-
url = url.replace('{{environment}}', '.' + sourceInfo.environment);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
// replace possible environment entry and change source info url
|
|
100
|
-
url = url.replace('{{environment}}', '');
|
|
101
|
-
sourceInfo.url = url;
|
|
102
|
-
}
|
|
103
|
-
this.logger?.debug(`Loading JSON configuration source from ${url}.`);
|
|
104
|
-
return httpClient.get(url).pipe(catchError((err) => {
|
|
105
|
-
if (sourceInfo.isEnvironment) {
|
|
106
|
-
const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');
|
|
107
|
-
sourceInfo.environment = null;
|
|
108
|
-
return httpClient.get(noEnvUrl);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
this.logger?.warn(`Configuration file ${url} not loaded`, err);
|
|
112
|
-
return of(false);
|
|
113
|
-
}
|
|
114
|
-
}), map(configuration => {
|
|
115
|
-
if (typeof configuration !== 'object') {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
sourceInfo.configuration = configuration;
|
|
119
|
-
sourceInfo.isLoaded = true;
|
|
120
|
-
return true;
|
|
121
|
-
}));
|
|
122
|
-
})).pipe(map(sourceResults => sourceResults.every(sr => sr)), tap(() => this.mergeConfigs()));
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Get configuration.
|
|
126
|
-
*/
|
|
127
|
-
getConfig() {
|
|
128
|
-
return this.configuration;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Get configuration value for key.
|
|
132
|
-
* @param key Configuration key.
|
|
133
|
-
*/
|
|
134
|
-
getConfigValue(key) {
|
|
135
|
-
return this.configuration[key] ? this.configuration[key] : null;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Gets the configuration value for the given key. If the value is not found,
|
|
139
|
-
* it throws an error with a custom error message.
|
|
140
|
-
*
|
|
141
|
-
* @param {string} key - The configuration key.
|
|
142
|
-
* @param {string} [errorMessage] - Custom error message to be thrown if the value is not found.
|
|
143
|
-
*
|
|
144
|
-
* @returns {T} - The configuration value.
|
|
145
|
-
*
|
|
146
|
-
* @throws {CommonsInternalError} - If the value is not found or a custom error message is provided.
|
|
147
|
-
*/
|
|
148
|
-
getConfigValueOrThrow(key, errorMessage) {
|
|
149
|
-
return this.getConfigValue(key) ?? throwError(errorMessage ?? `Missing configuration value for '${key}'!`, { name: 'CommonsMissingConfigError' });
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Has configuration for key.
|
|
153
|
-
* @param key Configuration key.
|
|
154
|
-
*/
|
|
155
|
-
hasConfigKey(key) {
|
|
156
|
-
return Object.keys(this.configuration).some(k => k === key);
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Merges configuration from multiple sources with
|
|
160
|
-
*/
|
|
161
|
-
mergeConfigs() {
|
|
162
|
-
let config = {};
|
|
163
|
-
// 1. object sources have highest priority
|
|
164
|
-
if (this.objectSources.length) {
|
|
165
|
-
for (const objConfig of this.objectSources) {
|
|
166
|
-
config = objectDeepMerge(config, objConfig);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
// 2. JSON sources come next
|
|
170
|
-
const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);
|
|
171
|
-
if (jsonConfigs.length) {
|
|
172
|
-
for (const jsonConfig of jsonConfigs) {
|
|
173
|
-
if (jsonConfig) {
|
|
174
|
-
config = objectDeepMerge(config, jsonConfig);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
// 3. project env has the next priority
|
|
179
|
-
if (this.projectEnvironment) {
|
|
180
|
-
config = objectDeepMerge(config, this.projectEnvironment);
|
|
181
|
-
}
|
|
182
|
-
// 4. module config has the lowest priority
|
|
183
|
-
if (this.moduleConfig) {
|
|
184
|
-
config = objectDeepMerge(config, this.moduleConfig);
|
|
185
|
-
}
|
|
186
|
-
this.configuration = config;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9zZXJ2aWNlcy9jb21tb25zLWNvbmZpZ3VyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsYUFBYSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSWxELE1BQU0sT0FBTywyQkFBMkI7YUFDckIsY0FBUyxHQUFnQyxJQUFJLDJCQUEyQixFQUFFLEFBQWpFLENBQWtFO0lBRW5GLE1BQU0sQ0FBQyxHQUFHO1FBQ2IsT0FBTywyQkFBMkIsQ0FBQyxTQUFTLENBQUM7SUFDakQsQ0FBQztJQVlEO1FBTFEsZ0JBQVcsR0FBOEIsRUFBRSxDQUFDO1FBQzVDLGtCQUFhLEdBQWUsRUFBRSxDQUFDO1FBRS9CLGtCQUFhLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBQyxDQUFDO1FBdUVyRDs7V0FFRztRQUNLLDJCQUFzQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUVsRzs7O1dBR0c7UUFDSSwyQkFBc0IsR0FBRyxHQUF3QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQTdFM0gsNENBQTRDO0lB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QyxZQUFZLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBvZiwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7dGhyb3dFcnJvcn0gZnJvbSAnLi4vZXJyb3IvZXJyb3ItaGVscGVycyc7XG5pbXBvcnQge29iamVjdERlZXBNZXJnZX0gZnJvbSAnLi4vaGVscGVycy9vYmplY3QnO1xuaW1wb3J0IHtJTG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nL2xvZy5tb2RlbCc7XG5pbXBvcnQge0NvbW1vbnNNb2R1bGVDb25maWd9IGZyb20gJy4vdG9rZW5zL21vZHVsZS1jb25maWcudG9rZW4nO1xuXG5leHBvcnQgY2xhc3MgQ29tbW9uc0NvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IENvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZSA9IG5ldyBDb21tb25zQ29uZmlndXJhdGlvblNlcnZpY2UoKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0KCk6IENvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZSB7XG4gICAgICAgIHJldHVybiBDb21tb25zQ29uZmlndXJhdGlvblNlcnZpY2UuX2luc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9nZ2VyPzogSUxvZ2dlclNlcnZpY2U7XG5cbiAgICBwcml2YXRlIGh0dHA/OiBIdHRwQ2xpZW50O1xuICAgIHByaXZhdGUgbW9kdWxlQ29uZmlnPzogQ29tbW9uc01vZHVsZUNvbmZpZztcbiAgICBwcml2YXRlIHByb2plY3RFbnZpcm9ubWVudD86IGFueTtcbiAgICBwcml2YXRlIGpzb25Tb3VyY2VzOiBBcnJheTxKc29uU291cmNlTG9hZEluZm8+ID0gW107XG4gICAgcHJpdmF0ZSBvYmplY3RTb3VyY2VzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb24gPSB7Li4udGhpcy5wcm9qZWN0RW52aXJvbm1lbnR9O1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gZW1wdHksIGJ1dCBuZWVkZWQgZm9yIHByaXZhdGUgY29uc3RydWN0b3JcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdChodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBsb2dnZXI/OiBJTG9nZ2VyU2VydmljZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmh0dHAgPSBodHRwQ2xpZW50O1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcj8uY3JlYXRlKCdDb25maWd1cmF0aW9uU2VydmljZScpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgY29tbW9ucyBtb2R1bGUgY29uZmlnLlxuICAgICAqIEBwYXJhbSBjb25maWcgTW9kdWxlIGNvbmZpZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkTW9kdWxlQ29uZmlnU291cmNlKGNvbmZpZz86IENvbW1vbnNNb2R1bGVDb25maWcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb2R1bGVDb25maWcgPSBjb25maWc7XG4gICAgICAgIHRoaXMubWVyZ2VDb25maWdzKCk7XG4gICAgICAgIHRoaXMubG9nZ2VyPy5kZWJ1ZyhgTW9kdWxlIGNvbmZpZ3VyYXRpb24gc291cmNlIGFkZGVkLmApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBwcm9qZWN0IGVudmlyb25tZW50IHNvdXJjZS5cbiAgICAgKiBAcGFyYW0gZW52aXJvbm1lbnQgRW52aXJvbm1lbnQuXG4gICAgICovXG4gICAgcHVibGljIGFkZEVudmlyb25tZW50U291cmNlKGVudmlyb25tZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9qZWN0RW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICAgICAgdGhpcy5tZXJnZUNvbmZpZ3MoKTtcbiAgICAgICAgdGhpcy5sb2dnZXI/LmRlYnVnKGBFbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIHNvdXJjZSBhZGRlZC5gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIG5ldyBjb25maWcgc291cmNlIGZyb20gSlNPTiBmaWxlIGxvYWRlZCBmcm9tIEhUVFAuXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWcgZm9yIEpTT04gZmlsZS5cbiAgICAgKiBAcGFyYW0gbG9hZEltbWVkaWF0ZWx5IExvYWQgaXMgYnkgZGVmYXVsdCB0cmlnZ2VyZWQgb24gYXBwIGluaXRpYWxpemF0aW9uLiBJZiBpbW1lZGlhdGUgbG9hZCBpcyByZXF1aXJlZCwgcGFzcyB0cnVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRKc29uU291cmNlKGNvbmZpZzoge3VybD86IHN0cmluZzsgZW5hYmxlRW52UHJvZD86IGJvb2xlYW59ID0ge30sIGxvYWRJbW1lZGlhdGVseSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgICBjb25maWcgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSBjb25maWc/LnVybCA/PyAnYXNzZXRzL2NvbmZpZy9lbnZ7e2Vudmlyb25tZW50fX0uanNvbic7XG4gICAgICAgIGNvbnN0IGVuYWJsZUVudlByb2RSZXBsYWNlID0gY29uZmlnPy5lbmFibGVFbnZQcm9kID8/IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHNvdXJjZUluZm86IEpzb25Tb3VyY2VMb2FkSW5mbyA9IHtcbiAgICAgICAgICAgIHVybDogdXJsLFxuICAgICAgICAgICAgaXNFbnZpcm9ubWVudDogZmFsc2UsXG4gICAgICAgICAgICBlbnZpcm9ubWVudEVuYWJsZUVudlByb2Q6IGVuYWJsZUVudlByb2RSZXBsYWNlLFxuICAgICAgICAgICAgaXNMb2FkZWQ6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuanNvblNvdXJjZXMucHVzaChzb3VyY2VJbmZvKTtcblxuICAgICAgICB0aGlzLmxvZ2dlcj8uZGVidWcoYEpTT04gY29uZmlndXJhdGlvbiBzb3VyY2UgYWRkZWQ6ICR7dXJsfS5gKTtcblxuICAgICAgICBpZiAobG9hZEltbWVkaWF0ZWx5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkSnNvbkNvbmZpZ3VyYXRpb25zKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIG5ldyBjb25maWcgb2JqZWN0IGZyb20gYW55IG9iamVjdC5cbiAgICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZyBvYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIGFkZE9iamVjdFNvdXJjZShjb25maWc6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9iamVjdFNvdXJjZXMucHVzaChjb25maWcpO1xuICAgICAgICB0aGlzLmxvZ2dlcj8uZGVidWcoYE9iamVjdCBjb25maWd1cmF0aW9uIHNvdXJjZSBhZGRlZC5gKTtcbiAgICAgICAgdGhpcy5tZXJnZUNvbmZpZ3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgbm8ganNvblNvdXJjZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHNraXBKc29uQ29uZmlnc0xvYWRpbmcgPSAoKSA9PiB0aGlzLmpzb25Tb3VyY2VzID09PSBudWxsIHx8IHRoaXMuanNvblNvdXJjZXMubGVuZ3RoID09PSAwO1xuXG4gICAgLyoqXG4gICAgICogbG9hZHMganNvbiBzb3VyY2VzIG9yIHNraXBzIHRoZW0gcmV0dXJuaW5nIHRydWUgaW4gYm90aCBjYXNlc1xuICAgICAqIHVzZWQgZm9yIGBza2lwSnNvblNvdXJjZUluaXRgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyXG4gICAgICovXG4gICAgcHVibGljIGxvYWRKc29uQ29uZmlndXJhdGlvbnMgPSAoKTogT2JzZXJ2YWJsZTxib29sZWFuPiA9PiAodGhpcy5za2lwSnNvbkNvbmZpZ3NMb2FkaW5nKCkgPyBvZih0cnVlKSA6IHRoaXMubG9hZEpzb25Tb3VyY2VzKCkpO1xuXG4gICAgcHJpdmF0ZSBsb2FkSnNvblNvdXJjZXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGlmICghdGhpcy5odHRwKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlcj8ud2FybignSFRUUCBjbGllbnQgd2FzIG5vdCBpbml0aWFsaXplZC4gSnNvbiBzb3VyY2UgY2Fubm90IGJlIGxvYWRlZCcpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGh0dHBDbGllbnQgPSB0aGlzLmh0dHA7XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0aGlzLmpzb25Tb3VyY2VzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihzb3VyY2UgPT4gIXNvdXJjZS5pc0xvYWRlZClcbiAgICAgICAgICAgICAgICAubWFwKHNvdXJjZUluZm8gPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gc291cmNlSW5mby51cmw7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8uZW52aXJvbm1lbnQgPSB0aGlzLnByb2plY3RFbnZpcm9ubWVudD8ubmFtZSB8fCAodGhpcy5wcm9qZWN0RW52aXJvbm1lbnQ/LnByb2R1Y3Rpb24gPyAoc291cmNlSW5mby5lbnZpcm9ubWVudEVuYWJsZUVudlByb2QgPyAncHJvZCcgOiBudWxsKSA6ICdkZXYnKTtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlSW5mby5pc0Vudmlyb25tZW50ID0gISFzb3VyY2VJbmZvLmVudmlyb25tZW50O1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VJbmZvLmlzRW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKCd7e2Vudmlyb25tZW50fX0nLCAnLicgKyBzb3VyY2VJbmZvLmVudmlyb25tZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgcG9zc2libGUgZW52aXJvbm1lbnQgZW50cnkgYW5kIGNoYW5nZSBzb3VyY2UgaW5mbyB1cmxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKCd7e2Vudmlyb25tZW50fX0nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJbmZvLnVybCA9IHVybDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyPy5kZWJ1ZyhgTG9hZGluZyBKU09OIGNvbmZpZ3VyYXRpb24gc291cmNlIGZyb20gJHt1cmx9LmApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBodHRwQ2xpZW50LmdldDxvYmplY3Q+KHVybCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlSW5mby5pc0Vudmlyb25tZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vRW52VXJsID0gc291cmNlSW5mby51cmwucmVwbGFjZSgne3tlbnZpcm9ubWVudH19JywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJbmZvLmVudmlyb25tZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGh0dHBDbGllbnQuZ2V0PG9iamVjdD4obm9FbnZVcmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyPy53YXJuKGBDb25maWd1cmF0aW9uIGZpbGUgJHt1cmx9IG5vdCBsb2FkZWRgLCBlcnIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoY29uZmlndXJhdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlSW5mby5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJbmZvLmlzTG9hZGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICBtYXAoc291cmNlUmVzdWx0cyA9PiBzb3VyY2VSZXN1bHRzLmV2ZXJ5KHNyID0+IHNyKSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5tZXJnZUNvbmZpZ3MoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjb25maWd1cmF0aW9uIHZhbHVlIGZvciBrZXkuXG4gICAgICogQHBhcmFtIGtleSBDb25maWd1cmF0aW9uIGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29uZmlnVmFsdWU8VCA9IGFueT4oa2V5OiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25ba2V5XSA/IHRoaXMuY29uZmlndXJhdGlvbltrZXldIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjb25maWd1cmF0aW9uIHZhbHVlIGZvciB0aGUgZ2l2ZW4ga2V5LiBJZiB0aGUgdmFsdWUgaXMgbm90IGZvdW5kLFxuICAgICAqIGl0IHRocm93cyBhbiBlcnJvciB3aXRoIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGNvbmZpZ3VyYXRpb24ga2V5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXJyb3JNZXNzYWdlXSAtIEN1c3RvbSBlcnJvciBtZXNzYWdlIHRvIGJlIHRocm93biBpZiB0aGUgdmFsdWUgaXMgbm90IGZvdW5kLlxuICAgICAqXG4gICAgICogQHJldHVybnMge1R9IC0gVGhlIGNvbmZpZ3VyYXRpb24gdmFsdWUuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIHtDb21tb25zSW50ZXJuYWxFcnJvcn0gLSBJZiB0aGUgdmFsdWUgaXMgbm90IGZvdW5kIG9yIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgaXMgcHJvdmlkZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldENvbmZpZ1ZhbHVlT3JUaHJvdzxUID0gYW55PihrZXk6IHN0cmluZywgZXJyb3JNZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZ1ZhbHVlKGtleSkgPz8gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2UgPz8gYE1pc3NpbmcgY29uZmlndXJhdGlvbiB2YWx1ZSBmb3IgJyR7a2V5fSchYCwge25hbWU6ICdDb21tb25zTWlzc2luZ0NvbmZpZ0Vycm9yJ30pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhcyBjb25maWd1cmF0aW9uIGZvciBrZXkuXG4gICAgICogQHBhcmFtIGtleSBDb25maWd1cmF0aW9uIGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzQ29uZmlnS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZ3VyYXRpb24pLnNvbWUoayA9PiBrID09PSBrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBjb25maWd1cmF0aW9uIGZyb20gbXVsdGlwbGUgc291cmNlcyB3aXRoXG4gICAgICovXG4gICAgcHJpdmF0ZSBtZXJnZUNvbmZpZ3MoKSB7XG4gICAgICAgIGxldCBjb25maWcgPSB7fTtcblxuICAgICAgICAvLyAxLiBvYmplY3Qgc291cmNlcyBoYXZlIGhpZ2hlc3QgcHJpb3JpdHlcbiAgICAgICAgaWYgKHRoaXMub2JqZWN0U291cmNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb2JqQ29uZmlnIG9mIHRoaXMub2JqZWN0U291cmNlcykge1xuICAgICAgICAgICAgICAgIGNvbmZpZyA9IG9iamVjdERlZXBNZXJnZShjb25maWcsIG9iakNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBKU09OIHNvdXJjZXMgY29tZSBuZXh0XG4gICAgICAgIGNvbnN0IGpzb25Db25maWdzID0gdGhpcy5qc29uU291cmNlcy5maWx0ZXIoc291cmNlID0+IHNvdXJjZS5pc0xvYWRlZCAmJiB0eXBlb2Ygc291cmNlLmNvbmZpZ3VyYXRpb24gPT09ICdvYmplY3QnKS5tYXAoc291cmNlID0+IHNvdXJjZS5jb25maWd1cmF0aW9uKTtcbiAgICAgICAgaWYgKGpzb25Db25maWdzLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBqc29uQ29uZmlnIG9mIGpzb25Db25maWdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGpzb25Db25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnID0gb2JqZWN0RGVlcE1lcmdlKGNvbmZpZywganNvbkNvbmZpZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gcHJvamVjdCBlbnYgaGFzIHRoZSBuZXh0IHByaW9yaXR5XG4gICAgICAgIGlmICh0aGlzLnByb2plY3RFbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgY29uZmlnID0gb2JqZWN0RGVlcE1lcmdlKGNvbmZpZywgdGhpcy5wcm9qZWN0RW52aXJvbm1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gNC4gbW9kdWxlIGNvbmZpZyBoYXMgdGhlIGxvd2VzdCBwcmlvcml0eVxuICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWcpIHtcbiAgICAgICAgICAgIGNvbmZpZyA9IG9iamVjdERlZXBNZXJnZShjb25maWcsIHRoaXMubW9kdWxlQ29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZztcbiAgICB9XG59XG5cbmludGVyZmFjZSBKc29uU291cmNlTG9hZEluZm8ge1xuICAgIHVybDogc3RyaW5nO1xuICAgIGlzTG9hZGVkOiBib29sZWFuO1xuICAgIGlzRW52aXJvbm1lbnQ6IGJvb2xlYW47XG4gICAgZW52aXJvbm1lbnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIGVudmlyb25tZW50RW5hYmxlRW52UHJvZD86IGJvb2xlYW47XG4gICAgY29uZmlndXJhdGlvbj86IG9iamVjdDtcbn1cbiJdfQ==
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Injectable, inject } from '@angular/core';
|
|
3
|
-
import { ReplaySubject, Subject, combineLatest, mergeMap, of, take, throwError } from 'rxjs';
|
|
4
|
-
import { catchError, map } from 'rxjs/operators';
|
|
5
|
-
import { LoggerService } from '../log/logger.service';
|
|
6
|
-
import { CommonsConfigurationService } from './commons-configuration.service';
|
|
7
|
-
import { CommonsRouterService } from './commons-router.service';
|
|
8
|
-
import { CommonsService } from './commons.service';
|
|
9
|
-
import { COMMONS_INITIALIZER_IT } from './tokens/commons-init.token';
|
|
10
|
-
import { LOG_PUBLISHERS } from './tokens/log-publisher.token';
|
|
11
|
-
import { COMMONS_MODULE_CONFIG_IT } from './tokens/module-config.token';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
export var CommonsInitEventEnum;
|
|
14
|
-
(function (CommonsInitEventEnum) {
|
|
15
|
-
CommonsInitEventEnum[CommonsInitEventEnum["CommonsInitStart"] = 0] = "CommonsInitStart";
|
|
16
|
-
CommonsInitEventEnum[CommonsInitEventEnum["ConfigSourceModuleLoaded"] = 1] = "ConfigSourceModuleLoaded";
|
|
17
|
-
CommonsInitEventEnum[CommonsInitEventEnum["ConfigSourceProjectEnvLoaded"] = 2] = "ConfigSourceProjectEnvLoaded";
|
|
18
|
-
CommonsInitEventEnum[CommonsInitEventEnum["ConfigSourceJsonAdded"] = 3] = "ConfigSourceJsonAdded";
|
|
19
|
-
CommonsInitEventEnum[CommonsInitEventEnum["ConfigSourceJsonLoaded"] = 4] = "ConfigSourceJsonLoaded";
|
|
20
|
-
CommonsInitEventEnum[CommonsInitEventEnum["CommonsInitEnd"] = 5] = "CommonsInitEnd";
|
|
21
|
-
CommonsInitEventEnum[CommonsInitEventEnum["CommonsInitError"] = 6] = "CommonsInitError";
|
|
22
|
-
})(CommonsInitEventEnum || (CommonsInitEventEnum = {}));
|
|
23
|
-
export class CommonsInitService {
|
|
24
|
-
constructor() {
|
|
25
|
-
this.logger = inject(LoggerService);
|
|
26
|
-
this.logPublishers = inject(LOG_PUBLISHERS, { optional: true });
|
|
27
|
-
this.config = inject(CommonsConfigurationService);
|
|
28
|
-
this.commons = inject(CommonsService);
|
|
29
|
-
this.commonsRouter = inject(CommonsRouterService);
|
|
30
|
-
this.moduleConfig = inject(COMMONS_MODULE_CONFIG_IT, { optional: true });
|
|
31
|
-
this.commonsInitializers = inject(COMMONS_INITIALIZER_IT, { optional: true });
|
|
32
|
-
this.isInitialized = false;
|
|
33
|
-
this.isInitializedSubject = new ReplaySubject();
|
|
34
|
-
this.commonsInitServiceEvents = new Subject();
|
|
35
|
-
}
|
|
36
|
-
get events$() {
|
|
37
|
-
return this.commonsInitServiceEvents.asObservable();
|
|
38
|
-
}
|
|
39
|
-
get isInitialized$() {
|
|
40
|
-
return this.isInitializedSubject.asObservable().pipe(take(1));
|
|
41
|
-
}
|
|
42
|
-
initialize(handler) {
|
|
43
|
-
if (this.isInitialized) {
|
|
44
|
-
return of(void 0);
|
|
45
|
-
}
|
|
46
|
-
this.isInitialized = true;
|
|
47
|
-
LoggerService.configure({ timestampFormat: this.moduleConfig?.log?.timestampFormat });
|
|
48
|
-
const ctxLogger = this.logger.create('CommonsInitService');
|
|
49
|
-
ctxLogger.debug('Commons initialization is starting');
|
|
50
|
-
this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitStart);
|
|
51
|
-
// init http client
|
|
52
|
-
this.httpClient = new HttpClient(handler);
|
|
53
|
-
// init router
|
|
54
|
-
this.commonsRouter.initialize();
|
|
55
|
-
// init configurations with settings from module config
|
|
56
|
-
this.config.init(this.httpClient, this.logger);
|
|
57
|
-
this.config.addModuleConfigSource(this.moduleConfig ?? undefined);
|
|
58
|
-
this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceModuleLoaded);
|
|
59
|
-
if (this.moduleConfig?.configuration?.projectEnvironment) {
|
|
60
|
-
this.config.addEnvironmentSource(this.moduleConfig.configuration.projectEnvironment);
|
|
61
|
-
this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceProjectEnvLoaded);
|
|
62
|
-
}
|
|
63
|
-
// init configurations with settings from module config for json source
|
|
64
|
-
if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {
|
|
65
|
-
const jsonSourceEnableEnvProd = this.moduleConfig?.configuration?.jsonSourceEnableEnvProd ?? false;
|
|
66
|
-
const jsonSource = this.moduleConfig?.configuration?.jsonSource;
|
|
67
|
-
if (!jsonSource) {
|
|
68
|
-
this.config.addJsonSource({ enableEnvProd: jsonSourceEnableEnvProd });
|
|
69
|
-
}
|
|
70
|
-
else if (Array.isArray(jsonSource)) {
|
|
71
|
-
jsonSource.forEach(source => this.config.addJsonSource({ url: source, enableEnvProd: jsonSourceEnableEnvProd }));
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this.config.addJsonSource({ url: jsonSource, enableEnvProd: jsonSourceEnableEnvProd });
|
|
75
|
-
}
|
|
76
|
-
this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceJsonAdded);
|
|
77
|
-
}
|
|
78
|
-
return this.config.loadJsonConfigurations().pipe(mergeMap(() => {
|
|
79
|
-
if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {
|
|
80
|
-
this.commonsInitServiceEvents.next(CommonsInitEventEnum.ConfigSourceJsonLoaded);
|
|
81
|
-
}
|
|
82
|
-
// init logger
|
|
83
|
-
LoggerService.init(this.config, this.logPublishers ?? []);
|
|
84
|
-
if (this.commonsInitializers) {
|
|
85
|
-
ctxLogger.debug('Project initializers are being initialized');
|
|
86
|
-
return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
return of(true);
|
|
90
|
-
}
|
|
91
|
-
}), map(() => {
|
|
92
|
-
ctxLogger.debug('Commons initialization is finished');
|
|
93
|
-
this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitEnd);
|
|
94
|
-
this.commonsInitServiceEvents.complete();
|
|
95
|
-
this.isInitializedSubject.next(true);
|
|
96
|
-
return this.commons.initialize();
|
|
97
|
-
}), catchError(err => {
|
|
98
|
-
ctxLogger.warn('Commons initialization failed with error', err);
|
|
99
|
-
this.commonsInitServiceEvents.next(CommonsInitEventEnum.CommonsInitError);
|
|
100
|
-
this.commonsInitServiceEvents.complete();
|
|
101
|
-
this.isInitializedSubject.next(false);
|
|
102
|
-
return throwError(() => err);
|
|
103
|
-
}));
|
|
104
|
-
}
|
|
105
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CommonsInitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
106
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CommonsInitService }); }
|
|
107
|
-
}
|
|
108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CommonsInitService, decorators: [{
|
|
109
|
-
type: Injectable
|
|
110
|
-
}] });
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9zZXJ2aWNlcy9jb21tb25zLWluaXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFhLGFBQWEsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN2RyxPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOztBQUV0RSxNQUFNLENBQU4sSUFBWSxvQkFRWDtBQVJELFdBQVksb0JBQW9CO0lBQzVCLHVGQUFnQixDQUFBO0lBQ2hCLHVHQUF3QixDQUFBO0lBQ3hCLCtHQUE0QixDQUFBO0lBQzVCLGlHQUFxQixDQUFBO0lBQ3JCLG1HQUFzQixDQUFBO0lBQ3RCLG1GQUFjLENBQUE7SUFDZCx1RkFBZ0IsQ0FBQTtBQUNwQixDQUFDLEVBUlcsb0JBQW9C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WUFDekMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQzsrR0EvRlEsa0JBQWtCO21IQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBCYWNrZW5kLCBIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdGFibGUsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWVyZ2VNYXAsIG9mLCB0YWtlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uc0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL2NvbW1vbnMtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7Q29tbW9uc1JvdXRlclNlcnZpY2V9IGZyb20gJy4vY29tbW9ucy1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNTZXJ2aWNlfSBmcm9tICcuL2NvbW1vbnMuc2VydmljZSc7XG5pbXBvcnQge0NPTU1PTlNfSU5JVElBTElaRVJfSVR9IGZyb20gJy4vdG9rZW5zL2NvbW1vbnMtaW5pdC50b2tlbic7XG5pbXBvcnQge0xPR19QVUJMSVNIRVJTfSBmcm9tICcuL3Rva2Vucy9sb2ctcHVibGlzaGVyLnRva2VuJztcbmltcG9ydCB7Q09NTU9OU19NT0RVTEVfQ09ORklHX0lUfSBmcm9tICcuL3Rva2Vucy9tb2R1bGUtY29uZmlnLnRva2VuJztcblxuZXhwb3J0IGVudW0gQ29tbW9uc0luaXRFdmVudEVudW0ge1xuICAgIENvbW1vbnNJbml0U3RhcnQsXG4gICAgQ29uZmlnU291cmNlTW9kdWxlTG9hZGVkLFxuICAgIENvbmZpZ1NvdXJjZVByb2plY3RFbnZMb2FkZWQsXG4gICAgQ29uZmlnU291cmNlSnNvbkFkZGVkLFxuICAgIENvbmZpZ1NvdXJjZUpzb25Mb2FkZWQsXG4gICAgQ29tbW9uc0luaXRFbmQsXG4gICAgQ29tbW9uc0luaXRFcnJvclxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tbW9uc0luaXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGluamVjdChMb2dnZXJTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ1B1Ymxpc2hlcnMgPSBpbmplY3QoTE9HX1BVQkxJU0hFUlMsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KENvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tb25zID0gaW5qZWN0KENvbW1vbnNTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbnNSb3V0ZXIgPSBpbmplY3QoQ29tbW9uc1JvdXRlclNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kdWxlQ29uZmlnID0gaW5qZWN0KENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tb25zSW5pdGlhbGl6ZXJzID0gaW5qZWN0KENPTU1PTlNfSU5JVElBTElaRVJfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGh0dHBDbGllbnQhOiBIdHRwQ2xpZW50O1xuXG4gICAgcHJpdmF0ZSBpc0luaXRpYWxpemVkU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBjb21tb25zSW5pdFNlcnZpY2VFdmVudHMgPSBuZXcgU3ViamVjdDxDb21tb25zSW5pdEV2ZW50RW51bT4oKTtcblxuICAgIHB1YmxpYyBnZXQgZXZlbnRzJCgpOiBPYnNlcnZhYmxlPENvbW1vbnNJbml0RXZlbnRFbnVtPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbW1vbnNJbml0U2VydmljZUV2ZW50cy5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0luaXRpYWxpemVkU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0aWFsaXplKGhhbmRsZXI6IEh0dHBCYWNrZW5kKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgTG9nZ2VyU2VydmljZS5jb25maWd1cmUoe3RpbWVzdGFtcEZvcm1hdDogdGhpcy5tb2R1bGVDb25maWc/LmxvZz8udGltZXN0YW1wRm9ybWF0fSk7XG5cbiAgICAgICAgY29uc3QgY3R4TG9nZ2VyID0gdGhpcy5sb2dnZXIuY3JlYXRlKCdDb21tb25zSW5pdFNlcnZpY2UnKTtcbiAgICAgICAgY3R4TG9nZ2VyLmRlYnVnKCdDb21tb25zIGluaXRpYWxpemF0aW9uIGlzIHN0YXJ0aW5nJyk7XG4gICAgICAgIHRoaXMuY29tbW9uc0luaXRTZXJ2aWNlRXZlbnRzLm5leHQoQ29tbW9uc0luaXRFdmVudEVudW0uQ29tbW9uc0luaXRTdGFydCk7XG5cbiAgICAgICAgLy8gaW5pdCBodHRwIGNsaWVudFxuICAgICAgICB0aGlzLmh0dHBDbGllbnQgPSBuZXcgSHR0cENsaWVudChoYW5kbGVyKTtcblxuICAgICAgICAvLyBpbml0IHJvdXRlclxuICAgICAgICB0aGlzLmNvbW1vbnNSb3V0ZXIuaW5pdGlhbGl6ZSgpO1xuXG4gICAgICAgIC8vIGluaXQgY29uZmlndXJhdGlvbnMgd2l0aCBzZXR0aW5ncyBmcm9tIG1vZHVsZSBjb25maWdcbiAgICAgICAgdGhpcy5jb25maWcuaW5pdCh0aGlzLmh0dHBDbGllbnQsIHRoaXMubG9nZ2VyKTtcbiAgICAgICAgdGhpcy5jb25maWcuYWRkTW9kdWxlQ29uZmlnU291cmNlKHRoaXMubW9kdWxlQ29uZmlnID8/IHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuY29tbW9uc0luaXRTZXJ2aWNlRXZlbnRzLm5leHQoQ29tbW9uc0luaXRFdmVudEVudW0uQ29uZmlnU291cmNlTW9kdWxlTG9hZGVkKTtcbiAgICAgICAgaWYgKHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5wcm9qZWN0RW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZEVudmlyb25tZW50U291cmNlKHRoaXMubW9kdWxlQ29uZmlnLmNvbmZpZ3VyYXRpb24ucHJvamVjdEVudmlyb25tZW50KTtcbiAgICAgICAgICAgIHRoaXMuY29tbW9uc0luaXRTZXJ2aWNlRXZlbnRzLm5leHQoQ29tbW9uc0luaXRFdmVudEVudW0uQ29uZmlnU291cmNlUHJvamVjdEVudkxvYWRlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpbml0IGNvbmZpZ3VyYXRpb25zIHdpdGggc2V0dGluZ3MgZnJvbSBtb2R1bGUgY29uZmlnIGZvciBqc29uIHNvdXJjZVxuICAgICAgICBpZiAoISh0aGlzLm1vZHVsZUNvbmZpZz8uY29uZmlndXJhdGlvbj8uc2tpcEpzb25Tb3VyY2VJbml0ID8/IGZhbHNlKSkge1xuICAgICAgICAgICAgY29uc3QganNvblNvdXJjZUVuYWJsZUVudlByb2QgPSB0aGlzLm1vZHVsZUNvbmZpZz8uY29uZmlndXJhdGlvbj8uanNvblNvdXJjZUVuYWJsZUVudlByb2QgPz8gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBqc29uU291cmNlID0gdGhpcy5tb2R1bGVDb25maWc/LmNvbmZpZ3VyYXRpb24/Lmpzb25Tb3VyY2U7XG4gICAgICAgICAgICBpZiAoIWpzb25Tb3VyY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5hZGRKc29uU291cmNlKHtlbmFibGVFbnZQcm9kOiBqc29uU291cmNlRW5hYmxlRW52UHJvZH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGpzb25Tb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAganNvblNvdXJjZS5mb3JFYWNoKHNvdXJjZSA9PiB0aGlzLmNvbmZpZy5hZGRKc29uU291cmNlKHt1cmw6IHNvdXJjZSwgZW5hYmxlRW52UHJvZDoganNvblNvdXJjZUVuYWJsZUVudlByb2R9KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZEpzb25Tb3VyY2Uoe3VybDoganNvblNvdXJjZSwgZW5hYmxlRW52UHJvZDoganNvblNvdXJjZUVuYWJsZUVudlByb2R9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29tbW9uc0luaXRTZXJ2aWNlRXZlbnRzLm5leHQoQ29tbW9uc0luaXRFdmVudEVudW0uQ29uZmlnU291cmNlSnNvbkFkZGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5sb2FkSnNvbkNvbmZpZ3VyYXRpb25zKCkucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoISh0aGlzLm1vZHVsZUNvbmZpZz8uY29uZmlndXJhdGlvbj8uc2tpcEpzb25Tb3VyY2VJbml0ID8/IGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNJbml0U2VydmljZUV2ZW50cy5uZXh0KENvbW1vbnNJbml0RXZlbnRFbnVtLkNvbmZpZ1NvdXJjZUpzb25Mb2FkZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBpbml0IGxvZ2dlclxuICAgICAgICAgICAgICAgIExvZ2dlclNlcnZpY2UuaW5pdCh0aGlzLmNvbmZpZywgdGhpcy5sb2dQdWJsaXNoZXJzID8/IFtdKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbW1vbnNJbml0aWFsaXplcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4TG9nZ2VyLmRlYnVnKCdQcm9qZWN0IGluaXRpYWxpemVycyBhcmUgYmVpbmcgaW5pdGlhbGl6ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QodGhpcy5jb21tb25zSW5pdGlhbGl6ZXJzLm1hcChjaSA9PiBjaSgpKSkucGlwZShtYXAocmVzID0+IHJlcykpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY3R4TG9nZ2VyLmRlYnVnKCdDb21tb25zIGluaXRpYWxpemF0aW9uIGlzIGZpbmlzaGVkJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMubmV4dChDb21tb25zSW5pdEV2ZW50RW51bS5Db21tb25zSW5pdEVuZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWRTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9ucy5pbml0aWFsaXplKCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjdHhMb2dnZXIud2FybignQ29tbW9ucyBpbml0aWFsaXphdGlvbiBmYWlsZWQgd2l0aCBlcnJvcicsIGVycik7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMubmV4dChDb21tb25zSW5pdEV2ZW50RW51bS5Db21tb25zSW5pdEVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNJbml0U2VydmljZUV2ZW50cy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|