@mediusinc/mng-commons 5.0.0-rc.0 → 5.0.0-rc.2
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/data-list/data-list-params-helpers.d.ts +82 -0
- package/core/descriptors/action.descriptor.d.ts +3 -3
- package/core/descriptors/column.descriptor.d.ts +1 -1
- package/core/descriptors/editor.descriptor.d.ts +6 -6
- package/core/descriptors/enum.descriptor.d.ts +6 -0
- package/core/descriptors/filter.descriptor.d.ts +1 -1
- package/core/descriptors/model.descriptor.d.ts +1 -1
- package/core/descriptors/table.descriptor.d.ts +6 -6
- package/core/descriptors/tableview.descriptor.d.ts +10 -10
- package/core/enum/enum-helpers.d.ts +49 -0
- package/core/error/error-helpers.d.ts +114 -0
- package/core/helpers/date.d.ts +14 -0
- package/core/helpers/object.d.ts +27 -0
- package/core/helpers/route.d.ts +35 -0
- package/core/helpers/string.d.ts +7 -0
- package/core/helpers/templates.d.ts +3 -0
- package/core/i18n/i18n-common.d.ts +6 -0
- package/core/i18n/i18n-error.d.ts +4 -0
- package/core/i18n/i18n-type.d.ts +20 -0
- package/core/index.d.ts +15 -9
- package/{model → core}/pipes/enum.pipe.d.ts +2 -2
- package/core/pipes/enumerate.pipe.d.ts +3 -3
- package/{model → core}/pipes/i18n-property.pipe.d.ts +2 -2
- package/core/pipes/template.pipe.d.ts +0 -2
- package/core/router/route-builder.d.ts +151 -30
- package/core/router/routes-builder.d.ts +29 -15
- package/core/security/permission-helpers.d.ts +3 -0
- package/core/security/permissions.model.d.ts +2 -2
- package/esm2022/core/components/notification/notification-wrapper.component.mjs +4 -4
- package/esm2022/core/components/pages/error/error.page.component.mjs +3 -3
- package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +3 -3
- package/esm2022/core/data-list/data-list-params-helpers.mjs +415 -0
- package/esm2022/core/data-list/filter-match.model.mjs +1 -1
- package/esm2022/core/data-providers/base.data-provider.mjs +1 -1
- package/esm2022/core/descriptors/action.descriptor.mjs +1 -1
- package/esm2022/core/descriptors/column.descriptor.mjs +1 -1
- package/esm2022/core/descriptors/editor.descriptor.mjs +1 -1
- package/esm2022/core/descriptors/enum.descriptor.mjs +2 -0
- package/esm2022/core/descriptors/filter.descriptor.mjs +1 -1
- package/esm2022/core/descriptors/model.descriptor.mjs +1 -1
- package/esm2022/core/descriptors/table.descriptor.mjs +1 -1
- package/esm2022/core/descriptors/tableview.descriptor.mjs +1 -1
- package/esm2022/core/directives/component.directive.mjs +4 -4
- package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +4 -4
- package/esm2022/core/directives/template.directive.mjs +3 -3
- package/esm2022/core/enum/enum-helpers.mjs +81 -0
- package/esm2022/core/error/error-handler.mjs +3 -3
- package/esm2022/core/error/error-helpers.mjs +247 -0
- package/esm2022/core/helpers/coercion.mjs +1 -1
- package/esm2022/core/helpers/date.mjs +119 -0
- package/esm2022/core/helpers/object.mjs +145 -0
- package/esm2022/core/helpers/route.mjs +58 -0
- package/esm2022/core/helpers/string.mjs +57 -0
- package/esm2022/core/helpers/templates.mjs +4 -0
- package/esm2022/core/i18n/i18n-common.mjs +24 -0
- package/esm2022/core/i18n/i18n-error.mjs +27 -0
- package/esm2022/core/i18n/i18n-type.mjs +79 -0
- package/esm2022/core/index.mjs +17 -11
- package/esm2022/core/log/log-publisher-console.service.mjs +3 -3
- package/esm2022/core/log/logger.service.mjs +3 -3
- package/esm2022/core/pipes/boolean.pipe.mjs +4 -4
- package/esm2022/core/pipes/class-map.pipe.mjs +4 -4
- package/esm2022/core/pipes/enum.pipe.mjs +27 -0
- package/esm2022/core/pipes/enumerate-async.pipe.mjs +8 -8
- package/esm2022/core/pipes/enumerate.pipe.mjs +10 -10
- package/esm2022/core/pipes/getter.pipe.mjs +4 -4
- package/esm2022/core/pipes/i18n-property.pipe.mjs +19 -0
- package/esm2022/core/pipes/json-path.pipe.mjs +6 -6
- package/esm2022/core/pipes/parametrize.pipe.mjs +6 -6
- package/esm2022/core/pipes/template.pipe.mjs +7 -8
- package/esm2022/core/provide.mjs +1 -21
- package/esm2022/core/reflect/type-enum-metadata.mjs +1 -1
- package/esm2022/core/registry/type-registry.mjs +1 -1
- package/esm2022/core/router/route-builder.mjs +218 -107
- package/esm2022/core/router/routes-builder.mjs +42 -43
- package/esm2022/core/security/permission-helpers.mjs +14 -0
- package/esm2022/core/security/permission.guard.mjs +1 -1
- package/esm2022/core/security/permission.service.mjs +6 -6
- package/esm2022/core/security/permissions.model.mjs +1 -1
- package/esm2022/core/services/commons-configuration.service.mjs +6 -6
- package/esm2022/core/services/commons-init.service.mjs +4 -4
- package/esm2022/core/services/commons-router.service.mjs +4 -4
- package/esm2022/core/services/commons.service.mjs +4 -4
- package/esm2022/core/services/local-storage-config.service.mjs +4 -4
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +9 -10
- package/esm2022/filter/descriptors/filter.descriptor.mjs +1 -1
- package/esm2022/form/api/data-providers/lookup.data-provider.mjs +1 -1
- package/esm2022/form/api/descriptors/button-style.builder.mjs +1 -1
- package/esm2022/form/components/autocomplete/autocomplete.component.mjs +39 -45
- package/esm2022/form/components/date-range/date-range.component.mjs +4 -4
- package/esm2022/form/components/dropdown/dropdown.component.mjs +7 -7
- package/esm2022/form/directives/input-trim.directive.mjs +4 -4
- package/esm2022/model/descriptors/enum.descriptor.mjs +1 -1
- package/esm2022/model/descriptors/model.descriptor.mjs +4 -4
- package/esm2022/model/helpers/i18n.mjs +45 -0
- package/esm2022/model/helpers/model.mjs +71 -0
- package/esm2022/model/index.mjs +4 -7
- package/esm2022/table/api/data-providers/table.data-provider.mjs +1 -1
- package/esm2022/table/api/descriptors/column.descriptor.mjs +1 -1
- package/esm2022/table/api/descriptors/table.descriptor.mjs +36 -8
- package/esm2022/table/api/helpers/class-attribute-converter.mjs +1 -1
- package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +9 -9
- package/esm2022/table/components/column-value/column-value.component.mjs +12 -14
- package/esm2022/table/components/table/table.component.mjs +20 -37
- package/esm2022/table/helpers/notification.mjs +4 -4
- package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +4 -4
- package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +4 -4
- package/esm2022/table/services/data-list.service.mjs +3 -3
- package/esm2022/tableview/action/components/action/action.component.mjs +9 -9
- package/esm2022/tableview/action/components/editor/action-editor.component.mjs +4 -4
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +22 -21
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +3 -3
- package/esm2022/tableview/action/components/route/action-route.component.mjs +6 -5
- package/esm2022/tableview/action/components/table/action-table.component.mjs +12 -24
- package/esm2022/tableview/action/helpers/i18n.mjs +82 -0
- package/esm2022/tableview/action/helpers/notification.mjs +8 -8
- package/esm2022/tableview/action/helpers/styles.mjs +1 -1
- package/esm2022/tableview/action/models/execution/action-context.model.mjs +1 -1
- package/esm2022/tableview/action/models/execution/action-instance.model.mjs +1 -1
- package/esm2022/tableview/action/services/action-error-mapper.service.mjs +1 -1
- package/esm2022/tableview/action/services/action-executor.service.mjs +10 -9
- package/esm2022/tableview/action/services/component-action-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/data-provider-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/navigation.service.mjs +4 -4
- package/esm2022/tableview/action/services/providers/provide-view-container.mjs +1 -1
- package/esm2022/tableview/action/services/root-action-executor.service.mjs +3 -3
- package/esm2022/tableview/action/services/view-container.service.mjs +3 -3
- package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +1 -1
- package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +9 -1
- package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +1 -1
- package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +1 -1
- package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +1 -1
- package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +21 -32
- package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +3 -3
- package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +3 -3
- package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +8 -8
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +1 -1
- package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +39 -10
- package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +1 -1
- package/esm2022/tableview/api/editor/helpers/field-validators.mjs +15 -25
- package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
- package/esm2022/tableview/api/editor/models/field.model.mjs +1 -1
- package/esm2022/tableview/api/editor/models/form-editor.event.mjs +1 -1
- package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +1 -1
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +3 -3
- package/esm2022/tableview/api/editor/models/formly-field.model.mjs +1 -1
- package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +1 -1
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +15 -22
- package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +1 -1
- package/esm2022/tableview/api/tableview/helpers/files-export.mjs +1 -1
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +4 -4
- package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +1 -1
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +158 -138
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +5 -7
- package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +103 -0
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +5 -7
- package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +33 -50
- package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +8 -10
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +6 -8
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +19 -18
- package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +3 -3
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
- package/esm2022/tableview/editor/helpers/editor-formly.mjs +343 -0
- package/esm2022/tableview/editor/helpers/formly-config.mjs +5 -3
- package/esm2022/tableview/editor/models/formly-config.model.mjs +1 -1
- package/esm2022/tableview/editor/services/formly-config.provider.mjs +1 -1
- package/esm2022/tableview/index.mjs +3 -5
- package/esm2022/tableview/provide.mjs +2 -1
- package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +10 -10
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +30 -56
- package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +17 -43
- package/fesm2022/mediusinc-mng-commons-core.mjs +1599 -1496
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs +8 -9
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +51 -56
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-model.mjs +99 -148
- package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +35 -7
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +48 -65
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +105 -96
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +865 -868
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/filter/descriptors/filter.descriptor.d.ts +2 -2
- package/form/components/autocomplete/autocomplete.component.d.ts +8 -7
- package/model/descriptors/model.descriptor.d.ts +2 -2
- package/model/helpers/i18n.d.ts +10 -0
- package/model/helpers/model.d.ts +5 -0
- package/model/index.d.ts +2 -4
- package/package.json +7 -7
- package/table/api/descriptors/table.descriptor.d.ts +10 -0
- package/table/components/column-value/column-value.component.d.ts +3 -4
- package/table/components/table/table.component.d.ts +13 -13
- package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +1 -3
- package/tableview/action/components/route/action-route.component.d.ts +1 -1
- package/tableview/action/components/table/action-table.component.d.ts +6 -6
- package/tableview/action/helpers/i18n.d.ts +22 -0
- package/tableview/action/models/execution/action-instance-state.model.d.ts +21 -21
- package/tableview/action/models/execution/action-instance.model.d.ts +2 -1
- package/tableview/action/services/action-executor.service.d.ts +1 -1
- package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +9 -1
- package/tableview/api/action/descriptors/action.descriptor.d.ts +3 -3
- package/tableview/api/action/models/action.type.d.ts +2 -2
- package/tableview/api/action/models/execution/action-instance-state.model.d.ts +21 -21
- package/tableview/api/action/models/execution/action-instance.model.d.ts +2 -1
- package/tableview/api/editor/descriptors/editor.descriptor.d.ts +16 -21
- package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +2 -2
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +29 -29
- package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +9 -9
- package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +4 -4
- package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +4 -4
- package/tableview/api/editor/descriptors/field-validation.descriptor.d.ts +10 -13
- package/tableview/api/editor/descriptors/field.descriptor.d.ts +17 -2
- package/tableview/api/editor/helpers/field-validators.d.ts +6 -2
- package/tableview/api/editor/models/editor-fields.model.d.ts +9 -7
- package/tableview/api/editor/models/field.model.d.ts +16 -7
- package/tableview/api/editor/models/form-editor.event.d.ts +6 -4
- package/tableview/api/editor/models/form-editor.interface.d.ts +37 -8
- package/tableview/api/editor/models/formly-custom-field.model.d.ts +1 -1
- package/tableview/api/editor/models/formly-field.model.d.ts +9 -7
- package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +8 -9
- package/tableview/editor/components/editor/form-editor.component.d.ts +51 -35
- package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +22 -0
- package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +5 -7
- package/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +0 -1
- package/tableview/editor/helpers/editor-formly.d.ts +11 -0
- package/tableview/editor/models/formly-config.model.d.ts +1 -1
- package/tableview/index.d.ts +2 -2
- package/tableview/tableview/components/route/tableview-route.component.d.ts +2 -2
- package/tableview/tableview/components/tableview/tableview.component.d.ts +16 -15
- package/tableview/tableview/router/tableview-route-builder.d.ts +7 -13
- package/version-info.json +11 -0
- package/core/data-list/data-list-params.util.d.ts +0 -84
- package/core/enum/enum.util.d.ts +0 -51
- package/core/error/error.util.d.ts +0 -116
- package/core/security/permission.util.d.ts +0 -5
- package/core/utils/date.util.d.ts +0 -20
- package/core/utils/i18n.util.d.ts +0 -36
- package/core/utils/object.util.d.ts +0 -31
- package/core/utils/route.util.d.ts +0 -37
- package/core/utils/string.util.d.ts +0 -9
- package/esm2022/core/data-list/data-list-params.util.mjs +0 -417
- package/esm2022/core/enum/enum.util.mjs +0 -83
- package/esm2022/core/error/error.util.mjs +0 -249
- package/esm2022/core/security/permission.util.mjs +0 -16
- package/esm2022/core/utils/date.util.mjs +0 -136
- package/esm2022/core/utils/i18n.util.mjs +0 -137
- package/esm2022/core/utils/object.util.mjs +0 -147
- package/esm2022/core/utils/route.util.mjs +0 -60
- package/esm2022/core/utils/string.util.mjs +0 -59
- package/esm2022/model/pipes/enum.pipe.mjs +0 -26
- package/esm2022/model/pipes/i18n-property.pipe.mjs +0 -19
- package/esm2022/model/utils/i18n.util.mjs +0 -51
- package/esm2022/model/utils/model.util.mjs +0 -73
- package/esm2022/tableview/action/utils/i18n.util.mjs +0 -126
- package/esm2022/tableview/editor/utils/editor-formly.util.mjs +0 -337
- package/model/utils/i18n.util.d.ts +0 -15
- package/model/utils/model.util.d.ts +0 -8
- package/tableview/action/utils/i18n.util.d.ts +0 -48
- package/tableview/editor/utils/editor-formly.util.d.ts +0 -12
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
const ngPrimerFormatSupported = [/d{1,2}/g, /E{1,5}/g, /c{1,5}/g, /M{1,5}/g, /L{1,5}/g, /y{1,4}/g, /Y{1,4}/g];
|
|
2
|
+
const ngPrimeFormatOther = [/G{1,5}/g, /w{1,2}/g, /W/g, /a{1,5}/g, /B{1,5}/g, /b{1,5}/g, /h{1,2}/g, /H{1,2}/g, /m{1,2}/g, /s{1,2}/g, /S{1,3}/g, /z{1,4}/g, /Z{1,5}/g, /O{1,4}/g];
|
|
3
|
+
const ngPrimerFormatMap = {
|
|
4
|
+
// days
|
|
5
|
+
d: 'd',
|
|
6
|
+
dd: 'dd',
|
|
7
|
+
E: 'D',
|
|
8
|
+
EE: 'D',
|
|
9
|
+
EEE: 'D',
|
|
10
|
+
EEEE: 'DD',
|
|
11
|
+
EEEEE: 'D',
|
|
12
|
+
EEEEEE: 'D',
|
|
13
|
+
c: 'd',
|
|
14
|
+
cc: 'dd',
|
|
15
|
+
ccc: 'D',
|
|
16
|
+
cccc: 'DD',
|
|
17
|
+
ccccc: 'D',
|
|
18
|
+
cccccc: 'D',
|
|
19
|
+
// months
|
|
20
|
+
M: 'm',
|
|
21
|
+
MM: 'mm',
|
|
22
|
+
MMM: 'M',
|
|
23
|
+
MMMM: 'MM',
|
|
24
|
+
MMMMM: 'M',
|
|
25
|
+
L: 'm',
|
|
26
|
+
LL: 'mm',
|
|
27
|
+
LLL: 'M',
|
|
28
|
+
LLLL: 'MM',
|
|
29
|
+
LLLLL: 'M',
|
|
30
|
+
// year
|
|
31
|
+
y: 'y',
|
|
32
|
+
yy: 'y',
|
|
33
|
+
yyy: 'yy',
|
|
34
|
+
yyyy: 'yy',
|
|
35
|
+
Y: 'y',
|
|
36
|
+
YY: 'y',
|
|
37
|
+
YYY: 'yy',
|
|
38
|
+
YYYY: 'yy'
|
|
39
|
+
};
|
|
40
|
+
function padNumber(num, size = 2) {
|
|
41
|
+
let str = String(num);
|
|
42
|
+
while (str.length < size) {
|
|
43
|
+
str = '0' + str;
|
|
44
|
+
}
|
|
45
|
+
return str;
|
|
46
|
+
}
|
|
47
|
+
export function dateToIsoString(value, type = 'date-time', dateTimeOpts = {}) {
|
|
48
|
+
if (typeof value === 'string') {
|
|
49
|
+
value = new Date(value);
|
|
50
|
+
}
|
|
51
|
+
if (typeof value === 'number') {
|
|
52
|
+
value = new Date(value);
|
|
53
|
+
}
|
|
54
|
+
if (!(value instanceof Date)) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
if (type === 'date') {
|
|
58
|
+
// date only, no time part (and timezone, millis, utc does not matter ...)
|
|
59
|
+
return value.getFullYear() + '-' + padNumber(value.getMonth() + 1) + '-' + padNumber(value.getDate());
|
|
60
|
+
}
|
|
61
|
+
if (dateTimeOpts.utc) {
|
|
62
|
+
let str = value.toISOString();
|
|
63
|
+
if (dateTimeOpts.noMillis) {
|
|
64
|
+
const dotIdx = str.lastIndexOf('.');
|
|
65
|
+
str = str.substring(0, dotIdx) + str.substring(dotIdx + 4, str.length);
|
|
66
|
+
}
|
|
67
|
+
if (dateTimeOpts.noTimezone) {
|
|
68
|
+
str = str.substring(0, str.length - 1);
|
|
69
|
+
}
|
|
70
|
+
return str;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
let base = value.getFullYear() +
|
|
74
|
+
'-' +
|
|
75
|
+
padNumber(value.getMonth() + 1) +
|
|
76
|
+
'-' +
|
|
77
|
+
padNumber(value.getDate()) +
|
|
78
|
+
'T' +
|
|
79
|
+
padNumber(value.getHours()) +
|
|
80
|
+
':' +
|
|
81
|
+
padNumber(value.getMinutes()) +
|
|
82
|
+
':' +
|
|
83
|
+
padNumber(value.getSeconds());
|
|
84
|
+
if (!dateTimeOpts.noMillis) {
|
|
85
|
+
base += '.' + padNumber(value.getMilliseconds());
|
|
86
|
+
}
|
|
87
|
+
if (!dateTimeOpts.noTimezone) {
|
|
88
|
+
const tzo = -value.getTimezoneOffset(), dif = tzo >= 0 ? '+' : '-';
|
|
89
|
+
base = base + (dif + padNumber(Math.floor(Math.abs(tzo) / 60)) + ':' + padNumber(Math.abs(tzo) % 60));
|
|
90
|
+
}
|
|
91
|
+
return base;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export function fromAngularDateFormatToPrime(ngDateFormat) {
|
|
95
|
+
let primeDateFormat = ngDateFormat;
|
|
96
|
+
for (const regex of ngPrimeFormatOther) {
|
|
97
|
+
primeDateFormat = primeDateFormat.replace(regex, ' ');
|
|
98
|
+
}
|
|
99
|
+
for (const regex of ngPrimerFormatSupported) {
|
|
100
|
+
const matches = [...primeDateFormat.matchAll(regex)].reverse();
|
|
101
|
+
for (const match of matches) {
|
|
102
|
+
if (match.index) {
|
|
103
|
+
const matchStr = match[0];
|
|
104
|
+
const replacement = ngPrimerFormatMap[matchStr] ?? match[0];
|
|
105
|
+
primeDateFormat = primeDateFormat.substring(0, match.index) + replacement + primeDateFormat.substring(match.index + matchStr.length);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
primeDateFormat = primeDateFormat.replace(/\s+\W\s+/g, ' ');
|
|
110
|
+
primeDateFormat = primeDateFormat.replace(/\s\s+/g, ' ');
|
|
111
|
+
return primeDateFormat.trim();
|
|
112
|
+
}
|
|
113
|
+
export function angularDateFormatHasTime(ngDateFormat) {
|
|
114
|
+
return /[hHmsS]/.test(ngDateFormat);
|
|
115
|
+
}
|
|
116
|
+
export function angularDateFormatHasSeconds(ngDateFormat) {
|
|
117
|
+
return /[sS]/.test(ngDateFormat);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL2hlbHBlcnMvZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLHVCQUF1QixHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDOUcsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqTCxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLE9BQU87SUFDUCxDQUFDLEVBQUUsR0FBRztJQUNOLEVBQUUsRUFBRSxJQUFJO0lBQ1IsQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsR0FBRztJQUNQLEdBQUcsRUFBRSxHQUFHO0lBQ1IsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsSUFBSTtJQUNSLEdBQUcsRUFBRSxHQUFHO0lBQ1IsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsU0FBUztJQUNULENBQUMsRUFBRSxHQUFHO0lBQ04sRUFBRSxFQUFFLElBQUk7SUFDUixHQUFHLEVBQUUsR0FBRztJQUNSLElBQUksRUFBRSxJQUFJO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixDQUFDLEVBQUUsR0FBRztJQUNOLEVBQUUsRUFBRSxJQUFJO0lBQ1IsR0FBRyxFQUFFLEdBQUc7SUFDUixJQUFJLEVBQUUsSUFBSTtJ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QUFDLENBQUM7Z0JBQzFCLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLFFBQXdCLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVFLGVBQWUsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsV0FBVyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekksQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQ0QsZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVELGVBQWUsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV6RCxPQUFPLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLFlBQW9CO0lBQ3pELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLFlBQW9CO0lBQzVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgdG9Jc29TdHJpbmdUeXBlT3B0VHlwZSA9ICdkYXRlJyB8ICdkYXRlLXRpbWUnIHwgJ2RhdGVUaW1lJztcbmV4cG9ydCB0eXBlIHRvSXNvU3RyaW5nRGF0ZVRpbWVPcHRzVHlwZSA9IHt1dGM/OiBib29sZWFuOyBub1RpbWV6b25lPzogYm9vbGVhbjsgbm9NaWxsaXM/OiBib29sZWFufTtcblxuY29uc3QgbmdQcmltZXJGb3JtYXRTdXBwb3J0ZWQgPSBbL2R7MSwyfS9nLCAvRXsxLDV9L2csIC9jezEsNX0vZywgL017MSw1fS9nLCAvTHsxLDV9L2csIC95ezEsNH0vZywgL1l7MSw0fS9nXTtcbmNvbnN0IG5nUHJpbWVGb3JtYXRPdGhlciA9IFsvR3sxLDV9L2csIC93ezEsMn0vZywgL1cvZywgL2F7MSw1fS9nLCAvQnsxLDV9L2csIC9iezEsNX0vZywgL2h7MSwyfS9nLCAvSHsxLDJ9L2csIC9tezEsMn0vZywgL3N7MSwyfS9nLCAvU3sxLDN9L2csIC96ezEsNH0vZywgL1p7MSw1fS9nLCAvT3sxLDR9L2ddO1xuY29uc3QgbmdQcmltZXJGb3JtYXRNYXAgPSB7XG4gICAgLy8gZGF5c1xuICAgIGQ6ICdkJyxcbiAgICBkZDogJ2RkJyxcbiAgICBFOiAnRCcsXG4gICAgRUU6ICdEJyxcbiAgICBFRUU6ICdEJyxcbiAgICBFRUVFOiAnREQnLFxuICAgIEVFRUVFOiAnRCcsXG4gICAgRUVFRUVFOiAnRCcsXG4gICAgYzogJ2QnLFxuICAgIGNjOiAnZGQnLFxuICAgIGNjYzogJ0QnLFxuICAgIGNjY2M6ICdERCcsXG4gICAgY2NjY2M6ICdEJyxcbiAgICBjY2NjY2M6ICdEJyxcbiAgICAvLyBtb250aHNcbiAgICBNOiAnbScsXG4gICAgTU06ICdtbScsXG4gICAgTU1NOiAnTScsXG4gICAgTU1NTTogJ01NJyxcbiAgICBNTU1NTTogJ00nLFxuICAgIEw6ICdtJyxcbiAgICBMTDogJ21tJyxcbiAgICBMTEw6ICdNJyxcbiAgICBMTExMOiAnTU0nLFxuICAgIExMTExMOiAnTScsXG4gICAgLy8geWVhclxuICAgIHk6ICd5JyxcbiAgICB5eTogJ3knLFxuICAgIHl5eTogJ3l5JyxcbiAgICB5eXl5OiAneXknLFxuICAgIFk6ICd5JyxcbiAgICBZWTogJ3knLFxuICAgIFlZWTogJ3l5JyxcbiAgICBZWVlZOiAneXknXG59O1xuXG5mdW5jdGlvbiBwYWROdW1iZXIobnVtOiBudW1iZXIsIHNpemUgPSAyKSB7XG4gICAgbGV0IHN0ciA9IFN0cmluZyhudW0pO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgICBzdHIgPSAnMCcgKyBzdHI7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVG9Jc29TdHJpbmcodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIHR5cGU/OiAnZGF0ZScpOiBzdHJpbmc7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCB0eXBlOiAnZGF0ZS10aW1lJyB8ICdkYXRlVGltZScsIGRhdGVUaW1lT3B0cz86IHRvSXNvU3RyaW5nRGF0ZVRpbWVPcHRzVHlwZSk6IHN0cmluZztcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVG9Jc29TdHJpbmcodmFsdWU6IHVuZGVmaW5lZCB8IG51bGwgfCB1bmtub3duLCB0eXBlPzogJ2RhdGUnKTogbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVG9Jc29TdHJpbmcodmFsdWU6IHVuZGVmaW5lZCB8IG51bGwgfCB1bmtub3duLCB0eXBlOiAnZGF0ZS10aW1lJyB8ICdkYXRlVGltZScsIGRhdGVUaW1lT3B0cz86IHRvSXNvU3RyaW5nRGF0ZVRpbWVPcHRzVHlwZSk6IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRvSXNvU3RyaW5nKHZhbHVlOiB1bmtub3duLCB0eXBlPzogdG9Jc29TdHJpbmdUeXBlT3B0VHlwZSwgZGF0ZVRpbWVPcHRzPzogdG9Jc29TdHJpbmdEYXRlVGltZU9wdHNUeXBlKTogc3RyaW5nIHwgbnVsbDtcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVG9Jc29TdHJpbmcodmFsdWU6IHVua25vd24sIHR5cGU6IHRvSXNvU3RyaW5nVHlwZU9wdFR5cGUgPSAnZGF0ZS10aW1lJywgZGF0ZVRpbWVPcHRzOiB0b0lzb1N0cmluZ0RhdGVUaW1lT3B0c1R5cGUgPSB7fSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICAvLyBkYXRlIG9ubHksIG5vIHRpbWUgcGFydCAoYW5kIHRpbWV6b25lLCBtaWxsaXMsIHV0YyBkb2VzIG5vdCBtYXR0ZXIgLi4uKVxuICAgICAgICByZXR1cm4gdmFsdWUuZ2V0RnVsbFllYXIoKSArICctJyArIHBhZE51bWJlcih2YWx1ZS5nZXRNb250aCgpICsgMSkgKyAnLScgKyBwYWROdW1iZXIodmFsdWUuZ2V0RGF0ZSgpKTtcbiAgICB9XG4gICAgaWYgKGRhdGVUaW1lT3B0cy51dGMpIHtcbiAgICAgICAgbGV0IHN0ciA9IHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIGlmIChkYXRlVGltZU9wdHMubm9NaWxsaXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvdElkeCA9IHN0ci5sYXN0SW5kZXhPZignLicpO1xuICAgICAgICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBkb3RJZHgpICsgc3RyLnN1YnN0cmluZyhkb3RJZHggKyA0LCBzdHIubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0ZVRpbWVPcHRzLm5vVGltZXpvbmUpIHtcbiAgICAgICAgICAgIHN0ciA9IHN0ci5zdWJzdHJpbmcoMCwgc3RyLmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGJhc2UgPVxuICAgICAgICAgICAgdmFsdWUuZ2V0RnVsbFllYXIoKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgcGFkTnVtYmVyKHZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgcGFkTnVtYmVyKHZhbHVlLmdldERhdGUoKSkgK1xuICAgICAgICAgICAgJ1QnICtcbiAgICAgICAgICAgIHBhZE51bWJlcih2YWx1ZS5nZXRIb3VycygpKSArXG4gICAgICAgICAgICAnOicgK1xuICAgICAgICAgICAgcGFkTnVtYmVyKHZhbHVlLmdldE1pbnV0ZXMoKSkgK1xuICAgICAgICAgICAgJzonICtcbiAgICAgICAgICAgIHBhZE51bWJlcih2YWx1ZS5nZXRTZWNvbmRzKCkpO1xuXG4gICAgICAgIGlmICghZGF0ZVRpbWVPcHRzLm5vTWlsbGlzKSB7XG4gICAgICAgICAgICBiYXNlICs9ICcuJyArIHBhZE51bWJlcih2YWx1ZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkYXRlVGltZU9wdHMubm9UaW1lem9uZSkge1xuICAgICAgICAgICAgY29uc3QgdHpvID0gLXZhbHVlLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICAgICAgICAgICAgICAgZGlmID0gdHpvID49IDAgPyAnKycgOiAnLSc7XG5cbiAgICAgICAgICAgIGJhc2UgPSBiYXNlICsgKGRpZiArIHBhZE51bWJlcihNYXRoLmZsb29yKE1hdGguYWJzKHR6bykgLyA2MCkpICsgJzonICsgcGFkTnVtYmVyKE1hdGguYWJzKHR6bykgJSA2MCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbUFuZ3VsYXJEYXRlRm9ybWF0VG9QcmltZShuZ0RhdGVGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHByaW1lRGF0ZUZvcm1hdCA9IG5nRGF0ZUZvcm1hdDtcbiAgICBmb3IgKGNvbnN0IHJlZ2V4IG9mIG5nUHJpbWVGb3JtYXRPdGhlcikge1xuICAgICAgICBwcmltZURhdGVGb3JtYXQgPSBwcmltZURhdGVGb3JtYXQucmVwbGFjZShyZWdleCwgJyAnKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCByZWdleCBvZiBuZ1ByaW1lckZvcm1hdFN1cHBvcnRlZCkge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gWy4uLnByaW1lRGF0ZUZvcm1hdC5tYXRjaEFsbChyZWdleCldLnJldmVyc2UoKTtcbiAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBtYXRjaGVzKSB7XG4gICAgICAgICAgICBpZiAobWF0Y2guaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaFN0ciA9IG1hdGNoWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gbmdQcmltZXJGb3JtYXRNYXBbbWF0Y2hTdHIgYXMga2V5b2Ygb2JqZWN0XSA/PyBtYXRjaFswXTtcbiAgICAgICAgICAgICAgICBwcmltZURhdGVGb3JtYXQgPSBwcmltZURhdGVGb3JtYXQuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KSArIHJlcGxhY2VtZW50ICsgcHJpbWVEYXRlRm9ybWF0LnN1YnN0cmluZyhtYXRjaC5pbmRleCArIG1hdGNoU3RyLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpbWVEYXRlRm9ybWF0ID0gcHJpbWVEYXRlRm9ybWF0LnJlcGxhY2UoL1xccytcXFdcXHMrL2csICcgJyk7XG4gICAgcHJpbWVEYXRlRm9ybWF0ID0gcHJpbWVEYXRlRm9ybWF0LnJlcGxhY2UoL1xcc1xccysvZywgJyAnKTtcblxuICAgIHJldHVybiBwcmltZURhdGVGb3JtYXQudHJpbSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW5ndWxhckRhdGVGb3JtYXRIYXNUaW1lKG5nRGF0ZUZvcm1hdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9baEhtc1NdLy50ZXN0KG5nRGF0ZUZvcm1hdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbmd1bGFyRGF0ZUZvcm1hdEhhc1NlY29uZHMobmdEYXRlRm9ybWF0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL1tzU10vLnRlc3QobmdEYXRlRm9ybWF0KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export function objectDeepCopy(obj, options) {
|
|
2
|
+
if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {
|
|
3
|
+
return obj;
|
|
4
|
+
}
|
|
5
|
+
if (obj instanceof Date) {
|
|
6
|
+
return new Date(+obj);
|
|
7
|
+
}
|
|
8
|
+
let copy;
|
|
9
|
+
if (options?.mapGettersToProperties) {
|
|
10
|
+
copy = {};
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
copy = options?.objectPrototype ? Object.create(options.objectPrototype['prototype']) : Object.create(Object.getPrototypeOf(obj));
|
|
14
|
+
Object.assign(copy, obj);
|
|
15
|
+
}
|
|
16
|
+
for (const key of getObjectProperties(obj)) {
|
|
17
|
+
const prop = obj[key];
|
|
18
|
+
copy[key] = handleProp(prop, { mapGettersToProperties: options?.mapGettersToProperties });
|
|
19
|
+
}
|
|
20
|
+
if (options?.mapGettersToProperties) {
|
|
21
|
+
for (const getterKey of getObjectGetters(obj)) {
|
|
22
|
+
const prop = obj[getterKey];
|
|
23
|
+
copy[getterKey] = handleProp(prop, { mapGettersToProperties: options?.mapGettersToProperties });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return copy;
|
|
27
|
+
}
|
|
28
|
+
export function objectDeepMerge(target, source) {
|
|
29
|
+
if (!isObject(source)) {
|
|
30
|
+
return target;
|
|
31
|
+
}
|
|
32
|
+
for (const key of getObjectProperties(source)) {
|
|
33
|
+
if (isObject(source[key])) {
|
|
34
|
+
if (isObject(target[key])) {
|
|
35
|
+
target[key] = objectDeepMerge(target[key], source[key]);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
target[key] = objectDeepCopy(source[key]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (Array.isArray(source[key])) {
|
|
42
|
+
if (!Array.isArray(target[key])) {
|
|
43
|
+
target[key] = source[key].map(i => (isObject(i) ? objectDeepMerge({}, i) : i));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (typeof target[key] === 'undefined') {
|
|
47
|
+
target[key] = source[key];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return target;
|
|
51
|
+
}
|
|
52
|
+
function isObject(obj) {
|
|
53
|
+
return typeof obj === 'object' && obj !== null && !Array.isArray(obj);
|
|
54
|
+
}
|
|
55
|
+
function handleProp(prop, options) {
|
|
56
|
+
if (Array.isArray(prop)) {
|
|
57
|
+
return prop.map(i => objectDeepCopy(i, options));
|
|
58
|
+
}
|
|
59
|
+
else if (typeof prop === 'object' && prop !== null) {
|
|
60
|
+
return objectDeepCopy(prop, options);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return prop;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export function getObjectProperties(obj) {
|
|
67
|
+
return Object.keys(obj);
|
|
68
|
+
}
|
|
69
|
+
export function getObjectGetters(obj) {
|
|
70
|
+
const getterSet = new Set();
|
|
71
|
+
let currObj = obj;
|
|
72
|
+
while (currObj) {
|
|
73
|
+
const getters = Object.entries(Object.getOwnPropertyDescriptors(currObj))
|
|
74
|
+
.filter(([, descriptor]) => typeof descriptor.get === 'function')
|
|
75
|
+
.filter(([key]) => key !== '__proto__')
|
|
76
|
+
.map(([key]) => key);
|
|
77
|
+
for (const getter of getters) {
|
|
78
|
+
getterSet.add(getter);
|
|
79
|
+
}
|
|
80
|
+
currObj = Object.getPrototypeOf(currObj);
|
|
81
|
+
}
|
|
82
|
+
return Array.from(getterSet);
|
|
83
|
+
}
|
|
84
|
+
export function getObjectPropertyByPath(value, path) {
|
|
85
|
+
if (path === '$') {
|
|
86
|
+
// only return the root
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
// Check for leading root object notation
|
|
90
|
+
if (path.startsWith('$')) {
|
|
91
|
+
path = path.substring(1);
|
|
92
|
+
}
|
|
93
|
+
// Check for leading .
|
|
94
|
+
if (path.startsWith('.')) {
|
|
95
|
+
path = path.substring(1);
|
|
96
|
+
}
|
|
97
|
+
if (path.indexOf('.') >= 0) {
|
|
98
|
+
const pathSplit = path.split('.');
|
|
99
|
+
let currValue = value;
|
|
100
|
+
for (const p of pathSplit) {
|
|
101
|
+
if (typeof currValue === 'undefined' || currValue === null) {
|
|
102
|
+
return currValue;
|
|
103
|
+
}
|
|
104
|
+
if (!p.length) {
|
|
105
|
+
// empty path, return current value
|
|
106
|
+
return currValue;
|
|
107
|
+
}
|
|
108
|
+
const leftBracketIdx = p.indexOf('[');
|
|
109
|
+
if (leftBracketIdx >= 0 && p.endsWith(']')) {
|
|
110
|
+
// should be reference to array
|
|
111
|
+
const arrayPath = p.substring(0, leftBracketIdx);
|
|
112
|
+
const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);
|
|
113
|
+
const array = currValue[arrayPath];
|
|
114
|
+
if (Array.isArray(array)) {
|
|
115
|
+
if (arrayIdx >= 0 && arrayIdx < array.length) {
|
|
116
|
+
// valid index, continue on the path
|
|
117
|
+
currValue = array[arrayIdx];
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
else if (typeof currValue === 'object') {
|
|
124
|
+
currValue = currValue[p];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return currValue;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
return value[path];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export function flattenObjectKeys(objectModel) {
|
|
134
|
+
const flatten = (object, parent) => {
|
|
135
|
+
let results = [];
|
|
136
|
+
for (const key in object) {
|
|
137
|
+
const value = object[key];
|
|
138
|
+
const thisKey = parent ? `${parent}.${key}` : `${key}`;
|
|
139
|
+
results = results.concat(isObject(value) ? flatten(value, thisKey) : [[`${thisKey}`, value]]);
|
|
140
|
+
}
|
|
141
|
+
return results;
|
|
142
|
+
};
|
|
143
|
+
return flatten(objectModel);
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvaGVscGVycy9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JBLE1BQU0sVUFBVSxjQUFjLENBQXlCLEdBQU0sRUFBRSxPQUE0QjtJQUN2RixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDO0lBQ1QsSUFBSSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2QsQ0FBQztTQUFNLENBQUM7UUFDSixJQUFJLEdBQUcsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFdBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsSixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFtQixDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBQyxzQkFBc0IsRUFBRSxP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RUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uL21vZGVscy9jbGFzcy1zZXJ2aWNlLm1vZGVsJztcblxuaW50ZXJmYWNlIERlZXBDb3B5UHJvcHNPcHRpb25zIHtcbiAgICBtYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWVwQ29weU9wdGlvbnM8UCA9IG9iamVjdD4gZXh0ZW5kcyBEZWVwQ29weVByb3BzT3B0aW9ucyB7XG4gICAgb2JqZWN0UHJvdG90eXBlPzogQ2xhc3NUeXBlPFA+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0RGVlcENvcHk8VCA9IG9iamVjdCwgUCA9IG9iamVjdD4ob2JqOiBULCBvcHRpb25zOiBEZWVwQ29weU9wdGlvbnM8UD4gJiB7bWFwR2V0dGVyc1RvUHJvcGVydGllczogdHJ1ZX0pOiBUIHwgUmVjb3JkPHN0cmluZywgYW55PjtcbmV4cG9ydCBmdW5jdGlvbiBvYmplY3REZWVwQ29weTxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihvYmo6IFQsIG9wdGlvbnM6IERlZXBDb3B5T3B0aW9uczxQPiAmIHtvYmplY3RQcm90b3R5cGU6IENsYXNzVHlwZTxQPn0gJiB7bWFwR2V0dGVyc1RvUHJvcGVydGllcz86IGZhbHNlfSk6IFA7XG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0RGVlcENvcHk8VCA9IG9iamVjdCwgUCA9IG9iamVjdD4oXG4gICAgb2JqOiBULFxuICAgIG9wdGlvbnM6IERlZXBDb3B5T3B0aW9uczxQPiAmIHtvYmplY3RQcm90b3R5cGU6IENsYXNzVHlwZTxQPn0gJiB7bWFwR2V0dGVyc1RvUHJvcGVydGllczogdHJ1ZX1cbik6IFAgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdERlZXBDb3B5PFQgPSBvYmplY3QsIFAgPSBvYmplY3Q+KG9iajogVCwgb3B0aW9ucz86IERlZXBDb3B5T3B0aW9uczxQPik6IFQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3REZWVwQ29weTxUID0gb2JqZWN0LCBQID0gb2JqZWN0PihvYmo6IFQsIG9wdGlvbnM/OiBEZWVwQ29weU9wdGlvbnM8UD4pOiBUIHwgUCB8IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCtvYmopO1xuICAgIH1cblxuICAgIGxldCBjb3B5O1xuICAgIGlmIChvcHRpb25zPy5tYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIGNvcHkgPSB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb3B5ID0gb3B0aW9ucz8ub2JqZWN0UHJvdG90eXBlID8gT2JqZWN0LmNyZWF0ZShvcHRpb25zLm9iamVjdFByb3RvdHlwZVsncHJvdG90eXBlJyBhcyBrZXlvZiBvYmplY3RdKSA6IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpO1xuICAgICAgICBPYmplY3QuYXNzaWduKGNvcHksIG9iaik7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgZ2V0T2JqZWN0UHJvcGVydGllcyhvYmopKSB7XG4gICAgICAgIGNvbnN0IHByb3AgPSBvYmpba2V5IGFzIGtleW9mIG9iamVjdF07XG4gICAgICAgIGNvcHlba2V5XSA9IGhhbmRsZVByb3AocHJvcCwge21hcEdldHRlcnNUb1Byb3BlcnRpZXM6IG9wdGlvbnM/Lm1hcEdldHRlcnNUb1Byb3BlcnRpZXN9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8ubWFwR2V0dGVyc1RvUHJvcGVydGllcykge1xuICAgICAgICBmb3IgKGNvbnN0IGdldHRlcktleSBvZiBnZXRPYmplY3RHZXR0ZXJzKG9iaikpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBvYmpbZ2V0dGVyS2V5IGFzIGtleW9mIG9iamVjdF07XG4gICAgICAgICAgICBjb3B5W2dldHRlcktleV0gPSBoYW5kbGVQcm9wKHByb3AsIHttYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzOiBvcHRpb25zPy5tYXBHZXR0ZXJzVG9Qcm9wZXJ0aWVzfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29weTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdERlZXBNZXJnZSh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNvdXJjZTogUmVjb3JkPHN0cmluZywgYW55Pik6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGlmICghaXNPYmplY3Qoc291cmNlKSkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGdldE9iamVjdFByb3BlcnRpZXMoc291cmNlKSkge1xuICAgICAgICBpZiAoaXNPYmplY3Qoc291cmNlW2tleV0pKSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QodGFyZ2V0W2tleV0pKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBvYmplY3REZWVwTWVyZ2UodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBvYmplY3REZWVwQ29weShzb3VyY2Vba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IChzb3VyY2Vba2V5XSBhcyBBcnJheTx1bmtub3duPikubWFwKGkgPT4gKGlzT2JqZWN0KGkpID8gb2JqZWN0RGVlcE1lcmdlKHt9LCBpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA6IGkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGFyZ2V0W2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3Qob2JqOiBhbnkpIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KG9iaik7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVByb3AocHJvcDogYW55LCBvcHRpb25zPzogRGVlcENvcHlQcm9wc09wdGlvbnMpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wKSkge1xuICAgICAgICByZXR1cm4gcHJvcC5tYXAoaSA9PiBvYmplY3REZWVwQ29weShpLCBvcHRpb25zKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcCA9PT0gJ29iamVjdCcgJiYgcHJvcCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0RGVlcENvcHkocHJvcCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHByb3A7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0UHJvcGVydGllcyhvYmo6IG9iamVjdCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JqZWN0R2V0dGVycyhvYmo6IGFueSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBnZXR0ZXJTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBsZXQgY3Vyck9iaiA9IG9iajtcblxuICAgIHdoaWxlIChjdXJyT2JqKSB7XG4gICAgICAgIGNvbnN0IGdldHRlcnMgPSBPYmplY3QuZW50cmllcyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhjdXJyT2JqKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKFssIGRlc2NyaXB0b3JdKSA9PiB0eXBlb2YgZGVzY3JpcHRvci5nZXQgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSAnX19wcm90b19fJylcbiAgICAgICAgICAgIC5tYXAoKFtrZXldKSA9PiBrZXkpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZ2V0dGVyIG9mIGdldHRlcnMpIHtcbiAgICAgICAgICAgIGdldHRlclNldC5hZGQoZ2V0dGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJPYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3Vyck9iaik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ2V0dGVyU2V0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9iamVjdFByb3BlcnR5QnlQYXRoKHZhbHVlOiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHBhdGggPT09ICckJykge1xuICAgICAgICAvLyBvbmx5IHJldHVybiB0aGUgcm9vdFxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGxlYWRpbmcgcm9vdCBvYmplY3Qgbm90YXRpb25cbiAgICBpZiAocGF0aC5zdGFydHNXaXRoKCckJykpIHtcbiAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDEpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBsZWFkaW5nIC5cbiAgICBpZiAocGF0aC5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgcGF0aCA9IHBhdGguc3Vic3RyaW5nKDEpO1xuICAgIH1cblxuICAgIGlmIChwYXRoLmluZGV4T2YoJy4nKSA+PSAwKSB7XG4gICAgICAgIGNvbnN0IHBhdGhTcGxpdCA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IGN1cnJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICBmb3IgKGNvbnN0IHAgb2YgcGF0aFNwbGl0KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgY3VyclZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJWYWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIGVtcHR5IHBhdGgsIHJldHVybiBjdXJyZW50IHZhbHVlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJWYWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGVmdEJyYWNrZXRJZHggPSBwLmluZGV4T2YoJ1snKTtcbiAgICAgICAgICAgIGlmIChsZWZ0QnJhY2tldElkeCA+PSAwICYmIHAuZW5kc1dpdGgoJ10nKSkge1xuICAgICAgICAgICAgICAgIC8vIHNob3VsZCBiZSByZWZlcmVuY2UgdG8gYXJyYXlcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJheVBhdGggPSBwLnN1YnN0cmluZygwLCBsZWZ0QnJhY2tldElkeCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJyYXlJZHggPSArcC5zdWJzdHJpbmcobGVmdEJyYWNrZXRJZHggKyAxLCBwLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gY3VyclZhbHVlW2FycmF5UGF0aF07XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcnJheUlkeCA+PSAwICYmIGFycmF5SWR4IDwgYXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWxpZCBpbmRleCwgY29udGludWUgb24gdGhlIHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJWYWx1ZSA9IGFycmF5W2FycmF5SWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGN1cnJWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBjdXJyVmFsdWUgPSBjdXJyVmFsdWVbcF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGN1cnJWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsdWVbcGF0aF07XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbk9iamVjdEtleXMob2JqZWN0TW9kZWw6IGFueSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmbGF0dGVuID0gKG9iamVjdDogYW55LCBwYXJlbnQ/OiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdHM6IGFueVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iamVjdCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IHRoaXNLZXkgPSBwYXJlbnQgPyBgJHtwYXJlbnR9LiR7a2V5fWAgOiBgJHtrZXl9YDtcblxuICAgICAgICAgICAgcmVzdWx0cyA9IHJlc3VsdHMuY29uY2F0KGlzT2JqZWN0KHZhbHVlKSA/IGZsYXR0ZW4odmFsdWUsIHRoaXNLZXkpIDogW1tgJHt0aGlzS2V5fWAsIHZhbHVlXV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH07XG5cbiAgICByZXR1cm4gZmxhdHRlbihvYmplY3RNb2RlbCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { CommonsInternalError } from '../error/error.model';
|
|
2
|
+
export function removeRouteEmptyPathSegments(path) {
|
|
3
|
+
const filteredPath = path.filter(ps => typeof ps === 'string' && ps.length > 0);
|
|
4
|
+
return filteredPath.length > 0 ? filteredPath : [''];
|
|
5
|
+
}
|
|
6
|
+
export function appendRoutePathToBasePath(basePath, path) {
|
|
7
|
+
if (path.length > 0) {
|
|
8
|
+
if (path[0].startsWith('/')) {
|
|
9
|
+
return path;
|
|
10
|
+
}
|
|
11
|
+
else if (path[0].startsWith('../')) {
|
|
12
|
+
throw new CommonsInternalError('Not implemented', { name: 'RouteUtilsError' });
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return removeRouteEmptyPathSegments([...basePath, ...path]);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return basePath;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function doesUrlMatchRouterLink(link, url) {
|
|
23
|
+
if (typeof url === 'string' && url.startsWith('/')) {
|
|
24
|
+
url = url.substring(1);
|
|
25
|
+
}
|
|
26
|
+
else if (Array.isArray(url) && url.length > 0 && url[0].startsWith('/')) {
|
|
27
|
+
url[0] = url[0].substring(1);
|
|
28
|
+
}
|
|
29
|
+
const routeSegments = Array.isArray(link) ? link : link.split('/');
|
|
30
|
+
const urlSegments = Array.isArray(url) ? url : url.split('#')[0].split('?')[0].split('/');
|
|
31
|
+
if (routeSegments.length > 0 && urlSegments.length > 0) {
|
|
32
|
+
for (let i = 0; i < routeSegments.length; i++) {
|
|
33
|
+
if (i < urlSegments.length) {
|
|
34
|
+
if (routeSegments[i] !== urlSegments[i]) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
export function adjustRouteMenuLazyChildrenRouterLinks(rootMenuItem, lazyChildren) {
|
|
47
|
+
return lazyChildren.map(i => {
|
|
48
|
+
const childMenuItem = { ...i };
|
|
49
|
+
if (childMenuItem.routerLink) {
|
|
50
|
+
childMenuItem.routerLink = appendRoutePathToBasePath(rootMenuItem.routerLink, typeof childMenuItem.routerLink === 'string' ? [childMenuItem.routerLink] : childMenuItem.routerLink);
|
|
51
|
+
}
|
|
52
|
+
if (Array.isArray(childMenuItem.items)) {
|
|
53
|
+
childMenuItem.items = adjustRouteMenuLazyChildrenRouterLinks(rootMenuItem, childMenuItem.items);
|
|
54
|
+
}
|
|
55
|
+
return childMenuItem;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9oZWxwZXJzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRzFELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxJQUFtQjtJQUM1RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEYsT0FBTyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsUUFBdUIsRUFBRSxJQUFtQjtJQUNsRixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBQyxDQUFDLENBQUM7UUFDakYsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLDRCQUE0QixDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLElBQTRCLEVBQUUsR0FBMkI7SUFDNUYsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pELEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFMUYsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsc0NBQXNDLENBQUMsWUFBMkIsRUFBRSxZQUFvQztJQUNwSCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxhQUFhLEdBQUcsRUFBQyxHQUFHLENBQUMsRUFBQyxDQUFDO1FBQzdCLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzNCLGFBQWEsQ0FBQyxVQUFVLEdBQUcseUJBQXlCLENBQ2hELFlBQVksQ0FBQyxVQUFVLEVBQ3ZCLE9BQU8sYUFBYSxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUN2RyxDQUFDO1FBQ04sQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxhQUFhLENBQUMsS0FBSyxHQUFHLHNDQUFzQyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWVudUl0ZW0gYXMgUHJpbWVNZW51SXRlbX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yfSBmcm9tICcuLi9lcnJvci9lcnJvci5tb2RlbCc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUm91dGVFbXB0eVBhdGhTZWdtZW50cyhwYXRoOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgY29uc3QgZmlsdGVyZWRQYXRoID0gcGF0aC5maWx0ZXIocHMgPT4gdHlwZW9mIHBzID09PSAnc3RyaW5nJyAmJiBwcy5sZW5ndGggPiAwKTtcbiAgICByZXR1cm4gZmlsdGVyZWRQYXRoLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZFBhdGggOiBbJyddO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kUm91dGVQYXRoVG9CYXNlUGF0aChiYXNlUGF0aDogQXJyYXk8c3RyaW5nPiwgcGF0aDogQXJyYXk8c3RyaW5nPikge1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHBhdGhbMF0uc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgfSBlbHNlIGlmIChwYXRoWzBdLnN0YXJ0c1dpdGgoJy4uLycpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcsIHtuYW1lOiAnUm91dGVVdGlsc0Vycm9yJ30pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZVJvdXRlRW1wdHlQYXRoU2VnbWVudHMoWy4uLmJhc2VQYXRoLCAuLi5wYXRoXSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYmFzZVBhdGg7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZG9lc1VybE1hdGNoUm91dGVyTGluayhsaW5rOiBBcnJheTxzdHJpbmc+IHwgc3RyaW5nLCB1cmw6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycgJiYgdXJsLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICB1cmwgPSB1cmwuc3Vic3RyaW5nKDEpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1cmwpICYmIHVybC5sZW5ndGggPiAwICYmIHVybFswXS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgdXJsWzBdID0gdXJsWzBdLnN1YnN0cmluZygxKTtcbiAgICB9XG5cbiAgICBjb25zdCByb3V0ZVNlZ21lbnRzID0gQXJyYXkuaXNBcnJheShsaW5rKSA/IGxpbmsgOiBsaW5rLnNwbGl0KCcvJyk7XG4gICAgY29uc3QgdXJsU2VnbWVudHMgPSBBcnJheS5pc0FycmF5KHVybCkgPyB1cmwgOiB1cmwuc3BsaXQoJyMnKVswXS5zcGxpdCgnPycpWzBdLnNwbGl0KCcvJyk7XG5cbiAgICBpZiAocm91dGVTZWdtZW50cy5sZW5ndGggPiAwICYmIHVybFNlZ21lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZVNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA8IHVybFNlZ21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZVNlZ21lbnRzW2ldICE9PSB1cmxTZWdtZW50c1tpXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0Um91dGVNZW51TGF6eUNoaWxkcmVuUm91dGVyTGlua3Mocm9vdE1lbnVJdGVtOiBQcmltZU1lbnVJdGVtLCBsYXp5Q2hpbGRyZW46IEFycmF5PENvbW1vbnNNZW51SXRlbT4pIHtcbiAgICByZXR1cm4gbGF6eUNoaWxkcmVuLm1hcChpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGRNZW51SXRlbSA9IHsuLi5pfTtcbiAgICAgICAgaWYgKGNoaWxkTWVudUl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgY2hpbGRNZW51SXRlbS5yb3V0ZXJMaW5rID0gYXBwZW5kUm91dGVQYXRoVG9CYXNlUGF0aChcbiAgICAgICAgICAgICAgICByb290TWVudUl0ZW0ucm91dGVyTGluayxcbiAgICAgICAgICAgICAgICB0eXBlb2YgY2hpbGRNZW51SXRlbS5yb3V0ZXJMaW5rID09PSAnc3RyaW5nJyA/IFtjaGlsZE1lbnVJdGVtLnJvdXRlckxpbmtdIDogY2hpbGRNZW51SXRlbS5yb3V0ZXJMaW5rXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkTWVudUl0ZW0uaXRlbXMpKSB7XG4gICAgICAgICAgICBjaGlsZE1lbnVJdGVtLml0ZW1zID0gYWRqdXN0Um91dGVNZW51TGF6eUNoaWxkcmVuUm91dGVyTGlua3Mocm9vdE1lbnVJdGVtLCBjaGlsZE1lbnVJdGVtLml0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hpbGRNZW51SXRlbTtcbiAgICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { dateToIsoString } from './date';
|
|
2
|
+
import { objectDeepCopy } from './object';
|
|
3
|
+
export function escapeHtml(value) {
|
|
4
|
+
return value.replace(/</g, '<').replace(/>/g, '>');
|
|
5
|
+
}
|
|
6
|
+
export function escapeHtmlAny(value) {
|
|
7
|
+
if (typeof value === 'string') {
|
|
8
|
+
return escapeHtml(value);
|
|
9
|
+
}
|
|
10
|
+
else if (typeof value === 'object') {
|
|
11
|
+
const escapedValue = objectDeepCopy(value, { mapGettersToProperties: true });
|
|
12
|
+
for (const key in value) {
|
|
13
|
+
if (typeof value[key] === 'string') {
|
|
14
|
+
escapedValue[key] = escapeHtml(value[key]);
|
|
15
|
+
}
|
|
16
|
+
else if (typeof value[key] === 'object') {
|
|
17
|
+
escapedValue[key] = escapeHtmlAny(value[key]);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
escapedValue[key] = value[key];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return escapedValue;
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Stringifies a value - primitives with toString, dates with dateUtil, objects with JSON.stringify.
|
|
29
|
+
* @param value Any value.
|
|
30
|
+
*/
|
|
31
|
+
export function stringify(value) {
|
|
32
|
+
if (value === null) {
|
|
33
|
+
return 'null';
|
|
34
|
+
}
|
|
35
|
+
if (typeof value === 'undefined') {
|
|
36
|
+
return 'undefined';
|
|
37
|
+
}
|
|
38
|
+
// eliminate functions, cause they could fall into objects
|
|
39
|
+
if (typeof value === 'function') {
|
|
40
|
+
return `Function ${value.name ?? 'anonymous'}()`;
|
|
41
|
+
}
|
|
42
|
+
if (typeof value === 'object') {
|
|
43
|
+
// date is object, but would like it in ISO string representation
|
|
44
|
+
if (value instanceof Date) {
|
|
45
|
+
return dateToIsoString(value) ?? 'null';
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
return JSON.stringify(value);
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
return value.toString();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// only primitives should be left to be printed like this (string, number, boolean)
|
|
55
|
+
return value.toString();
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvaGVscGVycy9zdHJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYTtJQUNwQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBVztJQUNyQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE1BQU0sWUFBWSxHQUFRLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRWhGLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDakMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO2lCQUFNLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3hDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBVTtJQUNoQyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUMvQixPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBQ0QsMERBQTBEO0lBQzFELElBQUksT0FBTyxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDOUIsT0FBTyxZQUFZLEtBQUssQ0FBQyxJQUFJLElBQUksV0FBVyxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsaUVBQWlFO1FBQ2pFLElBQUksS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQ3hCLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFDRCxtRkFBbUY7SUFDbkYsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGF0ZVRvSXNvU3RyaW5nfSBmcm9tICcuL2RhdGUnO1xuaW1wb3J0IHtvYmplY3REZWVwQ29weX0gZnJvbSAnLi9vYmplY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlSHRtbCh2YWx1ZTogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUh0bWxBbnkodmFsdWU/OiBhbnkpOiBhbnkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBlc2NhcGVIdG1sKHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgZXNjYXBlZFZhbHVlOiBhbnkgPSBvYmplY3REZWVwQ29weSh2YWx1ZSwge21hcEdldHRlcnNUb1Byb3BlcnRpZXM6IHRydWV9KTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVtrZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVzY2FwZWRWYWx1ZVtrZXldID0gZXNjYXBlSHRtbCh2YWx1ZVtrZXldKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZFZhbHVlW2tleV0gPSBlc2NhcGVIdG1sQW55KHZhbHVlW2tleV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkVmFsdWVba2V5XSA9IHZhbHVlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVzY2FwZWRWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogU3RyaW5naWZpZXMgYSB2YWx1ZSAtIHByaW1pdGl2ZXMgd2l0aCB0b1N0cmluZywgZGF0ZXMgd2l0aCBkYXRlVXRpbCwgb2JqZWN0cyB3aXRoIEpTT04uc3RyaW5naWZ5LlxuICogQHBhcmFtIHZhbHVlIEFueSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICAvLyBlbGltaW5hdGUgZnVuY3Rpb25zLCBjYXVzZSB0aGV5IGNvdWxkIGZhbGwgaW50byBvYmplY3RzXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gYEZ1bmN0aW9uICR7dmFsdWUubmFtZSA/PyAnYW5vbnltb3VzJ30oKWA7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIGRhdGUgaXMgb2JqZWN0LCBidXQgd291bGQgbGlrZSBpdCBpbiBJU08gc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRlVG9Jc29TdHJpbmcodmFsdWUpID8/ICdudWxsJztcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gb25seSBwcmltaXRpdmVzIHNob3VsZCBiZSBsZWZ0IHRvIGJlIHByaW50ZWQgbGlrZSB0aGlzIChzdHJpbmcsIG51bWJlciwgYm9vbGVhbilcbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export function findTemplateByName(templates, name) {
|
|
2
|
+
return templates.find(t => t.getType() === name)?.template ?? null;
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvaGVscGVycy90ZW1wbGF0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFNBQThCLEVBQUUsSUFBWTtJQUMzRSxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7VGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRUZW1wbGF0ZUJ5TmFtZSh0ZW1wbGF0ZXM6IFRlbXBsYXRlRGlyZWN0aXZlW10sIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHtcbiAgICByZXR1cm4gdGVtcGxhdGVzLmZpbmQodCA9PiB0LmdldFR5cGUoKSA9PT0gbmFtZSk/LnRlbXBsYXRlID8/IG51bGw7XG59XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { map } from 'rxjs/operators';
|
|
2
|
+
export function getI18nAsync(translate, params, ...keys) {
|
|
3
|
+
return translate.stream(keys, params).pipe(map(i18n => selectI18n(keys, i18n)));
|
|
4
|
+
}
|
|
5
|
+
export function getI18n(translate, params, ...keys) {
|
|
6
|
+
const i18n = translate.instant(keys, params);
|
|
7
|
+
return selectI18n(keys, i18n);
|
|
8
|
+
}
|
|
9
|
+
export function populateI18nParams(item, params = {}) {
|
|
10
|
+
const paramsRes = { ...params };
|
|
11
|
+
if (item) {
|
|
12
|
+
paramsRes.item = item;
|
|
13
|
+
}
|
|
14
|
+
return paramsRes;
|
|
15
|
+
}
|
|
16
|
+
export function selectI18n(keys, i18n) {
|
|
17
|
+
for (const key of keys) {
|
|
18
|
+
if (key !== i18n[key]) {
|
|
19
|
+
return i18n[key];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9pMThuL2kxOG4tY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxNQUFNLFVBQVUsWUFBWSxDQUFDLFNBQTJCLEVBQUUsTUFBWSxFQUFFLEdBQUcsSUFBbUI7SUFDMUYsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEYsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsU0FBMkIsRUFBRSxNQUFZLEVBQUUsR0FBRyxJQUFtQjtJQUNyRixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFVLEVBQUUsU0FBYyxFQUFFO0lBQzNELE1BQU0sU0FBUyxHQUFHLEVBQUMsR0FBRyxNQUFNLEVBQUMsQ0FBQztJQUM5QixJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1AsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQWMsRUFBRSxJQUFTO0lBQ2hELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4bkFzeW5jKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcGFyYW1zPzogYW55LCAuLi5rZXlzOiBBcnJheTxzdHJpbmc+KTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZS5zdHJlYW0oa2V5cywgcGFyYW1zKS5waXBlKG1hcChpMThuID0+IHNlbGVjdEkxOG4oa2V5cywgaTE4bikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEkxOG4odHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwYXJhbXM/OiBhbnksIC4uLmtleXM6IEFycmF5PHN0cmluZz4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBpMThuID0gdHJhbnNsYXRlLmluc3RhbnQoa2V5cywgcGFyYW1zKTtcbiAgICByZXR1cm4gc2VsZWN0STE4bihrZXlzLCBpMThuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHVsYXRlSTE4blBhcmFtcyhpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgcGFyYW1zUmVzID0gey4uLnBhcmFtc307XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgcGFyYW1zUmVzLml0ZW0gPSBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW1zUmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0STE4bihrZXlzOiBzdHJpbmdbXSwgaTE4bjogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICBpZiAoa2V5ICE9PSBpMThuW2tleV0pIHtcbiAgICAgICAgICAgIHJldHVybiBpMThuW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { getHttpErrorResponse, isHttpErrorResponse } from '../error/error-helpers';
|
|
2
|
+
import { getI18n } from './i18n-common';
|
|
3
|
+
export function getI18nForError(translate, error, params = {}) {
|
|
4
|
+
const i18nParams = getI18nErrorParams(error, params);
|
|
5
|
+
if (error.messageCode) {
|
|
6
|
+
const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];
|
|
7
|
+
const i18n = getI18n(translate, i18nParams, ...keys);
|
|
8
|
+
if (i18n) {
|
|
9
|
+
return i18n;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return getI18n(translate, i18nParams, error.message);
|
|
13
|
+
}
|
|
14
|
+
export function getI18nErrorParams(error, params = {}) {
|
|
15
|
+
const paramsRes = { ...params };
|
|
16
|
+
paramsRes.errorStatus = '';
|
|
17
|
+
paramsRes.errorMessage = '';
|
|
18
|
+
if (isHttpErrorResponse(error)) {
|
|
19
|
+
const httpError = getHttpErrorResponse(error);
|
|
20
|
+
paramsRes.errorStatus = httpError?.status;
|
|
21
|
+
paramsRes.errorMessage = httpError?.message;
|
|
22
|
+
paramsRes.errorStatusDescription = httpError?.statusText;
|
|
23
|
+
}
|
|
24
|
+
paramsRes.error = error;
|
|
25
|
+
return paramsRes;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL2kxOG4vaTE4bi1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXRDLE1BQU0sVUFBVSxlQUFlLENBQUMsU0FBMkIsRUFBRSxLQUFvQixFQUFFLFNBQWMsRUFBRTtJQUMvRixNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxZQUFZLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFvQixFQUFFLFNBQWMsRUFBRTtJQUNyRSxNQUFNLFNBQVMsR0FBRyxFQUFDLEdBQUcsTUFBTSxFQUFDLENBQUM7SUFDOUIsU0FBUyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDM0IsU0FBUyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFFNUIsSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLE1BQU0sQ0FBQztRQUMxQyxTQUFTLENBQUMsWUFBWSxHQUFHLFNBQVMsRUFBRSxPQUFPLENBQUM7UUFDNUMsU0FBUyxDQUFDLHNCQUFzQixHQUFHLFNBQVMsRUFBRSxVQUFVLENBQUM7SUFDN0QsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQge2dldEh0dHBFcnJvclJlc3BvbnNlLCBpc0h0dHBFcnJvclJlc3BvbnNlfSBmcm9tICcuLi9lcnJvci9lcnJvci1oZWxwZXJzJztcbmltcG9ydCB7SUNvbW1vbnNFcnJvcn0gZnJvbSAnLi4vZXJyb3IvZXJyb3IubW9kZWwnO1xuaW1wb3J0IHtnZXRJMThufSBmcm9tICcuL2kxOG4tY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEkxOG5Gb3JFcnJvcih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGVycm9yOiBJQ29tbW9uc0Vycm9yLCBwYXJhbXM6IGFueSA9IHt9KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgaTE4blBhcmFtcyA9IGdldEkxOG5FcnJvclBhcmFtcyhlcnJvciwgcGFyYW1zKTtcbiAgICBpZiAoZXJyb3IubWVzc2FnZUNvZGUpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IFtgZXJyb3JzLiR7ZXJyb3IubWVzc2FnZUNvZGV9YCwgYG1lc3NhZ2VzLiR7ZXJyb3IubWVzc2FnZUNvZGV9YF07XG4gICAgICAgIGNvbnN0IGkxOG4gPSBnZXRJMThuKHRyYW5zbGF0ZSwgaTE4blBhcmFtcywgLi4ua2V5cyk7XG4gICAgICAgIGlmIChpMThuKSB7XG4gICAgICAgICAgICByZXR1cm4gaTE4bjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZ2V0STE4bih0cmFuc2xhdGUsIGkxOG5QYXJhbXMsIGVycm9yLm1lc3NhZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4bkVycm9yUGFyYW1zKGVycm9yOiBJQ29tbW9uc0Vycm9yLCBwYXJhbXM6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgcGFyYW1zUmVzID0gey4uLnBhcmFtc307XG4gICAgcGFyYW1zUmVzLmVycm9yU3RhdHVzID0gJyc7XG4gICAgcGFyYW1zUmVzLmVycm9yTWVzc2FnZSA9ICcnO1xuXG4gICAgaWYgKGlzSHR0cEVycm9yUmVzcG9uc2UoZXJyb3IpKSB7XG4gICAgICAgIGNvbnN0IGh0dHBFcnJvciA9IGdldEh0dHBFcnJvclJlc3BvbnNlKGVycm9yKTtcbiAgICAgICAgcGFyYW1zUmVzLmVycm9yU3RhdHVzID0gaHR0cEVycm9yPy5zdGF0dXM7XG4gICAgICAgIHBhcmFtc1Jlcy5lcnJvck1lc3NhZ2UgPSBodHRwRXJyb3I/Lm1lc3NhZ2U7XG4gICAgICAgIHBhcmFtc1Jlcy5lcnJvclN0YXR1c0Rlc2NyaXB0aW9uID0gaHR0cEVycm9yPy5zdGF0dXNUZXh0O1xuICAgIH1cblxuICAgIHBhcmFtc1Jlcy5lcnJvciA9IGVycm9yO1xuICAgIHJldHVybiBwYXJhbXNSZXM7XG59XG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { findReflectTypeName } from '../reflect/type-enum-metadata';
|
|
4
|
+
import { getI18n, getI18nAsync, populateI18nParams } from './i18n-common';
|
|
5
|
+
export function getI18nClassNameAsync(translate, classType, singular) {
|
|
6
|
+
const typeName = findReflectTypeName(classType);
|
|
7
|
+
return getI18nTypeNameAsync(translate, typeName ?? '', singular);
|
|
8
|
+
}
|
|
9
|
+
export function getI18nClassName(translate, classType, singular) {
|
|
10
|
+
const typeName = findReflectTypeName(classType);
|
|
11
|
+
return getI18nTypeName(translate, typeName ?? '', singular);
|
|
12
|
+
}
|
|
13
|
+
export function getI18nTypeNameAsync(translate, typeName, singular) {
|
|
14
|
+
const keys = getI18nTypeNameKeys(typeName, singular);
|
|
15
|
+
return getI18nAsync(translate, undefined, ...keys);
|
|
16
|
+
}
|
|
17
|
+
export function getI18nTypeName(translate, typeName, singular) {
|
|
18
|
+
const keys = getI18nTypeNameKeys(typeName, singular);
|
|
19
|
+
return getI18n(translate, undefined, ...keys);
|
|
20
|
+
}
|
|
21
|
+
export function getI18nClassTabKey(classType, tab) {
|
|
22
|
+
const typeName = findReflectTypeName(classType);
|
|
23
|
+
return getI18nTypeTabKey(typeName ?? '', tab);
|
|
24
|
+
}
|
|
25
|
+
export function getI18nTypeTabKey(typeName, tab) {
|
|
26
|
+
return getI18nTypeKeyBasePath(typeName, 'tabs', tab);
|
|
27
|
+
}
|
|
28
|
+
export function getI18nClassGroupKey(classType, group) {
|
|
29
|
+
const typeName = findReflectTypeName(classType);
|
|
30
|
+
return getI18nTypeGroupKey(typeName ?? '', group);
|
|
31
|
+
}
|
|
32
|
+
export function getI18nTypeGroupKey(typeName, group) {
|
|
33
|
+
return getI18nTypeKeyBasePath(typeName, 'groups', group);
|
|
34
|
+
}
|
|
35
|
+
export function getI18nClassPropertyKey(classType, property) {
|
|
36
|
+
const typeName = findReflectTypeName(classType);
|
|
37
|
+
return getI18nTypePropertyKey(typeName ?? '', property);
|
|
38
|
+
}
|
|
39
|
+
export function getI18nTypePropertyKey(typeName, property) {
|
|
40
|
+
return getI18nTypeKeyBasePath(typeName, 'properties', property);
|
|
41
|
+
}
|
|
42
|
+
export function getI18nClassKeyBasePath(classType, ...path) {
|
|
43
|
+
const typeName = findReflectTypeName(classType);
|
|
44
|
+
return getI18nTypeKeyBasePath(typeName ?? '', ...path);
|
|
45
|
+
}
|
|
46
|
+
export function getI18nTypeKeyBasePath(typeName, ...path) {
|
|
47
|
+
return `${typeName.length ? `${typeName}.` : ''}${path.join('.')}`;
|
|
48
|
+
}
|
|
49
|
+
export function getI18nClassParams(translate, classType, item, params = {}) {
|
|
50
|
+
const typeName = findReflectTypeName(classType);
|
|
51
|
+
return getI18nTypeParams(translate, typeName ?? undefined, item, params);
|
|
52
|
+
}
|
|
53
|
+
export function getI18nTypeParams(translate, typeName, item, params = {}) {
|
|
54
|
+
const i18nTypeName = typeName ? getI18nTypeName(translate, typeName, true) : null;
|
|
55
|
+
return populateI18nTypeParams(i18nTypeName ?? undefined, item, params);
|
|
56
|
+
}
|
|
57
|
+
export function getI18nClassParamsAsync(translate, classType, item, params = {}) {
|
|
58
|
+
const typeName = findReflectTypeName(classType);
|
|
59
|
+
return getI18nTypeParamsAsync(translate, typeName ?? undefined, item, params);
|
|
60
|
+
}
|
|
61
|
+
export function getI18nTypeParamsAsync(translate, typeName, item, params = {}) {
|
|
62
|
+
return (typeName ? getI18nTypeNameAsync(translate, typeName, true) : of(null)).pipe(map(i18nTypeName => populateI18nTypeParams(i18nTypeName ?? undefined, item, params)));
|
|
63
|
+
}
|
|
64
|
+
export function populateI18nTypeParams(i18nTypeName, item, params = {}) {
|
|
65
|
+
const paramsRes = { ...params };
|
|
66
|
+
if (i18nTypeName) {
|
|
67
|
+
paramsRes.typeName = i18nTypeName;
|
|
68
|
+
}
|
|
69
|
+
return populateI18nParams(item, paramsRes);
|
|
70
|
+
}
|
|
71
|
+
function getI18nTypeNameKeys(typeName, singular) {
|
|
72
|
+
const keys = [];
|
|
73
|
+
if (typeof singular !== 'undefined') {
|
|
74
|
+
keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);
|
|
75
|
+
}
|
|
76
|
+
keys.push(`${typeName.length ? `${typeName}.` : ''}name`);
|
|
77
|
+
return keys;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvaTE4bi9pMThuLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEUsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFNBQTJCLEVBQUUsU0FBeUIsRUFBRSxRQUFrQjtJQUM1RyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxPQUFPLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsU0FBMkIsRUFBRSxTQUF5QixFQUFFLFFBQWtCO0lBQ3ZHLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELE9BQU8sZUFBZSxDQUFDLFNBQVMsRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsU0FBMkIsRUFBRSxRQUFnQixFQUFFLFFBQWtCO0lBQ2xHLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxPQUFPLFlBQVksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsU0FBMkIsRUFB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LGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLGFBQWEsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uL21vZGVscy9jbGFzcy1zZXJ2aWNlLm1vZGVsJztcbmltcG9ydCB7ZmluZFJlZmxlY3RUeXBlTmFtZX0gZnJvbSAnLi4vcmVmbGVjdC90eXBlLWVudW0tbWV0YWRhdGEnO1xuaW1wb3J0IHtnZXRJMThuLCBnZXRJMThuQXN5bmMsIHBvcHVsYXRlSTE4blBhcmFtc30gZnJvbSAnLi9pMThuLWNvbW1vbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJMThuQ2xhc3NOYW1lQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCBzaW5ndWxhcj86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IGZpbmRSZWZsZWN0VHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICByZXR1cm4gZ2V0STE4blR5cGVOYW1lQXN5bmModHJhbnNsYXRlLCB0eXBlTmFtZSA/PyAnJywgc2luZ3VsYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4bkNsYXNzTmFtZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIHNpbmd1bGFyPzogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgIHJldHVybiBnZXRJMThuVHlwZU5hbWUodHJhbnNsYXRlLCB0eXBlTmFtZSA/PyAnJywgc2luZ3VsYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4blR5cGVOYW1lQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0eXBlTmFtZTogc3RyaW5nLCBzaW5ndWxhcj86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCBrZXlzID0gZ2V0STE4blR5cGVOYW1lS2V5cyh0eXBlTmFtZSwgc2luZ3VsYXIpO1xuICAgIHJldHVybiBnZXRJMThuQXN5bmModHJhbnNsYXRlLCB1bmRlZmluZWQsIC4uLmtleXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4blR5cGVOYW1lKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgdHlwZU5hbWU6IHN0cmluZywgc2luZ3VsYXI/OiBib29sZWFuKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qga2V5cyA9IGdldEkxOG5UeXBlTmFtZUtleXModHlwZU5hbWUsIHNpbmd1bGFyKTtcbiAgICByZXR1cm4gZ2V0STE4bih0cmFuc2xhdGUsIHVuZGVmaW5lZCwgLi4ua2V5cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJMThuQ2xhc3NUYWJLZXkoY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55PiwgdGFiOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgIHJldHVybiBnZXRJMThuVHlwZVRhYktleSh0eXBlTmFtZSA/PyAnJywgdGFiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEkxOG5UeXBlVGFiS2V5KHR5cGVOYW1lOiBzdHJpbmcsIHRhYjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0STE4blR5cGVLZXlCYXNlUGF0aCh0eXBlTmFtZSwgJ3RhYnMnLCB0YWIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4bkNsYXNzR3JvdXBLZXkoY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55PiwgZ3JvdXA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSBmaW5kUmVmbGVjdFR5cGVOYW1lKGNsYXNzVHlwZSk7XG4gICAgcmV0dXJuIGdldEkxOG5UeXBlR3JvdXBLZXkodHlwZU5hbWUgPz8gJycsIGdyb3VwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEkxOG5UeXBlR3JvdXBLZXkodHlwZU5hbWU6IHN0cmluZywgZ3JvdXA6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldEkxOG5UeXBlS2V5QmFzZVBhdGgodHlwZU5hbWUsICdncm91cHMnLCBncm91cCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJMThuQ2xhc3NQcm9wZXJ0eUtleShjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCBwcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IGZpbmRSZWZsZWN0VHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICByZXR1cm4gZ2V0STE4blR5cGVQcm9wZXJ0eUtleSh0eXBlTmFtZSA/PyAnJywgcHJvcGVydHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4blR5cGVQcm9wZXJ0eUtleSh0eXBlTmFtZTogc3RyaW5nLCBwcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0STE4blR5cGVLZXlCYXNlUGF0aCh0eXBlTmFtZSwgJ3Byb3BlcnRpZXMnLCBwcm9wZXJ0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJMThuQ2xhc3NLZXlCYXNlUGF0aChjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCAuLi5wYXRoOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IGZpbmRSZWZsZWN0VHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICByZXR1cm4gZ2V0STE4blR5cGVLZXlCYXNlUGF0aCh0eXBlTmFtZSA/PyAnJywgLi4ucGF0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJMThuVHlwZUtleUJhc2VQYXRoKHR5cGVOYW1lOiBzdHJpbmcsIC4uLnBhdGg6IEFycmF5PHN0cmluZz4pOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0eXBlTmFtZS5sZW5ndGggPyBgJHt0eXBlTmFtZX0uYCA6ICcnfSR7cGF0aC5qb2luKCcuJyl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEkxOG5DbGFzc1BhcmFtcyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIGl0ZW06IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSBmaW5kUmVmbGVjdFR5cGVOYW1lKGNsYXNzVHlwZSk7XG4gICAgcmV0dXJuIGdldEkxOG5UeXBlUGFyYW1zKHRyYW5zbGF0ZSwgdHlwZU5hbWUgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4blR5cGVQYXJhbXModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0eXBlTmFtZT86IHN0cmluZywgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgY29uc3QgaTE4blR5cGVOYW1lID0gdHlwZU5hbWUgPyBnZXRJMThuVHlwZU5hbWUodHJhbnNsYXRlLCB0eXBlTmFtZSwgdHJ1ZSkgOiBudWxsO1xuICAgIHJldHVybiBwb3B1bGF0ZUkxOG5UeXBlUGFyYW1zKGkxOG5UeXBlTmFtZSA/PyB1bmRlZmluZWQsIGl0ZW0sIHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJMThuQ2xhc3NQYXJhbXNBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgIHJldHVybiBnZXRJMThuVHlwZVBhcmFtc0FzeW5jKHRyYW5zbGF0ZSwgdHlwZU5hbWUgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0STE4blR5cGVQYXJhbXNBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHR5cGVOYW1lPzogc3RyaW5nLCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gKHR5cGVOYW1lID8gZ2V0STE4blR5cGVOYW1lQXN5bmModHJhbnNsYXRlLCB0eXBlTmFtZSwgdHJ1ZSkgOiBvZihudWxsKSkucGlwZShtYXAoaTE4blR5cGVOYW1lID0+IHBvcHVsYXRlSTE4blR5cGVQYXJhbXMoaTE4blR5cGVOYW1lID8/IHVuZGVmaW5lZCwgaXRlbSwgcGFyYW1zKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVJMThuVHlwZVBhcmFtcyhpMThuVHlwZU5hbWU/OiBzdHJpbmcsIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgIGNvbnN0IHBhcmFtc1JlcyA9IHsuLi5wYXJhbXN9O1xuICAgIGlmIChpMThuVHlwZU5hbWUpIHtcbiAgICAgICAgcGFyYW1zUmVzLnR5cGVOYW1lID0gaTE4blR5cGVOYW1lO1xuICAgIH1cbiAgICByZXR1cm4gcG9wdWxhdGVJMThuUGFyYW1zKGl0ZW0sIHBhcmFtc1Jlcyk7XG59XG5cbmZ1bmN0aW9uIGdldEkxOG5UeXBlTmFtZUtleXModHlwZU5hbWU6IHN0cmluZywgc2luZ3VsYXI/OiBib29sZWFuKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3Qga2V5cyA9IFtdO1xuICAgIGlmICh0eXBlb2Ygc2luZ3VsYXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGtleXMucHVzaChzaW5ndWxhciA/IGAke3R5cGVOYW1lfS5uYW1lU2luZ3VsYXJgIDogYCR7dHlwZU5hbWV9Lm5hbWVQbHVyYWxgKTtcbiAgICB9XG4gICAga2V5cy5wdXNoKGAke3R5cGVOYW1lLmxlbmd0aCA/IGAke3R5cGVOYW1lfS5gIDogJyd9bmFtZWApO1xuICAgIHJldHVybiBrZXlzO1xufVxuIl19
|