@mediusinc/mng-commons 0.8.0-rc.3 → 0.8.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 +3 -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 +17 -17
- package/esm2020/lib/api/models/serialization.model.mjs +1 -1
- package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
- package/esm2020/lib/api/services/crud-api.abstract.service.mjs +66 -66
- package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
- 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 +151 -151
- package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
- package/esm2020/lib/components/action/action.component.mjs +176 -176
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -230
- package/esm2020/lib/components/action/index.mjs +3 -3
- package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
- package/esm2020/lib/components/action/models/action-execution.model.mjs +234 -234
- package/esm2020/lib/components/action/models/index.mjs +2 -2
- package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +268 -268
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +160 -160
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +189 -189
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +18 -18
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +42 -42
- package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +24 -24
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +95 -95
- package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +16 -16
- package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +178 -178
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +155 -155
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +126 -126
- 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 +9 -9
- package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
- package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
- package/esm2020/lib/components/form/index.mjs +3 -3
- package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
- package/esm2020/lib/components/form/models/index.mjs +1 -1
- 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 +6 -6
- package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
- package/esm2020/lib/components/layout/menu-item.component.mjs +216 -216
- package/esm2020/lib/components/layout/menu.component.mjs +19 -19
- package/esm2020/lib/components/layout/services/index.mjs +1 -1
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
- package/esm2020/lib/components/layout/topbar.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 +56 -56
- package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +53 -53
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +101 -101
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
- package/esm2020/lib/components/tableview/table/table.component.mjs +429 -429
- package/esm2020/lib/components/tableview/tableview.component.mjs +91 -91
- package/esm2020/lib/config/formly.config.mjs +180 -180
- package/esm2020/lib/config/index.mjs +1 -1
- package/esm2020/lib/config/models/index.mjs +1 -1
- package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
- package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
- package/esm2020/lib/data-providers/index.mjs +5 -5
- package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
- package/esm2020/lib/data-providers/table.data-provider.mjs +16 -16
- package/esm2020/lib/data-providers/tableview.data-provider.mjs +16 -16
- package/esm2020/lib/descriptors/action.descriptor.mjs +622 -622
- package/esm2020/lib/descriptors/column.descriptor.mjs +271 -271
- package/esm2020/lib/descriptors/editor.descriptor.mjs +154 -154
- package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
- package/esm2020/lib/descriptors/field.descriptor.interface.mjs +1 -1
- package/esm2020/lib/descriptors/field.descriptor.mjs +863 -863
- package/esm2020/lib/descriptors/filter.descriptor.mjs +294 -294
- package/esm2020/lib/descriptors/index.mjs +11 -11
- package/esm2020/lib/descriptors/lookup.descriptor.mjs +1 -1
- package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
- package/esm2020/lib/descriptors/table.descriptor.mjs +213 -213
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +134 -134
- package/esm2020/lib/directives/component.directive.mjs +43 -43
- package/esm2020/lib/directives/index.mjs +2 -2
- package/esm2020/lib/directives/template.directive.mjs +27 -27
- package/esm2020/lib/mng-commons.module.mjs +426 -426
- package/esm2020/lib/models/column-value.model.mjs +1 -1
- package/esm2020/lib/models/enum.model.mjs +1 -1
- package/esm2020/lib/models/error.model.mjs +1 -1
- package/esm2020/lib/models/index.mjs +6 -6
- package/esm2020/lib/models/menu.model.mjs +1 -1
- package/esm2020/lib/models/user.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/enum.pipe.mjs +24 -24
- package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
- package/esm2020/lib/pipes/index.mjs +5 -5
- package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
- package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
- package/esm2020/lib/router/index.mjs +1 -1
- 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 +431 -431
- package/esm2020/lib/services/action-executor.service.mjs +535 -535
- package/esm2020/lib/services/commons.service.mjs +343 -343
- package/esm2020/lib/services/configuration.service.mjs +110 -110
- 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/view-container.component.service.mjs +34 -34
- package/esm2020/lib/types/index.mjs +2 -2
- package/esm2020/lib/types/type.decorator.mjs +12 -12
- package/esm2020/lib/types/type.model.mjs +1 -1
- package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
- package/esm2020/lib/utils/editor-formly.util.mjs +209 -209
- package/esm2020/lib/utils/enum.util.mjs +81 -81
- package/esm2020/lib/utils/i18n.util.mjs +232 -232
- package/esm2020/lib/utils/index.mjs +7 -7
- package/esm2020/lib/utils/model.util.mjs +59 -59
- package/esm2020/lib/utils/notification.util.mjs +45 -45
- package/esm2020/lib/utils/route.util.mjs +23 -23
- package/esm2020/lib/utils/styles.util.mjs +40 -40
- package/esm2020/lib/utils/type.util.mjs +76 -76
- package/esm2020/mediusinc-mng-commons.mjs +4 -4
- package/esm2020/public-api.mjs +39 -39
- package/fesm2015/mediusinc-mng-commons.mjs +9908 -9891
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +9774 -9757
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- 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 +23 -23
- 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 +14 -14
- package/lib/api/utils/object-serializer.util.d.ts +33 -33
- package/lib/components/action/action.component.d.ts +68 -68
- package/lib/components/action/editor/action-editor.component.d.ts +64 -62
- package/lib/components/action/index.d.ts +3 -3
- package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
- package/lib/components/action/models/action-execution.model.d.ts +129 -129
- package/lib/components/action/models/index.d.ts +2 -2
- package/lib/components/action/route/action-route.component.d.ts +31 -31
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +53 -53
- package/lib/components/form/dropdown/dropdown.component.d.ts +44 -44
- package/lib/components/form/editor/form-editor.component.d.ts +45 -45
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +12 -12
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
- package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +12 -12
- package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +21 -21
- package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +6 -6
- package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +44 -44
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +22 -22
- 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 +6 -6
- package/lib/components/form/formly/fields/index.d.ts +9 -9
- package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
- package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
- package/lib/components/form/formly/wrappers/index.d.ts +2 -2
- package/lib/components/form/index.d.ts +3 -3
- package/lib/components/form/models/form-editor.event.d.ts +37 -37
- package/lib/components/form/models/index.d.ts +1 -1
- 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 +6 -6
- package/lib/components/layout/main-layout.component.d.ts +20 -20
- package/lib/components/layout/menu-item.component.d.ts +37 -37
- 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 +24 -24
- 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 +20 -20
- package/lib/components/tableview/route/tableview-route.component.d.ts +18 -18
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +31 -31
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +28 -28
- package/lib/components/tableview/table/table.component.d.ts +104 -104
- package/lib/components/tableview/tableview.component.d.ts +41 -41
- package/lib/config/formly.config.d.ts +15 -15
- package/lib/config/index.d.ts +1 -1
- package/lib/config/models/index.d.ts +1 -1
- package/lib/config/models/mng-config.model.d.ts +34 -34
- 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 +5 -5
- package/lib/data-providers/lookup.data-provider.d.ts +14 -14
- package/lib/data-providers/table.data-provider.d.ts +14 -14
- package/lib/data-providers/tableview.data-provider.d.ts +15 -15
- package/lib/descriptors/action.descriptor.d.ts +277 -277
- package/lib/descriptors/column.descriptor.d.ts +91 -91
- package/lib/descriptors/editor.descriptor.d.ts +44 -44
- package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
- package/lib/descriptors/field.descriptor.d.ts +342 -342
- package/lib/descriptors/field.descriptor.interface.d.ts +9 -9
- package/lib/descriptors/filter.descriptor.d.ts +127 -127
- package/lib/descriptors/index.d.ts +11 -11
- package/lib/descriptors/lookup.descriptor.d.ts +17 -17
- package/lib/descriptors/model.descriptor.d.ts +15 -15
- package/lib/descriptors/table.descriptor.d.ts +80 -80
- package/lib/descriptors/tableview.descriptor.d.ts +42 -42
- 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 +86 -86
- package/lib/models/column-value.model.d.ts +4 -4
- package/lib/models/enum.model.d.ts +6 -6
- package/lib/models/error.model.d.ts +14 -14
- package/lib/models/index.d.ts +6 -6
- package/lib/models/menu.model.d.ts +25 -25
- package/lib/models/user.model.d.ts +8 -8
- package/lib/models/view-container.model.d.ts +6 -6
- package/lib/pipes/boolean.pipe.d.ts +7 -7
- package/lib/pipes/enum.pipe.d.ts +8 -8
- package/lib/pipes/i18n-property.pipe.d.ts +8 -8
- package/lib/pipes/index.d.ts +5 -5
- package/lib/pipes/json-path.pipe.d.ts +13 -13
- package/lib/pipes/link-formatter.pipe.d.ts +11 -11
- package/lib/router/index.d.ts +1 -1
- package/lib/router/models/index.d.ts +1 -1
- package/lib/router/models/router.model.d.ts +22 -22
- package/lib/router/route-builder.d.ts +86 -86
- package/lib/services/action-executor.service.d.ts +149 -149
- package/lib/services/commons.service.d.ts +72 -72
- package/lib/services/configuration.service.d.ts +36 -36
- 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/view-container.component.service.d.ts +22 -22
- package/lib/types/index.d.ts +2 -2
- package/lib/types/type.decorator.d.ts +4 -4
- package/lib/types/type.model.d.ts +20 -20
- package/lib/utils/action-data-provider.util.d.ts +20 -20
- package/lib/utils/editor-formly.util.d.ts +10 -10
- package/lib/utils/enum.util.d.ts +50 -50
- package/lib/utils/i18n.util.d.ts +56 -56
- package/lib/utils/index.d.ts +7 -7
- package/lib/utils/model.util.d.ts +8 -8
- package/lib/utils/notification.util.d.ts +11 -11
- package/lib/utils/route.util.d.ts +4 -4
- package/lib/utils/styles.util.d.ts +14 -14
- package/lib/utils/type.util.d.ts +36 -36
- package/mediusinc-mng-commons.d.ts +5 -5
- package/package.json +3 -3
- package/public-api.d.ts +28 -28
- package/mediusinc-mng-commons-0.8.0-rc.3.tgz +0 -0
|
@@ -1,210 +1,210 @@
|
|
|
1
|
-
import { FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor } from '../descriptors';
|
|
2
|
-
export class EditorFormlyUtil {
|
|
3
|
-
static createFormlyConfigFromDescriptor(descriptor) {
|
|
4
|
-
const fields = [];
|
|
5
|
-
if (descriptor.tabs.length === 1 && descriptor.tabs[0].default) {
|
|
6
|
-
// dont use tabs
|
|
7
|
-
fields.push(...EditorFormlyUtil.createFormlyGroupType(descriptor.tabs[0].fields));
|
|
8
|
-
}
|
|
9
|
-
else {
|
|
10
|
-
fields.push(...EditorFormlyUtil.createFormlyTabType(descriptor.tabs));
|
|
11
|
-
}
|
|
12
|
-
return fields;
|
|
13
|
-
}
|
|
14
|
-
static createFormlyTabType(tabGroups) {
|
|
15
|
-
const tabsField = {
|
|
16
|
-
type: 'tabs',
|
|
17
|
-
fieldGroup: []
|
|
18
|
-
};
|
|
19
|
-
for (const tab of tabGroups) {
|
|
20
|
-
const tabField = {
|
|
21
|
-
id: tab.name,
|
|
22
|
-
templateOptions: {},
|
|
23
|
-
fieldGroup: []
|
|
24
|
-
};
|
|
25
|
-
if (tab.title) {
|
|
26
|
-
tabField.templateOptions.label = tab.title;
|
|
27
|
-
}
|
|
28
|
-
tabField.fieldGroup.push(...EditorFormlyUtil.createFormlyGroupType(tab.fields));
|
|
29
|
-
tabsField.fieldGroup.push(tabField);
|
|
30
|
-
}
|
|
31
|
-
return [tabsField];
|
|
32
|
-
}
|
|
33
|
-
static createFormlyGroupType(groups) {
|
|
34
|
-
if (groups.length === 1 && groups[0].default) {
|
|
35
|
-
// dont use fieldset, just create fields
|
|
36
|
-
return EditorFormlyUtil.createFormlyFields(groups[0]);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
const groupsField = {
|
|
40
|
-
type: 'fieldset',
|
|
41
|
-
fieldGroup: []
|
|
42
|
-
};
|
|
43
|
-
for (const group of groups) {
|
|
44
|
-
const groupField = {
|
|
45
|
-
id: group.name,
|
|
46
|
-
templateOptions: {
|
|
47
|
-
descriptor: group
|
|
48
|
-
},
|
|
49
|
-
fieldGroup: []
|
|
50
|
-
};
|
|
51
|
-
if (group.title) {
|
|
52
|
-
groupField.templateOptions.label = group.title;
|
|
53
|
-
}
|
|
54
|
-
groupField.fieldGroup.push(...EditorFormlyUtil.createFormlyFields(group));
|
|
55
|
-
groupsField.fieldGroup.push(groupField);
|
|
56
|
-
}
|
|
57
|
-
return [groupsField];
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
static createFormlyFields(descriptor) {
|
|
61
|
-
const fields = [];
|
|
62
|
-
for (const descriptorField of descriptor.fields) {
|
|
63
|
-
fields.push(EditorFormlyUtil.createFormlyField(descriptorField));
|
|
64
|
-
}
|
|
65
|
-
// wrap in group to be able to use flex grid
|
|
66
|
-
const wrapperGroup = {
|
|
67
|
-
fieldGroupClassName: 'p-fluid formgrid grid',
|
|
68
|
-
fieldGroup: fields
|
|
69
|
-
};
|
|
70
|
-
EditorFormlyUtil.addValidationsToFormlyField(wrapperGroup, descriptor.validations);
|
|
71
|
-
return [wrapperGroup];
|
|
72
|
-
}
|
|
73
|
-
static createFormlyField(descriptor) {
|
|
74
|
-
const field = {
|
|
75
|
-
key: descriptor.property,
|
|
76
|
-
expressionProperties: {},
|
|
77
|
-
templateOptions: {}
|
|
78
|
-
};
|
|
79
|
-
let className = descriptor.className;
|
|
80
|
-
if (!className) {
|
|
81
|
-
// assign default field width through entire row
|
|
82
|
-
className = 'col-12';
|
|
83
|
-
}
|
|
84
|
-
field.className = className;
|
|
85
|
-
field.templateOptions['descriptor'] = descriptor;
|
|
86
|
-
if (descriptor instanceof FieldInputDescriptor) {
|
|
87
|
-
switch (descriptor.fieldType) {
|
|
88
|
-
case FieldInputDescriptor.TypeEnum.Hidden:
|
|
89
|
-
break;
|
|
90
|
-
case FieldInputDescriptor.TypeEnum.Label:
|
|
91
|
-
field.type = 'label';
|
|
92
|
-
delete field.key;
|
|
93
|
-
break;
|
|
94
|
-
case FieldInputDescriptor.TypeEnum.Textarea:
|
|
95
|
-
field.type = 'textarea';
|
|
96
|
-
break;
|
|
97
|
-
case FieldInputDescriptor.TypeEnum.Number:
|
|
98
|
-
field.type = 'number';
|
|
99
|
-
field.templateOptions.min = descriptor.numberMin;
|
|
100
|
-
field.templateOptions.max = descriptor.numberMax;
|
|
101
|
-
break;
|
|
102
|
-
case FieldInputDescriptor.TypeEnum.Currency:
|
|
103
|
-
field.type = 'currency';
|
|
104
|
-
field.templateOptions.min = descriptor.numberMin;
|
|
105
|
-
field.templateOptions.max = descriptor.numberMax;
|
|
106
|
-
break;
|
|
107
|
-
case FieldInputDescriptor.TypeEnum.Switch:
|
|
108
|
-
field.type = 'switch';
|
|
109
|
-
break;
|
|
110
|
-
case FieldInputDescriptor.TypeEnum.Radio:
|
|
111
|
-
field.type = 'radio';
|
|
112
|
-
break;
|
|
113
|
-
case FieldInputDescriptor.TypeEnum.Datepicker:
|
|
114
|
-
field.type = 'datepicker';
|
|
115
|
-
break;
|
|
116
|
-
case FieldInputDescriptor.TypeEnum.Mask:
|
|
117
|
-
field.type = 'mask';
|
|
118
|
-
break;
|
|
119
|
-
case FieldInputDescriptor.TypeEnum.File:
|
|
120
|
-
field.type = 'file';
|
|
121
|
-
break;
|
|
122
|
-
case FieldInputDescriptor.TypeEnum.Custom:
|
|
123
|
-
field.type = descriptor.customComponentName;
|
|
124
|
-
break;
|
|
125
|
-
default:
|
|
126
|
-
field.type = 'input';
|
|
127
|
-
field.templateOptions.minLength = descriptor.minLength;
|
|
128
|
-
field.templateOptions.maxLength = descriptor.maxLength;
|
|
129
|
-
field.templateOptions.pattern = descriptor.pattern;
|
|
130
|
-
break;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else if (descriptor instanceof FieldLookupEnumDescriptor) {
|
|
134
|
-
field.type = 'enum';
|
|
135
|
-
}
|
|
136
|
-
else if (descriptor instanceof FieldLookupDescriptor) {
|
|
137
|
-
switch (descriptor.lookupType) {
|
|
138
|
-
case FieldLookupDescriptor.LookupTypeEnum.Autocomplete:
|
|
139
|
-
field.type = 'autocomplete';
|
|
140
|
-
break;
|
|
141
|
-
case FieldLookupDescriptor.LookupTypeEnum.Dialog:
|
|
142
|
-
field.type = 'dialog';
|
|
143
|
-
break;
|
|
144
|
-
case FieldLookupDescriptor.LookupTypeEnum.Dropdown:
|
|
145
|
-
default:
|
|
146
|
-
field.type = 'dropdown';
|
|
147
|
-
break;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
else if (descriptor instanceof FieldManyToManyEditorDescriptor) {
|
|
151
|
-
field.type = 'table-dialog-multiselect';
|
|
152
|
-
}
|
|
153
|
-
else if (descriptor instanceof FieldManyEditorDescriptor) {
|
|
154
|
-
field.type = 'table-dialog-form';
|
|
155
|
-
}
|
|
156
|
-
if (descriptor.label) {
|
|
157
|
-
field.templateOptions.label = descriptor.label;
|
|
158
|
-
}
|
|
159
|
-
if (descriptor.requiredExpression) {
|
|
160
|
-
field.expressionProperties['templateOptions.required'] = descriptor.requiredExpression;
|
|
161
|
-
}
|
|
162
|
-
if (descriptor.required) {
|
|
163
|
-
field.templateOptions.required = true;
|
|
164
|
-
}
|
|
165
|
-
if (descriptor.hiddenExpression) {
|
|
166
|
-
field.expressionProperties['hide'] = descriptor.hiddenExpression;
|
|
167
|
-
}
|
|
168
|
-
if (descriptor.disabledExpression) {
|
|
169
|
-
field.expressionProperties['templateOptions.disabled'] = descriptor.disabledExpression;
|
|
170
|
-
}
|
|
171
|
-
else if (descriptor.disabled) {
|
|
172
|
-
field.templateOptions.disabled = true;
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
field.expressionProperties['templateOptions.disabled'] = 'formState.disabled';
|
|
176
|
-
}
|
|
177
|
-
if (typeof descriptor.defaultValue !== 'undefined') {
|
|
178
|
-
field.defaultValue = descriptor.defaultValue;
|
|
179
|
-
}
|
|
180
|
-
EditorFormlyUtil.addValidationsToFormlyField(field, descriptor.validations);
|
|
181
|
-
return field;
|
|
182
|
-
}
|
|
183
|
-
static addValidationsToFormlyField(config, validations) {
|
|
184
|
-
if (!config.validators) {
|
|
185
|
-
config.validators = {};
|
|
186
|
-
}
|
|
187
|
-
for (const validation of validations) {
|
|
188
|
-
if (typeof validation.validator === 'function') {
|
|
189
|
-
config.validators[validation.name] = {
|
|
190
|
-
expression: (control, field, options) => {
|
|
191
|
-
const validatorRes = validation.validator(control, field, options);
|
|
192
|
-
// formly validator only excepts true/false for validation
|
|
193
|
-
// map possible angular validator result to true/false
|
|
194
|
-
return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
if (typeof validation.message === 'function') {
|
|
198
|
-
config.validators[validation.name].message = validation.message;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
if (!Array.isArray(config.validators.validation)) {
|
|
203
|
-
config.validators.validation = [];
|
|
204
|
-
}
|
|
205
|
-
config.validators.validation.push(validation.name);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
1
|
+
import { FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor } from '../descriptors';
|
|
2
|
+
export class EditorFormlyUtil {
|
|
3
|
+
static createFormlyConfigFromDescriptor(descriptor) {
|
|
4
|
+
const fields = [];
|
|
5
|
+
if (descriptor.tabs.length === 1 && descriptor.tabs[0].default) {
|
|
6
|
+
// dont use tabs
|
|
7
|
+
fields.push(...EditorFormlyUtil.createFormlyGroupType(descriptor.tabs[0].fields));
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
fields.push(...EditorFormlyUtil.createFormlyTabType(descriptor.tabs));
|
|
11
|
+
}
|
|
12
|
+
return fields;
|
|
13
|
+
}
|
|
14
|
+
static createFormlyTabType(tabGroups) {
|
|
15
|
+
const tabsField = {
|
|
16
|
+
type: 'tabs',
|
|
17
|
+
fieldGroup: []
|
|
18
|
+
};
|
|
19
|
+
for (const tab of tabGroups) {
|
|
20
|
+
const tabField = {
|
|
21
|
+
id: tab.name,
|
|
22
|
+
templateOptions: {},
|
|
23
|
+
fieldGroup: []
|
|
24
|
+
};
|
|
25
|
+
if (tab.title) {
|
|
26
|
+
tabField.templateOptions.label = tab.title;
|
|
27
|
+
}
|
|
28
|
+
tabField.fieldGroup.push(...EditorFormlyUtil.createFormlyGroupType(tab.fields));
|
|
29
|
+
tabsField.fieldGroup.push(tabField);
|
|
30
|
+
}
|
|
31
|
+
return [tabsField];
|
|
32
|
+
}
|
|
33
|
+
static createFormlyGroupType(groups) {
|
|
34
|
+
if (groups.length === 1 && groups[0].default) {
|
|
35
|
+
// dont use fieldset, just create fields
|
|
36
|
+
return EditorFormlyUtil.createFormlyFields(groups[0]);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
const groupsField = {
|
|
40
|
+
type: 'fieldset',
|
|
41
|
+
fieldGroup: []
|
|
42
|
+
};
|
|
43
|
+
for (const group of groups) {
|
|
44
|
+
const groupField = {
|
|
45
|
+
id: group.name,
|
|
46
|
+
templateOptions: {
|
|
47
|
+
descriptor: group
|
|
48
|
+
},
|
|
49
|
+
fieldGroup: []
|
|
50
|
+
};
|
|
51
|
+
if (group.title) {
|
|
52
|
+
groupField.templateOptions.label = group.title;
|
|
53
|
+
}
|
|
54
|
+
groupField.fieldGroup.push(...EditorFormlyUtil.createFormlyFields(group));
|
|
55
|
+
groupsField.fieldGroup.push(groupField);
|
|
56
|
+
}
|
|
57
|
+
return [groupsField];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
static createFormlyFields(descriptor) {
|
|
61
|
+
const fields = [];
|
|
62
|
+
for (const descriptorField of descriptor.fields) {
|
|
63
|
+
fields.push(EditorFormlyUtil.createFormlyField(descriptorField));
|
|
64
|
+
}
|
|
65
|
+
// wrap in group to be able to use flex grid
|
|
66
|
+
const wrapperGroup = {
|
|
67
|
+
fieldGroupClassName: 'p-fluid formgrid grid',
|
|
68
|
+
fieldGroup: fields
|
|
69
|
+
};
|
|
70
|
+
EditorFormlyUtil.addValidationsToFormlyField(wrapperGroup, descriptor.validations);
|
|
71
|
+
return [wrapperGroup];
|
|
72
|
+
}
|
|
73
|
+
static createFormlyField(descriptor) {
|
|
74
|
+
const field = {
|
|
75
|
+
key: descriptor.property,
|
|
76
|
+
expressionProperties: {},
|
|
77
|
+
templateOptions: {}
|
|
78
|
+
};
|
|
79
|
+
let className = descriptor.className;
|
|
80
|
+
if (!className) {
|
|
81
|
+
// assign default field width through entire row
|
|
82
|
+
className = 'col-12';
|
|
83
|
+
}
|
|
84
|
+
field.className = className;
|
|
85
|
+
field.templateOptions['descriptor'] = descriptor;
|
|
86
|
+
if (descriptor instanceof FieldInputDescriptor) {
|
|
87
|
+
switch (descriptor.fieldType) {
|
|
88
|
+
case FieldInputDescriptor.TypeEnum.Hidden:
|
|
89
|
+
break;
|
|
90
|
+
case FieldInputDescriptor.TypeEnum.Label:
|
|
91
|
+
field.type = 'label';
|
|
92
|
+
delete field.key;
|
|
93
|
+
break;
|
|
94
|
+
case FieldInputDescriptor.TypeEnum.Textarea:
|
|
95
|
+
field.type = 'textarea';
|
|
96
|
+
break;
|
|
97
|
+
case FieldInputDescriptor.TypeEnum.Number:
|
|
98
|
+
field.type = 'number';
|
|
99
|
+
field.templateOptions.min = descriptor.numberMin;
|
|
100
|
+
field.templateOptions.max = descriptor.numberMax;
|
|
101
|
+
break;
|
|
102
|
+
case FieldInputDescriptor.TypeEnum.Currency:
|
|
103
|
+
field.type = 'currency';
|
|
104
|
+
field.templateOptions.min = descriptor.numberMin;
|
|
105
|
+
field.templateOptions.max = descriptor.numberMax;
|
|
106
|
+
break;
|
|
107
|
+
case FieldInputDescriptor.TypeEnum.Switch:
|
|
108
|
+
field.type = 'switch';
|
|
109
|
+
break;
|
|
110
|
+
case FieldInputDescriptor.TypeEnum.Radio:
|
|
111
|
+
field.type = 'radio';
|
|
112
|
+
break;
|
|
113
|
+
case FieldInputDescriptor.TypeEnum.Datepicker:
|
|
114
|
+
field.type = 'datepicker';
|
|
115
|
+
break;
|
|
116
|
+
case FieldInputDescriptor.TypeEnum.Mask:
|
|
117
|
+
field.type = 'mask';
|
|
118
|
+
break;
|
|
119
|
+
case FieldInputDescriptor.TypeEnum.File:
|
|
120
|
+
field.type = 'file';
|
|
121
|
+
break;
|
|
122
|
+
case FieldInputDescriptor.TypeEnum.Custom:
|
|
123
|
+
field.type = descriptor.customComponentName;
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
field.type = 'input';
|
|
127
|
+
field.templateOptions.minLength = descriptor.minLength;
|
|
128
|
+
field.templateOptions.maxLength = descriptor.maxLength;
|
|
129
|
+
field.templateOptions.pattern = descriptor.pattern;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (descriptor instanceof FieldLookupEnumDescriptor) {
|
|
134
|
+
field.type = 'enum';
|
|
135
|
+
}
|
|
136
|
+
else if (descriptor instanceof FieldLookupDescriptor) {
|
|
137
|
+
switch (descriptor.lookupType) {
|
|
138
|
+
case FieldLookupDescriptor.LookupTypeEnum.Autocomplete:
|
|
139
|
+
field.type = 'autocomplete';
|
|
140
|
+
break;
|
|
141
|
+
case FieldLookupDescriptor.LookupTypeEnum.Dialog:
|
|
142
|
+
field.type = 'dialog';
|
|
143
|
+
break;
|
|
144
|
+
case FieldLookupDescriptor.LookupTypeEnum.Dropdown:
|
|
145
|
+
default:
|
|
146
|
+
field.type = 'dropdown';
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else if (descriptor instanceof FieldManyToManyEditorDescriptor) {
|
|
151
|
+
field.type = 'table-dialog-multiselect';
|
|
152
|
+
}
|
|
153
|
+
else if (descriptor instanceof FieldManyEditorDescriptor) {
|
|
154
|
+
field.type = 'table-dialog-form';
|
|
155
|
+
}
|
|
156
|
+
if (descriptor.label) {
|
|
157
|
+
field.templateOptions.label = descriptor.label;
|
|
158
|
+
}
|
|
159
|
+
if (descriptor.requiredExpression) {
|
|
160
|
+
field.expressionProperties['templateOptions.required'] = descriptor.requiredExpression;
|
|
161
|
+
}
|
|
162
|
+
if (descriptor.required) {
|
|
163
|
+
field.templateOptions.required = true;
|
|
164
|
+
}
|
|
165
|
+
if (descriptor.hiddenExpression) {
|
|
166
|
+
field.expressionProperties['hide'] = descriptor.hiddenExpression;
|
|
167
|
+
}
|
|
168
|
+
if (descriptor.disabledExpression) {
|
|
169
|
+
field.expressionProperties['templateOptions.disabled'] = descriptor.disabledExpression;
|
|
170
|
+
}
|
|
171
|
+
else if (descriptor.disabled) {
|
|
172
|
+
field.templateOptions.disabled = true;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
field.expressionProperties['templateOptions.disabled'] = 'formState.disabled';
|
|
176
|
+
}
|
|
177
|
+
if (typeof descriptor.defaultValue !== 'undefined') {
|
|
178
|
+
field.defaultValue = descriptor.defaultValue;
|
|
179
|
+
}
|
|
180
|
+
EditorFormlyUtil.addValidationsToFormlyField(field, descriptor.validations);
|
|
181
|
+
return field;
|
|
182
|
+
}
|
|
183
|
+
static addValidationsToFormlyField(config, validations) {
|
|
184
|
+
if (!config.validators) {
|
|
185
|
+
config.validators = {};
|
|
186
|
+
}
|
|
187
|
+
for (const validation of validations) {
|
|
188
|
+
if (typeof validation.validator === 'function') {
|
|
189
|
+
config.validators[validation.name] = {
|
|
190
|
+
expression: (control, field, options) => {
|
|
191
|
+
const validatorRes = validation.validator(control, field, options);
|
|
192
|
+
// formly validator only excepts true/false for validation
|
|
193
|
+
// map possible angular validator result to true/false
|
|
194
|
+
return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
if (typeof validation.message === 'function') {
|
|
198
|
+
config.validators[validation.name].message = validation.message;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
if (!Array.isArray(config.validators.validation)) {
|
|
203
|
+
config.validators.validation = [];
|
|
204
|
+
}
|
|
205
|
+
config.validators.validation.push(validation.name);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
210
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9lZGl0b3ItZm9ybWx5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUlILG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QiwrQkFBK0IsRUFHbEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLE9BQU8sZ0JBQWdCO0lBQ2xCLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxVQUFpQztRQUM1RSxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO1FBRXZDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQzVELGdCQUFnQjtZQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3JGO2FBQU07WUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekU7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQXlDO1FBQ3ZFLE1BQU0sU0FBUyxHQUFzQjtZQUNqQyxJQUFJLEVBQUUsTUFBTTtZQUNaLFVBQVUsRUFBRSxFQUFFO1NBQ2pCLENBQUM7UUFDRixLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRTtZQUN6QixNQUFNLFFBQVEsR0FBc0I7Z0JBQ2hDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDWixlQUFlLEVBQUUsRUFBRTtn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QUFVLENBQUMsRUFBRTtvQkFDOUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO2lCQUNyQztnQkFDRCxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3REO1NBQ0o7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBBRmllbGREZXNjcmlwdG9yLFxuICAgIEVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRHcm91cERlc2NyaXB0b3IsXG4gICAgRmllbGRJbnB1dERlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsXG4gICAgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3Jcbn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuXG5leHBvcnQgY2xhc3MgRWRpdG9yRm9ybWx5VXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlDb25maWdGcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPGFueT4pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICAgICAgY29uc3QgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IudGFicy5sZW5ndGggPT09IDEgJiYgZGVzY3JpcHRvci50YWJzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgICAgIC8vIGRvbnQgdXNlIHRhYnNcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5R3JvdXBUeXBlKGRlc2NyaXB0b3IudGFic1swXS5maWVsZHMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5VGFiVHlwZShkZXNjcmlwdG9yLnRhYnMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWVsZHM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlUYWJUeXBlKHRhYkdyb3VwczogRmllbGRUYWJHcm91cERlc2NyaXB0b3I8YW55PltdKTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgICAgIGNvbnN0IHRhYnNGaWVsZDogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgICAgICB0eXBlOiAndGFicycsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICB9O1xuICAgICAgICBmb3IgKGNvbnN0IHRhYiBvZiB0YWJHcm91cHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICBpZDogdGFiLm5hbWUsXG4gICAgICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7fSxcbiAgICAgICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0YWIudGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0YWJGaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLmxhYmVsID0gdGFiLnRpdGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFiRmllbGQuZmllbGRHcm91cCEucHVzaCguLi5FZGl0b3JGb3JtbHlVdGlsLmNyZWF0ZUZvcm1seUdyb3VwVHlwZSh0YWIuZmllbGRzKSk7XG4gICAgICAgICAgICB0YWJzRmllbGQuZmllbGRHcm91cCEucHVzaCh0YWJGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0YWJzRmllbGRdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRm9ybWx5R3JvdXBUeXBlKGdyb3VwczogRmllbGRHcm91cERlc2NyaXB0b3I8YW55PltdKTogRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgICAgIGlmIChncm91cHMubGVuZ3RoID09PSAxICYmIGdyb3Vwc1swXS5kZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyBkb250IHVzZSBmaWVsZHNldCwganVzdCBjcmVhdGUgZmllbGRzXG4gICAgICAgICAgICByZXR1cm4gRWRpdG9yRm9ybWx5VXRpbC5jcmVhdGVGb3JtbHlGaWVsZHMoZ3JvdXBzWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3Vwc0ZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZmllbGRzZXQnLFxuICAgICAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cEZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGdyb3VwLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChncm91cC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICBncm91cEZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubGFiZWwgPSBncm91cC50aXRsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZ3JvdXBGaWVsZC5maWVsZEdyb3VwIS5wdXNoKC4uLkVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5RmllbGRzKGdyb3VwKSk7XG4gICAgICAgICAgICAgICAgZ3JvdXBzRmllbGQuZmllbGRHcm91cCEucHVzaChncm91cEZpZWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbZ3JvdXBzRmllbGRdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlGaWVsZHMoZGVzY3JpcHRvcjogRmllbGRHcm91cERlc2NyaXB0b3I8YW55Pik6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgICAgICBjb25zdCBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBkZXNjcmlwdG9yRmllbGQgb2YgZGVzY3JpcHRvci5maWVsZHMpIHtcbiAgICAgICAgICAgIGZpZWxkcy5wdXNoKEVkaXRvckZvcm1seVV0aWwuY3JlYXRlRm9ybWx5RmllbGQoZGVzY3JpcHRvckZpZWxkKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd3JhcCBpbiBncm91cCB0byBiZSBhYmxlIHRvIHVzZSBmbGV4IGdyaWRcbiAgICAgICAgY29uc3Qgd3JhcHBlckdyb3VwOiBGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdwLWZsdWlkIGZvcm1ncmlkIGdyaWQnLFxuICAgICAgICAgICAgZmllbGRHcm91cDogZmllbGRzXG4gICAgICAgIH07XG5cbiAgICAgICAgRWRpdG9yRm9ybWx5VXRpbC5hZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQod3JhcHBlckdyb3VwLCBkZXNjcmlwdG9yLnZhbGlkYXRpb25zKTtcblxuICAgICAgICByZXR1cm4gW3dyYXBwZXJHcm91cF07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGb3JtbHlGaWVsZChkZXNjcmlwdG9yOiBBRmllbGREZXNjcmlwdG9yPGFueSwgYW55Pik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICAgICAgY29uc3QgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAga2V5OiBkZXNjcmlwdG9yLnByb3BlcnR5LFxuICAgICAgICAgICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7fVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBjbGFzc05hbWUgPSBkZXNjcmlwdG9yLmNsYXNzTmFtZTtcbiAgICAgICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIC8vIGFzc2lnbiBkZWZhdWx0IGZpZWxkIHdpZHRoIHRocm91Z2ggZW50aXJlIHJvd1xuICAgICAgICAgICAgY2xhc3NOYW1lID0gJ2NvbC0xMic7XG4gICAgICAgIH1cbiAgICAgICAgZmllbGQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyFbJ2Rlc2NyaXB0b3InXSA9IGRlc2NyaXB0b3I7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRJbnB1dERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXREZXNjcmlwdG9yLlR5cGVFbnVtLkhpZGRlbjpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0RGVzY3JpcHRvci5UeXBlRW51bS5MYWJlbDpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdsYWJlbCc7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC5rZXk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dERlc2NyaXB0b3IuVHlwZUVudW0uVGV4dGFyZWE6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAndGV4dGFyZWEnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXREZXNjcmlwdG9yLlR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdudW1iZXInO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1pbiA9IGRlc2NyaXB0b3IubnVtYmVyTWluO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLm1heCA9IGRlc2NyaXB0b3IubnVtYmVyTWF4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXREZXNjcmlwdG9yLlR5cGVFbnVtLkN1cnJlbmN5OlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2N1cnJlbmN5JztcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5taW4gPSBkZXNjcmlwdG9yLm51bWJlck1pbjtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5tYXggPSBkZXNjcmlwdG9yLm51bWJlck1heDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0RGVzY3JpcHRvci5UeXBlRW51bS5Td2l0Y2g6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnc3dpdGNoJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0RGVzY3JpcHRvci5UeXBlRW51bS5SYWRpbzpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdyYWRpbyc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dERlc2NyaXB0b3IuVHlwZUVudW0uRGF0ZXBpY2tlcjpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdkYXRlcGlja2VyJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0RGVzY3JpcHRvci5UeXBlRW51bS5NYXNrOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ21hc2snO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXREZXNjcmlwdG9yLlR5cGVFbnVtLkZpbGU6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZmlsZSc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dERlc2NyaXB0b3IuVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnROYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2lucHV0JztcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5taW5MZW5ndGggPSBkZXNjcmlwdG9yLm1pbkxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5tYXhMZW5ndGggPSBkZXNjcmlwdG9yLm1heExlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudGVtcGxhdGVPcHRpb25zIS5wYXR0ZXJuID0gZGVzY3JpcHRvci5wYXR0ZXJuO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRMb29rdXBFbnVtRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZmllbGQudHlwZSA9ICdlbnVtJztcbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRMb29rdXBEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IubG9va3VwVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBEZXNjcmlwdG9yLkxvb2t1cFR5cGVFbnVtLkF1dG9jb21wbGV0ZTpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwRGVzY3JpcHRvci5Mb29rdXBUeXBlRW51bS5EaWFsb2c6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZGlhbG9nJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cERlc2NyaXB0b3IuTG9va3VwVHlwZUVudW0uRHJvcGRvd246XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdkcm9wZG93bic7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBmaWVsZC50eXBlID0gJ3RhYmxlLWRpYWxvZy1tdWx0aXNlbGVjdCc7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTWFueUVkaXRvckRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAndGFibGUtZGlhbG9nLWZvcm0nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IubGFiZWwpIHtcbiAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyEubGFiZWwgPSBkZXNjcmlwdG9yLmxhYmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRFeHByZXNzaW9uKSB7XG4gICAgICAgICAgICBmaWVsZC5leHByZXNzaW9uUHJvcGVydGllcyFbJ3RlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZCddID0gZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucyEucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuaGlkZGVuRXhwcmVzc2lvbikge1xuICAgICAgICAgICAgZmllbGQuZXhwcmVzc2lvblByb3BlcnRpZXMhWydoaWRlJ10gPSBkZXNjcmlwdG9yLmhpZGRlbkV4cHJlc3Npb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIVsndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJ10gPSBkZXNjcmlwdG9yLmRpc2FibGVkRXhwcmVzc2lvbjtcbiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMhLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkLmV4cHJlc3Npb25Qcm9wZXJ0aWVzIVsndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJ10gPSAnZm9ybVN0YXRlLmRpc2FibGVkJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgZGVzY3JpcHRvci5kZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBmaWVsZC5kZWZhdWx0VmFsdWUgPSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEVkaXRvckZvcm1seVV0aWwuYWRkVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGZpZWxkLCBkZXNjcmlwdG9yLnZhbGlkYXRpb25zKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoY29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZywgdmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I+KSB7XG4gICAgICAgIGlmICghY29uZmlnLnZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JzID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdmFsaWRhdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvbi52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdG9yc1t2YWxpZGF0aW9uLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogRm9ybWx5RmllbGRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZDogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvclJlcyA9IHZhbGlkYXRpb24udmFsaWRhdG9yIShjb250cm9sLCBmaWVsZCwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtbHkgdmFsaWRhdG9yIG9ubHkgZXhjZXB0cyB0cnVlL2ZhbHNlIGZvciB2YWxpZGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXAgcG9zc2libGUgYW5ndWxhciB2YWxpZGF0b3IgcmVzdWx0IHRvIHRydWUvZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsaWRhdG9yUmVzID09PSAnYm9vbGVhbicgPyB2YWxpZGF0b3JSZXMgOiB2YWxpZGF0b3JSZXMgPT09IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvbi5tZXNzYWdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JzW3ZhbGlkYXRpb24ubmFtZV0ubWVzc2FnZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcudmFsaWRhdG9ycy52YWxpZGF0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdG9ycy52YWxpZGF0aW9uID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0b3JzLnZhbGlkYXRpb24ucHVzaCh2YWxpZGF0aW9uLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
export class EnumUtil {
|
|
2
|
-
/**
|
|
3
|
-
* Returns array of names for constants in enum.
|
|
4
|
-
* @param enumType Enum object.
|
|
5
|
-
*/
|
|
6
|
-
static getConstantNames(enumType) {
|
|
7
|
-
return EnumUtil.getConstantNamesFromEnumObject(enumType);
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Returns array of names for constants in enum.
|
|
11
|
-
* @param enumObj Enum object.
|
|
12
|
-
*/
|
|
13
|
-
static getConstantNamesFromEnumObject(enumObj) {
|
|
14
|
-
// in number enum, the numbers are also represented in objects and should be filtered out
|
|
15
|
-
return Object.keys(enumObj).filter(v => isNaN(+v));
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Returns array of string values for constants in enum.
|
|
19
|
-
* @param enumType Enum object.
|
|
20
|
-
*/
|
|
21
|
-
static getConstantValuesAsString(enumType) {
|
|
22
|
-
return Object.keys(enumType).map(v => enumType[v]);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Returns array of number values for constants in enum.
|
|
26
|
-
* @param enumType Enum object.
|
|
27
|
-
*/
|
|
28
|
-
static getConstantValuesAsNumber(enumType) {
|
|
29
|
-
return Object.keys(enumType)
|
|
30
|
-
.filter(v => !isNaN(+v))
|
|
31
|
-
.map(v => +v);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Returns array of type EnumValue for all constants in enum.
|
|
35
|
-
* @param enumType Enum object.
|
|
36
|
-
* @param nameAsValue If use name of constant as value (optional, default: false).
|
|
37
|
-
* @param titlePath Base path for title to use as translation (optional).
|
|
38
|
-
*/
|
|
39
|
-
static fromConstantsAsEnumValueArray(enumType, nameAsValue = false, titlePath) {
|
|
40
|
-
return EnumUtil.getConstantNames(enumType).map(n => ({ name: n, title: `${titlePath ? `${titlePath}.` : ''}${n}`, value: nameAsValue ? n : enumType[n] }));
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Returns array of type EnumValue for provided values in enum.
|
|
44
|
-
* @param enumType Enum object.
|
|
45
|
-
* @param nameAsValue If use name of constant as value (optional, default: false).
|
|
46
|
-
* @param titlePath Base path for title to use as translation (optional).
|
|
47
|
-
*/
|
|
48
|
-
static fromValuesAsEnumValueArray(enumType, values, nameAsValue = false, titlePath) {
|
|
49
|
-
return values.map(v => {
|
|
50
|
-
const k = EnumUtil.getConstantName(enumType, v);
|
|
51
|
-
return { name: k, title: `${titlePath ? `${titlePath}.` : ''}${k}`, value: nameAsValue ? k : v };
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Gets constant name for value.
|
|
56
|
-
* @param enumType Enum object.
|
|
57
|
-
* @param value Value of enum constant.
|
|
58
|
-
*/
|
|
59
|
-
static getConstantName(enumType, value) {
|
|
60
|
-
if (typeof value === 'string') {
|
|
61
|
-
return EnumUtil.getConstantNames(enumType).find(c => enumType[c] === value) ?? null;
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
return typeof enumType[value] !== 'undefined' ? enumType[value] : null;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Gets constant name for value.
|
|
69
|
-
* @param enumObj Enum object.
|
|
70
|
-
* @param value Value of enum constant.
|
|
71
|
-
*/
|
|
72
|
-
static getConstantNameFromEnumObject(enumObj, value) {
|
|
73
|
-
const enumObjAny = enumObj;
|
|
74
|
-
if (typeof value === 'string') {
|
|
75
|
-
return EnumUtil.getConstantNamesFromEnumObject(enumObj).find(c => enumObjAny[c] === value) ?? null;
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
return typeof enumObjAny[value] !== 'undefined' ? enumObjAny[value] : null;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
1
|
+
export class EnumUtil {
|
|
2
|
+
/**
|
|
3
|
+
* Returns array of names for constants in enum.
|
|
4
|
+
* @param enumType Enum object.
|
|
5
|
+
*/
|
|
6
|
+
static getConstantNames(enumType) {
|
|
7
|
+
return EnumUtil.getConstantNamesFromEnumObject(enumType);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Returns array of names for constants in enum.
|
|
11
|
+
* @param enumObj Enum object.
|
|
12
|
+
*/
|
|
13
|
+
static getConstantNamesFromEnumObject(enumObj) {
|
|
14
|
+
// in number enum, the numbers are also represented in objects and should be filtered out
|
|
15
|
+
return Object.keys(enumObj).filter(v => isNaN(+v));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns array of string values for constants in enum.
|
|
19
|
+
* @param enumType Enum object.
|
|
20
|
+
*/
|
|
21
|
+
static getConstantValuesAsString(enumType) {
|
|
22
|
+
return Object.keys(enumType).map(v => enumType[v]);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns array of number values for constants in enum.
|
|
26
|
+
* @param enumType Enum object.
|
|
27
|
+
*/
|
|
28
|
+
static getConstantValuesAsNumber(enumType) {
|
|
29
|
+
return Object.keys(enumType)
|
|
30
|
+
.filter(v => !isNaN(+v))
|
|
31
|
+
.map(v => +v);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns array of type EnumValue for all constants in enum.
|
|
35
|
+
* @param enumType Enum object.
|
|
36
|
+
* @param nameAsValue If use name of constant as value (optional, default: false).
|
|
37
|
+
* @param titlePath Base path for title to use as translation (optional).
|
|
38
|
+
*/
|
|
39
|
+
static fromConstantsAsEnumValueArray(enumType, nameAsValue = false, titlePath) {
|
|
40
|
+
return EnumUtil.getConstantNames(enumType).map(n => ({ name: n, title: `${titlePath ? `${titlePath}.` : ''}${n}`, value: nameAsValue ? n : enumType[n] }));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Returns array of type EnumValue for provided values in enum.
|
|
44
|
+
* @param enumType Enum object.
|
|
45
|
+
* @param nameAsValue If use name of constant as value (optional, default: false).
|
|
46
|
+
* @param titlePath Base path for title to use as translation (optional).
|
|
47
|
+
*/
|
|
48
|
+
static fromValuesAsEnumValueArray(enumType, values, nameAsValue = false, titlePath) {
|
|
49
|
+
return values.map(v => {
|
|
50
|
+
const k = EnumUtil.getConstantName(enumType, v);
|
|
51
|
+
return { name: k, title: `${titlePath ? `${titlePath}.` : ''}${k}`, value: nameAsValue ? k : v };
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Gets constant name for value.
|
|
56
|
+
* @param enumType Enum object.
|
|
57
|
+
* @param value Value of enum constant.
|
|
58
|
+
*/
|
|
59
|
+
static getConstantName(enumType, value) {
|
|
60
|
+
if (typeof value === 'string') {
|
|
61
|
+
return EnumUtil.getConstantNames(enumType).find(c => enumType[c] === value) ?? null;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return typeof enumType[value] !== 'undefined' ? enumType[value] : null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Gets constant name for value.
|
|
69
|
+
* @param enumObj Enum object.
|
|
70
|
+
* @param value Value of enum constant.
|
|
71
|
+
*/
|
|
72
|
+
static getConstantNameFromEnumObject(enumObj, value) {
|
|
73
|
+
const enumObjAny = enumObj;
|
|
74
|
+
if (typeof value === 'string') {
|
|
75
|
+
return EnumUtil.getConstantNamesFromEnumObject(enumObj).find(c => enumObjAny[c] === value) ?? null;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return typeof enumObjAny[value] !== 'undefined' ? enumObjAny[value] : null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
82
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9lbnVtLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLFFBQVE7SUFDakI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQWtCO1FBQzdDLE9BQU8sUUFBUSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsOEJBQThCLENBQUMsT0FBZTtRQUN4RCx5RkFBeUY7UUFDekYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxRQUFrQjtRQUN0RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQWlCLENBQVcsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMseUJBQXlCLENBQUMsUUFBa0I7UUFDdEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUN2QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLDZCQUE2QixDQUFDLFFBQWtCLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBRSxTQUFrQjtRQUNuRyxPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBNEIsRUFBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUEsQ0FDckksQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxRQUFrQixFQUFFLE1BQStCLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBRSxTQUFrQjtRQUNqSSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbEIsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEQsT0FBTyxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQStCLENBQUM7UUFDakksQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBa0IsRUFBRSxLQUF1QjtRQUNyRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDO1NBQ3ZGO2FBQU07WUFDSCxPQUFPLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDdEY7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxPQUFlLEVBQUUsS0FBdUI7UUFDaEYsTUFBTSxVQUFVLEdBQUcsT0FBYyxDQUFDO1FBQ2xDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLE9BQU8sUUFBUSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7U0FDdEc7YUFBTTtZQUNILE9BQU8sT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBRSxVQUFVLENBQUMsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUMxRjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RW51bVZhbHVlfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtFbnVtQ29uc3RhbnRUeXBlLCBFbnVtVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgRW51bVV0aWwge1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYXJyYXkgb2YgbmFtZXMgZm9yIGNvbnN0YW50cyBpbiBlbnVtLlxuICAgICAqIEBwYXJhbSBlbnVtVHlwZSBFbnVtIG9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldENvbnN0YW50TmFtZXMoZW51bVR5cGU6IEVudW1UeXBlKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBFbnVtVXRpbC5nZXRDb25zdGFudE5hbWVzRnJvbUVudW1PYmplY3QoZW51bVR5cGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYXJyYXkgb2YgbmFtZXMgZm9yIGNvbnN0YW50cyBpbiBlbnVtLlxuICAgICAqIEBwYXJhbSBlbnVtT2JqIEVudW0gb2JqZWN0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q29uc3RhbnROYW1lc0Zyb21FbnVtT2JqZWN0KGVudW1PYmo6IG9iamVjdCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICAvLyBpbiBudW1iZXIgZW51bSwgdGhlIG51bWJlcnMgYXJlIGFsc28gcmVwcmVzZW50ZWQgaW4gb2JqZWN0cyBhbmQgc2hvdWxkIGJlIGZpbHRlcmVkIG91dFxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZW51bU9iaikuZmlsdGVyKHYgPT4gaXNOYU4oK3YpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMgZm9yIGNvbnN0YW50cyBpbiBlbnVtLlxuICAgICAqIEBwYXJhbSBlbnVtVHlwZSBFbnVtIG9iamVjdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldENvbnN0YW50VmFsdWVzQXNTdHJpbmcoZW51bVR5cGU6IEVudW1UeXBlKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnVtVHlwZSkubWFwKHYgPT4gZW51bVR5cGVbdiBhcyBrZXlvZiBvYmplY3RdIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhcnJheSBvZiBudW1iZXIgdmFsdWVzIGZvciBjb25zdGFudHMgaW4gZW51bS5cbiAgICAgKiBAcGFyYW0gZW51bVR5cGUgRW51bSBvYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRDb25zdGFudFZhbHVlc0FzTnVtYmVyKGVudW1UeXBlOiBFbnVtVHlwZSk6IEFycmF5PG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZW51bVR5cGUpXG4gICAgICAgICAgICAuZmlsdGVyKHYgPT4gIWlzTmFOKCt2KSlcbiAgICAgICAgICAgIC5tYXAodiA9PiArdik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhcnJheSBvZiB0eXBlIEVudW1WYWx1ZSBmb3IgYWxsIGNvbnN0YW50cyBpbiBlbnVtLlxuICAgICAqIEBwYXJhbSBlbnVtVHlwZSBFbnVtIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gbmFtZUFzVmFsdWUgSWYgdXNlIG5hbWUgb2YgY29uc3RhbnQgYXMgdmFsdWUgKG9wdGlvbmFsLCBkZWZhdWx0OiBmYWxzZSkuXG4gICAgICogQHBhcmFtIHRpdGxlUGF0aCBCYXNlIHBhdGggZm9yIHRpdGxlIHRvIHVzZSBhcyB0cmFuc2xhdGlvbiAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNvbnN0YW50c0FzRW51bVZhbHVlQXJyYXkoZW51bVR5cGU6IEVudW1UeXBlLCBuYW1lQXNWYWx1ZSA9IGZhbHNlLCB0aXRsZVBhdGg/OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIEVudW1VdGlsLmdldENvbnN0YW50TmFtZXMoZW51bVR5cGUpLm1hcChcbiAgICAgICAgICAgIG4gPT4gPEVudW1WYWx1ZTxzdHJpbmcgfCBudW1iZXI+PntuYW1lOiBuLCB0aXRsZTogYCR7dGl0bGVQYXRoID8gYCR7dGl0bGVQYXRofS5gIDogJyd9JHtufWAsIHZhbHVlOiBuYW1lQXNWYWx1ZSA/IG4gOiBlbnVtVHlwZVtuXX1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFycmF5IG9mIHR5cGUgRW51bVZhbHVlIGZvciBwcm92aWRlZCB2YWx1ZXMgaW4gZW51bS5cbiAgICAgKiBAcGFyYW0gZW51bVR5cGUgRW51bSBvYmplY3QuXG4gICAgICogQHBhcmFtIG5hbWVBc1ZhbHVlIElmIHVzZSBuYW1lIG9mIGNvbnN0YW50IGFzIHZhbHVlIChvcHRpb25hbCwgZGVmYXVsdDogZmFsc2UpLlxuICAgICAqIEBwYXJhbSB0aXRsZVBhdGggQmFzZSBwYXRoIGZvciB0aXRsZSB0byB1c2UgYXMgdHJhbnNsYXRpb24gKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21WYWx1ZXNBc0VudW1WYWx1ZUFycmF5KGVudW1UeXBlOiBFbnVtVHlwZSwgdmFsdWVzOiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPiwgbmFtZUFzVmFsdWUgPSBmYWxzZSwgdGl0bGVQYXRoPzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMubWFwKHYgPT4ge1xuICAgICAgICAgICAgY29uc3QgayA9IEVudW1VdGlsLmdldENvbnN0YW50TmFtZShlbnVtVHlwZSwgdik7XG4gICAgICAgICAgICByZXR1cm4ge25hbWU6IGssIHRpdGxlOiBgJHt0aXRsZVBhdGggPyBgJHt0aXRsZVBhdGh9LmAgOiAnJ30ke2t9YCwgdmFsdWU6IG5hbWVBc1ZhbHVlID8gayA6IHZ9IGFzIEVudW1WYWx1ZTxzdHJpbmcgfCBudW1iZXI+O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGNvbnN0YW50IG5hbWUgZm9yIHZhbHVlLlxuICAgICAqIEBwYXJhbSBlbnVtVHlwZSBFbnVtIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgb2YgZW51bSBjb25zdGFudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldENvbnN0YW50TmFtZShlbnVtVHlwZTogRW51bVR5cGUsIHZhbHVlOiBFbnVtQ29uc3RhbnRUeXBlKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bVV0aWwuZ2V0Q29uc3RhbnROYW1lcyhlbnVtVHlwZSkuZmluZChjID0+IGVudW1UeXBlW2NdID09PSB2YWx1ZSkgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZW51bVR5cGVbdmFsdWVdICE9PSAndW5kZWZpbmVkJyA/IChlbnVtVHlwZVt2YWx1ZV0gYXMgc3RyaW5nKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGNvbnN0YW50IG5hbWUgZm9yIHZhbHVlLlxuICAgICAqIEBwYXJhbSBlbnVtT2JqIEVudW0gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSBvZiBlbnVtIGNvbnN0YW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q29uc3RhbnROYW1lRnJvbUVudW1PYmplY3QoZW51bU9iajogb2JqZWN0LCB2YWx1ZTogRW51bUNvbnN0YW50VHlwZSk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBjb25zdCBlbnVtT2JqQW55ID0gZW51bU9iaiBhcyBhbnk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bVV0aWwuZ2V0Q29uc3RhbnROYW1lc0Zyb21FbnVtT2JqZWN0KGVudW1PYmopLmZpbmQoYyA9PiBlbnVtT2JqQW55W2NdID09PSB2YWx1ZSkgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZW51bU9iakFueVt2YWx1ZV0gIT09ICd1bmRlZmluZWQnID8gKGVudW1PYmpBbnlbdmFsdWVdIGFzIHN0cmluZykgOiBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|