@mediusinc/mng-commons 0.21.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/i18n/en.json +20 -2
- package/assets/i18n/sl.json +18 -1
- package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
- package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
- package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
- package/esm2020/lib/api/models/index.mjs +8 -8
- package/esm2020/lib/api/models/mappers.mjs +12 -12
- package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
- package/esm2020/lib/api/models/query-param.model.mjs +67 -67
- package/esm2020/lib/api/models/query-result.model.mjs +23 -23
- package/esm2020/lib/api/models/serialization.model.mjs +1 -1
- package/esm2020/lib/api/services/api.abstract.service.mjs +57 -57
- package/esm2020/lib/api/services/crud-api.abstract.service.mjs +75 -68
- package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +30 -23
- package/esm2020/lib/api/services/index.mjs +3 -3
- package/esm2020/lib/api/utils/index.mjs +2 -2
- package/esm2020/lib/api/utils/medius-rest.util.mjs +212 -212
- package/esm2020/lib/api/utils/object-serializer.util.mjs +247 -247
- package/esm2020/lib/components/action/action.component.mjs +225 -221
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +303 -284
- package/esm2020/lib/components/action/index.mjs +5 -4
- package/esm2020/lib/components/action/localization/data-language-dropdown.component.mjs +45 -0
- package/esm2020/lib/components/action/models/action-component.model.mjs +2 -0
- package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
- package/esm2020/lib/components/action/models/action-execution.model.mjs +249 -245
- package/esm2020/lib/components/action/models/index.mjs +5 -4
- package/esm2020/lib/components/action/models/tableview-action-default-categories.model.mjs +10 -10
- package/esm2020/lib/components/action/route/action-route.component.mjs +129 -129
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +299 -299
- package/esm2020/lib/components/form/date-range/date-range.component.mjs +108 -108
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +193 -193
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +243 -219
- package/esm2020/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +38 -38
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +49 -49
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +44 -44
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +25 -25
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +149 -149
- package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +23 -23
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +180 -180
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +178 -168
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +148 -148
- package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +16 -16
- package/esm2020/lib/components/form/formly/fields/index.mjs +10 -10
- package/esm2020/lib/components/form/formly/formly.config.mjs +211 -211
- package/esm2020/lib/components/form/formly/index.mjs +1 -1
- package/esm2020/lib/components/form/formly/models/formly-config.model.mjs +1 -1
- package/esm2020/lib/components/form/formly/models/formly-field.model.mjs +1 -1
- package/esm2020/lib/components/form/formly/models/index.mjs +2 -2
- package/esm2020/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +83 -15
- package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
- package/esm2020/lib/components/form/index.mjs +4 -4
- package/esm2020/lib/components/form/models/field-action-context.model.mjs +1 -1
- package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
- package/esm2020/lib/components/form/models/form-editor.interface.mjs +1 -1
- package/esm2020/lib/components/form/models/index.mjs +2 -2
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
- package/esm2020/lib/components/layout/footer.component.mjs +16 -16
- package/esm2020/lib/components/layout/index.mjs +7 -7
- package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
- package/esm2020/lib/components/layout/menu-item.component.mjs +271 -271
- package/esm2020/lib/components/layout/menu.component.mjs +20 -20
- package/esm2020/lib/components/layout/services/index.mjs +1 -1
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +194 -194
- package/esm2020/lib/components/layout/topbar.component.mjs +64 -64
- package/esm2020/lib/components/layout/version.component.mjs +57 -57
- package/esm2020/lib/components/tableview/index.mjs +6 -6
- package/esm2020/lib/components/tableview/models/index.mjs +1 -1
- package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +122 -115
- package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +52 -52
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +119 -119
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +84 -83
- package/esm2020/lib/components/tableview/table/table.component.mjs +594 -590
- package/esm2020/lib/components/tableview/tableview.component.mjs +112 -112
- package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/editor.data-provider.mjs +37 -37
- package/esm2020/lib/data-providers/index.mjs +6 -6
- package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
- package/esm2020/lib/data-providers/table.data-provider.mjs +38 -38
- package/esm2020/lib/data-providers/tableview-crud.data-provider.mjs +24 -24
- package/esm2020/lib/data-providers/tableview.data-provider.mjs +45 -59
- package/esm2020/lib/descriptors/action/action-confirmation.descriptor.mjs +76 -76
- package/esm2020/lib/descriptors/action-button.descriptor.mjs +59 -59
- package/esm2020/lib/descriptors/action.descriptor.mjs +560 -548
- package/esm2020/lib/descriptors/column.descriptor.mjs +405 -386
- package/esm2020/lib/descriptors/editor.descriptor.mjs +290 -251
- package/esm2020/lib/descriptors/field-validation.descriptor.mjs +24 -24
- package/esm2020/lib/descriptors/field.descriptor.mjs +979 -937
- package/esm2020/lib/descriptors/filter.descriptor.mjs +320 -320
- package/esm2020/lib/descriptors/index.mjs +11 -11
- package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
- package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
- package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
- package/esm2020/lib/descriptors/model.descriptor.mjs +44 -44
- package/esm2020/lib/descriptors/table.descriptor.mjs +482 -464
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +344 -324
- package/esm2020/lib/descriptors/types/action.type.mjs +25 -25
- package/esm2020/lib/descriptors/types/column.type.mjs +20 -20
- package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
- package/esm2020/lib/descriptors/types/field.type.mjs +54 -54
- package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
- package/esm2020/lib/descriptors/types/index.mjs +6 -6
- package/esm2020/lib/descriptors/types/table.type.mjs +26 -26
- package/esm2020/lib/directives/component.directive.mjs +44 -44
- package/esm2020/lib/directives/index.mjs +2 -2
- package/esm2020/lib/directives/template.directive.mjs +27 -27
- package/esm2020/lib/mng-commons.module.mjs +475 -468
- package/esm2020/lib/models/column-value.model.mjs +1 -1
- package/esm2020/lib/models/config.model.mjs +2 -2
- package/esm2020/lib/models/enum.model.mjs +1 -1
- package/esm2020/lib/models/error.model.mjs +1 -1
- package/esm2020/lib/models/index.mjs +9 -9
- package/esm2020/lib/models/menu.model.mjs +1 -1
- package/esm2020/lib/models/tableview-attr.model.mjs +1 -1
- package/esm2020/lib/models/user.model.mjs +1 -1
- package/esm2020/lib/models/version.model.mjs +1 -1
- package/esm2020/lib/models/view-container.model.mjs +1 -1
- package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
- package/esm2020/lib/pipes/class-map.pipe.mjs +21 -21
- package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
- package/esm2020/lib/pipes/enumerate-async.pipe.mjs +37 -37
- package/esm2020/lib/pipes/enumerate.pipe.mjs +54 -54
- package/esm2020/lib/pipes/getter.pipe.mjs +19 -19
- package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
- package/esm2020/lib/pipes/index.mjs +12 -11
- package/esm2020/lib/pipes/json-path.pipe.mjs +78 -78
- package/esm2020/lib/pipes/locale-default-row-class.pipe.mjs +26 -0
- package/esm2020/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +1 -1
- package/esm2020/lib/pipes/models/internal/index.mjs +1 -1
- package/esm2020/lib/pipes/parametrize.pipe.mjs +84 -84
- package/esm2020/lib/pipes/template.pipe.mjs +23 -23
- package/esm2020/lib/router/index.mjs +2 -2
- package/esm2020/lib/router/models/index.mjs +1 -1
- package/esm2020/lib/router/models/router.model.mjs +1 -1
- package/esm2020/lib/router/route-builder.mjs +425 -425
- package/esm2020/lib/router/tableview-route-builder.mjs +186 -186
- package/esm2020/lib/security/authorization.guard.mjs +25 -25
- package/esm2020/lib/security/authorization.service.mjs +46 -46
- package/esm2020/lib/security/authorization.util.mjs +15 -15
- package/esm2020/lib/security/index.mjs +3 -3
- package/esm2020/lib/security/model/authorization.type.mjs +7 -7
- package/esm2020/lib/security/model/index.mjs +3 -3
- package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
- package/esm2020/lib/security/model/permissions.model.mjs +86 -86
- package/esm2020/lib/services/action-executor.service.mjs +552 -552
- package/esm2020/lib/services/commons.service.mjs +446 -420
- package/esm2020/lib/services/configuration.service.mjs +134 -134
- package/esm2020/lib/services/error-mapper.service.mjs +13 -13
- package/esm2020/lib/services/index.mjs +6 -6
- package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
- package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
- package/esm2020/lib/services/internal/index.mjs +2 -2
- package/esm2020/lib/services/navigation.service.mjs +47 -47
- package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
- package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
- package/esm2020/lib/services/providers/index.mjs +2 -2
- package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
- package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
- package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
- package/esm2020/lib/services/tokens/index.mjs +4 -4
- package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
- package/esm2020/lib/services/version.service.mjs +38 -38
- package/esm2020/lib/services/view-container.component.service.mjs +54 -54
- package/esm2020/lib/styles/button-style.builder.mjs +164 -164
- package/esm2020/lib/styles/index.mjs +2 -2
- package/esm2020/lib/styles/models/index.mjs +2 -2
- package/esm2020/lib/styles/models/style-level.enum.mjs +11 -11
- package/esm2020/lib/styles/models/style-size.enum.mjs +8 -8
- package/esm2020/lib/styles/styles.util.mjs +41 -41
- package/esm2020/lib/types/index.mjs +2 -2
- package/esm2020/lib/types/type.decorator.mjs +21 -21
- package/esm2020/lib/types/type.model.mjs +1 -1
- package/esm2020/lib/utils/action-data-provider.util.mjs +145 -145
- package/esm2020/lib/utils/date.util.mjs +117 -117
- package/esm2020/lib/utils/editor-formly.util.mjs +277 -268
- package/esm2020/lib/utils/enum.util.mjs +81 -81
- package/esm2020/lib/utils/i18n.util.mjs +233 -233
- package/esm2020/lib/utils/index.mjs +9 -9
- package/esm2020/lib/utils/model.util.mjs +68 -68
- package/esm2020/lib/utils/notification.util.mjs +51 -46
- package/esm2020/lib/utils/route.util.mjs +23 -23
- package/esm2020/lib/utils/string.util.mjs +26 -26
- package/esm2020/lib/utils/tableview.util.mjs +159 -159
- package/esm2020/lib/utils/type.util.mjs +92 -92
- package/esm2020/mediusinc-mng-commons.mjs +4 -4
- package/esm2020/public-api.mjs +54 -54
- package/fesm2015/mediusinc-mng-commons.mjs +13634 -13246
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +13472 -13090
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/api/models/builders/query-param.builder.d.ts +13 -13
- package/lib/api/models/filter-match-type.model.d.ts +23 -23
- package/lib/api/models/filter-param.model.d.ts +23 -23
- package/lib/api/models/index.d.ts +8 -8
- package/lib/api/models/mappers.d.ts +6 -6
- package/lib/api/models/query-mode.model.d.ts +16 -16
- package/lib/api/models/query-param.model.d.ts +31 -31
- package/lib/api/models/query-result.model.d.ts +24 -24
- package/lib/api/models/serialization.model.d.ts +8 -8
- package/lib/api/services/api.abstract.service.d.ts +24 -24
- package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
- package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
- package/lib/api/services/index.d.ts +3 -3
- package/lib/api/utils/index.d.ts +2 -2
- package/lib/api/utils/medius-rest.util.d.ts +16 -16
- package/lib/api/utils/object-serializer.util.d.ts +33 -33
- package/lib/components/action/action.component.d.ts +74 -72
- package/lib/components/action/editor/action-editor.component.d.ts +69 -69
- package/lib/components/action/index.d.ts +4 -3
- package/lib/components/action/localization/data-language-dropdown.component.d.ts +25 -0
- package/lib/components/action/models/action-component.model.d.ts +15 -0
- package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
- package/lib/components/action/models/action-execution.model.d.ts +135 -133
- package/lib/components/action/models/index.d.ts +4 -3
- package/lib/components/action/models/tableview-action-default-categories.model.d.ts +10 -10
- package/lib/components/action/route/action-route.component.d.ts +31 -31
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +61 -61
- package/lib/components/form/date-range/date-range.component.d.ts +28 -28
- package/lib/components/form/dropdown/dropdown.component.d.ts +52 -52
- package/lib/components/form/editor/form-editor.component.d.ts +52 -45
- package/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.d.ts +13 -13
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +16 -16
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +15 -15
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +14 -14
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +29 -29
- package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +11 -11
- package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +46 -46
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +24 -21
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +37 -37
- package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +7 -7
- package/lib/components/form/formly/fields/index.d.ts +10 -10
- package/lib/components/form/formly/formly.config.d.ts +14 -14
- package/lib/components/form/formly/index.d.ts +1 -1
- package/lib/components/form/formly/models/formly-config.model.d.ts +11 -11
- package/lib/components/form/formly/models/formly-field.model.d.ts +16 -16
- package/lib/components/form/formly/models/index.d.ts +2 -2
- package/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +6 -6
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +11 -6
- package/lib/components/form/formly/wrappers/index.d.ts +2 -2
- package/lib/components/form/index.d.ts +4 -4
- package/lib/components/form/models/field-action-context.model.d.ts +17 -17
- package/lib/components/form/models/form-editor.event.d.ts +37 -37
- package/lib/components/form/models/form-editor.interface.d.ts +10 -10
- package/lib/components/form/models/index.d.ts +2 -2
- package/lib/components/layout/breadcrumb.component.d.ts +8 -8
- package/lib/components/layout/footer.component.d.ts +9 -9
- package/lib/components/layout/index.d.ts +7 -7
- package/lib/components/layout/main-layout.component.d.ts +20 -20
- package/lib/components/layout/menu-item.component.d.ts +52 -52
- package/lib/components/layout/menu.component.d.ts +10 -10
- package/lib/components/layout/services/index.d.ts +1 -1
- package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
- package/lib/components/layout/topbar.component.d.ts +28 -28
- package/lib/components/layout/version.component.d.ts +19 -19
- package/lib/components/tableview/index.d.ts +6 -6
- package/lib/components/tableview/models/index.d.ts +1 -1
- package/lib/components/tableview/models/table.event.d.ts +17 -17
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +29 -28
- package/lib/components/tableview/route/tableview-route.component.d.ts +18 -18
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +38 -38
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +35 -35
- package/lib/components/tableview/table/table.component.d.ts +115 -114
- package/lib/components/tableview/tableview.component.d.ts +48 -48
- package/lib/data-providers/base.data-provider.d.ts +14 -14
- package/lib/data-providers/editor.data-provider.d.ts +25 -25
- package/lib/data-providers/index.d.ts +6 -6
- package/lib/data-providers/lookup.data-provider.d.ts +14 -14
- package/lib/data-providers/table.data-provider.d.ts +27 -27
- package/lib/data-providers/tableview-crud.data-provider.d.ts +8 -8
- package/lib/data-providers/tableview.data-provider.d.ts +33 -37
- package/lib/descriptors/action/action-confirmation.descriptor.d.ts +36 -36
- package/lib/descriptors/action-button.descriptor.d.ts +22 -22
- package/lib/descriptors/action.descriptor.d.ts +217 -212
- package/lib/descriptors/column.descriptor.d.ts +130 -125
- package/lib/descriptors/editor.descriptor.d.ts +116 -95
- package/lib/descriptors/field-validation.descriptor.d.ts +19 -19
- package/lib/descriptors/field.descriptor.d.ts +342 -332
- package/lib/descriptors/filter.descriptor.d.ts +112 -112
- package/lib/descriptors/index.d.ts +11 -11
- package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
- package/lib/descriptors/interfaces/index.d.ts +2 -2
- package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
- package/lib/descriptors/model.descriptor.d.ts +18 -18
- package/lib/descriptors/table.descriptor.d.ts +188 -182
- package/lib/descriptors/tableview.descriptor.d.ts +129 -122
- package/lib/descriptors/types/action.type.d.ts +21 -21
- package/lib/descriptors/types/column.type.d.ts +18 -18
- package/lib/descriptors/types/editor.type.d.ts +6 -6
- package/lib/descriptors/types/field.type.d.ts +46 -46
- package/lib/descriptors/types/filter.type.d.ts +27 -27
- package/lib/descriptors/types/index.d.ts +6 -6
- package/lib/descriptors/types/table.type.d.ts +22 -22
- package/lib/directives/component.directive.d.ts +16 -16
- package/lib/directives/index.d.ts +2 -2
- package/lib/directives/template.directive.d.ts +13 -13
- package/lib/mng-commons.module.d.ts +97 -95
- package/lib/models/column-value.model.d.ts +4 -4
- package/lib/models/config.model.d.ts +40 -39
- package/lib/models/enum.model.d.ts +6 -6
- package/lib/models/error.model.d.ts +14 -14
- package/lib/models/index.d.ts +9 -9
- package/lib/models/menu.model.d.ts +30 -30
- package/lib/models/tableview-attr.model.d.ts +10 -10
- package/lib/models/user.model.d.ts +8 -8
- package/lib/models/version.model.d.ts +18 -18
- package/lib/models/view-container.model.d.ts +43 -43
- package/lib/pipes/boolean.pipe.d.ts +7 -7
- package/lib/pipes/class-map.pipe.d.ts +7 -7
- package/lib/pipes/enum.pipe.d.ts +8 -8
- package/lib/pipes/enumerate-async.pipe.d.ts +14 -14
- package/lib/pipes/enumerate.pipe.d.ts +21 -21
- package/lib/pipes/getter.pipe.d.ts +7 -7
- package/lib/pipes/i18n-property.pipe.d.ts +8 -8
- package/lib/pipes/index.d.ts +11 -10
- package/lib/pipes/json-path.pipe.d.ts +13 -13
- package/lib/pipes/locale-default-row-class.pipe.d.ts +10 -0
- package/lib/pipes/models/internal/enumrate-pipe-i18n.model.d.ts +5 -5
- package/lib/pipes/models/internal/index.d.ts +1 -1
- package/lib/pipes/parametrize.pipe.d.ts +13 -13
- package/lib/pipes/template.pipe.d.ts +10 -10
- package/lib/router/index.d.ts +2 -2
- package/lib/router/models/index.d.ts +1 -1
- package/lib/router/models/router.model.d.ts +33 -33
- package/lib/router/route-builder.d.ts +98 -98
- package/lib/router/tableview-route-builder.d.ts +37 -37
- package/lib/security/authorization.guard.d.ts +11 -11
- package/lib/security/authorization.service.d.ts +19 -19
- package/lib/security/authorization.util.d.ts +5 -5
- package/lib/security/index.d.ts +3 -3
- package/lib/security/model/authorization.type.d.ts +6 -6
- package/lib/security/model/index.d.ts +3 -3
- package/lib/security/model/permission-service.interface.d.ts +6 -6
- package/lib/security/model/permissions.model.d.ts +37 -37
- package/lib/services/action-executor.service.d.ts +149 -149
- package/lib/services/commons.service.d.ts +89 -84
- package/lib/services/configuration.service.d.ts +52 -52
- package/lib/services/error-mapper.service.d.ts +7 -7
- package/lib/services/index.d.ts +6 -6
- package/lib/services/internal/commons-init.provider.d.ts +3 -3
- package/lib/services/internal/commons-init.service.d.ts +16 -16
- package/lib/services/internal/index.d.ts +2 -2
- package/lib/services/navigation.service.d.ts +14 -14
- package/lib/services/providers/config-service.provider.d.ts +6 -6
- package/lib/services/providers/formly-config.provider.d.ts +4 -4
- package/lib/services/providers/index.d.ts +2 -2
- package/lib/services/tokens/browser-storage.token.d.ts +2 -2
- package/lib/services/tokens/commons-init.token.d.ts +3 -3
- package/lib/services/tokens/default-setting.token.d.ts +2 -2
- package/lib/services/tokens/index.d.ts +4 -4
- package/lib/services/tokens/module-config.token.d.ts +3 -3
- package/lib/services/version.service.d.ts +13 -13
- package/lib/services/view-container.component.service.d.ts +31 -31
- package/lib/styles/button-style.builder.d.ts +67 -67
- package/lib/styles/index.d.ts +2 -2
- package/lib/styles/models/index.d.ts +2 -2
- package/lib/styles/models/style-level.enum.d.ts +10 -10
- package/lib/styles/models/style-size.enum.d.ts +7 -7
- package/lib/styles/styles.util.d.ts +14 -14
- package/lib/types/index.d.ts +2 -2
- package/lib/types/type.decorator.d.ts +4 -4
- package/lib/types/type.model.d.ts +23 -23
- package/lib/utils/action-data-provider.util.d.ts +20 -20
- package/lib/utils/date.util.d.ts +7 -7
- package/lib/utils/editor-formly.util.d.ts +12 -12
- package/lib/utils/enum.util.d.ts +50 -50
- package/lib/utils/i18n.util.d.ts +56 -56
- package/lib/utils/index.d.ts +9 -9
- package/lib/utils/model.util.d.ts +8 -8
- package/lib/utils/notification.util.d.ts +12 -11
- package/lib/utils/route.util.d.ts +4 -4
- package/lib/utils/string.util.d.ts +4 -4
- package/lib/utils/tableview.util.d.ts +40 -40
- package/lib/utils/type.util.d.ts +57 -57
- package/package.json +1 -1
- package/public-api.d.ts +34 -34
- package/scss/mng-overrides/_theme_datatable.scss +6 -0
- package/scss/mng-overrides/_theme_forms.scss +8 -0
- package/version-info.json +7 -7
- package/mediusinc-mng-commons-0.21.1.tgz +0 -0
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
import { combineLatest, of, tap, throwError } from 'rxjs';
|
|
2
|
-
import { catchError, map } from 'rxjs/operators';
|
|
3
|
-
export class MngConfigurationService {
|
|
4
|
-
constructor(http) {
|
|
5
|
-
this.http = http;
|
|
6
|
-
this.jsonSources = [];
|
|
7
|
-
this.objectSources = [];
|
|
8
|
-
this.configuration = { ...this.projectEnvironment };
|
|
9
|
-
/**
|
|
10
|
-
* returns true if there is no jsonSources
|
|
11
|
-
*/
|
|
12
|
-
this.skipJsonConfigsLoading = () => this.jsonSources === null || this.jsonSources.length === 0;
|
|
13
|
-
/**
|
|
14
|
-
* loads json sources or skips them returning true in both cases
|
|
15
|
-
* used for `skipJsonSourceInit` configuration parameter
|
|
16
|
-
*/
|
|
17
|
-
this.loadJsonConfigurations = () => (this.skipJsonConfigsLoading() ? of(true) : this.loadJsonSources());
|
|
18
|
-
}
|
|
19
|
-
static init(httpClient) {
|
|
20
|
-
if (!this._instance) {
|
|
21
|
-
MngConfigurationService._instance = new MngConfigurationService(httpClient);
|
|
22
|
-
}
|
|
23
|
-
return MngConfigurationService.get();
|
|
24
|
-
}
|
|
25
|
-
static get() {
|
|
26
|
-
if (!MngConfigurationService._instance) {
|
|
27
|
-
throw new Error('Configuration service instance not set. Call init first.');
|
|
28
|
-
}
|
|
29
|
-
return MngConfigurationService._instance;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Add project environment source.
|
|
33
|
-
* @param environemnt Environment.
|
|
34
|
-
*/
|
|
35
|
-
addEnvironmentSource(environment) {
|
|
36
|
-
this.projectEnvironment = environment;
|
|
37
|
-
this.mergeConfigs();
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Adds new config source from JSON file loaded from HTTP.
|
|
41
|
-
* @param url Url to JSON file.
|
|
42
|
-
* @param loadImmediately Load is by default triggered on app initialization. If immediate load is required, pass true.
|
|
43
|
-
*/
|
|
44
|
-
addJsonSource(url = this.projectEnvironment.configurationJsonSource, loadImmediately = false) {
|
|
45
|
-
if (!url) {
|
|
46
|
-
console.debug('No path to configuration file specified. Setting default.');
|
|
47
|
-
url = 'assets/config/env{{environment}}.json';
|
|
48
|
-
}
|
|
49
|
-
const sourceInfo = {
|
|
50
|
-
url: url,
|
|
51
|
-
isEnvironment: false,
|
|
52
|
-
isLoaded: false
|
|
53
|
-
};
|
|
54
|
-
this.jsonSources.push(sourceInfo);
|
|
55
|
-
console.debug(`Added JSON source: ${url}`);
|
|
56
|
-
if (loadImmediately) {
|
|
57
|
-
return this.loadJsonConfigurations();
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
return of(true);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Adds new config object from any object.
|
|
65
|
-
* @param config Config object.
|
|
66
|
-
*/
|
|
67
|
-
addObjectSource(config) {
|
|
68
|
-
this.objectSources.push(config);
|
|
69
|
-
this.mergeConfigs();
|
|
70
|
-
}
|
|
71
|
-
loadJsonSources() {
|
|
72
|
-
return combineLatest(this.jsonSources
|
|
73
|
-
.filter(source => !source.isLoaded)
|
|
74
|
-
.map(sourceInfo => {
|
|
75
|
-
let url = sourceInfo.url;
|
|
76
|
-
if (url.indexOf('{{environment}}') >= 0) {
|
|
77
|
-
sourceInfo.isEnvironment = true;
|
|
78
|
-
sourceInfo.environment = this.projectEnvironment.name || (this.projectEnvironment.production ? 'prod' : 'dev');
|
|
79
|
-
url = url.replace('{{environment}}', '.' + sourceInfo.environment);
|
|
80
|
-
}
|
|
81
|
-
console.debug(`Loading JSON source: ${sourceInfo.url} with env ${sourceInfo.environment ?? '/'}`);
|
|
82
|
-
return this.http.get(url).pipe(catchError((err) => {
|
|
83
|
-
if (sourceInfo.isEnvironment) {
|
|
84
|
-
const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');
|
|
85
|
-
sourceInfo.environment = null;
|
|
86
|
-
console.debug(`Reloading JSON source: ${sourceInfo.url} with env ${sourceInfo.environment ?? '/'}`);
|
|
87
|
-
return this.http.get(noEnvUrl);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
const message = `Configuration file ${url} not loaded (${err.status}): ${err.message}.`;
|
|
91
|
-
console.error(message);
|
|
92
|
-
return throwError(() => new Error(message));
|
|
93
|
-
}
|
|
94
|
-
}), map(configuration => {
|
|
95
|
-
sourceInfo.configuration = configuration;
|
|
96
|
-
sourceInfo.isLoaded = true;
|
|
97
|
-
console.debug(`JSON source loaded: ${sourceInfo.url}`);
|
|
98
|
-
return true;
|
|
99
|
-
}));
|
|
100
|
-
})).pipe(map(sourceResults => sourceResults.every(sr => sr)), tap(() => this.mergeConfigs()));
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Get configuration.
|
|
104
|
-
*/
|
|
105
|
-
getConfig() {
|
|
106
|
-
return this.configuration;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Get configuration value for key.
|
|
110
|
-
* @param key Configuration key.
|
|
111
|
-
*/
|
|
112
|
-
getConfigValue(key) {
|
|
113
|
-
return this.configuration[key] ? this.configuration[key] : null;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Merges configuration from multiple sources with
|
|
117
|
-
*/
|
|
118
|
-
mergeConfigs() {
|
|
119
|
-
let config = { ...this.projectEnvironment };
|
|
120
|
-
const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);
|
|
121
|
-
if (jsonConfigs.length) {
|
|
122
|
-
for (const jsonConfig of jsonConfigs) {
|
|
123
|
-
config = { ...config, ...jsonConfig };
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
if (this.objectSources.length) {
|
|
127
|
-
for (const objConfig of this.objectSources) {
|
|
128
|
-
config = { ...config, ...objConfig };
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
this.configuration = config;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
MngConfigurationService._instance = null;
|
|
1
|
+
import { combineLatest, of, tap, throwError } from 'rxjs';
|
|
2
|
+
import { catchError, map } from 'rxjs/operators';
|
|
3
|
+
export class MngConfigurationService {
|
|
4
|
+
constructor(http) {
|
|
5
|
+
this.http = http;
|
|
6
|
+
this.jsonSources = [];
|
|
7
|
+
this.objectSources = [];
|
|
8
|
+
this.configuration = { ...this.projectEnvironment };
|
|
9
|
+
/**
|
|
10
|
+
* returns true if there is no jsonSources
|
|
11
|
+
*/
|
|
12
|
+
this.skipJsonConfigsLoading = () => this.jsonSources === null || this.jsonSources.length === 0;
|
|
13
|
+
/**
|
|
14
|
+
* loads json sources or skips them returning true in both cases
|
|
15
|
+
* used for `skipJsonSourceInit` configuration parameter
|
|
16
|
+
*/
|
|
17
|
+
this.loadJsonConfigurations = () => (this.skipJsonConfigsLoading() ? of(true) : this.loadJsonSources());
|
|
18
|
+
}
|
|
19
|
+
static init(httpClient) {
|
|
20
|
+
if (!this._instance) {
|
|
21
|
+
MngConfigurationService._instance = new MngConfigurationService(httpClient);
|
|
22
|
+
}
|
|
23
|
+
return MngConfigurationService.get();
|
|
24
|
+
}
|
|
25
|
+
static get() {
|
|
26
|
+
if (!MngConfigurationService._instance) {
|
|
27
|
+
throw new Error('Configuration service instance not set. Call init first.');
|
|
28
|
+
}
|
|
29
|
+
return MngConfigurationService._instance;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Add project environment source.
|
|
33
|
+
* @param environemnt Environment.
|
|
34
|
+
*/
|
|
35
|
+
addEnvironmentSource(environment) {
|
|
36
|
+
this.projectEnvironment = environment;
|
|
37
|
+
this.mergeConfigs();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Adds new config source from JSON file loaded from HTTP.
|
|
41
|
+
* @param url Url to JSON file.
|
|
42
|
+
* @param loadImmediately Load is by default triggered on app initialization. If immediate load is required, pass true.
|
|
43
|
+
*/
|
|
44
|
+
addJsonSource(url = this.projectEnvironment.configurationJsonSource, loadImmediately = false) {
|
|
45
|
+
if (!url) {
|
|
46
|
+
console.debug('No path to configuration file specified. Setting default.');
|
|
47
|
+
url = 'assets/config/env{{environment}}.json';
|
|
48
|
+
}
|
|
49
|
+
const sourceInfo = {
|
|
50
|
+
url: url,
|
|
51
|
+
isEnvironment: false,
|
|
52
|
+
isLoaded: false
|
|
53
|
+
};
|
|
54
|
+
this.jsonSources.push(sourceInfo);
|
|
55
|
+
console.debug(`Added JSON source: ${url}`);
|
|
56
|
+
if (loadImmediately) {
|
|
57
|
+
return this.loadJsonConfigurations();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return of(true);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Adds new config object from any object.
|
|
65
|
+
* @param config Config object.
|
|
66
|
+
*/
|
|
67
|
+
addObjectSource(config) {
|
|
68
|
+
this.objectSources.push(config);
|
|
69
|
+
this.mergeConfigs();
|
|
70
|
+
}
|
|
71
|
+
loadJsonSources() {
|
|
72
|
+
return combineLatest(this.jsonSources
|
|
73
|
+
.filter(source => !source.isLoaded)
|
|
74
|
+
.map(sourceInfo => {
|
|
75
|
+
let url = sourceInfo.url;
|
|
76
|
+
if (url.indexOf('{{environment}}') >= 0) {
|
|
77
|
+
sourceInfo.isEnvironment = true;
|
|
78
|
+
sourceInfo.environment = this.projectEnvironment.name || (this.projectEnvironment.production ? 'prod' : 'dev');
|
|
79
|
+
url = url.replace('{{environment}}', '.' + sourceInfo.environment);
|
|
80
|
+
}
|
|
81
|
+
console.debug(`Loading JSON source: ${sourceInfo.url} with env ${sourceInfo.environment ?? '/'}`);
|
|
82
|
+
return this.http.get(url).pipe(catchError((err) => {
|
|
83
|
+
if (sourceInfo.isEnvironment) {
|
|
84
|
+
const noEnvUrl = sourceInfo.url.replace('{{environment}}', '');
|
|
85
|
+
sourceInfo.environment = null;
|
|
86
|
+
console.debug(`Reloading JSON source: ${sourceInfo.url} with env ${sourceInfo.environment ?? '/'}`);
|
|
87
|
+
return this.http.get(noEnvUrl);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const message = `Configuration file ${url} not loaded (${err.status}): ${err.message}.`;
|
|
91
|
+
console.error(message);
|
|
92
|
+
return throwError(() => new Error(message));
|
|
93
|
+
}
|
|
94
|
+
}), map(configuration => {
|
|
95
|
+
sourceInfo.configuration = configuration;
|
|
96
|
+
sourceInfo.isLoaded = true;
|
|
97
|
+
console.debug(`JSON source loaded: ${sourceInfo.url}`);
|
|
98
|
+
return true;
|
|
99
|
+
}));
|
|
100
|
+
})).pipe(map(sourceResults => sourceResults.every(sr => sr)), tap(() => this.mergeConfigs()));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get configuration.
|
|
104
|
+
*/
|
|
105
|
+
getConfig() {
|
|
106
|
+
return this.configuration;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get configuration value for key.
|
|
110
|
+
* @param key Configuration key.
|
|
111
|
+
*/
|
|
112
|
+
getConfigValue(key) {
|
|
113
|
+
return this.configuration[key] ? this.configuration[key] : null;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Merges configuration from multiple sources with
|
|
117
|
+
*/
|
|
118
|
+
mergeConfigs() {
|
|
119
|
+
let config = { ...this.projectEnvironment };
|
|
120
|
+
const jsonConfigs = this.jsonSources.filter(source => source.isLoaded && typeof source.configuration === 'object').map(source => source.configuration);
|
|
121
|
+
if (jsonConfigs.length) {
|
|
122
|
+
for (const jsonConfig of jsonConfigs) {
|
|
123
|
+
config = { ...config, ...jsonConfig };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (this.objectSources.length) {
|
|
127
|
+
for (const objConfig of this.objectSources) {
|
|
128
|
+
config = { ...config, ...objConfig };
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
this.configuration = config;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
MngConfigurationService._instance = null;
|
|
135
135
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFhLGFBQWEsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE1BQU0sT0FBTyx1QkFBdUI7SUF1QmhDLFlBQTRCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFMcEMsZ0JBQVcsR0FBOEIsRUFBRSxDQUFDO1FBQzVDLGtCQUFhLEdBQWUsRUFBRSxDQUFDO1FBRS9CLGtCQUFhLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBQyxDQUFDO1FBaURyRDs7V0FFRztRQUNLLDJCQUFzQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUVsRzs7O1dBR0c7UUFDSSwyQkFBc0IsR0FBRyxHQUF3QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQXhEaEYsQ0FBQztJQXBCekMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFzQjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQix1QkFBdUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMvRTtRQUNELE9BQU8sdUJBQXVCLENBQUMsR0FBRyxFQUFF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QUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRSxDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZO1FBQ2hCLElBQUksTUFBTSxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUMsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksT0FBTyxNQUFNLENBQUMsYUFBYSxLQUFLLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2SixJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7Z0JBQ2xDLE1BQU0sR0FBRyxFQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsVUFBVSxFQUFDLENBQUM7YUFDdkM7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7WUFDM0IsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN4QyxNQUFNLEdBQUcsRUFBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLFNBQVMsRUFBQyxDQUFDO2FBQ3RDO1NBQ0o7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxDQUFDOztBQTdKYyxpQ0FBUyxHQUFtQyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YsIHRhcCwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgTW5nQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2UgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaW5pdChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XG4gICAgICAgICAgICBNbmdDb25maWd1cmF0aW9uU2VydmljZS5faW5zdGFuY2UgPSBuZXcgTW5nQ29uZmlndXJhdGlvblNlcnZpY2UoaHR0cENsaWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLmdldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0KCk6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgICAgICAgaWYgKCFNbmdDb25maWd1cmF0aW9uU2VydmljZS5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29uZmlndXJhdGlvbiBzZXJ2aWNlIGluc3RhbmNlIG5vdCBzZXQuIENhbGwgaW5pdCBmaXJzdC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTW5nQ29uZmlndXJhdGlvblNlcnZpY2UuX2luc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvamVjdEVudmlyb25tZW50PzogYW55O1xuICAgIHByaXZhdGUganNvblNvdXJjZXM6IEFycmF5PEpzb25Tb3VyY2VMb2FkSW5mbz4gPSBbXTtcbiAgICBwcml2YXRlIG9iamVjdFNvdXJjZXM6IEFycmF5PGFueT4gPSBbXTtcblxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvbiA9IHsuLi50aGlzLnByb2plY3RFbnZpcm9ubWVudH07XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICAgIC8qKlxuICAgICAqIEFkZCBwcm9qZWN0IGVudmlyb25tZW50IHNvdXJjZS5cbiAgICAgKiBAcGFyYW0gZW52aXJvbmVtbnQgRW52aXJvbm1lbnQuXG4gICAgICovXG4gICAgcHVibGljIGFkZEVudmlyb25tZW50U291cmNlKGVudmlyb25tZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9qZWN0RW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICAgICAgdGhpcy5tZXJnZUNvbmZpZ3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIG5ldyBjb25maWcgc291cmNlIGZyb20gSlNPTiBmaWxlIGxvYWRlZCBmcm9tIEhUVFAuXG4gICAgICogQHBhcmFtIHVybCBVcmwgdG8gSlNPTiBmaWxlLlxuICAgICAqIEBwYXJhbSBsb2FkSW1tZWRpYXRlbHkgTG9hZCBpcyBieSBkZWZhdWx0IHRyaWdnZXJlZCBvbiBhcHAgaW5pdGlhbGl6YXRpb24uIElmIGltbWVkaWF0ZSBsb2FkIGlzIHJlcXVpcmVkLCBwYXNzIHRydWUuXG4gICAgICovXG4gICAgcHVibGljIGFkZEpzb25Tb3VyY2UodXJsOiBzdHJpbmcgPSB0aGlzLnByb2plY3RFbnZpcm9ubWVudC5jb25maWd1cmF0aW9uSnNvblNvdXJjZSwgbG9hZEltbWVkaWF0ZWx5ID0gZmFsc2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ05vIHBhdGggdG8gY29uZmlndXJhdGlvbiBmaWxlIHNwZWNpZmllZC4gU2V0dGluZyBkZWZhdWx0LicpO1xuICAgICAgICAgICAgdXJsID0gJ2Fzc2V0cy9jb25maWcvZW52e3tlbnZpcm9ubWVudH19Lmpzb24nO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc291cmNlSW5mbzogSnNvblNvdXJjZUxvYWRJbmZvID0ge1xuICAgICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgICBpc0Vudmlyb25tZW50OiBmYWxzZSxcbiAgICAgICAgICAgIGlzTG9hZGVkOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmpzb25Tb3VyY2VzLnB1c2goc291cmNlSW5mbyk7XG5cbiAgICAgICAgY29uc29sZS5kZWJ1ZyhgQWRkZWQgSlNPTiBzb3VyY2U6ICR7dXJsfWApO1xuXG4gICAgICAgIGlmIChsb2FkSW1tZWRpYXRlbHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRKc29uQ29uZmlndXJhdGlvbnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbmV3IGNvbmZpZyBvYmplY3QgZnJvbSBhbnkgb2JqZWN0LlxuICAgICAqIEBwYXJhbSBjb25maWcgQ29uZmlnIG9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkT2JqZWN0U291cmNlKGNvbmZpZzogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub2JqZWN0U291cmNlcy5wdXNoKGNvbmZpZyk7XG4gICAgICAgIHRoaXMubWVyZ2VDb25maWdzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIG5vIGpzb25Tb3VyY2VzXG4gICAgICovXG4gICAgcHJpdmF0ZSBza2lwSnNvbkNvbmZpZ3NMb2FkaW5nID0gKCkgPT4gdGhpcy5qc29uU291cmNlcyA9PT0gbnVsbCB8fCB0aGlzLmpzb25Tb3VyY2VzLmxlbmd0aCA9PT0gMDtcblxuICAgIC8qKlxuICAgICAqIGxvYWRzIGpzb24gc291cmNlcyBvciBza2lwcyB0aGVtIHJldHVybmluZyB0cnVlIGluIGJvdGggY2FzZXNcbiAgICAgKiB1c2VkIGZvciBgc2tpcEpzb25Tb3VyY2VJbml0YCBjb25maWd1cmF0aW9uIHBhcmFtZXRlclxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkSnNvbkNvbmZpZ3VyYXRpb25zID0gKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPT4gKHRoaXMuc2tpcEpzb25Db25maWdzTG9hZGluZygpID8gb2YodHJ1ZSkgOiB0aGlzLmxvYWRKc29uU291cmNlcygpKTtcblxuICAgIHByaXZhdGUgbG9hZEpzb25Tb3VyY2VzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChcbiAgICAgICAgICAgIHRoaXMuanNvblNvdXJjZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKHNvdXJjZSA9PiAhc291cmNlLmlzTG9hZGVkKVxuICAgICAgICAgICAgICAgIC5tYXAoc291cmNlSW5mbyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBzb3VyY2VJbmZvLnVybDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCd7e2Vudmlyb25tZW50fX0nKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJbmZvLmlzRW52aXJvbm1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlSW5mby5lbnZpcm9ubWVudCA9IHRoaXMucHJvamVjdEVudmlyb25tZW50Lm5hbWUgfHwgKHRoaXMucHJvamVjdEVudmlyb25tZW50LnByb2R1Y3Rpb24gPyAncHJvZCcgOiAnZGV2Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgne3tlbnZpcm9ubWVudH19JywgJy4nICsgc291cmNlSW5mby5lbnZpcm9ubWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBMb2FkaW5nIEpTT04gc291cmNlOiAke3NvdXJjZUluZm8udXJsfSB3aXRoIGVudiAke3NvdXJjZUluZm8uZW52aXJvbm1lbnQgPz8gJy8nfWApO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PG9iamVjdD4odXJsKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VJbmZvLmlzRW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9FbnZVcmwgPSBzb3VyY2VJbmZvLnVybC5yZXBsYWNlKCd7e2Vudmlyb25tZW50fX0nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUluZm8uZW52aXJvbm1lbnQgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYFJlbG9hZGluZyBKU09OIHNvdXJjZTogJHtzb3VyY2VJbmZvLnVybH0gd2l0aCBlbnYgJHtzb3VyY2VJbmZvLmVudmlyb25tZW50ID8/ICcvJ31gKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxvYmplY3Q+KG5vRW52VXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYENvbmZpZ3VyYXRpb24gZmlsZSAke3VybH0gbm90IGxvYWRlZCAoJHtlcnIuc3RhdHVzfSk6ICR7ZXJyLm1lc3NhZ2V9LmA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoY29uZmlndXJhdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlSW5mby5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VJbmZvLmlzTG9hZGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYEpTT04gc291cmNlIGxvYWRlZDogJHtzb3VyY2VJbmZvLnVybH1gKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICBtYXAoc291cmNlUmVzdWx0cyA9PiBzb3VyY2VSZXN1bHRzLmV2ZXJ5KHNyID0+IHNyKSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5tZXJnZUNvbmZpZ3MoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjb25maWd1cmF0aW9uIHZhbHVlIGZvciBrZXkuXG4gICAgICogQHBhcmFtIGtleSBDb25maWd1cmF0aW9uIGtleS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbltrZXldID8gdGhpcy5jb25maWd1cmF0aW9uW2tleV0gOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyBjb25maWd1cmF0aW9uIGZyb20gbXVsdGlwbGUgc291cmNlcyB3aXRoXG4gICAgICovXG4gICAgcHJpdmF0ZSBtZXJnZUNvbmZpZ3MoKSB7XG4gICAgICAgIGxldCBjb25maWcgPSB7Li4udGhpcy5wcm9qZWN0RW52aXJvbm1lbnR9O1xuICAgICAgICBjb25zdCBqc29uQ29uZmlncyA9IHRoaXMuanNvblNvdXJjZXMuZmlsdGVyKHNvdXJjZSA9PiBzb3VyY2UuaXNMb2FkZWQgJiYgdHlwZW9mIHNvdXJjZS5jb25maWd1cmF0aW9uID09PSAnb2JqZWN0JykubWFwKHNvdXJjZSA9PiBzb3VyY2UuY29uZmlndXJhdGlvbik7XG4gICAgICAgIGlmIChqc29uQ29uZmlncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QganNvbkNvbmZpZyBvZiBqc29uQ29uZmlncykge1xuICAgICAgICAgICAgICAgIGNvbmZpZyA9IHsuLi5jb25maWcsIC4uLmpzb25Db25maWd9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9iamVjdFNvdXJjZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9iakNvbmZpZyBvZiB0aGlzLm9iamVjdFNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICBjb25maWcgPSB7Li4uY29uZmlnLCAuLi5vYmpDb25maWd9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZztcbiAgICB9XG59XG5cbmludGVyZmFjZSBKc29uU291cmNlTG9hZEluZm8ge1xuICAgIHVybDogc3RyaW5nO1xuICAgIGlzTG9hZGVkOiBib29sZWFuO1xuICAgIGlzRW52aXJvbm1lbnQ6IGJvb2xlYW47XG4gICAgZW52aXJvbm1lbnQ/OiBzdHJpbmcgfCBudWxsO1xuICAgIGNvbmZpZ3VyYXRpb24/OiBvYmplY3Q7XG59XG4iXX0=
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export class MngErrorMapperService {
|
|
2
|
-
}
|
|
3
|
-
export class DefaultMngErrorMapperService extends MngErrorMapperService {
|
|
4
|
-
toMngError(error, mngError) {
|
|
5
|
-
if (!mngError) {
|
|
6
|
-
mngError = {
|
|
7
|
-
name: error?.name ?? 'UnknownError',
|
|
8
|
-
message: error.message ?? 'Unknown error'
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
return mngError;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
1
|
+
export class MngErrorMapperService {
|
|
2
|
+
}
|
|
3
|
+
export class DefaultMngErrorMapperService extends MngErrorMapperService {
|
|
4
|
+
toMngError(error, mngError) {
|
|
5
|
+
if (!mngError) {
|
|
6
|
+
mngError = {
|
|
7
|
+
name: error?.name ?? 'UnknownError',
|
|
8
|
+
message: error.message ?? 'Unknown error'
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
return mngError;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
14
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItbWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Vycm9yLW1hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBZ0IscUJBQXFCO0NBRTFDO0FBRUQsTUFBTSxPQUFPLDRCQUE2QixTQUFRLHFCQUFxQjtJQUNuRSxVQUFVLENBQUMsS0FBVyxFQUFFLFFBQW1CO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWCxRQUFRLEdBQUc7Z0JBQ1AsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksY0FBYztnQkFDbkMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksZUFBZTthQUM1QyxDQUFDO1NBQ0w7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01uZ0Vycm9yfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTW5nRXJyb3JNYXBwZXJTZXJ2aWNlIHtcbiAgICBhYnN0cmFjdCB0b01uZ0Vycm9yKGVycm9yPzogYW55LCBtbmdFcnJvcj86IE1uZ0Vycm9yKTogTW5nRXJyb3I7XG59XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0TW5nRXJyb3JNYXBwZXJTZXJ2aWNlIGV4dGVuZHMgTW5nRXJyb3JNYXBwZXJTZXJ2aWNlIHtcbiAgICB0b01uZ0Vycm9yKGVycm9yPzogYW55LCBtbmdFcnJvcj86IE1uZ0Vycm9yKTogTW5nRXJyb3Ige1xuICAgICAgICBpZiAoIW1uZ0Vycm9yKSB7XG4gICAgICAgICAgICBtbmdFcnJvciA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBlcnJvcj8ubmFtZSA/PyAnVW5rbm93bkVycm9yJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlID8/ICdVbmtub3duIGVycm9yJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW5nRXJyb3I7XG4gICAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './action-executor.service';
|
|
2
|
-
export * from './configuration.service';
|
|
3
|
-
export * from './commons.service';
|
|
4
|
-
export * from './error-mapper.service';
|
|
5
|
-
export * from './navigation.service';
|
|
6
|
-
export * from './view-container.component.service';
|
|
1
|
+
export * from './action-executor.service';
|
|
2
|
+
export * from './configuration.service';
|
|
3
|
+
export * from './commons.service';
|
|
4
|
+
export * from './error-mapper.service';
|
|
5
|
+
export * from './navigation.service';
|
|
6
|
+
export * from './view-container.component.service';
|
|
7
7
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24tZXhlY3V0b3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLW1hcHBlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdmlldy1jb250YWluZXIuY29tcG9uZW50LnNlcnZpY2UnO1xuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function mngCommonsInitializerProvider(mngCommonsInit) {
|
|
2
|
-
return () => mngCommonsInit.initialize();
|
|
3
|
-
}
|
|
1
|
+
export function mngCommonsInitializerProvider(mngCommonsInit) {
|
|
2
|
+
return () => mngCommonsInit.initialize();
|
|
3
|
+
}
|
|
4
4
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pbnRlcm5hbC9jb21tb25zLWluaXQucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLDZCQUE2QixDQUFDLGNBQXFDO0lBQy9FLE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01uZ0NvbW1vbnNJbml0U2VydmljZX0gZnJvbSAnLi9jb21tb25zLWluaXQuc2VydmljZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmdDb21tb25zSW5pdGlhbGl6ZXJQcm92aWRlcihtbmdDb21tb25zSW5pdDogTW5nQ29tbW9uc0luaXRTZXJ2aWNlKTogKCkgPT4gT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuICgpID0+IG1uZ0NvbW1vbnNJbml0LmluaXRpYWxpemUoKTtcbn1cbiJdfQ==
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { combineLatest, mergeMap, of } from 'rxjs';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { MNG_COMMONS_INITIALIZER_IT } from '../tokens';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@ngx-translate/core";
|
|
7
|
-
import * as i2 from "../configuration.service";
|
|
8
|
-
import * as i3 from "../commons.service";
|
|
9
|
-
export class MngCommonsInitService {
|
|
10
|
-
constructor(translate, configurationService, mngCommons, commonsInitializers) {
|
|
11
|
-
this.translate = translate;
|
|
12
|
-
this.configurationService = configurationService;
|
|
13
|
-
this.mngCommons = mngCommons;
|
|
14
|
-
this.commonsInitializers = commonsInitializers;
|
|
15
|
-
this.isInitialized = false;
|
|
16
|
-
}
|
|
17
|
-
initialize() {
|
|
18
|
-
if (this.isInitialized) {
|
|
19
|
-
return of(void 0);
|
|
20
|
-
}
|
|
21
|
-
console.debug(`Initializing @mediusinc/mng-commons.`);
|
|
22
|
-
return this.configurationService.loadJsonConfigurations().pipe(mergeMap(() => {
|
|
23
|
-
if (this.commonsInitializers) {
|
|
24
|
-
console.debug(`Module initializers for @mediusinc/mng-commons.`);
|
|
25
|
-
return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
return of(true);
|
|
29
|
-
}
|
|
30
|
-
}), map(() => this.mngCommons.reset()));
|
|
31
|
-
this.isInitialized = true;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
MngCommonsInitService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngCommonsInitService, deps: [{ token: i1.TranslateService }, { token: i2.MngConfigurationService }, { token: i3.MngCommonsService }, { token: MNG_COMMONS_INITIALIZER_IT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
-
MngCommonsInitService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngCommonsInitService });
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngCommonsInitService, decorators: [{
|
|
37
|
-
type: Injectable
|
|
38
|
-
}], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.MngConfigurationService }, { type: i3.MngCommonsService }, { type: undefined, decorators: [{
|
|
39
|
-
type: Inject,
|
|
40
|
-
args: [MNG_COMMONS_INITIALIZER_IT]
|
|
41
|
-
}, {
|
|
42
|
-
type: Optional
|
|
43
|
-
}] }]; } });
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { combineLatest, mergeMap, of } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { MNG_COMMONS_INITIALIZER_IT } from '../tokens';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ngx-translate/core";
|
|
7
|
+
import * as i2 from "../configuration.service";
|
|
8
|
+
import * as i3 from "../commons.service";
|
|
9
|
+
export class MngCommonsInitService {
|
|
10
|
+
constructor(translate, configurationService, mngCommons, commonsInitializers) {
|
|
11
|
+
this.translate = translate;
|
|
12
|
+
this.configurationService = configurationService;
|
|
13
|
+
this.mngCommons = mngCommons;
|
|
14
|
+
this.commonsInitializers = commonsInitializers;
|
|
15
|
+
this.isInitialized = false;
|
|
16
|
+
}
|
|
17
|
+
initialize() {
|
|
18
|
+
if (this.isInitialized) {
|
|
19
|
+
return of(void 0);
|
|
20
|
+
}
|
|
21
|
+
console.debug(`Initializing @mediusinc/mng-commons.`);
|
|
22
|
+
return this.configurationService.loadJsonConfigurations().pipe(mergeMap(() => {
|
|
23
|
+
if (this.commonsInitializers) {
|
|
24
|
+
console.debug(`Module initializers for @mediusinc/mng-commons.`);
|
|
25
|
+
return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return of(true);
|
|
29
|
+
}
|
|
30
|
+
}), map(() => this.mngCommons.reset()));
|
|
31
|
+
this.isInitialized = true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
MngCommonsInitService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngCommonsInitService, deps: [{ token: i1.TranslateService }, { token: i2.MngConfigurationService }, { token: i3.MngCommonsService }, { token: MNG_COMMONS_INITIALIZER_IT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
+
MngCommonsInitService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngCommonsInitService });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngCommonsInitService, decorators: [{
|
|
37
|
+
type: Injectable
|
|
38
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.MngConfigurationService }, { type: i3.MngCommonsService }, { type: undefined, decorators: [{
|
|
39
|
+
type: Inject,
|
|
40
|
+
args: [MNG_COMMONS_INITIALIZER_IT]
|
|
41
|
+
}, {
|
|
42
|
+
type: Optional
|
|
43
|
+
}] }]; } });
|
|
44
44
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUczRCxPQUFPLEVBQWEsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSW5DLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7QUFHckQsTUFBTSxPQUFPLHFCQUFxQjtJQUc5QixZQUNZLFNBQTJCLEVBQzNCLG9CQUE2QyxFQUM3QyxVQUE2QixFQUM0QixtQkFBNkQ7UUFIdEgsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM0Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTBDO1FBTjFILGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBTzNCLENBQUM7SUFFRyxVQUFVO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxJQUFJLENBQzFELFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO2dCQUNqRSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3hGO2lCQUFNO2dCQUNILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25CO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDckMsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7O2tIQTlCUSxxQkFBcUIsMEhBT2xCLDBCQUEwQjtzSEFQN0IscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQVFGLE1BQU07MkJBQUMsMEJBQTBCOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgbWVyZ2VNYXAsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2V9IGZyb20gJy4uL2NvbW1vbnMuc2VydmljZSc7XG5pbXBvcnQge01uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtNTkdfQ09NTU9OU19JTklUSUFMSVpFUl9JVH0gZnJvbSAnLi4vdG9rZW5zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1uZ0NvbW1vbnNJbml0U2VydmljZSB7XG4gICAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG1uZ0NvbW1vbnM6IE1uZ0NvbW1vbnNTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KE1OR19DT01NT05TX0lOSVRJQUxJWkVSX0lUKSBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbnNJbml0aWFsaXplcnM6IFJlYWRvbmx5QXJyYXk8KCkgPT4gT2JzZXJ2YWJsZTx1bmtub3duPj5cbiAgICApIHt9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmRlYnVnKGBJbml0aWFsaXppbmcgQG1lZGl1c2luYy9tbmctY29tbW9ucy5gKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5sb2FkSnNvbkNvbmZpZ3VyYXRpb25zKCkucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb21tb25zSW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYE1vZHVsZSBpbml0aWFsaXplcnMgZm9yIEBtZWRpdXNpbmMvbW5nLWNvbW1vbnMuYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHRoaXMuY29tbW9uc0luaXRpYWxpemVycy5tYXAoY2kgPT4gY2koKSkpLnBpcGUobWFwKHJlcyA9PiByZXMpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5tbmdDb21tb25zLnJlc2V0KCkpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './commons-init.provider';
|
|
2
|
-
export * from './commons-init.service';
|
|
1
|
+
export * from './commons-init.provider';
|
|
2
|
+
export * from './commons-init.service';
|
|
3
3
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbW9ucy1pbml0LnByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9ucy1pbml0LnNlcnZpY2UnO1xuIl19
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { NavigationEnd } from '@angular/router';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/router";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
export class MngNavigationService {
|
|
7
|
-
constructor(router, location) {
|
|
8
|
-
this.router = router;
|
|
9
|
-
this.location = location;
|
|
10
|
-
this.history = [];
|
|
11
|
-
this.router.events.subscribe(event => {
|
|
12
|
-
if (event instanceof NavigationEnd) {
|
|
13
|
-
this.history.push(event.urlAfterRedirects);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
getCurrentLocation() {
|
|
18
|
-
if (this.history.length > 0) {
|
|
19
|
-
return this.history[this.history.length - 1];
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
getPreviousLocation() {
|
|
26
|
-
if (this.history.length > 1) {
|
|
27
|
-
return this.history[this.history.length - 2];
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
back() {
|
|
34
|
-
this.history.pop();
|
|
35
|
-
if (this.history.length > 0) {
|
|
36
|
-
this.location.back();
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
this.router.navigateByUrl('/');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
MngNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngNavigationService, deps: [{ token: i1.Router }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
-
MngNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngNavigationService });
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngNavigationService, decorators: [{
|
|
46
|
-
type: Injectable
|
|
47
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Location }]; } });
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NavigationEnd } from '@angular/router';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class MngNavigationService {
|
|
7
|
+
constructor(router, location) {
|
|
8
|
+
this.router = router;
|
|
9
|
+
this.location = location;
|
|
10
|
+
this.history = [];
|
|
11
|
+
this.router.events.subscribe(event => {
|
|
12
|
+
if (event instanceof NavigationEnd) {
|
|
13
|
+
this.history.push(event.urlAfterRedirects);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
getCurrentLocation() {
|
|
18
|
+
if (this.history.length > 0) {
|
|
19
|
+
return this.history[this.history.length - 1];
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
getPreviousLocation() {
|
|
26
|
+
if (this.history.length > 1) {
|
|
27
|
+
return this.history[this.history.length - 2];
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
back() {
|
|
34
|
+
this.history.pop();
|
|
35
|
+
if (this.history.length > 0) {
|
|
36
|
+
this.location.back();
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.router.navigateByUrl('/');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
MngNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngNavigationService, deps: [{ token: i1.Router }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
44
|
+
MngNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngNavigationService });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngNavigationService, decorators: [{
|
|
46
|
+
type: Injectable
|
|
47
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.Location }]; } });
|
|
48
48
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFHdEQsTUFBTSxPQUFPLG9CQUFvQjtJQUc3QixZQUFvQixNQUFjLEVBQVUsUUFBa0I7UUFBMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFGdEQsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFHaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDOUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQjtRQUN0QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRU0sSUFBSTtRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QjthQUFNO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDOztpSEFsQ1Esb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNbmdOYXZpZ2F0aW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSBoaXN0b3J5OiBBcnJheTxzdHJpbmc+ID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbikge1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnkucHVzaChldmVudC51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50TG9jYXRpb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLmhpc3RvcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmV2aW91c0xvY2F0aW9uKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYmFjaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5LnBvcCgpO1xuICAgICAgICBpZiAodGhpcy5oaXN0b3J5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { combineLatest, of } from 'rxjs';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
3
|
-
import { MngConfigurationService } from '../configuration.service';
|
|
4
|
-
export const mngConfigurationServiceProvider = (httpClient, moduleConfig) => {
|
|
5
|
-
const service = MngConfigurationService.init(httpClient);
|
|
6
|
-
if (moduleConfig?.configuration?.projectEnvironment) {
|
|
7
|
-
service.addEnvironmentSource(moduleConfig.configuration.projectEnvironment);
|
|
8
|
-
}
|
|
9
|
-
return service;
|
|
10
|
-
};
|
|
11
|
-
export function mngConfigJsonAppInitializerProvider(configService, moduleConfig) {
|
|
12
|
-
return () => {
|
|
13
|
-
if (moduleConfig?.configuration?.skipJsonSourceInit) {
|
|
14
|
-
return of(false);
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
const jsonSource = moduleConfig?.configuration?.jsonSource;
|
|
18
|
-
if (!jsonSource) {
|
|
19
|
-
return configService.addJsonSource();
|
|
20
|
-
}
|
|
21
|
-
else if (Array.isArray(jsonSource)) {
|
|
22
|
-
return combineLatest(jsonSource.map(source => configService.addJsonSource(source))).pipe(map(sourcesRes => sourcesRes.every(s => s)));
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
return configService.addJsonSource(jsonSource);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
}
|
|
1
|
+
import { combineLatest, of } from 'rxjs';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { MngConfigurationService } from '../configuration.service';
|
|
4
|
+
export const mngConfigurationServiceProvider = (httpClient, moduleConfig) => {
|
|
5
|
+
const service = MngConfigurationService.init(httpClient);
|
|
6
|
+
if (moduleConfig?.configuration?.projectEnvironment) {
|
|
7
|
+
service.addEnvironmentSource(moduleConfig.configuration.projectEnvironment);
|
|
8
|
+
}
|
|
9
|
+
return service;
|
|
10
|
+
};
|
|
11
|
+
export function mngConfigJsonAppInitializerProvider(configService, moduleConfig) {
|
|
12
|
+
return () => {
|
|
13
|
+
if (moduleConfig?.configuration?.skipJsonSourceInit) {
|
|
14
|
+
return of(false);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
const jsonSource = moduleConfig?.configuration?.jsonSource;
|
|
18
|
+
if (!jsonSource) {
|
|
19
|
+
return configService.addJsonSource();
|
|
20
|
+
}
|
|
21
|
+
else if (Array.isArray(jsonSource)) {
|
|
22
|
+
return combineLatest(jsonSource.map(source => configService.addJsonSource(source))).pipe(map(sourcesRes => sourcesRes.every(s => s)));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return configService.addJsonSource(jsonSource);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
30
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXNlcnZpY2UucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Byb3ZpZGVycy9jb25maWctc2VydmljZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWEsYUFBYSxFQUFFLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxVQUFzQixFQUFFLFlBQTZCLEVBQTJCLEVBQUU7SUFDOUgsTUFBTSxPQUFPLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELElBQUksWUFBWSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRTtRQUNqRCxPQUFPLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBQy9FO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLG1DQUFtQyxDQUFDLGFBQXNDLEVBQUUsWUFBNkI7SUFDckgsT0FBTyxHQUFHLEVBQUU7UUFDUixJQUFJLFlBQVksRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUU7WUFDakQsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEI7YUFBTTtZQUNILE1BQU0sVUFBVSxHQUFHLFlBQVksRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDO1lBQzNELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2IsT0FBTyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNsQyxPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekk7aUJBQU07Z0JBQ0gsT0FBTyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0o7SUFDTCxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNbmdNb2R1bGVDb25maWd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge01uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgbW5nQ29uZmlndXJhdGlvblNlcnZpY2VQcm92aWRlciA9IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBtb2R1bGVDb25maWc6IE1uZ01vZHVsZUNvbmZpZyk6IE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlID0+IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gTW5nQ29uZmlndXJhdGlvblNlcnZpY2UuaW5pdChodHRwQ2xpZW50KTtcbiAgICBpZiAobW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5wcm9qZWN0RW52aXJvbm1lbnQpIHtcbiAgICAgICAgc2VydmljZS5hZGRFbnZpcm9ubWVudFNvdXJjZShtb2R1bGVDb25maWcuY29uZmlndXJhdGlvbi5wcm9qZWN0RW52aXJvbm1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gc2VydmljZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmdDb25maWdKc29uQXBwSW5pdGlhbGl6ZXJQcm92aWRlcihjb25maWdTZXJ2aWNlOiBNbmdDb25maWd1cmF0aW9uU2VydmljZSwgbW9kdWxlQ29uZmlnOiBNbmdNb2R1bGVDb25maWcpOiAoKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAobW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5za2lwSnNvblNvdXJjZUluaXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBqc29uU291cmNlID0gbW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5qc29uU291cmNlO1xuICAgICAgICAgICAgaWYgKCFqc29uU291cmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ1NlcnZpY2UuYWRkSnNvblNvdXJjZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGpzb25Tb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoanNvblNvdXJjZS5tYXAoc291cmNlID0+IGNvbmZpZ1NlcnZpY2UuYWRkSnNvblNvdXJjZShzb3VyY2UpKSkucGlwZShtYXAoc291cmNlc1JlcyA9PiBzb3VyY2VzUmVzLmV2ZXJ5KHMgPT4gcykpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ1NlcnZpY2UuYWRkSnNvblNvdXJjZShqc29uU291cmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG4iXX0=
|