@ui5/webcomponents-base 2.0.0-rc.2 → 2.0.0-rc.4
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/CHANGELOG.md +179 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/Boot.js +3 -4
- package/dist/Boot.js.map +1 -1
- package/dist/Keys.d.ts +2 -1
- package/dist/Keys.js +2 -1
- package/dist/Keys.js.map +1 -1
- package/dist/UI5Element.d.ts +9 -1
- package/dist/UI5Element.js +73 -12
- package/dist/UI5Element.js.map +1 -1
- package/dist/UI5ElementMetadata.d.ts +5 -0
- package/dist/UI5ElementMetadata.js +6 -0
- package/dist/UI5ElementMetadata.js.map +1 -1
- package/dist/asset-registries/Icons.js +1 -1
- package/dist/asset-registries/Icons.js.map +1 -1
- package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +3 -3
- package/dist/asset-registries/util/getIconCollectionByTheme.js +3 -3
- package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -1
- package/dist/config/AnimationMode.js +2 -1
- package/dist/config/AnimationMode.js.map +1 -1
- package/dist/config/Theme.d.ts +3 -2
- package/dist/config/Theme.js +7 -3
- package/dist/config/Theme.js.map +1 -1
- package/dist/custom-elements-internal.json +186 -21
- package/dist/custom-elements.json +81 -15
- package/dist/decorators/customElement.d.ts +1 -0
- package/dist/decorators/customElement.js +5 -2
- package/dist/decorators/customElement.js.map +1 -1
- package/dist/features/InputElementsFormSupport.d.ts +18 -0
- package/dist/features/InputElementsFormSupport.js +40 -0
- package/dist/features/InputElementsFormSupport.js.map +1 -0
- package/dist/features/OpenUI5Support.js +8 -2
- package/dist/features/OpenUI5Support.js.map +1 -1
- package/dist/features/patchPatcher.d.ts +11 -0
- package/dist/features/patchPatcher.js +11 -0
- package/dist/features/patchPatcher.js.map +1 -0
- package/dist/features/patchPopup.d.ts +14 -0
- package/dist/features/patchPopup.js +50 -0
- package/dist/features/patchPopup.js.map +1 -0
- package/dist/generated/AssetParameters.js +1 -1
- package/dist/generated/AssetParameters.js.map +1 -1
- package/dist/generated/VersionInfo.js +3 -3
- package/dist/generated/VersionInfo.js.map +1 -1
- package/dist/prod/AssetRegistry.js +2 -0
- package/dist/prod/AssetRegistry.js.map +7 -0
- package/dist/prod/Boot.js +2 -0
- package/dist/prod/Boot.js.map +7 -0
- package/dist/prod/CustomElementsRegistry.js +10 -0
- package/dist/prod/CustomElementsRegistry.js.map +7 -0
- package/dist/prod/CustomElementsScope.js +2 -0
- package/dist/prod/CustomElementsScope.js.map +7 -0
- package/dist/prod/CustomElementsScopeUtils.js +2 -0
- package/dist/prod/CustomElementsScopeUtils.js.map +7 -0
- package/dist/prod/DOMObserver.js +2 -0
- package/dist/prod/DOMObserver.js.map +7 -0
- package/dist/prod/Device.js +2 -0
- package/dist/prod/Device.js.map +7 -0
- package/dist/prod/EventProvider.js +2 -0
- package/dist/prod/EventProvider.js.map +7 -0
- package/dist/prod/FeaturesRegistry.js +2 -0
- package/dist/prod/FeaturesRegistry.js.map +7 -0
- package/dist/prod/FontFace.js +2 -0
- package/dist/prod/FontFace.js.map +7 -0
- package/dist/prod/IgnoreCustomElements.js +2 -0
- package/dist/prod/IgnoreCustomElements.js.map +7 -0
- package/dist/prod/InitialConfiguration.js +2 -0
- package/dist/prod/InitialConfiguration.js.map +7 -0
- package/dist/prod/Keys.js +2 -0
- package/dist/prod/Keys.js.map +7 -0
- package/dist/prod/ManagedStyles.js +2 -0
- package/dist/prod/ManagedStyles.js.map +7 -0
- package/dist/prod/MarkedEvents.js +2 -0
- package/dist/prod/MarkedEvents.js.map +7 -0
- package/dist/prod/MediaRange.js +2 -0
- package/dist/prod/MediaRange.js.map +7 -0
- package/dist/prod/PropertiesFileFormat.js +3 -0
- package/dist/prod/PropertiesFileFormat.js.map +7 -0
- package/dist/prod/Render.js +2 -0
- package/dist/prod/Render.js.map +7 -0
- package/dist/prod/RenderQueue.js +2 -0
- package/dist/prod/RenderQueue.js.map +7 -0
- package/dist/prod/Runtimes.js +2 -0
- package/dist/prod/Runtimes.js.map +7 -0
- package/dist/prod/SystemCSSVars.js +2 -0
- package/dist/prod/SystemCSSVars.js.map +7 -0
- package/dist/prod/Theming.js +2 -0
- package/dist/prod/Theming.js.map +7 -0
- package/dist/prod/UI5Element.js +2 -0
- package/dist/prod/UI5Element.js.map +7 -0
- package/dist/prod/UI5ElementMetadata.js +2 -0
- package/dist/prod/UI5ElementMetadata.js.map +7 -0
- package/dist/prod/animations/AnimationQueue.js +2 -0
- package/dist/prod/animations/AnimationQueue.js.map +7 -0
- package/dist/prod/animations/animate.js +2 -0
- package/dist/prod/animations/animate.js.map +7 -0
- package/dist/prod/animations/scroll.js +2 -0
- package/dist/prod/animations/scroll.js.map +7 -0
- package/dist/prod/animations/slideDown.js +2 -0
- package/dist/prod/animations/slideDown.js.map +7 -0
- package/dist/prod/animations/slideUp.js +2 -0
- package/dist/prod/animations/slideUp.js.map +7 -0
- package/dist/prod/asset-registries/Icons.js +2 -0
- package/dist/prod/asset-registries/Icons.js.map +7 -0
- package/dist/prod/asset-registries/Illustrations.js +2 -0
- package/dist/prod/asset-registries/Illustrations.js.map +7 -0
- package/dist/prod/asset-registries/LocaleData.js +2 -0
- package/dist/prod/asset-registries/LocaleData.js.map +7 -0
- package/dist/prod/asset-registries/Themes.js +2 -0
- package/dist/prod/asset-registries/Themes.js.map +7 -0
- package/dist/prod/asset-registries/i18n.js +2 -0
- package/dist/prod/asset-registries/i18n.js.map +7 -0
- package/dist/prod/asset-registries/util/IconCollectionsAlias.js +2 -0
- package/dist/prod/asset-registries/util/IconCollectionsAlias.js.map +7 -0
- package/dist/prod/asset-registries/util/IconCollectionsByTheme.js +2 -0
- package/dist/prod/asset-registries/util/IconCollectionsByTheme.js.map +7 -0
- package/dist/prod/asset-registries/util/getIconCollectionByTheme.js +2 -0
- package/dist/prod/asset-registries/util/getIconCollectionByTheme.js.map +7 -0
- package/dist/prod/config/AnimationMode.js +2 -0
- package/dist/prod/config/AnimationMode.js.map +7 -0
- package/dist/prod/config/CalendarType.js +2 -0
- package/dist/prod/config/CalendarType.js.map +7 -0
- package/dist/prod/config/FormatSettings.js +2 -0
- package/dist/prod/config/FormatSettings.js.map +7 -0
- package/dist/prod/config/Icons.js +2 -0
- package/dist/prod/config/Icons.js.map +7 -0
- package/dist/prod/config/Language.js +2 -0
- package/dist/prod/config/Language.js.map +7 -0
- package/dist/prod/config/NoConflict.js +2 -0
- package/dist/prod/config/NoConflict.js.map +7 -0
- package/dist/prod/config/Theme.js +2 -0
- package/dist/prod/config/Theme.js.map +7 -0
- package/dist/prod/config/ThemeRoot.js +2 -0
- package/dist/prod/config/ThemeRoot.js.map +7 -0
- package/dist/prod/config/Timezone.js +2 -0
- package/dist/prod/config/Timezone.js.map +7 -0
- package/dist/prod/connectToComponent.js +2 -0
- package/dist/prod/connectToComponent.js.map +7 -0
- package/dist/prod/decorators/customElement.js +2 -0
- package/dist/prod/decorators/customElement.js.map +7 -0
- package/dist/prod/decorators/event.js +2 -0
- package/dist/prod/decorators/event.js.map +7 -0
- package/dist/prod/decorators/property.js +2 -0
- package/dist/prod/decorators/property.js.map +7 -0
- package/dist/prod/decorators/slot.js +2 -0
- package/dist/prod/decorators/slot.js.map +7 -0
- package/dist/prod/decorators.js +2 -0
- package/dist/prod/decorators.js.map +7 -0
- package/dist/prod/delegate/ItemNavigation.js +2 -0
- package/dist/prod/delegate/ItemNavigation.js.map +7 -0
- package/dist/prod/delegate/ResizeHandler.js +2 -0
- package/dist/prod/delegate/ResizeHandler.js.map +7 -0
- package/dist/prod/delegate/ScrollEnablement.js +2 -0
- package/dist/prod/delegate/ScrollEnablement.js.map +7 -0
- package/dist/prod/features/F6Navigation.js +2 -0
- package/dist/prod/features/F6Navigation.js.map +7 -0
- package/dist/prod/features/InputElementsFormSupport.js +2 -0
- package/dist/prod/features/InputElementsFormSupport.js.map +7 -0
- package/dist/prod/features/LegacyDateFormats.js +2 -0
- package/dist/prod/features/LegacyDateFormats.js.map +7 -0
- package/dist/prod/features/OpenUI5Element.js +2 -0
- package/dist/prod/features/OpenUI5Element.js.map +7 -0
- package/dist/prod/features/OpenUI5Enablement.js +21 -0
- package/dist/prod/features/OpenUI5Enablement.js.map +7 -0
- package/dist/prod/features/OpenUI5Support.js +2 -0
- package/dist/prod/features/OpenUI5Support.js.map +7 -0
- package/dist/prod/features/patchPatcher.js +2 -0
- package/dist/prod/features/patchPatcher.js.map +7 -0
- package/dist/prod/features/patchPopup.js +2 -0
- package/dist/prod/features/patchPopup.js.map +7 -0
- package/dist/prod/generated/AssetParameters.js +2 -0
- package/dist/prod/generated/AssetParameters.js.map +7 -0
- package/dist/prod/generated/VersionInfo.js +2 -0
- package/dist/prod/generated/VersionInfo.js.map +7 -0
- package/dist/prod/generated/css/BusyIndicator.css.js +2 -0
- package/dist/prod/generated/css/BusyIndicator.css.js.map +7 -0
- package/dist/prod/generated/css/FontFace.css.js +2 -0
- package/dist/prod/generated/css/FontFace.css.js.map +7 -0
- package/dist/prod/generated/css/OverrideFontFace.css.js +2 -0
- package/dist/prod/generated/css/OverrideFontFace.css.js.map +7 -0
- package/dist/prod/generated/css/SystemCSSVars.css.js +2 -0
- package/dist/prod/generated/css/SystemCSSVars.css.js.map +7 -0
- package/dist/prod/generated/templates/elements/WithComplexTemplateTemplate.lit.js +2 -0
- package/dist/prod/generated/templates/elements/WithComplexTemplateTemplate.lit.js.map +7 -0
- package/dist/prod/getSharedResource.js +2 -0
- package/dist/prod/getSharedResource.js.map +7 -0
- package/dist/prod/global.d.js +2 -0
- package/dist/prod/global.d.js.map +7 -0
- package/dist/prod/i18nBundle.js +2 -0
- package/dist/prod/i18nBundle.js.map +7 -0
- package/dist/prod/locale/Locale.js +2 -0
- package/dist/prod/locale/Locale.js.map +7 -0
- package/dist/prod/locale/RTLAwareRegistry.js +2 -0
- package/dist/prod/locale/RTLAwareRegistry.js.map +7 -0
- package/dist/prod/locale/applyDirection.js +2 -0
- package/dist/prod/locale/applyDirection.js.map +7 -0
- package/dist/prod/locale/directionChange.js +2 -0
- package/dist/prod/locale/directionChange.js.map +7 -0
- package/dist/prod/locale/getEffectiveDir.js +2 -0
- package/dist/prod/locale/getEffectiveDir.js.map +7 -0
- package/dist/prod/locale/getLocale.js +2 -0
- package/dist/prod/locale/getLocale.js.map +7 -0
- package/dist/prod/locale/languageChange.js +2 -0
- package/dist/prod/locale/languageChange.js.map +7 -0
- package/dist/prod/locale/nextFallbackLocale.js +2 -0
- package/dist/prod/locale/nextFallbackLocale.js.map +7 -0
- package/dist/prod/locale/normalizeLocale.js +2 -0
- package/dist/prod/locale/normalizeLocale.js.map +7 -0
- package/dist/prod/renderer/LitRenderer.js +2 -0
- package/dist/prod/renderer/LitRenderer.js.map +7 -0
- package/dist/prod/renderer/directives/style-map.js +6 -0
- package/dist/prod/renderer/directives/style-map.js.map +7 -0
- package/dist/prod/renderer/executeTemplate.js +2 -0
- package/dist/prod/renderer/executeTemplate.js.map +7 -0
- package/dist/prod/sap/base/Log.js +750 -0
- package/dist/prod/sap/base/assert.js +34 -0
- package/dist/prod/sap/base/config/MemoryConfigurationProvider.js +20 -0
- package/dist/prod/sap/base/security/URLListValidator.js +406 -0
- package/dist/prod/sap/base/security/encodeCSS.js +40 -0
- package/dist/prod/sap/base/security/encodeXML.js +53 -0
- package/dist/prod/sap/base/security/sanitizeHTML.js +38 -0
- package/dist/prod/sap/base/strings/toHex.js +33 -0
- package/dist/prod/sap/base/util/now.js +28 -0
- package/dist/prod/sap/base/util/uid.js +27 -0
- package/dist/prod/sap/ui/thirdparty/caja-html-sanitizer.js +3600 -0
- package/dist/prod/ssr-dom-shim.js +2 -0
- package/dist/prod/ssr-dom-shim.js.map +7 -0
- package/dist/prod/ssr-dom.js +2 -0
- package/dist/prod/ssr-dom.js.map +7 -0
- package/dist/prod/theming/CustomStyle.js +2 -0
- package/dist/prod/theming/CustomStyle.js.map +7 -0
- package/dist/prod/theming/ThemeLoaded.js +2 -0
- package/dist/prod/theming/ThemeLoaded.js.map +7 -0
- package/dist/prod/theming/ThemeRegistered.js +2 -0
- package/dist/prod/theming/ThemeRegistered.js.map +7 -0
- package/dist/prod/theming/applyTheme.js +2 -0
- package/dist/prod/theming/applyTheme.js.map +7 -0
- package/dist/prod/theming/getConstructableStyle.js +2 -0
- package/dist/prod/theming/getConstructableStyle.js.map +7 -0
- package/dist/prod/theming/getEffectiveStyle.js +2 -0
- package/dist/prod/theming/getEffectiveStyle.js.map +7 -0
- package/dist/prod/theming/getStylesString.js +2 -0
- package/dist/prod/theming/getStylesString.js.map +7 -0
- package/dist/prod/theming/getThemeDesignerTheme.js +2 -0
- package/dist/prod/theming/getThemeDesignerTheme.js.map +7 -0
- package/dist/prod/thirdparty/_merge.js +2 -0
- package/dist/prod/thirdparty/_merge.js.map +7 -0
- package/dist/prod/thirdparty/isPlainObject.js +2 -0
- package/dist/prod/thirdparty/isPlainObject.js.map +7 -0
- package/dist/prod/thirdparty/merge.js +2 -0
- package/dist/prod/thirdparty/merge.js.map +7 -0
- package/dist/prod/types/AnimationMode.js +2 -0
- package/dist/prod/types/AnimationMode.js.map +7 -0
- package/dist/prod/types/AriaHasPopup.js +2 -0
- package/dist/prod/types/AriaHasPopup.js.map +7 -0
- package/dist/prod/types/AriaLandmarkRole.js +2 -0
- package/dist/prod/types/AriaLandmarkRole.js.map +7 -0
- package/dist/prod/types/AriaRole.js +2 -0
- package/dist/prod/types/AriaRole.js.map +7 -0
- package/dist/prod/types/CSSColor.js +2 -0
- package/dist/prod/types/CSSColor.js.map +7 -0
- package/dist/prod/types/CSSSize.js +2 -0
- package/dist/prod/types/CSSSize.js.map +7 -0
- package/dist/prod/types/CalendarType.js +2 -0
- package/dist/prod/types/CalendarType.js.map +7 -0
- package/dist/prod/types/DOMReference.js +2 -0
- package/dist/prod/types/DOMReference.js.map +7 -0
- package/dist/prod/types/DataType.js +2 -0
- package/dist/prod/types/DataType.js.map +7 -0
- package/dist/prod/types/Float.js +2 -0
- package/dist/prod/types/Float.js.map +7 -0
- package/dist/prod/types/Integer.js +2 -0
- package/dist/prod/types/Integer.js.map +7 -0
- package/dist/prod/types/InvisibleMessageMode.js +2 -0
- package/dist/prod/types/InvisibleMessageMode.js.map +7 -0
- package/dist/prod/types/ItemNavigationBehavior.js +2 -0
- package/dist/prod/types/ItemNavigationBehavior.js.map +7 -0
- package/dist/prod/types/MovePlacement.js +2 -0
- package/dist/prod/types/MovePlacement.js.map +7 -0
- package/dist/prod/types/NavigationMode.js +2 -0
- package/dist/prod/types/NavigationMode.js.map +7 -0
- package/dist/prod/types/Orientation.js +2 -0
- package/dist/prod/types/Orientation.js.map +7 -0
- package/dist/prod/types/ValueState.js +2 -0
- package/dist/prod/types/ValueState.js.map +7 -0
- package/dist/prod/types.js +2 -0
- package/dist/prod/types.js.map +7 -0
- package/dist/prod/updateShadowRoot.js +2 -0
- package/dist/prod/updateShadowRoot.js.map +7 -0
- package/dist/prod/util/AriaLabelHelper.js +2 -0
- package/dist/prod/util/AriaLabelHelper.js.map +7 -0
- package/dist/prod/util/Caret.js +2 -0
- package/dist/prod/util/Caret.js.map +7 -0
- package/dist/prod/util/ColorConversion.js +2 -0
- package/dist/prod/util/ColorConversion.js.map +7 -0
- package/dist/prod/util/FetchHelper.js +2 -0
- package/dist/prod/util/FetchHelper.js.map +7 -0
- package/dist/prod/util/FocusableElements.js +2 -0
- package/dist/prod/util/FocusableElements.js.map +7 -0
- package/dist/prod/util/HTMLSanitizer.js +2 -0
- package/dist/prod/util/HTMLSanitizer.js.map +7 -0
- package/dist/prod/util/InvisibleMessage.js +2 -0
- package/dist/prod/util/InvisibleMessage.js.map +7 -0
- package/dist/prod/util/PopupUtils.js +2 -0
- package/dist/prod/util/PopupUtils.js.map +7 -0
- package/dist/prod/util/SlotsHelper.js +2 -0
- package/dist/prod/util/SlotsHelper.js.map +7 -0
- package/dist/prod/util/StringHelper.js +2 -0
- package/dist/prod/util/StringHelper.js.map +7 -0
- package/dist/prod/util/TabbableElements.js +2 -0
- package/dist/prod/util/TabbableElements.js.map +7 -0
- package/dist/prod/util/arraysAreEqual.js +2 -0
- package/dist/prod/util/arraysAreEqual.js.map +7 -0
- package/dist/prod/util/clamp.js +2 -0
- package/dist/prod/util/clamp.js.map +7 -0
- package/dist/prod/util/createLinkInHead.js +2 -0
- package/dist/prod/util/createLinkInHead.js.map +7 -0
- package/dist/prod/util/debounce.js +2 -0
- package/dist/prod/util/debounce.js.map +7 -0
- package/dist/prod/util/detectNavigatorLanguage.js +2 -0
- package/dist/prod/util/detectNavigatorLanguage.js.map +7 -0
- package/dist/prod/util/dragAndDrop/DragRegistry.js +2 -0
- package/dist/prod/util/dragAndDrop/DragRegistry.js.map +7 -0
- package/dist/prod/util/dragAndDrop/findClosestPosition.js +2 -0
- package/dist/prod/util/dragAndDrop/findClosestPosition.js.map +7 -0
- package/dist/prod/util/dragAndDrop/longDragOverHandler.js +2 -0
- package/dist/prod/util/dragAndDrop/longDragOverHandler.js.map +7 -0
- package/dist/prod/util/escapeRegex.js +2 -0
- package/dist/prod/util/escapeRegex.js.map +7 -0
- package/dist/prod/util/formatMessage.js +2 -0
- package/dist/prod/util/formatMessage.js.map +7 -0
- package/dist/prod/util/generateHighlightedMarkup.js +2 -0
- package/dist/prod/util/generateHighlightedMarkup.js.map +7 -0
- package/dist/prod/util/getActiveElement.js +2 -0
- package/dist/prod/util/getActiveElement.js.map +7 -0
- package/dist/prod/util/getClassCopy.js +2 -0
- package/dist/prod/util/getClassCopy.js.map +7 -0
- package/dist/prod/util/getDesigntimePropertyAsArray.js +2 -0
- package/dist/prod/util/getDesigntimePropertyAsArray.js.map +7 -0
- package/dist/prod/util/getEffectiveContentDensity.js +2 -0
- package/dist/prod/util/getEffectiveContentDensity.js.map +7 -0
- package/dist/prod/util/getEffectiveScrollbarStyle.js +2 -0
- package/dist/prod/util/getEffectiveScrollbarStyle.js.map +7 -0
- package/dist/prod/util/getFastNavigationGroups.js +2 -0
- package/dist/prod/util/getFastNavigationGroups.js.map +7 -0
- package/dist/prod/util/getFileExtension.js +2 -0
- package/dist/prod/util/getFileExtension.js.map +7 -0
- package/dist/prod/util/getNormalizedTarget.js +2 -0
- package/dist/prod/util/getNormalizedTarget.js.map +7 -0
- package/dist/prod/util/getParentElement.js +2 -0
- package/dist/prod/util/getParentElement.js.map +7 -0
- package/dist/prod/util/getSingletonElementInstance.js +2 -0
- package/dist/prod/util/getSingletonElementInstance.js.map +7 -0
- package/dist/prod/util/isElementClickable.js +2 -0
- package/dist/prod/util/isElementClickable.js.map +7 -0
- package/dist/prod/util/isElementContainingBlock.js +2 -0
- package/dist/prod/util/isElementContainingBlock.js.map +7 -0
- package/dist/prod/util/isElementHidden.js +2 -0
- package/dist/prod/util/isElementHidden.js.map +7 -0
- package/dist/prod/util/isElementInView.js +2 -0
- package/dist/prod/util/isElementInView.js.map +7 -0
- package/dist/prod/util/isElementTabbable.js +2 -0
- package/dist/prod/util/isElementTabbable.js.map +7 -0
- package/dist/prod/util/isValidPropertyName.js +2 -0
- package/dist/prod/util/isValidPropertyName.js.map +7 -0
- package/dist/prod/util/whenDOMReady.js +2 -0
- package/dist/prod/util/whenDOMReady.js.map +7 -0
- package/dist/prod/util/willShowContent.js +2 -0
- package/dist/prod/util/willShowContent.js.map +7 -0
- package/dist/prod/validateThemeRoot.js +2 -0
- package/dist/prod/validateThemeRoot.js.map +7 -0
- package/dist/renderer/executeTemplate.d.ts +8 -0
- package/dist/renderer/executeTemplate.js +1 -0
- package/dist/renderer/executeTemplate.js.map +1 -1
- package/dist/types/AriaHasPopup.d.ts +32 -0
- package/dist/types/AriaHasPopup.js +34 -0
- package/dist/types/AriaHasPopup.js.map +1 -0
- package/dist/types/AriaLandmarkRole.d.ts +79 -0
- package/dist/types/AriaLandmarkRole.js +81 -0
- package/dist/types/AriaLandmarkRole.js.map +1 -0
- package/dist/types/AriaRole.d.ts +27 -0
- package/dist/types/AriaRole.js +29 -0
- package/dist/types/AriaRole.js.map +1 -0
- package/dist/types/ValueState.d.ts +3 -3
- package/dist/types/ValueState.js +3 -3
- package/dist/types/ValueState.js.map +1 -1
- package/dist/types.d.ts +15 -2
- package/dist/types.js.map +1 -1
- package/dist/util/InvisibleMessage.js +2 -2
- package/dist/util/InvisibleMessage.js.map +1 -1
- package/dist/util/getClassCopy.d.ts +9 -1
- package/package-scripts.cjs +5 -0
- package/package.json +11 -5
- package/.eslintignore +0 -17
- package/.eslintrc.cjs +0 -3
- package/bundle.esm.js +0 -65
- package/dist/StaticArea.d.ts +0 -3
- package/dist/StaticArea.js +0 -7
- package/dist/StaticArea.js.map +0 -1
- package/lib/generate-asset-parameters/index.js +0 -27
- package/lib/generate-styles/index.js +0 -31
- package/lib/generate-version-info/index.js +0 -32
- package/used-modules.txt +0 -14
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// TODO-evo:assert on node throws an error if the assertion is violated
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A simple assertion mechanism that logs a message when a given condition is not met.
|
|
5
|
+
*
|
|
6
|
+
* <b>Note:</b> Calls to this method might be removed when the JavaScript code
|
|
7
|
+
* is optimized during build. Therefore, callers should not rely on any side effects
|
|
8
|
+
* of this method.
|
|
9
|
+
*
|
|
10
|
+
* @function
|
|
11
|
+
* @since 1.58
|
|
12
|
+
* @alias module:sap/base/assert
|
|
13
|
+
* @param {boolean} bResult Result of the checked assertion
|
|
14
|
+
* @param {string|function():any} vMessage Message that will be logged when the result is <code>false</code>.
|
|
15
|
+
* In case this is a function, the return value of the function will be displayed. This can be used to execute
|
|
16
|
+
* complex code only if the assertion fails.
|
|
17
|
+
* @public
|
|
18
|
+
* @SecSink {1|SECRET} Could expose secret data in logs
|
|
19
|
+
*
|
|
20
|
+
*/ /*!
|
|
21
|
+
* OpenUI5
|
|
22
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
23
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
var fnAssert = function (bResult, vMessage) {
|
|
27
|
+
if (!bResult) {
|
|
28
|
+
var sMessage = typeof vMessage === "function" ? vMessage() : vMessage;
|
|
29
|
+
/*eslint-disable no-console */
|
|
30
|
+
console.assert(bResult, sMessage);
|
|
31
|
+
/*eslint-enable no-console */
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
export default fnAssert;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* OpenUI5
|
|
3
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
|
+
*/
|
|
6
|
+
import uid from "../util/uid.js";
|
|
7
|
+
var MemoryConfigurationProvider = function () {
|
|
8
|
+
this.oConfig = Object.create(null);
|
|
9
|
+
this.id = uid();
|
|
10
|
+
};
|
|
11
|
+
MemoryConfigurationProvider.prototype.getId = function () {
|
|
12
|
+
return this.id;
|
|
13
|
+
};
|
|
14
|
+
MemoryConfigurationProvider.prototype.get = function (sName) {
|
|
15
|
+
return this.oConfig[sName];
|
|
16
|
+
};
|
|
17
|
+
MemoryConfigurationProvider.prototype.set = function (sName, vValue) {
|
|
18
|
+
this.oConfig[sName] = vValue;
|
|
19
|
+
};
|
|
20
|
+
export default MemoryConfigurationProvider;
|
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
// validation regexes
|
|
2
|
+
/*!
|
|
3
|
+
* OpenUI5
|
|
4
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
var rBasicUrl = /^(?:([^:\/?#]+):)?((?:[\/\\]{2,}((?:\[[^\]]+\]|[^\/?#:]+))(?::([0-9]+))?)?([^?#]*))(?:\?([^#]*))?(?:#(.*))?$/;
|
|
9
|
+
var rCheckPath = /^([a-z0-9-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*$/i;
|
|
10
|
+
var rCheckQuery = /^([a-z0-9-._~!$&'()*+,;=:@\/?]|%[0-9a-f]{2})*$/i;
|
|
11
|
+
var rCheckFragment = rCheckQuery;
|
|
12
|
+
var rCheckMail = /^([a-z0-9!$'*+:^_`{|}~-]|%[0-9a-f]{2})+(?:\.([a-z0-9!$'*+:^_`{|}~-]|%[0-9a-f]{2})+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
|
|
13
|
+
var rCheckIPv4 = /^([0-9]{1,3}\.){3}[0-9]{1,3}$/;
|
|
14
|
+
var rCheckValidIPv4 = /^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/;
|
|
15
|
+
var rCheckIPv6 = /^\[[^\]]+\]$/;
|
|
16
|
+
var rCheckValidIPv6 = /^\[(((([0-9a-f]{1,4}:){6}|(::([0-9a-f]{1,4}:){5})|(([0-9a-f]{1,4})?::([0-9a-f]{1,4}:){4})|((([0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){3})|((([0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::([0-9a-f]{1,4}:){2})|((([0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:)|((([0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::))(([0-9a-f]{1,4}:[0-9a-f]{1,4})|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])))|((([0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4})|((([0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::))\]$/i;
|
|
17
|
+
var rCheckHostName = /^([a-z0-9]([a-z0-9\-]*[a-z0-9])?\.)*[a-z0-9]([a-z0-9\-]*[a-z0-9])?$/i;
|
|
18
|
+
var rSpecialSchemeURLs = /^((?:ftp|https?|wss?):)([\s\S]+)$/;
|
|
19
|
+
|
|
20
|
+
/* eslint-disable no-control-regex */
|
|
21
|
+
var rCheckWhitespaces = /[\u0009\u000A\u000D]/;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Registry to manage allowed URLs and validate against them.
|
|
25
|
+
*
|
|
26
|
+
* @namespace
|
|
27
|
+
* @since 1.85
|
|
28
|
+
* @alias module:sap/base/security/URLListValidator
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
var oURLListValidator = {};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new URLListValidator.Entry object
|
|
35
|
+
*
|
|
36
|
+
* @param {string} [protocol] The protocol of the URL, can be falsy to allow all protocols for an entry e.g. "", "http", "mailto"
|
|
37
|
+
* @param {string} [host] The host of the URL, can be falsy to allow all hosts. A wildcard asterisk can be set at the beginning, e.g. "examples.com", "*.example.com"
|
|
38
|
+
* @param {string} [port] The port of the URL, can be falsy to allow all ports, e.g. "", "8080"
|
|
39
|
+
* @param {string} [path] the path of the URL, path of the url, can be falsy to allow all paths. A wildcard asterisk can be set at the end, e.g. "/my-example*", "/my-news"
|
|
40
|
+
* @returns {module:sap/base/security/URLListValidator.Entry|object}
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
oURLListValidator._createEntry = function (protocol, host, port, path) {
|
|
44
|
+
return new URLListValidatorEntry(protocol, host, port, path);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Entry object of the URLListValidator.
|
|
49
|
+
*
|
|
50
|
+
* @public
|
|
51
|
+
* @typedef {object} module:sap/base/security/URLListValidator.Entry
|
|
52
|
+
* @property {string} [protocol] The protocol of the URL, can be falsy to allow all protocols for an entry e.g. "", "http", "mailto"
|
|
53
|
+
* @property {string} [host] The host of the URL, can be falsy to allow all hosts. A wildcard asterisk can be set at the beginning, e.g. "examples.com", "*.example.com"
|
|
54
|
+
* @property {string} [port] The port of the URL, can be falsy to allow all ports, e.g. "", "8080"
|
|
55
|
+
* @property {string} [path] the path of the URL, path of the url, can be falsy to allow all paths. A wildcard asterisk can be set at the end, e.g. "/my-example*", "/my-news"
|
|
56
|
+
*/
|
|
57
|
+
function URLListValidatorEntry(protocol, host, port, path) {
|
|
58
|
+
Object.defineProperties(this, {
|
|
59
|
+
protocol: {
|
|
60
|
+
value: protocol && protocol.toUpperCase(),
|
|
61
|
+
enumerable: true
|
|
62
|
+
},
|
|
63
|
+
host: {
|
|
64
|
+
value: host && host.toUpperCase(),
|
|
65
|
+
enumerable: true
|
|
66
|
+
},
|
|
67
|
+
port: {
|
|
68
|
+
value: port,
|
|
69
|
+
enumerable: true
|
|
70
|
+
},
|
|
71
|
+
path: {
|
|
72
|
+
value: path,
|
|
73
|
+
enumerable: true
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The internally managed allowed entries.
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
82
|
+
var aAllowedEntries = [];
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Clears the allowed entries for URL validation.
|
|
86
|
+
* This makes all URLs allowed.
|
|
87
|
+
*
|
|
88
|
+
* @public
|
|
89
|
+
*/
|
|
90
|
+
oURLListValidator.clear = function () {
|
|
91
|
+
aAllowedEntries = [];
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Adds an allowed entry.
|
|
96
|
+
*
|
|
97
|
+
* Note:
|
|
98
|
+
* Adding the first entry to the list of allowed entries will disallow all URLs but the ones matching the newly added entry.
|
|
99
|
+
*
|
|
100
|
+
* <b>Note</b>:
|
|
101
|
+
* It is strongly recommended to set a path only in combination with an origin (never set a path alone).
|
|
102
|
+
* There's almost no case where checking only the path of a URL would allow to ensure its validity.
|
|
103
|
+
*
|
|
104
|
+
* @param {string} [protocol] The protocol of the URL, can be falsy to allow all protocols for an entry e.g. "", "http", "mailto"
|
|
105
|
+
* @param {string} [host] The host of the URL, can be falsy to allow all hosts. A wildcard asterisk can be set at the beginning, e.g. "examples.com", "*.example.com"
|
|
106
|
+
* @param {string} [port] The port of the URL, can be falsy to allow all ports, e.g. "", "8080"
|
|
107
|
+
* @param {string} [path] the path of the URL, path of the url, can be falsy to allow all paths. A wildcard asterisk can be set at the end, e.g. "/my-example*", "/my-news"
|
|
108
|
+
* @public
|
|
109
|
+
*/
|
|
110
|
+
oURLListValidator.add = function (protocol, host, port, path) {
|
|
111
|
+
var oEntry = this._createEntry(protocol, host, port, path);
|
|
112
|
+
aAllowedEntries.push(oEntry);
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Deletes an entry from the allowed entries.
|
|
117
|
+
*
|
|
118
|
+
* Note:
|
|
119
|
+
* Deleting the last entry from the list of allowed entries will allow all URLs.
|
|
120
|
+
*
|
|
121
|
+
* @param {module:sap/base/security/URLListValidator.Entry} oEntry The entry to be deleted
|
|
122
|
+
* @private
|
|
123
|
+
*/
|
|
124
|
+
oURLListValidator._delete = function (oEntry) {
|
|
125
|
+
aAllowedEntries.splice(aAllowedEntries.indexOf(oEntry), 1);
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Gets the list of allowed entries.
|
|
130
|
+
*
|
|
131
|
+
* @returns {module:sap/base/security/URLListValidator.Entry[]} The allowed entries
|
|
132
|
+
* @public
|
|
133
|
+
*/
|
|
134
|
+
oURLListValidator.entries = function () {
|
|
135
|
+
return aAllowedEntries.slice();
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Validates a URL. Check if it's not a script or other security issue.
|
|
140
|
+
*
|
|
141
|
+
* <b>Note</b>:
|
|
142
|
+
* It is strongly recommended to validate only absolute URLs. There's almost no case
|
|
143
|
+
* where checking only the path of a URL would allow to ensure its validity.
|
|
144
|
+
* For compatibility reasons, this API cannot automatically resolve URLs relative to
|
|
145
|
+
* <code>document.baseURI</code>, but callers should do so. In that case, and when the
|
|
146
|
+
* allow list is not empty, an entry for the origin of <code>document.baseURI</code>
|
|
147
|
+
* must be added to the allow list.
|
|
148
|
+
*
|
|
149
|
+
* <h3>Details</h3>
|
|
150
|
+
* Splits the given URL into components and checks for allowed characters according to RFC 3986:
|
|
151
|
+
*
|
|
152
|
+
* <pre>
|
|
153
|
+
* authority = [ userinfo "@" ] host [ ":" port ]
|
|
154
|
+
* userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
|
|
155
|
+
* host = IP-literal / IPv4address / reg-name
|
|
156
|
+
*
|
|
157
|
+
* IP-literal = "[" ( IPv6address / IPvFuture ) "]"
|
|
158
|
+
* IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
|
|
159
|
+
* IPv6address = 6( h16 ":" ) ls32
|
|
160
|
+
* / "::" 5( h16 ":" ) ls32
|
|
161
|
+
* / [ h16 ] "::" 4( h16 ":" ) ls32
|
|
162
|
+
* / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
|
|
163
|
+
* / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
|
|
164
|
+
* / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
|
|
165
|
+
* / [ *4( h16 ":" ) h16 ] "::" ls32
|
|
166
|
+
* / [ *5( h16 ":" ) h16 ] "::" h16
|
|
167
|
+
* / [ *6( h16 ":" ) h16 ] "::"
|
|
168
|
+
* ls32 = ( h16 ":" h16 ) / IPv4address
|
|
169
|
+
* ; least-significant 32 bits of address
|
|
170
|
+
* h16 = 1*4HEXDIG
|
|
171
|
+
* ; 16 bits of address represented in hexadecimal
|
|
172
|
+
*
|
|
173
|
+
* IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet
|
|
174
|
+
* dec-octet = DIGIT ; 0-9
|
|
175
|
+
* / %x31-39 DIGIT ; 10-99
|
|
176
|
+
* / "1" 2DIGIT ; 100-199
|
|
177
|
+
* / "2" %x30-34 DIGIT ; 200-249
|
|
178
|
+
* / "25" %x30-35 ; 250-255
|
|
179
|
+
*
|
|
180
|
+
* reg-name = *( unreserved / pct-encoded / sub-delims )
|
|
181
|
+
*
|
|
182
|
+
* pct-encoded = "%" HEXDIG HEXDIG
|
|
183
|
+
* reserved = gen-delims / sub-delims
|
|
184
|
+
* gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
|
|
185
|
+
* sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
|
|
186
|
+
* / "*" / "+" / "," / ";" / "="
|
|
187
|
+
* unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
|
|
188
|
+
* pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
|
|
189
|
+
*
|
|
190
|
+
* path = path-abempty ; begins with "/" or is empty
|
|
191
|
+
* / path-absolute ; begins with "/" but not "//"
|
|
192
|
+
* / path-noscheme ; begins with a non-colon segment
|
|
193
|
+
* / path-rootless ; begins with a segment
|
|
194
|
+
* / path-empty ; zero characters
|
|
195
|
+
*
|
|
196
|
+
* path-abempty = *( "/" segment )
|
|
197
|
+
* path-absolute = "/" [ segment-nz *( "/" segment ) ]
|
|
198
|
+
* path-noscheme = segment-nz-nc *( "/" segment )
|
|
199
|
+
* path-rootless = segment-nz *( "/" segment )
|
|
200
|
+
* path-empty = 0<pchar>
|
|
201
|
+
* segment = *pchar
|
|
202
|
+
* segment-nz = 1*pchar
|
|
203
|
+
* segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" )
|
|
204
|
+
* ; non-zero-length segment without any colon ":"
|
|
205
|
+
*
|
|
206
|
+
* query = *( pchar / "/" / "?" )
|
|
207
|
+
*
|
|
208
|
+
* fragment = *( pchar / "/" / "?" )
|
|
209
|
+
* </pre>
|
|
210
|
+
*
|
|
211
|
+
* For the hostname component, we are checking for valid DNS hostnames according to RFC 952 / RFC 1123:
|
|
212
|
+
*
|
|
213
|
+
* <pre>
|
|
214
|
+
* hname = name *("." name)
|
|
215
|
+
* name = let-or-digit ( *( let-or-digit-or-hyphen ) let-or-digit )
|
|
216
|
+
* </pre>
|
|
217
|
+
*
|
|
218
|
+
*
|
|
219
|
+
* When the URI uses the protocol 'mailto:', the address part is additionally checked
|
|
220
|
+
* against the most commonly used parts of RFC 6068:
|
|
221
|
+
*
|
|
222
|
+
* <pre>
|
|
223
|
+
* mailtoURI = "mailto:" [ to ] [ hfields ]
|
|
224
|
+
* to = addr-spec *("," addr-spec )
|
|
225
|
+
* hfields = "?" hfield *( "&" hfield )
|
|
226
|
+
* hfield = hfname "=" hfvalue
|
|
227
|
+
* hfname = *qchar
|
|
228
|
+
* hfvalue = *qchar
|
|
229
|
+
* addr-spec = local-part "@" domain
|
|
230
|
+
* local-part = dot-atom-text // not accepted: quoted-string
|
|
231
|
+
* domain = dot-atom-text // not accepted: "[" *dtext-no-obs "]"
|
|
232
|
+
* dtext-no-obs = %d33-90 / ; Printable US-ASCII
|
|
233
|
+
* %d94-126 ; characters not including
|
|
234
|
+
* ; "[", "]", or "\"
|
|
235
|
+
* qchar = unreserved / pct-encoded / some-delims
|
|
236
|
+
* some-delims = "!" / "$" / "'" / "(" / ")" / "*"
|
|
237
|
+
* / "+" / "," / ";" / ":" / "@"
|
|
238
|
+
*
|
|
239
|
+
* Note:
|
|
240
|
+
* A number of characters that can appear in <addr-spec> MUST be
|
|
241
|
+
* percent-encoded. These are the characters that cannot appear in
|
|
242
|
+
* a URI according to [STD66] as well as "%" (because it is used for
|
|
243
|
+
* percent-encoding) and all the characters in gen-delims except "@"
|
|
244
|
+
* and ":" (i.e., "/", "?", "#", "[", and "]"). Of the characters
|
|
245
|
+
* in sub-delims, at least the following also have to be percent-
|
|
246
|
+
* encoded: "&", ";", and "=". Care has to be taken both when
|
|
247
|
+
* encoding as well as when decoding to make sure these operations
|
|
248
|
+
* are applied only once.
|
|
249
|
+
*
|
|
250
|
+
* </pre>
|
|
251
|
+
*
|
|
252
|
+
* When a list of allowed entries has been configured using {@link #add},
|
|
253
|
+
* any URL that passes the syntactic checks above, additionally will be tested against
|
|
254
|
+
* the content of this list.
|
|
255
|
+
*
|
|
256
|
+
* @param {string} sUrl URL to be validated
|
|
257
|
+
* @return {boolean} true if valid, false if not valid
|
|
258
|
+
* @public
|
|
259
|
+
*/
|
|
260
|
+
oURLListValidator.validate = function (sUrl) {
|
|
261
|
+
// Test for not allowed whitespaces
|
|
262
|
+
if (typeof sUrl === "string") {
|
|
263
|
+
if (rCheckWhitespaces.test(sUrl)) {
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// for 'special' URLs without a given base URL, the whatwg spec allows any number of slashes.
|
|
269
|
+
// As the rBasicUrl regular expression cannot handle 'special' URLs, the URL is modified upfront,
|
|
270
|
+
// if it wouldn't be recognized by the regex.
|
|
271
|
+
// See https://url.spec.whatwg.org/#scheme-state (case 2.6.)
|
|
272
|
+
var result = rSpecialSchemeURLs.exec(sUrl);
|
|
273
|
+
if (result && !/^[\/\\]{2}/.test(result[2])) {
|
|
274
|
+
sUrl = result[1] + "//" + result[2];
|
|
275
|
+
}
|
|
276
|
+
result = rBasicUrl.exec(sUrl);
|
|
277
|
+
if (!result) {
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
var sProtocol = result[1],
|
|
281
|
+
sBody = result[2],
|
|
282
|
+
sHost = result[3],
|
|
283
|
+
sPort = result[4],
|
|
284
|
+
sPath = result[5],
|
|
285
|
+
sQuery = result[6],
|
|
286
|
+
sHash = result[7];
|
|
287
|
+
|
|
288
|
+
// protocol
|
|
289
|
+
if (sProtocol) {
|
|
290
|
+
sProtocol = sProtocol.toUpperCase();
|
|
291
|
+
if (aAllowedEntries.length <= 0) {
|
|
292
|
+
// no allowed entries -> check for default protocols
|
|
293
|
+
if (!/^(https?|ftp)/i.test(sProtocol)) {
|
|
294
|
+
return false;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Host -> validity check for IP address or hostname
|
|
300
|
+
if (sHost) {
|
|
301
|
+
if (rCheckIPv4.test(sHost)) {
|
|
302
|
+
if (!rCheckValidIPv4.test(sHost)) {
|
|
303
|
+
//invalid ipv4 address
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
} else if (rCheckIPv6.test(sHost)) {
|
|
307
|
+
if (!rCheckValidIPv6.test(sHost)) {
|
|
308
|
+
//invalid ipv6 address
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
} else if (!rCheckHostName.test(sHost)) {
|
|
312
|
+
// invalid host name
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
sHost = sHost.toUpperCase();
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Path -> split for "/" and check if forbidden characters exist
|
|
319
|
+
if (sPath) {
|
|
320
|
+
if (sProtocol === "MAILTO") {
|
|
321
|
+
var aAddresses = sBody.split(",");
|
|
322
|
+
for (var i = 0; i < aAddresses.length; i++) {
|
|
323
|
+
if (!rCheckMail.test(aAddresses[i])) {
|
|
324
|
+
// forbidden character found
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
} else {
|
|
329
|
+
var aComponents = sPath.split("/");
|
|
330
|
+
for (var i = 0; i < aComponents.length; i++) {
|
|
331
|
+
if (!rCheckPath.test(aComponents[i])) {
|
|
332
|
+
// forbidden character found
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// query
|
|
340
|
+
if (sQuery) {
|
|
341
|
+
if (!rCheckQuery.test(sQuery)) {
|
|
342
|
+
// forbidden character found
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// hash
|
|
348
|
+
if (sHash) {
|
|
349
|
+
if (!rCheckFragment.test(sHash)) {
|
|
350
|
+
// forbidden character found
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
//filter allowed entries
|
|
356
|
+
if (aAllowedEntries.length > 0) {
|
|
357
|
+
var bFound = false;
|
|
358
|
+
for (var i = 0; i < aAllowedEntries.length; i++) {
|
|
359
|
+
if (!sProtocol || !aAllowedEntries[i].protocol || sProtocol == aAllowedEntries[i].protocol) {
|
|
360
|
+
// protocol OK
|
|
361
|
+
var bOk = false;
|
|
362
|
+
if (sHost && aAllowedEntries[i].host && /^\*/.test(aAllowedEntries[i].host)) {
|
|
363
|
+
// check for wildcard search at begin
|
|
364
|
+
if (!aAllowedEntries[i]._hostRegexp) {
|
|
365
|
+
var sHostEscaped = aAllowedEntries[i].host.slice(1).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
|
366
|
+
aAllowedEntries[i]._hostRegexp = RegExp(sHostEscaped + "$");
|
|
367
|
+
}
|
|
368
|
+
var rFilter = aAllowedEntries[i]._hostRegexp;
|
|
369
|
+
if (rFilter.test(sHost)) {
|
|
370
|
+
bOk = true;
|
|
371
|
+
}
|
|
372
|
+
} else if (!sHost || !aAllowedEntries[i].host || sHost == aAllowedEntries[i].host) {
|
|
373
|
+
bOk = true;
|
|
374
|
+
}
|
|
375
|
+
if (bOk) {
|
|
376
|
+
// host OK
|
|
377
|
+
if (!sHost && !sPort || !aAllowedEntries[i].port || sPort == aAllowedEntries[i].port) {
|
|
378
|
+
// port OK
|
|
379
|
+
if (aAllowedEntries[i].path && /\*$/.test(aAllowedEntries[i].path)) {
|
|
380
|
+
// check for wildcard search at end
|
|
381
|
+
if (!aAllowedEntries[i]._pathRegexp) {
|
|
382
|
+
var sPathEscaped = aAllowedEntries[i].path.slice(0, -1).replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
|
383
|
+
aAllowedEntries[i]._pathRegexp = RegExp("^" + sPathEscaped);
|
|
384
|
+
}
|
|
385
|
+
var rFilter = aAllowedEntries[i]._pathRegexp;
|
|
386
|
+
if (rFilter.test(sPath)) {
|
|
387
|
+
bFound = true;
|
|
388
|
+
}
|
|
389
|
+
} else if (!aAllowedEntries[i].path || sPath == aAllowedEntries[i].path) {
|
|
390
|
+
// path OK
|
|
391
|
+
bFound = true;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
if (bFound) {
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
if (!bFound) {
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return true;
|
|
405
|
+
};
|
|
406
|
+
export default oURLListValidator;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* OpenUI5
|
|
3
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
|
+
*/
|
|
6
|
+
import toHex from "../strings/toHex.js";
|
|
7
|
+
/**
|
|
8
|
+
* RegExp and escape function for CSS escaping
|
|
9
|
+
*/
|
|
10
|
+
// eslint-disable-next-line no-control-regex -- special characters are really needed here!
|
|
11
|
+
var rCSS = /[\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xff\u2028\u2029][0-9A-Fa-f]?/g;
|
|
12
|
+
var fnCSS = function (sChar) {
|
|
13
|
+
var iChar = sChar.charCodeAt(0);
|
|
14
|
+
if (sChar.length === 1) {
|
|
15
|
+
return "\\" + toHex(iChar);
|
|
16
|
+
} else {
|
|
17
|
+
return "\\" + toHex(iChar) + " " + sChar.substr(1);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* Encoding according to the Secure Programming Guide
|
|
23
|
+
* <SAPWIKI>/wiki/display/NWCUIAMSIM/XSS+Secure+Programming+Guide
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Encode the string for inclusion into CSS string literals or identifiers.
|
|
28
|
+
*
|
|
29
|
+
* @function
|
|
30
|
+
* @since 1.58
|
|
31
|
+
* @alias module:sap/base/security/encodeCSS
|
|
32
|
+
* @param {string} sString The string to be escaped
|
|
33
|
+
* @returns {string} The encoded string
|
|
34
|
+
* @SecValidate {0|return|XSS} validates the given string for a CSS context
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
var fnEncodeCSS = function (sString) {
|
|
38
|
+
return sString.replace(rCSS, fnCSS);
|
|
39
|
+
};
|
|
40
|
+
export default fnEncodeCSS;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* OpenUI5
|
|
3
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
|
+
*/
|
|
6
|
+
import toHex from "../strings/toHex.js";
|
|
7
|
+
/* eslint-disable no-control-regex -- special characters are really needed here! */
|
|
8
|
+
/**
|
|
9
|
+
* RegExp and escape function for HTML escaping
|
|
10
|
+
*/
|
|
11
|
+
var rHtml = /[\x00-\x2b\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\xff\u2028\u2029]/g,
|
|
12
|
+
rHtmlReplace = /[\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x9f]/,
|
|
13
|
+
mHtmlLookup = {
|
|
14
|
+
"<": "<",
|
|
15
|
+
">": ">",
|
|
16
|
+
"&": "&",
|
|
17
|
+
"\"": """
|
|
18
|
+
};
|
|
19
|
+
/* eslint-enable no-control-regex */
|
|
20
|
+
|
|
21
|
+
var fnHtml = function (sChar) {
|
|
22
|
+
var sEncoded = mHtmlLookup[sChar];
|
|
23
|
+
if (!sEncoded) {
|
|
24
|
+
if (rHtmlReplace.test(sChar)) {
|
|
25
|
+
sEncoded = "�";
|
|
26
|
+
} else {
|
|
27
|
+
sEncoded = "&#x" + toHex(sChar.charCodeAt(0)) + ";";
|
|
28
|
+
}
|
|
29
|
+
mHtmlLookup[sChar] = sEncoded;
|
|
30
|
+
}
|
|
31
|
+
return sEncoded;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* Encoding according to the Secure Programming Guide
|
|
36
|
+
* <SAPWIKI>/wiki/display/NWCUIAMSIM/XSS+Secure+Programming+Guide
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Encode the string for inclusion into XML content/attribute.
|
|
41
|
+
*
|
|
42
|
+
* @function
|
|
43
|
+
* @since 1.58
|
|
44
|
+
* @alias module:sap/base/security/encodeXML
|
|
45
|
+
* @param {string} sString The string to be escaped
|
|
46
|
+
* @returns {string} The encoded string
|
|
47
|
+
* @SecValidate {0|return|XSS} validates the given string for XML contexts
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
50
|
+
var fnEncodeXML = function (sString) {
|
|
51
|
+
return sString.replace(rHtml, fnHtml);
|
|
52
|
+
};
|
|
53
|
+
export default fnEncodeXML;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* OpenUI5
|
|
3
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
|
+
*/
|
|
6
|
+
/*
|
|
7
|
+
* IMPORTANT: This is a private module, its API must not be used and is subject to change.
|
|
8
|
+
* Code other than the OpenUI5 libraries must not introduce dependencies to this module.
|
|
9
|
+
*/
|
|
10
|
+
import assert from "../assert.js";
|
|
11
|
+
import URLListValidator from "./URLListValidator.js";
|
|
12
|
+
import "../../ui/thirdparty/caja-html-sanitizer.js";
|
|
13
|
+
/**
|
|
14
|
+
* Strips unsafe tags and attributes from HTML.
|
|
15
|
+
*
|
|
16
|
+
* @function
|
|
17
|
+
* @since 1.58
|
|
18
|
+
* @alias module:sap/base/security/sanitizeHTML
|
|
19
|
+
* @param {string} sHTML the HTML to be sanitized.
|
|
20
|
+
* @param {object} [mOptions={}] options for the sanitizer
|
|
21
|
+
* @return {string} sanitized HTML
|
|
22
|
+
* @private
|
|
23
|
+
*/
|
|
24
|
+
var fnSanitizeHTML = function (sHTML, mOptions) {
|
|
25
|
+
assert(window.html && window.html.sanitize, "Sanitizer should have been loaded");
|
|
26
|
+
mOptions = mOptions || {
|
|
27
|
+
uriRewriter: function (sUrl) {
|
|
28
|
+
// by default, we use the URLListValidator to check the URLs
|
|
29
|
+
|
|
30
|
+
if (URLListValidator.validate(sUrl)) {
|
|
31
|
+
return sUrl;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var oTagPolicy = mOptions.tagPolicy || window.html.makeTagPolicy(mOptions.uriRewriter, mOptions.tokenPolicy);
|
|
36
|
+
return window.html.sanitizeWithPolicy(sHTML, oTagPolicy);
|
|
37
|
+
};
|
|
38
|
+
export default fnSanitizeHTML;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create hex string and pad to length with zeros.
|
|
3
|
+
* @example
|
|
4
|
+
* sap.ui.require(["sap/base/strings/toHex"], function(toHex){
|
|
5
|
+
* toHex(10, 2); // "0a"
|
|
6
|
+
* toHex(16, 2); // "10"
|
|
7
|
+
* });
|
|
8
|
+
*
|
|
9
|
+
* @function
|
|
10
|
+
* @since 1.58
|
|
11
|
+
* @private
|
|
12
|
+
* @alias module:sap/base/strings/toHex
|
|
13
|
+
* @param {int} iChar UTF-16 character code
|
|
14
|
+
* @param {int} [iLength=0] number of padded zeros
|
|
15
|
+
* @returns {string} padded hex representation of the given character code
|
|
16
|
+
*/ /*!
|
|
17
|
+
* OpenUI5
|
|
18
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
19
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
20
|
+
*/
|
|
21
|
+
/*
|
|
22
|
+
* IMPORTANT: This is a private module, its API must not be used and is subject to change.
|
|
23
|
+
* Code other than the OpenUI5 libraries must not introduce dependencies to this module.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
var fnToHex = function (iChar, iLength) {
|
|
27
|
+
var sHex = iChar.toString(16);
|
|
28
|
+
if (iLength) {
|
|
29
|
+
sHex = sHex.padStart(iLength, '0');
|
|
30
|
+
}
|
|
31
|
+
return sHex;
|
|
32
|
+
};
|
|
33
|
+
export default fnToHex;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// @evo-todo window.performance does not exist on node.js, but there is a module performance-now. Maybe use it
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Returns a high resolution timestamp in microseconds if supported by the environment, otherwise in milliseconds.
|
|
5
|
+
* The timestamp is based on 01/01/1970 00:00:00 (UNIX epoch) as float with microsecond precision or
|
|
6
|
+
* with millisecond precision, if high resolution timestamps are not available.
|
|
7
|
+
* The fractional part of the timestamp represents fractions of a millisecond.
|
|
8
|
+
* Converting to a <code>Date</code> is possible by using <code>require(["sap/base/util/now"], function(now){new Date(now());}</code>
|
|
9
|
+
*
|
|
10
|
+
* @function
|
|
11
|
+
* @since 1.58
|
|
12
|
+
* @public
|
|
13
|
+
* @alias module:sap/base/util/now
|
|
14
|
+
* @returns {float} timestamp in microseconds if supported by the environment otherwise in milliseconds
|
|
15
|
+
*/ /*!
|
|
16
|
+
* OpenUI5
|
|
17
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
18
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
19
|
+
*/
|
|
20
|
+
/*global performance */
|
|
21
|
+
|
|
22
|
+
var fnNow = !(typeof window != "undefined" && window.performance && performance.now && performance.timing) ? Date.now : function () {
|
|
23
|
+
var iNavigationStart = performance.timing.navigationStart;
|
|
24
|
+
return function perfnow() {
|
|
25
|
+
return iNavigationStart + performance.now();
|
|
26
|
+
};
|
|
27
|
+
}();
|
|
28
|
+
export default fnNow;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Some private variable used for creation of (pseudo-)unique IDs.
|
|
3
|
+
* @type int
|
|
4
|
+
* @private
|
|
5
|
+
*/ /*!
|
|
6
|
+
* OpenUI5
|
|
7
|
+
* (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
var iIdCounter = 0;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Creates and returns a pseudo-unique ID.
|
|
15
|
+
*
|
|
16
|
+
* No means for detection of overlap with already present or future UIDs.
|
|
17
|
+
*
|
|
18
|
+
* @function
|
|
19
|
+
* @since 1.58
|
|
20
|
+
* @alias module:sap/base/util/uid
|
|
21
|
+
* @return {string} A pseudo-unique id.
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
var fnUid = function uid() {
|
|
25
|
+
return "id-" + new Date().valueOf() + "-" + iIdCounter++;
|
|
26
|
+
};
|
|
27
|
+
export default fnUid;
|