From cf4eb7db3faa054fcc0b137d81bae997ff4795d0 Mon Sep 17 00:00:00 2001 From: Nayden Naydenov <31909318+nnaydenow@users.noreply.github.com> Date: Wed, 31 Jul 2024 15:23:18 +0300 Subject: [PATCH] chore(framework): features loading (#9586) With this change race condition where feature is loaded while component is defining its dependencies and its handler for feature loading is not attached is handled. --- packages/ai/package.json | 2 +- packages/base/package.json | 2 +- packages/base/src/UI5Element.ts | 6 +++++- packages/compat/package.json | 2 +- packages/fiori/package.json | 2 +- packages/localization/package.json | 2 +- packages/main/package.json | 2 +- yarn.lock | 8 ++++---- 8 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/ai/package.json b/packages/ai/package.json index 609e5ab3b7f8..fdf049504100 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -52,6 +52,6 @@ }, "devDependencies": { "@ui5/webcomponents-tools": "2.1.0-rc.2", - "chromedriver": "^125.0.0" + "chromedriver": "^126.0.0" } } diff --git a/packages/base/package.json b/packages/base/package.json index 1968f9f02515..8a2881051c1e 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -52,7 +52,7 @@ "devDependencies": { "@openui5/sap.ui.core": "1.120.17", "@ui5/webcomponents-tools": "2.1.0-rc.2", - "chromedriver": "^125.0.0", + "chromedriver": "^126.0.0", "clean-css": "^5.2.2", "copy-and-watch": "^0.1.5", "cross-env": "^7.0.3", diff --git a/packages/base/src/UI5Element.ts b/packages/base/src/UI5Element.ts index 306f3e85aac4..b3ce55d182e7 100644 --- a/packages/base/src/UI5Element.ts +++ b/packages/base/src/UI5Element.ts @@ -37,7 +37,7 @@ import type { } from "./types.js"; import { attachFormElementInternals, setFormValue } from "./features/InputElementsFormSupport.js"; import type { IFormInputElement } from "./features/InputElementsFormSupport.js"; -import { subscribeForFeatureLoad } from "./FeaturesRegistry.js"; +import { getComponentFeature, subscribeForFeatureLoad } from "./FeaturesRegistry.js"; const DEV_MODE = true; let autoId = 0; @@ -1220,6 +1220,10 @@ abstract class UI5Element extends HTMLElement { const features = this.getMetadata().getFeatures(); features.forEach(feature => { + if (getComponentFeature(feature)) { + this.cacheUniqueDependencies(); + } + subscribeForFeatureLoad(feature, this, this.cacheUniqueDependencies.bind(this)); }); diff --git a/packages/compat/package.json b/packages/compat/package.json index 7e0c5d1f84bb..728d24d33f2c 100644 --- a/packages/compat/package.json +++ b/packages/compat/package.json @@ -52,6 +52,6 @@ }, "devDependencies": { "@ui5/webcomponents-tools": "2.1.0-rc.2", - "chromedriver": "^125.0.0" + "chromedriver": "^126.0.0" } } diff --git a/packages/fiori/package.json b/packages/fiori/package.json index ac3857f72e8d..debe934166fa 100644 --- a/packages/fiori/package.json +++ b/packages/fiori/package.json @@ -54,6 +54,6 @@ }, "devDependencies": { "@ui5/webcomponents-tools": "2.1.0-rc.2", - "chromedriver": "^125.0.0" + "chromedriver": "^126.0.0" } } diff --git a/packages/localization/package.json b/packages/localization/package.json index 0b78aa2975b1..28f8e54e4772 100644 --- a/packages/localization/package.json +++ b/packages/localization/package.json @@ -35,7 +35,7 @@ "@openui5/sap.ui.core": "1.120.17", "@ui5/webcomponents-tools": "2.1.0-rc.2", "babel-plugin-amd-to-esm": "^2.0.3", - "chromedriver": "^125.0.0", + "chromedriver": "^126.0.0", "estree-walk": "^2.2.0", "mkdirp": "^1.0.4", "resolve": "^1.20.0" diff --git a/packages/main/package.json b/packages/main/package.json index 611e9e0d09aa..f7459cc6a9c6 100644 --- a/packages/main/package.json +++ b/packages/main/package.json @@ -59,6 +59,6 @@ }, "devDependencies": { "@ui5/webcomponents-tools": "2.1.0-rc.2", - "chromedriver": "^125.0.0" + "chromedriver": "^126.0.0" } } diff --git a/yarn.lock b/yarn.lock index 777180da2e64..2db8de7ec20b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6094,10 +6094,10 @@ chrome-trace-event@^1.0.2: resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -chromedriver@^125.0.0: - version "125.0.0" - resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-125.0.0.tgz#1fed0351865bf45a3417cbdac45e2dc4257cb876" - integrity sha512-wWXrxWLWqXRTmRZDtPigs+ys44srlpHTpsL7MHnZc9iaE1oIB0hslSVeem6TcsEb1Ou8nvPx3vs5bPwCI6+VHg== +chromedriver@^126.0.0: + version "126.0.5" + resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-126.0.5.tgz#5db6f463c7557e3a76b7fe7fb73aaf2f06fd07e6" + integrity sha512-xXVxwxd8CJ6yg2KEvFqLQi7V0RvF78xFnLB+xo9g9MoJNHMQccD7b4OWaxtKDy5RXrMgQ6Jb6vUN3SjTYXHLEQ== dependencies: "@testim/chrome-version" "^1.1.4" axios "^1.6.7"