@sapui5/sap.fe.core 1.102.3 → 1.105.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/package.json +6 -6
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +120 -0
- package/src/sap/fe/core/ActionRuntime.ts +108 -0
- package/src/sap/fe/core/AppComponent.js +81 -35
- package/src/sap/fe/core/AppComponent.ts +68 -44
- package/src/sap/fe/core/AppStateHandler.js +82 -70
- package/src/sap/fe/core/AppStateHandler.ts +32 -37
- package/src/sap/fe/core/BaseController.js +12 -10
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +291 -218
- package/src/sap/fe/core/CommonUtils.ts +315 -251
- package/src/sap/fe/core/ExtensionAPI.js +25 -28
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +5 -5
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +21 -10
- package/src/sap/fe/core/TemplateComponent.ts +9 -6
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +8 -2
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +197 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +164 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -230
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +275 -128
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +761 -700
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +478 -514
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +10 -10
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +104 -75
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +71 -79
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +68 -68
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +162 -102
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +177 -121
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +67 -69
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +10 -10
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -13
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +98 -26
- package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +31 -32
- package/src/sap/fe/core/controllerextensions/Paginator.ts +33 -34
- package/src/sap/fe/core/controllerextensions/Placeholder.js +5 -7
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +11 -12
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +171 -140
- package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
- package/src/sap/fe/core/controllerextensions/SideEffects.js +47 -51
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +201 -132
- package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +13 -12
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +13 -12
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +15 -15
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -18
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +60 -28
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +29 -21
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1424 -940
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +799 -836
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +410 -377
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +275 -358
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +752 -579
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +631 -599
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +92 -74
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +49 -52
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -41
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +110 -84
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +69 -81
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +64 -73
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +18 -2
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +25 -24
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +12 -26
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -3
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +26 -26
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -3
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
- package/src/sap/fe/core/controls/FieldWrapper.js +3 -3
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +9 -4
- package/src/sap/fe/core/controls/FileWrapper.ts +16 -12
- package/src/sap/fe/core/controls/FilterBar.js +7 -3
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +44 -19
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +17 -13
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +4 -4
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
- package/src/sap/fe/core/converters/ConverterContext.js +48 -34
- package/src/sap/fe/core/converters/ConverterContext.ts +81 -67
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +18 -15
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +74 -40
- package/src/sap/fe/core/converters/MetaModelConverter.ts +176 -140
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
- package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1956 -1494
- package/src/sap/fe/core/converters/controls/Common/Action.js +78 -51
- package/src/sap/fe/core/converters/controls/Common/Action.ts +87 -52
- package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -16
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +42 -43
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +65 -29
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +93 -62
- package/src/sap/fe/core/converters/controls/Common/Form.js +31 -31
- package/src/sap/fe/core/converters/controls/Common/Form.ts +46 -57
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
- package/src/sap/fe/core/converters/controls/Common/Table.js +251 -264
- package/src/sap/fe/core/converters/controls/Common/Table.ts +344 -370
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +147 -144
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +89 -59
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +118 -71
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +131 -95
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +123 -87
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +98 -87
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +121 -117
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +8 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +18 -10
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +136 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +139 -0
- package/src/sap/fe/core/converters/helpers/ID.js +48 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +53 -75
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +59 -90
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +58 -57
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +93 -86
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +58 -44
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +87 -80
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
- package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/fpm/Component.js +33 -7
- package/src/sap/fe/core/fpm/Component.ts +14 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +19 -18
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +41 -43
- package/src/sap/fe/core/helpers/BindingToolkit.js +1836 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +397 -270
- package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
- package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
- package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +110 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +92 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
- package/src/sap/fe/core/library.js +42 -3
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/library.ts +38 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +39 -67
- package/src/sap/fe/core/messagebundle_ar.properties +27 -44
- package/src/sap/fe/core/messagebundle_bg.properties +27 -44
- package/src/sap/fe/core/messagebundle_ca.properties +27 -44
- package/src/sap/fe/core/messagebundle_cs.properties +27 -44
- package/src/sap/fe/core/messagebundle_cy.properties +26 -43
- package/src/sap/fe/core/messagebundle_da.properties +27 -44
- package/src/sap/fe/core/messagebundle_de.properties +25 -42
- package/src/sap/fe/core/messagebundle_el.properties +28 -45
- package/src/sap/fe/core/messagebundle_en.properties +27 -44
- package/src/sap/fe/core/messagebundle_en_GB.properties +27 -44
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -42
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -40
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +25 -42
- package/src/sap/fe/core/messagebundle_es.properties +27 -44
- package/src/sap/fe/core/messagebundle_es_MX.properties +27 -44
- package/src/sap/fe/core/messagebundle_et.properties +27 -44
- package/src/sap/fe/core/messagebundle_fi.properties +27 -44
- package/src/sap/fe/core/messagebundle_fr.properties +26 -43
- package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -42
- package/src/sap/fe/core/messagebundle_hi.properties +27 -44
- package/src/sap/fe/core/messagebundle_hr.properties +27 -44
- package/src/sap/fe/core/messagebundle_hu.properties +27 -44
- package/src/sap/fe/core/messagebundle_id.properties +27 -44
- package/src/sap/fe/core/messagebundle_it.properties +43 -60
- package/src/sap/fe/core/messagebundle_iw.properties +27 -44
- package/src/sap/fe/core/messagebundle_ja.properties +27 -44
- package/src/sap/fe/core/messagebundle_kk.properties +27 -44
- package/src/sap/fe/core/messagebundle_ko.properties +30 -47
- package/src/sap/fe/core/messagebundle_lt.properties +27 -44
- package/src/sap/fe/core/messagebundle_lv.properties +27 -44
- package/src/sap/fe/core/messagebundle_ms.properties +27 -44
- package/src/sap/fe/core/messagebundle_nl.properties +29 -46
- package/src/sap/fe/core/messagebundle_no.properties +27 -44
- package/src/sap/fe/core/messagebundle_pl.properties +28 -45
- package/src/sap/fe/core/messagebundle_pt.properties +28 -45
- package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -44
- package/src/sap/fe/core/messagebundle_ro.properties +27 -44
- package/src/sap/fe/core/messagebundle_ru.properties +27 -44
- package/src/sap/fe/core/messagebundle_sh.properties +27 -44
- package/src/sap/fe/core/messagebundle_sk.properties +27 -44
- package/src/sap/fe/core/messagebundle_sl.properties +27 -44
- package/src/sap/fe/core/messagebundle_sv.properties +27 -44
- package/src/sap/fe/core/messagebundle_th.properties +25 -42
- package/src/sap/fe/core/messagebundle_tr.properties +27 -44
- package/src/sap/fe/core/messagebundle_uk.properties +27 -44
- package/src/sap/fe/core/messagebundle_vi.properties +27 -44
- package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -44
- package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -44
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +103 -75
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +72 -73
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +62 -50
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +56 -56
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +93 -77
- package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +64 -64
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +232 -200
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +145 -142
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +85 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +90 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +23 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +47 -34
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +18 -17
- package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
- package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
- package/src/sap/fe/core/templating/UIFormatters.js +152 -95
- package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/Email.js +3 -3
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { getConverterContext, MetaModelContext, ComputedAnnotationInterface } from "./UIFormatters";
|
|
3
|
-
import { Property } from "@sap-ux/vocabularies-types/dist/Converter";
|
|
1
|
+
import type { Property } from "@sap-ux/vocabularies-types";
|
|
4
2
|
import { getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
|
|
5
|
-
import { DataModelObjectPath
|
|
3
|
+
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
4
|
+
import { enhanceDataModelPath, getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
5
|
+
import * as PropertyHelper from "./PropertyHelper";
|
|
6
|
+
import type { ComputedAnnotationInterface, MetaModelContext } from "./UIFormatters";
|
|
7
|
+
import { getConverterContext } from "./UIFormatters";
|
|
6
8
|
|
|
7
|
-
export const getProperty = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): Property {
|
|
9
|
+
export const getProperty = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): Property {
|
|
8
10
|
const sPath = oInterface.context.getPath();
|
|
9
11
|
if (!oContext) {
|
|
10
|
-
throw new Error(
|
|
12
|
+
throw new Error(`Unresolved context path ${sPath}`);
|
|
11
13
|
}
|
|
12
14
|
let isPath = false;
|
|
13
15
|
if (typeof oContext === "object" && oContext.hasOwnProperty("$Path")) {
|
|
14
16
|
isPath = true;
|
|
15
17
|
} else if (typeof oContext === "object" && oContext.hasOwnProperty("$kind") && oContext.$kind !== "Property") {
|
|
16
|
-
throw new Error(
|
|
18
|
+
throw new Error(`Context does not resolve to a Property object but to a ${oContext.$kind}`);
|
|
17
19
|
}
|
|
18
20
|
let oConverterContext = getConverterContext(oContext, oInterface) as Property;
|
|
19
21
|
if (isPath) {
|
|
@@ -22,16 +24,16 @@ export const getProperty = function(oContext: MetaModelContext, oInterface: Comp
|
|
|
22
24
|
return oConverterContext;
|
|
23
25
|
};
|
|
24
26
|
|
|
25
|
-
export const getPropertyObjectPath = function(
|
|
27
|
+
export const getPropertyObjectPath = function (
|
|
26
28
|
oContext: MetaModelContext | string,
|
|
27
29
|
oInterface: ComputedAnnotationInterface
|
|
28
30
|
): DataModelObjectPath {
|
|
29
31
|
const sPath = oInterface.context.getPath();
|
|
30
32
|
if (!oContext) {
|
|
31
|
-
throw new Error(
|
|
33
|
+
throw new Error(`Unresolved context path ${sPath}`);
|
|
32
34
|
}
|
|
33
35
|
if (typeof oContext === "object" && oContext.hasOwnProperty("$kind") && oContext.$kind !== "Property") {
|
|
34
|
-
throw new Error(
|
|
36
|
+
throw new Error(`Context does not resolve to a Property object but to a ${oContext.$kind}`);
|
|
35
37
|
}
|
|
36
38
|
let involvedDataModelObjects = getInvolvedDataModelObjects(oInterface.context);
|
|
37
39
|
if (involvedDataModelObjects.targetObject && involvedDataModelObjects.targetObject.type === "Path") {
|
|
@@ -40,47 +42,47 @@ export const getPropertyObjectPath = function(
|
|
|
40
42
|
return involvedDataModelObjects;
|
|
41
43
|
};
|
|
42
44
|
|
|
43
|
-
export const isKey = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
45
|
+
export const isKey = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
44
46
|
const oProperty: Property = getProperty(oContext, oInterface);
|
|
45
47
|
return PropertyHelper.isKey(oProperty);
|
|
46
48
|
};
|
|
47
49
|
|
|
48
|
-
export const hasValueHelp = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
50
|
+
export const hasValueHelp = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
49
51
|
const oProperty: Property = getProperty(oContext, oInterface);
|
|
50
52
|
return PropertyHelper.hasValueHelp(oProperty);
|
|
51
53
|
};
|
|
52
54
|
|
|
53
|
-
export const hasDateType = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
55
|
+
export const hasDateType = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
54
56
|
const oProperty: Property = getProperty(oContext, oInterface);
|
|
55
57
|
return PropertyHelper.hasDateType(oProperty);
|
|
56
58
|
};
|
|
57
59
|
|
|
58
|
-
export const hasValueHelpWithFixedValues = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
60
|
+
export const hasValueHelpWithFixedValues = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
59
61
|
const oProperty: Property = getProperty(oContext, oInterface);
|
|
60
62
|
return PropertyHelper.hasValueHelpWithFixedValues(oProperty);
|
|
61
63
|
};
|
|
62
64
|
|
|
63
|
-
export const hasUnitOrCurrency = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
65
|
+
export const hasUnitOrCurrency = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
|
|
64
66
|
const oProperty: Property = getProperty(oContext, oInterface);
|
|
65
67
|
return PropertyHelper.hasCurrency(oProperty) || PropertyHelper.hasUnit(oProperty);
|
|
66
68
|
};
|
|
67
69
|
|
|
68
|
-
export const getName = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
|
|
70
|
+
export const getName = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
|
|
69
71
|
const oProperty: Property = getProperty(oContext, oInterface);
|
|
70
72
|
return oProperty.name;
|
|
71
73
|
};
|
|
72
74
|
|
|
73
|
-
export const getLabel = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
|
|
75
|
+
export const getLabel = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
|
|
74
76
|
const oProperty: Property = getProperty(oContext, oInterface);
|
|
75
77
|
return PropertyHelper.getLabel(oProperty);
|
|
76
78
|
};
|
|
77
79
|
|
|
78
|
-
export const getPropertyPath = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
|
|
80
|
+
export const getPropertyPath = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
|
|
79
81
|
const propertyPath = getPropertyObjectPath(oContext, oInterface);
|
|
80
82
|
return getTargetObjectPath(propertyPath);
|
|
81
83
|
};
|
|
82
84
|
|
|
83
|
-
export const getRelativePropertyPath = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
|
|
85
|
+
export const getRelativePropertyPath = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
|
|
84
86
|
const propertyPath = getPropertyObjectPath(oContext, oInterface);
|
|
85
87
|
return getTargetObjectPath(propertyPath, true);
|
|
86
88
|
};
|
|
@@ -10,8 +10,8 @@ sap.ui.define([], function () {
|
|
|
10
10
|
/**
|
|
11
11
|
* Identify if the given property passed is a "Property" (has a _type).
|
|
12
12
|
*
|
|
13
|
-
* @param
|
|
14
|
-
* @returns
|
|
13
|
+
* @param property A target property to evaluate
|
|
14
|
+
* @returns Validate that property is a Property
|
|
15
15
|
*/
|
|
16
16
|
function isProperty(property) {
|
|
17
17
|
return property && property.hasOwnProperty("_type") && property._type === "Property";
|
|
@@ -19,8 +19,8 @@ sap.ui.define([], function () {
|
|
|
19
19
|
/**
|
|
20
20
|
* Check whether the property has the Core.Computed annotation or not.
|
|
21
21
|
*
|
|
22
|
-
* @param
|
|
23
|
-
* @returns
|
|
22
|
+
* @param oProperty The target property
|
|
23
|
+
* @returns `true` if the property is computed
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
26
|
|
|
@@ -34,8 +34,8 @@ sap.ui.define([], function () {
|
|
|
34
34
|
/**
|
|
35
35
|
* Check whether the property has the Core.Immutable annotation or not.
|
|
36
36
|
*
|
|
37
|
-
* @param
|
|
38
|
-
* @returns
|
|
37
|
+
* @param oProperty The target property
|
|
38
|
+
* @returns `true` if it's immutable
|
|
39
39
|
*/
|
|
40
40
|
|
|
41
41
|
|
|
@@ -49,8 +49,8 @@ sap.ui.define([], function () {
|
|
|
49
49
|
/**
|
|
50
50
|
* Check whether the property is a key or not.
|
|
51
51
|
*
|
|
52
|
-
* @param
|
|
53
|
-
* @returns
|
|
52
|
+
* @param oProperty The target property
|
|
53
|
+
* @returns `true` if it's a key
|
|
54
54
|
*/
|
|
55
55
|
|
|
56
56
|
|
|
@@ -90,8 +90,8 @@ sap.ui.define([], function () {
|
|
|
90
90
|
/**
|
|
91
91
|
* Check whether the property has a semantic object defined or not.
|
|
92
92
|
*
|
|
93
|
-
* @param
|
|
94
|
-
* @returns
|
|
93
|
+
* @param oProperty The target property
|
|
94
|
+
* @returns `true` if it has a semantic object
|
|
95
95
|
*/
|
|
96
96
|
|
|
97
97
|
|
|
@@ -123,8 +123,8 @@ sap.ui.define([], function () {
|
|
|
123
123
|
/**
|
|
124
124
|
* Retrieves the timezone property associated to the property, if applicable.
|
|
125
125
|
*
|
|
126
|
-
* @param
|
|
127
|
-
* @returns
|
|
126
|
+
* @param oProperty The target property
|
|
127
|
+
* @returns The timezone property, if it exists
|
|
128
128
|
*/
|
|
129
129
|
|
|
130
130
|
|
|
@@ -138,8 +138,8 @@ sap.ui.define([], function () {
|
|
|
138
138
|
/**
|
|
139
139
|
* Retrieves the unit property associated to the property, if applicable.
|
|
140
140
|
*
|
|
141
|
-
* @param
|
|
142
|
-
* @returns
|
|
141
|
+
* @param oProperty The target property
|
|
142
|
+
* @returns The unit property, if it exists
|
|
143
143
|
*/
|
|
144
144
|
|
|
145
145
|
|
|
@@ -161,8 +161,8 @@ sap.ui.define([], function () {
|
|
|
161
161
|
/**
|
|
162
162
|
* Retrieves the associated currency property for that property if it exists.
|
|
163
163
|
*
|
|
164
|
-
* @param
|
|
165
|
-
* @returns
|
|
164
|
+
* @param oProperty The target property
|
|
165
|
+
* @returns The unit property, if it exists
|
|
166
166
|
*/
|
|
167
167
|
|
|
168
168
|
|
|
@@ -184,8 +184,8 @@ sap.ui.define([], function () {
|
|
|
184
184
|
/**
|
|
185
185
|
* Retrieves the Common.Text property path if it exists.
|
|
186
186
|
*
|
|
187
|
-
* @param
|
|
188
|
-
* @returns
|
|
187
|
+
* @param oProperty The target property
|
|
188
|
+
* @returns The Common.Text property path or undefined if it does not exist
|
|
189
189
|
*/
|
|
190
190
|
|
|
191
191
|
|
|
@@ -215,8 +215,8 @@ sap.ui.define([], function () {
|
|
|
215
215
|
/**
|
|
216
216
|
* Check whether the property has a value help annotation defined or not.
|
|
217
217
|
*
|
|
218
|
-
* @param
|
|
219
|
-
* @returns
|
|
218
|
+
* @param oProperty The target property
|
|
219
|
+
* @returns `true` if it has a value help
|
|
220
220
|
*/
|
|
221
221
|
|
|
222
222
|
|
|
@@ -230,8 +230,8 @@ sap.ui.define([], function () {
|
|
|
230
230
|
/**
|
|
231
231
|
* Check whether the property has a value help with fixed value annotation defined or not.
|
|
232
232
|
*
|
|
233
|
-
* @param
|
|
234
|
-
* @returns
|
|
233
|
+
* @param oProperty The target property
|
|
234
|
+
* @returns `true` if it has a value help
|
|
235
235
|
*/
|
|
236
236
|
|
|
237
237
|
|
|
@@ -245,8 +245,8 @@ sap.ui.define([], function () {
|
|
|
245
245
|
/**
|
|
246
246
|
* Check whether the property has a value help for validation annotation defined or not.
|
|
247
247
|
*
|
|
248
|
-
* @param
|
|
249
|
-
* @returns
|
|
248
|
+
* @param oProperty The target property
|
|
249
|
+
* @returns `true` if it has a value help
|
|
250
250
|
*/
|
|
251
251
|
|
|
252
252
|
|
|
@@ -337,4 +337,4 @@ sap.ui.define([], function () {
|
|
|
337
337
|
_exports.hasStaticPercentUnit = hasStaticPercentUnit;
|
|
338
338
|
return _exports;
|
|
339
339
|
}, false);
|
|
340
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb3BlcnR5SGVscGVyLnRzIl0sIm5hbWVzIjpbImlzUHJvcGVydHkiLCJwcm9wZXJ0eSIsImhhc093blByb3BlcnR5IiwiX3R5cGUiLCJpc0NvbXB1dGVkIiwib1Byb3BlcnR5IiwiYW5ub3RhdGlvbnMiLCJDb3JlIiwiQ29tcHV0ZWQiLCJ2YWx1ZU9mIiwiaXNJbW11dGFibGUiLCJJbW11dGFibGUiLCJpc0tleSIsImhhc0RhdGVUeXBlIiwiaW5kZXhPZiIsInR5cGUiLCJnZXRMYWJlbCIsIkNvbW1vbiIsIkxhYmVsIiwidG9TdHJpbmciLCJoYXNTZW1hbnRpY09iamVjdCIsIlNlbWFudGljT2JqZWN0IiwiaXNQYXRoRXhwcmVzc2lvbiIsImV4cHJlc3Npb24iLCJ1bmRlZmluZWQiLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCJpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiIsImdldEFzc29jaWF0ZWRUaW1lem9uZVByb3BlcnR5IiwiVGltZXpvbmUiLCIkdGFyZ2V0IiwiZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eSIsIk1lYXN1cmVzIiwiVW5pdCIsImdldEFzc29jaWF0ZWRVbml0UHJvcGVydHlQYXRoIiwicGF0aCIsImdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiSVNPQ3VycmVuY3kiLCJnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eVBhdGgiLCJnZXRBc3NvY2lhdGVkVGV4dFByb3BlcnR5UGF0aCIsIlRleHQiLCJnZXRUYXJnZXRWYWx1ZU9uRGF0YVBvaW50Iiwic1RhcmdldFZhbHVlIiwiVUkiLCJEYXRhRmllbGREZWZhdWx0IiwiVGFyZ2V0IiwiVGFyZ2V0VmFsdWUiLCJoYXNWYWx1ZUhlbHAiLCJWYWx1ZUxpc3QiLCJWYWx1ZUxpc3RSZWZlcmVuY2VzIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0TWFwcGluZyIsImhhc1ZhbHVlSGVscFdpdGhGaXhlZFZhbHVlcyIsImhhc1ZhbHVlTGlzdEZvclZhbGlkYXRpb24iLCJWYWx1ZUxpc3RGb3JWYWxpZGF0aW9uIiwiaGFzVGltZXpvbmUiLCJpc1VuaXQiLCJJc1VuaXQiLCJoYXNVbml0IiwiaXNDdXJyZW5jeSIsIklzQ3VycmVuY3kiLCJoYXNDdXJyZW5jeSIsImhhc1N0YXRpY1BlcmNlbnRVbml0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxXQUFTQSxVQUFULENBQW9CQyxRQUFwQixFQUF5RDtBQUMvRCxXQUFPQSxRQUFRLElBQUtBLFFBQUQsQ0FBdUJDLGNBQXZCLENBQXNDLE9BQXRDLENBQVosSUFBK0RELFFBQUQsQ0FBdUJFLEtBQXZCLEtBQWlDLFVBQXRHO0FBQ0E7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sTUFBTUMsVUFBVSxHQUFHLFVBQVVDLFNBQVYsRUFBd0M7QUFBQTs7QUFDakUsV0FBTyxDQUFDLDJCQUFDQSxTQUFTLENBQUNDLFdBQVgsNEVBQUMsc0JBQXVCQyxJQUF4Qiw2RUFBQyx1QkFBNkJDLFFBQTlCLG1EQUFDLHVCQUF1Q0MsT0FBdkMsRUFBRCxDQUFSO0FBQ0EsR0FGTTtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxNQUFNQyxXQUFXLEdBQUcsVUFBVUwsU0FBVixFQUF3QztBQUFBOztBQUNsRSxXQUFPLENBQUMsNEJBQUNBLFNBQVMsQ0FBQ0MsV0FBWCw2RUFBQyx1QkFBdUJDLElBQXhCLDZFQUFDLHVCQUE2QkksU0FBOUIsbURBQUMsdUJBQXdDRixPQUF4QyxFQUFELENBQVI7QUFDQSxHQUZNO0FBSVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLE1BQU1HLEtBQUssR0FBRyxVQUFVUCxTQUFWLEVBQXdDO0FBQzVELFdBQU8sQ0FBQyxDQUFDQSxTQUFTLENBQUNPLEtBQW5CO0FBQ0EsR0FGTTtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxNQUFN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QUFDQTs7Ozs7QUFDTyxNQUFNbUQsV0FBVyxHQUFHLFVBQVV2RCxTQUFWLEVBQXdDO0FBQUE7O0FBQ2xFLFdBQU8sNEJBQUFBLFNBQVMsQ0FBQ0MsV0FBViwrR0FBdUJ5QixRQUF2QixvRkFBaUNLLFdBQWpDLE1BQWlEWixTQUF4RDtBQUNBLEdBRk07Ozs7QUFJQSxNQUFNcUMsb0JBQW9CLEdBQUcsVUFBVXhELFNBQVYsRUFBd0M7QUFBQTs7QUFDM0UsV0FBTyxDQUFBQSxTQUFTLFNBQVQsSUFBQUEsU0FBUyxXQUFULHVDQUFBQSxTQUFTLENBQUVDLFdBQVgsK0dBQXdCeUIsUUFBeEIsK0dBQWtDQyxJQUFsQyxvRkFBd0NiLFFBQXhDLFFBQXVELEdBQTlEO0FBQ0EsR0FGTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5cbi8qKlxuICogSWRlbnRpZnkgaWYgdGhlIGdpdmVuIHByb3BlcnR5IHBhc3NlZCBpcyBhIFwiUHJvcGVydHlcIiAoaGFzIGEgX3R5cGUpLlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IHByb3BlcnR5IEEgdGFyZ2V0IHByb3BlcnR5IHRvIGV2YWx1YXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVmFsaWRhdGUgdGhhdCBwcm9wZXJ0eSBpcyBhIFByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5KHByb3BlcnR5OiBhbnkpOiBwcm9wZXJ0eSBpcyBQcm9wZXJ0eSB7XG5cdHJldHVybiBwcm9wZXJ0eSAmJiAocHJvcGVydHkgYXMgUHJvcGVydHkpLmhhc093blByb3BlcnR5KFwiX3R5cGVcIikgJiYgKHByb3BlcnR5IGFzIFByb3BlcnR5KS5fdHlwZSA9PT0gXCJQcm9wZXJ0eVwiO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyB0aGUgQ29yZS5Db21wdXRlZCBhbm5vdGF0aW9uIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgY29tcHV0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQ29tcHV0ZWQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvcmU/LkNvbXB1dGVkPy52YWx1ZU9mKCk7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyB0aGUgQ29yZS5JbW11dGFibGUgYW5ub3RhdGlvbiBvciBub3QuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eX0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgaXQncyBpbW11dGFibGVcbiAqL1xuZXhwb3J0IGNvbnN0IGlzSW1tdXRhYmxlID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db3JlPy5JbW11dGFibGU/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSBrZXkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIGl0J3MgYSBrZXlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzS2V5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmlzS2V5O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgZGF0ZSB0aW1lIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5XG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaXMgb2YgdHlwZSBkYXRlIC8gZGF0ZXRpbWUgLyBkYXRldGltZW9mZnNldFxuICovXG5leHBvcnQgY29uc3QgaGFzRGF0ZVR5cGUgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gW1wiRWRtLkRhdGVcIiwgXCJFZG0uRGF0ZVRpbWVcIiwgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIl0uaW5kZXhPZihvUHJvcGVydHkudHlwZSkgIT09IC0xO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgbGFiZWwgYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBsYWJlbCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpIHx8IFwiXCI7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHNlbWFudGljIG9iamVjdCBkZWZpbmVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiBpdCBoYXMgYSBzZW1hbnRpYyBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1NlbWFudGljT2JqZWN0ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aEV4cHJlc3Npb24gPSBmdW5jdGlvbiA8VD4oZXhwcmVzc2lvbjogYW55KTogZXhwcmVzc2lvbiBpcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248VD4ge1xuXHRyZXR1cm4gISFleHByZXNzaW9uICYmIGV4cHJlc3Npb24udHlwZSAhPT0gdW5kZWZpbmVkICYmIGV4cHJlc3Npb24udHlwZSA9PT0gXCJQYXRoXCI7XG59O1xuZXhwb3J0IGNvbnN0IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIDxUPihleHByZXNzaW9uOiBhbnkpOiBleHByZXNzaW9uIGlzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPiB7XG5cdHJldHVybiAhIWV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi50eXBlICE9PSB1bmRlZmluZWQgJiYgZXhwcmVzc2lvbi50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiO1xufTtcbmV4cG9ydCBjb25zdCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIDxUPihleHByZXNzaW9uOiBhbnkpOiBleHByZXNzaW9uIGlzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPiB7XG5cdHJldHVybiAhIWV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi50eXBlICE9PSB1bmRlZmluZWQgJiYgZXhwcmVzc2lvbi50eXBlID09PSBcIkFubm90YXRpb25QYXRoXCI7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgdGltZXpvbmUgcHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcHJvcGVydHksIGlmIGFwcGxpY2FibGUuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eX0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtQcm9wZXJ0eSB8IHVuZGVmaW5lZH0gVGhlIHRpbWV6b25lIHByb3BlcnR5LCBpZiBpdCBleGlzdHNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRUaW1lem9uZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmUpXG5cdFx0PyAob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlRpbWV6b25lLiR0YXJnZXQgYXMgdW5rbm93biBhcyBQcm9wZXJ0eSlcblx0XHQ6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB1bml0IHByb3BlcnR5IGFzc29jaWF0ZWQgdG8gdGhlIHByb3BlcnR5LCBpZiBhcHBsaWNhYmxlLlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7UHJvcGVydHkgfCB1bmRlZmluZWR9IFRoZSB1bml0IHByb3BlcnR5LCBpZiBpdCBleGlzdHNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IFByb3BlcnR5IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQpXG5cdFx0PyAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdC4kdGFyZ2V0IGFzIHVua25vd24gYXMgUHJvcGVydHkpXG5cdFx0OiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eVBhdGggPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eT8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0KSA/IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQucGF0aCA6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhc3NvY2lhdGVkIGN1cnJlbmN5IHByb3BlcnR5IGZvciB0aGF0IHByb3BlcnR5IGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMge1Byb3BlcnR5IHwgdW5kZWZpbmVkfSBUaGUgdW5pdCBwcm9wZXJ0eSwgaWYgaXQgZXhpc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogUHJvcGVydHkgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kpXG5cdFx0PyAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KVxuXHRcdDogdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5UGF0aCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5KSA/IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5LnBhdGggOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgQ29tbW9uLlRleHQgcHJvcGVydHkgcGF0aCBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eX0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBDb21tb24uVGV4dCBwcm9wZXJ0eSBwYXRoIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2VzIG5vdCBleGlzdFxuICovXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGggPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0KSA/IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0LnBhdGggOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgVGFyZ2V0VmFsdWUgZnJvbSB0aGUgRGF0YVBvaW50LlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSB0aGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFQb2ludFxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIFRhcmdldFZhbHVlXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFRhcmdldFZhbHVlT25EYXRhUG9pbnQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBzVGFyZ2V0VmFsdWUgPVxuXHRcdG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/LkRhdGFGaWVsZERlZmF1bHQ/LlRhcmdldD8uJHRhcmdldD8uVGFyZ2V0VmFsdWU/LnRvU3RyaW5nKCkgfHwgb1Byb3BlcnR5LlRhcmdldFZhbHVlPy50b1N0cmluZygpO1xuXHRyZXR1cm4gc1RhcmdldFZhbHVlID8gc1RhcmdldFZhbHVlIDogdW5kZWZpbmVkO1xufTtcbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgdmFsdWUgaGVscCBhbm5vdGF0aW9uIGRlZmluZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIGl0IGhhcyBhIHZhbHVlIGhlbHBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1ZhbHVlSGVscCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiAoXG5cdFx0ISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0IHx8XG5cdFx0ISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0UmVmZXJlbmNlcyB8fFxuXHRcdCEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyB8fFxuXHRcdCEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdE1hcHBpbmdcblx0KTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgdmFsdWUgaGVscCB3aXRoIGZpeGVkIHZhbHVlIGFubm90YXRpb24gZGVmaW5lZCBvciBub3QuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eX0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgaXQgaGFzIGEgdmFsdWUgaGVscFxuICovXG5leHBvcnQgY29uc3QgaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgdmFsdWUgaGVscCBmb3IgdmFsaWRhdGlvbiBhbm5vdGF0aW9uIGRlZmluZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIGl0IGhhcyBhIHZhbHVlIGhlbHBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1ZhbHVlTGlzdEZvclZhbGlkYXRpb24gPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdEZvclZhbGlkYXRpb24gIT09IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNUaW1lem9uZSA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmUgIT09IHVuZGVmaW5lZDtcbn07XG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBhIHVuaXQgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBpcyBhIHVuaXRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVW5pdCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiAhIW9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5Jc1VuaXQ/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHVuaXQgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSB1bml0XG4gKi9cblxuZXhwb3J0IGNvbnN0IGhhc1VuaXQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdCAhPT0gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSBjdXJyZW5jeSBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSBwcm9wZXJ0eSB0byBjaGVja1xuICogQHJldHVybnMgYHRydWVgIGlmIGl0IGlzIGEgY3VycmVuY3lcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQ3VycmVuY3kgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNDdXJyZW5jeT8udmFsdWVPZigpO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgY3VycmVuY3kgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSBjdXJyZW5jeVxuICovXG5leHBvcnQgY29uc3QgaGFzQ3VycmVuY3kgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgIT09IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNTdGF0aWNQZXJjZW50VW5pdCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiBvUHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdD8udG9TdHJpbmcoKSA9PT0gXCIlXCI7XG59O1xuIl19
|
|
340
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1Byb3BlcnR5IiwicHJvcGVydHkiLCJoYXNPd25Qcm9wZXJ0eSIsIl90eXBlIiwiaXNDb21wdXRlZCIsIm9Qcm9wZXJ0eSIsImFubm90YXRpb25zIiwiQ29yZSIsIkNvbXB1dGVkIiwidmFsdWVPZiIsImlzSW1tdXRhYmxlIiwiSW1tdXRhYmxlIiwiaXNLZXkiLCJoYXNEYXRlVHlwZSIsImluZGV4T2YiLCJ0eXBlIiwiZ2V0TGFiZWwiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwiaGFzU2VtYW50aWNPYmplY3QiLCJTZW1hbnRpY09iamVjdCIsImlzUGF0aEV4cHJlc3Npb24iLCJleHByZXNzaW9uIiwidW5kZWZpbmVkIiwiaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIiwiaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24iLCJnZXRBc3NvY2lhdGVkVGltZXpvbmVQcm9wZXJ0eSIsIlRpbWV6b25lIiwiJHRhcmdldCIsImdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkiLCJNZWFzdXJlcyIsIlVuaXQiLCJnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5UGF0aCIsInBhdGgiLCJnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSIsIklTT0N1cnJlbmN5IiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHlQYXRoIiwiZ2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGgiLCJUZXh0IiwiZ2V0VGFyZ2V0VmFsdWVPbkRhdGFQb2ludCIsInNUYXJnZXRWYWx1ZSIsIlVJIiwiRGF0YUZpZWxkRGVmYXVsdCIsIlRhcmdldCIsIlRhcmdldFZhbHVlIiwiaGFzVmFsdWVIZWxwIiwiVmFsdWVMaXN0IiwiVmFsdWVMaXN0UmVmZXJlbmNlcyIsIlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyIsIlZhbHVlTGlzdE1hcHBpbmciLCJoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMiLCJoYXNWYWx1ZUxpc3RGb3JWYWxpZGF0aW9uIiwiVmFsdWVMaXN0Rm9yVmFsaWRhdGlvbiIsImhhc1RpbWV6b25lIiwiaXNVbml0IiwiSXNVbml0IiwiaGFzVW5pdCIsImlzQ3VycmVuY3kiLCJJc0N1cnJlbmN5IiwiaGFzQ3VycmVuY3kiLCJoYXNTdGF0aWNQZXJjZW50VW5pdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUHJvcGVydHlIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5cbi8qKlxuICogSWRlbnRpZnkgaWYgdGhlIGdpdmVuIHByb3BlcnR5IHBhc3NlZCBpcyBhIFwiUHJvcGVydHlcIiAoaGFzIGEgX3R5cGUpLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eSBBIHRhcmdldCBwcm9wZXJ0eSB0byBldmFsdWF0ZVxuICogQHJldHVybnMgVmFsaWRhdGUgdGhhdCBwcm9wZXJ0eSBpcyBhIFByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5KHByb3BlcnR5OiBhbnkpOiBwcm9wZXJ0eSBpcyBQcm9wZXJ0eSB7XG5cdHJldHVybiBwcm9wZXJ0eSAmJiAocHJvcGVydHkgYXMgUHJvcGVydHkpLmhhc093blByb3BlcnR5KFwiX3R5cGVcIikgJiYgKHByb3BlcnR5IGFzIFByb3BlcnR5KS5fdHlwZSA9PT0gXCJQcm9wZXJ0eVwiO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyB0aGUgQ29yZS5Db21wdXRlZCBhbm5vdGF0aW9uIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgY29tcHV0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQ29tcHV0ZWQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvcmU/LkNvbXB1dGVkPy52YWx1ZU9mKCk7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyB0aGUgQ29yZS5JbW11dGFibGUgYW5ub3RhdGlvbiBvciBub3QuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQncyBpbW11dGFibGVcbiAqL1xuZXhwb3J0IGNvbnN0IGlzSW1tdXRhYmxlID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db3JlPy5JbW11dGFibGU/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSBrZXkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMgYHRydWVgIGlmIGl0J3MgYSBrZXlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzS2V5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmlzS2V5O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgZGF0ZSB0aW1lIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5XG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaXMgb2YgdHlwZSBkYXRlIC8gZGF0ZXRpbWUgLyBkYXRldGltZW9mZnNldFxuICovXG5leHBvcnQgY29uc3QgaGFzRGF0ZVR5cGUgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gW1wiRWRtLkRhdGVcIiwgXCJFZG0uRGF0ZVRpbWVcIiwgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIl0uaW5kZXhPZihvUHJvcGVydHkudHlwZSkgIT09IC0xO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgbGFiZWwgYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBsYWJlbCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpIHx8IFwiXCI7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHNlbWFudGljIG9iamVjdCBkZWZpbmVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSBzZW1hbnRpYyBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1NlbWFudGljT2JqZWN0ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aEV4cHJlc3Npb24gPSBmdW5jdGlvbiA8VD4oZXhwcmVzc2lvbjogYW55KTogZXhwcmVzc2lvbiBpcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248VD4ge1xuXHRyZXR1cm4gISFleHByZXNzaW9uICYmIGV4cHJlc3Npb24udHlwZSAhPT0gdW5kZWZpbmVkICYmIGV4cHJlc3Npb24udHlwZSA9PT0gXCJQYXRoXCI7XG59O1xuZXhwb3J0IGNvbnN0IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIDxUPihleHByZXNzaW9uOiBhbnkpOiBleHByZXNzaW9uIGlzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPiB7XG5cdHJldHVybiAhIWV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi50eXBlICE9PSB1bmRlZmluZWQgJiYgZXhwcmVzc2lvbi50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiO1xufTtcbmV4cG9ydCBjb25zdCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIDxUPihleHByZXNzaW9uOiBhbnkpOiBleHByZXNzaW9uIGlzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPiB7XG5cdHJldHVybiAhIWV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi50eXBlICE9PSB1bmRlZmluZWQgJiYgZXhwcmVzc2lvbi50eXBlID09PSBcIkFubm90YXRpb25QYXRoXCI7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgdGltZXpvbmUgcHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcHJvcGVydHksIGlmIGFwcGxpY2FibGUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgdGltZXpvbmUgcHJvcGVydHksIGlmIGl0IGV4aXN0c1xuICovXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFRpbWV6b25lUHJvcGVydHkgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IFByb3BlcnR5IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UaW1lem9uZSlcblx0XHQ/IChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmUuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KVxuXHRcdDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHVuaXQgcHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcHJvcGVydHksIGlmIGFwcGxpY2FibGUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgdW5pdCBwcm9wZXJ0eSwgaWYgaXQgZXhpc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eT8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0KVxuXHRcdD8gKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KVxuXHRcdDogdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHlQYXRoID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdCkgPyBvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0LnBhdGggOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYXNzb2NpYXRlZCBjdXJyZW5jeSBwcm9wZXJ0eSBmb3IgdGhhdCBwcm9wZXJ0eSBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgdW5pdCBwcm9wZXJ0eSwgaWYgaXQgZXhpc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogUHJvcGVydHkgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kpXG5cdFx0PyAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KVxuXHRcdDogdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5UGF0aCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5KSA/IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5LnBhdGggOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgQ29tbW9uLlRleHQgcHJvcGVydHkgcGF0aCBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgQ29tbW9uLlRleHQgcHJvcGVydHkgcGF0aCBvciB1bmRlZmluZWQgaWYgaXQgZG9lcyBub3QgZXhpc3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCkgPyBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dC5wYXRoIDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIFRhcmdldFZhbHVlIGZyb20gdGhlIERhdGFQb2ludC5cbiAqXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBvUHJvcGVydHkgdGhlIHRhcmdldCBwcm9wZXJ0eSBvciBEYXRhUG9pbnRcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBUYXJnZXRWYWx1ZVxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRWYWx1ZU9uRGF0YVBvaW50ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qgc1RhcmdldFZhbHVlID1cblx0XHRvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5EYXRhRmllbGREZWZhdWx0Py5UYXJnZXQ/LiR0YXJnZXQ/LlRhcmdldFZhbHVlPy50b1N0cmluZygpIHx8IG9Qcm9wZXJ0eS5UYXJnZXRWYWx1ZT8udG9TdHJpbmcoKTtcblx0cmV0dXJuIHNUYXJnZXRWYWx1ZSA/IHNUYXJnZXRWYWx1ZSA6IHVuZGVmaW5lZDtcbn07XG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHZhbHVlIGhlbHAgYW5ub3RhdGlvbiBkZWZpbmVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSB2YWx1ZSBoZWxwXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNWYWx1ZUhlbHAgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKFxuXHRcdCEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdCB8fFxuXHRcdCEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFJlZmVyZW5jZXMgfHxcblx0XHQhIW9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMgfHxcblx0XHQhIW9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RNYXBwaW5nXG5cdCk7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHZhbHVlIGhlbHAgd2l0aCBmaXhlZCB2YWx1ZSBhbm5vdGF0aW9uIGRlZmluZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMgYHRydWVgIGlmIGl0IGhhcyBhIHZhbHVlIGhlbHBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1ZhbHVlSGVscFdpdGhGaXhlZFZhbHVlcyA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiAhIW9Qcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzPy52YWx1ZU9mKCk7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHZhbHVlIGhlbHAgZm9yIHZhbGlkYXRpb24gYW5ub3RhdGlvbiBkZWZpbmVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSB2YWx1ZSBoZWxwXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNWYWx1ZUxpc3RGb3JWYWxpZGF0aW9uID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuIG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RGb3JWYWxpZGF0aW9uICE9PSB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVGltZXpvbmUgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlRpbWV6b25lICE9PSB1bmRlZmluZWQ7XG59O1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSB1bml0IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGNoZWNrXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaXMgYSB1bml0XG4gKi9cbmV4cG9ydCBjb25zdCBpc1VuaXQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNVbml0Py52YWx1ZU9mKCk7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBoYXMgYSB1bml0IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGNoZWNrXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaGFzIGEgdW5pdFxuICovXG5cbmV4cG9ydCBjb25zdCBoYXNVbml0ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuIG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQgIT09IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIGEgY3VycmVuY3kgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBpcyBhIGN1cnJlbmN5XG4gKi9cbmV4cG9ydCBjb25zdCBpc0N1cnJlbmN5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LklzQ3VycmVuY3k/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIGN1cnJlbmN5IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGNoZWNrXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaGFzIGEgY3VycmVuY3lcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0N1cnJlbmN5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuIG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5ICE9PSB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzU3RhdGljUGVyY2VudFVuaXQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ/LnRvU3RyaW5nKCkgPT09IFwiJVwiO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0EsVUFBVCxDQUFvQkMsUUFBcEIsRUFBeUQ7SUFDL0QsT0FBT0EsUUFBUSxJQUFLQSxRQUFELENBQXVCQyxjQUF2QixDQUFzQyxPQUF0QyxDQUFaLElBQStERCxRQUFELENBQXVCRSxLQUF2QixLQUFpQyxVQUF0RztFQUNBO0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLElBQU1DLFVBQVUsR0FBRyxVQUFVQyxTQUFWLEVBQXdDO0lBQUE7O0lBQ2pFLE9BQU8sQ0FBQywyQkFBQ0EsU0FBUyxDQUFDQyxXQUFYLDRFQUFDLHNCQUF1QkMsSUFBeEIsNkVBQUMsdUJBQTZCQyxRQUE5QixtREFBQyx1QkFBdUNDLE9BQXZDLEVBQUQsQ0FBUjtFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTUMsV0FBVyxHQUFHLFVBQVVMLFNBQVYsRUFBd0M7SUFBQTs7SUFDbEUsT0FBTyxDQUFDLDRCQUFDQSxTQUFTLENBQUNDLFdBQVgsNkVBQUMsdUJBQXVCQyxJQUF4Qiw2RUFB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
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Property } from "@sap-ux/
|
|
2
|
-
import { PathAnnotationExpression } from "@sap-ux/vocabularies-types";
|
|
1
|
+
import type { PathAnnotationExpression, Property } from "@sap-ux/vocabularies-types";
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Identify if the given property passed is a "Property" (has a _type).
|
|
6
5
|
*
|
|
7
|
-
* @param
|
|
8
|
-
* @returns
|
|
6
|
+
* @param property A target property to evaluate
|
|
7
|
+
* @returns Validate that property is a Property
|
|
9
8
|
*/
|
|
10
9
|
export function isProperty(property: any): property is Property {
|
|
11
10
|
return property && (property as Property).hasOwnProperty("_type") && (property as Property)._type === "Property";
|
|
@@ -14,8 +13,8 @@ export function isProperty(property: any): property is Property {
|
|
|
14
13
|
/**
|
|
15
14
|
* Check whether the property has the Core.Computed annotation or not.
|
|
16
15
|
*
|
|
17
|
-
* @param
|
|
18
|
-
* @returns
|
|
16
|
+
* @param oProperty The target property
|
|
17
|
+
* @returns `true` if the property is computed
|
|
19
18
|
*/
|
|
20
19
|
export const isComputed = function (oProperty: Property): boolean {
|
|
21
20
|
return !!oProperty.annotations?.Core?.Computed?.valueOf();
|
|
@@ -24,8 +23,8 @@ export const isComputed = function (oProperty: Property): boolean {
|
|
|
24
23
|
/**
|
|
25
24
|
* Check whether the property has the Core.Immutable annotation or not.
|
|
26
25
|
*
|
|
27
|
-
* @param
|
|
28
|
-
* @returns
|
|
26
|
+
* @param oProperty The target property
|
|
27
|
+
* @returns `true` if it's immutable
|
|
29
28
|
*/
|
|
30
29
|
export const isImmutable = function (oProperty: Property): boolean {
|
|
31
30
|
return !!oProperty.annotations?.Core?.Immutable?.valueOf();
|
|
@@ -34,8 +33,8 @@ export const isImmutable = function (oProperty: Property): boolean {
|
|
|
34
33
|
/**
|
|
35
34
|
* Check whether the property is a key or not.
|
|
36
35
|
*
|
|
37
|
-
* @param
|
|
38
|
-
* @returns
|
|
36
|
+
* @param oProperty The target property
|
|
37
|
+
* @returns `true` if it's a key
|
|
39
38
|
*/
|
|
40
39
|
export const isKey = function (oProperty: Property): boolean {
|
|
41
40
|
return !!oProperty.isKey;
|
|
@@ -64,8 +63,8 @@ export const getLabel = function (oProperty: Property): string {
|
|
|
64
63
|
/**
|
|
65
64
|
* Check whether the property has a semantic object defined or not.
|
|
66
65
|
*
|
|
67
|
-
* @param
|
|
68
|
-
* @returns
|
|
66
|
+
* @param oProperty The target property
|
|
67
|
+
* @returns `true` if it has a semantic object
|
|
69
68
|
*/
|
|
70
69
|
export const hasSemanticObject = function (oProperty: Property): boolean {
|
|
71
70
|
return !!oProperty.annotations?.Common?.SemanticObject;
|
|
@@ -84,8 +83,8 @@ export const isAnnotationPathExpression = function <T>(expression: any): express
|
|
|
84
83
|
/**
|
|
85
84
|
* Retrieves the timezone property associated to the property, if applicable.
|
|
86
85
|
*
|
|
87
|
-
* @param
|
|
88
|
-
* @returns
|
|
86
|
+
* @param oProperty The target property
|
|
87
|
+
* @returns The timezone property, if it exists
|
|
89
88
|
*/
|
|
90
89
|
export const getAssociatedTimezoneProperty = function (oProperty: Property): Property | undefined {
|
|
91
90
|
return isPathExpression(oProperty?.annotations?.Common?.Timezone)
|
|
@@ -96,8 +95,8 @@ export const getAssociatedTimezoneProperty = function (oProperty: Property): Pro
|
|
|
96
95
|
/**
|
|
97
96
|
* Retrieves the unit property associated to the property, if applicable.
|
|
98
97
|
*
|
|
99
|
-
* @param
|
|
100
|
-
* @returns
|
|
98
|
+
* @param oProperty The target property
|
|
99
|
+
* @returns The unit property, if it exists
|
|
101
100
|
*/
|
|
102
101
|
export const getAssociatedUnitProperty = function (oProperty: Property): Property | undefined {
|
|
103
102
|
return isPathExpression(oProperty?.annotations?.Measures?.Unit)
|
|
@@ -112,8 +111,8 @@ export const getAssociatedUnitPropertyPath = function (oProperty: Property): str
|
|
|
112
111
|
/**
|
|
113
112
|
* Retrieves the associated currency property for that property if it exists.
|
|
114
113
|
*
|
|
115
|
-
* @param
|
|
116
|
-
* @returns
|
|
114
|
+
* @param oProperty The target property
|
|
115
|
+
* @returns The unit property, if it exists
|
|
117
116
|
*/
|
|
118
117
|
export const getAssociatedCurrencyProperty = function (oProperty: Property): Property | undefined {
|
|
119
118
|
return isPathExpression(oProperty?.annotations?.Measures?.ISOCurrency)
|
|
@@ -128,8 +127,8 @@ export const getAssociatedCurrencyPropertyPath = function (oProperty: Property):
|
|
|
128
127
|
/**
|
|
129
128
|
* Retrieves the Common.Text property path if it exists.
|
|
130
129
|
*
|
|
131
|
-
* @param
|
|
132
|
-
* @returns
|
|
130
|
+
* @param oProperty The target property
|
|
131
|
+
* @returns The Common.Text property path or undefined if it does not exist
|
|
133
132
|
*/
|
|
134
133
|
export const getAssociatedTextPropertyPath = function (oProperty: Property): string | undefined {
|
|
135
134
|
return isPathExpression(oProperty.annotations?.Common?.Text) ? oProperty.annotations?.Common?.Text.path : undefined;
|
|
@@ -150,8 +149,8 @@ export const getTargetValueOnDataPoint = function (oProperty: any): string | und
|
|
|
150
149
|
/**
|
|
151
150
|
* Check whether the property has a value help annotation defined or not.
|
|
152
151
|
*
|
|
153
|
-
* @param
|
|
154
|
-
* @returns
|
|
152
|
+
* @param oProperty The target property
|
|
153
|
+
* @returns `true` if it has a value help
|
|
155
154
|
*/
|
|
156
155
|
export const hasValueHelp = function (oProperty: Property): boolean {
|
|
157
156
|
return (
|
|
@@ -165,8 +164,8 @@ export const hasValueHelp = function (oProperty: Property): boolean {
|
|
|
165
164
|
/**
|
|
166
165
|
* Check whether the property has a value help with fixed value annotation defined or not.
|
|
167
166
|
*
|
|
168
|
-
* @param
|
|
169
|
-
* @returns
|
|
167
|
+
* @param oProperty The target property
|
|
168
|
+
* @returns `true` if it has a value help
|
|
170
169
|
*/
|
|
171
170
|
export const hasValueHelpWithFixedValues = function (oProperty: Property): boolean {
|
|
172
171
|
return !!oProperty?.annotations?.Common?.ValueListWithFixedValues?.valueOf();
|
|
@@ -175,8 +174,8 @@ export const hasValueHelpWithFixedValues = function (oProperty: Property): boole
|
|
|
175
174
|
/**
|
|
176
175
|
* Check whether the property has a value help for validation annotation defined or not.
|
|
177
176
|
*
|
|
178
|
-
* @param
|
|
179
|
-
* @returns
|
|
177
|
+
* @param oProperty The target property
|
|
178
|
+
* @returns `true` if it has a value help
|
|
180
179
|
*/
|
|
181
180
|
export const hasValueListForValidation = function (oProperty: Property): boolean {
|
|
182
181
|
return oProperty.annotations?.Common?.ValueListForValidation !== undefined;
|