From 2170ece6e02ebd157fb42228911b5c0fa1ec9d67 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Mon, 9 Mar 2026 21:56:16 +0800 Subject: [PATCH 01/32] - clean --- .changeset/config.json | 1 - .typos.toml | 1 - packages/repl/package.json | 7 +- packages/repl/src/App.tsx | 6 +- packages/repl/src/bundler/css-processor.ts | 8 +- packages/repl/src/bundler/template-builder.ts | 7 +- packages/repl/src/components/LynxPreview.tsx | 6 +- packages/repl/src/components/PreviewPane.tsx | 2 +- packages/repl/src/index.tsx | 5 +- packages/rspeedy/upgrade-rspeedy/package.json | 2 +- .../offscreen-document/CHANGELOG.md | 72 - .../offscreen-document/Notice.txt | 1 - .../web-platform/offscreen-document/README.md | 3 - .../offscreen-document/package.json | 41 - .../offscreen-document/src/index.ts | 6 - .../offscreen-document/src/main/index.ts | 4 - .../src/main/initOffscreenDocument.ts | 247 --- .../src/types/ElementOperation.ts | 137 -- .../offscreen-document/src/types/index.ts | 4 - .../webworker/OffscreenCSSStyleDeclaration.ts | 54 - .../src/webworker/OffscreenDocument.ts | 128 -- .../src/webworker/OffscreenElement.ts | 296 --- .../src/webworker/OffscreenEvent.ts | 34 - .../offscreen-document/src/webworker/index.ts | 15 - .../offscreen-document/tsconfig.json | 12 - packages/web-platform/tsconfig.json | 5 - .../web-platform/web-constants/CHANGELOG.md | 930 --------- .../web-platform/web-constants/LICENSE.txt | 202 -- .../web-platform/web-constants/Notice.txt | 1 - packages/web-platform/web-constants/README.md | 9 - .../web-platform/web-constants/package.json | 31 - .../web-constants/src/constants.ts | 48 - .../web-constants/src/endpoints.ts | 267 --- .../web-constants/src/eventName.ts | 34 - .../web-platform/web-constants/src/index.ts | 10 - .../src/types/BackThreadStartConfigs.ts | 18 - .../web-constants/src/types/Cloneable.ts | 14 - .../web-constants/src/types/Element.ts | 49 - .../web-constants/src/types/EventType.ts | 72 - .../src/types/FlushElementTreeOptions.ts | 5 - .../web-constants/src/types/I18n.ts | 50 - .../web-constants/src/types/JSRealm.ts | 5 - .../src/types/LynxContextEventTarget.ts | 38 - .../web-constants/src/types/LynxModule.ts | 87 - .../src/types/MainThreadGlobalThis.ts | 439 ---- .../web-constants/src/types/MainThreadLynx.ts | 16 - .../src/types/MainThreadStartConfigs.ts | 21 - .../web-constants/src/types/MarkTiming.ts | 15 - .../web-constants/src/types/NapiModules.ts | 21 - .../web-constants/src/types/NativeApp.ts | 237 --- .../web-constants/src/types/NativeModules.ts | 11 - .../web-constants/src/types/PageConfig.ts | 16 - .../web-constants/src/types/Performance.ts | 33 - .../src/types/ProcessDataCallback.ts | 4 - .../web-constants/src/types/SSR.ts | 25 - .../web-constants/src/types/StyleInfo.ts | 36 - .../web-constants/src/types/TemplateLoader.ts | 3 - .../src/types/UpdateDataOptions.ts | 9 - .../web-constants/src/types/index.ts | 23 - .../src/utils/LynxCrossThreadContext.ts | 38 - .../src/utils/generateTemplate.ts | 114 -- .../web-constants/src/utils/index.ts | 7 - .../web-constants/src/utils/markTiming.ts | 41 - .../web-platform/web-constants/tsconfig.json | 14 - .../web-platform/web-core-server/.gitignore | 3 - .../web-platform/web-core-server/CHANGELOG.md | 235 --- .../web-platform/web-core-server/package.json | 38 - .../web-core-server/rslib.config.ts | 40 - .../web-core-server/src/createLynxView.ts | 275 --- .../web-core-server/src/dumpHTMLString.ts | 82 - .../web-platform/web-core-server/src/index.ts | 12 - .../web-core-server/src/utils/escapeHtml.ts | 73 - .../web-core-server/src/utils/loadTemplate.ts | 41 - .../web-core-server/tsconfig.json | 19 - .../web-platform/web-core-server/turbo.json | 18 - .../ts/client/mainthread/LynxView.ts | 21 - packages/web-platform/web-core/CHANGELOG.md | 1757 ----------------- packages/web-platform/web-core/LICENSE.txt | 202 -- packages/web-platform/web-core/Notice.txt | 1 - packages/web-platform/web-core/README.md | 37 - packages/web-platform/web-core/index.css | 25 - packages/web-platform/web-core/package.json | 41 - .../web-core/src/apis/LynxView.ts | 542 ----- .../web-core/src/apis/createLynxView.ts | 95 - packages/web-platform/web-core/src/index.ts | 6 - .../web-core/src/types/UpdatePageCallback.ts | 10 - .../web-core/src/uiThread/bootWorkers.ts | 140 -- .../src/uiThread/createRenderAllOnUI.ts | 220 --- .../src/uiThread/createRenderMultiThread.ts | 40 - .../crossThreadHandlers/createDispose.ts | 20 - .../createExposureMonitor.ts | 173 -- .../crossThreadHandlers/createUpdateData.ts | 19 - .../crossThreadHandlers/queryNodes.ts | 84 - .../registerDispatchLynxViewEventHandler.ts | 15 - .../registerFlushElementTreeHandler.ts | 31 - .../registerGetPathInfoHandler.ts | 98 - .../registerInvokeUIMethodHandler.ts | 79 - .../registerNapiModulesCallHandler.ts | 32 - .../registerNativeModulesCallHandler.ts | 18 - .../registerReloadHandler.ts | 16 - .../registerReportErrorHandler.ts | 18 - .../registerSelectComponentHandler.ts | 39 - .../registerSetNativePropsHandler.ts | 57 - .../registerTriggerComponentEventHandler.ts | 31 - ...sterTriggerElementMethodEndpointHandler.ts | 54 - .../web-core/src/uiThread/startBackground.ts | 88 - .../web-core/src/uiThread/startUIThread.ts | 119 -- .../web-core/src/utils/browser.ts | 7 - .../web-core/src/utils/convertLengthToPx.ts | 27 - .../src/utils/dispatchLynxViewEvent.ts | 16 - .../web-core/src/utils/loadTemplate.ts | 56 - packages/web-platform/web-core/tsconfig.json | 20 - packages/web-platform/web-explorer/index.ts | 5 +- .../web-platform/web-explorer/package.json | 2 +- .../web-mainthread-apis/.gitignore | 2 - .../web-mainthread-apis/CHANGELOG.md | 918 --------- .../web-mainthread-apis/Cargo.toml | 12 - .../web-mainthread-apis/LICENSE.txt | 202 -- .../web-mainthread-apis/Notice.txt | 1 - .../web-mainthread-apis/README.md | 3 - .../web-mainthread-apis/package.json | 40 - .../web-mainthread-apis/scripts/build.js | 86 - .../scripts/dotslash-config.json | 28 - .../web-mainthread-apis/scripts/wasm-bindgen | 102 - .../web-mainthread-apis/src/lib.rs | 1 - .../src/style/inline_style_parser/LICENSE | 19 - .../char_code_definitions.rs | 198 -- .../src/style/inline_style_parser/mod.rs | 1243 ------------ .../inline_style_parser/parse_inline_style.rs | 156 -- .../src/style/inline_style_parser/tokenize.rs | 581 ------ .../src/style/inline_style_parser/types.rs | 29 - .../src/style/inline_style_parser/utils.rs | 203 -- .../web-mainthread-apis/src/style/mod.rs | 47 - .../src/style/transformer/mod.rs | 2 - .../src/style/transformer/rules.rs | 316 --- .../src/style/transformer/transform.rs | 397 ---- .../ts/createMainThreadGlobalThis.ts | 1031 ---------- .../ts/createMainThreadLynx.ts | 38 - .../createQueryComponent.ts | 85 - .../registerCallLepusMethodHandler.ts | 20 - .../registerGetCustomSectionHandler.ts | 20 - .../web-mainthread-apis/ts/index.ts | 6 - .../ts/prepareMainThreadAPIs.ts | 272 --- .../ts/pureElementPAPIs.ts | 386 ---- .../ts/style/cssPropertyMap.ts | 261 --- .../ts/style/transformInlineStyle.ts | 8 - .../ts/utils/createCrossThreadEvent.ts | 122 -- .../ts/utils/createExposureService.ts | 79 - .../ts/utils/decodeCssOG.ts | 31 - .../ts/utils/processStyleInfo.ts | 333 ---- .../web-mainthread-apis/ts/utils/tokenizer.ts | 33 - .../web-mainthread-apis/tsconfig.json | 15 - .../web-mainthread-apis/turbo.json | 21 - .../web-mainthread-apis/wasm/index.d.ts | 3 - .../web-mainthread-apis/wasm/index.js | 26 - .../web-mainthread-apis/wasm/legacy.js | 1 - .../web-mainthread-apis/wasm/standard.d.ts | 9 - .../web-mainthread-apis/wasm/standard.js | 1 - .../web-rsbuild-plugin/package.json | 4 +- .../tests/fixtures/index.ts | 3 +- .../package.json | 2 +- .../src/web/index.ts | 6 +- .../tsconfig.json | 1 - packages/web-platform/web-tests/package.json | 8 +- packages/web-platform/web-tests/server.js | 36 +- .../web-tests/shell-project/fp-only.ts | 1 - .../web-tests/shell-project/index.ts | 31 +- .../web-tests/shell-project/lynx-view.ts | 5 +- .../web-tests/shell-project/web-core.ts | 5 +- packages/web-platform/web-tests/tsconfig.json | 1 - .../web-worker-runtime/CHANGELOG.md | 966 --------- .../web-worker-runtime/LICENSE.txt | 202 -- .../web-worker-runtime/Notice.txt | 1 - .../web-platform/web-worker-runtime/README.md | 1 - .../web-worker-runtime/package.json | 36 - .../background-apis/createBackgroundLynx.ts | 65 - .../background-apis/createChunkLoading.ts | 177 -- .../background-apis/createElement.ts | 29 - .../background-apis/createNapiLoader.ts | 45 - .../background-apis/createNativeApp.ts | 157 -- .../background-apis/createNativeModules.ts | 64 - .../background-apis/createPerformanceApis.ts | 67 - .../background-apis/createTimingSystem.ts | 126 -- .../createGetCustomSection.ts | 25 - .../crossThreadHandlers/createGetPathInfo.ts | 35 - .../createInvokeUIMethod.ts | 37 - .../createJSObjectDestructionObserver.ts | 18 - .../registerDisposeHandler.ts | 19 - .../registerGlobalExposureEventHandler.ts | 30 - .../registerPublicComponentEventHandler.ts | 19 - .../registerPublishEventHandler.ts | 19 - .../registerSendGlobalEvent.ts | 17 - .../registerUpdateDataHandler.ts | 19 - .../registerUpdateGlobalPropsHandler.ts | 19 - .../registerUpdateI18nResource.ts | 28 - .../background-apis/startBackgroundThread.ts | 76 - .../src/backgroundThread/index.ts | 8 - .../web-worker-runtime/src/global.d.ts | 7 - .../web-worker-runtime/src/index.ts | 34 - .../createMainthreadMarkTimingInternal.ts | 38 - .../registerUpdateDataHandler.ts | 17 - .../src/mainThread/index.ts | 5 - .../src/mainThread/startMainThread.ts | 132 -- .../web-worker-runtime/tsconfig.json | 16 - pnpm-lock.yaml | 230 +-- 205 files changed, 89 insertions(+), 19379 deletions(-) delete mode 100644 packages/web-platform/offscreen-document/CHANGELOG.md delete mode 100644 packages/web-platform/offscreen-document/Notice.txt delete mode 100644 packages/web-platform/offscreen-document/README.md delete mode 100644 packages/web-platform/offscreen-document/package.json delete mode 100644 packages/web-platform/offscreen-document/src/index.ts delete mode 100644 packages/web-platform/offscreen-document/src/main/index.ts delete mode 100644 packages/web-platform/offscreen-document/src/main/initOffscreenDocument.ts delete mode 100644 packages/web-platform/offscreen-document/src/types/ElementOperation.ts delete mode 100644 packages/web-platform/offscreen-document/src/types/index.ts delete mode 100644 packages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.ts delete mode 100644 packages/web-platform/offscreen-document/src/webworker/OffscreenDocument.ts delete mode 100644 packages/web-platform/offscreen-document/src/webworker/OffscreenElement.ts delete mode 100644 packages/web-platform/offscreen-document/src/webworker/OffscreenEvent.ts delete mode 100644 packages/web-platform/offscreen-document/src/webworker/index.ts delete mode 100644 packages/web-platform/offscreen-document/tsconfig.json delete mode 100644 packages/web-platform/web-constants/CHANGELOG.md delete mode 100644 packages/web-platform/web-constants/LICENSE.txt delete mode 100644 packages/web-platform/web-constants/Notice.txt delete mode 100644 packages/web-platform/web-constants/README.md delete mode 100644 packages/web-platform/web-constants/package.json delete mode 100644 packages/web-platform/web-constants/src/constants.ts delete mode 100644 packages/web-platform/web-constants/src/endpoints.ts delete mode 100644 packages/web-platform/web-constants/src/eventName.ts delete mode 100644 packages/web-platform/web-constants/src/index.ts delete mode 100644 packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts delete mode 100644 packages/web-platform/web-constants/src/types/Cloneable.ts delete mode 100644 packages/web-platform/web-constants/src/types/Element.ts delete mode 100644 packages/web-platform/web-constants/src/types/EventType.ts delete mode 100644 packages/web-platform/web-constants/src/types/FlushElementTreeOptions.ts delete mode 100644 packages/web-platform/web-constants/src/types/I18n.ts delete mode 100644 packages/web-platform/web-constants/src/types/JSRealm.ts delete mode 100644 packages/web-platform/web-constants/src/types/LynxContextEventTarget.ts delete mode 100644 packages/web-platform/web-constants/src/types/LynxModule.ts delete mode 100644 packages/web-platform/web-constants/src/types/MainThreadGlobalThis.ts delete mode 100644 packages/web-platform/web-constants/src/types/MainThreadLynx.ts delete mode 100644 packages/web-platform/web-constants/src/types/MainThreadStartConfigs.ts delete mode 100644 packages/web-platform/web-constants/src/types/MarkTiming.ts delete mode 100644 packages/web-platform/web-constants/src/types/NapiModules.ts delete mode 100644 packages/web-platform/web-constants/src/types/NativeApp.ts delete mode 100644 packages/web-platform/web-constants/src/types/NativeModules.ts delete mode 100644 packages/web-platform/web-constants/src/types/PageConfig.ts delete mode 100644 packages/web-platform/web-constants/src/types/Performance.ts delete mode 100644 packages/web-platform/web-constants/src/types/ProcessDataCallback.ts delete mode 100644 packages/web-platform/web-constants/src/types/SSR.ts delete mode 100644 packages/web-platform/web-constants/src/types/StyleInfo.ts delete mode 100644 packages/web-platform/web-constants/src/types/TemplateLoader.ts delete mode 100644 packages/web-platform/web-constants/src/types/UpdateDataOptions.ts delete mode 100644 packages/web-platform/web-constants/src/types/index.ts delete mode 100644 packages/web-platform/web-constants/src/utils/LynxCrossThreadContext.ts delete mode 100644 packages/web-platform/web-constants/src/utils/generateTemplate.ts delete mode 100644 packages/web-platform/web-constants/src/utils/index.ts delete mode 100644 packages/web-platform/web-constants/src/utils/markTiming.ts delete mode 100644 packages/web-platform/web-constants/tsconfig.json delete mode 100644 packages/web-platform/web-core-server/.gitignore delete mode 100644 packages/web-platform/web-core-server/CHANGELOG.md delete mode 100644 packages/web-platform/web-core-server/package.json delete mode 100644 packages/web-platform/web-core-server/rslib.config.ts delete mode 100644 packages/web-platform/web-core-server/src/createLynxView.ts delete mode 100644 packages/web-platform/web-core-server/src/dumpHTMLString.ts delete mode 100644 packages/web-platform/web-core-server/src/index.ts delete mode 100644 packages/web-platform/web-core-server/src/utils/escapeHtml.ts delete mode 100644 packages/web-platform/web-core-server/src/utils/loadTemplate.ts delete mode 100644 packages/web-platform/web-core-server/tsconfig.json delete mode 100644 packages/web-platform/web-core-server/turbo.json delete mode 100644 packages/web-platform/web-core/CHANGELOG.md delete mode 100644 packages/web-platform/web-core/LICENSE.txt delete mode 100644 packages/web-platform/web-core/Notice.txt delete mode 100644 packages/web-platform/web-core/README.md delete mode 100644 packages/web-platform/web-core/index.css delete mode 100644 packages/web-platform/web-core/package.json delete mode 100644 packages/web-platform/web-core/src/apis/LynxView.ts delete mode 100644 packages/web-platform/web-core/src/apis/createLynxView.ts delete mode 100644 packages/web-platform/web-core/src/index.ts delete mode 100644 packages/web-platform/web-core/src/types/UpdatePageCallback.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/bootWorkers.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/createRenderAllOnUI.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/createRenderMultiThread.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createDispose.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createExposureMonitor.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createUpdateData.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/queryNodes.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerDispatchLynxViewEventHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerFlushElementTreeHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerGetPathInfoHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerInvokeUIMethodHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerNapiModulesCallHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerNativeModulesCallHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerReloadHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerReportErrorHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerSelectComponentHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerSetNativePropsHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerTriggerComponentEventHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/startBackground.ts delete mode 100644 packages/web-platform/web-core/src/uiThread/startUIThread.ts delete mode 100644 packages/web-platform/web-core/src/utils/browser.ts delete mode 100644 packages/web-platform/web-core/src/utils/convertLengthToPx.ts delete mode 100644 packages/web-platform/web-core/src/utils/dispatchLynxViewEvent.ts delete mode 100644 packages/web-platform/web-core/src/utils/loadTemplate.ts delete mode 100644 packages/web-platform/web-core/tsconfig.json delete mode 100644 packages/web-platform/web-mainthread-apis/.gitignore delete mode 100644 packages/web-platform/web-mainthread-apis/CHANGELOG.md delete mode 100644 packages/web-platform/web-mainthread-apis/Cargo.toml delete mode 100644 packages/web-platform/web-mainthread-apis/LICENSE.txt delete mode 100644 packages/web-platform/web-mainthread-apis/Notice.txt delete mode 100644 packages/web-platform/web-mainthread-apis/README.md delete mode 100644 packages/web-platform/web-mainthread-apis/package.json delete mode 100644 packages/web-platform/web-mainthread-apis/scripts/build.js delete mode 100644 packages/web-platform/web-mainthread-apis/scripts/dotslash-config.json delete mode 100755 packages/web-platform/web-mainthread-apis/scripts/wasm-bindgen delete mode 100644 packages/web-platform/web-mainthread-apis/src/lib.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/LICENSE delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/char_code_definitions.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/mod.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/parse_inline_style.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/tokenize.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/types.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/utils.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/mod.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/transformer/mod.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/transformer/rules.rs delete mode 100644 packages/web-platform/web-mainthread-apis/src/style/transformer/transform.rs delete mode 100644 packages/web-platform/web-mainthread-apis/ts/createMainThreadGlobalThis.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/createMainThreadLynx.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/createQueryComponent.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/registerCallLepusMethodHandler.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/registerGetCustomSectionHandler.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/index.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/prepareMainThreadAPIs.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/pureElementPAPIs.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/style/cssPropertyMap.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/style/transformInlineStyle.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/utils/createCrossThreadEvent.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/utils/createExposureService.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/utils/decodeCssOG.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/utils/processStyleInfo.ts delete mode 100644 packages/web-platform/web-mainthread-apis/ts/utils/tokenizer.ts delete mode 100644 packages/web-platform/web-mainthread-apis/tsconfig.json delete mode 100644 packages/web-platform/web-mainthread-apis/turbo.json delete mode 100644 packages/web-platform/web-mainthread-apis/wasm/index.d.ts delete mode 100644 packages/web-platform/web-mainthread-apis/wasm/index.js delete mode 100644 packages/web-platform/web-mainthread-apis/wasm/legacy.js delete mode 100644 packages/web-platform/web-mainthread-apis/wasm/standard.d.ts delete mode 100644 packages/web-platform/web-mainthread-apis/wasm/standard.js delete mode 100644 packages/web-platform/web-worker-runtime/CHANGELOG.md delete mode 100644 packages/web-platform/web-worker-runtime/LICENSE.txt delete mode 100644 packages/web-platform/web-worker-runtime/Notice.txt delete mode 100644 packages/web-platform/web-worker-runtime/README.md delete mode 100644 packages/web-platform/web-worker-runtime/package.json delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createBackgroundLynx.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createChunkLoading.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createElement.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNapiLoader.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeModules.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createPerformanceApis.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createTimingSystem.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createGetCustomSection.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createGetPathInfo.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createInvokeUIMethod.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerDisposeHandler.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerGlobalExposureEventHandler.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerPublishEventHandler.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/startBackgroundThread.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/backgroundThread/index.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/global.d.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/index.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/mainThread/crossThreadHandlers/createMainthreadMarkTimingInternal.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/mainThread/crossThreadHandlers/registerUpdateDataHandler.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/mainThread/index.ts delete mode 100644 packages/web-platform/web-worker-runtime/src/mainThread/startMainThread.ts delete mode 100644 packages/web-platform/web-worker-runtime/tsconfig.json diff --git a/.changeset/config.json b/.changeset/config.json index 5cc58f98a6..8e4a53dd49 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -9,7 +9,6 @@ "commit": false, "fixed": [ [ - "@lynx-js/web-core", "@lynx-js/web-core-server", "@lynx-js/web-constants", "@lynx-js/web-mainthread-apis", diff --git a/.typos.toml b/.typos.toml index dd9d79bff9..5db44d85e8 100644 --- a/.typos.toml +++ b/.typos.toml @@ -14,7 +14,6 @@ extend-exclude = [ "packages/web-platform/web-tests/tests/react.spec.ts-snapshots/*", "packages/web-platform/web-tests/tests/react.spec.ts", "packages/web-platform/web-tests/tests/react/basic-element-x-overlay-ng-playground-test/index.jsx", - "packages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.ts", ] [default] diff --git a/packages/repl/package.json b/packages/repl/package.json index b465ca3ffc..b84b4912b7 100644 --- a/packages/repl/package.json +++ b/packages/repl/package.json @@ -27,13 +27,8 @@ "@lynx-js/lynx-core": "0.1.3", "@lynx-js/type-element-api": "0.0.3", "@lynx-js/types": "3.7.0", - "@lynx-js/web-constants": "workspace:*", - "@lynx-js/web-core": "workspace:*", - "@lynx-js/web-elements": "workspace:*", - "@lynx-js/web-mainthread-apis": "workspace:*", + "@lynx-js/web-core-wasm": "workspace:*", "@lynx-js/web-platform-rsbuild-plugin": "workspace:*", - "@lynx-js/web-worker-rpc": "workspace:*", - "@lynx-js/web-worker-runtime": "workspace:*", "@rsbuild/core": "catalog:rsbuild", "@rsbuild/plugin-react": "^1.4.5", "@tailwindcss/postcss": "^4.2.1", diff --git a/packages/repl/src/App.tsx b/packages/repl/src/App.tsx index ebba5717b3..7d5349c8c1 100644 --- a/packages/repl/src/App.tsx +++ b/packages/repl/src/App.tsx @@ -3,8 +3,6 @@ // LICENSE file in the root directory of this source tree. import { useCallback, useEffect, useRef, useState } from 'react'; -import type { LynxTemplate } from '@lynx-js/web-constants'; - import { buildLynxTemplate } from './bundler/template-builder.js'; import { EditorPane } from './components/EditorPane.js'; import type { EditorPaneHandle } from './components/EditorPane.js'; @@ -89,7 +87,9 @@ export function App() { initial.sampleIndex, ); const [timingText, setTimingText] = useState(''); - const [template, setTemplate] = useState(null); + const [template, setTemplate] = useState | null>( + null, + ); const pendingTimingRef = useRef< | { css: number | null; assemble: number; t0: number; buildEnd: number } | null diff --git a/packages/repl/src/bundler/css-processor.ts b/packages/repl/src/bundler/css-processor.ts index 42f27bc96e..e1c44b908e 100644 --- a/packages/repl/src/bundler/css-processor.ts +++ b/packages/repl/src/bundler/css-processor.ts @@ -4,8 +4,6 @@ import * as csstree from 'css-tree'; -import type { CSSRule, OneInfo, StyleInfo } from '@lynx-js/web-constants'; - // --- Simplified parse (adapted from css-serializer/parse.ts) --- interface Declaration { @@ -260,7 +258,7 @@ function parseCSS(content: string): LynxStyleNode[] { function genStyleInfo( cssMap: Record, -): StyleInfo { +): unknown { return Object.fromEntries( Object.entries(cssMap).map(([cssId, nodes]) => { const contentsAtom: string[] = []; @@ -297,7 +295,7 @@ function genStyleInfo( const selectors = ((ast.children.first as csstree.Rule) .prelude as csstree.SelectorList).children .toArray() as csstree.Selector[]; - const groupedSelectors: CSSRule['sel'] = []; + const groupedSelectors: unknown[] = []; for (const selectorList of selectors) { let plainSelectors: string[] = []; let pseudoClassSelectors: string[] = []; @@ -356,7 +354,7 @@ function genStyleInfo( }); } } - const info: OneInfo = { + const info: unknown = { content: [contentsAtom.join('\n')], rules, }; diff --git a/packages/repl/src/bundler/template-builder.ts b/packages/repl/src/bundler/template-builder.ts index c6b9efd4e4..ada898f804 100644 --- a/packages/repl/src/bundler/template-builder.ts +++ b/packages/repl/src/bundler/template-builder.ts @@ -1,5 +1,4 @@ /* eslint-disable headers/header-format */ -import type { LynxTemplate, StyleInfo } from '@lynx-js/web-constants'; import { processCSS } from './css-processor.js'; import { getConsoleWrapperCode } from '../console/console-wrapper.js'; @@ -27,7 +26,7 @@ export function buildLynxTemplate( css: string, sessionId: string, ): { - template: LynxTemplate; + template: unknown; timing: { 'css-serializer': number | null; assemble: number }; } { const mainThreadWithFallback = `${mainThread} @@ -43,7 +42,7 @@ if (typeof globalThis.renderPage !== 'function') { + getBackgroundLifecycleCode() + background; - let styleInfo: StyleInfo = {}; + let styleInfo: unknown = {}; let cssSerializerTime: number | null = null; if (css.trim()) { const t = performance.now(); @@ -52,7 +51,7 @@ if (typeof globalThis.renderPage !== 'function') { } const assembleStart = performance.now(); - const template: LynxTemplate = { + const template: unknown = { lepusCode: { root: mainThreadCode }, manifest: { '/app-service.js': backgroundCode }, styleInfo, diff --git a/packages/repl/src/components/LynxPreview.tsx b/packages/repl/src/components/LynxPreview.tsx index bf7268051c..d6af8316a1 100644 --- a/packages/repl/src/components/LynxPreview.tsx +++ b/packages/repl/src/components/LynxPreview.tsx @@ -1,7 +1,9 @@ /* eslint-disable headers/header-format, sort-imports, import/order, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, n/no-unsupported-features/node-builtins, @typescript-eslint/prefer-nullish-coalescing */ import { useRef, useEffect, useState, useCallback } from 'react'; -import type { LynxTemplate } from '@lynx-js/web-constants'; -import type { LynxView } from '@lynx-js/web-core'; +import type { + LynxViewElement as LynxView, + LynxTemplate, +} from '@lynx-js/web-core-wasm/client'; let renderCounter = 0; diff --git a/packages/repl/src/components/PreviewPane.tsx b/packages/repl/src/components/PreviewPane.tsx index 1d60bdf3c1..d162b2da3f 100644 --- a/packages/repl/src/components/PreviewPane.tsx +++ b/packages/repl/src/components/PreviewPane.tsx @@ -1,6 +1,6 @@ /* eslint-disable headers/header-format, sort-imports, import/order, n/file-extension-in-import */ import { RotateCw } from 'lucide-react'; -import type { LynxTemplate } from '@lynx-js/web-constants'; +import type { LynxTemplate } from '@lynx-js/web-core-wasm/client'; import { LynxPreview } from './LynxPreview'; import { ConsolePanel } from './ConsolePanel'; import { diff --git a/packages/repl/src/index.tsx b/packages/repl/src/index.tsx index 7dfc43e122..a2e85c1f30 100644 --- a/packages/repl/src/index.tsx +++ b/packages/repl/src/index.tsx @@ -2,10 +2,7 @@ // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. -import '@lynx-js/web-core'; -import '@lynx-js/web-core/index.css'; -import '@lynx-js/web-elements/index.css'; -import '@lynx-js/web-elements/all'; +import '@lynx-js/web-core-wasm/client'; import './globals.css'; diff --git a/packages/rspeedy/upgrade-rspeedy/package.json b/packages/rspeedy/upgrade-rspeedy/package.json index a007d445f8..adc6ff98ee 100644 --- a/packages/rspeedy/upgrade-rspeedy/package.json +++ b/packages/rspeedy/upgrade-rspeedy/package.json @@ -39,7 +39,7 @@ "@lynx-js/react-rsbuild-plugin": "workspace:*", "@lynx-js/rspeedy": "workspace:*", "@lynx-js/types": "3.7.0", - "@lynx-js/web-core": "workspace:*", + "@lynx-js/web-core-wasm": "workspace:*", "@lynx-js/web-elements": "workspace:*", "@rsbuild/plugin-less": "1.6.0", "@rsbuild/plugin-sass": "1.5.0", diff --git a/packages/web-platform/offscreen-document/CHANGELOG.md b/packages/web-platform/offscreen-document/CHANGELOG.md deleted file mode 100644 index 03c8b9fe3a..0000000000 --- a/packages/web-platform/offscreen-document/CHANGELOG.md +++ /dev/null @@ -1,72 +0,0 @@ -# @lynx-js/offscreen-document - -## 0.1.4 - -### Patch Changes - -- remove innerHTML, replace it by textContent ([#1622](https://github.com/lynx-family/lynx-stack/pull/1622)) - -## 0.1.3 - -### Patch Changes - -- feat: support to dump the css og system's style ([#1272](https://github.com/lynx-family/lynx-stack/pull/1272)) - -## 0.1.2 - -### Patch Changes - -- refactor: make the opcode be a plain array ([#1051](https://github.com/lynx-family/lynx-stack/pull/1051)) - - #1042 - -## 0.1.1 - -### Patch Changes - -- feat: add sheet.insertRule support ([#1026](https://github.com/lynx-family/lynx-stack/pull/1026)) - -- refactor: implement mts apis in closure pattern ([#1004](https://github.com/lynx-family/lynx-stack/pull/1004)) - -## 0.1.0 - -### Minor Changes - -- remove `dumpHTMLString` ([#919](https://github.com/lynx-family/lynx-stack/pull/919)) - -## 0.0.4 - -### Patch Changes - -- fix: remove all children after the innerHTML setter is called ([#850](https://github.com/lynx-family/lynx-stack/pull/850)) - -- refactor: code clean ([#897](https://github.com/lynx-family/lynx-stack/pull/897)) - - rename many internal apis to make logic be clear: - - multi-thread: startMainWorker -> prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - all-on-ui: prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - -- perf: improve dom operation performance ([#881](https://github.com/lynx-family/lynx-stack/pull/881)) - - - code clean for offscreen-document, cut down inheritance levels - - add `appendChild` method for OffscreenElement, improve performance for append one node - - bypass some JS getter for dumping SSR string - -## 0.0.3 - -### Patch Changes - -- feat: support OffscreenDocument.innerHTML ([#772](https://github.com/lynx-family/lynx-stack/pull/772)) - -## 0.0.2 - -### Patch Changes - -- feat: support touch events ([#641](https://github.com/lynx-family/lynx-stack/pull/641)) - -## 0.0.1 - -### Patch Changes - -- feat: support parentNode ([#625](https://github.com/lynx-family/lynx-stack/pull/625)) diff --git a/packages/web-platform/offscreen-document/Notice.txt b/packages/web-platform/offscreen-document/Notice.txt deleted file mode 100644 index 3ff8881bfd..0000000000 --- a/packages/web-platform/offscreen-document/Notice.txt +++ /dev/null @@ -1 +0,0 @@ -Copyright 2023-2024 The Lynx Authors. All rights reserved. \ No newline at end of file diff --git a/packages/web-platform/offscreen-document/README.md b/packages/web-platform/offscreen-document/README.md deleted file mode 100644 index 4b6b7a6547..0000000000 --- a/packages/web-platform/offscreen-document/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @lynx-js/offscreen-document - -Offscreen Document allows developers to use partial DOM in WebWorker diff --git a/packages/web-platform/offscreen-document/package.json b/packages/web-platform/offscreen-document/package.json deleted file mode 100644 index a395a7a7d9..0000000000 --- a/packages/web-platform/offscreen-document/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@lynx-js/offscreen-document", - "version": "0.1.4", - "private": false, - "description": "Offscreen Document allows developers to use particular DOM in WebWorker", - "keywords": [ - "WebWorker", - "DOM", - "lynx" - ], - "repository": { - "type": "git", - "url": "https://github.com/lynx-family/lynx-stack.git", - "directory": "packages/web-platform/offscreen-document" - }, - "license": "Apache-2.0", - "type": "module", - "exports": { - "./main": { - "types": "./dist/main/index.d.ts", - "default": "./dist/main/index.js" - }, - "./webworker": { - "types": "./dist/webworker/index.d.ts", - "default": "./dist/webworker/index.js" - }, - ".": { - "types": "./dist/index.d.ts" - } - }, - "main": "dist/index.js", - "typings": "dist/index.d.ts", - "files": [ - "dist", - "!dist/**/*.js.map", - "LICENSE.txt", - "Notice.txt", - "CHANGELOG.md", - "README.md" - ] -} diff --git a/packages/web-platform/offscreen-document/src/index.ts b/packages/web-platform/offscreen-document/src/index.ts deleted file mode 100644 index f3983c2935..0000000000 --- a/packages/web-platform/offscreen-document/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export type * from './webworker/index.js'; -export type * from './main/index.js'; -export type * from './types/index.js'; diff --git a/packages/web-platform/offscreen-document/src/main/index.ts b/packages/web-platform/offscreen-document/src/main/index.ts deleted file mode 100644 index ef7a443abf..0000000000 --- a/packages/web-platform/offscreen-document/src/main/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export * from './initOffscreenDocument.js'; diff --git a/packages/web-platform/offscreen-document/src/main/initOffscreenDocument.ts b/packages/web-platform/offscreen-document/src/main/initOffscreenDocument.ts deleted file mode 100644 index 2c5d227774..0000000000 --- a/packages/web-platform/offscreen-document/src/main/initOffscreenDocument.ts +++ /dev/null @@ -1,247 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { OperationType } from '../types/ElementOperation.js'; - -function emptyHandler() { - // no-op -} -const otherPropertyNames = [ - 'detail', - 'keyCode', - 'charCode', - 'elapsedTime', - 'propertyName', - 'pseudoElement', - 'animationName', - 'touches', - 'targetTouches', - 'changedTouches', - 'x', - 'y', -]; -const blockList = new Set([ - 'isTrusted', - 'target', - 'currentTarget', - 'type', - 'bubbles', - 'window', - 'self', - 'view', - 'srcElement', - 'eventPhase', -]); - -function transferToCloneable(value: any): any { - if ( - typeof value === 'string' || typeof value === 'number' - || typeof value === 'boolean' || value === null || value === undefined - ) { - return value; - } else if (value[Symbol.iterator]) { - return [...value].map(transferToCloneable); - } else if (typeof value === 'object' && !(value instanceof EventTarget)) { - const obj: Record = {}; - for (const key in value) { - if (!blockList.has(key)) { - obj[key] = transferToCloneable(value[key]); - } - } - return obj; - } -} - -export function initOffscreenDocument(options: { - shadowRoot: ShadowRoot; - onEvent: ( - eventType: string, - targetUniqueId: number, - bubbles: boolean, - otherProperties: Parameters[0], - ) => void; -}) { - const { shadowRoot, onEvent } = options; - const enabledEvents: Set = new Set(); - const uniqueIdToElement: [ - WeakRef, - ...(WeakRef | undefined)[], - ] = [new WeakRef(shadowRoot)]; - const elementToUniqueId: WeakMap = new WeakMap(); - - function _getElement( - uniqueId: number, - ): HTMLElement { - const element = uniqueIdToElement[uniqueId]?.deref(); - if (element) { - return element as HTMLElement; - } else { - throw new Error( - `[lynx-web] cannot find element with uniqueId: ${uniqueId}`, - ); - } - } - - function _eventHandler(ev: Event) { - if ( - ev.eventPhase !== Event.CAPTURING_PHASE && ev.currentTarget !== shadowRoot - ) { - return; - } - const target = ev.target as HTMLElement | null; - if (target && elementToUniqueId.has(target)) { - const targetUniqueId = elementToUniqueId.get(target)!; - const eventType = ev.type; - const otherProperties: Record = {}; - for (const propertyName of otherPropertyNames) { - if (propertyName in ev) { - // @ts-expect-error - otherProperties[propertyName] = transferToCloneable(ev[propertyName]); - } - } - onEvent(eventType, targetUniqueId, ev.bubbles, otherProperties); - } - } - - function decodeOperation(operations: (string | number)[]) { - if (operations.length === 0) { - return; - } - let offset: number = 0; - const { - CreateElement, - SetAttribute, - RemoveAttribute, - Append, - Remove, - ReplaceWith, - InsertBefore, - EnableEvent, - RemoveChild, - StyleDeclarationSetProperty, - StyleDeclarationRemoveProperty, - SetTextContent, - sheetInsertRule, - sheetRuleUpdateCssText, - } = OperationType; - let op: number | string | undefined; - while ((op = operations[offset++])) { - const uid = operations[offset++] as number; - if (op === CreateElement) { - const element = document.createElement(operations[offset++] as string); - uniqueIdToElement[uid] = new WeakRef(element); - elementToUniqueId.set(element, uid); - } else { - const target = _getElement(uid); - switch (op) { - case SetAttribute: - { - const key = operations[offset++] as string; - const value = operations[offset++] as string; - target.setAttribute(key, value); - } - break; - case RemoveAttribute: - { - target.removeAttribute(operations[offset++] as string); - } - break; - case Append: - { - const childrenLength = operations[offset++] as number; - for (let i = 0; i < childrenLength; i++) { - const id = operations[offset++] as number; - const child = _getElement(id); - target.appendChild(child); - } - } - break; - case Remove: - target.remove(); - break; - case ReplaceWith: - { - const childrenLength = operations[offset++] as number; - const newChildren: HTMLElement[] = operations.slice( - offset, - offset + childrenLength, - ).map((id) => _getElement(id as number)); - offset += childrenLength; - target.replaceWith(...newChildren); - } - break; - case InsertBefore: - { - const kid = _getElement(operations[offset++] as number); - const refUid = operations[offset++] as number; - const ref = refUid ? _getElement(refUid) : null; - target.insertBefore(kid, ref); - } - break; - case EnableEvent: - const eventType = operations[offset++] as string; - target.addEventListener( - eventType, - emptyHandler, - { passive: true }, - ); - if (!enabledEvents.has(eventType)) { - shadowRoot.addEventListener( - eventType, - _eventHandler, - { passive: true, capture: true }, - ); - enabledEvents.add(eventType); - } - break; - case RemoveChild: - { - const kid = _getElement(operations[offset++] as number); - target.removeChild(kid); - } - break; - case StyleDeclarationSetProperty: - { - target.style.setProperty( - operations[offset++] as string, - operations[offset++] as string, - operations[offset++] as string, - ); - } - break; - case StyleDeclarationRemoveProperty: - { - target.style.removeProperty(operations[offset++] as string); - } - break; - case SetTextContent: - target.textContent = operations[offset++] as string; - break; - case sheetInsertRule: - { - const index = operations[offset++] as number; - const rule = operations[offset++] as string; - (target as HTMLStyleElement).sheet!.insertRule( - rule, - index, - ); - } - break; - case sheetRuleUpdateCssText: - { - const index = operations[offset++] as number; - ((target as HTMLStyleElement).sheet! - .cssRules[index]! as CSSStyleRule).style.cssText = - operations[offset++] as string; - } - break; - } - } - } - } - - return { - decodeOperation, - }; -} diff --git a/packages/web-platform/offscreen-document/src/types/ElementOperation.ts b/packages/web-platform/offscreen-document/src/types/ElementOperation.ts deleted file mode 100644 index 8e1313bc20..0000000000 --- a/packages/web-platform/offscreen-document/src/types/ElementOperation.ts +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export const OperationType = { - CreateElement: 1, - SetAttribute: 2, - RemoveAttribute: 3, - Append: 4, - Remove: 5, - ReplaceWith: 6, - InsertBefore: 7, - EnableEvent: 8, - RemoveChild: 9, - StyleDeclarationSetProperty: 10, - StyleDeclarationRemoveProperty: 11, - SetTextContent: 12, - sheetInsertRule: 13, - sheetRuleUpdateCssText: 14, -} as const; - -// keep these types for opcode hint - -// type IOperationType = typeof OperationType; -// interface ElementOperationBase { -// type: IOperationType[keyof IOperationType]; -// /** -// * uniqueId -// */ -// uid: number; -// } - -// export interface CreateOperation extends ElementOperationBase { -// type: IOperationType['CreateElement']; -// tag: string; -// } - -// export interface SetAttributeOperation extends ElementOperationBase { -// type: IOperationType['SetAttribute']; -// key: string; -// value: string; -// } -// export interface RemoveAttributeOperation extends ElementOperationBase { -// type: IOperationType['RemoveAttribute']; -// key: string; -// } - -// export interface AppendOperation extends ElementOperationBase { -// type: IOperationType['Append']; -// /** -// * child uniqueId -// */ -// cid: number[]; -// } - -// export interface RemoveOperation extends ElementOperationBase { -// type: IOperationType['Remove']; -// } - -// export interface InsertBeforeOperation extends ElementOperationBase { -// type: IOperationType['InsertBefore']; -// /** -// * child uniqueId -// */ -// cid: number; -// ref?: number | undefined; -// } - -// export interface ReplaceOperation extends ElementOperationBase { -// type: IOperationType['ReplaceWith']; -// /** -// * the new element's unique id. -// */ -// nid: number[]; -// } - -// export interface EnableEventOperation extends ElementOperationBase { -// type: IOperationType['EnableEvent']; -// eventType: string; -// } - -// export interface RemoveChildOperation extends ElementOperationBase { -// type: IOperationType['RemoveChild']; -// /** -// * the child element's unique id to be removed. -// */ -// cid: number; -// } - -// export interface StyleDeclarationSetPropertyOperation -// extends ElementOperationBase -// { -// type: IOperationType['StyleDeclarationSetProperty']; -// property: string; -// value: string; -// priority: string | undefined | ''; -// } - -// export interface StyleDeclarationRemovePropertyOperation -// extends ElementOperationBase -// { -// type: IOperationType['StyleDeclarationRemoveProperty']; -// property: string; -// } - -// export interface SetTextContentOperation extends ElementOperationBase { -// type: IOperationType['SetTextContent']; -// text: string; -// } - -// export interface SheetInsertRuleOperation extends ElementOperationBase { -// type: IOperationType['sheetInsertRule']; -// rule: string; -// index: number; -// } - -// export interface SheetRuleUpdateCssTextOperation extends ElementOperationBase { -// type: IOperationType['sheetRuleUpdateCssText']; -// index: number; -// cssText: string; -// } - -// export type ElementOperation = -// | EnableEventOperation -// | ReplaceOperation -// | InsertBeforeOperation -// | CreateOperation -// | SetAttributeOperation -// | RemoveAttributeOperation -// | AppendOperation -// | RemoveOperation -// | RemoveChildOperation -// | StyleDeclarationSetPropertyOperation -// | StyleDeclarationRemovePropertyOperation -// | SetTextContentOperation -// | SheetInsertRuleOperation -// | SheetRuleUpdateCssTextOperation; diff --git a/packages/web-platform/offscreen-document/src/types/index.ts b/packages/web-platform/offscreen-document/src/types/index.ts deleted file mode 100644 index 0bf0e7c6cb..0000000000 --- a/packages/web-platform/offscreen-document/src/types/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export type * from './ElementOperation.js'; diff --git a/packages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.ts b/packages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.ts deleted file mode 100644 index 071c280222..0000000000 --- a/packages/web-platform/offscreen-document/src/webworker/OffscreenCSSStyleDeclaration.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - _attributes, - ancestorDocument, - type OffscreenElement, -} from './OffscreenElement.js'; -import { operations } from './OffscreenDocument.js'; -import { OperationType } from '../types/ElementOperation.js'; -import { uniqueId } from './OffscreenElement.js'; - -export class OffscreenCSSStyleDeclaration { - /** - * @private - */ - private readonly _parent: OffscreenElement; - - constructor(parent: OffscreenElement) { - this._parent = parent; - } - - setProperty( - property: string, - value: string, - priority?: 'important' | undefined | '', - ): void { - this._parent[ancestorDocument][operations].push( - OperationType['StyleDeclarationSetProperty'], - this._parent[uniqueId], - property, - value, - priority ?? '', - ); - const currentStyle = this._parent.getAttribute('style') ?? ''; - this._parent[_attributes].set( - 'style', - currentStyle + `${property}:${value}${priority ? ` !${priority}` : ''};`, - ); - } - - removeProperty(property: string): void { - this._parent[ancestorDocument][operations].push( - OperationType['StyleDeclarationRemoveProperty'], - this._parent[uniqueId], - property, - ); - const currentStyle = this._parent.getAttribute('style') ?? ''; - this._parent[_attributes].set( - 'style', - currentStyle + `${property}:inital;`, - ); // only for SSR - } -} diff --git a/packages/web-platform/offscreen-document/src/webworker/OffscreenDocument.ts b/packages/web-platform/offscreen-document/src/webworker/OffscreenDocument.ts deleted file mode 100644 index 6d939ccc9d..0000000000 --- a/packages/web-platform/offscreen-document/src/webworker/OffscreenDocument.ts +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { OperationType } from '../types/ElementOperation.js'; -import { - _attributes, - _children, - ancestorDocument, - OffscreenElement, -} from './OffscreenElement.js'; -import { - eventPhase, - OffscreenEvent, - propagationStopped, -} from './OffscreenEvent.js'; - -export const operations = Symbol('operations'); -export const enableEvent = Symbol('enableEvent'); -export const getElementByUniqueId = Symbol('getElementByUniqueId'); -export const _onEvent = Symbol('_onEvent'); -const _uniqueIdInc = Symbol('uniqueIdInc'); -const _uniqueIdToElement = Symbol('_uniqueIdToElement'); -export class OffscreenDocument extends OffscreenElement { - /** - * @private - */ - [_uniqueIdInc] = 1; - - /** - * @private - */ - [_uniqueIdToElement]: WeakRef[] = []; - - /** - * @private - */ - [operations]: (string | number)[] = []; - - /** - * @private - * @param uniqueId - * @returns - */ - [getElementByUniqueId](uniqueId: number): OffscreenElement | undefined { - return this[_uniqueIdToElement][uniqueId]?.deref(); - } - - [enableEvent]: (eventType: string, uid: number) => void; - constructor( - private _callbacks: { - onCommit: (operations: (string | number)[]) => void; - }, - ) { - const enableEventImpl: (nm: string, uid: number) => void = ( - eventType, - uid, - ) => { - this[operations].push( - OperationType.EnableEvent, - uid, - eventType, - ); - }; - super('', 0); - this[ancestorDocument] = this; - this[enableEvent] = enableEventImpl; - } - - commit(): void { - const currentOperations = this[operations]; - this[operations] = []; - this._callbacks.onCommit(currentOperations); - } - - createElement(tagName: string): OffscreenElement { - const uniqueId = this[_uniqueIdInc]++; - const element = new OffscreenElement(tagName, uniqueId); - element[ancestorDocument] = this; - this[_uniqueIdToElement][uniqueId] = new WeakRef(element); - this[operations].push( - OperationType.CreateElement, - uniqueId, - tagName, - ); - return element; - } - - [_onEvent] = ( - eventType: string, - targetUniqueId: number, - bubbles: boolean, - otherProperties: Parameters[0], - ) => { - const target = this[getElementByUniqueId](targetUniqueId); - if (target) { - const bubblePath: OffscreenElement[] = []; - let tempTarget: OffscreenElement = target; - while (tempTarget.parentElement) { - bubblePath.push(tempTarget.parentElement); - tempTarget = tempTarget.parentElement; - } - const event = new OffscreenEvent(eventType, target); - Object.assign(event, otherProperties); - // capture phase - event[eventPhase] = Event.CAPTURING_PHASE; - for (let ii = bubblePath.length - 1; ii >= 0; ii--) { - const currentPhaseTarget = bubblePath[ii]!; - currentPhaseTarget.dispatchEvent(event); - if (event[propagationStopped]) { - return; - } - } - // target phase - event[eventPhase] = Event.AT_TARGET; - target.dispatchEvent(event); - // bubble phase - if (bubbles) { - event[eventPhase] = Event.BUBBLING_PHASE; - for (const currentPhaseTarget of bubblePath) { - currentPhaseTarget.dispatchEvent(event); - if (event[propagationStopped]) { - return; - } - } - } - } - }; -} diff --git a/packages/web-platform/offscreen-document/src/webworker/OffscreenElement.ts b/packages/web-platform/offscreen-document/src/webworker/OffscreenElement.ts deleted file mode 100644 index a71774a9b2..0000000000 --- a/packages/web-platform/offscreen-document/src/webworker/OffscreenElement.ts +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - enableEvent, - operations, - type OffscreenDocument, -} from './OffscreenDocument.js'; -import { OffscreenCSSStyleDeclaration } from './OffscreenCSSStyleDeclaration.js'; -import { OperationType } from '../types/ElementOperation.js'; - -export const ancestorDocument = Symbol('ancestorDocument'); -export const _attributes = Symbol('_attributes'); -export const _children = Symbol('_children'); -export const textContent = Symbol('textContent'); -export const _cssRuleContents = Symbol('_cssRuleContents'); -export const uniqueId = Symbol('uniqueId'); -const _style = Symbol('_style'); - -type OffscreenStyleSheet = { - cssRules: { style: { cssText: string } }[]; - insertRule: (rule: string, index: number) => number; -}; -export class OffscreenElement extends EventTarget { - public [textContent]: string = ''; - private [_style]?: OffscreenCSSStyleDeclaration; - private readonly [_attributes] = new Map(); - private _parentElement: OffscreenElement | null = null; - readonly [_children]: OffscreenElement[] = []; - [_cssRuleContents]?: string[]; - #sheet?: OffscreenStyleSheet; - /** - * @private - */ - readonly [uniqueId]: number; - - /** - * @private - */ - [ancestorDocument]!: OffscreenDocument; - - public readonly localName: string; - - constructor( - localName: string, - elementUniqueId: number, - ) { - super(); - this.localName = localName; - this[uniqueId] = elementUniqueId; - } - - get sheet() { - if (!this.#sheet) { - const uid = this[uniqueId]; - const ancestor = this[ancestorDocument]; - const cssRules: { style: { cssText: string } }[] = []; - this.#sheet = { - cssRules, - insertRule: (rule: string, index: number) => { - cssRules.splice(index, 0, { - style: { - set cssText(text: string) { - ancestor[operations].push( - OperationType.sheetRuleUpdateCssText, - uid, - index, - text, - ); - }, - }, - }); - if (!this[_cssRuleContents]) { - this[_cssRuleContents] = []; - } - this[_cssRuleContents].splice(index, 0, rule); - this[ancestorDocument][operations].push( - OperationType.sheetInsertRule, - uid, - index, - rule, - ); - return index; - }, - }; - } - return this.#sheet!; - } - - get tagName(): string { - return this.localName.toUpperCase(); - } - - get style(): OffscreenCSSStyleDeclaration { - if (!this[_style]) { - this[_style] = new OffscreenCSSStyleDeclaration( - this, - ); - } - return this[_style]; - } - - get children(): OffscreenElement[] { - return this[_children].slice(); - } - - get parentElement(): OffscreenElement | null { - return this._parentElement; - } - - get parentNode(): OffscreenElement | null { - return this._parentElement; - } - - get firstElementChild(): OffscreenElement | null { - return this[_children][0] ?? null; - } - - get lastElementChild(): OffscreenElement | null { - return this[_children][this[_children].length - 1] ?? null; - } - - get nextElementSibling(): OffscreenElement | null { - const parent = this._parentElement; - if (parent) { - const nextElementSiblingIndex = parent[_children].indexOf(this); - if (nextElementSiblingIndex >= 0) { - return parent[_children][nextElementSiblingIndex + 1] || null; - } - } - return null; - } - - protected _remove(): void { - if (this._parentElement) { - const currentIdx = this._parentElement[_children].indexOf(this); - this._parentElement[_children].splice(currentIdx, 1); - this._parentElement = null; - } - } - - setAttribute(qualifiedName: string, value: string): void { - this[_attributes].set(qualifiedName, value); - this[ancestorDocument][operations].push( - OperationType.SetAttribute, - this[uniqueId], - qualifiedName, - value, - ); - } - - getAttribute(qualifiedName: string): string | null { - return this[_attributes].get(qualifiedName) ?? null; - } - - removeAttribute(qualifiedName: string): void { - this[_attributes].delete(qualifiedName); - this[ancestorDocument][operations].push( - OperationType.RemoveAttribute, - this[uniqueId], - qualifiedName, - ); - } - - append(...nodes: (OffscreenElement)[]): void { - this[ancestorDocument][operations].push( - OperationType.Append, - this[uniqueId], - nodes.length, - ...nodes.map(node => node[uniqueId]), - ); - for (const node of nodes) { - node._remove(); - node._parentElement = this; - } - this[_children].push(...nodes); - } - - appendChild(node: OffscreenElement): OffscreenElement { - this[ancestorDocument][operations].push( - OperationType.Append, - this[uniqueId], - 1, - node[uniqueId], - ); - node._remove(); - node._parentElement = this; - this[_children].push(node); - return node; - } - - replaceWith(...nodes: (OffscreenElement)[]): void { - this[ancestorDocument][operations].push( - OperationType.ReplaceWith, - this[uniqueId], - nodes.length, - ...nodes.map(node => node[uniqueId]), - ); - if (this._parentElement) { - const parent = this._parentElement; - this._parentElement = null; - const currentIdx = parent[_children].indexOf(this); - parent[_children].splice(currentIdx, 1, ...nodes); - for (const node of nodes) { - node._parentElement = parent; - } - } - } - - getAttributeNames(): string[] { - return [...this[_attributes].keys()]; - } - - remove(): void { - this[ancestorDocument][operations].push( - OperationType.Remove, - this[uniqueId], - ); - this._remove(); - } - - insertBefore( - newNode: OffscreenElement, - refNode: OffscreenElement | null, - ): OffscreenElement { - newNode._remove(); - if (refNode) { - const refNodeIndex = this[_children].indexOf(refNode); - if (refNodeIndex >= 0) { - newNode._parentElement = this; - this[_children].splice(refNodeIndex, 0, newNode); - } - } else { - newNode._parentElement = this; - this[_children].push(newNode); - } - - this[ancestorDocument][operations].push( - OperationType.InsertBefore, - this[uniqueId], - newNode[uniqueId], - refNode?.[uniqueId] ?? 0, - ); - return newNode; - } - - removeChild(child: OffscreenElement | null): OffscreenElement { - if (!child) { - throw new DOMException( - 'The node to be removed is not a child of this node.', - 'NotFoundError', - ); - } - if (child._parentElement !== this) { - throw new DOMException( - 'The node to be removed is not a child of this node.', - 'NotFoundError', - ); - } - this[ancestorDocument][operations].push( - OperationType.RemoveChild, - this[uniqueId], - child![uniqueId], - ); - child._remove(); - return child; - } - - override addEventListener( - type: string, - callback: EventListenerOrEventListenerObject | null, - options?: AddEventListenerOptions | boolean, - ): void { - this[ancestorDocument][enableEvent](type, this[uniqueId]); - super.addEventListener(type, callback, options); - } - - get textContent() { - return this[textContent]; - } - - set textContent(text: string) { - this[ancestorDocument][operations].push( - OperationType.SetTextContent, - this[uniqueId], - text, - ); - for (const child of this.children) { - (child as OffscreenElement).remove(); - } - this[textContent] = text; - if (this[_cssRuleContents]) { - this[_cssRuleContents] = []; - } - } -} diff --git a/packages/web-platform/offscreen-document/src/webworker/OffscreenEvent.ts b/packages/web-platform/offscreen-document/src/webworker/OffscreenEvent.ts deleted file mode 100644 index cbf0df4bfd..0000000000 --- a/packages/web-platform/offscreen-document/src/webworker/OffscreenEvent.ts +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import type { OffscreenElement } from './OffscreenElement.js'; - -export const propagationStopped = Symbol('propagationStopped'); -export const eventPhase = Symbol('eventPhase'); - -export class OffscreenEvent extends Event { - [eventPhase]: Event['eventPhase'] = Event.CAPTURING_PHASE; - constructor(type: string, private _target: OffscreenElement) { - super(type); - } - - override get target(): OffscreenElement { - return this._target; - } - - [propagationStopped] = false; - - override stopImmediatePropagation(): void { - this[propagationStopped] = true; - super.stopImmediatePropagation(); - } - - override stopPropagation(): void { - this[propagationStopped] = true; - super.stopPropagation(); - } - - override get eventPhase() { - return this[eventPhase]; - } -} diff --git a/packages/web-platform/offscreen-document/src/webworker/index.ts b/packages/web-platform/offscreen-document/src/webworker/index.ts deleted file mode 100644 index 43c6a705e5..0000000000 --- a/packages/web-platform/offscreen-document/src/webworker/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export { OffscreenDocument, _onEvent } from './OffscreenDocument.js'; -export { - _attributes, - textContent, - _children, - _cssRuleContents, - OffscreenElement, -} from './OffscreenElement.js'; -export type * from './OffscreenEvent.js'; -export type * from './OffscreenElement.js'; -export type * from './OffscreenCSSStyleDeclaration.js'; -export type * from '../types/index.js'; diff --git a/packages/web-platform/offscreen-document/tsconfig.json b/packages/web-platform/offscreen-document/tsconfig.json deleted file mode 100644 index 744c7b097a..0000000000 --- a/packages/web-platform/offscreen-document/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "composite": true, - "rootDir": "./src", - "outDir": "./dist", - "lib": ["ESNext", "WebWorker", "DOM"], - "exactOptionalPropertyTypes": true, - }, - "include": ["src"], - "references": [], -} diff --git a/packages/web-platform/tsconfig.json b/packages/web-platform/tsconfig.json index 972935f3ff..06b3768600 100644 --- a/packages/web-platform/tsconfig.json +++ b/packages/web-platform/tsconfig.json @@ -13,13 +13,8 @@ "references": [ /** packages-start */ { "path": "./playwright-fixtures/tsconfig.json" }, - { "path": "./offscreen-document/tsconfig.json" }, { "path": "./web-elements/tsconfig.json" }, - { "path": "./web-constants/tsconfig.json" }, { "path": "./web-worker-rpc/tsconfig.json" }, - { "path": "./web-mainthread-apis/tsconfig.json" }, - { "path": "./web-core-server/tsconfig.json" }, - { "path": "./web-core/tsconfig.json" }, { "path": "./web-core-wasm/tsconfig.json" }, { "path": "./web-rsbuild-plugin/tsconfig.json" }, { "path": "./web-rsbuild-server-middleware/tsconfig.json" }, diff --git a/packages/web-platform/web-constants/CHANGELOG.md b/packages/web-platform/web-constants/CHANGELOG.md deleted file mode 100644 index 47794dd52a..0000000000 --- a/packages/web-platform/web-constants/CHANGELOG.md +++ /dev/null @@ -1,930 +0,0 @@ -# @lynx-js/web-constants - -## 0.19.9 - -### Patch Changes - -- Implement `__ElementAnimate` PAPI for web platform animation lifecycle ([#2329](https://github.com/lynx-family/lynx-stack/pull/2329)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.19.9 - -## 0.19.8 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.19.8 - -## 0.19.7 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.19.7 - -## 0.19.6 - -### Patch Changes - -- feat: add main-thread API: \_\_QuerySelector ([#2115](https://github.com/lynx-family/lynx-stack/pull/2115)) - -- fix: when a list-item is deleted from list, the deleted list-item is still showed incorrectly. ([#1092](https://github.com/lynx-family/lynx-stack/pull/1092)) - - This is because the `enqueueComponent` method does not delete the node from the Element Tree. It is only to maintain the display node on RL, and lynx web needs to delete the dom additionally. - -- feat: support main thread invoke ui method ([#2104](https://github.com/lynx-family/lynx-stack/pull/2104)) - -- feat: support lynx.reload() ([#2127](https://github.com/lynx-family/lynx-stack/pull/2127)) - -- Updated dependencies [[`f7133c1`](https://github.com/lynx-family/lynx-stack/commit/f7133c137f094063e991dfa0e993ea92177aa173)]: - - @lynx-js/web-worker-rpc@0.19.6 - -## 0.19.5 - -### Patch Changes - -- Updated dependencies [[`a91173c`](https://github.com/lynx-family/lynx-stack/commit/a91173c986ce3f358f1c11c788ca46a0529c701d)]: - - @lynx-js/web-worker-rpc@0.19.5 - -## 0.19.4 - -### Patch Changes - -- Updated dependencies [[`bba05e2`](https://github.com/lynx-family/lynx-stack/commit/bba05e2ed06cca8009ad415fd9777e8334a0887a)]: - - @lynx-js/web-worker-rpc@0.19.4 - -## 0.19.3 - -### Patch Changes - -- Updated dependencies [[`986761d`](https://github.com/lynx-family/lynx-stack/commit/986761dd1e9e631f8118faec68188f29f78e9236)]: - - @lynx-js/web-worker-rpc@0.19.3 - -## 0.19.2 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.19.2 - -## 0.19.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.19.1 - -## 0.19.0 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.19.0 - -## 0.18.4 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.18.4 - -## 0.18.3 - -### Patch Changes - -- feat: add \_\_GetSourceMapRelease API for nativeApp. ([#1923](https://github.com/lynx-family/lynx-stack/pull/1923)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.18.3 - -## 0.18.2 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.18.2 - -## 0.18.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.18.1 - -## 0.18.0 - -### Patch Changes - -- fix: ([#1837](https://github.com/lynx-family/lynx-stack/pull/1837)) - - 1. `LynxView.updateData()` cannot trigger `dataProcessor`. - - 2. **This is a break change:** The second parameter of `LynxView.updateData()` has been changed from `UpdateDataType` to `string`, which is the `processorName` (default is `default` which will use `defaultDataProcessor`). This change is to better align with Native. The current complete type is as follows: - - ```ts - LynxView.updateData(data: Cloneable, processorName?: string | undefined, callback?: (() => void) | undefined): void - ``` - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.18.0 - -## 0.17.2 - -### Patch Changes - -- feat: support load bts chunk from remote address ([#1834](https://github.com/lynx-family/lynx-stack/pull/1834)) - - - re-support chunk splitting - - support lynx.requireModule with a json file - - support lynx.requireModule, lynx.requireModuleAsync with a remote url - - support to add a breakpoint in chrome after reloading the web page - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.17.2 - -## 0.17.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.17.1 - -## 0.17.0 - -### Patch Changes - -- fix: avoid duplicate style transformation ([#1748](https://github.com/lynx-family/lynx-stack/pull/1748)) - - After this commit, we use DAG methods to handle the styleInfos - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.17.0 - -## 0.16.1 - -### Patch Changes - -- feat: supports lazy bundle. (This feature requires `@lynx-js/lynx-core >= 0.1.3`) ([#1235](https://github.com/lynx-family/lynx-stack/pull/1235)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.16.1 - -## 0.16.0 - -### Minor Changes - -- refactor: provide the mts a real globalThis ([#1589](https://github.com/lynx-family/lynx-stack/pull/1589)) - - Before this change, We create a function wrapper and a fake globalThis for Javascript code. - - This caused some issues. - - After this change, we will create an iframe for createing an isolated Javascript context. - - This means the globalThis will be the real one. - -### Patch Changes - -- refactor: add `:not([l-e-name])` at the end of selector for lazy component ([#1622](https://github.com/lynx-family/lynx-stack/pull/1622)) - -- fix: the SystemInfo in bts should be assigned to the globalThis ([#1599](https://github.com/lynx-family/lynx-stack/pull/1599)) - -- Updated dependencies [[`c1f8715`](https://github.com/lynx-family/lynx-stack/commit/c1f8715a81b2e69ff46fc363013626db4468c209)]: - - @lynx-js/web-worker-rpc@0.16.0 - -## 0.15.7 - -### Patch Changes - -- fix: globalThis is never accessible in MTS ([#1531](https://github.com/lynx-family/lynx-stack/pull/1531)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.15.7 - -## 0.15.6 - -### Patch Changes - -- fix: systeminfo in mts function ([#1537](https://github.com/lynx-family/lynx-stack/pull/1537)) - -- feat: add MTS API: \_\_UpdateComponentInfo ([#1485](https://github.com/lynx-family/lynx-stack/pull/1485)) - -- fix: `__ElementFromBinary` needs to correctly apply the dataset in elementTemplate to the Element ([#1487](https://github.com/lynx-family/lynx-stack/pull/1487)) - -- fix: all attributes except `id` and `type` under ElementTemplateData are optional. ([#1483](https://github.com/lynx-family/lynx-stack/pull/1483)) - -- feat: add MTS API \_\_GetAttributeByName ([#1486](https://github.com/lynx-family/lynx-stack/pull/1486)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.15.6 - -## 0.15.5 - -### Patch Changes - -- fix: load main-thread chunk in ESM format ([#1437](https://github.com/lynx-family/lynx-stack/pull/1437)) - - See [nodejs/node#59362](https://github.com/nodejs/node/issues/59362) for more details. - -- feat: support path() for `createQuerySelector` ([#1456](https://github.com/lynx-family/lynx-stack/pull/1456)) - - - Added `getPathInfo` API to `NativeApp` and its cross-thread handler for retrieving the path from a DOM node to the root. - - Implemented endpoint and handler registration in both background and UI threads. - - Implemented `nativeApp.getPathInfo()` - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.15.5 - -## 0.15.4 - -### Patch Changes - -- feat: support `__ElementFromBinary` ([#1391](https://github.com/lynx-family/lynx-stack/pull/1391)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.15.4 - -## 0.15.3 - -### Patch Changes - -- fix: improve compatibility with legacy template ([#1337](https://github.com/lynx-family/lynx-stack/pull/1337)) - - avoid "object Object" error for old version rspeedy outputs - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.15.3 - -## 0.15.2 - -### Patch Changes - -- feat: move SSR hydrate essential info to the ssr attribute ([#1292](https://github.com/lynx-family/lynx-stack/pull/1292)) - - We found that in browser there is no simple tool to decode a base64 string - - Therefore we move the data to `ssr` attribute - - Also fix some ssr issues - -- feat: support \_\_MarkTemplateElement, \_\_MarkPartElement and \_\_GetTemplateParts for all-on-ui ([#1275](https://github.com/lynx-family/lynx-stack/pull/1275)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.15.2 - -## 0.15.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.15.1 - -## 0.15.0 - -### Minor Changes - -- refactor: move exposure system to web-core ([#1254](https://github.com/lynx-family/lynx-stack/pull/1254)) - - **THIS IS A BREAKING CHANGE** - - **You'll need to upgrade your @lynx-js/web-elements to >= 0.8.0** - - For SSR and better performance, we moved the lynx's exposure system from web-element to web-core. - - Before this commit, we create Intersection observers by creating HTMLElements. - - After this commit, we will create such Intersection observers after dom stabled. - - Also, the setInterval for exposure has been removed, now we use an on time lazy timer for such features. - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.15.0 - -## 0.14.2 - -### Patch Changes - -- feat: merge multiple markTiming RPC communication events together and send them together, which can effectively reduce the number of RPC communications. ([#1178](https://github.com/lynx-family/lynx-stack/pull/1178)) - -- chore: extract shared logic from web-core and web-core-server's loadTemplate into a unified generateTemplate function ([#1211](https://github.com/lynx-family/lynx-stack/pull/1211)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.14.2 - -## 0.14.1 - -### Patch Changes - -- feat: support BTS API `lynx.reportError` && `__SetSourceMapRelease`, now you can use it and handle it in lynx-view error event. ([#1059](https://github.com/lynx-family/lynx-stack/pull/1059)) - -- fix: in lynx-view all-on-ui mode, the input event of input and textarea is triggered twice, and the first e.detail is a string, which does not conform to the expected data format. ([#1179](https://github.com/lynx-family/lynx-stack/pull/1179)) - -- fix: under the all-on-ui strategy, reload() will add two page elements. ([#1147](https://github.com/lynx-family/lynx-stack/pull/1147)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.14.1 - -## 0.14.0 - -### Patch Changes - -- feat: add `_SetSourceMapRelease(errInfo)` MTS API. ([#1118](https://github.com/lynx-family/lynx-stack/pull/1118)) - - You can get `errInfo.release` through `e.detail.release` in the error event callback of lynx-view. - - The `_SetSourceMapRelease` function is not complete yet, because it is currently limited by the Web platform and some functions and some props such as `err.stack` do not need to be supported for the time being. - -- feat: add `_I18nResourceTranslation` api in mts && `init-i18n-resources` attr, `i18nResourceMissed` event of lynx-view. ([#1065](https://github.com/lynx-family/lynx-stack/pull/1065)) - - `init-i18n-resource` is the complete set of i18nResources that need to be maintained on the container side. Note: You need to pass this value when lynx-view is initialized. - - You can use `_I18nResourceTranslation` in MTS to get the corresponding i18nResource from `init-i18n-resources`. If it is undefined, the `i18nResourceMissed` event will be dispatched. - - ```js - // ui thread - lynxView.initI18nResources = [ - { - options: { - locale: 'en', - channel: '1', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform1', - }, - }, - ]; - lynxView.addEventListener('i18nResourceMissed', (e) => { - console.log(e); - }); - - // mts - _I18nResourceTranslation({ - locale: 'en', - channel: '1', - fallback_url: '', - }); - ``` - -- feat: supports `lynx.getI18nResource()` and `onI18nResourceReady` event in bts. ([#1088](https://github.com/lynx-family/lynx-stack/pull/1088)) - - - `lynx.getI18nResource()` can be used to get i18nResource in bts, it has two data sources: - - the result of `_I18nResourceTranslation()` - - lynx-view `updateI18nResources(data: InitI18nResources, options: I18nResourceTranslationOptions)`, it will be matched to the correct i8nResource as a result of `lynx.getI18nResource()` - - `onI18nResourceReady` event can be used to listen `_I18nResourceTranslation` and lynx-view `updateI18nResources` execution. - -- refactor: make the opcode be a plain array ([#1051](https://github.com/lynx-family/lynx-stack/pull/1051)) - - #1042 - -- feat: add `updateI18nResources` method of lynx-view. ([#1085](https://github.com/lynx-family/lynx-stack/pull/1085)) - - Now you can use `updateI18nResources` to update i18nResources, and then use \_I18nResourceTranslation() to get the updated result. - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.14.0 - -## 0.13.5 - -### Patch Changes - -- refactor: move some internal status to dom's attribute ([#945](https://github.com/lynx-family/lynx-stack/pull/945)) - - It's essential for SSR - -- fix: target.id is undefined ([#1016](https://github.com/lynx-family/lynx-stack/pull/1016)) - -- feat: add new pageConfig configuration: enableJSDataProcessor ([#886](https://github.com/lynx-family/lynx-stack/pull/886)) - -- refactor: move component config info to attribute ([#984](https://github.com/lynx-family/lynx-stack/pull/984)) - -- refactor: save dataset on an attribute ([#981](https://github.com/lynx-family/lynx-stack/pull/981)) - - On lynx, the `data-*` attributes have different behaviors than the HTMLElement has. - - The dataset will be treated as properties, the key will not be applied the camel-case <-> hyphenate name transformation. - - Before this commit we use it as a runtime data, but after this commit we will use encodeURI(JSON.stringify(dataset)) to encode it as a string. - -- refactor: create elements of `elementToRuntimeInfoMap` on demand ([#986](https://github.com/lynx-family/lynx-stack/pull/986)) - -- refactor: implement mts apis in closure pattern ([#1004](https://github.com/lynx-family/lynx-stack/pull/1004)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.13.5 - -## 0.13.4 - -### Patch Changes - -- feat: lynx-view supports `updateGlobalProps` method, which can be used to update lynx.\_\_globalProps ([#918](https://github.com/lynx-family/lynx-stack/pull/918)) - -- feat: supports `lynx.getElementById()` && `animate()`. ([#912](https://github.com/lynx-family/lynx-stack/pull/912)) - - After this commit, you can use `lynx.getElementById()` to get the element by id, and use `element.animate()` to animate the element. - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.13.4 - -## 0.13.3 - -### Patch Changes - -- refactor: code clean ([#897](https://github.com/lynx-family/lynx-stack/pull/897)) - - rename many internal apis to make logic be clear: - - multi-thread: startMainWorker -> prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - all-on-ui: prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.13.3 - -## 0.13.2 - -### Patch Changes - -- fix: corrupt mainthread module cache ([#806](https://github.com/lynx-family/lynx-stack/pull/806)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.13.2 - -## 0.13.1 - -### Patch Changes - -- feat: support touch events for MTS ([#641](https://github.com/lynx-family/lynx-stack/pull/641)) - - now we support - - - main-thread:bindtouchstart - - main-thread:bindtouchend - - main-thread:bindtouchmove - - main-thread:bindtouchcancel - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.13.1 - -## 0.13.0 - -### Patch Changes - -- refactor: isolate SystemInfo ([#628](https://github.com/lynx-family/lynx-stack/pull/628)) - - Never assign `SystemInfo` on worker's self object. - -- refactor: move mainthread impl into mainthread-api packages ([#622](https://github.com/lynx-family/lynx-stack/pull/622)) - -- fix(web): css selector not work for selectors with combinator and pseudo-class on WEB ([#608](https://github.com/lynx-family/lynx-stack/pull/608)) - - like `.parent > :not([hidden]) ~ :not([hidden])` - - you will need to upgrade your `react-rsbuild-plugin` to fix this issue - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.13.0 - -## 0.12.0 - -### Patch Changes - -- feat: fully support MTS ([#569](https://github.com/lynx-family/lynx-stack/pull/569)) - - Now use support the following usage - - - mainthread event - - mainthread ref - - runOnMainThread/runOnBackground - - ref.current.xx - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.12.0 - -## 0.11.0 - -### Patch Changes - -- feat: support mts event handler (1/n) ([#495](https://github.com/lynx-family/lynx-stack/pull/495)) - - now the main-thread:bind handler could be invoked. The params of the handler will be implemented later. - -- feat: allow multi lynx-view to share bts worker ([#520](https://github.com/lynx-family/lynx-stack/pull/520)) - - Now we allow users to enable so-called "shared-context" feature on the Web Platform. - - Similar to the same feature for Lynx iOS/Android, this feature let multi lynx cards to share one js context. - - The `lynx.getSharedData` and `lynx.setSharedData` are also supported in this commit. - - To enable this feature, set property `lynxGroupId` or attribute `lynx-group-id` before a lynx-view starts rendering. Those card with same context id will share one web worker for the bts scripts. - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.11.0 - -## 0.10.1 - -### Patch Changes - -- feat: onNapiModulesCall function add new param: `dispatchNapiModules`, napiModulesMap val add new param: `handleDispatch`. ([#414](https://github.com/lynx-family/lynx-stack/pull/414)) - - Now you can use them to actively communicate to napiModules (background thread) in onNapiModulesCall (ui thread). - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.10.1 - -## 0.10.0 - -### Minor Changes - -- feat: rewrite the main thread Element PAPIs ([#343](https://github.com/lynx-family/lynx-stack/pull/343)) - - In this commit we've rewritten the main thread apis. - - The most highlighted change is that - - - Before this commit we send events directly to bts - - After this change, we send events to mts then send them to bts with some data combined. - -### Patch Changes - -- feat: The onNapiModulesCall function of lynx-view provides the fourth parameter: `lynxView`, which is the actual lynx-view DOM. ([#350](https://github.com/lynx-family/lynx-stack/pull/350)) - -- fix: publicComponentEvent args order ([#401](https://github.com/lynx-family/lynx-stack/pull/401)) - -- Updated dependencies [[`a521759`](https://github.com/lynx-family/lynx-stack/commit/a5217592f5aebea4b17860e729d523ecabb5f691)]: - - @lynx-js/web-worker-rpc@0.10.0 - -## 0.9.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.9.1 - -## 0.9.0 - -### Minor Changes - -- refractor: remove entryId concept ([#217](https://github.com/lynx-family/lynx-stack/pull/217)) - - After the PR #198 - All contents are isolated by a shadowroot. - Therefore we don't need to add the entryId selector to avoid the lynx-view's style taking effect on the whole page. - -### Patch Changes - -- feat: `nativeModulesUrl` of lynx-view is changed to `nativeModulesMap`, and the usage is completely aligned with `napiModulesMap`. ([#220](https://github.com/lynx-family/lynx-stack/pull/220)) - - "warning: This is a breaking change." - - `nativeModulesMap` will be a map: key is module-name, value should be a esm url which export default a - function with two parameters(you never need to use `this`): - - - `NativeModules`: oriented `NativeModules`, which you can use to call - other Native-Modules. - - - `NativeModulesCall`: trigger `onNativeModulesCall`, same as the deprecated `this.nativeModulesCall`. - - example: - - ```js - const nativeModulesMap = { - CustomModule: URL.createObjectURL( - new Blob( - [ - `export default function(NativeModules, NativeModulesCall) { - return { - async getColor(data, callback) { - const color = await NativeModulesCall('getColor', data); - callback(color); - }, - } - };`, - ], - { type: 'text/javascript' }, - ), - ), - }; - lynxView.nativeModulesMap = nativeModulesMap; - ``` - - In addition, we will use Promise.all to load `nativeModules`, which will optimize performance in the case of multiple modules. - -- refactor: clean the decodeOperations implementation ([#261](https://github.com/lynx-family/lynx-stack/pull/261)) - -- refactor: remove customelement defined detecting logic ([#247](https://github.com/lynx-family/lynx-stack/pull/247)) - - Before this commit, for those element with tag without `-`, we always try to detect if the `x-${tagName}` is defined. - - After this commit, we pre-define a map(could be override by the `overrideLynxTagToHTMLTagMap`) to make that transformation for tag name. - - This change is a path to SSR and the MTS support. - -- Updated dependencies [[`53230f0`](https://github.com/lynx-family/lynx-stack/commit/53230f012216f3a627853e11d544e4be175c5b9b)]: - - @lynx-js/web-worker-rpc@0.9.0 - -## 0.8.0 - -### Minor Changes - -- refactor: remove web-elements/lazy and loadNewTag ([#123](https://github.com/lynx-family/lynx-stack/pull/123)) - - - remove @lynx-js/web-elements/lazy - - remove loadElement - - remove loadNewTag callback - - **This is a breaking change** - - Now we removed the default lazy loading preinstalled in web-core - - Please add the following statement in your web project - - ``` - import "@lynx-js/web-elements/all"; - ``` - -### Patch Changes - -- feat: `createRpcEndpoint` adds a new parameter: `hasReturnTransfer`. ([#194](https://github.com/lynx-family/lynx-stack/pull/194)) - - When `isSync`: false, `hasReturn`: true, you can add `transfer` to the callback postMessage created. - - At this time, the return value structure of register-handler is changed: `{ data: unknown; transfer: Transferable[]; } | Promise<{ data: unknown; transfer: Transferable[];}>`. - -- feat: add two prop of lynx-view about `napiLoader`: ([#173](https://github.com/lynx-family/lynx-stack/pull/173)) - - - `napiModulesMap`: [optional] the napiModule which is called in lynx-core. key is module-name, value is esm url. - - - `onNapiModulesCall`: [optional] the NapiModule value handler. - - **Warning:** This is the internal implementation of `@lynx-js/lynx-core`. In most cases, this API is not required for projects. - - 1. The `napiModulesMap` value should be a esm url which export default a function with two parameters: - - - `NapiModules`: oriented `napiModulesMap`, which you can use to call other Napi-Modules - - - `NapiModulesCall`: trigger `onNapiModulesCall` - - example: - - ```js - const color_environment = URL.createObjectURL( - new Blob( - [ - `export default function(NapiModules, NapiModulesCall) { - return { - getColor() { - NapiModules.color_methods.getColor({ color: 'green' }, color => { - console.log(color); - }); - }, - ColorEngine: class ColorEngine { - getColor(name) { - NapiModules.color_methods.getColor({ color: 'green' }, color => { - console.log(color); - }); - } - }, - }; - };`, - ], - { type: 'text/javascript' }, - ), - ); - - const color_methods = URL.createObjectURL( - new Blob( - [ - `export default function(NapiModules, NapiModulesCall) { - return { - async getColor(data, callback) { - const color = await NapiModulesCall('getColor', data); - callback(color); - }, - }; - };`, - ], - { type: 'text/javascript' }, - ), - ); - - lynxView.napiModuleMap = { - color_environment: color_environment, - color_methods: color_methods, - }; - ``` - - 2. The `onNapiModulesCall` function has three parameters: - - - `name`: the first parameter of `NapiModulesCall`, the function name - - `data`: the second parameter of `NapiModulesCall`, data - - `moduleName`: the module-name of the called napi-module - - ```js - lynxView.onNapiModulesCall = (name, data, moduleName) => { - if (name === 'getColor' && moduleName === 'color_methods') { - return data.color; - } - }; - ``` - -- Updated dependencies [[`ec4e1ce`](https://github.com/lynx-family/lynx-stack/commit/ec4e1ce0d7612d6c0701792a46c78cd52130bad4)]: - - @lynx-js/web-worker-rpc@0.8.0 - -## 0.7.1 - -### Patch Changes - -- Support NPM provenance. ([#30](https://github.com/lynx-family/lynx-stack/pull/30)) - -- fix: some valus should be updateable by global scope ([#130](https://github.com/lynx-family/lynx-stack/pull/130)) - - Now we add an allowlist to allow some identifiers could be updated by globalThis. - - For those values in the allowlist: - - ``` - globalThis.foo = 'xx'; - console.log(foo); //'xx' - ``` - -- refractor: improve some internal logic for element creating in MTS ([#71](https://github.com/lynx-family/lynx-stack/pull/71)) - -- Updated dependencies [[`c617453`](https://github.com/lynx-family/lynx-stack/commit/c617453aea967aba702967deb2916b5c883f03bb)]: - - @lynx-js/web-worker-rpc@0.7.1 - -## 0.7.0 - -### Minor Changes - -- 1abf8f0: feat(web): - - **This is a breaking change** - - 1. A new param for `lynx-view`: `nativeModulesUrl`, which allows you to pass an esm url to add a new module to `NativeModules`. And we bind the `nativeModulesCall` method to each function on the module, run `this.nativeModulesCall()` to trigger onNativeModulesCall. - - ```typescript - export type NativeModuleHandlerContext = { - nativeModulesCall: (name: string, data: Cloneable) => Promise; - }; - ``` - - a simple case: - - ```js - lynxView.nativeModules = URL.createObjectURL( - new Blob( - [ - `export default { - myNativeModules: { - async getColor(data, callback) { - // trigger onNativeModulesCall and get the result - const color = await this.nativeModulesCall('getColor', data); - // return the result to caller - callback(color); - }, - } - };`, - ], - { type: 'text/javascript' }, - ), - ); - ``` - - 2. `onNativeModulesCall` is no longer the value handler of `NativeModules.bridge.call`, it will be the value handler of all `NativeModules` modules. - - **Warning: This is a breaking change.** - - Before this commit, you listen to `NativeModules.bridge.call('getColor')` like this: - - ```js - lynxView.onNativeModulesCall = (name, data, callback) => { - if (name === 'getColor') { - callback(data.color); - } - }; - ``` - - Now you should use it like this: - - ```js - lynxView.onNativeModulesCall = (name, data, moduleName) => { - if (name === 'getColor' && moduleName === 'bridge') { - return data.color; - } - }; - ``` - - You need to use `moduleName` to determine the NativeModules-module. And you don’t need to run callback, just return the result! - -### Patch Changes - -- @lynx-js/web-worker-rpc@0.7.0 - -## 0.6.2 - -### Patch Changes - -- 0412db0: fix: The runtime wrapper parameter name is changed from `runtime` to `lynx_runtime`. - - This is because some project logic may use `runtime`, which may cause duplication of declarations. - -- 085b99e: feat: add `nativeApp.createJSObjectDestructionObserver`, it is a prerequisite for implementing mts event. - - @lynx-js/web-worker-rpc@0.6.2 - -## 0.6.1 - -### Patch Changes - -- 62b7841: feat: add lynx.requireModule in main-thread && \_\_LoadLepusChunk API. - - now the `lynx.requireModule` is available in mts. - - - @lynx-js/web-worker-rpc@0.6.1 - -## 0.6.0 - -### Minor Changes - -- e406d69: refractor: update output json format - - **This is a breaking change** - - Before this change the style info is dump in Javascript code. - - After this change the style info will be pure JSON data. - - Now we're using the css-serializer tool's output only. If you're using plugins for it, now they're enabled. - -### Patch Changes - -- @lynx-js/web-worker-rpc@0.6.0 - -## 0.5.1 - -### Patch Changes - -- c49b1fb: feat: updateData api needs to have the correct format, now you can pass a callback. -- b5ef20e: feat: updateData should also call `updatePage` in main-thread. - - @lynx-js/web-worker-rpc@0.5.1 - -## 0.5.0 - -### Minor Changes - -- 7b84edf: feat: introduce new output chunk format - - **This is a breaking change** - - After this commit, we new introduce a new output format for web platform. - - This new output file is a JSON file, includes all essential info. - - Now we'll add the chunk global scope wrapper on runtime, this will help us to provide a better backward compatibility. - - Also we have a intergrated output file cache for one session. - - Now your `output.filename` will work. - - The split-chunk feature has been temporary removed until the rspeedy team supports this feature for us. - -### Patch Changes - -- 3050faf: refractor: housekeeping -- Updated dependencies [04607bd] -- Updated dependencies [e0f0793] - - @lynx-js/web-worker-rpc@0.5.0 - -## 0.4.2 - -### Patch Changes - -- 168b4fa: feat: rename CloneableObject to Cloneable, Now its type refers to a structure that can be cloned; CloneableObject type is added, which only refers to object types that can be cloned. - -## 0.4.1 - -## 0.4.0 - -## 0.3.1 - -## 0.3.0 - -### Minor Changes - -- 267c935: feat: make cardType could be configurable - -### Patch Changes - -- 6e873bc: fix: incorrect parent component id value on publishComponentEvent - -## 0.2.0 - -## 0.1.0 - -### Minor Changes - -- 2973ba5: chore: add common constants diff --git a/packages/web-platform/web-constants/LICENSE.txt b/packages/web-platform/web-constants/LICENSE.txt deleted file mode 100644 index ce66b4c3a7..0000000000 --- a/packages/web-platform/web-constants/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2023-2024 The Lynx Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/web-platform/web-constants/Notice.txt b/packages/web-platform/web-constants/Notice.txt deleted file mode 100644 index 3ff8881bfd..0000000000 --- a/packages/web-platform/web-constants/Notice.txt +++ /dev/null @@ -1 +0,0 @@ -Copyright 2023-2024 The Lynx Authors. All rights reserved. \ No newline at end of file diff --git a/packages/web-platform/web-constants/README.md b/packages/web-platform/web-constants/README.md deleted file mode 100644 index 7d2b3955b0..0000000000 --- a/packages/web-platform/web-constants/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# @lynx-js/web-constants - -A common dependency library that defines constants for the Lynx3 Web Platform. - -## Usage - -```javascript -import { cardIdAttribute, lynxViewRootDomId }'@lynx-js/web-constants'; -``` diff --git a/packages/web-platform/web-constants/package.json b/packages/web-platform/web-constants/package.json deleted file mode 100644 index 00094c26fe..0000000000 --- a/packages/web-platform/web-constants/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@lynx-js/web-constants", - "version": "0.19.9", - "private": false, - "description": "", - "keywords": [], - "repository": { - "type": "git", - "url": "https://github.com/lynx-family/lynx-stack.git", - "directory": "packages/web-platform/web-constants" - }, - "license": "Apache-2.0", - "type": "module", - "main": "dist/index.js", - "typings": "dist/index.d.ts", - "files": [ - "dist", - "!dist/**/*.js.map", - "LICENSE.txt", - "Notice.txt", - "CHANGELOG.md", - "README.md", - "**/*.css" - ], - "dependencies": { - "@lynx-js/web-worker-rpc": "workspace:*" - }, - "devDependencies": { - "@lynx-js/offscreen-document": "workspace:*" - } -} diff --git a/packages/web-platform/web-constants/src/constants.ts b/packages/web-platform/web-constants/src/constants.ts deleted file mode 100644 index 05e1fde7b9..0000000000 --- a/packages/web-platform/web-constants/src/constants.ts +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export const lynxUniqueIdAttribute = 'l-uid' as const; - -export const cssIdAttribute = 'l-css-id' as const; - -export const componentIdAttribute = 'l-comp-id' as const; - -export const parentComponentUniqueIdAttribute = 'l-p-comp-uid' as const; - -export const lynxEntryNameAttribute = 'l-e-name' as const; - -export const lynxTagAttribute = 'lynx-tag' as const; - -export const lynxDatasetAttribute = 'l-dset' as const; - -export const lynxComponentConfigAttribute = 'l-comp-cfg' as const; - -export const lynxDisposedAttribute = 'l-disposed' as const; - -export const lynxElementTemplateMarkerAttribute = 'l-template' as const; - -export const lynxPartIdAttribute = 'l-part' as const; - -export const lynxDefaultDisplayLinearAttribute = - 'lynx-default-display-linear' as const; - -export const lynxDefaultOverflowVisibleAttribute = - 'lynx-default-overflow-visible' as const; - -export const __lynx_timing_flag = '__lynx_timing_flag' as const; - -export const systemInfo = { - platform: 'web', - lynxSdkVersion: '3.0', -} as Record; - -export const inShadowRootStyles: string[] = [ - ` [lynx-default-display-linear="false"] * { - --lynx-display: flex; - --lynx-display-toggle: var(--lynx-display-flex); - }`, - `[lynx-default-overflow-visible="true"] x-view{ - overflow: visible; - }`, -]; diff --git a/packages/web-platform/web-constants/src/endpoints.ts b/packages/web-platform/web-constants/src/endpoints.ts deleted file mode 100644 index 313e53c66c..0000000000 --- a/packages/web-platform/web-constants/src/endpoints.ts +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { createRpcEndpoint } from '@lynx-js/web-worker-rpc'; -import type { - ExposureWorkerEvent, - LynxCrossThreadEvent, -} from './types/EventType.js'; -import type { Cloneable, CloneableObject } from './types/Cloneable.js'; -import type { StartMainThreadContextConfig } from './types/MainThreadStartConfigs.js'; -import type { IdentifierType, InvokeCallbackRes } from './types/NativeApp.js'; -import type { ElementAnimationOptions } from './types/Element.js'; -import type { - BackMainThreadContextConfig, - LynxTemplate, - MarkTiming, -} from './types/index.js'; -import type { UpdateDataOptions } from './types/UpdateDataOptions.js'; - -export const postExposureEndpoint = createRpcEndpoint< - [{ exposures: ExposureWorkerEvent[]; disExposures: ExposureWorkerEvent[] }], - void ->( - '__postExposure', - false, - false, -); - -export const publicComponentEventEndpoint = createRpcEndpoint< - [componentId: string, hname: string, LynxCrossThreadEvent], - void ->('publicComponentEvent', false, false); - -export const publishEventEndpoint = createRpcEndpoint< - [string, LynxCrossThreadEvent], - void ->('publishEvent', false, false); - -export const postOffscreenEventEndpoint = createRpcEndpoint< - [ - eventType: string, - targetUniqueId: number, - bubbles: boolean, - Parameters[0], - ], - void ->('postOffscreenEventEndpoint', false, false); - -export const switchExposureServiceEndpoint = createRpcEndpoint< - [boolean, boolean], - void ->( - 'switchExposureServiceEndpoint', - false, - false, -); - -export const mainThreadStartEndpoint = createRpcEndpoint< - [StartMainThreadContextConfig], - void ->('mainThreadStart', false, false); - -export const updateDataEndpoint = createRpcEndpoint< - [Cloneable, UpdateDataOptions | undefined], - void ->('updateData', false, true); - -export const sendGlobalEventEndpoint = createRpcEndpoint< - [string, Cloneable[] | undefined], - void ->('sendGlobalEventEndpoint', false, false); - -export const disposeEndpoint = createRpcEndpoint< - [], - void ->('dispose', false, true); - -export const BackgroundThreadStartEndpoint = createRpcEndpoint<[ - BackMainThreadContextConfig, -], void>('start', false, true); - -/** - * Error message, info - */ -export const reportErrorEndpoint = createRpcEndpoint< - [Error, unknown, string], - void ->('reportError', false, false); - -export const flushElementTreeEndpoint = createRpcEndpoint< - [ - operations: (string | number)[], - ], - void ->('flushElementTree', false, true); - -export const callLepusMethodEndpoint = createRpcEndpoint< - [name: string, data: unknown], - void ->('callLepusMethod', false, true); - -export const multiThreadExposureChangedEndpoint = createRpcEndpoint< - [string[]], - void ->('multiThreadExposureChangedEndpoint', false, false); - -export const invokeUIMethodEndpoint = createRpcEndpoint< - [ - type: IdentifierType, - identifier: string, - component_id: string, - method: string, - params: object, - root_unique_id: number | undefined, - ], - InvokeCallbackRes ->('__invokeUIMethod', false, true); - -export const setNativePropsEndpoint = createRpcEndpoint< - [ - type: IdentifierType, - identifier: string, - component_id: string, - first_only: boolean, - native_props: object, - root_unique_id: number | undefined, - ], - void ->('__setNativeProps', false, true); - -export const getPathInfoEndpoint = createRpcEndpoint< - [ - type: IdentifierType, - identifier: string, - component_id: string, - first_only: boolean, - root_unique_id?: number | undefined, - ], - InvokeCallbackRes ->('__getPathInfo', false, true); - -export const nativeModulesCallEndpoint = createRpcEndpoint< - [name: string, data: Cloneable, moduleName: string], - any ->('nativeModulesCall', false, true); - -export const napiModulesCallEndpoint = createRpcEndpoint< - [name: string, data: Cloneable, moduleName: string], - any ->('napiModulesCall', false, true, true); - -export const getCustomSectionsEndpoint = createRpcEndpoint< - [string], - Cloneable ->('getCustomSections', false, true); - -export const markTimingEndpoint = createRpcEndpoint< - [MarkTiming[]], - void ->('markTiming', false, false); - -export const postTimingFlagsEndpoint = createRpcEndpoint< - [ - timingFlags: string[], - pipelineId: string | undefined, - ], - void ->('postTimingFlags', false, false); - -export const triggerComponentEventEndpoint = createRpcEndpoint< - [ - id: string, - params: { - eventDetail: CloneableObject; - eventOption: CloneableObject; - componentId: string; - }, - ], - void ->('__triggerComponentEvent', false, false); - -export const selectComponentEndpoint = createRpcEndpoint< - [ - componentId: string, - idSelector: string, - single: boolean, - ], - void ->('__selectComponent', false, true); - -export const dispatchLynxViewEventEndpoint = createRpcEndpoint< - [ - eventType: string, - detail: CloneableObject, - ], - void ->('dispatchLynxViewEvent', false, false); - -export const dispatchNapiModuleEndpoint = createRpcEndpoint< - [data: Cloneable], - void ->('dispatchNapiModule', false, false); -export const dispatchCoreContextOnBackgroundEndpoint = createRpcEndpoint< - [{ - type: string; - data: Cloneable; - }], - void ->('dispatchCoreContextOnBackground', false, false); - -export const dispatchJSContextOnMainThreadEndpoint = createRpcEndpoint< - [{ - type: string; - data: Cloneable; - }], - void ->('dispatchJSContextOnMainThread', false, false); - -export const triggerElementMethodEndpoint = createRpcEndpoint< - [ - method: string, - id: string, - options: ElementAnimationOptions, - ], - void ->('__triggerElementMethod', false, false); - -export const updateGlobalPropsEndpoint = createRpcEndpoint< - [Cloneable], - void ->('updateGlobalProps', false, false); - -export const updateI18nResourcesEndpoint = createRpcEndpoint< - [Cloneable], - void ->('updateI18nResources', false, false); - -export const updateI18nResourceEndpoint = createRpcEndpoint< - [Cloneable | undefined], - void ->('updateI18nResource', false, false); - -export const dispatchI18nResourceEndpoint = createRpcEndpoint< - [Cloneable], - void ->('dispatchI18nResource', false, false); - -export const queryComponentEndpoint = createRpcEndpoint< - [string], - { code: number; detail: { schema: string } } ->('queryComponent', false, true); - -export const updateBTSTemplateCacheEndpoint = createRpcEndpoint< - [/** url */ string, LynxTemplate], - void ->('updateBTSTemplateCacheEndpoint', false, true); - -export const loadTemplateMultiThread = createRpcEndpoint< - [string], - LynxTemplate ->('loadTemplateMultiThread', false, true); - -export const reloadEndpoint = createRpcEndpoint< - [], - void ->('reload', false, false); diff --git a/packages/web-platform/web-constants/src/eventName.ts b/packages/web-platform/web-constants/src/eventName.ts deleted file mode 100644 index 55b9fefe1c..0000000000 --- a/packages/web-platform/web-constants/src/eventName.ts +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export const W3cEventNameToLynx: Record = { - click: 'tap', - lynxscroll: 'scroll', - lynxscrollend: 'scrollend', - overlaytouch: 'touch', - lynxfocus: 'focus', - lynxblur: 'blur', - lynxinput: 'input', -}; -export const LynxEventNameToW3cByTagName: Record< - string, - Record -> = { - 'X-INPUT': { - 'blur': 'lynxblur', - 'focus': 'lynxfocus', - 'input': 'lynxinput', - }, - 'X-TEXTAREA': { - 'blur': 'lynxblur', - 'focus': 'lynxfocus', - 'input': 'lynxinput', - }, -}; - -export const LynxEventNameToW3cCommon: Record = { - tap: 'click', - scroll: 'lynxscroll', - scrollend: 'lynxscrollend', - touch: 'overlaytouch', -}; diff --git a/packages/web-platform/web-constants/src/index.ts b/packages/web-platform/web-constants/src/index.ts deleted file mode 100644 index 747d30ec60..0000000000 --- a/packages/web-platform/web-constants/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export * from './constants.js'; -export * from './eventName.js'; -export * from './endpoints.js'; -export * from './types/index.js'; -export * from './utils/index.js'; -export type * from '@lynx-js/web-worker-rpc'; diff --git a/packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts b/packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts deleted file mode 100644 index 1fdb4b2760..0000000000 --- a/packages/web-platform/web-constants/src/types/BackThreadStartConfigs.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { Cloneable } from './Cloneable.js'; -import type { LynxTemplate } from './LynxModule.js'; -import type { NapiModulesMap } from './NapiModules.js'; -import type { NativeModulesMap } from './NativeModules.js'; - -export interface BackMainThreadContextConfig { - initData: unknown; - globalProps: unknown; - template: LynxTemplate; - cardType: string; - customSections: Record; - nativeModulesMap: NativeModulesMap; - napiModulesMap: NapiModulesMap; -} diff --git a/packages/web-platform/web-constants/src/types/Cloneable.ts b/packages/web-platform/web-constants/src/types/Cloneable.ts deleted file mode 100644 index e99d32d1e6..0000000000 --- a/packages/web-platform/web-constants/src/types/Cloneable.ts +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export type Cloneable = - | T - | Record - | T[] - | Array>; - -export type CloneableObject = - Record< - string, - T | T[] - >; diff --git a/packages/web-platform/web-constants/src/types/Element.ts b/packages/web-platform/web-constants/src/types/Element.ts deleted file mode 100644 index 3e463a1e75..0000000000 --- a/packages/web-platform/web-constants/src/types/Element.ts +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { LynxEventType } from './EventType.js'; - -export interface LynxRuntimeInfo { - eventHandlerMap: Record; - componentAtIndex?: ComponentAtIndexCallback; - enqueueComponent?: EnqueueComponentCallback; -} - -export type ComponentAtIndexCallback = ( - list: HTMLElement, - listID: number, - cellIndex: number, - operationID: number, - enableReuseNotification: boolean, -) => void; - -export type EnqueueComponentCallback = ( - list: HTMLElement, - listID: number, - sign: number, -) => void; - -export const enum AnimationOperation { - START = 0, - PLAY, - PAUSE, - CANCEL, - FINISH, -} - -export interface ElementAnimationOptions { - operation: AnimationOperation; - id: string; - keyframes?: any; - timingOptions?: Record; -} diff --git a/packages/web-platform/web-constants/src/types/EventType.ts b/packages/web-platform/web-constants/src/types/EventType.ts deleted file mode 100644 index 45e7af1940..0000000000 --- a/packages/web-platform/web-constants/src/types/EventType.ts +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { Cloneable } from './Cloneable.js'; - -export type LynxEventType = - | 'bindEvent' - | 'catchEvent' - | 'capture-bind' - | 'capture-catch'; - -export interface LynxCrossThreadEventTarget { - dataset: { - [key: string]: Cloneable; - }; - id: string | null; - uniqueId: number; -} - -export interface LynxCrossThreadEvent< - T = { - [key: string]: string | number | undefined | null; - }, -> { - type: string; - timestamp: number; - target: LynxCrossThreadEventTarget; - currentTarget: LynxCrossThreadEventTarget | null; - detail: T; - [key: string]: string | number | undefined | null | {}; -} - -export interface MainThreadScriptEvent< - T = { - [key: string]: string | number | undefined | null; - }, -> extends LynxCrossThreadEvent { - target: LynxCrossThreadEventTarget & { elementRefptr: unknown }; - currentTarget: - | (LynxCrossThreadEventTarget & { elementRefptr: unknown }) - | null; -} - -export type ExposureEventDetail = { - 'exposure-id': string; - 'exposure-scene': string; - exposureID: string; - exposureScene: string; - 'unique-id': number; -}; -export type ExposureEvent = { - detail: ExposureEventDetail; -}; - -export type ExposureWorkerEvent = - & LynxCrossThreadEvent - & ExposureEventDetail; - -export type MinimalRawEventObject = { - type: string; - target: Pick | null; - currentTarget: Pick | null; - detail?: Cloneable; - isTrusted: boolean; - timeStamp: number; - propertyName?: string; // For transition events - animationName?: string; // For animation events - touches?: unknown[]; // For touch events - targetTouches?: unknown[]; // For touch events - changedTouches?: unknown[]; // For touch events -}; diff --git a/packages/web-platform/web-constants/src/types/FlushElementTreeOptions.ts b/packages/web-platform/web-constants/src/types/FlushElementTreeOptions.ts deleted file mode 100644 index 76b1bda9e4..0000000000 --- a/packages/web-platform/web-constants/src/types/FlushElementTreeOptions.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { PerformancePipelineOptions } from './Performance.js'; - -export interface FlushElementTreeOptions { - pipelineOptions?: PerformancePipelineOptions; -} diff --git a/packages/web-platform/web-constants/src/types/I18n.ts b/packages/web-platform/web-constants/src/types/I18n.ts deleted file mode 100644 index cee2251826..0000000000 --- a/packages/web-platform/web-constants/src/types/I18n.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { Cloneable } from './Cloneable.js'; - -export interface I18nResourceTranslationOptions { - locale: string; - channel: string; - fallback_url?: string; - [key: string]: Cloneable; -} - -export const getCacheI18nResourcesKey = ( - options: I18nResourceTranslationOptions, -) => { - return `${options.locale}_${options.channel}_${options.fallback_url}`; -}; - -export interface CacheI18nResources { - /** the i18nResource key currently being used by the page */ - curCacheKey: string; - /** the complete set of all requested i18nResources */ - i18nResources: Map; -} - -export type InitI18nResources = Array<{ - options: I18nResourceTranslationOptions; - resource: Record; -}>; - -export const i18nResourceMissedEventName = 'i18nResourceMissed' as const; - -// The purpose of using class is to keep the reference when reassigning -export class I18nResources { - data?: InitI18nResources; - constructor(data?: InitI18nResources) { - this.data = data; - } - setData(data: InitI18nResources) { - this.data = data; - } -} - -// The purpose of using class is to keep the reference when reassigning -export class I18nResource { - data?: Cloneable; - constructor(data?: Cloneable) { - this.data = data; - } - setData(data: Cloneable) { - this.data = data; - } -} diff --git a/packages/web-platform/web-constants/src/types/JSRealm.ts b/packages/web-platform/web-constants/src/types/JSRealm.ts deleted file mode 100644 index f188d23df8..0000000000 --- a/packages/web-platform/web-constants/src/types/JSRealm.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type JSRealm = { - globalWindow: typeof globalThis; - loadScript: (url: string) => Promise; - loadScriptSync: (url: string) => unknown; -}; diff --git a/packages/web-platform/web-constants/src/types/LynxContextEventTarget.ts b/packages/web-platform/web-constants/src/types/LynxContextEventTarget.ts deleted file mode 100644 index 7830c279be..0000000000 --- a/packages/web-platform/web-constants/src/types/LynxContextEventTarget.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { Cloneable } from './Cloneable.js'; - -export const DispatchEventResult = { - // Event was not canceled by event handler or default event handler. - NotCanceled: 0, - // Event was canceled by event handler; i.e. a script handler calling - // preventDefault. - CanceledByEventHandler: 1, - // Event was canceled by the default event handler; i.e. executing the default - // action. This result should be used sparingly as it deviates from the DOM - // Event Dispatch model. Default event handlers really shouldn't be invoked - // inside of dispatch. - CanceledByDefaultEventHandler: 2, - // Event was canceled but suppressed before dispatched to event handler. This - // result should be used sparingly; and its usage likely indicates there is - // potential for a bug. Trusted events may return this code; but untrusted - // events likely should always execute the event handler the developer intends - // to execute. - CanceledBeforeDispatch: 3, -} as const; - -export type ContextCrossThreadEvent = { - type: string; - data: Cloneable; -}; -export interface LynxContextEventTarget { - onTriggerEvent?: (event: ContextCrossThreadEvent) => void; - - postMessage(message: any): void; - dispatchEvent( - event: ContextCrossThreadEvent, - ): typeof DispatchEventResult[keyof typeof DispatchEventResult]; - addEventListener(type: string, listener: (event: Event) => void): void; - removeEventListener( - type: string, - listener: (event: Event) => void, - ): void; -} diff --git a/packages/web-platform/web-constants/src/types/LynxModule.ts b/packages/web-platform/web-constants/src/types/LynxModule.ts deleted file mode 100644 index 356bb36ca5..0000000000 --- a/packages/web-platform/web-constants/src/types/LynxModule.ts +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import type { Cloneable } from './Cloneable.js'; -import type { LynxEventType } from './EventType.js'; -import type { PageConfig } from './PageConfig.js'; -import type { StyleInfo } from './StyleInfo.js'; - -export type ElementTemplateData = { - id: string; - type: string; - idSelector?: string; - class?: string[]; - attributes?: Record; - builtinAttributes?: Record; - children?: ElementTemplateData[]; - events?: { type: LynxEventType; name: string; value: string }[]; - dataset?: Record; -}; - -export interface LynxTemplate { - styleInfo: StyleInfo; - pageConfig: PageConfig; - customSections: { - [key: string]: { - type?: 'lazy'; - content: Cloneable; - }; - }; - cardType?: string; - lepusCode: { - root: string; - [key: string]: string; - }; - manifest: { - '/app-service.js': string; - [key: string]: string; - }; - elementTemplate: Record; - version?: number; - appType: 'card' | 'lazy'; -} - -export type BTSChunkEntry = ( - postMessage: undefined, - module: { exports: unknown }, - exports: unknown, - lynxCoreInject: unknown, - Card: unknown, - setTimeout: unknown, - setInterval: unknown, - clearInterval: unknown, - clearTimeout: unknown, - NativeModules: unknown, - Component: unknown, - ReactLynx: unknown, - nativeAppId: unknown, - Behavior: unknown, - LynxJSBI: unknown, - lynx: unknown, - // BOM API - window: unknown, - document: unknown, - frames: unknown, - location: unknown, - navigator: unknown, - localStorage: unknown, - history: unknown, - Caches: unknown, - screen: unknown, - alert: unknown, - confirm: unknown, - prompt: unknown, - fetch: unknown, - XMLHttpRequest: unknown, - webkit: unknown, - Reporter: unknown, - print: unknown, - global: unknown, - // Lynx API - requestAnimationFrame: unknown, - cancelAnimationFrame: unknown, -) => unknown; - -export interface LynxJSModule { - exports?: (lynx_runtime: any) => unknown; -} diff --git a/packages/web-platform/web-constants/src/types/MainThreadGlobalThis.ts b/packages/web-platform/web-constants/src/types/MainThreadGlobalThis.ts deleted file mode 100644 index 579f3eef89..0000000000 --- a/packages/web-platform/web-constants/src/types/MainThreadGlobalThis.ts +++ /dev/null @@ -1,439 +0,0 @@ -import type { systemInfo } from '../constants.js'; -import type { Cloneable } from './Cloneable.js'; -import type { - ComponentAtIndexCallback, - EnqueueComponentCallback, -} from './Element.js'; -import type { LynxEventType } from './EventType.js'; -import type { FlushElementTreeOptions } from './FlushElementTreeOptions.js'; -import type { I18nResourceTranslationOptions } from './index.js'; -import type { MainThreadLynx } from './MainThreadLynx.js'; -import type { ProcessDataCallback } from './ProcessDataCallback.js'; -import type { UpdateDataOptions } from './UpdateDataOptions.js'; -import type { InvokeCallbackRes } from './NativeApp.js'; - -type ElementPAPIEventHandler = - | string - | { type: 'worklet'; value: unknown } - | undefined; - -export type AddEventPAPI = ( - element: HTMLElement, - eventType: LynxEventType, - eventName: string, - newEventHandler: ElementPAPIEventHandler, -) => void; - -export type GetEventPAPI = ( - element: HTMLElement, - eventName: string, - eventType: LynxEventType, -) => ElementPAPIEventHandler; - -export type GetEventsPAPI = ( - element: HTMLElement, -) => { - type: LynxEventType; - name: string; - function: ElementPAPIEventHandler; -}[]; - -export type SetEventsPAPI = ( - element: HTMLElement, - listeners: { - type: LynxEventType; - name: string; - function: ElementPAPIEventHandler; - }[], -) => void; - -export type AppendElementPAPI = ( - parent: HTMLElement, - child: HTMLElement, -) => void; - -export type ElementIsEqualPAPI = ( - left: HTMLElement | null, - right: HTMLElement | null, -) => boolean; - -export type FirstElementPAPI = ( - element: HTMLElement, -) => HTMLElement | null; - -export type GetChildrenPAPI = ( - element: HTMLElement, -) => HTMLElement[] | null; - -export type GetParentPAPI = ( - element: HTMLElement, -) => HTMLElement | null; - -export type InsertElementBeforePAPI = ( - parent: HTMLElement, - child: HTMLElement, - ref?: HTMLElement | null, -) => HTMLElement; - -export type LastElementPAPI = ( - element: HTMLElement, -) => HTMLElement | null; - -export type NextElementPAPI = ( - element: HTMLElement, -) => HTMLElement | null; - -export type RemoveElementPAPI = ( - parent: HTMLElement, - child: HTMLElement, -) => HTMLElement; - -export type ReplaceElementPAPI = ( - newElement: HTMLElement, - oldElement: HTMLElement, -) => void; - -export type ReplaceElementsPAPI = ( - parent: HTMLElement, - newChildren: HTMLElement[] | HTMLElement, - oldChildren?: HTMLElement[] | HTMLElement | null | undefined, -) => void; - -export type AddConfigPAPI = ( - element: HTMLElement, - type: string, - value: Cloneable, -) => void; - -export type AddDatasetPAPI = ( - element: HTMLElement, - key: string, - value: Cloneable, -) => void; - -export type GetDatasetPAPI = ( - element: HTMLElement, -) => Record; - -export type GetDataByKeyPAPI = ( - element: HTMLElement, - key: string, -) => Cloneable | undefined; - -export type GetAttributesPAPI = ( - element: HTMLElement, -) => Record; - -export type GetComponentIdPAPI = ( - element: HTMLElement, -) => string | null | undefined; - -export type GetElementConfigPAPI = ( - element: HTMLElement, -) => Record; - -export type GetElementUniqueIDPAPI = ( - element: HTMLElement, -) => number; - -export type GetIDPAPI = ( - element: HTMLElement, -) => string | null; - -export type GetTagPAPI = ( - element: HTMLElement, -) => string; - -export type SetConfigPAPI = ( - element: HTMLElement, - config: Record, -) => void; - -export type SetDatasetPAPI = ( - element: HTMLElement, - dataset: Record, -) => void; - -export type SetIDPAPI = ( - element: HTMLElement, - id: string | null, -) => void; - -export type UpdateComponentIDPAPI = ( - element: HTMLElement, - componentID: string, -) => void; - -export type UpdateComponentInfoPAPI = ( - element: HTMLElement, - params: { - componentID?: string; - name?: string; - path?: string; - entry?: string; - cssID?: number; - }, -) => void; - -export type GetClassesPAPI = ( - element: HTMLElement, -) => string[]; - -export type CreateViewPAPI = ( - parentComponentUniqueID: number, -) => HTMLElement; - -export type SwapElementPAPI = ( - childA: HTMLElement, - childB: HTMLElement, -) => void; - -export type UpdateListInfoAttributeValue = { - insertAction: { - position: number; - }[]; - removeAction: number[]; -}; -export type SetAttributePAPI = ( - element: HTMLElement, - key: Exclude, - value: string | null | undefined | boolean, -) => void; -export type SetAttributePAPIUpdateListInfo = ( - element: HTMLElement, - key: 'update-list-info', - value: UpdateListInfoAttributeValue | null, -) => void; - -export type UpdateListCallbacksPAPI = ( - element: HTMLElement, - componentAtIndex: ComponentAtIndexCallback, - enqueueComponent: EnqueueComponentCallback, -) => void; - -export type CreateTextPAPI = CreateViewPAPI; - -export type CreateRawTextPAPI = (text: string) => HTMLElement; - -export type CreateImagePAPI = CreateViewPAPI; - -export type CreateScrollViewPAPI = CreateViewPAPI; - -export type CreateWrapperElementPAPI = CreateViewPAPI; - -export type CreateComponentPAPI = ( - componentParentUniqueID: number, - componentID: string, - cssID: number, - entryName: string, - name: string, - path: string, - config: Record | null | undefined, - info: Record | null | undefined, -) => HTMLElement; - -export type CreateElementPAPI = ( - tagName: string, - parentComponentUniqueId: number, - info?: Record | null | undefined, -) => HTMLElement; - -export type CreatePagePAPI = ( - componentID: string, - cssID: number, - info?: Record | null | undefined, -) => HTMLElement; - -export type CreateListPAPI = ( - parentComponentUniqueId: number, - componentAtIndex: ComponentAtIndexCallback, - enqueueComponent: EnqueueComponentCallback, -) => HTMLElement; - -export type AddClassPAPI = ( - element: HTMLElement, - className: string, -) => void; - -export type SetClassesPAPI = ( - element: HTMLElement, - classNames: string | null, -) => void; - -export type AddInlineStylePAPI = ( - element: HTMLElement, - key: number | string, - value: string | number | null | undefined, -) => void; - -export type SetInlineStylesPAPI = ( - element: HTMLElement, - value: string | Record | undefined, -) => void; - -export type SetCSSIdPAPI = ( - elements: HTMLElement[], - cssId: number | null, - entryName: string | undefined, -) => void; - -export type GetPageElementPAPI = () => HTMLElement | undefined; - -export type MarkTemplateElementPAPI = ( - element: HTMLElement, -) => void; - -export type MarkPartElementPAPI = ( - element: HTMLElement, - partId: string, -) => void; - -export type GetTemplatePartsPAPI = ( - templateElement: HTMLElement, -) => Record; - -interface JSErrorInfo { - release: string; -} - -export type ElementFromBinaryPAPI = ( - templateId: string, - parentComponentUniId: number, -) => HTMLElement[]; - -export type GetAttributeByNamePAPI = ( - element: HTMLElement, - name: string, -) => string | null; - -export type QueryComponentPAPI = ( - source: string, - resultCallback?: (result: { - code: number; - data?: { - url: string; - evalResult: unknown; - }; - }) => void, -) => null; -export type InvokeUIMethodPAPI = ( - element: HTMLElement, - method: string, - params: object, - callback: (result: InvokeCallbackRes) => void, -) => void; - -export type QuerySelectorPAPI = ( - element: HTMLElement, - selector: string, -) => unknown; - -export type ElementAnimatePAPI = ( - element: HTMLElement, - args: - | [ - operation: 0, - name: string, - keyframes: Record[], - options?: Record, - ] - | [operation: 1 | 2 | 3 | 4, name: string], -) => void; - -export interface ElementPAPIs { - __ElementFromBinary: ElementFromBinaryPAPI; - - // __GetTemplateParts currently only provided by the thread-strategy = "all-on-ui" (default) - __GetTemplateParts?: GetTemplatePartsPAPI; - - __MarkPartElement: MarkPartElementPAPI; - __MarkTemplateElement: MarkTemplateElementPAPI; - __AddEvent: AddEventPAPI; - __GetEvent: GetEventPAPI; - __GetEvents: GetEventsPAPI; - __SetEvents: SetEventsPAPI; - __AppendElement: AppendElementPAPI; - __ElementIsEqual: ElementIsEqualPAPI; - __FirstElement: FirstElementPAPI; - __GetChildren: GetChildrenPAPI; - __GetParent: GetParentPAPI; - __InsertElementBefore: InsertElementBeforePAPI; - __LastElement: LastElementPAPI; - __NextElement: NextElementPAPI; - __RemoveElement: RemoveElementPAPI; - __ReplaceElement: ReplaceElementPAPI; - __ReplaceElements: ReplaceElementsPAPI; - __AddConfig: AddConfigPAPI; - __AddDataset: AddDatasetPAPI; - __GetDataset: GetDatasetPAPI; - __GetDataByKey: GetDataByKeyPAPI; - __GetAttributes: GetAttributesPAPI; - __GetComponentID: GetComponentIdPAPI; - __GetElementConfig: GetElementConfigPAPI; - __GetElementUniqueID: GetElementUniqueIDPAPI; - __GetID: GetIDPAPI; - __GetTag: GetTagPAPI; - __SetConfig: SetConfigPAPI; - __GetConfig: GetElementConfigPAPI; - __SetDataset: SetDatasetPAPI; - __SetID: SetIDPAPI; - __UpdateComponentID: UpdateComponentIDPAPI; - __UpdateComponentInfo: UpdateComponentInfoPAPI; - __GetClasses: GetClassesPAPI; - __CreateView: CreateViewPAPI; - __SwapElement: SwapElementPAPI; - __CreateText: CreateTextPAPI; - __CreateRawText: CreateRawTextPAPI; - __CreateImage: CreateImagePAPI; - __CreateScrollView: CreateScrollViewPAPI; - __CreateWrapperElement: CreateWrapperElementPAPI; - __CreateComponent: CreateComponentPAPI; - __CreateElement: CreateElementPAPI; - __CreatePage: CreatePagePAPI; - __CreateList: CreateListPAPI; - __SetAttribute: SetAttributePAPI & SetAttributePAPIUpdateListInfo; - __UpdateListCallbacks: UpdateListCallbacksPAPI; - __AddClass: AddClassPAPI; - __SetClasses: SetClassesPAPI; - __AddInlineStyle: AddInlineStylePAPI; - __SetInlineStyles: SetInlineStylesPAPI; - __SetCSSId: SetCSSIdPAPI; - __GetPageElement: GetPageElementPAPI; - __GetAttributeByName: GetAttributeByNamePAPI; - __FlushElementTree: ( - _subTree?: unknown, - options?: FlushElementTreeOptions, - ) => void; - __InvokeUIMethod: InvokeUIMethodPAPI; - __QuerySelector: QuerySelectorPAPI; - __ElementAnimate: ElementAnimatePAPI; -} - -export interface MainThreadGlobalThis extends ElementPAPIs { - __globalProps: unknown; - SystemInfo: typeof systemInfo; - globalThis?: MainThreadGlobalThis; - lynx: MainThreadLynx; - processData?: ProcessDataCallback; - ssrEncode?: () => string; - ssrHydrate?: (encodeData?: string | null) => void; - _ReportError: (error: Error, _: unknown) => void; - _SetSourceMapRelease: (errInfo: JSErrorInfo) => void; - __OnLifecycleEvent: (lifeCycleEvent: Cloneable) => void; - __LoadLepusChunk: (path: string) => boolean; - _I18nResourceTranslation: ( - options: I18nResourceTranslationOptions, - ) => unknown | undefined; - // This is an empty implementation, just to avoid business call errors - _AddEventListener: (...args: unknown[]) => void; - __QueryComponent: QueryComponentPAPI; - // DSL runtime binding - processEvalResult?: ( - exports: unknown, - schema: string, - ) => unknown; - // the following methods is assigned by the main thread user code - renderPage: ((data: unknown) => void) | undefined; - updatePage?: (data: Cloneable, options?: UpdateDataOptions) => void; - runWorklet?: (obj: unknown, event: unknown) => void; -} diff --git a/packages/web-platform/web-constants/src/types/MainThreadLynx.ts b/packages/web-platform/web-constants/src/types/MainThreadLynx.ts deleted file mode 100644 index ca8e8453f3..0000000000 --- a/packages/web-platform/web-constants/src/types/MainThreadLynx.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { systemInfo } from '../constants.js'; -import type { Cloneable } from './Cloneable.js'; -import type { LynxContextEventTarget } from './LynxContextEventTarget.js'; -export interface MainThreadLynx { - getJSContext: () => LynxContextEventTarget; - requestAnimationFrame: (cb: () => void) => number; - cancelAnimationFrame: (handler: number) => void; - __globalProps: unknown; - getCustomSectionSync: (key: string) => Cloneable; - markPipelineTiming: (pipelineId: string, timingKey: string) => void; - SystemInfo: typeof systemInfo; - setTimeout: typeof setTimeout; - clearTimeout: typeof clearTimeout; - setInterval: typeof setInterval; - clearInterval: typeof clearInterval; -} diff --git a/packages/web-platform/web-constants/src/types/MainThreadStartConfigs.ts b/packages/web-platform/web-constants/src/types/MainThreadStartConfigs.ts deleted file mode 100644 index a181712f2e..0000000000 --- a/packages/web-platform/web-constants/src/types/MainThreadStartConfigs.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { Cloneable } from './Cloneable.js'; -import type { InitI18nResources } from './index.js'; -import type { LynxTemplate } from './LynxModule.js'; -import type { NapiModulesMap } from './NapiModules.js'; -import type { NativeModulesMap } from './NativeModules.js'; -import type { BrowserConfig } from './PageConfig.js'; - -export interface StartMainThreadContextConfig { - template: LynxTemplate; - initData: Cloneable; - globalProps: Cloneable; - browserConfig: BrowserConfig; - nativeModulesMap: NativeModulesMap; - napiModulesMap: NapiModulesMap; - tagMap: Record; - initI18nResources: InitI18nResources; -} diff --git a/packages/web-platform/web-constants/src/types/MarkTiming.ts b/packages/web-platform/web-constants/src/types/MarkTiming.ts deleted file mode 100644 index 96d3266cc6..0000000000 --- a/packages/web-platform/web-constants/src/types/MarkTiming.ts +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export interface MarkTiming { - timingKey: string; - pipelineId?: string; - timeStamp: number; -} - -export type MarkTimingInternal = ( - timingKey: string, - pipelineId?: string, - timeStamp?: number, -) => void; diff --git a/packages/web-platform/web-constants/src/types/NapiModules.ts b/packages/web-platform/web-constants/src/types/NapiModules.ts deleted file mode 100644 index 2a7515c6e8..0000000000 --- a/packages/web-platform/web-constants/src/types/NapiModules.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { Cloneable } from './Cloneable.js'; - -export type NapiModulesMap = Record; - -export type NapiModulesCall = ( - name: string, - data: any, - moduleName: string, - dispatchNapiModules: (data: Cloneable) => void, -) => - | Promise<{ data: unknown; transfer?: unknown[] } | undefined> - | { - data: unknown; - transfer?: unknown[]; - } - | undefined - | Promise; diff --git a/packages/web-platform/web-constants/src/types/NativeApp.ts b/packages/web-platform/web-constants/src/types/NativeApp.ts deleted file mode 100644 index c26f8e999f..0000000000 --- a/packages/web-platform/web-constants/src/types/NativeApp.ts +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the - -import type { CloneableObject } from './Cloneable.js'; -import type { I18nResource } from './I18n.js'; -import type { LynxContextEventTarget } from './LynxContextEventTarget.js'; -import type { PerformancePipelineOptions } from './Performance.js'; - -// LICENSE file in the root directory of this source tree. -export const enum IdentifierType { - ID_SELECTOR, // css selector - /** - * @deprecated - */ - REF_ID, - UNIQUE_ID, // element_id -} -export type LynxKernelInject = { - init: (opt: { tt: LynxKernelInject }) => void; - buildVersion?: string; -}; - -export interface EventEmitter { - addListener( - eventName: string, - listener: (...args: unknown[]) => void, - context?: object, - ): void; - - removeListener( - eventName: string, - listener: (...args: unknown[]) => void, - ): void; - - emit(eventName: string, data: unknown): void; - - removeAllListeners(eventName?: string): void; - - trigger(eventName: string, params: string | Record): void; - - toggle(eventName: string, ...data: unknown[]): void; -} - -export type NativeLynx = { - __globalProps: CloneableObject; - getJSModule(_moduleName: string): unknown; - getNativeApp(): NativeApp; - getCoreContext(): LynxContextEventTarget; - getCustomSectionSync(key: string): CloneableObject; - getCustomSection(key: string): Promise; -}; - -export type NativeTTObject = { - lynx: NativeLynx; - OnLifecycleEvent: (...args: unknown[]) => void; - publicComponentEvent( - componentId: string, - handlerName: string, - eventData?: unknown, - ): void; - publishEvent(handlerName: string, data?: unknown): void; - GlobalEventEmitter: EventEmitter; - lynxCoreInject: any; - updateCardData: ( - newData: Record, - options?: Record, - ) => void; - onNativeAppReady: () => void; - globalThis?: { - tt: NativeTTObject; - }; - updateGlobalProps: (newData: Record) => void; -}; - -export type BundleInitReturnObj = { - /** - * On the web platform - * @param opt - * @returns - */ - init: (opt: { - tt: NativeTTObject; - }) => unknown; - buildVersion?: string; -}; - -/** - * const enum will be shakedown in Typescript Compiler - */ -export const enum ErrorCode { - SUCCESS = 0, - UNKNOWN = 1, - NODE_NOT_FOUND = 2, - METHOD_NOT_FOUND = 3, - PARAM_INVALID = 4, - SELECTOR_NOT_SUPPORTED = 5, - NO_UI_FOR_NODE = 6, -} - -export interface InvokeCallbackRes { - code: ErrorCode; - data?: unknown; -} - -export interface NativeApp { - id: string; - - callLepusMethod( - name: string, - data: unknown, - callback: (ret: unknown) => void, - ): void; - - setTimeout: typeof setTimeout; - - setInterval: typeof setInterval; - - clearTimeout: typeof clearTimeout; - - clearInterval: typeof clearInterval; - - requestAnimationFrame: (cb: () => void) => void; - - cancelAnimationFrame: (id: number) => void; - - readScript: (sourceURL: string, entryName?: string) => string; - - loadScript: (sourceURL: string, entryName?: string) => BundleInitReturnObj; - - loadScriptAsync( - sourceURL: string, - callback: (message: string | null, exports?: BundleInitReturnObj) => void, - entryName?: string, - ): void; - nativeModuleProxy: Record; - - setNativeProps: ( - type: IdentifierType, - identifier: string, - component_id: string, - first_only: boolean, - native_props: Record, - root_unique_id: number | undefined, - ) => void; - - invokeUIMethod: ( - type: IdentifierType, - identifier: string, - component_id: string, - method: string, - params: object, - callback: (ret: InvokeCallbackRes) => void, - root_unique_id: number, - ) => void; - - getPathInfo: ( - type: IdentifierType, - identifier: string, - component_id: string, - first_only: boolean, - callback: (ret: InvokeCallbackRes) => void, - root_unique_id?: number, - ) => void; - - setCard(tt: NativeTTObject): void; - - // Timing related - generatePipelineOptions: () => PerformancePipelineOptions; - onPipelineStart: (pipeline_id: string) => void; - markPipelineTiming: (pipeline_id: string, timing_key: string) => void; - bindPipelineIdWithTimingFlag: ( - pipeline_id: string, - timing_flag: string, - ) => void; - - /** - * Support from Lynx 3.0 - */ - profileStart: (traceName: string, option?: unknown) => void; - - /** - * Support from Lynx 3.0 - */ - profileEnd: () => void; - - /*** - * Support from Lynx 3.0 - */ - profileMark: () => void; - - /** - * Support from Lynx 3.0 - */ - profileFlowId: () => number; - - /** - * Support from Lynx 2.18 - */ - isProfileRecording: () => boolean; - - triggerComponentEvent(id: string, params: { - eventDetail: CloneableObject; - eventOption: CloneableObject; - componentId: string; - }): void; - - selectComponent( - componentId: string, - idSelector: string, - single: boolean, - callback?: () => void, - ): void; - - createJSObjectDestructionObserver( - callback: (...args: unknown[]) => unknown, - ): {}; - - setSharedData(dataKey: string, dataVal: T): void; - getSharedData(dataKey: string): T | undefined; - - i18nResource: I18nResource; - - reportException: (error: Error, _: unknown) => void; - __SetSourceMapRelease: (err: Error) => void; - __GetSourceMapRelease: (url: string) => string | undefined; - - queryComponent: ( - source: string, - callback: ( - ret: { __hasReady: boolean } | { - code: number; - detail?: { schema: string }; - }, - ) => void, - ) => void; - tt: NativeTTObject | null; -} diff --git a/packages/web-platform/web-constants/src/types/NativeModules.ts b/packages/web-platform/web-constants/src/types/NativeModules.ts deleted file mode 100644 index cf64e3f0e4..0000000000 --- a/packages/web-platform/web-constants/src/types/NativeModules.ts +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export type NativeModulesMap = Record; - -export type NativeModulesCall = ( - name: string, - data: any, - moduleName: string, -) => Promise | any; diff --git a/packages/web-platform/web-constants/src/types/PageConfig.ts b/packages/web-platform/web-constants/src/types/PageConfig.ts deleted file mode 100644 index 7c54fcd983..0000000000 --- a/packages/web-platform/web-constants/src/types/PageConfig.ts +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export interface PageConfig { - enableCSSSelector: boolean; - enableRemoveCSSScope: boolean; - defaultDisplayLinear: boolean; - defaultOverflowVisible: boolean; - enableJSDataProcessor: boolean; -} - -export interface BrowserConfig { - pixelRatio: number; - pixelWidth: number; - pixelHeight: number; -} diff --git a/packages/web-platform/web-constants/src/types/Performance.ts b/packages/web-platform/web-constants/src/types/Performance.ts deleted file mode 100644 index 86fb994c27..0000000000 --- a/packages/web-platform/web-constants/src/types/Performance.ts +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2024 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export interface SetupTimingInfo { - [key: string]: unknown; -} -export interface UpdateTimingInfo { - [key: string]: unknown; -} -export interface ExtraTimingInfo { - [key: string]: unknown; -} - -export interface MetricsTimingInfo { -} -export interface TimingInfo { - extra_timing: ExtraTimingInfo; - setup_timing: SetupTimingInfo; - update_timings: { - [key: string]: UpdateTimingInfo; - }; - metrics: MetricsTimingInfo; - has_reload: boolean; - thread_strategy: number; - url: string; - [key: string]: unknown; -} - -export interface PerformancePipelineOptions { - pipelineID: string; - needTimestamps: boolean; -} diff --git a/packages/web-platform/web-constants/src/types/ProcessDataCallback.ts b/packages/web-platform/web-constants/src/types/ProcessDataCallback.ts deleted file mode 100644 index ab52a33e5a..0000000000 --- a/packages/web-platform/web-constants/src/types/ProcessDataCallback.ts +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export type ProcessDataCallback = (data: any, processorName?: string) => any; diff --git a/packages/web-platform/web-constants/src/types/SSR.ts b/packages/web-platform/web-constants/src/types/SSR.ts deleted file mode 100644 index 4359761f61..0000000000 --- a/packages/web-platform/web-constants/src/types/SSR.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { AddEventPAPI } from './MainThreadGlobalThis.js'; - -export type SSREventReplayInfo = [ - number, - Parameters[1], - Parameters[2], - Parameters[3], -]; - -export type SSRDumpInfo = { - ssrEncodeData: string | null | undefined; - events: SSREventReplayInfo[]; -}; - -export interface SSRHydrateInfo extends SSRDumpInfo { - /** WeakRef */ - lynxUniqueIdToElement: WeakRef[]; - /** for cssog */ - lynxUniqueIdToStyleRulesIndex: number[]; - cardStyleElement: HTMLStyleElement | null; -} - -export type SSRDehydrateHooks = { - __AddEvent: AddEventPAPI; -}; diff --git a/packages/web-platform/web-constants/src/types/StyleInfo.ts b/packages/web-platform/web-constants/src/types/StyleInfo.ts deleted file mode 100644 index dd1736a732..0000000000 --- a/packages/web-platform/web-constants/src/types/StyleInfo.ts +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export interface CSSRule { - sel: [ - plainSelectors: string[], - pseudoClassSelectors: string[], - pseudoElementSelectors: string[], - combinator: string[], - ...string[][], - ][]; - decl: [string, string][]; -} -export interface OneInfo { - content: string[]; - rules: CSSRule[]; - imports?: string[]; -} -export interface StyleInfo { - [cssId: string]: OneInfo; -} -export interface FlattenedOneInfo { - content: string[]; - rules: CSSRule[]; - importBy: string[]; -} -export type FlattenedStyleInfo = FlattenedOneInfo[]; - -/** - * CSS Info for Old Generation CSS System - */ -export interface CssOGInfo { - [cssId: string]: { - [className: string]: [string, string][]; - }; -} diff --git a/packages/web-platform/web-constants/src/types/TemplateLoader.ts b/packages/web-platform/web-constants/src/types/TemplateLoader.ts deleted file mode 100644 index f7a9736d61..0000000000 --- a/packages/web-platform/web-constants/src/types/TemplateLoader.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { LynxTemplate } from './LynxModule.js'; - -export type TemplateLoader = (url: string) => Promise; diff --git a/packages/web-platform/web-constants/src/types/UpdateDataOptions.ts b/packages/web-platform/web-constants/src/types/UpdateDataOptions.ts deleted file mode 100644 index c15cb2ec63..0000000000 --- a/packages/web-platform/web-constants/src/types/UpdateDataOptions.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const enum NativeUpdateDataType { - UPDATE = 0, - RESET = 1, -} - -export interface UpdateDataOptions { - type?: NativeUpdateDataType; - processorName?: string; -} diff --git a/packages/web-platform/web-constants/src/types/index.ts b/packages/web-platform/web-constants/src/types/index.ts deleted file mode 100644 index 14e07f04c7..0000000000 --- a/packages/web-platform/web-constants/src/types/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -export * from './StyleInfo.js'; -export * from './EventType.js'; -export * from './PageConfig.js'; -export * from './Cloneable.js'; -export * from './LynxModule.js'; -export * from './ProcessDataCallback.js'; -export * from './Performance.js'; -export * from './MainThreadStartConfigs.js'; -export * from './NativeApp.js'; -export * from './UpdateDataOptions.js'; -export * from './NativeModules.js'; -export * from './NapiModules.js'; -export * from './FlushElementTreeOptions.js'; -export * from './LynxContextEventTarget.js'; -export * from './Element.js'; -export * from './MainThreadGlobalThis.js'; -export * from './MainThreadLynx.js'; -export * from './I18n.js'; -export * from './BackThreadStartConfigs.js'; -export * from './MarkTiming.js'; -export * from './SSR.js'; -export * from './JSRealm.js'; -export * from './TemplateLoader.js'; diff --git a/packages/web-platform/web-constants/src/utils/LynxCrossThreadContext.ts b/packages/web-platform/web-constants/src/utils/LynxCrossThreadContext.ts deleted file mode 100644 index 2321fd924b..0000000000 --- a/packages/web-platform/web-constants/src/utils/LynxCrossThreadContext.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { dispatchCoreContextOnBackgroundEndpoint, Rpc } from '../index.js'; -import { - DispatchEventResult, - type LynxContextEventTarget, -} from '../types/LynxContextEventTarget.js'; - -export class LynxCrossThreadContext extends EventTarget - implements LynxContextEventTarget -{ - constructor( - private _config: { - rpc: Rpc; - receiveEventEndpoint: typeof dispatchCoreContextOnBackgroundEndpoint; - sendEventEndpoint: typeof dispatchCoreContextOnBackgroundEndpoint; - }, - ) { - super(); - } - postMessage(...args: any[]) { - console.error('[lynx-web] postMessage not implemented, args:', ...args); - } - // @ts-expect-error - override dispatchEvent(event: ContextCrossThreadEvent) { - const { rpc, sendEventEndpoint } = this._config; - rpc.invoke(sendEventEndpoint, [event]); - return DispatchEventResult.CanceledBeforeDispatch; - } - __start() { - const { rpc, receiveEventEndpoint } = this._config; - rpc.registerHandler(receiveEventEndpoint, ({ type, data }) => { - super.dispatchEvent(new MessageEvent(type, { data: data ?? {} })); - }); - } -} diff --git a/packages/web-platform/web-constants/src/utils/generateTemplate.ts b/packages/web-platform/web-constants/src/utils/generateTemplate.ts deleted file mode 100644 index 55f323e6be..0000000000 --- a/packages/web-platform/web-constants/src/utils/generateTemplate.ts +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { LynxTemplate } from '../types/LynxModule.js'; - -const currentSupportedTemplateVersion = 2; -const globalDisallowedVars = ['navigator', 'postMessage', 'window']; -type templateUpgrader = (template: LynxTemplate) => LynxTemplate; -const templateUpgraders: templateUpgrader[] = [ - (template) => { - template.appType = template.appType ?? (template.lepusCode.root.startsWith( - '(function (globDynamicComponentEntry', - ) - ? 'lazy' - : 'card'); - template.version = 2; - template.lepusCode = Object.fromEntries( - Object.entries(template.lepusCode).filter(([_, content]) => - typeof content === 'string' - ), - ) as typeof template.lepusCode; - return template; - }, -]; - -const generateModuleContent = ( - fileName: string, - content: string, - eager: boolean, - appType: 'card' | 'lazy', -) => - /** - * About the `allFunctionsCalledOnLoad` directive: - * https://v8.dev/blog/preparser#pife - * https://github.com/WICG/explicit-javascript-compile-hints-file-based?tab=readme-ov-file - * https://v8.dev/blog/explicit-compile-hints - * We should ensure the MTS code is parsed eagerly to avoid runtime parse delay. - * But for BTS code, we should not do this as it would increase the memory usage. - * JavaScript Engines, like V8, already had optimizations for code starts with "(function" - * to be parsed eagerly. - */ - [ - eager ? '//# allFunctionsCalledOnLoad' : '', - '\n(function() { "use strict"; const ', - globalDisallowedVars.join('=void 0,'), - '=void 0;\n', - appType !== 'card' ? 'module.exports=\n' : '', - content, - '\n})()', - '\n//# sourceURL=', - fileName, - ].join(''); - -async function generateJavascriptUrl>( - obj: T, - createJsModuleUrl: (content: string, name: string) => Promise, - eager: boolean, - appType: 'card' | 'lazy', - templateName: string, -): Promise { - return Promise.all( - (Object.entries(obj).filter(([_, content]) => - typeof content === 'string' - ) as [string, string][]).map(async ([name, content]) => { - return [ - name, - await createJsModuleUrl( - generateModuleContent( - `${templateName}/${name.replaceAll('/', '_')}.js`, - content, - eager, - appType, - ), - `${templateName}-${name.replaceAll('/', '_')}.js`, - ), - ]; - }), - ).then( - Object.fromEntries, - ); -} - -export async function generateTemplate( - template: LynxTemplate, - createJsModuleUrl: - | ((content: string, name: string) => Promise) - | ((content: string) => string), - templateName: string, -): Promise { - template.version = template.version ?? 1; - if (template.version > currentSupportedTemplateVersion) { - throw new Error( - `Unsupported template, please upgrade your web-platform dependencies`, - ); - } - let upgrader: templateUpgrader | undefined; - while ( - template.version! < currentSupportedTemplateVersion - && (upgrader = templateUpgraders[template.version! - 1]) - ) { - template = upgrader(template); - } - return { - ...template, - lepusCode: await generateJavascriptUrl( - template.lepusCode, - createJsModuleUrl as (content: string, name: string) => Promise, - true, - template.appType!, - templateName, - ), - }; -} diff --git a/packages/web-platform/web-constants/src/utils/index.ts b/packages/web-platform/web-constants/src/utils/index.ts deleted file mode 100644 index e304bf42f8..0000000000 --- a/packages/web-platform/web-constants/src/utils/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export { LynxCrossThreadContext } from './LynxCrossThreadContext.js'; -export { dispatchMarkTiming, flushMarkTiming } from './markTiming.js'; -export { generateTemplate } from './generateTemplate.js'; diff --git a/packages/web-platform/web-constants/src/utils/markTiming.ts b/packages/web-platform/web-constants/src/utils/markTiming.ts deleted file mode 100644 index 86d56b1c4a..0000000000 --- a/packages/web-platform/web-constants/src/utils/markTiming.ts +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { MarkTiming } from '../types/MarkTiming.js'; - -export const dispatchMarkTiming = ( - { timingKey, pipelineId, timeStamp, markTiming, cacheMarkTimings }: { - timingKey: string; - pipelineId?: string; - timeStamp?: number; - markTiming: (markTimings: MarkTiming[]) => void; - cacheMarkTimings: { records: MarkTiming[]; timeout: NodeJS.Timeout | null }; - }, -) => { - cacheMarkTimings.records.push({ - timingKey, - pipelineId, - timeStamp: timeStamp ?? performance.now() + performance.timeOrigin, - }); - - if (!cacheMarkTimings.timeout) { - cacheMarkTimings.timeout = setTimeout(() => { - markTiming(cacheMarkTimings.records); - cacheMarkTimings.records = []; - cacheMarkTimings.timeout = null; - }, 500); - } -}; - -export const flushMarkTiming = ( - markTiming: (markTimings: MarkTiming[]) => void, - cacheMarkTimings: { records: MarkTiming[]; timeout: NodeJS.Timeout | null }, -) => { - markTiming(cacheMarkTimings.records); - cacheMarkTimings.records = []; - if (cacheMarkTimings.timeout) { - clearTimeout(cacheMarkTimings.timeout); - cacheMarkTimings.timeout = null; - } -}; diff --git a/packages/web-platform/web-constants/tsconfig.json b/packages/web-platform/web-constants/tsconfig.json deleted file mode 100644 index bc455bddf0..0000000000 --- a/packages/web-platform/web-constants/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "composite": true, - "rootDir": "./src", - "outDir": "./dist", - "lib": ["ESNext", "DOM"], - }, - "include": ["src"], - "references": [ - { "path": "../web-worker-rpc/tsconfig.json" }, - { "path": "../offscreen-document/tsconfig.json" }, - ], -} diff --git a/packages/web-platform/web-core-server/.gitignore b/packages/web-platform/web-core-server/.gitignore deleted file mode 100644 index ed2004aba4..0000000000 --- a/packages/web-platform/web-core-server/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -build -Makefile -CMakeFiles \ No newline at end of file diff --git a/packages/web-platform/web-core-server/CHANGELOG.md b/packages/web-platform/web-core-server/CHANGELOG.md deleted file mode 100644 index bc9586bad8..0000000000 --- a/packages/web-platform/web-core-server/CHANGELOG.md +++ /dev/null @@ -1,235 +0,0 @@ -# @lynx-js/web-core-server - -## 0.19.9 - -## 0.19.8 - -## 0.19.7 - -## 0.19.6 - -## 0.19.5 - -## 0.19.4 - -## 0.19.3 - -## 0.19.2 - -## 0.19.1 - -## 0.19.0 - -## 0.18.4 - -### Patch Changes - -- feat: builtinTagTransformMap add `'x-input-ng': 'x-input'` ([#1932](https://github.com/lynx-family/lynx-stack/pull/1932)) - -- chore: minor bundle output change ([#1946](https://github.com/lynx-family/lynx-stack/pull/1946)) - - the timing of loading wasm chunk has been changed - -## 0.18.3 - -## 0.18.2 - -### Patch Changes - -- feat: builtinTagTransformMap add `'input': 'x-input'` ([#1907](https://github.com/lynx-family/lynx-stack/pull/1907)) - -## 0.18.1 - -## 0.18.0 - -## 0.17.2 - -## 0.17.1 - -## 0.17.0 - -## 0.16.1 - -### Patch Changes - -- refactor: improve chunk loading ([#1703](https://github.com/lynx-family/lynx-stack/pull/1703)) - -- feat: supports lazy bundle. (This feature requires `@lynx-js/lynx-core >= 0.1.3`) ([#1235](https://github.com/lynx-family/lynx-stack/pull/1235)) - -## 0.16.0 - -### Minor Changes - -- refactor: provide the mts a real globalThis ([#1589](https://github.com/lynx-family/lynx-stack/pull/1589)) - - Before this change, We create a function wrapper and a fake globalThis for Javascript code. - - This caused some issues. - - After this change, we will create an iframe for createing an isolated Javascript context. - - This means the globalThis will be the real one. - -## 0.15.7 - -## 0.15.6 - -### Patch Changes - -- refactor: use utf-8 string ([#1473](https://github.com/lynx-family/lynx-stack/pull/1473)) - -## 0.15.5 - -### Patch Changes - -- fix: load main-thread chunk in ESM format ([#1437](https://github.com/lynx-family/lynx-stack/pull/1437)) - - See [nodejs/node#59362](https://github.com/nodejs/node/issues/59362) for more details. - -## 0.15.4 - -### Patch Changes - -- refactor: bundle web-core-server ([#819](https://github.com/lynx-family/lynx-stack/pull/819)) - -## 0.15.3 - -## 0.15.2 - -### Patch Changes - -- feat: support SSR for all-on-ui ([#1029](https://github.com/lynx-family/lynx-stack/pull/1029)) - -- feat: move SSR hydrate essential info to the ssr attribute ([#1292](https://github.com/lynx-family/lynx-stack/pull/1292)) - - We found that in browser there is no simple tool to decode a base64 string - - Therefore we move the data to `ssr` attribute - - Also fix some ssr issues - -- feat: dump the event info on ssr stage ([#1237](https://github.com/lynx-family/lynx-stack/pull/1237)) - -- feat: mark template elements for SSR and update part ID handling ([#1286](https://github.com/lynx-family/lynx-stack/pull/1286)) - -## 0.15.1 - -## 0.15.0 - -### Patch Changes - -- feat: support to dump the css og system's style ([#1272](https://github.com/lynx-family/lynx-stack/pull/1272)) - -- perf: use rust implemented style transformer ([#1094](https://github.com/lynx-family/lynx-stack/pull/1094)) - -## 0.14.2 - -### Patch Changes - -- chore: extract shared logic from web-core and web-core-server's loadTemplate into a unified generateTemplate function ([#1211](https://github.com/lynx-family/lynx-stack/pull/1211)) - -## 0.14.1 - -## 0.14.0 - -### Patch Changes - -- feat: add `_SetSourceMapRelease(errInfo)` MTS API. ([#1118](https://github.com/lynx-family/lynx-stack/pull/1118)) - - You can get `errInfo.release` through `e.detail.release` in the error event callback of lynx-view. - - The `_SetSourceMapRelease` function is not complete yet, because it is currently limited by the Web platform and some functions and some props such as `err.stack` do not need to be supported for the time being. - -- feat: add `_I18nResourceTranslation` api in mts && `init-i18n-resources` attr, `i18nResourceMissed` event of lynx-view. ([#1065](https://github.com/lynx-family/lynx-stack/pull/1065)) - - `init-i18n-resource` is the complete set of i18nResources that need to be maintained on the container side. Note: You need to pass this value when lynx-view is initialized. - - You can use `_I18nResourceTranslation` in MTS to get the corresponding i18nResource from `init-i18n-resources`. If it is undefined, the `i18nResourceMissed` event will be dispatched. - - ```js - // ui thread - lynxView.initI18nResources = [ - { - options: { - locale: 'en', - channel: '1', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform1', - }, - }, - ]; - lynxView.addEventListener('i18nResourceMissed', (e) => { - console.log(e); - }); - - // mts - _I18nResourceTranslation({ - locale: 'en', - channel: '1', - fallback_url: '', - }); - ``` - -## 0.13.5 - -### Patch Changes - -- refactor: move some internal status to dom's attribute ([#945](https://github.com/lynx-family/lynx-stack/pull/945)) - - It's essential for SSR - -- refactor: move component config info to attribute ([#984](https://github.com/lynx-family/lynx-stack/pull/984)) - -- refactor: save dataset on an attribute ([#981](https://github.com/lynx-family/lynx-stack/pull/981)) - - On lynx, the `data-*` attributes have different behaviors than the HTMLElement has. - - The dataset will be treated as properties, the key will not be applied the camel-case <-> hyphenate name transformation. - - Before this commit we use it as a runtime data, but after this commit we will use encodeURI(JSON.stringify(dataset)) to encode it as a string. - -- fix: dump encode data in comment ([#989](https://github.com/lynx-family/lynx-stack/pull/989)) - -## 0.13.4 - -### Patch Changes - -- feat: support to dump ssrID ([#919](https://github.com/lynx-family/lynx-stack/pull/919)) - -## 0.13.3 - -### Patch Changes - -- refactor: code clean ([#897](https://github.com/lynx-family/lynx-stack/pull/897)) - - rename many internal apis to make logic be clear: - - multi-thread: startMainWorker -> prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - all-on-ui: prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - -- feat: support to dump ssrEncode string ([#876](https://github.com/lynx-family/lynx-stack/pull/876)) - -- perf: improve dom operation performance ([#881](https://github.com/lynx-family/lynx-stack/pull/881)) - - - code clean for offscreen-document, cut down inheritance levels - - add `appendChild` method for OffscreenElement, improve performance for append one node - - bypass some JS getter for dumping SSR string - -- feat: dump dehydrate string with shadow root template ([#838](https://github.com/lynx-family/lynx-stack/pull/838)) - -## 0.13.2 - -### Patch Changes - -- perf: use v8 hint for generated javascript file ([#807](https://github.com/lynx-family/lynx-stack/pull/807)) - - https://v8.dev/blog/explicit-compile-hints - -- fix: corrupt mainthread module cache ([#806](https://github.com/lynx-family/lynx-stack/pull/806)) - -- feat: improve template js loading ([#807](https://github.com/lynx-family/lynx-stack/pull/807)) - - now we will create temp js file based on the new `templateName` argument. diff --git a/packages/web-platform/web-core-server/package.json b/packages/web-platform/web-core-server/package.json deleted file mode 100644 index 64a8b207a0..0000000000 --- a/packages/web-platform/web-core-server/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "@lynx-js/web-core-server", - "version": "0.19.9", - "private": false, - "description": "", - "keywords": [], - "repository": { - "type": "git", - "url": "https://github.com/lynx-family/lynx-stack.git", - "directory": "packages/web-platform/web-core-server" - }, - "license": "Apache-2.0", - "type": "module", - "main": "dist/index.js", - "module": "dist/index.js", - "typings": "dist/index.d.ts", - "files": [ - "dist", - "!dist/**/*.js.map", - "LICENSE.txt", - "Notice.txt", - "CHANGELOG.md", - "README.md" - ], - "scripts": { - "build": "rslib build", - "watch": "rslib build --watch" - }, - "devDependencies": { - "@lynx-js/offscreen-document": "workspace:*", - "@lynx-js/web-constants": "workspace:*", - "@lynx-js/web-elements": "workspace:*", - "@lynx-js/web-mainthread-apis": "workspace:*", - "@lynx-js/web-worker-rpc": "workspace:*", - "rsbuild-plugin-arethetypeswrong": "0.2.0", - "rsbuild-plugin-publint": "0.3.4" - } -} diff --git a/packages/web-platform/web-core-server/rslib.config.ts b/packages/web-platform/web-core-server/rslib.config.ts deleted file mode 100644 index 4ef770b50d..0000000000 --- a/packages/web-platform/web-core-server/rslib.config.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { RslibConfig } from '@rslib/core'; -import { defineConfig } from '@rslib/core'; -import { pluginAreTheTypesWrong } from 'rsbuild-plugin-arethetypeswrong'; -import { pluginPublint } from 'rsbuild-plugin-publint'; - -const config: RslibConfig = defineConfig({ - lib: [ - { format: 'esm', syntax: ['esnext'], dts: { tsgo: true } }, - ], - output: { - filename: { - // See: https://github.com/web-infra-dev/rslib/issues/1167 - wasm: '[contenthash:8].module.wasm', - }, - sourceMap: true, - }, - plugins: [ - pluginAreTheTypesWrong({ - enable: Boolean(process.env['CI']), - areTheTypesWrongOptions: { - ignoreRules: [ - 'cjs-resolves-to-esm', - ], - }, - }), - pluginPublint(), - ], - tools: { - rspack: { - output: { - wasmLoading: 'async-node', - }, - experiments: { - futureDefaults: true, - }, - }, - }, -}); - -export default config; diff --git a/packages/web-platform/web-core-server/src/createLynxView.ts b/packages/web-platform/web-core-server/src/createLynxView.ts deleted file mode 100644 index e6bf61aa32..0000000000 --- a/packages/web-platform/web-core-server/src/createLynxView.ts +++ /dev/null @@ -1,275 +0,0 @@ -import { - I18nResources, - inShadowRootStyles, - lynxPartIdAttribute, - lynxUniqueIdAttribute, - type InitI18nResources, - type StartMainThreadContextConfig, - type SSREventReplayInfo, - type SSRDumpInfo, - type MainThreadGlobalThis, -} from '@lynx-js/web-constants'; -import { Rpc } from '@lynx-js/web-worker-rpc'; -import { loadTemplate } from './utils/loadTemplate.js'; -import { - _attributes, - OffscreenDocument, - OffscreenElement, -} from '@lynx-js/offscreen-document/webworker'; -import { - templateScrollView, - templateXAudioTT, - templateXImage, - templateFilterImage, - templateXInput, - templateXList, - templateXOverlayNg, - templateXRefreshView, - templateXSwiper, - templateXText, - templateInlineImage, - templateXTextarea, - templateXViewpageNg, -} from '@lynx-js/web-elements/html-templates'; -import { dumpHTMLString } from './dumpHTMLString.js'; -import vm from 'node:vm'; -import fs from 'node:fs'; - -interface LynxViewConfig extends - Pick< - StartMainThreadContextConfig, - | 'browserConfig' - | 'tagMap' - | 'initData' - | 'globalProps' - | 'template' - | 'initI18nResources' - > -{ - templateName?: string; - hydrateUrl: string; - injectStyles: string; - overrideElementTemplates?: Record< - string, - ((attributes: Record) => string) | string - >; - autoSize?: boolean; - lynxViewStyle?: string; - threadStrategy?: 'all-on-ui'; -} - -const builtinElementTemplates = { - 'scroll-view': templateScrollView, - 'x-audio-tt': templateXAudioTT, - 'x-image': templateXImage, - 'filter-image': templateFilterImage, - 'x-input': templateXInput, - 'x-list': templateXList, - 'x-overlay-ng': templateXOverlayNg, - 'x-refresh-view': templateXRefreshView, - 'x-swiper': templateXSwiper, - 'x-text': templateXText, - 'inline-image': templateInlineImage, - 'x-textarea': templateXTextarea, - 'x-viewpage-ng': templateXViewpageNg, -}; -const builtinTagTransformMap = { - 'page': 'div', - 'view': 'x-view', - 'text': 'x-text', - 'image': 'x-image', - 'list': 'x-list', - 'svg': 'x-svg', - 'input': 'x-input', - 'x-input-ng': 'x-input', -}; - -// @ts-expect-error -OffscreenElement.prototype.toJSON = function toJSON(this: OffscreenElement) { - return { - ssrID: this[_attributes].get(lynxPartIdAttribute) - ?? this[_attributes].get(lynxUniqueIdAttribute)!, - }; -}; - -export async function createLynxView( - config: LynxViewConfig, -) { - const { - template: rawTemplate, - browserConfig, - tagMap, - initData, - globalProps, - overrideElementTemplates = {}, - hydrateUrl, - autoSize, - injectStyles, - lynxViewStyle, - threadStrategy = 'all-on-ui', - initI18nResources, - } = config; - const template = await loadTemplate(rawTemplate, config.templateName); - const { promise: firstPaintReadyPromise, resolve: firstPaintReady } = Promise - .withResolvers(); - const mainWithBackgroundChannel = new MessageChannel(); - const backgroundThreadRpc = new Rpc( - mainWithBackgroundChannel.port1, - 'background-thread', - ); - const offscreenDocument = new OffscreenDocument({ - onCommit: () => { - }, - }); - const i18nResources = new I18nResources(); - const events: SSREventReplayInfo[] = []; - const mtsVMContext = vm.createContext(vm.constants.DONT_CONTEXTIFY); - Object.assign(mtsVMContext, { - document: offscreenDocument, - module: { exports: null }, - }); - const loadScriptSync = (url: string) => { - const scriptContent = fs.readFileSync(url); - const script = new vm.Script(scriptContent.toString(), { filename: url }); - // @ts-expect-error - mtsVMContext.module = { exports: null }; - script.runInContext(mtsVMContext); - // @ts-expect-error - const ret = mtsVMContext.module.exports; - // @ts-expect-error - mtsVMContext.module = { exports: null }; - return ret; - }; - const loadScript = async (url: string) => { - return new Promise((resolve, reject) => { - fs.readFile(url, (err, data) => { - if (err) { - reject(err); - return; - } - try { - const script = new vm.Script(data.toString(), { filename: url }); - // @ts-expect-error - mtsVMContext.module = { exports: null }; - script.runInContext(mtsVMContext); - // @ts-expect-error - const ret = mtsVMContext.module.exports; - // @ts-expect-error - mtsVMContext.module = { exports: null }; - resolve(ret); - } catch (e) { - reject(e); - } - }); - }); - }; - const { prepareMainThreadAPIs } = await import( - '@lynx-js/web-mainthread-apis' - ); - const { startMainThread } = prepareMainThreadAPIs( - backgroundThreadRpc, - offscreenDocument, - offscreenDocument, - { - globalWindow: mtsVMContext as typeof globalThis, - loadScript, - loadScriptSync, - }, - () => { - firstPaintReady(); - }, - () => { - // mark timing - }, - () => { - // flush mark timing - }, - () => { - // report error - }, - () => { - // trigger i18n resource fallback - }, - (initI18nResources: InitI18nResources) => { - i18nResources.setData(initI18nResources); - return i18nResources; - }, - (() => {}) as any, - { - __AddEvent(element, eventName, eventData, eventOptions) { - events.push([ - Number(element.getAttribute(lynxUniqueIdAttribute)!), - eventName, - eventData, - eventOptions, - ]); - }, - }, - threadStrategy === 'all-on-ui', - ); - await startMainThread({ - template, - initData, - globalProps, - browserConfig, - nativeModulesMap: {}, // the bts won't start - napiModulesMap: {}, // the bts won't start - tagMap: { - ...builtinTagTransformMap, - ...tagMap, - }, - initI18nResources, - }); - - const elementTemplates = { - ...builtinElementTemplates, - ...overrideElementTemplates, - }; - - async function renderToString(): Promise { - await firstPaintReadyPromise; - const ssrEncodeData = (mtsVMContext as MainThreadGlobalThis)?.ssrEncode?.(); - const ssrDumpInfo: SSRDumpInfo = { - ssrEncodeData, - events, - }; - const buffer: string[] = []; - buffer.push( - '', - ); - buffer.push(''); - return buffer.join(''); - } - return { - renderToString, - }; -} diff --git a/packages/web-platform/web-core-server/src/dumpHTMLString.ts b/packages/web-platform/web-core-server/src/dumpHTMLString.ts deleted file mode 100644 index 93e832a687..0000000000 --- a/packages/web-platform/web-core-server/src/dumpHTMLString.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { - _attributes, - _children, - textContent, - _cssRuleContents, - type OffscreenDocument, - type OffscreenElement, -} from '@lynx-js/offscreen-document/webworker'; -import { escapeHtml } from './utils/escapeHtml.js'; -import { - lynxPartIdAttribute, - lynxUniqueIdAttribute, -} from '@lynx-js/web-constants'; - -type ShadowrootTemplates = - | (( - attributes: Record, - ) => string) - | string; - -function getTextContentImpl( - buffer: string[], - element: OffscreenElement, - shadowrootTemplates: Record, -): void { - const localName = element.localName; - buffer.push('<'); - buffer.push(localName); - for (const [key, value] of element[_attributes]) { - buffer.push(' '); - buffer.push(key); - if (value.length > 0) { - buffer.push('="'); - buffer.push(escapeHtml(value)); - buffer.push('"'); - } - } - - const partId = element[_attributes].get(lynxPartIdAttribute) - ?? element[_attributes].get(lynxUniqueIdAttribute)!; - buffer.push(' ', lynxPartIdAttribute, '="', partId, '"'); - - buffer.push('>'); - const templateImpl = shadowrootTemplates[localName]; - if (templateImpl) { - const template = typeof templateImpl === 'function' - ? templateImpl(Object.fromEntries(element[_attributes].entries())) - : templateImpl; - buffer.push(''); - } - if (element[_cssRuleContents]?.length) { - buffer.push(...element[_cssRuleContents]); - } - if (element[textContent]) { - buffer.push(element[textContent]); - } else { - for (const child of element[_children]) { - getTextContentImpl( - buffer, - child as OffscreenElement, - shadowrootTemplates, - ); - } - } - buffer.push(''); -} - -export function dumpHTMLString( - buffer: string[], - element: OffscreenDocument, - shadowrootTemplates: Record, -): void { - for (const child of element[_children]) { - getTextContentImpl( - buffer, - child as OffscreenElement, - shadowrootTemplates, - ); - } -} diff --git a/packages/web-platform/web-core-server/src/index.ts b/packages/web-platform/web-core-server/src/index.ts deleted file mode 100644 index 96850ee0dc..0000000000 --- a/packages/web-platform/web-core-server/src/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { createLynxView } from './createLynxView.js'; - -export { createLynxView }; - -if (!globalThis.requestAnimationFrame) { - globalThis.requestAnimationFrame = (cb: FrameRequestCallback) => { - return setTimeout(cb, 0); - }; - globalThis.cancelAnimationFrame = (id: number) => { - clearTimeout(id); - }; -} diff --git a/packages/web-platform/web-core-server/src/utils/escapeHtml.ts b/packages/web-platform/web-core-server/src/utils/escapeHtml.ts deleted file mode 100644 index 0b0a7f09eb..0000000000 --- a/packages/web-platform/web-core-server/src/utils/escapeHtml.ts +++ /dev/null @@ -1,73 +0,0 @@ -/** - * - * MIT License - -Copyright (c) Facebook, Inc. and its affiliates. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - * - * - * forked from facebook/react - */ -const matchHtmlRegExp = /["'&<>]/; - -export function escapeHtml(string: string) { - const str = '' + string; - const match = matchHtmlRegExp.exec(str); - - if (!match) { - return str; - } - - let escape; - let html = ''; - let index; - let lastIndex = 0; - - for (index = match.index; index < str.length; index++) { - switch (str.charCodeAt(index)) { - case 34: // " - escape = '"'; - break; - case 38: // & - escape = '&'; - break; - case 39: // ' - escape = '''; // modified from escape-html; used to be ''' - break; - case 60: // < - escape = '<'; - break; - case 62: // > - escape = '>'; - break; - default: - continue; - } - - if (lastIndex !== index) { - html += str.substring(lastIndex, index); - } - - lastIndex = index + 1; - html += escape; - } - - return lastIndex !== index ? html + str.substring(lastIndex, index) : html; -} diff --git a/packages/web-platform/web-core-server/src/utils/loadTemplate.ts b/packages/web-platform/web-core-server/src/utils/loadTemplate.ts deleted file mode 100644 index 4912ad99a9..0000000000 --- a/packages/web-platform/web-core-server/src/utils/loadTemplate.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { generateTemplate, type LynxTemplate } from '@lynx-js/web-constants'; -import os from 'node:os'; -import fs from 'node:fs/promises'; -import path from 'node:path'; - -const templateCache: Map = new Map(); -// Initialize tmpDir with the prefix -let tmpDir: string | undefined; -// Update tmpDir with the actual path of the created temporary directory -const tmpDirPromise = fs.mkdtemp(path.join(os.tmpdir(), 'lynx')); - -async function createJsModuleUrl(content: string, filename: string) { - if (!tmpDir) { - tmpDir = await tmpDirPromise; - } - const fileUrl = path.join(tmpDir, filename); - await fs.writeFile(fileUrl, content, { flag: 'w+' }); - return fileUrl; -} - -export async function loadTemplate( - rawTemplate: LynxTemplate, - templateName: string = Math.random().toString(36).substring(2, 7), -): Promise { - if (templateCache.has(rawTemplate)) { - return templateCache.get(rawTemplate)!; - } - templateName += Math.random().toString(36).substring(2, 7); - const decodedTemplate: LynxTemplate = templateCache.get(rawTemplate) - ?? await generateTemplate( - rawTemplate, - createJsModuleUrl, - templateName + '-lepusCode', - ); - templateCache.set(rawTemplate, decodedTemplate); - /** - * This will cause a memory leak, which is expected. - * We cannot ensure that the `URL.createObjectURL` created url will never be used, therefore here we keep it for the entire lifetime of this page. - */ - return decodedTemplate; -} diff --git a/packages/web-platform/web-core-server/tsconfig.json b/packages/web-platform/web-core-server/tsconfig.json deleted file mode 100644 index b8a1b0a5e6..0000000000 --- a/packages/web-platform/web-core-server/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "composite": true, - "rootDir": "./src", - "outDir": "./dist", - "lib": ["ESNext", "WebWorker"], - "exactOptionalPropertyTypes": true, - "noEmit": true, - "isolatedModules": true, - }, - "include": ["src"], - "references": [ - { "path": "../web-constants/tsconfig.json" }, - { "path": "../web-worker-rpc/tsconfig.json" }, - { "path": "../web-worker-runtime/tsconfig.json" }, - { "path": "../offscreen-document/tsconfig.json" }, - ], -} diff --git a/packages/web-platform/web-core-server/turbo.json b/packages/web-platform/web-core-server/turbo.json deleted file mode 100644 index e8673a0b3b..0000000000 --- a/packages/web-platform/web-core-server/turbo.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": ["//"], - "tasks": { - "build": { - "dependsOn": [ - "//#build", - "^build" - ], - "inputs": [ - "src/**" - ], - "outputs": [ - "dist" - ] - } - } -} diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/LynxView.ts b/packages/web-platform/web-core-wasm/ts/client/mainthread/LynxView.ts index f5c90b0fba..20d0a27511 100644 --- a/packages/web-platform/web-core-wasm/ts/client/mainthread/LynxView.ts +++ b/packages/web-platform/web-core-wasm/ts/client/mainthread/LynxView.ts @@ -43,7 +43,6 @@ export type INapiModulesCall = ( * @property {string} url [required] (attribute: "url") The url of the entry of your Lynx card * @property {Cloneable} globalProps [optional] (attribute: "global-props") The globalProps value of this Lynx card * @property {Cloneable} initData [optional] (attribute: "init-data") The initial data of this Lynx card - * @property {Record} overrideLynxTagToHTMLTagMap [optional] use this property/attribute to override the lynx tag -> html tag map * @property {NativeModulesMap} nativeModulesMap [optional] use to customize NativeModules. key is module-name, value is esm url. * @property {NativeModulesCall} onNativeModulesCall [optional] the NativeModules value handler. Arguments will be cached before this property is assigned. * @property {"auto" | null} height [optional] (attribute: "height") set it to "auto" for height auto-sizing @@ -52,7 +51,6 @@ export type INapiModulesCall = ( * @property {INapiModulesCall} onNapiModulesCall [optional] the NapiModule value handler. * @property {string[]} injectStyleRules [optional] the css rules which will be injected into shadowroot. Each items will be inserted by `insertRule` method. @see https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule * @property {number} lynxGroupId [optional] (attribute: "lynx-group-id") the background shared context id, which is used to share webworker between different lynx cards - * @property {(string)=>Promise} customTemplateLoader [optional] the custom template loader, which is used to load the template * @property {InitI18nResources} initI18nResources [optional] (attribute: "init-i18n-resources") the complete set of i18nResources that on the container side, which can be obtained synchronously by _I18nResourceTranslation * * @event error lynx card fired an error @@ -202,25 +200,6 @@ export class LynxViewElement extends HTMLElement { this.#instance?.i18nManager.updateData(data, options); } - #overrideLynxTagToHTMLTagMap: Record = { - 'page': 'div', - }; - /** - * @public - * @property - * @default {page: 'div'} - */ - get overrideLynxTagToHTMLTagMap(): Record { - return this.#overrideLynxTagToHTMLTagMap; - } - set overrideLynxTagToHTMLTagMap(val: string | Record) { - if (typeof val === 'string') { - this.#overrideLynxTagToHTMLTagMap = JSON.parse(val); - } else { - this.#overrideLynxTagToHTMLTagMap = val; - } - } - #cachedNativeModulesCall: Array< { args: [name: string, data: any, moduleName: string]; diff --git a/packages/web-platform/web-core/CHANGELOG.md b/packages/web-platform/web-core/CHANGELOG.md deleted file mode 100644 index 4e24176ca1..0000000000 --- a/packages/web-platform/web-core/CHANGELOG.md +++ /dev/null @@ -1,1757 +0,0 @@ -# @lynx-js/web-core - -## 0.19.9 - -### Patch Changes - -- Updated dependencies [[`2efecc2`](https://github.com/lynx-family/lynx-stack/commit/2efecc252c746831e7566e3c81fd7b04a45c5dbf)]: - - @lynx-js/web-constants@0.19.9 - - @lynx-js/web-mainthread-apis@0.19.9 - - @lynx-js/web-worker-runtime@0.19.9 - - @lynx-js/web-worker-rpc@0.19.9 - -## 0.19.8 - -### Patch Changes - -- fix: avoid error when LynxView is removed immediately after connected ([#2182](https://github.com/lynx-family/lynx-stack/pull/2182)) - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.8 - - @lynx-js/web-mainthread-apis@0.19.8 - - @lynx-js/web-worker-rpc@0.19.8 - - @lynx-js/web-worker-runtime@0.19.8 - -## 0.19.7 - -### Patch Changes - -- feat: add browser config of lynx-view, now you can customize the browser config of lynx-view: ([#2140](https://github.com/lynx-family/lynx-stack/pull/2140)) - - ``` - lynxView.browserConfig = { - pixelRatio: 1, - pixelWidth: 1234, - pixelHeight: 5678, - } - ``` - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.7 - - @lynx-js/web-mainthread-apis@0.19.7 - - @lynx-js/web-worker-rpc@0.19.7 - - @lynx-js/web-worker-runtime@0.19.7 - -## 0.19.6 - -### Patch Changes - -- fix: avoid crash on CPUs that do not support SIMD ([#2133](https://github.com/lynx-family/lynx-stack/pull/2133)) - -- feat: support lynx.reload() ([#2127](https://github.com/lynx-family/lynx-stack/pull/2127)) - -- Updated dependencies [[`179f984`](https://github.com/lynx-family/lynx-stack/commit/179f9844adf00ff4b2cd450ffb943649441c87d3), [`f7133c1`](https://github.com/lynx-family/lynx-stack/commit/f7133c137f094063e991dfa0e993ea92177aa173), [`6c2b51a`](https://github.com/lynx-family/lynx-stack/commit/6c2b51a661ae244eb40671f63f29ee971e084ed4), [`556fe9f`](https://github.com/lynx-family/lynx-stack/commit/556fe9fded90945a7926093897288d5302c314d3), [`5b589ab`](https://github.com/lynx-family/lynx-stack/commit/5b589ab53b01a8e2357d3ccbb159edab004086d3)]: - - @lynx-js/web-constants@0.19.6 - - @lynx-js/web-mainthread-apis@0.19.6 - - @lynx-js/web-worker-rpc@0.19.6 - - @lynx-js/web-worker-runtime@0.19.6 - -## 0.19.5 - -### Patch Changes - -- fix: pixelWidth and pixelHeight use client instead of screen ([#2055](https://github.com/lynx-family/lynx-stack/pull/2055)) - -- Updated dependencies [[`a91173c`](https://github.com/lynx-family/lynx-stack/commit/a91173c986ce3f358f1c11c788ca46a0529c701d)]: - - @lynx-js/web-worker-rpc@0.19.5 - - @lynx-js/web-constants@0.19.5 - - @lynx-js/web-worker-runtime@0.19.5 - - @lynx-js/web-mainthread-apis@0.19.5 - -## 0.19.4 - -### Patch Changes - -- Updated dependencies [[`bba05e2`](https://github.com/lynx-family/lynx-stack/commit/bba05e2ed06cca8009ad415fd9777e8334a0887a)]: - - @lynx-js/web-worker-rpc@0.19.4 - - @lynx-js/web-constants@0.19.4 - - @lynx-js/web-worker-runtime@0.19.4 - - @lynx-js/web-mainthread-apis@0.19.4 - -## 0.19.3 - -### Patch Changes - -- Updated dependencies [[`986761d`](https://github.com/lynx-family/lynx-stack/commit/986761dd1e9e631f8118faec68188f29f78e9236)]: - - @lynx-js/web-worker-rpc@0.19.3 - - @lynx-js/web-constants@0.19.3 - - @lynx-js/web-worker-runtime@0.19.3 - - @lynx-js/web-mainthread-apis@0.19.3 - -## 0.19.2 - -### Patch Changes - -- chore: mark the "multi-thread" deprecated ([#2030](https://github.com/lynx-family/lynx-stack/pull/2030)) - - **NOTICE This will be a breaking change in the future** - - mark the thread strategy "multi-thread" as deprecated. - - Please use "all-on-ui" instead. If you still want to use multi-thread mode, please try to use a cross-origin isolated iframe. - - A console warning will be printed if `thread-strategy` is set to `multi-thread`. - -- fix csp issue for mts realm ([#1998](https://github.com/lynx-family/lynx-stack/pull/1998)) - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.2 - - @lynx-js/web-mainthread-apis@0.19.2 - - @lynx-js/web-worker-rpc@0.19.2 - - @lynx-js/web-worker-runtime@0.19.2 - -## 0.19.1 - -### Patch Changes - -- fix: support CSP for mts ([#1994](https://github.com/lynx-family/lynx-stack/pull/1994)) - -- Updated dependencies [[`f7256d5`](https://github.com/lynx-family/lynx-stack/commit/f7256d5bd920b2f6c0cadab44455585c35621b35)]: - - @lynx-js/web-mainthread-apis@0.19.1 - - @lynx-js/web-worker-runtime@0.19.1 - - @lynx-js/web-constants@0.19.1 - - @lynx-js/web-worker-rpc@0.19.1 - -## 0.19.0 - -### Minor Changes - -- feat: new flex:val impl ([#1979](https://github.com/lynx-family/lynx-stack/pull/1979)) - -### Patch Changes - -- Updated dependencies [[`40c3a1a`](https://github.com/lynx-family/lynx-stack/commit/40c3a1a0436701e46b505301c4ba66a8f68de7c0), [`46bd5ee`](https://github.com/lynx-family/lynx-stack/commit/46bd5eea324d0c8348f44b3d0b437e745411ab5c)]: - - @lynx-js/web-mainthread-apis@0.19.0 - - @lynx-js/web-worker-runtime@0.19.0 - - @lynx-js/web-constants@0.19.0 - - @lynx-js/web-worker-rpc@0.19.0 - -## 0.18.4 - -### Patch Changes - -- feat: builtinTagTransformMap add `'x-input-ng': 'x-input'` ([#1932](https://github.com/lynx-family/lynx-stack/pull/1932)) - -- Updated dependencies []: - - @lynx-js/web-constants@0.18.4 - - @lynx-js/web-mainthread-apis@0.18.4 - - @lynx-js/web-worker-rpc@0.18.4 - - @lynx-js/web-worker-runtime@0.18.4 - -## 0.18.3 - -### Patch Changes - -- Updated dependencies [[`fece7d0`](https://github.com/lynx-family/lynx-stack/commit/fece7d0a92fa76948488373757a27dff52a90437), [`e1db63f`](https://github.com/lynx-family/lynx-stack/commit/e1db63fac8a351f98711b9b47acbb871f7a23701), [`ebc1a60`](https://github.com/lynx-family/lynx-stack/commit/ebc1a606318e9809e8a07457e18536b59be12a18)]: - - @lynx-js/web-mainthread-apis@0.18.3 - - @lynx-js/web-worker-runtime@0.18.3 - - @lynx-js/web-constants@0.18.3 - - @lynx-js/web-worker-rpc@0.18.3 - -## 0.18.2 - -### Patch Changes - -- feat: builtinTagTransformMap add `'input': 'x-input'` ([#1907](https://github.com/lynx-family/lynx-stack/pull/1907)) - -- Updated dependencies []: - - @lynx-js/web-constants@0.18.2 - - @lynx-js/web-mainthread-apis@0.18.2 - - @lynx-js/web-worker-rpc@0.18.2 - - @lynx-js/web-worker-runtime@0.18.2 - -## 0.18.1 - -### Patch Changes - -- fix: mts freeze after reload() ([#1892](https://github.com/lynx-family/lynx-stack/pull/1892)) - - The mts may be freezed after reload() called. - - We fixed it by waiting until the all-on-ui Javascript realm implementation, an iframe, to be fully loaded. - -- Updated dependencies [[`70a18fc`](https://github.com/lynx-family/lynx-stack/commit/70a18fce0083743e4516eefc91c0392d748b855f)]: - - @lynx-js/web-mainthread-apis@0.18.1 - - @lynx-js/web-worker-runtime@0.18.1 - - @lynx-js/web-constants@0.18.1 - - @lynx-js/web-worker-rpc@0.18.1 - -## 0.18.0 - -### Minor Changes - -- fix: ([#1837](https://github.com/lynx-family/lynx-stack/pull/1837)) - - 1. `LynxView.updateData()` cannot trigger `dataProcessor`. - - 2. **This is a break change:** The second parameter of `LynxView.updateData()` has been changed from `UpdateDataType` to `string`, which is the `processorName` (default is `default` which will use `defaultDataProcessor`). This change is to better align with Native. The current complete type is as follows: - - ```ts - LynxView.updateData(data: Cloneable, processorName?: string | undefined, callback?: (() => void) | undefined): void - ``` - -### Patch Changes - -- Updated dependencies [[`77397fd`](https://github.com/lynx-family/lynx-stack/commit/77397fd535cf60556f8f82f7ef8dae8a623d1625), [`7d90ed5`](https://github.com/lynx-family/lynx-stack/commit/7d90ed52a20fd7665a3517507800e7e29426f6f9)]: - - @lynx-js/web-worker-runtime@0.18.0 - - @lynx-js/web-constants@0.18.0 - - @lynx-js/web-mainthread-apis@0.18.0 - - @lynx-js/web-worker-rpc@0.18.0 - -## 0.17.2 - -### Patch Changes - -- feat: support load bts chunk from remote address ([#1834](https://github.com/lynx-family/lynx-stack/pull/1834)) - - - re-support chunk splitting - - support lynx.requireModule with a json file - - support lynx.requireModule, lynx.requireModuleAsync with a remote url - - support to add a breakpoint in chrome after reloading the web page - -- Updated dependencies [[`a35a245`](https://github.com/lynx-family/lynx-stack/commit/a35a2452e5355bda3c475f9a750a86085e0cf56a)]: - - @lynx-js/web-worker-runtime@0.17.2 - - @lynx-js/web-constants@0.17.2 - - @lynx-js/web-mainthread-apis@0.17.2 - - @lynx-js/web-worker-rpc@0.17.2 - -## 0.17.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.17.1 - - @lynx-js/web-mainthread-apis@0.17.1 - - @lynx-js/web-worker-rpc@0.17.1 - - @lynx-js/web-worker-runtime@0.17.1 - -## 0.17.0 - -### Minor Changes - -- break(web): temporary remove support for chunk split ([#1739](https://github.com/lynx-family/lynx-stack/pull/1739)) - - Since the global variables cannot be accessed in the splited chunk, we temporary remove supporting for chunk spliting - - Developers could easily remove the chunk Split settings in Rspeedy for migration - - ``` - import { defineConfig } from '@lynx-js/rspeedy' - - export default defineConfig({ - performance: { - chunkSplit: { - strategy: 'all-in-one', - }, - }, - }) - ``` - -### Patch Changes - -- fix: lazy component load error ([#1794](https://github.com/lynx-family/lynx-stack/pull/1794)) - - Some special version template may have chunk loading error. We fixed it. - -- fix: avoid duplicate style transformation ([#1748](https://github.com/lynx-family/lynx-stack/pull/1748)) - - After this commit, we use DAG methods to handle the styleInfos - -- fix: add sandbox attribute to iframe for enhanced security ([#1709](https://github.com/lynx-family/lynx-stack/pull/1709)) - -- fix: the default template loader won't fetch twice for one url ([#1709](https://github.com/lynx-family/lynx-stack/pull/1709)) - -- Updated dependencies [[`721635d`](https://github.com/lynx-family/lynx-stack/commit/721635de6c1d2d617c7cbaa86e7d816c42d62930), [`93d707b`](https://github.com/lynx-family/lynx-stack/commit/93d707b82a59f7256952e21da6dcad2999f8233d), [`d150ed4`](https://github.com/lynx-family/lynx-stack/commit/d150ed440a4f1e9d9a3a2911adf6e6fa39a0c589)]: - - @lynx-js/web-mainthread-apis@0.17.0 - - @lynx-js/web-constants@0.17.0 - - @lynx-js/web-worker-runtime@0.17.0 - - @lynx-js/web-worker-rpc@0.17.0 - -## 0.16.1 - -### Patch Changes - -- refactor: improve chunk loading ([#1703](https://github.com/lynx-family/lynx-stack/pull/1703)) - -- feat: supports lazy bundle. (This feature requires `@lynx-js/lynx-core >= 0.1.3`) ([#1235](https://github.com/lynx-family/lynx-stack/pull/1235)) - -- Updated dependencies [[`608f375`](https://github.com/lynx-family/lynx-stack/commit/608f375e20732cc4c9f141bfbf9800ba6896100b)]: - - @lynx-js/web-mainthread-apis@0.16.1 - - @lynx-js/web-worker-runtime@0.16.1 - - @lynx-js/web-constants@0.16.1 - - @lynx-js/web-worker-rpc@0.16.1 - -## 0.16.0 - -### Minor Changes - -- refactor: provide the mts a real globalThis ([#1589](https://github.com/lynx-family/lynx-stack/pull/1589)) - - Before this change, We create a function wrapper and a fake globalThis for Javascript code. - - This caused some issues. - - After this change, we will create an iframe for createing an isolated Javascript context. - - This means the globalThis will be the real one. - -### Patch Changes - -- refactor: add `:not([l-e-name])` at the end of selector for lazy component ([#1622](https://github.com/lynx-family/lynx-stack/pull/1622)) - -- feat: remove multi-thread mts heating ([#1597](https://github.com/lynx-family/lynx-stack/pull/1597)) - - The default rendering mode is "all-on-ui". Therefore the preheating for "multi-thread" will be removed. - -- fix: the SystemInfo in bts should be assigned to the globalThis ([#1599](https://github.com/lynx-family/lynx-stack/pull/1599)) - -- Updated dependencies [[`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`bb53d9a`](https://github.com/lynx-family/lynx-stack/commit/bb53d9a035f607e7c89952098d4ed77877a2e3c1), [`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`c1f8715`](https://github.com/lynx-family/lynx-stack/commit/c1f8715a81b2e69ff46fc363013626db4468c209)]: - - @lynx-js/web-mainthread-apis@0.16.0 - - @lynx-js/web-constants@0.16.0 - - @lynx-js/web-worker-runtime@0.16.0 - - @lynx-js/offscreen-document@0.1.4 - - @lynx-js/web-worker-rpc@0.16.0 - -## 0.15.7 - -### Patch Changes - -- fix: fake uidisappear event ([#1539](https://github.com/lynx-family/lynx-stack/pull/1539)) - -- Updated dependencies [[`70863fb`](https://github.com/lynx-family/lynx-stack/commit/70863fbc311d8885ebda40855668097b0631f521)]: - - @lynx-js/web-mainthread-apis@0.15.7 - - @lynx-js/web-constants@0.15.7 - - @lynx-js/web-worker-runtime@0.15.7 - - @lynx-js/web-worker-rpc@0.15.7 - -## 0.15.6 - -### Patch Changes - -- fix: systeminfo in mts function ([#1537](https://github.com/lynx-family/lynx-stack/pull/1537)) - -- refactor: use utf-8 string ([#1473](https://github.com/lynx-family/lynx-stack/pull/1473)) - -- Fix mtsGlobalThis race condition in createRenderAllOnUI ([#1506](https://github.com/lynx-family/lynx-stack/pull/1506)) - -- Updated dependencies [[`405a917`](https://github.com/lynx-family/lynx-stack/commit/405a9170442ae32603b7687549b49ab4b34aff92), [`b8f89e2`](https://github.com/lynx-family/lynx-stack/commit/b8f89e25f106a15ba9d70f2df06dfb684cbb6633), [`f76aae9`](https://github.com/lynx-family/lynx-stack/commit/f76aae9ea06abdc7022ba508d22f9f4eb00864e8), [`b8b060b`](https://github.com/lynx-family/lynx-stack/commit/b8b060b9bef722bb47bd90c33fab3922160c711d), [`d8381a5`](https://github.com/lynx-family/lynx-stack/commit/d8381a58d12af6424cab4955617251e798bdc9f1), [`214898b`](https://github.com/lynx-family/lynx-stack/commit/214898bb9c74fc9b44e68cb220a4c02485102ce2), [`ab8cee4`](https://github.com/lynx-family/lynx-stack/commit/ab8cee4bab384fa905c045c4b4b93e5d4a95d57f)]: - - @lynx-js/web-mainthread-apis@0.15.6 - - @lynx-js/web-constants@0.15.6 - - @lynx-js/web-worker-runtime@0.15.6 - - @lynx-js/web-worker-rpc@0.15.6 - -## 0.15.5 - -### Patch Changes - -- fix: load main-thread chunk in ESM format ([#1437](https://github.com/lynx-family/lynx-stack/pull/1437)) - - See [nodejs/node#59362](https://github.com/nodejs/node/issues/59362) for more details. - -- feat: support path() for `createQuerySelector` ([#1456](https://github.com/lynx-family/lynx-stack/pull/1456)) - - - Added `getPathInfo` API to `NativeApp` and its cross-thread handler for retrieving the path from a DOM node to the root. - - Implemented endpoint and handler registration in both background and UI threads. - - Implemented `nativeApp.getPathInfo()` - -- fix: when `onNativeModulesCall` is delayed in mounting, the NativeModules execution result may be undefined. ([#1457](https://github.com/lynx-family/lynx-stack/pull/1457)) - -- fix: `onNativeModulesCall` && `onNapiModulesCall` use getter to get. ([#1466](https://github.com/lynx-family/lynx-stack/pull/1466)) - -- Updated dependencies [[`29434ae`](https://github.com/lynx-family/lynx-stack/commit/29434aec853f14242f521316429cf07a93b8c371), [`fb7096b`](https://github.com/lynx-family/lynx-stack/commit/fb7096bb3c79166cd619a407095b8206eccb7918)]: - - @lynx-js/web-mainthread-apis@0.15.5 - - @lynx-js/web-constants@0.15.5 - - @lynx-js/web-worker-runtime@0.15.5 - - @lynx-js/web-worker-rpc@0.15.5 - -## 0.15.4 - -### Patch Changes - -- feat: support `__ElementFromBinary` ([#1391](https://github.com/lynx-family/lynx-stack/pull/1391)) - -- fix: crash on chrome<96 ([#1361](https://github.com/lynx-family/lynx-stack/pull/1361)) - - https://github.com/wasm-bindgen/wasm-bindgen/issues/4211#issuecomment-2505965903 - - https://github.com/WebAssembly/binaryen/issues/7358 - - The rust toolchain enables WASM feature `reference types` by default. - - However this feature is not supported by chromium lower than version 96 - - Therefore we found a workaround for it. - - In this implementation we detect if browser supports `reference types` first. - - If user's browser supported it, we load the wasm file with `reference types` on, otherwise we load the wasm file with `reference types` off. - -- Updated dependencies [[`22ca433`](https://github.com/lynx-family/lynx-stack/commit/22ca433eb96b39724c6eb47ce0a938d291bbdef2), [`8645d12`](https://github.com/lynx-family/lynx-stack/commit/8645d1240ecb2005da52ab2ffeb10a5d08cc9cc2), [`143e481`](https://github.com/lynx-family/lynx-stack/commit/143e481b4353b3c3d2e8d9cc4f201442ca56f097)]: - - @lynx-js/web-mainthread-apis@0.15.4 - - @lynx-js/web-constants@0.15.4 - - @lynx-js/web-worker-runtime@0.15.4 - - @lynx-js/web-worker-rpc@0.15.4 - -## 0.15.3 - -### Patch Changes - -- fix: improve compatibility with legacy template ([#1337](https://github.com/lynx-family/lynx-stack/pull/1337)) - - avoid "object Object" error for old version rspeedy outputs - -- Updated dependencies [[`0da5ef0`](https://github.com/lynx-family/lynx-stack/commit/0da5ef03e41f20e9f8019c6dc03cb4a38ab18854)]: - - @lynx-js/web-constants@0.15.3 - - @lynx-js/web-mainthread-apis@0.15.3 - - @lynx-js/web-worker-runtime@0.15.3 - - @lynx-js/web-worker-rpc@0.15.3 - -## 0.15.2 - -### Patch Changes - -- feat: support SSR for all-on-ui ([#1029](https://github.com/lynx-family/lynx-stack/pull/1029)) - -- feat: move SSR hydrate essential info to the ssr attribute ([#1292](https://github.com/lynx-family/lynx-stack/pull/1292)) - - We found that in browser there is no simple tool to decode a base64 string - - Therefore we move the data to `ssr` attribute - - Also fix some ssr issues - -- feat: support \_\_MarkTemplateElement, \_\_MarkPartElement and \_\_GetTemplateParts for all-on-ui ([#1275](https://github.com/lynx-family/lynx-stack/pull/1275)) - -- feat: mark template elements for SSR and update part ID handling ([#1286](https://github.com/lynx-family/lynx-stack/pull/1286)) - -- Updated dependencies [[`cebda59`](https://github.com/lynx-family/lynx-stack/commit/cebda592ac5c7d152c877c2ac5ec403d477077e1), [`1443e46`](https://github.com/lynx-family/lynx-stack/commit/1443e468a353363e29aab0d90cd8b91c232a5525), [`5062128`](https://github.com/lynx-family/lynx-stack/commit/5062128c68e21abcf276ebcb40d7cc8f6e54244b), [`f656b7f`](https://github.com/lynx-family/lynx-stack/commit/f656b7f0d390d69c0da0d11a6c9b3f66ae877ac8)]: - - @lynx-js/web-mainthread-apis@0.15.2 - - @lynx-js/web-constants@0.15.2 - - @lynx-js/web-worker-runtime@0.15.2 - - @lynx-js/web-worker-rpc@0.15.2 - -## 0.15.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-mainthread-apis@0.15.1 - - @lynx-js/web-worker-runtime@0.15.1 - - @lynx-js/web-constants@0.15.1 - - @lynx-js/web-worker-rpc@0.15.1 - -## 0.15.0 - -### Minor Changes - -- refactor: move exposure system to web-core ([#1254](https://github.com/lynx-family/lynx-stack/pull/1254)) - - **THIS IS A BREAKING CHANGE** - - **You'll need to upgrade your @lynx-js/web-elements to >= 0.8.0** - - For SSR and better performance, we moved the lynx's exposure system from web-element to web-core. - - Before this commit, we create Intersection observers by creating HTMLElements. - - After this commit, we will create such Intersection observers after dom stabled. - - Also, the setInterval for exposure has been removed, now we use an on time lazy timer for such features. - -### Patch Changes - -- refactor: improve `linear-weight-sum` performance ([#1216](https://github.com/lynx-family/lynx-stack/pull/1216)) - -- feat: lynx-view error event adds a new parameter: `e.detail.fileName`, which will be determined by the file location where the error occurred, either `lepus.js` or `app-service.js`. ([#1242](https://github.com/lynx-family/lynx-stack/pull/1242)) - -- perf: use rust implemented style transformer ([#1094](https://github.com/lynx-family/lynx-stack/pull/1094)) - -- Updated dependencies [[`7b75469`](https://github.com/lynx-family/lynx-stack/commit/7b75469d05dd2ec78bf6e1e54b94c8dff938eb40), [`f54a7aa`](https://github.com/lynx-family/lynx-stack/commit/f54a7aa539ad56ccd1e7e1b49d7ee59e742fe493), [`224c653`](https://github.com/lynx-family/lynx-stack/commit/224c653f370d807281fa0a9ffbb4f4dd5c9d308e)]: - - @lynx-js/offscreen-document@0.1.3 - - @lynx-js/web-worker-runtime@0.15.0 - - @lynx-js/web-mainthread-apis@0.15.0 - - @lynx-js/web-constants@0.15.0 - - @lynx-js/web-worker-rpc@0.15.0 - -## 0.14.2 - -### Patch Changes - -- feat: merge multiple markTiming RPC communication events together and send them together, which can effectively reduce the number of RPC communications. ([#1178](https://github.com/lynx-family/lynx-stack/pull/1178)) - -- chore: extract shared logic from web-core and web-core-server's loadTemplate into a unified generateTemplate function ([#1211](https://github.com/lynx-family/lynx-stack/pull/1211)) - -- Updated dependencies [[`e44b146`](https://github.com/lynx-family/lynx-stack/commit/e44b146b1bc2b58c0347af7fb4e4157688e07e36), [`5a9b38b`](https://github.com/lynx-family/lynx-stack/commit/5a9b38b783e611aa9761c4cd52191172270c09c7), [`6ca5b91`](https://github.com/lynx-family/lynx-stack/commit/6ca5b9106aade393dfac88914b160960a61a82f2)]: - - @lynx-js/web-mainthread-apis@0.14.2 - - @lynx-js/web-worker-runtime@0.14.2 - - @lynx-js/web-constants@0.14.2 - - @lynx-js/web-worker-rpc@0.14.2 - -## 0.14.1 - -### Patch Changes - -- feat: support BTS API `lynx.reportError` && `__SetSourceMapRelease`, now you can use it and handle it in lynx-view error event. ([#1059](https://github.com/lynx-family/lynx-stack/pull/1059)) - -- fix: under the all-on-ui strategy, reload() will add two page elements. ([#1147](https://github.com/lynx-family/lynx-stack/pull/1147)) - -- Updated dependencies [[`a64333e`](https://github.com/lynx-family/lynx-stack/commit/a64333ef28228d6b90c32e027f67bef8acbd8432), [`7751375`](https://github.com/lynx-family/lynx-stack/commit/775137521782ca5445f22029c39163c0a63bbfa5), [`b52a924`](https://github.com/lynx-family/lynx-stack/commit/b52a924a2375cb6f7ebafdd8abfbab0254eb2330)]: - - @lynx-js/web-worker-runtime@0.14.1 - - @lynx-js/web-constants@0.14.1 - - @lynx-js/web-mainthread-apis@0.14.1 - - @lynx-js/web-worker-rpc@0.14.1 - -## 0.14.0 - -### Minor Changes - -- refactor: the default thread-strategy will be all on ui ([#1105](https://github.com/lynx-family/lynx-stack/pull/1105)) - - **This is a breaking change!!!** - -### Patch Changes - -- feat: add `_SetSourceMapRelease(errInfo)` MTS API. ([#1118](https://github.com/lynx-family/lynx-stack/pull/1118)) - - You can get `errInfo.release` through `e.detail.release` in the error event callback of lynx-view. - - The `_SetSourceMapRelease` function is not complete yet, because it is currently limited by the Web platform and some functions and some props such as `err.stack` do not need to be supported for the time being. - -- feat: add `_I18nResourceTranslation` api in mts && `init-i18n-resources` attr, `i18nResourceMissed` event of lynx-view. ([#1065](https://github.com/lynx-family/lynx-stack/pull/1065)) - - `init-i18n-resource` is the complete set of i18nResources that need to be maintained on the container side. Note: You need to pass this value when lynx-view is initialized. - - You can use `_I18nResourceTranslation` in MTS to get the corresponding i18nResource from `init-i18n-resources`. If it is undefined, the `i18nResourceMissed` event will be dispatched. - - ```js - // ui thread - lynxView.initI18nResources = [ - { - options: { - locale: 'en', - channel: '1', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform1', - }, - }, - ]; - lynxView.addEventListener('i18nResourceMissed', (e) => { - console.log(e); - }); - - // mts - _I18nResourceTranslation({ - locale: 'en', - channel: '1', - fallback_url: '', - }); - ``` - -- fix: lynx-view `updateGlobalProps` method will also update globalProps, so `reload()` will use the latest updated globalProps. ([#1119](https://github.com/lynx-family/lynx-stack/pull/1119)) - -- feat: supports `lynx.getI18nResource()` and `onI18nResourceReady` event in bts. ([#1088](https://github.com/lynx-family/lynx-stack/pull/1088)) - - - `lynx.getI18nResource()` can be used to get i18nResource in bts, it has two data sources: - - the result of `_I18nResourceTranslation()` - - lynx-view `updateI18nResources(data: InitI18nResources, options: I18nResourceTranslationOptions)`, it will be matched to the correct i8nResource as a result of `lynx.getI18nResource()` - - `onI18nResourceReady` event can be used to listen `_I18nResourceTranslation` and lynx-view `updateI18nResources` execution. - -- refactor: make the opcode be a plain array ([#1051](https://github.com/lynx-family/lynx-stack/pull/1051)) - - #1042 - -- feat: The error event return value detail of lynx-view adds `sourceMap` value, the type is as follows: ([#1058](https://github.com/lynx-family/lynx-stack/pull/1058)) - - ``` - CustomEvent<{ - error: Error; - sourceMap: { - offset: { - line: number; - col: number; - }; - }; - }>; - ``` - - This is because web-core adds wrapper at runtime, which causes the stack offset to be different. Now you can calculate the real offset based on it. - -- feat: add `updateI18nResources` method of lynx-view. ([#1085](https://github.com/lynx-family/lynx-stack/pull/1085)) - - Now you can use `updateI18nResources` to update i18nResources, and then use \_I18nResourceTranslation() to get the updated result. - -- fix: --lynx-color will be removed, and if color contains `gradient` it will be processed as transparent. ([#1069](https://github.com/lynx-family/lynx-stack/pull/1069)) - -- Updated dependencies [[`42ed2e3`](https://github.com/lynx-family/lynx-stack/commit/42ed2e325ff38f781dc88b92cc56093a7a7164ea), [`25a04c9`](https://github.com/lynx-family/lynx-stack/commit/25a04c9e59f4b893227bdead74f2de69f6615cdb), [`0dbb8b1`](https://github.com/lynx-family/lynx-stack/commit/0dbb8b1f580d0700e2b67b92018a7a00d1494837), [`f99de1e`](https://github.com/lynx-family/lynx-stack/commit/f99de1ef60cc5a11eae4fd0acc70a490787d36c9), [`873a285`](https://github.com/lynx-family/lynx-stack/commit/873a2852fa3df9e32c48a6504160bb243540c7b9), [`afacb2c`](https://github.com/lynx-family/lynx-stack/commit/afacb2cbea7feca46c553651000625d0845b2b00), [`1861cbe`](https://github.com/lynx-family/lynx-stack/commit/1861cbead4b373e0511214999b0e100b6285fa9a)]: - - @lynx-js/web-worker-runtime@0.14.0 - - @lynx-js/web-mainthread-apis@0.14.0 - - @lynx-js/web-constants@0.14.0 - - @lynx-js/offscreen-document@0.1.2 - - @lynx-js/web-worker-rpc@0.14.0 - -## 0.13.5 - -### Patch Changes - -- refactor: move some internal status to dom's attribute ([#945](https://github.com/lynx-family/lynx-stack/pull/945)) - - It's essential for SSR - -- refactor: avoid to create many style element for cssog ([#1026](https://github.com/lynx-family/lynx-stack/pull/1026)) - -- refactor: move component config info to attribute ([#984](https://github.com/lynx-family/lynx-stack/pull/984)) - -- fix: ensure render starts after dom connected ([#1020](https://github.com/lynx-family/lynx-stack/pull/1020)) - -- refactor: save dataset on an attribute ([#981](https://github.com/lynx-family/lynx-stack/pull/981)) - - On lynx, the `data-*` attributes have different behaviors than the HTMLElement has. - - The dataset will be treated as properties, the key will not be applied the camel-case <-> hyphenate name transformation. - - Before this commit we use it as a runtime data, but after this commit we will use encodeURI(JSON.stringify(dataset)) to encode it as a string. - -- refactor: implement mts apis in closure pattern ([#1004](https://github.com/lynx-family/lynx-stack/pull/1004)) - -- Updated dependencies [[`70b82d2`](https://github.com/lynx-family/lynx-stack/commit/70b82d23744d6b6ec945dff9f8895ab3488ba4c8), [`5651e24`](https://github.com/lynx-family/lynx-stack/commit/5651e24827358963c3261252bcc53c2ad981c13e), [`9499ea9`](https://github.com/lynx-family/lynx-stack/commit/9499ea91debdf73b2d31af0b31bcbc216135543b), [`50f0193`](https://github.com/lynx-family/lynx-stack/commit/50f01933942268b697bf5abe790da86c932f1dfc), [`57bf0ef`](https://github.com/lynx-family/lynx-stack/commit/57bf0ef19f1d79bc52ab6a4f0cd2939e7901d98b), [`5651e24`](https://github.com/lynx-family/lynx-stack/commit/5651e24827358963c3261252bcc53c2ad981c13e), [`0525fbf`](https://github.com/lynx-family/lynx-stack/commit/0525fbf38baa7a977a7a8c66e8a4d8bf34cc3b68), [`b6b87fd`](https://github.com/lynx-family/lynx-stack/commit/b6b87fd11dbc76c28f3b5022aa8c6afeb773d90f), [`c014327`](https://github.com/lynx-family/lynx-stack/commit/c014327ad0cf599b32d4182d95116b46c35f5fa5)]: - - @lynx-js/web-mainthread-apis@0.13.5 - - @lynx-js/web-constants@0.13.5 - - @lynx-js/offscreen-document@0.1.1 - - @lynx-js/web-worker-runtime@0.13.5 - - @lynx-js/web-worker-rpc@0.13.5 - -## 0.13.4 - -### Patch Changes - -- feat: lynx-view supports `updateGlobalProps` method, which can be used to update lynx.\_\_globalProps ([#918](https://github.com/lynx-family/lynx-stack/pull/918)) - -- feat: supports `lynx.getElementById()` && `animate()`. ([#912](https://github.com/lynx-family/lynx-stack/pull/912)) - - After this commit, you can use `lynx.getElementById()` to get the element by id, and use `element.animate()` to animate the element. - -- Updated dependencies [[`96d3133`](https://github.com/lynx-family/lynx-stack/commit/96d3133b149b61af01c5478f4dc7b0a071137d98), [`75e5b2f`](https://github.com/lynx-family/lynx-stack/commit/75e5b2ff16ecf5f7072a45cd130e653dee747461), [`569618d`](https://github.com/lynx-family/lynx-stack/commit/569618d8e2665f5c9e1672f7ee5900ec2a5179a2), [`f9f88d6`](https://github.com/lynx-family/lynx-stack/commit/f9f88d6fb9c42d3370a6622d9d799d671ffcf1a7)]: - - @lynx-js/web-mainthread-apis@0.13.4 - - @lynx-js/offscreen-document@0.1.0 - - @lynx-js/web-worker-runtime@0.13.4 - - @lynx-js/web-constants@0.13.4 - - @lynx-js/web-worker-rpc@0.13.4 - -## 0.13.3 - -### Patch Changes - -- refactor: code clean ([#897](https://github.com/lynx-family/lynx-stack/pull/897)) - - rename many internal apis to make logic be clear: - - multi-thread: startMainWorker -> prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - all-on-ui: prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - -- perf: improve dom operation performance ([#881](https://github.com/lynx-family/lynx-stack/pull/881)) - - - code clean for offscreen-document, cut down inheritance levels - - add `appendChild` method for OffscreenElement, improve performance for append one node - - bypass some JS getter for dumping SSR string - -- fix: worker not released when backgroundWorkerContextCount != 1 ([#845](https://github.com/lynx-family/lynx-stack/pull/845)) - -- Updated dependencies [[`bb1f9d8`](https://github.com/lynx-family/lynx-stack/commit/bb1f9d845ef2395a0508666701409972e159389d), [`b6e27da`](https://github.com/lynx-family/lynx-stack/commit/b6e27daf865b0627b1c3238228a4fdf65ad87ee3), [`3d716d7`](https://github.com/lynx-family/lynx-stack/commit/3d716d79ae053b225e9bac2bbb036c968f5261e7)]: - - @lynx-js/offscreen-document@0.0.4 - - @lynx-js/web-mainthread-apis@0.13.3 - - @lynx-js/web-worker-runtime@0.13.3 - - @lynx-js/web-constants@0.13.3 - - @lynx-js/web-worker-rpc@0.13.3 - -## 0.13.2 - -### Patch Changes - -- feat: allow lynx code to get JS engine provided properties on globalThis ([#786](https://github.com/lynx-family/lynx-stack/pull/786)) - - ``` - globalThis.Reflect; // this will be the Reflect Object - ``` - - Note that `assigning to the globalThis` is still not allowed. - -- perf: use v8 hint for generated javascript file ([#807](https://github.com/lynx-family/lynx-stack/pull/807)) - - https://v8.dev/blog/explicit-compile-hints - -- feat: add new property `inject-style-rules` for LynxView ([#785](https://github.com/lynx-family/lynx-stack/pull/785)) - - This property allows developer to inject some style rules into the shadowroot. - - It's a wrapper of https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule - -- fix: corrupt mainthread module cache ([#806](https://github.com/lynx-family/lynx-stack/pull/806)) - -- Updated dependencies [[`03a5f64`](https://github.com/lynx-family/lynx-stack/commit/03a5f64d7d09e38903f5d1c022f36f6e68b6432d), [`6d3d852`](https://github.com/lynx-family/lynx-stack/commit/6d3d8529d0d528419920102ca52da279bbe0f1e0), [`8cdd288`](https://github.com/lynx-family/lynx-stack/commit/8cdd28884288b9456aee3a919d6edbf72da1c67b), [`6d3d852`](https://github.com/lynx-family/lynx-stack/commit/6d3d8529d0d528419920102ca52da279bbe0f1e0)]: - - @lynx-js/web-mainthread-apis@0.13.2 - - @lynx-js/web-worker-runtime@0.13.2 - - @lynx-js/web-constants@0.13.2 - - @lynx-js/offscreen-document@0.0.3 - - @lynx-js/web-worker-rpc@0.13.2 - -## 0.13.1 - -### Patch Changes - -- fix: some inline style properties cause crash ([#647](https://github.com/lynx-family/lynx-stack/pull/647)) - - add support for the following css properties - - - mask - - mask-repeat - - mask-position - - mask-clip - - mask-origin - - mask-size - - gap - - column-gap - - row-gap - - image-rendering - - hyphens - - offset-path - - offset-distance - -- feat: support touch events for MTS ([#641](https://github.com/lynx-family/lynx-stack/pull/641)) - - now we support - - - main-thread:bindtouchstart - - main-thread:bindtouchend - - main-thread:bindtouchmove - - main-thread:bindtouchcancel - -- feat: add SystemInfo.screenWidth and SystemInfo.screenHeight ([#641](https://github.com/lynx-family/lynx-stack/pull/641)) - -- Updated dependencies [[`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91), [`9ad394e`](https://github.com/lynx-family/lynx-stack/commit/9ad394ea9ef28688a3b810b4051868b2a28eb7de), [`f4cfb70`](https://github.com/lynx-family/lynx-stack/commit/f4cfb70606d46cd4017254c326095432f9c6bcb8), [`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91), [`839d61c`](https://github.com/lynx-family/lynx-stack/commit/839d61c8a329ed1e265fe2edc12a702e9592f743)]: - - @lynx-js/offscreen-document@0.0.2 - - @lynx-js/web-mainthread-apis@0.13.1 - - @lynx-js/web-worker-runtime@0.13.1 - - @lynx-js/web-constants@0.13.1 - - @lynx-js/web-worker-rpc@0.13.1 - -## 0.13.0 - -### Patch Changes - -- refactor: isolate SystemInfo ([#628](https://github.com/lynx-family/lynx-stack/pull/628)) - - Never assign `SystemInfo` on worker's self object. - -- feat: support thread strategy `all-on-ui` ([#625](https://github.com/lynx-family/lynx-stack/pull/625)) - - ```html - - ``` - - This will make the lynx's main-thread run on the UA's main thread. - - Note that the `all-on-ui` does not support the HMR & chunk splitting yet. - -- fix(web): css selector not work for selectors with combinator and pseudo-class on WEB ([#608](https://github.com/lynx-family/lynx-stack/pull/608)) - - like `.parent > :not([hidden]) ~ :not([hidden])` - - you will need to upgrade your `react-rsbuild-plugin` to fix this issue - -- Updated dependencies [[`4ee0465`](https://github.com/lynx-family/lynx-stack/commit/4ee0465f6e5846a0d038b49d2a7c95e87c9e5c77), [`74b5bd1`](https://github.com/lynx-family/lynx-stack/commit/74b5bd15339b70107a7c42525494da46e8f8f6bd), [`06bb78a`](https://github.com/lynx-family/lynx-stack/commit/06bb78a6b93d4a7be7177a6269dd4337852ce90d), [`5a3d9af`](https://github.com/lynx-family/lynx-stack/commit/5a3d9afe52ba639987db124ca35580261e0718b5), [`5269cab`](https://github.com/lynx-family/lynx-stack/commit/5269cabef7609159bdd0dd14a03c5da667907424), [`74b5bd1`](https://github.com/lynx-family/lynx-stack/commit/74b5bd15339b70107a7c42525494da46e8f8f6bd), [`2b069f8`](https://github.com/lynx-family/lynx-stack/commit/2b069f8786c95bdb9ac1f35091f05f7fd3b52225)]: - - @lynx-js/web-mainthread-apis@0.13.0 - - @lynx-js/web-worker-runtime@0.13.0 - - @lynx-js/web-constants@0.13.0 - - @lynx-js/offscreen-document@0.0.1 - - @lynx-js/web-worker-rpc@0.13.0 - -## 0.12.0 - -### Minor Changes - -- feat: improve compatibility for chrome 108 & support linear-gradient for nested x-text ([#590](https://github.com/lynx-family/lynx-stack/pull/590)) - - **This is a breaking change** - - - Please upgrade your `@lynx-js/web-elements` to >=0.6.0 - - Please upgrade your `@lynx-js/web-core` to >=0.12.0 - - The compiled lynx template json won't be impacted. - - On chrome 108, the `-webkit-background-clip:text` cannot be computed by a `var(--css-var-value-text)` - - Therefore we move the logic into style transformation logic. - - Now the following status is supported - - ``` - - - - - ``` - -### Patch Changes - -- feat: allow user to implement custom template load function ([#587](https://github.com/lynx-family/lynx-stack/pull/587)) - - ```js - lynxView.customTemplateLoader = (url) => { - return (await (await fetch(url, { - method: 'GET', - })).json()); - }; - ``` - -- feat: support mts event with target methods ([#564](https://github.com/lynx-family/lynx-stack/pull/564)) - - After this commit, developers are allowed to invoke `event.target.setStyleProperty` in mts handler - -- fix: crash on removing a id attribute ([#582](https://github.com/lynx-family/lynx-stack/pull/582)) - -- Updated dependencies [[`f1ca29b`](https://github.com/lynx-family/lynx-stack/commit/f1ca29bd766377dd46583f15e1e75bca447699cd)]: - - @lynx-js/web-worker-runtime@0.12.0 - - @lynx-js/web-constants@0.12.0 - - @lynx-js/web-worker-rpc@0.12.0 - -## 0.11.0 - -### Minor Changes - -- feat: upgrade @lynx-js/lynx-core to 0.1.2 ([#465](https://github.com/lynx-family/lynx-stack/pull/465)) - - refactor some internal logic - - - \_\_OnLifeCycleEvent - - \_\_OnNativeAppReady - -### Patch Changes - -- feat: support mts event handler (1/n) ([#495](https://github.com/lynx-family/lynx-stack/pull/495)) - - now the main-thread:bind handler could be invoked. The params of the handler will be implemented later. - -- feat: allow multi lynx-view to share bts worker ([#520](https://github.com/lynx-family/lynx-stack/pull/520)) - - Now we allow users to enable so-called "shared-context" feature on the Web Platform. - - Similar to the same feature for Lynx iOS/Android, this feature let multi lynx cards to share one js context. - - The `lynx.getSharedData` and `lynx.setSharedData` are also supported in this commit. - - To enable this feature, set property `lynxGroupId` or attribute `lynx-group-id` before a lynx-view starts rendering. Those card with same context id will share one web worker for the bts scripts. - -- perf: dispatchLynxViewEventEndpoint is a void call ([#506](https://github.com/lynx-family/lynx-stack/pull/506)) - -- Updated dependencies [[`ea42e62`](https://github.com/lynx-family/lynx-stack/commit/ea42e62fbcd5c743132c3e6e7c4851770742d544), [`a0f5ca4`](https://github.com/lynx-family/lynx-stack/commit/a0f5ca4ea0895ccbaa6aa63f449f53a677a1cf73)]: - - @lynx-js/web-worker-runtime@0.11.0 - - @lynx-js/web-constants@0.11.0 - - @lynx-js/web-worker-rpc@0.11.0 - -## 0.10.1 - -### Patch Changes - -- docs: fix documents about lynx-view's properties ([#412](https://github.com/lynx-family/lynx-stack/pull/412)) - - Attributes should be hyphen-name: 'init-data', 'global-props'. - - now all properties has corresponding attributes. - -- feat: onNapiModulesCall function add new param: `dispatchNapiModules`, napiModulesMap val add new param: `handleDispatch`. ([#414](https://github.com/lynx-family/lynx-stack/pull/414)) - - Now you can use them to actively communicate to napiModules (background thread) in onNapiModulesCall (ui thread). - -- Updated dependencies [[`1af3b60`](https://github.com/lynx-family/lynx-stack/commit/1af3b6052ab27f98bf0e4d1b0ec9f7d9e88e0afc)]: - - @lynx-js/web-constants@0.10.1 - - @lynx-js/web-worker-runtime@0.10.1 - - @lynx-js/web-worker-rpc@0.10.1 - -## 0.10.0 - -### Minor Changes - -- feat: rewrite the main thread Element PAPIs ([#343](https://github.com/lynx-family/lynx-stack/pull/343)) - - In this commit we've rewritten the main thread apis. - - The most highlighted change is that - - - Before this commit we send events directly to bts - - After this change, we send events to mts then send them to bts with some data combined. - -### Patch Changes - -- refactor: timing system ([#378](https://github.com/lynx-family/lynx-stack/pull/378)) - - Now we moved the timing system to the background thread. - -- feat: support `defaultOverflowVisible` config ([#406](https://github.com/lynx-family/lynx-stack/pull/406)) - -- fix(web): rsbuild will bundle 2 exactly same chunk for two same `new Worker` stmt ([#372](https://github.com/lynx-family/lynx-stack/pull/372)) - - the bundle size will be optimized about 28.2KB - -- fix: inline style will be removed for value number `0` ([#368](https://github.com/lynx-family/lynx-stack/pull/368)) - - the inline style value could be incorrectly removed for number value `0`; - - For example, `flex-shrink:0` may be ignored. - -- feat: The onNapiModulesCall function of lynx-view provides the fourth parameter: `lynxView`, which is the actual lynx-view DOM. ([#350](https://github.com/lynx-family/lynx-stack/pull/350)) - -- fix: publicComponentEvent args order ([#401](https://github.com/lynx-family/lynx-stack/pull/401)) - -- Updated dependencies [[`3a8dabd`](https://github.com/lynx-family/lynx-stack/commit/3a8dabd877084c15db1404c912dd8a19c7a0fc59), [`a521759`](https://github.com/lynx-family/lynx-stack/commit/a5217592f5aebea4b17860e729d523ecabb5f691), [`890c6c5`](https://github.com/lynx-family/lynx-stack/commit/890c6c51470c82104abb1049681f55e5d97cf9d6)]: - - @lynx-js/web-worker-runtime@0.10.0 - - @lynx-js/web-constants@0.10.0 - - @lynx-js/web-worker-rpc@0.10.0 - -## 0.9.1 - -### Patch Changes - -- feat: remove extra div #lynx-view-root ([#311](https://github.com/lynx-family/lynx-stack/pull/311)) - - In this commit we've re-implemented the lynx-view's auto-size. Now we use the `contain:content` instead of `resizeObserver`. - -- Updated dependencies []: - - @lynx-js/web-constants@0.9.1 - - @lynx-js/web-worker-rpc@0.9.1 - - @lynx-js/web-worker-runtime@0.9.1 - -## 0.9.0 - -### Minor Changes - -- feat: `nativeModulesUrl` of lynx-view is changed to `nativeModulesMap`, and the usage is completely aligned with `napiModulesMap`. ([#220](https://github.com/lynx-family/lynx-stack/pull/220)) - - "warning: This is a breaking change." - - `nativeModulesMap` will be a map: key is module-name, value should be a esm url which export default a - function with two parameters(you never need to use `this`): - - - `NativeModules`: oriented `NativeModules`, which you can use to call - other Native-Modules. - - - `NativeModulesCall`: trigger `onNativeModulesCall`, same as the deprecated `this.nativeModulesCall`. - - example: - - ```js - const nativeModulesMap = { - CustomModule: URL.createObjectURL( - new Blob( - [ - `export default function(NativeModules, NativeModulesCall) { - return { - async getColor(data, callback) { - const color = await NativeModulesCall('getColor', data); - callback(color); - }, - } - };`, - ], - { type: 'text/javascript' }, - ), - ), - }; - lynxView.nativeModulesMap = nativeModulesMap; - ``` - - In addition, we will use Promise.all to load `nativeModules`, which will optimize performance in the case of multiple modules. - -- refractor: remove entryId concept ([#217](https://github.com/lynx-family/lynx-stack/pull/217)) - - After the PR #198 - All contents are isolated by a shadowroot. - Therefore we don't need to add the entryId selector to avoid the lynx-view's style taking effect on the whole page. - -### Patch Changes - -- refactor: code clean ([#266](https://github.com/lynx-family/lynx-stack/pull/266)) - -- refactor: clean the decodeOperations implementation ([#261](https://github.com/lynx-family/lynx-stack/pull/261)) - -- fix: When the width and height of lynx-view are not auto, the width and height of the `lynx-tag="page"` need to be correctly set to 100%. ([#228](https://github.com/lynx-family/lynx-stack/pull/228)) - -- refactor: remove customelement defined detecting logic ([#247](https://github.com/lynx-family/lynx-stack/pull/247)) - - Before this commit, for those element with tag without `-`, we always try to detect if the `x-${tagName}` is defined. - - After this commit, we pre-define a map(could be override by the `overrideLynxTagToHTMLTagMap`) to make that transformation for tag name. - - This change is a path to SSR and the MTS support. - -- fix: 'error' event for main-thread \_reportError ([#283](https://github.com/lynx-family/lynx-stack/pull/283)) - -- Updated dependencies [[`5b5e090`](https://github.com/lynx-family/lynx-stack/commit/5b5e090fdf0e896f1c38a49bf3ed9889117c4fb8), [`b844e75`](https://github.com/lynx-family/lynx-stack/commit/b844e751f566d924256365d37aec4c86c520ec00), [`53230f0`](https://github.com/lynx-family/lynx-stack/commit/53230f012216f3a627853e11d544e4be175c5b9b), [`6f16827`](https://github.com/lynx-family/lynx-stack/commit/6f16827d1f4d7364870d354fc805a8868c110f1e), [`d2d55ef`](https://github.com/lynx-family/lynx-stack/commit/d2d55ef9fe438c35921d9db0daa40d5228822ecc)]: - - @lynx-js/web-worker-runtime@0.9.0 - - @lynx-js/web-constants@0.9.0 - - @lynx-js/web-worker-rpc@0.9.0 - -## 0.8.0 - -### Minor Changes - -- refactor: remove web-elements/lazy and loadNewTag ([#123](https://github.com/lynx-family/lynx-stack/pull/123)) - - - remove @lynx-js/web-elements/lazy - - remove loadElement - - remove loadNewTag callback - - **This is a breaking change** - - Now we removed the default lazy loading preinstalled in web-core - - Please add the following statement in your web project - - ``` - import "@lynx-js/web-elements/all"; - ``` - -- feat: use shadowroot to isolate one lynx-view ([#198](https://github.com/lynx-family/lynx-stack/pull/198)) - - Before this commit, we have been detecting if current browser supports the `@scope` rule. - This allows us to scope one lynx-view's styles. - - After this commit we always create a shadowroot to scope then. - - Also for the new shadowroot pattern, we add a new **attribute** `inject-head-links`. - By default, we will iterate all `` in the ``, and use `@import url()` to import them inside the shadowroot. - Developers could add a `inject-head-links="false"` to disable this behavior. - -- feat: never add the x-enable-xx-event attributes ([#157](https://github.com/lynx-family/lynx-stack/pull/157)) - - After this commit, we update the reqirement of the version of `@lynx-js/web-elements` to `>=0.3.1` - -### Patch Changes - -- feat: add pixelRatio of SystemInfo, now you can use `SystemInfo.pixelRatio`. ([#150](https://github.com/lynx-family/lynx-stack/pull/150)) - -- Improve LynxView resize observer cleanup ([#124](https://github.com/lynx-family/lynx-stack/pull/124)) - -- feat: add two prop of lynx-view about `napiLoader`: ([#173](https://github.com/lynx-family/lynx-stack/pull/173)) - - - `napiModulesMap`: [optional] the napiModule which is called in lynx-core. key is module-name, value is esm url. - - - `onNapiModulesCall`: [optional] the NapiModule value handler. - - **Warning:** This is the internal implementation of `@lynx-js/lynx-core`. In most cases, this API is not required for projects. - - 1. The `napiModulesMap` value should be a esm url which export default a function with two parameters: - - - `NapiModules`: oriented `napiModulesMap`, which you can use to call other Napi-Modules - - - `NapiModulesCall`: trigger `onNapiModulesCall` - - example: - - ```js - const color_environment = URL.createObjectURL( - new Blob( - [ - `export default function(NapiModules, NapiModulesCall) { - return { - getColor() { - NapiModules.color_methods.getColor({ color: 'green' }, color => { - console.log(color); - }); - }, - ColorEngine: class ColorEngine { - getColor(name) { - NapiModules.color_methods.getColor({ color: 'green' }, color => { - console.log(color); - }); - } - }, - }; - };`, - ], - { type: 'text/javascript' }, - ), - ); - - const color_methods = URL.createObjectURL( - new Blob( - [ - `export default function(NapiModules, NapiModulesCall) { - return { - async getColor(data, callback) { - const color = await NapiModulesCall('getColor', data); - callback(color); - }, - }; - };`, - ], - { type: 'text/javascript' }, - ), - ); - - lynxView.napiModuleMap = { - color_environment: color_environment, - color_methods: color_methods, - }; - ``` - - 2. The `onNapiModulesCall` function has three parameters: - - - `name`: the first parameter of `NapiModulesCall`, the function name - - `data`: the second parameter of `NapiModulesCall`, data - - `moduleName`: the module-name of the called napi-module - - ```js - lynxView.onNapiModulesCall = (name, data, moduleName) => { - if (name === 'getColor' && moduleName === 'color_methods') { - return data.color; - } - }; - ``` - -- Updated dependencies [[`eab1328`](https://github.com/lynx-family/lynx-stack/commit/eab1328a83797fc903255c984d9f39537b9138b9), [`e9e8370`](https://github.com/lynx-family/lynx-stack/commit/e9e8370e070a50cbf65a4ebc46c2e37ea1e0be40), [`ec4e1ce`](https://github.com/lynx-family/lynx-stack/commit/ec4e1ce0d7612d6c0701792a46c78cd52130bad4), [`f0a717c`](https://github.com/lynx-family/lynx-stack/commit/f0a717c630700e16ab0af7f1fe370fd60ac75b30)]: - - @lynx-js/web-worker-runtime@0.8.0 - - @lynx-js/web-constants@0.8.0 - - @lynx-js/web-worker-rpc@0.8.0 - -## 0.7.1 - -### Patch Changes - -- Support NPM provenance. ([#30](https://github.com/lynx-family/lynx-stack/pull/30)) - -- fix: some valus should be updateable by global scope ([#130](https://github.com/lynx-family/lynx-stack/pull/130)) - - Now we add an allowlist to allow some identifiers could be updated by globalThis. - - For those values in the allowlist: - - ``` - globalThis.foo = 'xx'; - console.log(foo); //'xx' - ``` - -- refactor: isolate the globalThis in mts ([#90](https://github.com/lynx-family/lynx-stack/pull/90)) - - After this commit, developers' mts code won't be able to access the globalThis - - The following usage will NOT work - - ``` - globalThis.foo = () =>{}; - foo();//crash - ``` - -- refractor: improve some internal logic for element creating in MTS ([#71](https://github.com/lynx-family/lynx-stack/pull/71)) - -- Updated dependencies [[`c617453`](https://github.com/lynx-family/lynx-stack/commit/c617453aea967aba702967deb2916b5c883f03bb), [`2044571`](https://github.com/lynx-family/lynx-stack/commit/204457166531dae6e9f653db56b14187553b7666), [`7da7601`](https://github.com/lynx-family/lynx-stack/commit/7da7601f00407970c485046ad73eeb8534aaa4f6)]: - - @lynx-js/web-worker-runtime@0.7.1 - - @lynx-js/web-worker-rpc@0.7.1 - - @lynx-js/web-constants@0.7.1 - -## 0.7.0 - -### Minor Changes - -- 1abf8f0: feat(web): - - **This is a breaking change** - - 1. A new param for `lynx-view`: `nativeModulesUrl`, which allows you to pass an esm url to add a new module to `NativeModules`. And we bind the `nativeModulesCall` method to each function on the module, run `this.nativeModulesCall()` to trigger onNativeModulesCall. - - ```typescript - export type NativeModuleHandlerContext = { - nativeModulesCall: (name: string, data: Cloneable) => Promise; - }; - ``` - - a simple case: - - ```js - lynxView.nativeModules = URL.createObjectURL( - new Blob( - [ - `export default { - myNativeModules: { - async getColor(data, callback) { - // trigger onNativeModulesCall and get the result - const color = await this.nativeModulesCall('getColor', data); - // return the result to caller - callback(color); - }, - } - };`, - ], - { type: 'text/javascript' }, - ), - ); - ``` - - 2. `onNativeModulesCall` is no longer the value handler of `NativeModules.bridge.call`, it will be the value handler of all `NativeModules` modules. - - **Warning: This is a breaking change.** - - Before this commit, you listen to `NativeModules.bridge.call('getColor')` like this: - - ```js - lynxView.onNativeModulesCall = (name, data, callback) => { - if (name === 'getColor') { - callback(data.color); - } - }; - ``` - - Now you should use it like this: - - ```js - lynxView.onNativeModulesCall = (name, data, moduleName) => { - if (name === 'getColor' && moduleName === 'bridge') { - return data.color; - } - }; - ``` - - You need to use `moduleName` to determine the NativeModules-module. And you don’t need to run callback, just return the result! - -### Patch Changes - -- Updated dependencies [1abf8f0] - - @lynx-js/web-worker-runtime@0.7.0 - - @lynx-js/web-constants@0.7.0 - - @lynx-js/web-worker-rpc@0.7.0 - -## 0.6.2 - -### Patch Changes - -- 15381ca: fix: the 'page' should have default style width:100%; height:100%; -- 0412db0: fix: The runtime wrapper parameter name is changed from `runtime` to `lynx_runtime`. - - This is because some project logic may use `runtime`, which may cause duplication of declarations. - -- 2738fdc: feat: support linear-direction -- Updated dependencies [0412db0] -- Updated dependencies [085b99e] - - @lynx-js/web-constants@0.6.2 - - @lynx-js/web-worker-runtime@0.6.2 - - @lynx-js/web-worker-rpc@0.6.2 - -## 0.6.1 - -### Patch Changes - -- 9c25c3d: feat: support synchronously chunk loading - - now the `lynx.requireModule` is available in bts. - -- Updated dependencies [62b7841] - - @lynx-js/web-worker-runtime@0.6.1 - - @lynx-js/web-constants@0.6.1 - - @lynx-js/web-worker-rpc@0.6.1 - -## 0.6.0 - -### Minor Changes - -- e406d69: refractor: update output json format - - **This is a breaking change** - - Before this change the style info is dump in Javascript code. - - After this change the style info will be pure JSON data. - - Now we're using the css-serializer tool's output only. If you're using plugins for it, now they're enabled. - -### Patch Changes - -- bfae2ab: feat: We will only preheat the mainThreadWorker now, and the backgroundWorker will be created when renderPage is called, which can save some memory. - - Before this change, We will preheat two workers: mainThreadWorker and backgroundWorker. - -- b80e2bb: feat: add reload() method -- Updated dependencies [e406d69] - - @lynx-js/web-worker-runtime@0.6.0 - - @lynx-js/web-constants@0.6.0 - - @lynx-js/web-worker-rpc@0.6.0 - -## 0.5.1 - -### Patch Changes - -- c49b1fb: feat: updateData api needs to have the correct format, now you can pass a callback. -- ee340da: feat: add SystemInfo.platform as 'web'. now you can use `SystemInfo.platform`. -- b5ef20e: feat: updateData should also call `updatePage` in main-thread. -- Updated dependencies [c49b1fb] -- Updated dependencies [ee340da] -- Updated dependencies [b5ef20e] - - @lynx-js/web-constants@0.5.1 - - @lynx-js/web-worker-runtime@0.5.1 - - @lynx-js/web-worker-rpc@0.5.1 - -## 0.5.0 - -### Minor Changes - -- 7b84edf: feat: introduce new output chunk format - - **This is a breaking change** - - After this commit, we new introduce a new output format for web platform. - - This new output file is a JSON file, includes all essential info. - - Now we'll add the chunk global scope wrapper on runtime, this will help us to provide a better backward compatibility. - - Also we have a intergrated output file cache for one session. - - Now your `output.filename` will work. - - The split-chunk feature has been temporary removed until the rspeedy team supports this feature for us. - -### Patch Changes - -- 3050faf: refractor: housekeeping -- dc6216c: feat: add selectComponent of nativeApp -- 5eaa052: refractor: unifiying worker runtime -- Updated dependencies [04607bd] -- Updated dependencies [3050faf] -- Updated dependencies [7b84edf] -- Updated dependencies [e0f0793] - - @lynx-js/web-worker-rpc@0.5.0 - - @lynx-js/web-worker-runtime@0.5.0 - - @lynx-js/web-constants@0.5.0 - -## 0.4.2 - -### Patch Changes - -- 958efda: feat(web): bundle background.js into main-thread.js for web - - To enable this feature: - - 1. set the performance.chunkSplit.strategy to `all-in-one` - 2. use the `mode:'production'` to build - - The output will be only one file. - -- 283e6bd: fix: invoke callback should be called after invoke && the correct callback params should be passed to callback function. - - Before this commit the invoke() success and fail callback function was be called. - -- 8d583f5: refactor: organize internal dependencies -- 8cd3f65: feat: add triggerComponentEvent of NativeApp. -- 38f21e4: fix: avoid card freezing on the background.js starts too fast - - if the background thread starts too fast, Reactlynx runtime will assign an lazy handler first and then replace it by the real handler. - - Before this commit we cannot handle such "replace" operation for cross-threading call. - - Now we fix this issue - -- 8714140: fix(web): check and assign globalThis property of nativeTTObject -- 7c3c2a1: feat: support `sendGlobalEvent` method. - - Now developers can do this: - - ```javascript - const lynxView = createLynxView(configs); - lynxView.sendGlobalEvent(eventName, params); - ``` - -- 168b4fa: feat: rename CloneableObject to Cloneable, Now its type refers to a structure that can be cloned; CloneableObject type is added, which only refers to object types that can be cloned. -- Updated dependencies [8d583f5] -- Updated dependencies [38f21e4] -- Updated dependencies [168b4fa] - - @lynx-js/web-worker-rpc@0.4.2 - - @lynx-js/web-constants@0.4.2 - - @lynx-js/web-mainthread-apis@0.4.2 - -## 0.4.1 - -### Patch Changes - -- 2a49a42: fix(web): gen 2nd parameter for updateData -- 084eb17: feat: At any time, a worker is reserved for preheating subsequent cards. -- d3eac58: fix(web): refractor worker terminate system -- de2f62b: fix(web): performance doesn't handle main-thread timings correctly -- e72aae0: feat(web): support onNativeAppReady -- 27c0e6e: feat(web): infer the cssId if parent component unique id is set - - ``` - (The following info is provided for DSL maintainers) - - - the 'infer' operation only happens on fiber element creating, changing the parent's cssId, changing children's parent component unique id will cause an issue - - __SetCSSId will be called for setting inferred cssId value. Runtime could use the same `__SetCSSId` to overwrite this value. - - cssId: `0` will be treated as an void value - ``` - -- 500057e: fix: `__GetElementUniqueID` return -1 for illegal param - - (Only DSL developers need to care this) - -- Updated dependencies [27c0e6e] -- Updated dependencies [500057e] - - @lynx-js/web-mainthread-apis@0.4.1 - - @lynx-js/web-constants@0.4.1 - -## 0.4.0 - -### Minor Changes - -- a3c39d6: fix: enableRemoveCSSScope:false with descendant combinator does not work - - **THIS IS A BREAKING CHANGE** - - Before this commit, we will add a [lynx-css-id=""] selector at the beginning of all selector, like this - - ```css - [lynx-css-id="12345"].bg-pink { - background-color: pink; - } - ``` - - However, for selector with descendant combinator, this will cause an issue - - ```css - [lynx-css-id="12345"].light .bg-pink { - background-color: pink; - } - ``` - - What we actually want is - - ```css - .light .bg-pink[lynx-css-id="12345"] { - background-color: pink; - } - ``` - - After this commit, we changed the data structor of the styleinfo which bundled into the main-thread.js. - This allows us to add class selectors at the begining of selector and the end of plain selector(before the pseudo part). - - **THIS IS A BREAKING CHANGE** - - After this version, you will need to upgrade the version of @lynx-js/web-core^0.4.0 - -- 2dd0aef: feat: support performance apis for lynx - - - support `nativeApp.generatePipelineOptions` - - support `nativeApp.onPipelineStart` - - support `nativeApp.markPipelineTiming` - - support `nativeApp.bindPipelineIdWithTimingFlag` - - for lynx developers, the following apis are now supported - - - `lynx.performance.addTimingListener` - - `__lynx_timing_flag` attribute - - for lynx-view container developers - - - `mainChunkReady` event has been removed - - add a new `timing` event - -### Patch Changes - -- 3123b86: fix(web): do not use @scope for safari for enableCSSSelector:false - - We this there is a bug in webkit. - -- 585d55a: feat(web): support animation-_ and transition-_ event - - Now we will append the correct `event.params` property for animation events and transition events - - - @lynx-js/web-constants@0.4.0 - - @lynx-js/web-mainthread-apis@0.4.0 - -## 0.3.1 - -### Patch Changes - -- 9f2ad5e: feat: add worker name for debug - - before this commit, all web workers will be named as `main-thread` or `worker-thread` - - now we name based on it's entryId - -- 583c003: fix: - - 1. custom-element pre-check before define to avoid duplicate registration. - - 2. make sure @lynx-js/lynx-core is bundled into @lynx-js/web-core. - -- 61a7014: refractor: migrate to publishEvent -- c3726e8: feat: pre heat the worker runtime at the very beginning - - We cecently found that the worker booting takes some time. - - Here we boot the first 2 workers for the first lynx-view. - - This will help use to improve performance - - - @lynx-js/web-constants@0.3.1 - - @lynx-js/web-mainthread-apis@0.3.1 - -## 0.3.0 - -### Minor Changes - -- 267c935: feat: make cardType could be configurable -- f44c589: feat: support exports field of the lynx-core - -### Patch Changes - -- 884e31c: fix: bind lazy rpc handlers -- 6e873bc: fix: incorrect parent component id value on publishComponentEvent -- Updated dependencies [d255d24] -- Updated dependencies [6e873bc] -- Updated dependencies [267c935] - - @lynx-js/web-mainthread-apis@0.3.0 - - @lynx-js/web-constants@0.3.0 - -## 0.2.0 - -### Minor Changes - -- 32d47c4: chore: upgrate dep version of web-core - -### Patch Changes - -- 272db24: refractor: the main-thread worker will be dedicated for every lynx view - - @lynx-js/web-constants@0.2.0 - - @lynx-js/web-mainthread-apis@0.2.0 - -## 0.1.0 - -### Minor Changes - -- 78638dc: feat: support invokeUIMethod and setNativeProps -- 06fe3cd: feat: support splitchunk and lynx.requireModuleAsync - - - support splitchunk option of rspeedy - - add implementation for lynx.requireModuleAsync for both main-thread and background-thread - - mark worker `ready` after \_OnLifeCycleEvent is assigned - - close #96 - -- fe0d06f: feat: add onError callback to `LynxCard` - - The onError callback is a wrapper of the ElementAPI `_reportError`. - - This allows the externel caller to detect errors. - -- 66ce343: feat: support config `defaultDisplayLinear` -- c43f436: feat: add `dispose()` method for lynxview -- 068f677: feat: suppport createSelectorQuery -- 3547621: feat(web): use `` to replace `
` -- d551d81: feat: support customSection - - - support lynx.getCustomSection - - support lynx.getCustomSectionSync - -- f1ddb5a: feat: never need to pass background entry url -- b323923: feat(web): support **ReplaceElement, **CreateImage, \_\_CreateScrollView -- 3a370ab: feat: support global identifier `lynxCoreInject` and `SystemInfo` -- 23e6fa5: feat(web): support enableCSSSelector:false - - We will extract all selectors with single class selector and rules in a Json object. - - These classes will be applied on runtime. - - **About enableCSSSelector:false** - - This flag changes the behaviour of cascading. It provide a way to do this - - ```jsx - ; - ``` - - The class-b will override (cascading) styles of class-a. - -- 39cf3ae: feat: improve performance for supporting linear layout - - Before this commit, we'll use `getComputedStyle()` to find out if a dom is a linear container. - - After this commit, we'll use the css variable cyclic toggle pattern and `@container style()` - - This feature requires **Chrome 111, Safari 18**. - - We'll provide a fallback implementation for firefox and legacy browsers. - - After this commit, your `flex-direction`, `flex-shrink`, `flex`, `flex-grow`, `flex-basis` will be transformed to a css variable expression. - -- 2973ba5: feat: move lynx main-thread to web worker - - Move The Mainthread of Lynx to a web worker. - - This helps the performance. - -- 6327fa8: feat(web): add support for \_\_CreateWrapperElement -- 2047658: feat: support exposure system - - support the following APIs: - - - lynx.stopExposure({sendEvent?:boolean}) - - lynx.resumeExposure() - - GlobalEvent: 'exposure' - - GlobalEvent: 'disexposure' - - uiappear event - - uidisappear event - -- 269bf61: feat: support rspeedy layer model and support sharing chunk between main and background -- c95430c: feat: support `updateData` - - Now developers can do this: - - ```javascript - const lynxView = createLynxView(configs); - lynxView.updateData(newData); - ``` - -- 29f24aa: feat(web): support removeCSSScope:false - - - add element api `__SetCSSId` - - add new WebpackPlugin `@lynx-js/web-webpack-plugin` - - add support for removeCSSSCope - - pass all configs via thie \*.lepus.js - - support to scope styles of lynx card for browsers do not support `@scope` and nesting - -- 216ed68: feat: add a new element - - ``` - * @param {string} url [required] The url of the entry of your Lynx card - * @param {Cloneable} globalProps [optional] The globalProps value of this Lynx card - * @param {Cloneable} initData [optional] The initial data of this Lynx card - * @param {Record} overrideLynxTagToHTMLTagMap [optional] use this property/attribute to override the lynx tag -> html tag map - * @param {NativeModulesCallHandler} onNativeModulesCall [optional] the NativeModules.bridge.call value handler. Arguments will be cached before this property is assigned. - * - * @property entryId the currently Lynx view entryId. - * - * @event error lynx card fired an error - * @event mainchunkready performance event. All mainthread chunks are ready - ``` - - - HTML Exmaple - - Note that you should declarae the size of lynx-view - - ```html - - - ``` - - - React 19 Example - - ```jsx - - - ``` - -- f8d1d98: feat: allow custom elements to be lazy loaded - - After this commit, we'll allow developer to define custom elements lazy. - - A new api `onElementLoad` will be added to the `LynxCard`. - - Once a new element is creating, it will be called with the tag name. - - There is also a simple way to use this feature - - ```javascript - import { LynxCard } from '@lynx-js/web-core'; - import { loadElement } from '@lynx-js/web-elements/lazy'; - import '@lynx-js/web-elements/index.css'; - import '@lynx-js/web-core/index.css'; - import './index.css'; - - const lynxcard = new LynxCard({ - ...beforeConfigs, - onElementLoad: loadElement, - }); - ``` - -- 906e894: feat(web): support dataset & \_\_AddDataset -- 6e003e8: feat(web): support linear layout and add tests -- 2b85d73: feat(web): support Nativemodules.bridge.call -- 0fc1826: feat(web): add \_\_CreateListElement Element API - -### Patch Changes - -- 238df71: fix(web): fix bugs of Elements - includes: - **AddClass, - **ReplaceElements, - **GetElementUniqueID, - **GetConfig, - **GetChildren, - **FlushElementTree, - \_\_SetInlineStyles -- 32952fb: chore: bump target to esnext -- f900b75: refactor: do not use inline style to apply css-in-js styles - - Now you will see your css-in-js styles applied under a `[lynx-unique-id=""]` selector. - -- 9c23659: fix(web): \_\_SetAttribute allows the value to be null -- d3acc7b: fix: we should call \_\_FlushElementTree after renderPage -- 314cb44: fix(web): x-textarea replace blur,focus with lynxblur,lynxfocus. -- e170052: chore: remove tslib - - We provide ESNext output for this lib. - -- Updated dependencies [987da15] -- Updated dependencies [3e66349] -- Updated dependencies [2b7a4fe] -- Updated dependencies [461d965] -- Updated dependencies [2973ba5] -- Updated dependencies [7ee0dc1] -- Updated dependencies [7c752d9] -- Updated dependencies [29e4684] -- Updated dependencies [068f677] -- Updated dependencies [3547621] -- Updated dependencies [bed4f24] -- Updated dependencies [33691cd] -- Updated dependencies [2047658] -- Updated dependencies [b323923] -- Updated dependencies [39cf3ae] -- Updated dependencies [2973ba5] -- Updated dependencies [917e496] -- Updated dependencies [532380d] -- Updated dependencies [a41965d] -- Updated dependencies [f900b75] -- Updated dependencies [2e0a780] -- Updated dependencies [a7a222b] -- Updated dependencies [f8d1d98] -- Updated dependencies [c04669b] -- Updated dependencies [81be6cf] -- Updated dependencies [f8d1d98] -- Updated dependencies [5018d8f] -- Updated dependencies [c0a482a] -- Updated dependencies [314cb44] -- Updated dependencies [8c6eeb9] -- Updated dependencies [c43f436] -- Updated dependencies [67a70ac] -- Updated dependencies [e0854a8] -- Updated dependencies [e170052] -- Updated dependencies [e86bba0] -- Updated dependencies [1fe49a2] -- Updated dependencies [f0a50b6] - - @lynx-js/web-elements@0.1.0 - - @lynx-js/web-constants@0.1.0 - - @lynx-js/lynx-core@0.0.1 - - @lynx-js/web-mainthread-apis@0.1.0 diff --git a/packages/web-platform/web-core/LICENSE.txt b/packages/web-platform/web-core/LICENSE.txt deleted file mode 100644 index ce66b4c3a7..0000000000 --- a/packages/web-platform/web-core/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2023-2024 The Lynx Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/web-platform/web-core/Notice.txt b/packages/web-platform/web-core/Notice.txt deleted file mode 100644 index 3ff8881bfd..0000000000 --- a/packages/web-platform/web-core/Notice.txt +++ /dev/null @@ -1 +0,0 @@ -Copyright 2023-2024 The Lynx Authors. All rights reserved. \ No newline at end of file diff --git a/packages/web-platform/web-core/README.md b/packages/web-platform/web-core/README.md deleted file mode 100644 index 19c5de9bf2..0000000000 --- a/packages/web-platform/web-core/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# @lynx-js/web-core - -Lynx3 Web Platform runtime core - -## Usage - -```javascript -import '@lynx-js/web-core'; -import '@lynx-js/web-core/index.css'; - -document.body.innerHTML = ` - -`; -``` - -If you use Lynx elements (view, text, image, etc.), you need to import `@lynx-js/web-elements`: - -```javascript -import '@lynx-js/web-core'; -import '@lynx-js/web-core/index.css'; -import '@lynx-js/web-elements/all'; -import '@lynx-js/web-elements/index.css'; - -document.body.innerHTML = ` - -`; -``` - -## Document - -See our website for more information. diff --git a/packages/web-platform/web-core/index.css b/packages/web-platform/web-core/index.css deleted file mode 100644 index dbb7b62a8c..0000000000 --- a/packages/web-platform/web-core/index.css +++ /dev/null @@ -1,25 +0,0 @@ -/* -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -*/ - -lynx-view { - contain: strict; - display: flex; -} - -lynx-view[width="auto"] { - --lynx-view-width: 100%; - width: var(--lynx-view-width); - inline-size: var(--lynx-view-width); -} - -lynx-view[height="auto"], lynx-view[width="auto"] { - contain: content; -} - -lynx-view::part(page) { - height: 100%; - width: 100%; -} diff --git a/packages/web-platform/web-core/package.json b/packages/web-platform/web-core/package.json deleted file mode 100644 index ae03c72841..0000000000 --- a/packages/web-platform/web-core/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@lynx-js/web-core", - "version": "0.19.9", - "private": false, - "description": "", - "keywords": [], - "repository": { - "type": "git", - "url": "https://github.com/lynx-family/lynx-stack.git", - "directory": "packages/web-platform/web-core" - }, - "license": "Apache-2.0", - "type": "module", - "main": "dist/index.js", - "typings": "dist/index.d.ts", - "files": [ - "dist", - "!dist/**/*.js.map", - "LICENSE.txt", - "Notice.txt", - "CHANGELOG.md", - "README.md", - "index.css", - "**/*.css" - ], - "dependencies": { - "@lynx-js/offscreen-document": "workspace:*", - "@lynx-js/web-constants": "workspace:*", - "@lynx-js/web-mainthread-apis": "workspace:*", - "@lynx-js/web-worker-rpc": "workspace:*", - "@lynx-js/web-worker-runtime": "workspace:*" - }, - "devDependencies": { - "@lynx-js/lynx-core": "0.1.3", - "@lynx-js/web-elements": "workspace:*" - }, - "peerDependencies": { - "@lynx-js/lynx-core": "0.1.3", - "@lynx-js/web-elements": ">0.7.7" - } -} diff --git a/packages/web-platform/web-core/src/apis/LynxView.ts b/packages/web-platform/web-core/src/apis/LynxView.ts deleted file mode 100644 index 2a4e8df1ed..0000000000 --- a/packages/web-platform/web-core/src/apis/LynxView.ts +++ /dev/null @@ -1,542 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - type LynxView as LynxViewInstance, - createLynxView, -} from './createLynxView.js'; -import { - inShadowRootStyles, - lynxDisposedAttribute, - lynxTagAttribute, - type Cloneable, - type SSRDumpInfo, - type I18nResourceTranslationOptions, - type InitI18nResources, - type LynxTemplate, - type NapiModulesCall, - type NapiModulesMap, - type NativeModulesCall, - type NativeModulesMap, -} from '@lynx-js/web-constants'; - -export type INapiModulesCall = ( - name: string, - data: any, - moduleName: string, - lynxView: LynxView, - dispatchNapiModules: (data: Cloneable) => void, -) => - | Promise<{ data: unknown; transfer?: Transferable[] } | undefined> - | { - data: unknown; - transfer?: Transferable[]; - } - | undefined - | Promise; - -/** - * Based on our experiences, these elements are almost used in all lynx cards. - */ - -/** - * @property {string} url [required] (attribute: "url") The url of the entry of your Lynx card - * @property {Cloneable} globalProps [optional] (attribute: "global-props") The globalProps value of this Lynx card - * @property {Cloneable} initData [optional] (attribute: "init-data") The initial data of this Lynx card - * @property {Record} overrideLynxTagToHTMLTagMap [optional] use this property/attribute to override the lynx tag -> html tag map - * @property {NativeModulesMap} nativeModulesMap [optional] use to customize NativeModules. key is module-name, value is esm url. - * @property {NativeModulesCall} onNativeModulesCall [optional] the NativeModules value handler. Arguments will be cached before this property is assigned. - * @property {"auto" | null} height [optional] (attribute: "height") set it to "auto" for height auto-sizing - * @property {"auto" | null} width [optional] (attribute: "width") set it to "auto" for width auto-sizing - * @property {NapiModulesMap} napiModulesMap [optional] the napiModule which is called in lynx-core. key is module-name, value is esm url. - * @property {INapiModulesCall} onNapiModulesCall [optional] the NapiModule value handler. - * @property {"false" | "true" | null} injectHeadLinks [optional] (attribute: "inject-head-links") @default true set it to "false" to disable injecting the styles into shadowroot - * @property {string[]} injectStyleRules [optional] the css rules which will be injected into shadowroot. Each items will be inserted by `insertRule` method. @see https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule - * @property {number} lynxGroupId [optional] (attribute: "lynx-group-id") the background shared context id, which is used to share webworker between different lynx cards - * @property {(string)=>Promise} customTemplateLoader [optional] the custom template loader, which is used to load the template - * @property {InitI18nResources} initI18nResources [optional] (attribute: "init-i18n-resources") the complete set of i18nResources that on the container side, which can be obtained synchronously by _I18nResourceTranslation - * - * @event error lynx card fired an error - * @event i18nResourceMissed i18n resource cache miss - * - * @example - * HTML Example - * - * Note that you should declarae the size of lynx-view - * - * ```html - * - * - * ``` - * - * React 19 Example - * ```jsx - * - * - * ``` - */ -export class LynxView extends HTMLElement { - static lynxViewCount = 0; - static tag = 'lynx-view' as const; - private static observedAttributeAsProperties = [ - 'url', - 'global-props', - 'init-data', - ]; - /** - * @private - */ - static observedAttributes = LynxView.observedAttributeAsProperties.map(nm => - nm.toLowerCase() - ); - #instance?: LynxViewInstance; - - #url?: string; - /** - * @public - * @property the url of lynx view output entry file - */ - get url(): string | undefined { - return this.#url; - } - set url(val: string) { - this.#url = val; - this.#render(); - } - - #globalProps: Cloneable = {}; - /** - * @public - * @property globalProps - * @default {} - */ - get globalProps(): Cloneable { - return this.#globalProps; - } - set globalProps(val: string | Cloneable) { - if (typeof val === 'string') { - this.#globalProps = JSON.parse(val); - } else { - this.#globalProps = val; - } - } - - #initData: Cloneable = {}; - /** - * @public - * @property initData - * @default {} - */ - get initData(): Cloneable { - return this.#initData; - } - set initData(val: string | Cloneable) { - if (typeof val === 'string') { - this.#initData = JSON.parse(val); - } else { - this.#initData = val; - } - } - - #initI18nResources: InitI18nResources = []; - /** - * @public - * @property initI18nResources - * @default {} - */ - get initI18nResources(): InitI18nResources { - return this.#initI18nResources; - } - set initI18nResources(val: string | InitI18nResources) { - if (typeof val === 'string') { - this.#initI18nResources = JSON.parse(val); - } else { - this.#initI18nResources = val; - } - } - - /** - * @public - * @method - * update the `__initData` and trigger essential flow - */ - updateI18nResources( - data: InitI18nResources, - options: I18nResourceTranslationOptions, - ) { - this.#instance?.updateI18nResources(data, options); - } - - #overrideLynxTagToHTMLTagMap: Record = { 'page': 'div' }; - /** - * @public - * @property - * @default {page: 'div'} - */ - get overrideLynxTagToHTMLTagMap(): Record { - return this.#overrideLynxTagToHTMLTagMap; - } - set overrideLynxTagToHTMLTagMap(val: string | Record) { - if (typeof val === 'string') { - this.#overrideLynxTagToHTMLTagMap = JSON.parse(val); - } else { - this.#overrideLynxTagToHTMLTagMap = val; - } - } - - #cachedNativeModulesCall: Array< - { - args: [name: string, data: any, moduleName: string]; - resolve: (ret: unknown) => void; - } - > = []; - #onNativeModulesCall?: NativeModulesCall; - /** - * @param - * @property - */ - get onNativeModulesCall(): NativeModulesCall | undefined { - return this.#onNativeModulesCall; - } - set onNativeModulesCall(handler: NativeModulesCall) { - this.#onNativeModulesCall = handler; - for (const callInfo of this.#cachedNativeModulesCall) { - callInfo.resolve(handler.apply(undefined, callInfo.args)); - } - this.#cachedNativeModulesCall = []; - } - - #nativeModulesMap: NativeModulesMap = {}; - /** - * @public - * @property nativeModulesMap - * @default {} - */ - get nativeModulesMap(): NativeModulesMap | undefined { - return this.#nativeModulesMap; - } - set nativeModulesMap(map: NativeModulesMap) { - this.#nativeModulesMap = map; - } - - #napiModulesMap: NapiModulesMap = {}; - /** - * @param - * @property napiModulesMap - * @default {} - */ - get napiModulesMap(): NapiModulesMap | undefined { - return this.#napiModulesMap; - } - set napiModulesMap(map: NapiModulesMap) { - this.#napiModulesMap = map; - } - - #onNapiModulesCall?: NapiModulesCall; - /** - * @param - * @property - */ - get onNapiModulesCall(): NapiModulesCall | undefined { - return this.#onNapiModulesCall; - } - set onNapiModulesCall(handler: INapiModulesCall) { - this.#onNapiModulesCall = (name, data, moduleName, dispatchNapiModules) => { - return handler(name, data, moduleName, this, dispatchNapiModules); - }; - } - - /** - * @param - * @property - */ - get lynxGroupId(): number | undefined { - return this.getAttribute('lynx-group-id') - ? Number(this.getAttribute('lynx-group-id')!) - : undefined; - } - set lynxGroupId(val: number | undefined) { - if (val) { - this.setAttribute('lynx-group-id', val.toString()); - } else { - this.removeAttribute('lynx-group-id'); - } - } - - /** - * @public - * @method - * update the `__initData` and trigger essential flow - */ - updateData( - data: Cloneable, - processorName?: string, - callback?: () => void, - ) { - this.#instance?.updateData(data, processorName, callback); - } - - /** - * @public - * @method - * update the `__globalProps` - */ - updateGlobalProps(data: Cloneable) { - this.#instance?.updateGlobalProps(data); - this.globalProps = data; - } - - /** - * @public - * @method - * send global events, which can be listened to using the GlobalEventEmitter - */ - sendGlobalEvent(eventName: string, params: Cloneable[]) { - this.#instance?.sendGlobalEvent(eventName, params); - } - - /** - * @public - * @method - * reload the current page - */ - reload() { - this.removeAttribute('ssr'); - this.#render(); - } - - /** - * @override - * "false" value will be omitted - * - * {@inheritdoc HTMLElement.setAttribute} - */ - override setAttribute(qualifiedName: string, value: string): void { - if (value === 'false') { - this.removeAttribute(qualifiedName); - } else { - super.setAttribute(qualifiedName, value); - } - } - - /** - * @private - */ - attributeChangedCallback(name: string, oldValue: string, newValue: string) { - if (oldValue !== newValue) { - switch (name) { - case 'url': - this.#url = newValue; - break; - case 'global-props': - this.#globalProps = JSON.parse(newValue); - break; - case 'init-data': - this.#initData = JSON.parse(newValue); - break; - } - } - } - - /** - * @param - * @property - * @deprecated multi-thread is deprecated, please use "all-on-ui" instead. If you still want to use multi-thread mode, please try to use a cross-origin isolated iframe. - */ - get threadStrategy(): 'all-on-ui' | 'multi-thread' { - // @ts-expect-error - return this.getAttribute('thread-strategy'); - } - set threadStrategy(val: 'all-on-ui' | 'multi-thread') { - if (val) { - this.setAttribute('thread-strategy', val); - } else { - this.removeAttribute('thread-strategy'); - } - } - - get injectHeadLinks(): boolean { - return this.getAttribute('inject-head-links') !== 'false'; - } - set injectHeadLinks(val: boolean) { - if (val) { - this.setAttribute('inject-head-links', 'true'); - } else { - this.removeAttribute('inject-head-links'); - } - } - - public injectStyleRules: string[] = []; - - /** - * @private - */ - disconnectedCallback() { - this.#instance?.dispose(); - this.#instance = undefined; - // under the all-on-ui strategy, when reload() triggers dsl flush, the previously removed pageElement will be used in __FlushElementTree. - // This attribute is added to filter this issue. - this.shadowRoot?.querySelector(`[${lynxTagAttribute}="page"]`) - ?.setAttribute( - lynxDisposedAttribute, - '', - ); - if (this.shadowRoot) { - this.shadowRoot.innerHTML = ''; - } - } - - /** - * @public - * allow user to customize the template loader - * @param url the url of the template - */ - customTemplateLoader?: (url: string) => Promise; - - /** - * @public - * allow user to customize the browser config - */ - browserConfig?: { - pixelRatio?: number; - pixelWidth?: number; - pixelHeight?: number; - }; - - /** - * @private the flag to group all changes into one render operation - */ - #rendering = false; - - /** - * @private - */ - #render() { - if (!this.#rendering && this.isConnected) { - this.#rendering = true; - queueMicrotask(() => { - this.#rendering = false; - if (!this.isConnected) { - return; - } - const ssrData = this.getAttribute('ssr'); - if (this.#instance) { - this.disconnectedCallback(); - } - if (this.#url) { - const tagMap = { - 'page': 'div', - 'view': 'x-view', - 'text': 'x-text', - 'image': 'x-image', - 'list': 'x-list', - 'svg': 'x-svg', - 'input': 'x-input', - 'x-input-ng': 'x-input', - ...this.overrideLynxTagToHTMLTagMap, - }; - if (!this.shadowRoot) { - this.attachShadow({ mode: 'open' }); - } - const lynxGroupId = this.lynxGroupId; - const threadStrategy = (this.threadStrategy ?? 'all-on-ui') as - | 'all-on-ui' - | 'multi-thread'; - if (threadStrategy === 'multi-thread') { - console.warn( - `[LynxView] multi-thread strategy is deprecated, please use "all-on-ui" instead. If you still want to use multi-thread mode, please try to use a cross-origin isolated iframe.`, - ); - } - const lynxView = createLynxView({ - threadStrategy, - tagMap, - shadowRoot: this.shadowRoot!, - templateUrl: this.#url, - globalProps: this.#globalProps, - initData: this.#initData, - nativeModulesMap: this.#nativeModulesMap, - napiModulesMap: this.#napiModulesMap, - lynxGroupId, - initI18nResources: this.#initI18nResources, - browserConfig: this.browserConfig, - callbacks: { - nativeModulesCall: ( - ...args: [name: string, data: any, moduleName: string] - ) => { - if (this.onNativeModulesCall) { - return this.onNativeModulesCall(...args); - } else { - return new Promise(resolve => { - this.#cachedNativeModulesCall.push({ args, resolve }); - }); - } - }, - napiModulesCall: (...args) => { - return this.onNapiModulesCall?.(...args); - }, - onError: (error: Error, release: string, fileName: string) => { - this.dispatchEvent( - new CustomEvent('error', { - detail: { - sourceMap: { - offset: { - line: 2, - col: 0, - }, - }, - error, - release, - fileName, - }, - }), - ); - }, - customTemplateLoader: this.customTemplateLoader, - reload: () => { - this.reload(); - }, - }, - ssr: ssrData - ? JSON.parse(decodeURI(ssrData)) as SSRDumpInfo - : undefined, - }); - this.#instance = lynxView; - if (!ssrData) { - const styleElement = document.createElement('style'); - this.shadowRoot!.append(styleElement); - const styleSheet = styleElement.sheet!; - for (const rule of inShadowRootStyles) { - styleSheet.insertRule(rule); - } - for (const rule of this.injectStyleRules) { - styleSheet.insertRule(rule); - } - const injectHeadLinks = - this.getAttribute('inject-head-links') !== 'false'; - if (injectHeadLinks) { - document.head.querySelectorAll('link[rel="stylesheet"]').forEach( - (linkElement) => { - const href = (linkElement as HTMLLinkElement).href; - styleSheet.insertRule(`@import url("${href}");`); - }, - ); - } - } - } - }); - } - } - /** - * @private - */ - connectedCallback() { - this.#render(); - } -} - -if (customElements.get(LynxView.tag)) { - console.warn(`[${LynxView.tag}] has already been defined`); -} else { - customElements.define(LynxView.tag, LynxView); -} diff --git a/packages/web-platform/web-core/src/apis/createLynxView.ts b/packages/web-platform/web-core/src/apis/createLynxView.ts deleted file mode 100644 index 00c8ab2f5d..0000000000 --- a/packages/web-platform/web-core/src/apis/createLynxView.ts +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { - Cloneable, - SSRDumpInfo, - I18nResourceTranslationOptions, - InitI18nResources, - NapiModulesMap, - NativeModulesMap, - sendGlobalEventEndpoint, -} from '@lynx-js/web-constants'; -import { - startUIThread, - type StartUIThreadCallbacks, -} from '../uiThread/startUIThread.js'; -import type { RpcCallType } from '@lynx-js/web-worker-rpc'; -const pixelRatio = window.devicePixelRatio; -const screenWidth = document.documentElement.clientWidth * pixelRatio; -const screenHeight = document.documentElement.clientHeight * pixelRatio; - -export interface LynxViewConfigs { - templateUrl: string; - initData: Cloneable; - globalProps: Cloneable; - shadowRoot: ShadowRoot; - callbacks: StartUIThreadCallbacks; - nativeModulesMap: NativeModulesMap; - napiModulesMap: NapiModulesMap; - tagMap: Record; - lynxGroupId: number | undefined; - threadStrategy: 'all-on-ui' | 'multi-thread'; - initI18nResources: InitI18nResources; - ssr?: SSRDumpInfo; - browserConfig?: { - pixelRatio?: number; - pixelWidth?: number; - pixelHeight?: number; - }; -} - -export interface LynxView { - updateData( - data: Cloneable, - processorName?: string, - callback?: () => void, - ): void; - dispose(): Promise; - sendGlobalEvent: RpcCallType; - updateGlobalProps: (data: Cloneable) => void; - updateI18nResources: ( - data: InitI18nResources, - options: I18nResourceTranslationOptions, - ) => void; -} - -export function createLynxView(configs: LynxViewConfigs): LynxView { - const { - shadowRoot, - callbacks, - templateUrl, - globalProps, - initData, - nativeModulesMap, - napiModulesMap, - tagMap, - lynxGroupId, - threadStrategy = 'multi-thread', - initI18nResources, - ssr, - browserConfig, - } = configs; - return startUIThread( - templateUrl, - { - tagMap, - initData, - globalProps, - nativeModulesMap, - napiModulesMap, - browserConfig: { - pixelRatio: browserConfig?.pixelRatio ?? window.devicePixelRatio, - pixelWidth: browserConfig?.pixelWidth ?? screenWidth, - pixelHeight: browserConfig?.pixelHeight ?? screenHeight, - }, - initI18nResources, - }, - shadowRoot, - lynxGroupId, - threadStrategy, - callbacks, - ssr, - ); -} diff --git a/packages/web-platform/web-core/src/index.ts b/packages/web-platform/web-core/src/index.ts deleted file mode 100644 index 62fb7b9c60..0000000000 --- a/packages/web-platform/web-core/src/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export { createLynxView } from './apis/createLynxView.js'; -export { LynxView } from './apis/LynxView.js'; -export type { LynxTemplate } from '@lynx-js/web-constants'; diff --git a/packages/web-platform/web-core/src/types/UpdatePageCallback.ts b/packages/web-platform/web-core/src/types/UpdatePageCallback.ts deleted file mode 100644 index 4964235b32..0000000000 --- a/packages/web-platform/web-core/src/types/UpdatePageCallback.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -export interface UpdatePageOption { - nativeUpdateDataOrder?: number; - reloadTemplate?: boolean; - reloadFromJS?: boolean; - resetPageData?: boolean; -} -export type UpdatePageCallback = (data: any, options: UpdatePageOption) => any; diff --git a/packages/web-platform/web-core/src/uiThread/bootWorkers.ts b/packages/web-platform/web-core/src/uiThread/bootWorkers.ts deleted file mode 100644 index b854d17391..0000000000 --- a/packages/web-platform/web-core/src/uiThread/bootWorkers.ts +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { systemInfo, type BrowserConfig } from '@lynx-js/web-constants'; -import { Rpc } from '@lynx-js/web-worker-rpc'; -import type { WorkerStartMessage } from '@lynx-js/web-worker-runtime'; - -interface LynxViewRpc { - mainThreadRpc: Rpc; - backgroundRpc: Rpc; - terminateWorkers: () => void; -} - -const backgroundWorkerContextCount: number[] = []; -const contextIdToBackgroundWorker: (Worker | undefined)[] = []; - -export function bootWorkers( - lynxGroupId: number | undefined, - allOnUI: boolean, - browserConfig: BrowserConfig, -): LynxViewRpc { - let curMainWorker: { - mainThreadRpc: Rpc; - mainThreadWorker?: Worker; - channelMainThreadWithBackground: MessageChannel; - }; - if (allOnUI) { - curMainWorker = createUIChannel(); - } else { - curMainWorker = createMainWorker(); - } - const curBackgroundWorker = createBackgroundWorker( - lynxGroupId, - curMainWorker.channelMainThreadWithBackground, - browserConfig, - ); - if (lynxGroupId !== undefined) { - if (backgroundWorkerContextCount[lynxGroupId]) { - backgroundWorkerContextCount[lynxGroupId]++; - } else { - backgroundWorkerContextCount[lynxGroupId] = 1; - } - } - return { - mainThreadRpc: curMainWorker.mainThreadRpc, - backgroundRpc: curBackgroundWorker.backgroundRpc, - terminateWorkers: () => { - curMainWorker.mainThreadWorker?.terminate(); - if (lynxGroupId === undefined) { - curBackgroundWorker.backgroundThreadWorker.terminate(); - } else if (backgroundWorkerContextCount[lynxGroupId] === 1) { - curBackgroundWorker.backgroundThreadWorker.terminate(); - backgroundWorkerContextCount[lynxGroupId] = 0; - contextIdToBackgroundWorker[lynxGroupId] = undefined; - } else if ( - typeof backgroundWorkerContextCount[lynxGroupId] === 'number' - && backgroundWorkerContextCount[lynxGroupId] > 1 - ) { - backgroundWorkerContextCount[lynxGroupId]--; - } - }, - }; -} - -function createUIChannel() { - const channelMainThreadWithBackground = new MessageChannel(); - const mainThreadRpc = new Rpc( - channelMainThreadWithBackground.port1, - 'main-to-bg', - ); - return { - mainThreadRpc, - channelMainThreadWithBackground, - }; -} - -function createMainWorker() { - const channelToMainThread = new MessageChannel(); - const channelMainThreadWithBackground = new MessageChannel(); - const mainThreadWorker = createWebWorker('lynx-main'); - const mainThreadMessage: WorkerStartMessage = { - mode: 'main', - toUIThread: channelToMainThread.port2, - toPeerThread: channelMainThreadWithBackground.port1, - }; - - mainThreadWorker.postMessage(mainThreadMessage, [ - channelToMainThread.port2, - channelMainThreadWithBackground.port1, - ]); - const mainThreadRpc = new Rpc(channelToMainThread.port1, 'ui-to-main'); - return { - mainThreadRpc, - mainThreadWorker, - channelMainThreadWithBackground, - }; -} - -function createBackgroundWorker( - lynxGroupId: number | undefined, - channelMainThreadWithBackground: MessageChannel, - browserConfig: BrowserConfig, -) { - const channelToBackground = new MessageChannel(); - let backgroundThreadWorker: Worker; - if (lynxGroupId) { - backgroundThreadWorker = contextIdToBackgroundWorker[lynxGroupId] - ?? createWebWorker('lynx-bg'); - contextIdToBackgroundWorker[lynxGroupId] = backgroundThreadWorker; - } else { - backgroundThreadWorker = createWebWorker('lynx-bg'); - } - const backgroundThreadMessage: WorkerStartMessage = { - mode: 'background', - toUIThread: channelToBackground.port2, - toPeerThread: channelMainThreadWithBackground.port2, - systemInfo: { ...systemInfo, ...browserConfig }, - }; - backgroundThreadWorker.postMessage(backgroundThreadMessage, [ - channelToBackground.port2, - channelMainThreadWithBackground.port2, - ]); - const backgroundRpc = new Rpc(channelToBackground.port1, 'ui-to-bg'); - return { backgroundRpc, backgroundThreadWorker }; -} - -function createWebWorker(name: string): Worker { - return new Worker( - /* webpackFetchPriority: "high" */ - /* webpackChunkName: "web-core-worker-runtime" */ - /* webpackPrefetch: true */ - /* webpackPreload: true */ - new URL('@lynx-js/web-worker-runtime', import.meta.url), - { - type: 'module', - name, - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/createRenderAllOnUI.ts b/packages/web-platform/web-core/src/uiThread/createRenderAllOnUI.ts deleted file mode 100644 index 08dbc39061..0000000000 --- a/packages/web-platform/web-core/src/uiThread/createRenderAllOnUI.ts +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - type StartMainThreadContextConfig, - type RpcCallType, - updateDataEndpoint, - type I18nResourceTranslationOptions, - type CloneableObject, - i18nResourceMissedEventName, - I18nResources, - type InitI18nResources, - type Cloneable, - lynxUniqueIdAttribute, - type SSRDumpInfo, - type JSRealm, - type TemplateLoader, -} from '@lynx-js/web-constants'; -import { Rpc } from '@lynx-js/web-worker-rpc'; -import { dispatchLynxViewEvent } from '../utils/dispatchLynxViewEvent.js'; -import { createExposureMonitor } from './crossThreadHandlers/createExposureMonitor.js'; -import type { StartUIThreadCallbacks } from './startUIThread.js'; - -const existingScript = document.querySelector('script[nonce]') as - | HTMLScriptElement - | null; -const nonce = existingScript?.nonce || existingScript?.getAttribute('nonce') - || ''; - -const { - prepareMainThreadAPIs, -} = await import( - /* webpackChunkName: "web-core-main-thread-apis" */ - /* webpackMode: "lazy-once" */ - /* webpackPreload: true */ - /* webpackPrefetch: true */ - /* webpackFetchPriority: "high" */ - '@lynx-js/web-mainthread-apis' -); - -/** - * Creates a isolated JavaScript context for executing mts code. - * This context has its own global variables and functions. - */ -async function createIFrameRealm(parent: Node): Promise { - const iframe = document.createElement('iframe'); - const iframeReadyPromise = new Promise((resolve) => { - const listener = (event: MessageEvent) => { - if ( - event.data === 'lynx:mtsready' && event.source === iframe.contentWindow - ) { - resolve(); - globalThis.removeEventListener('message', listener); - } - }; - globalThis.addEventListener('message', listener); - }); - iframe.style.display = 'none'; - iframe.srcdoc = - ``; - iframe.sandbox = 'allow-same-origin allow-scripts'; // Restrict capabilities for security - iframe.loading = 'eager'; - parent.appendChild(iframe); - await iframeReadyPromise; - const iframeWindow = iframe.contentWindow! as unknown as typeof globalThis; - const loadScript: (url: string) => Promise = async (url) => { - const script = iframe.contentDocument!.createElement('script'); - script.fetchPriority = 'high'; - script.defer = true; - script.async = false; - script.nonce = nonce; - iframe.contentDocument!.head.appendChild(script); - return new Promise(async (resolve, reject) => { - script.onload = () => { - const ret = iframeWindow?.module?.exports; - // @ts-expect-error - iframeWindow.module = { exports: undefined }; - resolve(ret); - }; - script.onerror = (err) => - reject(new Error(`Failed to load script: ${url}`, { cause: err })); - // @ts-expect-error - iframeWindow.module = { exports: undefined }; - script.src = url; - }); - }; - const loadScriptSync: (url: string) => unknown = (url) => { - const xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); // Synchronous request - xhr.send(null); - if (xhr.status === 200) { - const script = iframe.contentDocument!.createElement('script'); - script.nonce = nonce; - script.textContent = xhr.responseText; - // @ts-expect-error - iframeWindow.module = { exports: undefined }; - iframe.contentDocument!.head.appendChild(script); - const ret = iframeWindow?.module?.exports; - // @ts-expect-error - iframeWindow.module = { exports: undefined }; - return ret; - } else { - throw new Error(`Failed to load script: ${url}`, { cause: xhr }); - } - }; - return { globalWindow: iframeWindow, loadScript, loadScriptSync }; -} - -export function createRenderAllOnUI( - mainToBackgroundRpc: Rpc, - shadowRoot: ShadowRoot, - loadTemplate: TemplateLoader, - markTimingInternal: ( - timingKey: string, - pipelineId?: string, - timeStamp?: number, - ) => void, - flushMarkTimingInternal: () => void, - callbacks: StartUIThreadCallbacks, - ssrDumpInfo: SSRDumpInfo | undefined, -) { - if (!globalThis.module) { - Object.assign(globalThis, { module: {} }); - } - const triggerI18nResourceFallback = ( - options: I18nResourceTranslationOptions, - ) => { - dispatchLynxViewEvent( - shadowRoot, - i18nResourceMissedEventName, - options as CloneableObject, - ); - }; - const i18nResources = new I18nResources(); - const { exposureChangedCallback } = createExposureMonitor(shadowRoot); - const mtsRealm = createIFrameRealm(shadowRoot); - const { startMainThread, handleUpdatedData } = prepareMainThreadAPIs( - mainToBackgroundRpc, - shadowRoot, - document, - mtsRealm, - exposureChangedCallback, - markTimingInternal, - flushMarkTimingInternal, - (err, _, release) => { - callbacks.onError?.(err, release, 'lepus.js'); - }, - triggerI18nResourceFallback, - (initI18nResources: InitI18nResources) => { - i18nResources.setData(initI18nResources); - return i18nResources; - }, - loadTemplate, - undefined, - true, - ); - - const start = async (configs: StartMainThreadContextConfig) => { - if (ssrDumpInfo) { - const lynxUniqueIdToElement: WeakRef[] = []; - const allLynxElements = shadowRoot.querySelectorAll( - `[${lynxUniqueIdAttribute}]`, - ); - const length = allLynxElements.length; - for (let ii = 0; ii < length; ii++) { - const element = allLynxElements[ii]! as HTMLElement; - const lynxUniqueId = Number( - element.getAttribute(lynxUniqueIdAttribute)!, - ); - lynxUniqueIdToElement[lynxUniqueId] = new WeakRef(element); - } - const hydrateStyleElement = shadowRoot.querySelector( - `style:nth-of-type(2)`, - ) as HTMLStyleElement | null; - const styleSheet = hydrateStyleElement?.sheet; - const lynxUniqueIdToStyleRulesIndex: number[] = []; - const cssRulesLength = styleSheet?.cssRules.length ?? 0; - for (let ii = 0; ii < cssRulesLength; ii++) { - const cssRule = styleSheet?.cssRules[ii]; - if (cssRule?.constructor.name === 'CSSStyleRule') { - const lynxUniqueId = parseFloat( - (cssRule as CSSStyleRule).selectorText.substring( - lynxUniqueIdAttribute.length + 3, // skip `[`, `="` - ), - ); - if (lynxUniqueId !== undefined && !isNaN(lynxUniqueId)) { - lynxUniqueIdToStyleRulesIndex[lynxUniqueId] = ii; - } - } - } - - await startMainThread(configs, { - lynxUniqueIdToElement: lynxUniqueIdToElement, - lynxUniqueIdToStyleRulesIndex, - ...ssrDumpInfo, - cardStyleElement: hydrateStyleElement, - }); - } else { - await startMainThread(configs); - } - }; - const updateDataMainThread: RpcCallType = async ( - newData, - options, - ) => { - return handleUpdatedData( - newData, - options, - ); - }; - const updateI18nResourcesMainThread = (data: Cloneable) => { - i18nResources.setData(data as InitI18nResources); - }; - return { - start, - updateDataMainThread, - updateI18nResourcesMainThread, - }; -} diff --git a/packages/web-platform/web-core/src/uiThread/createRenderMultiThread.ts b/packages/web-platform/web-core/src/uiThread/createRenderMultiThread.ts deleted file mode 100644 index f42fd8b11c..0000000000 --- a/packages/web-platform/web-core/src/uiThread/createRenderMultiThread.ts +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - loadTemplateMultiThread, - mainThreadStartEndpoint, - updateDataEndpoint, - updateI18nResourcesEndpoint, - type TemplateLoader, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { registerReportErrorHandler } from './crossThreadHandlers/registerReportErrorHandler.js'; -import { registerFlushElementTreeHandler } from './crossThreadHandlers/registerFlushElementTreeHandler.js'; -import { registerDispatchLynxViewEventHandler } from './crossThreadHandlers/registerDispatchLynxViewEventHandler.js'; -import { createExposureMonitorForMultiThread } from './crossThreadHandlers/createExposureMonitor.js'; -import type { StartUIThreadCallbacks } from './startUIThread.js'; - -export function createRenderMultiThread( - mainThreadRpc: Rpc, - shadowRoot: ShadowRoot, - loadTemplate: TemplateLoader, - callbacks: StartUIThreadCallbacks, -) { - registerReportErrorHandler(mainThreadRpc, 'lepus.js', callbacks.onError); - registerFlushElementTreeHandler(mainThreadRpc, { shadowRoot }); - registerDispatchLynxViewEventHandler(mainThreadRpc, shadowRoot); - createExposureMonitorForMultiThread(mainThreadRpc, shadowRoot); - mainThreadRpc.registerHandler(loadTemplateMultiThread, loadTemplate); - const start = mainThreadRpc.createCall(mainThreadStartEndpoint); - const updateDataMainThread = mainThreadRpc.createCall(updateDataEndpoint); - const updateI18nResourcesMainThread = mainThreadRpc.createCall( - updateI18nResourcesEndpoint, - ); - return { - start, - updateDataMainThread, - updateI18nResourcesMainThread, - }; -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createDispose.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createDispose.ts deleted file mode 100644 index c1ac3df750..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createDispose.ts +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import type { LynxView } from '../../apis/createLynxView.js'; -import { disposeEndpoint } from '@lynx-js/web-constants'; - -export function createDispose( - rpc: Rpc, - terminateWorkers: () => void, -): LynxView['dispose'] { - return async () => { - await rpc.invoke( - disposeEndpoint, - [], - ); - terminateWorkers(); - }; -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createExposureMonitor.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createExposureMonitor.ts deleted file mode 100644 index 023a865356..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createExposureMonitor.ts +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2024 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { convertLengthToPx } from '../../utils/convertLengthToPx.js'; -import { - lynxUniqueIdAttribute, - multiThreadExposureChangedEndpoint, -} from '@lynx-js/web-constants'; - -const scrollContainerDom = Symbol.for('lynx-scroll-container-dom'); - -export function createExposureMonitor( - rootDom: ShadowRoot, -): { - exposureChangedCallback(targets?: Element[]): void; -} { - const intersectionObservers = new WeakMap(); - const exposureIdOldValues = new WeakMap(); - const exposedElements = new WeakSet(); - const sendExposureEvent = ( - target: Element, - isIntersecting: boolean, - exposureId: string | null, - ) => { - const exposureScene = target.getAttribute('exposure-scene') ?? ''; - const detail = { - exposureID: exposureId, - exposureScene, - 'exposure-id': exposureId, - 'exposure-scene': exposureScene, - }; - const appearEvent = new CustomEvent( - isIntersecting ? 'uiappear' : 'uidisappear', - { - bubbles: false, - composed: false, - cancelable: true, - detail, - }, - ); - const exposureEvent = new CustomEvent( - isIntersecting ? 'exposure' : 'disexposure', - { - bubbles: true, - composed: false, - cancelable: false, - detail, - }, - ); - Object.assign(appearEvent, detail); - target.dispatchEvent(appearEvent); - target.dispatchEvent(exposureEvent); - }; - const intersectionObserverCallback = ( - entries: IntersectionObserverEntry[], - ) => { - entries.forEach(({ target, isIntersecting }) => { - if (isIntersecting && !exposedElements.has(target)) { - sendExposureEvent(target, true, target.getAttribute('exposure-id')); - exposedElements.add(target); - } else if (!isIntersecting && exposedElements.has(target)) { - sendExposureEvent(target, false, target.getAttribute('exposure-id')); - exposedElements.delete(target); - } - }); - }; - const startIntersectionObserver = (target: HTMLElement) => { - const threshold = parseFloat(target.getAttribute('exposure-area') ?? '0') - / 100; - const screenMarginTop = convertLengthToPx( - target, - target.getAttribute('exposure-screen-margin-top'), - ); - const screenMarginRight = convertLengthToPx( - target, - target.getAttribute('exposure-screen-margin-right'), - ); - const screenMarginBottom = convertLengthToPx( - target, - target.getAttribute('exposure-screen-margin-bottom'), - ); - const screenMarginLeft = convertLengthToPx( - target, - target.getAttribute('exposure-screen-margin-left'), - ); - const uiMarginTop = convertLengthToPx( - target, - target.getAttribute('exposure-ui-margin-top'), - ); - const uiMarginRight = convertLengthToPx( - target, - target.getAttribute('exposure-ui-margin-right'), - ); - const uiMarginBottom = convertLengthToPx( - target, - target.getAttribute('exposure-ui-margin-bottom'), - ); - const uiMarginLeft = convertLengthToPx( - target, - target.getAttribute('exposure-ui-margin-left'), - ); - /** - * TODO: @haoyang.wang support the switch `enableExposureUIMargin` - */ - const calcedRootMarginTop = (uiMarginBottom ? -1 : 1) - * (screenMarginTop - uiMarginBottom); - const calcedRootMarginRight = (uiMarginLeft ? -1 : 1) - * (screenMarginRight - uiMarginLeft); - const calcedRootMarginBottom = (uiMarginTop ? -1 : 1) - * (screenMarginBottom - uiMarginTop); - const calcedRootMarginLeft = (uiMarginRight ? -1 : 1) - * (screenMarginLeft - uiMarginRight); - // get the parent scroll container - let root: HTMLElement | null = target.parentElement; - while (root) { - // @ts-expect-error - if (root[scrollContainerDom]) { - // @ts-expect-error - root = root[scrollContainerDom]; - break; - } else { - root = root.parentElement; - } - } - const rootContainer = root ?? rootDom.parentElement!; - const intersectionObserver = new IntersectionObserver( - intersectionObserverCallback, - { - rootMargin: - `${calcedRootMarginTop}px ${calcedRootMarginRight}px ${calcedRootMarginBottom}px ${calcedRootMarginLeft}px`, - root: rootContainer, - threshold, - }, - ); - intersectionObserver.observe(target); - intersectionObservers.set(target, intersectionObserver); - }; - const exposureChangedCallback = (targets: HTMLElement[]) => { - targets.forEach((target) => { - const exposureIdOldValue = exposureIdOldValues.get(target) ?? null; - const exposureIdNewValue = target.getAttribute('exposure-id'); - if (exposureIdOldValue !== null) { - sendExposureEvent(target, false, exposureIdOldValue); - } - exposureIdOldValues.set(target, exposureIdNewValue); - intersectionObservers.get(target)?.disconnect(); - intersectionObservers.delete(target); - exposedElements.delete(target); - if (target.getAttribute('exposure-id') !== null) { - startIntersectionObserver(target); - } - }); - }; - return { - exposureChangedCallback, - }; -} - -export function createExposureMonitorForMultiThread( - rpc: Rpc, - rootDom: ShadowRoot, -): void { - const { exposureChangedCallback } = createExposureMonitor(rootDom); - rpc.registerHandler(multiThreadExposureChangedEndpoint, (uniqueIds) => { - exposureChangedCallback( - uniqueIds.map(id => - rootDom.querySelector(`[${lynxUniqueIdAttribute}="${id}"]`) - ).filter(el => el !== null) as Element[], - ); - }); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createUpdateData.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createUpdateData.ts deleted file mode 100644 index 10cb1c6e64..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/createUpdateData.ts +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { RpcCallType } from '@lynx-js/web-worker-rpc'; -import type { LynxView } from '../../apis/createLynxView.js'; -import { updateDataEndpoint, type Cloneable } from '@lynx-js/web-constants'; - -export function createUpdateData( - updateDataMainThread: RpcCallType, -): LynxView['updateData'] { - return ( - data: Cloneable, - processorName?: string, - callback?: () => void, - ) => { - updateDataMainThread(data, { processorName }).then(() => callback?.()); - }; -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/queryNodes.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/queryNodes.ts deleted file mode 100644 index 85ccb12861..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/queryNodes.ts +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - componentIdAttribute, - ErrorCode, - IdentifierType, - lynxUniqueIdAttribute, -} from '@lynx-js/web-constants'; - -export function queryNodes( - shadowRoot: ShadowRoot, - type: IdentifierType, - identifier: string, - component_id: string, - first_only: boolean, - root_unique_id: number | undefined, - callback: (dom: Element) => void, - error?: (code: ErrorCode) => void, -) { - let queryRoot: ShadowRoot | Element = shadowRoot; - if (root_unique_id) { - const root = shadowRoot.querySelector( - `[${lynxUniqueIdAttribute}="${root_unique_id}"]`, - ); - if (root) { - queryRoot = root; - } else { - console.error( - `[lynx-web] cannot find dom for root_unique_id: ${root_unique_id}`, - ); - error?.(ErrorCode.NODE_NOT_FOUND); - return; - } - } else if (component_id) { - const root = shadowRoot.querySelector( - `[${componentIdAttribute}="${component_id}"]`, - ); - if (root) { - queryRoot = root; - } else { - console.error( - `[lynx-web] cannot find dom for component_id: ${component_id}`, - ); - error?.(ErrorCode.NODE_NOT_FOUND); - return; - } - } - let selector: string; - if (type === IdentifierType.ID_SELECTOR) { - selector = identifier; - } else if (type === IdentifierType.UNIQUE_ID) { - selector = `[${lynxUniqueIdAttribute}="${identifier}"]`; - } else { - console.error(`[lynx-web] NYI: setnativeprops type ${type}`); - error?.(ErrorCode.UNKNOWN); - return; - } - if (first_only) { - let targetElement: Element | null = null; - try { - targetElement = queryRoot.querySelector(selector); - } catch (e) { - console.error(`[lynx-web] cannot use selector: ${selector}`); - error?.(ErrorCode.SELECTOR_NOT_SUPPORTED); - return; - } - - if (targetElement) { - callback(targetElement); - } else { - console.error( - `[lynx-web] cannot find from for selector ${identifier} under`, - queryRoot, - ); - error?.(ErrorCode.NODE_NOT_FOUND); - } - } else { - queryRoot.querySelectorAll(selector).forEach((element) => { - callback(element); - }); - } -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerDispatchLynxViewEventHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerDispatchLynxViewEventHandler.ts deleted file mode 100644 index 8aecae2bb6..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerDispatchLynxViewEventHandler.ts +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { dispatchLynxViewEventEndpoint } from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { dispatchLynxViewEvent } from '../../utils/dispatchLynxViewEvent.js'; - -export function registerDispatchLynxViewEventHandler( - rpc: Rpc, - shadowRoot: ShadowRoot, -) { - rpc.registerHandler(dispatchLynxViewEventEndpoint, (eventType, detail) => { - dispatchLynxViewEvent(shadowRoot, eventType, detail); - }); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerFlushElementTreeHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerFlushElementTreeHandler.ts deleted file mode 100644 index 4981d7f1c0..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerFlushElementTreeHandler.ts +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - flushElementTreeEndpoint, - postOffscreenEventEndpoint, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { initOffscreenDocument } from '@lynx-js/offscreen-document/main'; - -export function registerFlushElementTreeHandler( - mainThreadRpc: Rpc, - options: { - shadowRoot: ShadowRoot; - }, -) { - const { - shadowRoot, - } = options; - const onEvent = mainThreadRpc.createCall(postOffscreenEventEndpoint); - const { decodeOperation } = initOffscreenDocument({ - shadowRoot, - onEvent, - }); - mainThreadRpc.registerHandler( - flushElementTreeEndpoint, - (operations) => { - decodeOperation(operations); - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerGetPathInfoHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerGetPathInfoHandler.ts deleted file mode 100644 index fbe0b406e8..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerGetPathInfoHandler.ts +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { Rpc } from '@lynx-js/web-worker-rpc'; -import { - ErrorCode, - getPathInfoEndpoint, - lynxDatasetAttribute, - lynxTagAttribute, -} from '@lynx-js/web-constants'; -import type { InvokeCallbackRes } from '@lynx-js/web-constants'; -import { queryNodes } from './queryNodes.js'; - -type OneNodeInfo = { - tag: string; - id?: string; - class?: string; - dataSet?: Record; - index: number; // The index of the node in the parent element's children -}; - -type PathInfo = { - /** - * The order of the nodes in the path from the the target node to the root node. - */ - path: OneNodeInfo[]; -}; - -export function registerGetPathInfoHandler( - rpc: Rpc, - shadowRoot: ShadowRoot, -) { - rpc.registerHandler( - getPathInfoEndpoint, - ( - type, - identifier, - component_id, - first_only, - root_unique_id, - ): InvokeCallbackRes => { - let code = ErrorCode.UNKNOWN; - let data: PathInfo | undefined; - - queryNodes( - shadowRoot, - type, - identifier, - component_id, - first_only, - root_unique_id, - (element) => { - try { - const path: OneNodeInfo[] = []; - let currentNode: Element | null = element; - while (currentNode) { - const parent: HTMLElement | null = currentNode.parentElement; - const parentNodeForChildren = parent ?? shadowRoot; - const children = Array.from(parentNodeForChildren.children); - const tag = currentNode.getAttribute(lynxTagAttribute)!; - const index = tag === 'page' ? 0 : children.indexOf(currentNode); - const id = currentNode.getAttribute('id') || undefined; - const className = currentNode.getAttribute('class') || undefined; - const datasetString = currentNode.getAttribute( - lynxDatasetAttribute, - ); - const dataSet = datasetString - ? JSON.parse(decodeURIComponent(datasetString)) - : undefined; - - path.push({ - tag, - id, - class: className, - dataSet, - index, - }); - if (tag === 'page' || currentNode.parentNode === shadowRoot) { - break; - } - currentNode = parent; - } - data = { path }; - code = ErrorCode.SUCCESS; - } catch (e) { - console.error('[lynx-web] getPathInfo: failed with', e, element); - code = ErrorCode.UNKNOWN; - } - }, - (error) => { - code = error; - }, - ); - return { code, data }; - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerInvokeUIMethodHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerInvokeUIMethodHandler.ts deleted file mode 100644 index 650f3e6aed..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerInvokeUIMethodHandler.ts +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { Rpc } from '@lynx-js/web-worker-rpc'; -import { queryNodes } from './queryNodes.js'; -import { ErrorCode, invokeUIMethodEndpoint } from '@lynx-js/web-constants'; - -const methodAlias: Record< - string, - (element: Element, params: unknown) => unknown -> = { - 'boundingClientRect': (element) => { - const rect = element.getBoundingClientRect(); - return { - id: element.id, - width: rect.width, - height: rect.height, - left: rect.left, - right: rect.right, - top: rect.top, - bottom: rect.bottom, - }; - }, -}; - -export function registerInvokeUIMethodHandler( - rpc: Rpc, - shadowRoot: ShadowRoot, -) { - let code = ErrorCode.UNKNOWN; - let data: any = undefined; - rpc.registerHandler( - invokeUIMethodEndpoint, - ( - type, - identifier, - component_id, - method, - params, - root_unique_id, - ) => { - queryNodes( - shadowRoot, - type, - identifier, - component_id, - true, - root_unique_id, - (element) => { - try { - const aliasMethod = methodAlias[method]; - const hasDomMethod = typeof (element as any)[method] === 'function'; - if (!aliasMethod && !hasDomMethod) { - code = ErrorCode.METHOD_NOT_FOUND; - } else { - if (aliasMethod) { - data = aliasMethod(element, params); - } else { - data = (element as any)[method](params); - } - code = ErrorCode.SUCCESS; - } - } catch (e) { - console.error( - `[lynx-web] invokeUIMethod: apply method failed with`, - e, - element, - ); - code = ErrorCode.PARAM_INVALID; - } - }, - (error) => { - code = error; - }, - ); - return { code, data }; - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerNapiModulesCallHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerNapiModulesCallHandler.ts deleted file mode 100644 index 19e9ffdd4d..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerNapiModulesCallHandler.ts +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { - dispatchNapiModuleEndpoint, - napiModulesCallEndpoint, - type Cloneable, - type NapiModulesCall, -} from '@lynx-js/web-constants'; - -export function registerNapiModulesCallHandler( - rpc: Rpc, - napiModulesCall: NapiModulesCall, -) { - const dispatchNapiModules = rpc.createCall(dispatchNapiModuleEndpoint); - rpc.registerHandler( - napiModulesCallEndpoint, - ( - name: string, - data: Cloneable, - moduleName: string, - ) => { - return napiModulesCall( - name, - data, - moduleName, - dispatchNapiModules, - ); - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerNativeModulesCallHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerNativeModulesCallHandler.ts deleted file mode 100644 index 76492bb123..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerNativeModulesCallHandler.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { - nativeModulesCallEndpoint, - type NativeModulesCall, -} from '@lynx-js/web-constants'; - -export function registerNativeModulesCallHandler( - rpc: Rpc, - nativeModulesCall: NativeModulesCall, -) { - rpc.registerHandler( - nativeModulesCallEndpoint, - nativeModulesCall, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerReloadHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerReloadHandler.ts deleted file mode 100644 index 0f1d9e3bfa..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerReloadHandler.ts +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2026 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { reloadEndpoint } from '@lynx-js/web-constants'; - -export function registerReloadHandler( - rpc: Rpc, - reloadHandler: () => void, -) { - rpc.registerHandler( - reloadEndpoint, - reloadHandler, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerReportErrorHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerReportErrorHandler.ts deleted file mode 100644 index 90dcc290e6..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerReportErrorHandler.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { reportErrorEndpoint } from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerReportErrorHandler( - rpc: Rpc, - fileName: string, - onError?: (e: Error, release: string, fileName: string) => void, -) { - rpc.registerHandler( - reportErrorEndpoint, - (e, _, release) => { - onError?.(e, release, fileName); - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerSelectComponentHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerSelectComponentHandler.ts deleted file mode 100644 index 04012db9ff..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerSelectComponentHandler.ts +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - componentIdAttribute, - IdentifierType, - selectComponentEndpoint, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { queryNodes } from './queryNodes.js'; - -export function registerSelectComponentHandler( - rpc: Rpc, - shadowRoot: ShadowRoot, -) { - let element: Element | null; - rpc.registerHandler( - selectComponentEndpoint, - ( - componentId, - idSelector, - single, - ) => { - queryNodes( - shadowRoot, - IdentifierType.ID_SELECTOR, - idSelector, - componentId === 'card' ? '0' : componentId, - single, - undefined, - (ele) => { - element = ele; - }, - ); - - return [element?.getAttribute(componentIdAttribute) ?? undefined]; - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerSetNativePropsHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerSetNativePropsHandler.ts deleted file mode 100644 index a9d6c2d34b..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerSetNativePropsHandler.ts +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { Rpc } from '@lynx-js/web-worker-rpc'; -import { queryNodes } from './queryNodes.js'; -import { setNativePropsEndpoint } from '@lynx-js/web-constants'; - -function applyNativeProps(element: Element, nativeProps: Record) { - for (const key in nativeProps) { - const value = nativeProps[key] as string; - if (key === 'text' && element?.tagName === 'X-TEXT') { - if ( - element.firstElementChild - && element.firstElementChild.tagName == 'RAW-TEXT' - ) { - element = element.firstElementChild; - } - } - if ( - CSS.supports(key, value) - && (element as HTMLElement).style - ) { - (element as HTMLElement).style.setProperty(key, value); - } else { - element.setAttribute(key, value); - } - } -} - -export function registerNativePropsHandler( - rpc: Rpc, - shadowRoot: ShadowRoot, -) { - rpc.registerHandler( - setNativePropsEndpoint, - ( - type, - identifier, - component_id, - first_only, - native_props, - root_unique_id, - ) => { - queryNodes( - shadowRoot, - type, - identifier, - component_id, - first_only, - root_unique_id, - (element) => { - applyNativeProps(element, native_props); - }, - ); - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerTriggerComponentEventHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerTriggerComponentEventHandler.ts deleted file mode 100644 index 5acf10df99..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerTriggerComponentEventHandler.ts +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - componentIdAttribute, - triggerComponentEventEndpoint, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerTriggerComponentEventHandler( - rpc: Rpc, - shadowRoot: ShadowRoot, -) { - rpc.registerHandler( - triggerComponentEventEndpoint, - ( - id, - params, - ) => { - const componentDom = shadowRoot.querySelector( - `[${componentIdAttribute}="${params.componentId}"]`, - ); - componentDom?.dispatchEvent( - new CustomEvent(id, { - ...params.eventOption, - detail: params.eventDetail, - }), - ); - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts b/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts deleted file mode 100644 index 6c21f2b070..0000000000 --- a/packages/web-platform/web-core/src/uiThread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - // componentIdAttribute, - triggerElementMethodEndpoint, -} from '@lynx-js/web-constants'; -import { - AnimationOperation, - type ElementAnimationOptions, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerTriggerElementMethodEndpointHandler( - rpc: Rpc, - shadowRoot: ShadowRoot, -) { - const animationMap = new Map(); - - rpc.registerHandler( - triggerElementMethodEndpoint, - ( - method, - id, - options: ElementAnimationOptions, - ) => { - if (method === 'animate') { - switch (options.operation) { - case AnimationOperation.START: - animationMap.set( - options.id, - shadowRoot.querySelector(id)?.animate( - options.keyframes, - options.timingOptions, - ), - ); - break; - case AnimationOperation.PLAY: - animationMap.get(options.id)?.play(); - break; - case AnimationOperation.PAUSE: - animationMap.get(options.id)?.pause(); - break; - case AnimationOperation.CANCEL: - animationMap.get(options.id)?.cancel(); - break; - case AnimationOperation.FINISH: - animationMap.get(options.id)?.finish(); - break; - } - } - }, - ); -} diff --git a/packages/web-platform/web-core/src/uiThread/startBackground.ts b/packages/web-platform/web-core/src/uiThread/startBackground.ts deleted file mode 100644 index 6d4bca3327..0000000000 --- a/packages/web-platform/web-core/src/uiThread/startBackground.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { - getCacheI18nResourcesKey, - markTimingEndpoint, - sendGlobalEventEndpoint, - updateI18nResourceEndpoint, - type Cloneable, - type I18nResourceTranslationOptions, - type InitI18nResources, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { registerInvokeUIMethodHandler } from './crossThreadHandlers/registerInvokeUIMethodHandler.js'; -import { registerNativePropsHandler } from './crossThreadHandlers/registerSetNativePropsHandler.js'; -import { registerNativeModulesCallHandler } from './crossThreadHandlers/registerNativeModulesCallHandler.js'; -import { registerTriggerComponentEventHandler } from './crossThreadHandlers/registerTriggerComponentEventHandler.js'; -import { registerSelectComponentHandler } from './crossThreadHandlers/registerSelectComponentHandler.js'; -import { registerNapiModulesCallHandler } from './crossThreadHandlers/registerNapiModulesCallHandler.js'; -import { registerDispatchLynxViewEventHandler } from './crossThreadHandlers/registerDispatchLynxViewEventHandler.js'; -import { registerTriggerElementMethodEndpointHandler } from './crossThreadHandlers/registerTriggerElementMethodEndpointHandler.js'; -import type { StartUIThreadCallbacks } from './startUIThread.js'; -import { registerReportErrorHandler } from './crossThreadHandlers/registerReportErrorHandler.js'; -import { registerGetPathInfoHandler } from './crossThreadHandlers/registerGetPathInfoHandler.js'; -import { registerReloadHandler } from './crossThreadHandlers/registerReloadHandler.js'; - -export function startBackground( - backgroundRpc: Rpc, - shadowRoot: ShadowRoot, - callbacks: StartUIThreadCallbacks, -) { - registerInvokeUIMethodHandler( - backgroundRpc, - shadowRoot, - ); - registerNativePropsHandler( - backgroundRpc, - shadowRoot, - ); - registerTriggerComponentEventHandler( - backgroundRpc, - shadowRoot, - ); - registerSelectComponentHandler( - backgroundRpc, - shadowRoot, - ); - registerNativeModulesCallHandler( - backgroundRpc, - callbacks.nativeModulesCall, - ); - registerNapiModulesCallHandler( - backgroundRpc, - callbacks.napiModulesCall, - ); - registerGetPathInfoHandler( - backgroundRpc, - shadowRoot, - ); - registerDispatchLynxViewEventHandler(backgroundRpc, shadowRoot); - registerTriggerElementMethodEndpointHandler(backgroundRpc, shadowRoot); - registerReportErrorHandler( - backgroundRpc, - 'app-service.js', - callbacks.onError, - ); - registerReloadHandler( - backgroundRpc, - callbacks.reload, - ); - - const sendGlobalEvent = backgroundRpc.createCall(sendGlobalEventEndpoint); - const markTiming = backgroundRpc.createCall(markTimingEndpoint); - const updateI18nResourceBackground = ( - data: InitI18nResources, - options: I18nResourceTranslationOptions, - ) => { - const matchedResources = data.find(i => - getCacheI18nResourcesKey(i.options) - === getCacheI18nResourcesKey(options) - ); - backgroundRpc.invoke(updateI18nResourceEndpoint, [ - matchedResources?.resource as Cloneable, - ]); - }; - return { - sendGlobalEvent, - markTiming, - updateI18nResourceBackground, - }; -} diff --git a/packages/web-platform/web-core/src/uiThread/startUIThread.ts b/packages/web-platform/web-core/src/uiThread/startUIThread.ts deleted file mode 100644 index e7df545ed7..0000000000 --- a/packages/web-platform/web-core/src/uiThread/startUIThread.ts +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { LynxView } from '../apis/createLynxView.js'; -import { bootWorkers } from './bootWorkers.js'; -import { createDispose } from './crossThreadHandlers/createDispose.js'; -import { - type StartMainThreadContextConfig, - type NapiModulesCall, - type NativeModulesCall, - updateGlobalPropsEndpoint, - type Cloneable, - dispatchMarkTiming, - flushMarkTiming, - type SSRDumpInfo, - type TemplateLoader, - type MarkTimingInternal, -} from '@lynx-js/web-constants'; -import { createTemplateLoader } from '../utils/loadTemplate.js'; -import { createUpdateData } from './crossThreadHandlers/createUpdateData.js'; -import { startBackground } from './startBackground.js'; -import { createRenderMultiThread } from './createRenderMultiThread.js'; -import { createRenderAllOnUI } from './createRenderAllOnUI.js'; - -export type StartUIThreadCallbacks = { - nativeModulesCall: NativeModulesCall; - napiModulesCall: NapiModulesCall; - onError?: (err: Error, release: string, fileName: string) => void; - customTemplateLoader?: TemplateLoader; - reload: () => void; -}; - -export function startUIThread( - templateUrl: string, - configs: Omit, - shadowRoot: ShadowRoot, - lynxGroupId: number | undefined, - threadStrategy: 'all-on-ui' | 'multi-thread', - callbacks: StartUIThreadCallbacks, - ssr?: SSRDumpInfo, -): LynxView { - const createLynxStartTiming = performance.now() + performance.timeOrigin; - const allOnUI = threadStrategy === 'all-on-ui'; - const { - mainThreadRpc, - backgroundRpc, - terminateWorkers, - } = bootWorkers(lynxGroupId, allOnUI, configs.browserConfig); - const { - markTiming, - sendGlobalEvent, - updateI18nResourceBackground, - } = startBackground( - backgroundRpc, - shadowRoot, - callbacks, - ); - const cacheMarkTimings = { - records: [], - timeout: null, - }; - const markTimingInternal: MarkTimingInternal = ( - timingKey, - pipelineId, - timeStamp, - ) => { - dispatchMarkTiming({ - timingKey, - pipelineId, - timeStamp, - markTiming, - cacheMarkTimings, - }); - }; - const flushMarkTimingInternal = () => - flushMarkTiming(markTiming, cacheMarkTimings); - const templateLoader = createTemplateLoader( - callbacks.customTemplateLoader, - markTimingInternal, - ); - const { start, updateDataMainThread, updateI18nResourcesMainThread } = allOnUI - ? createRenderAllOnUI( - /* main-to-bg rpc*/ mainThreadRpc, - shadowRoot, - templateLoader, - markTimingInternal, - flushMarkTimingInternal, - callbacks, - ssr, - ) - : createRenderMultiThread( - /* main-to-ui rpc*/ mainThreadRpc, - shadowRoot, - templateLoader, - callbacks, - ); - markTimingInternal('create_lynx_start', undefined, createLynxStartTiming); - templateLoader(templateUrl).then((template) => { - flushMarkTimingInternal(); - start({ - ...configs, - template, - }); - }); - return { - updateData: createUpdateData(updateDataMainThread), - dispose: createDispose( - backgroundRpc, - terminateWorkers, - ), - sendGlobalEvent, - updateGlobalProps: backgroundRpc.createCall(updateGlobalPropsEndpoint), - updateI18nResources: (...args) => { - updateI18nResourcesMainThread(args[0] as Cloneable); - updateI18nResourceBackground(...args); - }, - }; -} diff --git a/packages/web-platform/web-core/src/utils/browser.ts b/packages/web-platform/web-core/src/utils/browser.ts deleted file mode 100644 index e21c23eeff..0000000000 --- a/packages/web-platform/web-core/src/utils/browser.ts +++ /dev/null @@ -1,7 +0,0 @@ -const UA = window.navigator.userAgent; -export const isChromium = UA.includes('Chrome'); -export const isWebkit = /\b(iPad|iPhone|iPod|OS X)\b/.test(UA) - && !/Edge/.test(UA) - && /WebKit/.test(UA) - // @ts-expect-error - && !window.MSStream; diff --git a/packages/web-platform/web-core/src/utils/convertLengthToPx.ts b/packages/web-platform/web-core/src/utils/convertLengthToPx.ts deleted file mode 100644 index 2131bb1226..0000000000 --- a/packages/web-platform/web-core/src/utils/convertLengthToPx.ts +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2024 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export function convertLengthToPx( - targetElement: HTMLElement, - str: string | null, - isWidth?: boolean, -): number { - if (str) { - str = str.trim(); - if (str.endsWith('px')) { - return Number(str.substring(0, str.length - 2)); - } else if (str.endsWith('%')) { - const pct = Number(str.substring(0, str.length - 1)); - const { width, height } = targetElement.getBoundingClientRect(); - const base = isWidth ? width : height; - return (base * pct) / 100; - } else { - /** - * TODO (haoyang.wang): support rpx - */ - return 0; - } - } - return 0; -} diff --git a/packages/web-platform/web-core/src/utils/dispatchLynxViewEvent.ts b/packages/web-platform/web-core/src/utils/dispatchLynxViewEvent.ts deleted file mode 100644 index aeae3c43c4..0000000000 --- a/packages/web-platform/web-core/src/utils/dispatchLynxViewEvent.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { CloneableObject } from '@lynx-js/web-constants'; - -export const dispatchLynxViewEvent = ( - shadowRoot: ShadowRoot, - eventType: string, - detail: CloneableObject | undefined, -) => { - shadowRoot.dispatchEvent( - new CustomEvent(eventType, { - detail, - bubbles: true, - cancelable: true, - composed: true, - }), - ); -}; diff --git a/packages/web-platform/web-core/src/utils/loadTemplate.ts b/packages/web-platform/web-core/src/utils/loadTemplate.ts deleted file mode 100644 index 64fb3d60fa..0000000000 --- a/packages/web-platform/web-core/src/utils/loadTemplate.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { - generateTemplate, - type LynxTemplate, - type MarkTimingInternal, - type TemplateLoader, -} from '@lynx-js/web-constants'; - -const templateCache: Map | LynxTemplate> = - new Map(); - -function createJsModuleUrl(content: string): string { - return URL.createObjectURL(new Blob([content], { type: 'text/javascript' })); -} - -export function createTemplateLoader( - customTemplateLoader: TemplateLoader | undefined, - markTimingInternal: MarkTimingInternal, -) { - const loadTemplate: TemplateLoader = async ( - url: string, - ) => { - markTimingInternal('load_template_start'); - const cachedTemplate = templateCache.get(url); - if (cachedTemplate) { - markTimingInternal('load_template_end'); - return cachedTemplate; - } else { - const promise = new Promise(async (resolve, reject) => { - try { - const template = customTemplateLoader - ? await customTemplateLoader(url) - : (await (await fetch(url, { - method: 'GET', - })).json()) as LynxTemplate; - const decodedTemplate = await generateTemplate( - template, - createJsModuleUrl, - encodeURIComponent(url), - ); - resolve(decodedTemplate); - } catch (e) { - templateCache.delete(url); - reject(e); - } - }); - templateCache.set(url, promise); - /** - * This will cause a memory leak, which is expected. - * We cannot ensure that the `URL.createObjectURL` created url will never be used, therefore here we keep it for the entire lifetime of this page. - */ - markTimingInternal('load_template_end'); - return promise; - } - }; - return loadTemplate; -} diff --git a/packages/web-platform/web-core/tsconfig.json b/packages/web-platform/web-core/tsconfig.json deleted file mode 100644 index b93748e96d..0000000000 --- a/packages/web-platform/web-core/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "composite": true, - "rootDir": "./src", - "outDir": "./dist", - "lib": ["DOM", "ESNext", "WebWorker"], - "noUnusedParameters": true, - "noImplicitReturns": false, - }, - "include": ["src"], - "references": [ - { "path": "../web-constants/tsconfig.json" }, - { "path": "../web-mainthread-apis/tsconfig.json" }, - { "path": "../web-elements/tsconfig.json" }, - { "path": "../web-worker-rpc/tsconfig.json" }, - { "path": "../web-worker-runtime/tsconfig.json" }, - { "path": "../offscreen-document/tsconfig.json" }, - ], -} diff --git a/packages/web-platform/web-explorer/index.ts b/packages/web-platform/web-explorer/index.ts index db97ed4b63..07d2c13860 100644 --- a/packages/web-platform/web-explorer/index.ts +++ b/packages/web-platform/web-explorer/index.ts @@ -1,6 +1,5 @@ -import '@lynx-js/web-core'; -import type { LynxView } from '@lynx-js/web-core'; -import '@lynx-js/web-core/index.css'; +import '@lynx-js/web-core-wasm/client'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; import '@lynx-js/web-elements/index.css'; import '@lynx-js/web-elements/all'; diff --git a/packages/web-platform/web-explorer/package.json b/packages/web-platform/web-explorer/package.json index 70b81f3938..bf1b75e7c9 100644 --- a/packages/web-platform/web-explorer/package.json +++ b/packages/web-platform/web-explorer/package.json @@ -25,7 +25,7 @@ }, "devDependencies": { "@lynx-js/lynx-core": "0.1.3", - "@lynx-js/web-core": "workspace:*", + "@lynx-js/web-core-wasm": "workspace:*", "@lynx-js/web-elements": "workspace:*", "@lynx-js/web-platform-rsbuild-plugin": "workspace:*", "@rsbuild/core": "catalog:rsbuild", diff --git a/packages/web-platform/web-mainthread-apis/.gitignore b/packages/web-platform/web-mainthread-apis/.gitignore deleted file mode 100644 index 16b2660622..0000000000 --- a/packages/web-platform/web-mainthread-apis/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -binary -pkg \ No newline at end of file diff --git a/packages/web-platform/web-mainthread-apis/CHANGELOG.md b/packages/web-platform/web-mainthread-apis/CHANGELOG.md deleted file mode 100644 index e7915ed09a..0000000000 --- a/packages/web-platform/web-mainthread-apis/CHANGELOG.md +++ /dev/null @@ -1,918 +0,0 @@ -# @lynx-js/web-mainthread-apis - -## 0.19.9 - -### Patch Changes - -- Updated dependencies [[`2efecc2`](https://github.com/lynx-family/lynx-stack/commit/2efecc252c746831e7566e3c81fd7b04a45c5dbf)]: - - @lynx-js/web-constants@0.19.9 - -## 0.19.8 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.8 - -## 0.19.7 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.7 - -## 0.19.6 - -### Patch Changes - -- feat: add main-thread API: \_\_QuerySelector ([#2115](https://github.com/lynx-family/lynx-stack/pull/2115)) - -- fix: when a list-item is deleted from list, the deleted list-item is still showed incorrectly. ([#1092](https://github.com/lynx-family/lynx-stack/pull/1092)) - - This is because the `enqueueComponent` method does not delete the node from the Element Tree. It is only to maintain the display node on RL, and lynx web needs to delete the dom additionally. - -- feat: support main thread invoke ui method ([#2104](https://github.com/lynx-family/lynx-stack/pull/2104)) - -- fix: mts && bts events can be binded both ([#2121](https://github.com/lynx-family/lynx-stack/pull/2121)) - -- Updated dependencies [[`179f984`](https://github.com/lynx-family/lynx-stack/commit/179f9844adf00ff4b2cd450ffb943649441c87d3), [`f7133c1`](https://github.com/lynx-family/lynx-stack/commit/f7133c137f094063e991dfa0e993ea92177aa173), [`6c2b51a`](https://github.com/lynx-family/lynx-stack/commit/6c2b51a661ae244eb40671f63f29ee971e084ed4), [`5b589ab`](https://github.com/lynx-family/lynx-stack/commit/5b589ab53b01a8e2357d3ccbb159edab004086d3)]: - - @lynx-js/web-constants@0.19.6 - -## 0.19.5 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.5 - -## 0.19.4 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.4 - -## 0.19.3 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.3 - -## 0.19.2 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.2 - -## 0.19.1 - -### Patch Changes - -- fix: fix reload lynx-view when `enableCSSSelector` false may cause css style lost ([#1982](https://github.com/lynx-family/lynx-stack/pull/1982)) - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.1 - -## 0.19.0 - -### Patch Changes - -- fix: capture and bind event listener should be trigger correctly ([#1972](https://github.com/lynx-family/lynx-stack/pull/1972)) - -- fix: the l-p-comp-uid of page should be '1' ([#1970](https://github.com/lynx-family/lynx-stack/pull/1970)) - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.0 - -## 0.18.4 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.18.4 - -## 0.18.3 - -### Patch Changes - -- fix: The `e.detail` in the `bindtap` callback needs to correctly include `x` and `y`. ([#1913](https://github.com/lynx-family/lynx-stack/pull/1913)) - -- Updated dependencies [[`ebc1a60`](https://github.com/lynx-family/lynx-stack/commit/ebc1a606318e9809e8a07457e18536b59be12a18)]: - - @lynx-js/web-constants@0.18.3 - - @lynx-js/web-style-transformer@0.18.3 - -## 0.18.2 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.18.2 - - @lynx-js/web-style-transformer@0.18.2 - -## 0.18.1 - -### Patch Changes - -- fix: mts freeze after reload() ([#1892](https://github.com/lynx-family/lynx-stack/pull/1892)) - - The mts may be freezed after reload() called. - - We fixed it by waiting until the all-on-ui Javascript realm implementation, an iframe, to be fully loaded. - -- Updated dependencies []: - - @lynx-js/web-constants@0.18.1 - - @lynx-js/web-style-transformer@0.18.1 - -## 0.18.0 - -### Patch Changes - -- fix: ([#1837](https://github.com/lynx-family/lynx-stack/pull/1837)) - - 1. `LynxView.updateData()` cannot trigger `dataProcessor`. - - 2. **This is a break change:** The second parameter of `LynxView.updateData()` has been changed from `UpdateDataType` to `string`, which is the `processorName` (default is `default` which will use `defaultDataProcessor`). This change is to better align with Native. The current complete type is as follows: - - ```ts - LynxView.updateData(data: Cloneable, processorName?: string | undefined, callback?: (() => void) | undefined): void - ``` - -- feat: mouse event output structures remain aligned ([#1820](https://github.com/lynx-family/lynx-stack/pull/1820)) - -- Updated dependencies [[`77397fd`](https://github.com/lynx-family/lynx-stack/commit/77397fd535cf60556f8f82f7ef8dae8a623d1625)]: - - @lynx-js/web-constants@0.18.0 - - @lynx-js/web-style-transformer@0.18.0 - -## 0.17.2 - -### Patch Changes - -- Updated dependencies [[`a35a245`](https://github.com/lynx-family/lynx-stack/commit/a35a2452e5355bda3c475f9a750a86085e0cf56a)]: - - @lynx-js/web-constants@0.17.2 - - @lynx-js/web-style-transformer@0.17.2 - -## 0.17.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.17.1 - - @lynx-js/web-style-transformer@0.17.1 - -## 0.17.0 - -### Patch Changes - -- fix: \_\_QueryComponentImpl in mts should execute only once for same url ([#1763](https://github.com/lynx-family/lynx-stack/pull/1763)) - -- fix: avoid duplicate style transformation ([#1748](https://github.com/lynx-family/lynx-stack/pull/1748)) - - After this commit, we use DAG methods to handle the styleInfos - -- feat: support lazy bundle with CSSOG(`enableCSSSelector: false`). ([#1770](https://github.com/lynx-family/lynx-stack/pull/1770)) - -- Updated dependencies [[`93d707b`](https://github.com/lynx-family/lynx-stack/commit/93d707b82a59f7256952e21da6dcad2999f8233d)]: - - @lynx-js/web-constants@0.17.0 - - @lynx-js/web-style-transformer@0.17.0 - -## 0.16.1 - -### Patch Changes - -- feat: supports lazy bundle. (This feature requires `@lynx-js/lynx-core >= 0.1.3`) ([#1235](https://github.com/lynx-family/lynx-stack/pull/1235)) - -- Updated dependencies [[`608f375`](https://github.com/lynx-family/lynx-stack/commit/608f375e20732cc4c9f141bfbf9800ba6896100b)]: - - @lynx-js/web-constants@0.16.1 - - @lynx-js/web-style-transformer@0.16.1 - -## 0.16.0 - -### Minor Changes - -- refactor: provide the mts a real globalThis ([#1589](https://github.com/lynx-family/lynx-stack/pull/1589)) - - Before this change, We create a function wrapper and a fake globalThis for Javascript code. - - This caused some issues. - - After this change, we will create an iframe for createing an isolated Javascript context. - - This means the globalThis will be the real one. - -### Patch Changes - -- refactor: add `:not([l-e-name])` at the end of selector for lazy component ([#1622](https://github.com/lynx-family/lynx-stack/pull/1622)) - -- fix: the SystemInfo in bts should be assigned to the globalThis ([#1599](https://github.com/lynx-family/lynx-stack/pull/1599)) - -- Updated dependencies [[`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`bb53d9a`](https://github.com/lynx-family/lynx-stack/commit/bb53d9a035f607e7c89952098d4ed77877a2e3c1), [`c1f8715`](https://github.com/lynx-family/lynx-stack/commit/c1f8715a81b2e69ff46fc363013626db4468c209)]: - - @lynx-js/web-constants@0.16.0 - - @lynx-js/web-style-transformer@0.16.0 - -## 0.15.7 - -### Patch Changes - -- fix: globalThis is never accessible in MTS ([#1531](https://github.com/lynx-family/lynx-stack/pull/1531)) - -- Updated dependencies [[`70863fb`](https://github.com/lynx-family/lynx-stack/commit/70863fbc311d8885ebda40855668097b0631f521)]: - - @lynx-js/web-constants@0.15.7 - - @lynx-js/web-style-transformer@0.15.7 - -## 0.15.6 - -### Patch Changes - -- fix: systeminfo in mts function ([#1537](https://github.com/lynx-family/lynx-stack/pull/1537)) - -- refactor: use utf-8 string ([#1473](https://github.com/lynx-family/lynx-stack/pull/1473)) - -- feat: add MTS API: \_\_UpdateComponentInfo ([#1485](https://github.com/lynx-family/lynx-stack/pull/1485)) - -- fix: \_\_ElementFromBinary should mark all elements actively ([#1484](https://github.com/lynx-family/lynx-stack/pull/1484)) - -- fix: `__ElementFromBinary` needs to correctly apply the dataset in elementTemplate to the Element ([#1487](https://github.com/lynx-family/lynx-stack/pull/1487)) - -- fix: all attributes except `id` and `type` under ElementTemplateData are optional. ([#1483](https://github.com/lynx-family/lynx-stack/pull/1483)) - -- feat: add MTS API \_\_GetAttributeByName ([#1486](https://github.com/lynx-family/lynx-stack/pull/1486)) - -- Updated dependencies [[`405a917`](https://github.com/lynx-family/lynx-stack/commit/405a9170442ae32603b7687549b49ab4b34aff92), [`b8f89e2`](https://github.com/lynx-family/lynx-stack/commit/b8f89e25f106a15ba9d70f2df06dfb684cbb6633), [`f76aae9`](https://github.com/lynx-family/lynx-stack/commit/f76aae9ea06abdc7022ba508d22f9f4eb00864e8), [`d8381a5`](https://github.com/lynx-family/lynx-stack/commit/d8381a58d12af6424cab4955617251e798bdc9f1), [`214898b`](https://github.com/lynx-family/lynx-stack/commit/214898bb9c74fc9b44e68cb220a4c02485102ce2), [`ab8cee4`](https://github.com/lynx-family/lynx-stack/commit/ab8cee4bab384fa905c045c4b4b93e5d4a95d57f)]: - - @lynx-js/web-constants@0.15.6 - - @lynx-js/web-style-transformer@0.15.6 - -## 0.15.5 - -### Patch Changes - -- fix: load main-thread chunk in ESM format ([#1437](https://github.com/lynx-family/lynx-stack/pull/1437)) - - See [nodejs/node#59362](https://github.com/nodejs/node/issues/59362) for more details. - -- Updated dependencies [[`29434ae`](https://github.com/lynx-family/lynx-stack/commit/29434aec853f14242f521316429cf07a93b8c371), [`fb7096b`](https://github.com/lynx-family/lynx-stack/commit/fb7096bb3c79166cd619a407095b8206eccb7918)]: - - @lynx-js/web-constants@0.15.5 - - @lynx-js/web-style-transformer@0.15.5 - -## 0.15.4 - -### Patch Changes - -- feat: support `__ElementFromBinary` ([#1391](https://github.com/lynx-family/lynx-stack/pull/1391)) - -- fix: crash on chrome<96 ([#1361](https://github.com/lynx-family/lynx-stack/pull/1361)) - - https://github.com/wasm-bindgen/wasm-bindgen/issues/4211#issuecomment-2505965903 - - https://github.com/WebAssembly/binaryen/issues/7358 - - The rust toolchain enables WASM feature `reference types` by default. - - However this feature is not supported by chromium lower than version 96 - - Therefore we found a workaround for it. - - In this implementation we detect if browser supports `reference types` first. - - If user's browser supported it, we load the wasm file with `reference types` on, otherwise we load the wasm file with `reference types` off. - -- Updated dependencies [[`22ca433`](https://github.com/lynx-family/lynx-stack/commit/22ca433eb96b39724c6eb47ce0a938d291bbdef2)]: - - @lynx-js/web-constants@0.15.4 - - @lynx-js/web-style-transformer@0.15.4 - -## 0.15.3 - -### Patch Changes - -- Updated dependencies [[`0da5ef0`](https://github.com/lynx-family/lynx-stack/commit/0da5ef03e41f20e9f8019c6dc03cb4a38ab18854)]: - - @lynx-js/web-constants@0.15.3 - -## 0.15.2 - -### Patch Changes - -- feat: support SSR for all-on-ui ([#1029](https://github.com/lynx-family/lynx-stack/pull/1029)) - -- feat: move SSR hydrate essential info to the ssr attribute ([#1292](https://github.com/lynx-family/lynx-stack/pull/1292)) - - We found that in browser there is no simple tool to decode a base64 string - - Therefore we move the data to `ssr` attribute - - Also fix some ssr issues - -- feat: support \_\_MarkTemplateElement, \_\_MarkPartElement and \_\_GetTemplateParts for all-on-ui ([#1275](https://github.com/lynx-family/lynx-stack/pull/1275)) - -- feat: mark template elements for SSR and update part ID handling ([#1286](https://github.com/lynx-family/lynx-stack/pull/1286)) - -- Updated dependencies [[`1443e46`](https://github.com/lynx-family/lynx-stack/commit/1443e468a353363e29aab0d90cd8b91c232a5525), [`5062128`](https://github.com/lynx-family/lynx-stack/commit/5062128c68e21abcf276ebcb40d7cc8f6e54244b)]: - - @lynx-js/web-constants@0.15.2 - -## 0.15.1 - -### Patch Changes - -- Updated dependencies [[`e59138b`](https://github.com/lynx-family/lynx-stack/commit/e59138b3c2285ce83a2927ee046671b9015acdfd)]: - - @lynx-js/web-style-transformer@0.3.3 - - @lynx-js/web-constants@0.15.1 - -## 0.15.0 - -### Minor Changes - -- refactor: move exposure system to web-core ([#1254](https://github.com/lynx-family/lynx-stack/pull/1254)) - - **THIS IS A BREAKING CHANGE** - - **You'll need to upgrade your @lynx-js/web-elements to >= 0.8.0** - - For SSR and better performance, we moved the lynx's exposure system from web-element to web-core. - - Before this commit, we create Intersection observers by creating HTMLElements. - - After this commit, we will create such Intersection observers after dom stabled. - - Also, the setInterval for exposure has been removed, now we use an on time lazy timer for such features. - -### Patch Changes - -- Updated dependencies [[`16f402f`](https://github.com/lynx-family/lynx-stack/commit/16f402f557ba12ec34a35a1b9b00115bf576c20f), [`60095d7`](https://github.com/lynx-family/lynx-stack/commit/60095d741ae969e76a8faeb669a0fbe7e6e81f7c), [`224c653`](https://github.com/lynx-family/lynx-stack/commit/224c653f370d807281fa0a9ffbb4f4dd5c9d308e)]: - - @lynx-js/web-style-transformer@0.3.2 - - @lynx-js/web-constants@0.15.0 - -## 0.14.2 - -### Patch Changes - -- feat: merge multiple markTiming RPC communication events together and send them together, which can effectively reduce the number of RPC communications. ([#1178](https://github.com/lynx-family/lynx-stack/pull/1178)) - -- fix: correctly handle with CSS compound-selector, such as `.a.b`, which will be processed as `.a .b` incorrectly. ([#1187](https://github.com/lynx-family/lynx-stack/pull/1187)) - - This problem also occurs when used in combination with other selectors, here are some ways to write styles that worked incorrectly before this commit: - - - `.a.b { }` - - `.a.b view { }` - - `.a.b:not(.c) { }` - - `.a.b::placeholder { }` - -- Updated dependencies [[`e44b146`](https://github.com/lynx-family/lynx-stack/commit/e44b146b1bc2b58c0347af7fb4e4157688e07e36), [`6ca5b91`](https://github.com/lynx-family/lynx-stack/commit/6ca5b9106aade393dfac88914b160960a61a82f2)]: - - @lynx-js/web-constants@0.14.2 - -## 0.14.1 - -### Patch Changes - -- fix: under the all-on-ui strategy, reload() will add two page elements. ([#1147](https://github.com/lynx-family/lynx-stack/pull/1147)) - -- Updated dependencies [[`a64333e`](https://github.com/lynx-family/lynx-stack/commit/a64333ef28228d6b90c32e027f67bef8acbd8432), [`7751375`](https://github.com/lynx-family/lynx-stack/commit/775137521782ca5445f22029c39163c0a63bbfa5), [`b52a924`](https://github.com/lynx-family/lynx-stack/commit/b52a924a2375cb6f7ebafdd8abfbab0254eb2330)]: - - @lynx-js/web-constants@0.14.1 - -## 0.14.0 - -### Patch Changes - -- feat: add `_SetSourceMapRelease(errInfo)` MTS API. ([#1118](https://github.com/lynx-family/lynx-stack/pull/1118)) - - You can get `errInfo.release` through `e.detail.release` in the error event callback of lynx-view. - - The `_SetSourceMapRelease` function is not complete yet, because it is currently limited by the Web platform and some functions and some props such as `err.stack` do not need to be supported for the time being. - -- feat: add `_I18nResourceTranslation` api in mts && `init-i18n-resources` attr, `i18nResourceMissed` event of lynx-view. ([#1065](https://github.com/lynx-family/lynx-stack/pull/1065)) - - `init-i18n-resource` is the complete set of i18nResources that need to be maintained on the container side. Note: You need to pass this value when lynx-view is initialized. - - You can use `_I18nResourceTranslation` in MTS to get the corresponding i18nResource from `init-i18n-resources`. If it is undefined, the `i18nResourceMissed` event will be dispatched. - - ```js - // ui thread - lynxView.initI18nResources = [ - { - options: { - locale: 'en', - channel: '1', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform1', - }, - }, - ]; - lynxView.addEventListener('i18nResourceMissed', (e) => { - console.log(e); - }); - - // mts - _I18nResourceTranslation({ - locale: 'en', - channel: '1', - fallback_url: '', - }); - ``` - -- feat: supports `lynx.getI18nResource()` and `onI18nResourceReady` event in bts. ([#1088](https://github.com/lynx-family/lynx-stack/pull/1088)) - - - `lynx.getI18nResource()` can be used to get i18nResource in bts, it has two data sources: - - the result of `_I18nResourceTranslation()` - - lynx-view `updateI18nResources(data: InitI18nResources, options: I18nResourceTranslationOptions)`, it will be matched to the correct i8nResource as a result of `lynx.getI18nResource()` - - `onI18nResourceReady` event can be used to listen `_I18nResourceTranslation` and lynx-view `updateI18nResources` execution. - -- feat: add `updateI18nResources` method of lynx-view. ([#1085](https://github.com/lynx-family/lynx-stack/pull/1085)) - - Now you can use `updateI18nResources` to update i18nResources, and then use \_I18nResourceTranslation() to get the updated result. - -- fix: `decodeCssInJs` will not throw error. ([#1120](https://github.com/lynx-family/lynx-stack/pull/1120)) - - Before this pr, decoding css will be strictly executed according to cssInfo, and an error will be thrown if data that does not meet the requirements is encountered. Now it is changed to console.warn, which will not block rendering. - -- Updated dependencies [[`25a04c9`](https://github.com/lynx-family/lynx-stack/commit/25a04c9e59f4b893227bdead74f2de69f6615cdb), [`0dbb8b1`](https://github.com/lynx-family/lynx-stack/commit/0dbb8b1f580d0700e2b67b92018a7a00d1494837), [`f99de1e`](https://github.com/lynx-family/lynx-stack/commit/f99de1ef60cc5a11eae4fd0acc70a490787d36c9), [`873a285`](https://github.com/lynx-family/lynx-stack/commit/873a2852fa3df9e32c48a6504160bb243540c7b9), [`afacb2c`](https://github.com/lynx-family/lynx-stack/commit/afacb2cbea7feca46c553651000625d0845b2b00), [`7e73450`](https://github.com/lynx-family/lynx-stack/commit/7e73450f8f5f1153f8a064036f5552c1335c23d7)]: - - @lynx-js/web-constants@0.14.0 - - @lynx-js/web-style-transformer@0.3.1 - -## 0.13.5 - -### Patch Changes - -- refactor: move some internal status to dom's attribute ([#945](https://github.com/lynx-family/lynx-stack/pull/945)) - - It's essential for SSR - -- refactor: avoid to create many style element for cssog ([#1026](https://github.com/lynx-family/lynx-stack/pull/1026)) - -- fix: target.id is undefined ([#1016](https://github.com/lynx-family/lynx-stack/pull/1016)) - -- feat: add new pageConfig configuration: enableJSDataProcessor ([#886](https://github.com/lynx-family/lynx-stack/pull/886)) - -- refactor: move component config info to attribute ([#984](https://github.com/lynx-family/lynx-stack/pull/984)) - -- refactor: save dataset on an attribute ([#981](https://github.com/lynx-family/lynx-stack/pull/981)) - - On lynx, the `data-*` attributes have different behaviors than the HTMLElement has. - - The dataset will be treated as properties, the key will not be applied the camel-case <-> hyphenate name transformation. - - Before this commit we use it as a runtime data, but after this commit we will use encodeURI(JSON.stringify(dataset)) to encode it as a string. - -- refactor: create elements of `elementToRuntimeInfoMap` on demand ([#986](https://github.com/lynx-family/lynx-stack/pull/986)) - -- refactor: implement mts apis in closure pattern ([#1004](https://github.com/lynx-family/lynx-stack/pull/1004)) - -- Updated dependencies [[`70b82d2`](https://github.com/lynx-family/lynx-stack/commit/70b82d23744d6b6ec945dff9f8895ab3488ba4c8), [`9499ea9`](https://github.com/lynx-family/lynx-stack/commit/9499ea91debdf73b2d31af0b31bcbc216135543b), [`50f0193`](https://github.com/lynx-family/lynx-stack/commit/50f01933942268b697bf5abe790da86c932f1dfc), [`57bf0ef`](https://github.com/lynx-family/lynx-stack/commit/57bf0ef19f1d79bc52ab6a4f0cd2939e7901d98b), [`0525fbf`](https://github.com/lynx-family/lynx-stack/commit/0525fbf38baa7a977a7a8c66e8a4d8bf34cc3b68), [`b6b87fd`](https://github.com/lynx-family/lynx-stack/commit/b6b87fd11dbc76c28f3b5022aa8c6afeb773d90f), [`c014327`](https://github.com/lynx-family/lynx-stack/commit/c014327ad0cf599b32d4182d95116b46c35f5fa5)]: - - @lynx-js/web-constants@0.13.5 - -## 0.13.4 - -### Patch Changes - -- fix: style loss issue caused by incorrect handling of styleInfo-imports when enableCSSSelector and enableRemoveCSSScope are turned off. ([#931](https://github.com/lynx-family/lynx-stack/pull/931)) - -- Updated dependencies [[`569618d`](https://github.com/lynx-family/lynx-stack/commit/569618d8e2665f5c9e1672f7ee5900ec2a5179a2), [`f9f88d6`](https://github.com/lynx-family/lynx-stack/commit/f9f88d6fb9c42d3370a6622d9d799d671ffcf1a7)]: - - @lynx-js/web-constants@0.13.4 - -## 0.13.3 - -### Patch Changes - -- refactor: code clean ([#897](https://github.com/lynx-family/lynx-stack/pull/897)) - - rename many internal apis to make logic be clear: - - multi-thread: startMainWorker -> prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - all-on-ui: prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - -- perf: improve dom operation performance ([#881](https://github.com/lynx-family/lynx-stack/pull/881)) - - - code clean for offscreen-document, cut down inheritance levels - - add `appendChild` method for OffscreenElement, improve performance for append one node - - bypass some JS getter for dumping SSR string - -- Updated dependencies [[`b6e27da`](https://github.com/lynx-family/lynx-stack/commit/b6e27daf865b0627b1c3238228a4fdf65ad87ee3)]: - - @lynx-js/web-constants@0.13.3 - -## 0.13.2 - -### Patch Changes - -- feat: allow lynx code to get JS engine provided properties on globalThis ([#786](https://github.com/lynx-family/lynx-stack/pull/786)) - - ``` - globalThis.Reflect; // this will be the Reflect Object - ``` - - Note that `assigning to the globalThis` is still not allowed. - -- fix: corrupt mainthread module cache ([#806](https://github.com/lynx-family/lynx-stack/pull/806)) - -- Updated dependencies [[`8cdd288`](https://github.com/lynx-family/lynx-stack/commit/8cdd28884288b9456aee3a919d6edbf72da1c67b)]: - - @lynx-js/web-constants@0.13.2 - -## 0.13.1 - -### Patch Changes - -- fix: some inline style properties cause crash ([#647](https://github.com/lynx-family/lynx-stack/pull/647)) - - add support for the following css properties - - - mask - - mask-repeat - - mask-position - - mask-clip - - mask-origin - - mask-size - - gap - - column-gap - - row-gap - - image-rendering - - hyphens - - offset-path - - offset-distance - -- feat: support touch events for MTS ([#641](https://github.com/lynx-family/lynx-stack/pull/641)) - - now we support - - - main-thread:bindtouchstart - - main-thread:bindtouchend - - main-thread:bindtouchmove - - main-thread:bindtouchcancel - -- Updated dependencies [[`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91)]: - - @lynx-js/web-constants@0.13.1 - -## 0.13.0 - -### Minor Changes - -- fix: mts lynx will no longer provide requireModule, requireModuleAsync methods, which is aligned with Native. ([#537](https://github.com/lynx-family/lynx-stack/pull/537)) - -### Patch Changes - -- refactor: isolate SystemInfo ([#628](https://github.com/lynx-family/lynx-stack/pull/628)) - - Never assign `SystemInfo` on worker's self object. - -- feat: support thread strategy `all-on-ui` ([#625](https://github.com/lynx-family/lynx-stack/pull/625)) - - ```html - - ``` - - This will make the lynx's main-thread run on the UA's main thread. - - Note that the `all-on-ui` does not support the HMR & chunk splitting yet. - -- fix(web): `:root` not work on web platform ([#607](https://github.com/lynx-family/lynx-stack/pull/607)) - - Note: To solve this issue, you need to upgrade your `react-rsbuild-plugin` - -- refactor: move mainthread impl into mainthread-api packages ([#622](https://github.com/lynx-family/lynx-stack/pull/622)) - -- fix(web): css selector not work for selectors with combinator and pseudo-class on WEB ([#608](https://github.com/lynx-family/lynx-stack/pull/608)) - - like `.parent > :not([hidden]) ~ :not([hidden])` - - you will need to upgrade your `react-rsbuild-plugin` to fix this issue - -- Updated dependencies [[`4ee0465`](https://github.com/lynx-family/lynx-stack/commit/4ee0465f6e5846a0d038b49d2a7c95e87c9e5c77), [`5a3d9af`](https://github.com/lynx-family/lynx-stack/commit/5a3d9afe52ba639987db124ca35580261e0718b5), [`5269cab`](https://github.com/lynx-family/lynx-stack/commit/5269cabef7609159bdd0dd14a03c5da667907424)]: - - @lynx-js/web-constants@0.13.0 - -## 0.12.0 - -### Patch Changes - -- feat: fully support MTS ([#569](https://github.com/lynx-family/lynx-stack/pull/569)) - - Now use support the following usage - - - mainthread event - - mainthread ref - - runOnMainThread/runOnBackground - - ref.current.xx - -- feat: support mts event with target methods ([#564](https://github.com/lynx-family/lynx-stack/pull/564)) - - After this commit, developers are allowed to invoke `event.target.setStyleProperty` in mts handler - -- fix: crash on removing a id attribute ([#582](https://github.com/lynx-family/lynx-stack/pull/582)) - -- Updated dependencies [[`f1ca29b`](https://github.com/lynx-family/lynx-stack/commit/f1ca29bd766377dd46583f15e1e75bca447699cd), [`7edf478`](https://github.com/lynx-family/lynx-stack/commit/7edf478410cb57eeedc18aac6f5d3950b16c7fa8)]: - - @lynx-js/web-constants@0.12.0 - - @lynx-js/web-style-transformer@0.3.0 - -## 0.11.0 - -### Patch Changes - -- feat: support mts event handler (1/n) ([#495](https://github.com/lynx-family/lynx-stack/pull/495)) - - now the main-thread:bind handler could be invoked. The params of the handler will be implemented later. - -- Updated dependencies [[`ea42e62`](https://github.com/lynx-family/lynx-stack/commit/ea42e62fbcd5c743132c3e6e7c4851770742d544), [`a0f5ca4`](https://github.com/lynx-family/lynx-stack/commit/a0f5ca4ea0895ccbaa6aa63f449f53a677a1cf73)]: - - @lynx-js/web-constants@0.11.0 - -## 0.10.1 - -### Patch Changes - -- Updated dependencies [[`1af3b60`](https://github.com/lynx-family/lynx-stack/commit/1af3b6052ab27f98bf0e4d1b0ec9f7d9e88e0afc)]: - - @lynx-js/web-constants@0.10.1 - -## 0.10.0 - -### Minor Changes - -- feat: rewrite the main thread Element PAPIs ([#343](https://github.com/lynx-family/lynx-stack/pull/343)) - - In this commit we've rewritten the main thread apis. - - The most highlighted change is that - - - Before this commit we send events directly to bts - - After this change, we send events to mts then send them to bts with some data combined. - -### Patch Changes - -- feat(web): use pure DOM API to implement Element PAPIs ([#334](https://github.com/lynx-family/lynx-stack/pull/334)) - - 1. rewrite all element PAPIs impl. Now we use DOM. - 2. use our new package `@lynx-js/offscreen-document` to support the new Element PAPI implementation in a worker - -- fix: inline style will be removed for value number `0` ([#368](https://github.com/lynx-family/lynx-stack/pull/368)) - - the inline style value could be incorrectly removed for number value `0`; - - For example, `flex-shrink:0` may be ignored. - -- fix: publicComponentEvent args order ([#401](https://github.com/lynx-family/lynx-stack/pull/401)) - -- Updated dependencies [[`3a8dabd`](https://github.com/lynx-family/lynx-stack/commit/3a8dabd877084c15db1404c912dd8a19c7a0fc59), [`a521759`](https://github.com/lynx-family/lynx-stack/commit/a5217592f5aebea4b17860e729d523ecabb5f691), [`890c6c5`](https://github.com/lynx-family/lynx-stack/commit/890c6c51470c82104abb1049681f55e5d97cf9d6)]: - - @lynx-js/web-constants@0.10.0 - -## 0.9.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.9.1 - -## 0.9.0 - -### Minor Changes - -- refractor: remove entryId concept ([#217](https://github.com/lynx-family/lynx-stack/pull/217)) - - After the PR #198 - All contents are isolated by a shadowroot. - Therefore we don't need to add the entryId selector to avoid the lynx-view's style taking effect on the whole page. - -### Patch Changes - -- refactor: clean the decodeOperations implementation ([#261](https://github.com/lynx-family/lynx-stack/pull/261)) - -- refactor: remove customelement defined detecting logic ([#247](https://github.com/lynx-family/lynx-stack/pull/247)) - - Before this commit, for those element with tag without `-`, we always try to detect if the `x-${tagName}` is defined. - - After this commit, we pre-define a map(could be override by the `overrideLynxTagToHTMLTagMap`) to make that transformation for tag name. - - This change is a path to SSR and the MTS support. - -- Updated dependencies [[`5b5e090`](https://github.com/lynx-family/lynx-stack/commit/5b5e090fdf0e896f1c38a49bf3ed9889117c4fb8), [`f447811`](https://github.com/lynx-family/lynx-stack/commit/f4478112a08d3cf2d1483b87d591ea4e3b6cc2ea), [`b844e75`](https://github.com/lynx-family/lynx-stack/commit/b844e751f566d924256365d37aec4c86c520ec00), [`6f16827`](https://github.com/lynx-family/lynx-stack/commit/6f16827d1f4d7364870d354fc805a8868c110f1e), [`d2d55ef`](https://github.com/lynx-family/lynx-stack/commit/d2d55ef9fe438c35921d9db0daa40d5228822ecc)]: - - @lynx-js/web-constants@0.9.0 - - @lynx-js/web-style-transformer@0.2.3 - -## 0.8.0 - -### Minor Changes - -- refactor: remove web-elements/lazy and loadNewTag ([#123](https://github.com/lynx-family/lynx-stack/pull/123)) - - - remove @lynx-js/web-elements/lazy - - remove loadElement - - remove loadNewTag callback - - **This is a breaking change** - - Now we removed the default lazy loading preinstalled in web-core - - Please add the following statement in your web project - - ``` - import "@lynx-js/web-elements/all"; - ``` - -- feat: use shadowroot to isolate one lynx-view ([#198](https://github.com/lynx-family/lynx-stack/pull/198)) - - Before this commit, we have been detecting if current browser supports the `@scope` rule. - This allows us to scope one lynx-view's styles. - - After this commit we always create a shadowroot to scope then. - - Also for the new shadowroot pattern, we add a new **attribute** `inject-head-links`. - By default, we will iterate all `` in the ``, and use `@import url()` to import them inside the shadowroot. - Developers could add a `inject-head-links="false"` to disable this behavior. - -### Patch Changes - -- Updated dependencies [[`e9e8370`](https://github.com/lynx-family/lynx-stack/commit/e9e8370e070a50cbf65a4ebc46c2e37ea1e0be40), [`ec4e1ce`](https://github.com/lynx-family/lynx-stack/commit/ec4e1ce0d7612d6c0701792a46c78cd52130bad4), [`f0a717c`](https://github.com/lynx-family/lynx-stack/commit/f0a717c630700e16ab0af7f1fe370fd60ac75b30)]: - - @lynx-js/web-constants@0.8.0 - -## 0.7.1 - -### Patch Changes - -- Support NPM provenance. ([#30](https://github.com/lynx-family/lynx-stack/pull/30)) - -- fix: some valus should be updateable by global scope ([#130](https://github.com/lynx-family/lynx-stack/pull/130)) - - Now we add an allowlist to allow some identifiers could be updated by globalThis. - - For those values in the allowlist: - - ``` - globalThis.foo = 'xx'; - console.log(foo); //'xx' - ``` - -- refactor: isolate the globalThis in mts ([#90](https://github.com/lynx-family/lynx-stack/pull/90)) - - After this commit, developers' mts code won't be able to access the globalThis - - The following usage will NOT work - - ``` - globalThis.foo = () =>{}; - foo();//crash - ``` - -- refractor: improve some internal logic for element creating in MTS ([#71](https://github.com/lynx-family/lynx-stack/pull/71)) - -- Updated dependencies [[`c617453`](https://github.com/lynx-family/lynx-stack/commit/c617453aea967aba702967deb2916b5c883f03bb), [`2044571`](https://github.com/lynx-family/lynx-stack/commit/204457166531dae6e9f653db56b14187553b7666), [`399a6d9`](https://github.com/lynx-family/lynx-stack/commit/399a6d973024aa8a46ab2f2f13e7c82214066f9e), [`7da7601`](https://github.com/lynx-family/lynx-stack/commit/7da7601f00407970c485046ad73eeb8534aaa4f6)]: - - @lynx-js/web-style-transformer@0.2.2 - - @lynx-js/web-constants@0.7.1 - -## 0.7.0 - -### Patch Changes - -- Updated dependencies [1abf8f0] - - @lynx-js/web-constants@0.7.0 - -## 0.6.2 - -### Patch Changes - -- Updated dependencies [0412db0] -- Updated dependencies [085b99e] -- Updated dependencies [2738fdc] - - @lynx-js/web-constants@0.6.2 - - @lynx-js/web-style-transformer@0.2.1 - -## 0.6.1 - -### Patch Changes - -- 62b7841: feat: add lynx.requireModule in main-thread && \_\_LoadLepusChunk API. - - now the `lynx.requireModule` is available in mts. - -- Updated dependencies [62b7841] - - @lynx-js/web-constants@0.6.1 - -## 0.6.0 - -### Minor Changes - -- e406d69: refractor: update output json format - - **This is a breaking change** - - Before this change the style info is dump in Javascript code. - - After this change the style info will be pure JSON data. - - Now we're using the css-serializer tool's output only. If you're using plugins for it, now they're enabled. - -### Patch Changes - -- Updated dependencies [e406d69] - - @lynx-js/web-style-transformer@0.2.0 - - @lynx-js/web-constants@0.6.0 - -## 0.5.1 - -### Patch Changes - -- b5ef20e: feat: updateData should also call `updatePage` in main-thread. -- Updated dependencies [c49b1fb] -- Updated dependencies [b5ef20e] - - @lynx-js/web-constants@0.5.1 - -## 0.5.0 - -### Minor Changes - -- 7b84edf: feat: introduce new output chunk format - - **This is a breaking change** - - After this commit, we new introduce a new output format for web platform. - - This new output file is a JSON file, includes all essential info. - - Now we'll add the chunk global scope wrapper on runtime, this will help us to provide a better backward compatibility. - - Also we have a intergrated output file cache for one session. - - Now your `output.filename` will work. - - The split-chunk feature has been temporary removed until the rspeedy team supports this feature for us. - -### Patch Changes - -- Updated dependencies [3050faf] -- Updated dependencies [7b84edf] - - @lynx-js/web-constants@0.5.0 - -## 0.4.2 - -### Patch Changes - -- Updated dependencies [168b4fa] - - @lynx-js/web-constants@0.4.2 - -## 0.4.1 - -### Patch Changes - -- 27c0e6e: feat(web): infer the cssId if parent component unique id is set - - ``` - (The following info is provided for DSL maintainers) - - - the 'infer' operation only happens on fiber element creating, changing the parent's cssId, changing children's parent component unique id will cause an issue - - __SetCSSId will be called for setting inferred cssId value. Runtime could use the same `__SetCSSId` to overwrite this value. - - cssId: `0` will be treated as an void value - ``` - -- 500057e: fix: `__GetElementUniqueID` return -1 for illegal param - - (Only DSL developers need to care this) - - - @lynx-js/web-constants@0.4.1 - -## 0.4.0 - -### Patch Changes - -- @lynx-js/web-constants@0.4.0 - -## 0.3.1 - -### Patch Changes - -- @lynx-js/web-constants@0.3.1 - -## 0.3.0 - -### Patch Changes - -- d255d24: fix: add attribute.style of ElementThreadElement, before it is always null. -- 6e873bc: fix: incorrect parent component id value on publishComponentEvent -- Updated dependencies [6e873bc] -- Updated dependencies [267c935] - - @lynx-js/web-constants@0.3.0 - -## 0.2.0 - -### Patch Changes - -- @lynx-js/web-constants@0.2.0 - -## 0.1.0 - -### Minor Changes - -- 2973ba5: feat: move lynx main-thread to web worker - - Move The Mainthread of Lynx to a web worker. - - This helps the performance. - -- f900b75: refactor: do not use inline style to apply css-in-js styles - - Now you will see your css-in-js styles applied under a `[lynx-unique-id=""]` selector. - -- c04669b: feat: migrate to new TemplatePlugin hooks - -### Patch Changes - -- e170052: fix: \_\_ReplaceElements may crash if the newChild is not an array -- Updated dependencies [2973ba5] -- Updated dependencies [f28650f] -- Updated dependencies [39cf3ae] -- Updated dependencies [6e003e8] - - @lynx-js/web-constants@0.1.0 - - @lynx-js/web-style-transformer@0.1.0 diff --git a/packages/web-platform/web-mainthread-apis/Cargo.toml b/packages/web-platform/web-mainthread-apis/Cargo.toml deleted file mode 100644 index 8bfda175fe..0000000000 --- a/packages/web-platform/web-mainthread-apis/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "web-mainthread-apis" -version = "0.0.0" -edition = "2021" - -[lib] -crate-type = ["cdylib"] - -[dependencies] -js-sys = { workspace = true } -lazy_static = { workspace = true } -wasm-bindgen = { workspace = true } diff --git a/packages/web-platform/web-mainthread-apis/LICENSE.txt b/packages/web-platform/web-mainthread-apis/LICENSE.txt deleted file mode 100644 index ce66b4c3a7..0000000000 --- a/packages/web-platform/web-mainthread-apis/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2023-2024 The Lynx Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/web-platform/web-mainthread-apis/Notice.txt b/packages/web-platform/web-mainthread-apis/Notice.txt deleted file mode 100644 index 3ff8881bfd..0000000000 --- a/packages/web-platform/web-mainthread-apis/Notice.txt +++ /dev/null @@ -1 +0,0 @@ -Copyright 2023-2024 The Lynx Authors. All rights reserved. \ No newline at end of file diff --git a/packages/web-platform/web-mainthread-apis/README.md b/packages/web-platform/web-mainthread-apis/README.md deleted file mode 100644 index 93bc3ed501..0000000000 --- a/packages/web-platform/web-mainthread-apis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @lynx-js/web-mainthread-apis - -main-thread apis diff --git a/packages/web-platform/web-mainthread-apis/package.json b/packages/web-platform/web-mainthread-apis/package.json deleted file mode 100644 index 53a9e7acf1..0000000000 --- a/packages/web-platform/web-mainthread-apis/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "@lynx-js/web-mainthread-apis", - "version": "0.19.9", - "private": false, - "description": "", - "keywords": [], - "repository": { - "type": "git", - "url": "https://github.com/lynx-family/lynx-stack.git", - "directory": "packages/web-platform/web-mainthread-apis" - }, - "license": "Apache-2.0", - "type": "module", - "main": "dist/index.js", - "typings": "dist/index.d.ts", - "files": [ - "dist", - "binary", - "wasm", - "!dist/**/*.js.map", - "!binary/**/*.js.map", - "LICENSE.txt", - "Notice.txt", - "CHANGELOG.md", - "README.md", - "**/*.css" - ], - "scripts": { - "build": "node scripts/build.js" - }, - "dependencies": { - "@lynx-js/web-constants": "workspace:*", - "hyphenate-style-name": "^1.1.0", - "wasm-feature-detect": "^1.8.0" - }, - "devDependencies": { - "binaryen": "^125.0.0", - "fb-dotslash": "^0.5.8" - } -} diff --git a/packages/web-platform/web-mainthread-apis/scripts/build.js b/packages/web-platform/web-mainthread-apis/scripts/build.js deleted file mode 100644 index fb56885900..0000000000 --- a/packages/web-platform/web-mainthread-apis/scripts/build.js +++ /dev/null @@ -1,86 +0,0 @@ -// run command and dump output -import { execSync } from 'child_process'; -import path from 'path'; -import { fileURLToPath } from 'url'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const packageRoot = path.join(__dirname, '..'); -const cargoOutput = path.join( - '..', - '..', - '..', - 'target', - 'wasm32-unknown-unknown', - 'release', - 'web_mainthread_apis.wasm', -); -const cargoOutputDebug = path.join( - '..', - '..', - '..', - 'target', - 'wasm32-unknown-unknown', - 'debug', - 'web_mainthread_apis.wasm', -); -// build the standard wasm package - -function build(release, rustFlags, outName, optimizeArgs, rust_features) { - execSync( - `cargo build ${ - release ? '--release' : '' - } --target wasm32-unknown-unknown ${ - rust_features ? `--features ${rust_features}` : '' - }`, - { - cwd: packageRoot, - stdio: 'inherit', - env: { ...process.env, RUSTFLAGS: rustFlags }, - shell: true, - }, - ); - execSync( - `pnpm exec dotslash ./scripts/wasm-bindgen ${ - release ? '' : '--keep-debug' - } --out-dir binary --target bundler --out-name ${outName} ${ - release ? cargoOutput : cargoOutputDebug - }`, - { cwd: packageRoot, stdio: 'inherit' }, - ); - if (release) { - execSync( - `pnpm wasm-opt --enable-bulk-memory ${optimizeArgs} ./binary/${outName}_bg.wasm -o ./binary/${outName}_bg.wasm`, - { cwd: packageRoot, stdio: 'inherit' }, - ); - } -} -/** - * https://webassembly.org/features/ - * https://doc.rust-lang.org/reference/attributes/codegen.html#wasm32-or-wasm64 - * https://doc.rust-lang.org/rustc/platform-support/wasm32-unknown-unknown.html - * feature | chrome | firefox | safari - * bulk-memory| 75 | 79 | 15 - * sign-ext | 74 | 62 | 14.1 - * simd | 91 | 89 | 16.4 - * ref-types | 96 | 79 | 15 - * multivalue | 85 | 78 | 13.1 - * nontrapping - * float- - * to-int | 75 | 64 | 15 - * mutable- - * globals | 74 | 61 | 13.1 - */ - -build( - true, - '-C target_feature=+bulk-memory,+sign-ext,+simd128,+reference-types,+nontrapping-fptoint,+mutable-globals', - 'standard', - '--enable-bulk-memory-opt --enable-sign-ext --enable-simd --enable-reference-types --enable-nontrapping-float-to-int --enable-mutable-globals', -); -build( - true, - '-C target_feature=+bulk-memory -C strip=symbols', - 'legacy', - '', -); -build(false, '', 'debug', ''); diff --git a/packages/web-platform/web-mainthread-apis/scripts/dotslash-config.json b/packages/web-platform/web-mainthread-apis/scripts/dotslash-config.json deleted file mode 100644 index d66823e888..0000000000 --- a/packages/web-platform/web-mainthread-apis/scripts/dotslash-config.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "outputs": { - "wasm-bindgen": { - "platforms": { - "macos-x86_64": { - "regex": ".*-x86_64-apple-darwin", - "path": "wasm-bindgen-{tag}-x86_64-apple-darwin/wasm-bindgen" - }, - "macos-aarch64": { - "regex": ".*-aarch64-apple-darwin", - "path": "wasm-bindgen-{tag}-aarch64-apple-darwin/wasm-bindgen" - }, - "linux-x86_64": { - "regex": ".*-x86_64-unknown-linux-musl", - "path": "wasm-bindgen-{tag}-x86_64-unknown-linux-musl/wasm-bindgen" - }, - "linux-aarch64": { - "regex": ".*-aarch64-unknown-linux-gnu", - "path": "wasm-bindgen-{tag}-aarch64-unknown-linux-gnu/wasm-bindgen" - }, - "windows-x86_64": { - "regex": ".*-x86_64-pc-windows-msvc", - "path": "wasm-bindgen-{tag}-x86_64-pc-windows-msvc/wasm-bindgen.exe" - } - } - } - } -} diff --git a/packages/web-platform/web-mainthread-apis/scripts/wasm-bindgen b/packages/web-platform/web-mainthread-apis/scripts/wasm-bindgen deleted file mode 100755 index 79aa4dd41e..0000000000 --- a/packages/web-platform/web-mainthread-apis/scripts/wasm-bindgen +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env dotslash - -// AUTO GENERATED. DO NOT MODIFY - -// This is generated with -// `uv run https://gist.githubusercontent.com/colinaaa/090b404e09f6628be90076765b4d455d/raw/dotslash-publish-release.py --config ./scripts/dotslash-config.json --local-config --repo wasm-bindgen/wasm-bindgen --output ./scripts --tag 0.2.108` - -{ - "name": "wasm-bindgen", - "platforms": { - "macos-x86_64": { - "size": 8247951, - "hash": "blake3", - "digest": "19e0b44c9f35d26efafe97b88589a1ef72ad0d331613956f67b4749cf667eb65", - "format": "tar.gz", - "path": "wasm-bindgen-0.2.108-x86_64-apple-darwin/wasm-bindgen", - "providers": [ - { - "url": "https://github.com/wasm-bindgen/wasm-bindgen/releases/download/0.2.108/wasm-bindgen-0.2.108-x86_64-apple-darwin.tar.gz" - }, - { - "type": "github-release", - "repo": "https://github.com/wasm-bindgen/wasm-bindgen", - "tag": "0.2.108", - "name": "wasm-bindgen-0.2.108-x86_64-apple-darwin.tar.gz" - } - ] - }, - "macos-aarch64": { - "size": 7768678, - "hash": "blake3", - "digest": "f2c1d62addbe2f7844a15ea43095bcf509aa55b086bfb98133d578b6c9fb431c", - "format": "tar.gz", - "path": "wasm-bindgen-0.2.108-aarch64-apple-darwin/wasm-bindgen", - "providers": [ - { - "url": "https://github.com/wasm-bindgen/wasm-bindgen/releases/download/0.2.108/wasm-bindgen-0.2.108-aarch64-apple-darwin.tar.gz" - }, - { - "type": "github-release", - "repo": "https://github.com/wasm-bindgen/wasm-bindgen", - "tag": "0.2.108", - "name": "wasm-bindgen-0.2.108-aarch64-apple-darwin.tar.gz" - } - ] - }, - "linux-x86_64": { - "size": 11183940, - "hash": "blake3", - "digest": "867164429f210c2a84f604792ac2f4f668ae195c148b6e269cae7a770c0e96ca", - "format": "tar.gz", - "path": "wasm-bindgen-0.2.108-x86_64-unknown-linux-musl/wasm-bindgen", - "providers": [ - { - "url": "https://github.com/wasm-bindgen/wasm-bindgen/releases/download/0.2.108/wasm-bindgen-0.2.108-x86_64-unknown-linux-musl.tar.gz" - }, - { - "type": "github-release", - "repo": "https://github.com/wasm-bindgen/wasm-bindgen", - "tag": "0.2.108", - "name": "wasm-bindgen-0.2.108-x86_64-unknown-linux-musl.tar.gz" - } - ] - }, - "linux-aarch64": { - "size": 11036303, - "hash": "blake3", - "digest": "a95fafebe3696e73444cd0e11e5e4b61bfebc35a8dd603cb24dba37c3249ddb4", - "format": "tar.gz", - "path": "wasm-bindgen-0.2.108-aarch64-unknown-linux-gnu/wasm-bindgen", - "providers": [ - { - "url": "https://github.com/wasm-bindgen/wasm-bindgen/releases/download/0.2.108/wasm-bindgen-0.2.108-aarch64-unknown-linux-gnu.tar.gz" - }, - { - "type": "github-release", - "repo": "https://github.com/wasm-bindgen/wasm-bindgen", - "tag": "0.2.108", - "name": "wasm-bindgen-0.2.108-aarch64-unknown-linux-gnu.tar.gz" - } - ] - }, - "windows-x86_64": { - "size": 7338345, - "hash": "blake3", - "digest": "dbb4847d2eff71578cb88174671ca7f74b31d5c32be4fde3e40823856433f597", - "format": "tar.gz", - "path": "wasm-bindgen-0.2.108-x86_64-pc-windows-msvc/wasm-bindgen.exe", - "providers": [ - { - "url": "https://github.com/wasm-bindgen/wasm-bindgen/releases/download/0.2.108/wasm-bindgen-0.2.108-x86_64-pc-windows-msvc.tar.gz" - }, - { - "type": "github-release", - "repo": "https://github.com/wasm-bindgen/wasm-bindgen", - "tag": "0.2.108", - "name": "wasm-bindgen-0.2.108-x86_64-pc-windows-msvc.tar.gz" - } - ] - } - } -} diff --git a/packages/web-platform/web-mainthread-apis/src/lib.rs b/packages/web-platform/web-mainthread-apis/src/lib.rs deleted file mode 100644 index d6420bc3c1..0000000000 --- a/packages/web-platform/web-mainthread-apis/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ -mod style; diff --git a/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/LICENSE b/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/LICENSE deleted file mode 100644 index 13e7aa8438..0000000000 --- a/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2016-2024 by Roman Dvornov - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/char_code_definitions.rs b/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/char_code_definitions.rs deleted file mode 100644 index 10ddbc8318..0000000000 --- a/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/char_code_definitions.rs +++ /dev/null @@ -1,198 +0,0 @@ -pub const EOF_CATEGORY: u8 = 0x80; -pub const WHITE_SPACE_CATEGORY: u8 = 0x82; -pub const DIGIT_CATEGORY: u8 = 0x83; -pub const NAME_START_CATEGORY: u8 = 0x84; -pub const NON_PRINTABLE_CATEGORY: u8 = 0x85; - -// Character category constants - -// Public character check macros (mirroring C macros) - -// A code point between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). -#[inline(always)] -pub const fn is_digit(code: u8) -> bool { - (code >= 0x30_u8) && (code <= 0x39_u8) -} - -// A digit, or a code point between U+0041 (A) and U+0046 (F), -// or a code point between U+0061 (a) and U+0066 (f). -#[inline(always)] -pub const fn is_hex_digit(code: u8) -> bool { - is_digit(code) - || ((code >= 0x41) && (code <= 0x46)) // A-F - || ((code >= 0x61) && (code <= 0x66)) // a-f -} - -// A code point between U+0041 (A) and U+005A (Z). -#[inline(always)] -pub const fn is_uppercase_letter(code: u8) -> bool { - (code >= 0x41) && (code <= 0x5A) -} - -// A code point between U+0061 (a) and U+007A (z). -#[inline(always)] -pub const fn is_lowercase_letter(code: u8) -> bool { - (code >= 0x61) && (code <= 0x7A) -} - -// An uppercase letter or a lowercase letter. -#[inline(always)] -pub const fn is_letter(code: u8) -> bool { - is_uppercase_letter(code) || is_lowercase_letter(code) -} - -// A code point with a value equal to or greater than U+0080 . -#[inline(always)] -pub const fn is_non_ascii(code: u8) -> bool { - code >= 0x80 -} - -// A letter, a non-ASCII code point, or U+005F LOW LINE (_). -#[inline(always)] -pub const fn is_name_start(code: u8) -> bool { - is_letter(code) || is_non_ascii(code) || code == 0x5F -} - -// A name-start code point, a digit, or U+002D HYPHEN-MINUS (-). -#[inline(always)] -pub const fn is_name(code: u8) -> bool { - is_name_start(code) || is_digit(code) || code == 0x2D -} - -// A code point between U+0000 NULL and U+0008 BACKSPACE, or U+000B LINE TABULATION, -// or a code point between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, or U+007F DELETE. -#[inline(always)] -pub const fn is_non_printable(code: u8) -> bool { - (code <= 0x08) || (code == 0x0B) || ((code >= 0x0E) && (code <= 0x1F)) || (code == 0x7F) -} - -// U+000A LINE FEED. (Also U+000D CR and U+000C FF for preprocessing equivalence) -#[inline(always)] -pub const fn is_newline(code: u8) -> bool { - (code == 0x0A_u8) || (code == 0x0D_u8) || (code == 0x0C_u8) -} - -// A newline, U+0009 CHARACTER TABULATION, or U+0020 SPACE. -#[inline(always)] -pub const fn is_white_space(code: u8) -> bool { - is_newline(code) || code == 0x09_u8 || code == 0x20_u8 -} - -// Check if two code points are a valid escape. -// If the first code point is not U+005C REVERSE SOLIDUS (\), return false. -// Otherwise, if the second code point is a newline or EOF (0), return false. -#[inline(always)] -pub const fn is_valid_escape(first: u8, second: u8) -> bool { - (first == 0x5C) && !is_newline(second) && (second != 0) -} - -// Check for Byte Order Mark -#[inline(always)] -pub fn get_start_offset(source: &[u8]) -> usize { - let bom = "\u{FEFF}".as_bytes(); - let bom_le = "\u{FFFE}".as_bytes(); - if bom.len() < source.len() - && (&source[0..bom.len()] == bom || &source[0..bom_le.len()] == bom_le) - { - 3usize // BOM found - } else { - 0usize - } -} - -// Check if three code points would start an identifier. -#[inline(always)] -pub fn is_identifier_start(first: u8, second: u8, third: u8) -> bool { - /* Look at the first code point: - U+002D HYPHEN-MINUS */ - if first == 0x2D { - /* If the second code point is a name-start code point, return true. */ - /* or the second and third code points are a valid escape, return true. Otherwise, return false. */ - is_name_start(second) || (second == 0x2D) || is_valid_escape(second, third) - /* name-start code point */ - } else if is_name_start(first) { - true - /*U+005C REVERSE SOLIDUS (\)*/ - } else if first == 0x5C { - /* If the second code point is a name-start code point, return true. Otherwise, return false.*/ - is_valid_escape(first, second) - } else { - false - } -} - -// Check if three code points would start a number. -#[inline(always)] -pub fn is_number_start(first: u8, second: u8, third: u8) -> bool { - if first == 0x2B || first == 0x2D { - // U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-) - if is_digit(second) { - true - } else { - (second == 0x2E) && is_digit(third) // U+002E FULL STOP (.) - } - } else if first == 0x2E { - // U+002E FULL STOP (.) - is_digit(second) - } else { - is_digit(first) - } -} - -// Get the category of a character code. -#[inline(always)] -pub fn char_code_category(char_code: u8) -> u8 { - match char_code { - 0 => EOF_CATEGORY, - c if c >= 0x80 => { - // For char_code >= 0x80, it's considered NameStart_Category. - // This aligns with CSS syntax where non-ASCII characters are name-start characters. - NAME_START_CATEGORY - } - c if is_white_space(c) => WHITE_SPACE_CATEGORY, - c if is_digit(c) => DIGIT_CATEGORY, - c if is_name_start(c) => NAME_START_CATEGORY, - c if is_non_printable(c) => NON_PRINTABLE_CATEGORY, - _ => char_code, - } -} - -#[inline(always)] -pub fn cmp_char( - test_str: &[u8], - test_str_length: usize, - offset: usize, - reference_code: u8, -) -> usize { - if offset < test_str_length { - let code = test_str[offset]; - // code.toLowerCase() for A..Z - if code == reference_code || (is_uppercase_letter(code) && ((code | 32) == reference_code)) { - 1usize //true - } else { - 0usize //false - } - } else { - 0usize //false - } -} - -#[inline(always)] -pub fn get_char_code(source: &[u8], offset: usize) -> u8 { - if offset < source.len() { - source[offset] - } else { - 0 // EOF - } -} - -#[inline(always)] -pub fn get_new_line_length(source: &[u8], offset: usize, code: u8) -> usize { - if code == 13 /* \r */ && get_char_code(source, offset + 1) == 10 - /* \n */ - { - 2 - } else { - 1 - } -} diff --git a/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/mod.rs b/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/mod.rs deleted file mode 100644 index 06e20615df..0000000000 --- a/packages/web-platform/web-mainthread-apis/src/style/inline_style_parser/mod.rs +++ /dev/null @@ -1,1243 +0,0 @@ -#![allow(clippy::manual_range_contains)] -pub mod char_code_definitions; -pub mod parse_inline_style; -mod tokenize; -mod types; -mod utils; - -#[cfg(test)] -mod tests { - use super::*; - use parse_inline_style::{parse_inline_style, Transformer}; - - #[derive(PartialEq)] - struct Declaration { - name_start: usize, - name_end: usize, - value_start: usize, - value_end: usize, - is_important: bool, - } - - struct TestTransformer { - declarations: Vec, - } - - impl TestTransformer { - fn new() -> Self { - Self { - declarations: Vec::new(), - } - } - - fn get_name<'a>(&self, source: &'a str, decl: &Declaration) -> &'a str { - &source[decl.name_start..decl.name_end] - } - - fn get_value<'a>(&self, source: &'a str, decl: &Declaration) -> &'a str { - &source[decl.value_start..decl.value_end] - } - } - - impl Transformer for TestTransformer { - fn on_declaration( - &mut self, - name_start: usize, - name_end: usize, - value_start: usize, - value_end: usize, - is_important: bool, - ) { - self.declarations.push(Declaration { - name_start, - name_end, - value_start, - value_end, - is_important, - }); - } - } - - fn parse_css(css: &str) -> (TestTransformer, &str) { - let source = css.as_bytes(); - let mut transformer = TestTransformer::new(); - parse_inline_style(source, &mut transformer); - (transformer, css) - } - - #[test] - fn test_basic_declaration() { - let (transformer, source) = parse_css("color: red;"); - - assert_eq!(transformer.declarations.len(), 1); - let decl = &transformer.declarations[0]; - assert_eq!(transformer.get_name(source, decl), "color"); - assert_eq!(transformer.get_value(source, decl), "red"); - assert!(!decl.is_important); - } - - #[test] - fn test_important_declaration() { - let (transformer, source) = parse_css("color: red !important;"); - - assert_eq!(transformer.declarations.len(), 1); - let decl = &transformer.declarations[0]; - assert_eq!(transformer.get_name(source, decl), "color"); - assert_eq!(transformer.get_value(source, decl), "red"); - assert!(decl.is_important); - } - - #[test] - fn test_multiple_declarations() { - let (transformer, source) = parse_css("color: red; margin: 10px; padding: 5px !important;"); - - assert_eq!(transformer.declarations.len(), 3); - - assert_eq!( - transformer.get_name(source, &transformer.declarations[0]), - "color" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red" - ); - assert!(!transformer.declarations[0].is_important); - - assert_eq!( - transformer.get_name(source, &transformer.declarations[1]), - "margin" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[1]), - "10px" - ); - assert!(!transformer.declarations[1].is_important); - - assert_eq!( - transformer.get_name(source, &transformer.declarations[2]), - "padding" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[2]), - "5px" - ); - assert!(transformer.declarations[2].is_important); - } - - #[test] - fn test_whitespace_handling() { - let (transformer, source) = parse_css(" color : red ; margin : 10px ; "); - - assert_eq!(transformer.declarations.len(), 2); - assert_eq!( - transformer.get_name(source, &transformer.declarations[0]), - "color" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red" - ); - assert_eq!( - transformer.get_name(source, &transformer.declarations[1]), - "margin" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[1]), - "10px" - ); - } - - #[test] - fn test_missing_semicolon() { - let (transformer, source) = parse_css("color: red"); - - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_name(source, &transformer.declarations[0]), - "color" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red" - ); - } - - #[test] - fn test_bad_declarations() { - // Invalid: missing colon - let (transformer, _) = parse_css("color red;"); - assert_eq!(transformer.declarations.len(), 0); - - // Invalid: missing value - let (transformer, _) = parse_css("color:;"); - assert_eq!(transformer.declarations.len(), 0); - - // Invalid: starting with non-ident - let (transformer, _) = parse_css("123: red;"); - assert_eq!(transformer.declarations.len(), 0); - } - - #[test] - fn test_complex_values() { - let (transformer, source) = parse_css("background: url(image.png) no-repeat center;"); - - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_name(source, &transformer.declarations[0]), - "background" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "url(image.png) no-repeat center" - ); - } - - #[test] - fn test_empty_string() { - let (transformer, _) = parse_css(""); - assert_eq!(transformer.declarations.len(), 0); - } - - #[test] - fn test_only_whitespace() { - let (transformer, _) = parse_css(" \t\n "); - assert_eq!(transformer.declarations.len(), 0); - } - - #[test] - fn test_hyphenated_properties() { - let (transformer, source) = parse_css("font-size: 14px; background-color: blue;"); - - assert_eq!(transformer.declarations.len(), 2); - assert_eq!( - transformer.get_name(source, &transformer.declarations[0]), - "font-size" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "14px" - ); - assert_eq!( - transformer.get_name(source, &transformer.declarations[1]), - "background-color" - ); - assert_eq!( - transformer.get_value(source, &transformer.declarations[1]), - "blue" - ); - } - - // Additional tests to improve coverage - - #[test] - fn test_parser_edge_cases() { - // Test consecutive semicolons - let (transformer, _) = parse_css("color: red;;"); - assert_eq!(transformer.declarations.len(), 1); - - // Test missing value with semicolon - let (transformer, _) = parse_css("color:;"); - assert_eq!(transformer.declarations.len(), 0); - - // Test bad declaration with brackets - let (transformer, _) = parse_css("color: red{};"); - assert_eq!(transformer.declarations.len(), 0); - - // Test values with brackets - let (transformer, source) = parse_css("background: url(test.png);"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "url(test.png)" - ); - } - - #[test] - fn test_important_edge_cases() { - // Important with space before ! - let (transformer, source) = parse_css("color: red !important;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red" - ); - assert!(transformer.declarations[0].is_important); - - // Important with extra spaces - the parser includes the spaces in the value but doesn't recognize as important - let (transformer, source) = parse_css("color: red ! important ;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red ! important" - ); - assert!(!transformer.declarations[0].is_important); // Extra space breaks the important detection - - // Important without space - this actually does get recognized as important - let (transformer, source) = parse_css("color: red!important;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red" - ); - assert!(transformer.declarations[0].is_important); // Actually recognized as important - - // Debug: let's see what happens with extra content after !important - let (transformer, source) = parse_css("color: red !important extra;"); - assert_eq!(transformer.declarations.len(), 1); - // The parser actually includes extra content but still marks as important - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red !important extra" - ); - assert!(transformer.declarations[0].is_important); - } - - #[test] - fn test_special_characters_and_escapes() { - // Test escaped characters in property names - let css = "\\62 order: red;"; // \62 = 'b', so this should be "border" - let (transformer, _source) = parse_css(css); - assert_eq!(transformer.declarations.len(), 1); - - // Test unicode characters - let (transformer, source) = parse_css("color: #fff;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "#fff" - ); - - // Test with newlines - let (transformer, source) = parse_css("color:\nred;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red" - ); - } - - #[test] - fn test_numeric_values() { - // Test integer values - let (transformer, source) = parse_css("z-index: 10;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "10" - ); - - // Test decimal values - let (transformer, source) = parse_css("opacity: 0.5;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "0.5" - ); - - // Test negative values - let (transformer, source) = parse_css("margin: -10px;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "-10px" - ); - - // Test percentage values - let (transformer, source) = parse_css("width: 100%;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "100%" - ); - } - - #[test] - fn test_string_values() { - // Test quoted strings - let (transformer, source) = parse_css("content: \"hello world\";"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "\"hello world\"" - ); - - // Test single quoted strings - let (transformer, source) = parse_css("content: 'hello world';"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "'hello world'" - ); - - // Test strings with escapes - let (transformer, _source) = parse_css("content: \"hello\\\"world\";"); - assert_eq!(transformer.declarations.len(), 1); - } - - #[test] - fn test_url_values() { - // Test unquoted URL - let (transformer, source) = parse_css("background: url(test.png);"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "url(test.png)" - ); - - // Test quoted URL - let (transformer, source) = parse_css("background: url(\"test.png\");"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "url(\"test.png\")" - ); - - // Test URL with spaces - let (transformer, source) = parse_css("background: url( test.png );"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "url( test.png )" - ); - } - - #[test] - fn test_function_values() { - // Test calc function - let (transformer, source) = parse_css("width: calc(100% - 20px);"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "calc(100% - 20px)" - ); - - // Test rgb function - let (transformer, source) = parse_css("color: rgb(255, 0, 0);"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "rgb(255, 0, 0)" - ); - - // Test nested functions - let (transformer, source) = parse_css("transform: translateX(calc(100% + 10px));"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "translateX(calc(100% + 10px))" - ); - } - - #[test] - fn test_comments() { - // Test comments in values - these should be tokenized but ignored in parsing - let (transformer, source) = parse_css("color: red /* comment */;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red /* comment */" - ); - - // Test comment between declarations - let (transformer, source) = parse_css("color: red; /* comment */ margin: 10px;"); - assert_eq!(transformer.declarations.len(), 2); - assert_eq!( - transformer.get_name(source, &transformer.declarations[0]), - "color" - ); - assert_eq!( - transformer.get_name(source, &transformer.declarations[1]), - "margin" - ); - } - - #[test] - fn test_malformed_css() { - // Test invalid characters - let (transformer, _) = parse_css("color: red;; invalid: ;;"); - // This should parse "color: red" successfully, others may fail - assert_eq!(transformer.declarations.len(), 1); // At least one valid declaration - } - - #[test] - fn test_whitespace_variants() { - // Test different whitespace characters - let css = "color:\t\nred\r\n;"; - let (transformer, source) = parse_css(css); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red" - ); - - // Test tabs and multiple spaces - let (transformer, source) = parse_css("color: \t\t red \t\t;"); - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_value(source, &transformer.declarations[0]), - "red" - ); - } - - #[test] - fn test_bom_handling() { - // Test with Byte Order Mark - let css_with_bom = "\u{FEFF}color: red;"; - let source = css_with_bom.as_bytes(); - let mut transformer = TestTransformer::new(); - parse_inline_style(source, &mut transformer); - - assert_eq!(transformer.declarations.len(), 1); - assert_eq!( - transformer.get_name(css_with_bom, &transformer.declarations[0]), - "color" - ); - assert_eq!( - transformer.get_value(css_with_bom, &transformer.declarations[0]), - "red" - ); - } - - // Tests for utility functions and character definitions - - #[test] - fn test_character_classification_macros() { - use super::char_code_definitions::*; - - // Test digit classification - assert!(is_digit(b'0')); - assert!(is_digit(b'9')); - assert!(!is_digit(b'a')); - - // Test hex digit classification - assert!(is_hex_digit(b'0')); - assert!(is_hex_digit(b'A')); - assert!(is_hex_digit(b'f')); - assert!(!is_hex_digit(b'g')); - - // Test letter classification - assert!(is_uppercase_letter(b'A')); - assert!(is_uppercase_letter(b'Z')); - assert!(!is_uppercase_letter(b'a')); - - assert!(is_lowercase_letter(b'a')); - assert!(is_lowercase_letter(b'z')); - assert!(!is_lowercase_letter(b'A')); - - assert!(is_letter(b'A')); - assert!(is_letter(b'z')); - assert!(!is_letter(b'1')); - - // Test non-ASCII - assert!(is_non_ascii(0x0080)); - assert!(!is_non_ascii(0x007F)); - - // Test name-start - assert!(is_name_start(b'a')); - assert!(is_name_start(b'_')); - assert!(is_name_start(0x0080)); - assert!(!is_name_start(b'1')); - - // Test name - assert!(is_name(b'a')); - assert!(is_name(b'1')); - assert!(is_name(b'-')); - assert!(!is_name(b' ')); - - // Test non-printable - assert!(is_non_printable(0x0008)); - assert!(is_non_printable(0x000B)); - assert!(is_non_printable(0x007F)); - assert!(!is_non_printable(0x0020)); - - // Test newline - assert!(is_newline(0x000A)); // LF - assert!(is_newline(0x000D)); // CR - assert!(is_newline(0x000C)); // FF - assert!(!is_newline(0x0020)); // SPACE - - // Test whitespace - assert!(is_white_space(0x0020)); // SPACE - assert!(is_white_space(0x0009)); // TAB - assert!(is_white_space(0x000A)); // LF - assert!(!is_white_space(0x0041)); // 'A' - - // Test valid escape - assert!(is_valid_escape(0x005C, 0x0041)); // \A - assert!(!is_valid_escape(0x005C, 0x000A)); // \newline - assert!(!is_valid_escape(0x0041, 0x0041)); // AA - - // Test identifier start - assert!(is_identifier_start(0x0041, 0x0042, 0x0043)); // ABC - assert!(is_identifier_start(0x002D, 0x0041, 0x0042)); // -AB - assert!(is_identifier_start(0x002D, 0x002D, 0x0041)); // --A - assert!(is_identifier_start(0x005C, 0x0041, 0x0042)); // \AB - assert!(!is_identifier_start(0x0031, 0x0032, 0x0033)); // 123 - - // Test number start - assert!(is_number_start(0x0031, 0x0032, 0x0033)); // 123 - assert!(is_number_start(0x002B, 0x0031, 0x0032)); // +12 - assert!(is_number_start(0x002D, 0x0031, 0x0032)); // -12 - assert!(is_number_start(0x002E, 0x0031, 0x0032)); // .12 - assert!(is_number_start(0x002B, 0x002E, 0x0031)); // +.1 - assert!(!is_number_start(0x0041, 0x0042, 0x0043)); // ABC - } - - #[test] - fn test_char_code_category() { - use super::char_code_definitions::*; - - // Test basic categories - assert_eq!(char_code_category(0x0020), WHITE_SPACE_CATEGORY); // SPACE - assert_eq!(char_code_category(0x0031), DIGIT_CATEGORY); // '1' - assert_eq!(char_code_category(0x0041), NAME_START_CATEGORY); // 'A' - assert_eq!(char_code_category(0x0008), NON_PRINTABLE_CATEGORY); - assert_eq!(char_code_category(0x0080), NAME_START_CATEGORY); // non-ASCII - - // Test specific character codes - assert_eq!(char_code_category(0x0022), 0x0022); // quote - assert_eq!(char_code_category(0x0023), 0x0023); // hash - assert_eq!(char_code_category(0x0028), 0x0028); // left paren - } - - #[test] - fn test_utility_functions() { - use super::utils::*; - - // Test cmp_str function - let test_str: &[u8] = b"hello"; - let reference: &[u8] = b"hello"; - assert!(cmp_str(test_str, 0, 5, reference)); - - let reference2: &[u8] = b"world"; - assert!(!cmp_str(test_str, 0, 5, reference2)); - - // Test case insensitive comparison - let test_str_upper = b"HELLO"; - let reference_lower = b"hello"; - assert!(cmp_str(test_str_upper, 0, 5, reference_lower)); - - // Test partial string comparison - let test_str_long = b"hello world"; - assert!(cmp_str(test_str_long, 0, 5, reference)); - let world_ref = b"world"; - assert!(cmp_str(test_str_long, 6, 11, world_ref)); - - // Test out of bounds - assert!(!cmp_str(test_str, 0, 10, reference)); // end > length - assert!(!cmp_str(test_str, 0, 3, reference)); // different lengths - - // Test find_white_space_end - let whitespace_str = b" hello"; - assert_eq!(find_white_space_end(whitespace_str, 0), 3); - - let no_whitespace = b"hello"; - assert_eq!(find_white_space_end(no_whitespace, 0), 0); - - let all_whitespace = b" "; - assert_eq!(find_white_space_end(all_whitespace, 0), 3); - - // Test find_decimal_number_end - let number_str = b"123abc"; - assert_eq!(find_decimal_number_end(number_str, 0), 3); - - let no_number = b"abc123"; - assert_eq!(find_decimal_number_end(no_number, 0), 0); - - let all_numbers = b"123456"; - assert_eq!(find_decimal_number_end(all_numbers, 0), 6); - - // Test consume_number - let simple_number = b"123"; - assert_eq!(consume_number(simple_number, 0), 3); - - let signed_number = b"+123"; - assert_eq!(consume_number(signed_number, 0), 4); - - let negative_number = b"-123"; - assert_eq!(consume_number(negative_number, 0), 4); - - let decimal_number: &[u8] = "123.456".as_bytes(); - assert_eq!(consume_number(decimal_number, 0), 7); - - let scientific_number: &[u8] = "123e456".as_bytes(); - assert_eq!(consume_number(scientific_number, 0), 7); - - let scientific_signed: &[u8] = "123e+456".as_bytes(); - assert_eq!(consume_number(scientific_signed, 0), 8); - - let scientific_negative: &[u8] = "123e-456".as_bytes(); - assert_eq!(consume_number(scientific_negative, 0), 8); - - // Test consume_name - let simple_name: &[u8] = "hello".as_bytes(); - assert_eq!(consume_name(simple_name, 0), 5); - - let hyphenated_name: &[u8] = "hello-world".as_bytes(); - assert_eq!(consume_name(hyphenated_name, 0), 11); - - let name_with_digits: &[u8] = "hello123".as_bytes(); - assert_eq!(consume_name(name_with_digits, 0), 8); - - let name_with_underscore: &[u8] = "_hello".as_bytes(); - assert_eq!(consume_name(name_with_underscore, 0), 6); - - // Test consume_escaped - let escaped_char: &[u8] = "\\41 ".as_bytes(); // \41 = 'A' - assert_eq!(consume_escaped(escaped_char, 0), 4); // includes whitespace consumption - - let escaped_simple: &[u8] = "\\A".as_bytes(); - assert_eq!(consume_escaped(escaped_simple, 0), 2); - - let escaped_hex: &[u8] = "\\41424344".as_bytes(); - assert_eq!(consume_escaped(escaped_hex, 0), 7); // max 6 hex digits after \ - - // Test consume_bad_url_remnants - let bad_url: &[u8] = "test)".as_bytes(); - assert_eq!(consume_bad_url_remnants(bad_url, 0), 5); - - let bad_url_no_close: &[u8] = "test".as_bytes(); - assert_eq!(consume_bad_url_remnants(bad_url_no_close, 0), 4); - - let bad_url_with_escape: &[u8] = "te\\)st)".as_bytes(); - assert_eq!(consume_bad_url_remnants(bad_url_with_escape, 0), 7); - } - - // Additional tests to reach 100% coverage - - #[test] - fn test_tokenizer_specific_cases() { - use super::tokenize::{self, Parser}; - - struct TokenCollector { - tokens: Vec<(u8, usize, usize)>, - } - - impl TokenCollector { - fn new() -> Self { - Self { tokens: Vec::new() } - } - } - - impl Parser for TokenCollector { - fn on_token(&mut self, token_type: u8, start: usize, end: usize) { - self.tokens.push((token_type, start, end)); - } - } - - // Test hash token with name following - let source: &[u8] = "#id".as_bytes(); - let mut collector = TokenCollector::new(); - tokenize::tokenize(source, &mut collector); - assert!(!collector.tokens.is_empty()); - - // Test hash token without name following - let source: &[u8] = "#123".as_bytes(); - let mut collector = TokenCollector::new(); - tokenize::tokenize(source, &mut collector); - assert!(!collector.tokens.is_empty()); - - // Test at-keyword token - let source: &[u8] = "@media".as_bytes(); - let mut collector = TokenCollector::new(); - tokenize::tokenize(source, &mut collector); - assert!(!collector.tokens.is_empty()); - - // Test at-keyword without identifier - let source: &[u8] = "@123".as_bytes(); - let mut collector = TokenCollector::new(); - tokenize::tokenize(source, &mut collector); - assert!(!collector.tokens.is_empty()); - - // Test escaped identifier - let source: &[u8] = "\\61 bc".as_bytes(); // \61 = 'a', so "abc" - let mut collector = TokenCollector::new(); - tokenize::tokenize(source, &mut collector); - assert!(!collector.tokens.is_empty()); - - // Test invalid escape - let source: &[u8] = "\\".as_bytes(); - let mut collector = TokenCollector::new(); - tokenize::tokenize(source, &mut collector); - assert!(!collector.tokens.is_empty()); - - // Test delim tokens - let source: &[u8] = "!@#$%^&*".as_bytes(); - let mut collector = TokenCollector::new(); - tokenize::tokenize(source, &mut collector); - assert!(!collector.tokens.is_empty()); - - // Test CDC token - let source: &[u8] = "-->".as_bytes(); - let mut collector = TokenCollector::new(); - tokenize::tokenize(source, &mut collector); - assert!(!collector.tokens.is_empty()); - - // Test CDO token - let source: &[u8] = " --lynx-linear-weight-sum: ; - */ - if name == "linear-weight-sum" { - result_children.push(("--lynx-linear-weight-sum", value)); - } - /* - * There is a special rule for linear-weight - * linear-weight: 0; --> do nothing - * linear-weight: --> --lynx-linear-weight: 0; - */ - if name == "linear-weight" && value != "0" { - result.push(("--lynx-linear-weight-basis", "0")); - } - (result, result_children) -} - -impl Transformer for TransformerData<'_> { - fn on_declaration( - &mut self, - name_start: usize, - name_end: usize, - value_start: usize, - value_end: usize, - is_important: bool, - ) { - let name = &self.source[name_start..name_end]; - let value = &self.source[value_start..value_end]; - let (result, result_children) = query_transform_rules(name, value); - - if !result.is_empty() { - // Append content before the declaration name - self - .transformed_source - .push_str(&self.source[self.offset..name_start]); - - for (idx, (name_transformed, value_transformed)) in result.iter().enumerate() { - // Append the declaration name and colon - self.transformed_source.push_str(&format!( - "{}:{}{}", - name_transformed, - value_transformed, - // do not append !important at the end of the last declaration - if idx < result.len() - 1 { - if is_important { - " !important;" - } else { - ";" - } - } else { - "" - } - )); - } - self.offset = value_end; - } - - if !result_children.is_empty() { - for (name_transformed, value_transformed) in result_children { - // Append the declaration name and colon - self.extra_children_styles.push_str(&format!( - "{}:{}{};", - name_transformed, - value_transformed, - if is_important { " !important" } else { "" } - )); - } - } - } -} - -pub fn transform_inline_style_string<'a>(source: &'a str) -> (String, String) { - let mut transformer: TransformerData<'a> = TransformerData { - source, - transformed_source: String::new(), - offset: 0, - extra_children_styles: String::new(), - }; - let bytes = source.as_bytes(); - parse_inline_style(bytes, &mut transformer); - transformer - .transformed_source - .push_str(&source[transformer.offset..]); - ( - transformer.transformed_source, - transformer.extra_children_styles, - ) -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn basic_one_simple_decl() { - let source = "height:1px;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "height:1px;"); - } - - #[test] - fn transform_basic() { - let source = "height:1px;display:linear;flex-direction:row;width:100px;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - "height:1px;--lynx-display-toggle:var(--lynx-display-linear);--lynx-display:linear;display:flex;--flex-direction:row;width:100px;" - ); - } - - #[test] - fn transform_with_blank() { - let source = "flex-direction:row;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex-direction:row;"); - } - - #[test] - fn test_replace_rule_display_linear_blank_after_colon() { - let source = "display: linear;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - "--lynx-display-toggle:var(--lynx-display-linear);--lynx-display:linear;display:flex;" - ); - } - - #[test] - fn test_replace_rule_linear_orientation() { - let source = "linear-direction:row;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - "--lynx-linear-orientation:horizontal;--lynx-linear-orientation-toggle:var(--lynx-linear-orientation-horizontal);" - ); - } - - #[test] - fn test_replace_rule_display_linear_important() { - let source = "display: linear !important;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - "--lynx-display-toggle:var(--lynx-display-linear) !important;--lynx-display:linear !important;display:flex !important;" - ); - } - - #[test] - fn transform_color_normal() { - let source = "color:blue;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - "--lynx-text-bg-color:initial;-webkit-background-clip:initial;background-clip:initial;color:blue;" - ); - } - - #[test] - fn transform_color_normal_with_blank() { - let source = " color : blue ;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - " --lynx-text-bg-color:initial;-webkit-background-clip:initial;background-clip:initial;color:blue ;" - ); - } - - #[test] - fn transform_color_normal_important() { - let source = " color : blue !important ;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - " --lynx-text-bg-color:initial !important;-webkit-background-clip:initial !important;background-clip:initial !important;color:blue !important ;" - ); - } - - #[test] - fn transform_color_linear_gradient() { - let source = " color : linear-gradient(pink, blue) ;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - " color:transparent;-webkit-background-clip:text;background-clip:text;--lynx-text-bg-color:linear-gradient(pink, blue) ;" - ); - } - - #[test] - fn transform_color_linear_gradient_important() { - let source = " color : linear-gradient(pink, blue) !important ;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - " color:transparent !important;-webkit-background-clip:text !important;background-clip:text !important;--lynx-text-bg-color:linear-gradient(pink, blue) !important ;" - ); - } - - #[test] - fn transform_color_with_font_size() { - let source = "font-size: 24px; color: blue"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - "font-size: 24px; --lynx-text-bg-color:initial;-webkit-background-clip:initial;background-clip:initial;color:blue" - ); - } - - #[test] - fn flex_none() { - let source = "flex:none;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex:none;"); - } - - #[test] - fn flex_auto() { - let source = "flex:auto;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex:auto;"); - } - - #[test] - fn flex_1() { - let source = "flex:1;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex:1;"); - } - #[test] - fn flex_1_percent() { - let source = "flex:1%;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex:1%;"); - } - - #[test] - fn flex_2_3() { - let source = "flex:2 3;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex:2 3;"); - } - - #[test] - fn flex_2_3_percentage() { - let source = "flex:2 3%;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex:2 3%;"); - } - - #[test] - fn flex_2_3_px() { - let source = "flex:2 3px;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex:2 3px;"); - } - - #[test] - fn flex_3_4_5_percentage() { - let source = "flex:3 4 5%;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--flex:3 4 5%;"); - } - - #[test] - fn flex_1_extra() { - let source = "width:100px; flex:none; width:100px;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "width:100px; --flex:none; width:100px;"); - } - - #[test] - fn linear_weight_sum_0_children_style() { - let source = "linear-weight-sum: 0;"; - let result = transform_inline_style_string(source).1; - assert_eq!(result, "--lynx-linear-weight-sum:0;"); - } - - #[test] - fn linear_weight_sum_1_children_style() { - let source = "linear-weight-sum: 1;"; - let result = transform_inline_style_string(source).1; - assert_eq!(result, "--lynx-linear-weight-sum:1;"); - } - - #[test] - fn linear_weight_sum_1_important_children_style() { - let source = "linear-weight-sum: 1 !important;"; - let result = transform_inline_style_string(source).1; - assert_eq!(result, "--lynx-linear-weight-sum:1 !important;"); - } - #[test] - fn complex_1() { - let source = "linear-direction:row;linear-weight: 0;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - "--lynx-linear-orientation:horizontal;--lynx-linear-orientation-toggle:var(--lynx-linear-orientation-horizontal);--lynx-linear-weight:0;" - ); - } - - #[test] - fn linear_weight_0() { - let source = "linear-weight: 0;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--lynx-linear-weight:0;"); - } - - #[test] - fn linear_weight_1() { - let source = "linear-weight: 1;"; - let result = transform_inline_style_string(source).0; - assert_eq!( - result, - "--lynx-linear-weight:1;--lynx-linear-weight-basis:0;" - ); - } - - #[test] - fn test_query_transform_rules_linear_direction() { - let name = "linear-direction"; - let value = "row"; - let (result, _) = query_transform_rules(name, value); - assert_eq!(result[0].0, "--lynx-linear-orientation"); - assert_eq!(result[0].1, "horizontal"); - } - - #[test] - fn linear_layout_gravity() { - let source = "linear-layout-gravity: right;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--align-self-row:auto;--align-self-column:end;"); - } - - #[test] - fn linear_layout_gravity_start() { - let source = "linear-layout-gravity: start;"; - let result = transform_inline_style_string(source).0; - assert_eq!(result, "--align-self-row:start;--align-self-column:start;"); - } -} diff --git a/packages/web-platform/web-mainthread-apis/ts/createMainThreadGlobalThis.ts b/packages/web-platform/web-mainthread-apis/ts/createMainThreadGlobalThis.ts deleted file mode 100644 index bbf4f1dd2f..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/createMainThreadGlobalThis.ts +++ /dev/null @@ -1,1031 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - type LynxTemplate, - type PageConfig, - type FlushElementTreeOptions, - type Cloneable, - type BrowserConfig, - lynxUniqueIdAttribute, - type publishEventEndpoint, - type publicComponentEventEndpoint, - type reportErrorEndpoint, - type RpcCallType, - type LynxContextEventTarget, - systemInfo, - type AddEventPAPI, - type GetEventsPAPI, - type GetEventPAPI, - type MainThreadGlobalThis, - type SetEventsPAPI, - type CreateElementPAPI, - parentComponentUniqueIdAttribute, - componentIdAttribute, - LynxEventNameToW3cByTagName, - LynxEventNameToW3cCommon, - type LynxEventType, - lynxTagAttribute, - type MainThreadScriptEvent, - W3cEventNameToLynx, - type LynxRuntimeInfo, - type CreateViewPAPI, - type CreateTextPAPI, - type CreateImagePAPI, - type CreateScrollViewPAPI, - type CreateWrapperElementPAPI, - type CreatePagePAPI, - cssIdAttribute, - lynxDefaultDisplayLinearAttribute, - type CreateRawTextPAPI, - type CreateListPAPI, - type CreateComponentPAPI, - type SetAttributePAPI, - type SetAttributePAPIUpdateListInfo, - type UpdateListInfoAttributeValue, - __lynx_timing_flag, - type UpdateListCallbacksPAPI, - type SwapElementPAPI, - type SetCSSIdPAPI, - type AddClassPAPI, - type SetClassesPAPI, - type GetPageElementPAPI, - type MinimalRawEventObject, - type I18nResourceTranslationOptions, - lynxDisposedAttribute, - type SSRHydrateInfo, - type SSRDehydrateHooks, - type ElementTemplateData, - type ElementFromBinaryPAPI, - type JSRealm, - type QueryComponentPAPI, - lynxEntryNameAttribute, - ErrorCode, - type QuerySelectorPAPI, - type InvokeUIMethodPAPI, - type ElementAnimatePAPI, - AnimationOperation, -} from '@lynx-js/web-constants'; -import { createMainThreadLynx } from './createMainThreadLynx.js'; -import { - __AddClass, - __AddConfig, - __AddDataset, - __AddInlineStyle, - __AppendElement, - __ElementIsEqual, - __FirstElement, - __GetAttributes, - __GetChildren, - __GetClasses, - __GetComponentID, - __GetDataByKey, - __GetDataset, - __GetElementConfig, - __GetElementUniqueID, - __GetID, - __GetParent, - __GetTag, - __GetTemplateParts, - __InsertElementBefore, - __LastElement, - __MarkPartElement, - __MarkTemplateElement, - __NextElement, - __RemoveElement, - __ReplaceElement, - __ReplaceElements, - __SetClasses, - __SetConfig, - __SetCSSId, - __SetDataset, - __SetID, - __SetInlineStyles, - __UpdateComponentID, - __UpdateComponentInfo, - __GetAttributeByName, -} from './pureElementPAPIs.js'; -import { createCrossThreadEvent } from './utils/createCrossThreadEvent.js'; - -const exposureRelatedAttributes = new Set([ - 'exposure-id', - 'exposure-area', - 'exposure-screen-margin-top', - 'exposure-screen-margin-right', - 'exposure-screen-margin-bottom', - 'exposure-screen-margin-left', - 'exposure-ui-margin-top', - 'exposure-ui-margin-right', - 'exposure-ui-margin-bottom', - 'exposure-ui-margin-left', -]); - -export interface MainThreadRuntimeCallbacks { - mainChunkReady: () => void; - flushElementTree: ( - options: FlushElementTreeOptions | undefined, - timingFlags: string[], - exposureChangedElements: HTMLElement[], - ) => void; - _ReportError: RpcCallType; - __OnLifecycleEvent: (lifeCycleEvent: Cloneable) => void; - markTiming: (pipelineId: string, timingKey: string) => void; - publishEvent: RpcCallType; - publicComponentEvent: RpcCallType; - _I18nResourceTranslation: ( - options: I18nResourceTranslationOptions, - ) => unknown | undefined; - updateCssOGStyle: ( - uniqueId: number, - newClassName: string, - cssID: string | null, - entryName: string | null, - ) => void; - __QueryComponent: QueryComponentPAPI; -} - -export interface MainThreadRuntimeConfig { - pageConfig: PageConfig; - globalProps: unknown; - callbacks: MainThreadRuntimeCallbacks; - lynxTemplate: LynxTemplate; - browserConfig: BrowserConfig; - tagMap: Record; - rootDom: - & Pick - & Partial>; - jsContext: LynxContextEventTarget; - ssrHydrateInfo?: SSRHydrateInfo; - ssrHooks?: SSRDehydrateHooks; - mtsRealm: JSRealm; - document: Document; -} - -export function createMainThreadGlobalThis( - config: MainThreadRuntimeConfig, -): MainThreadGlobalThis { - let timingFlags: string[] = []; - const { - callbacks, - tagMap, - pageConfig, - lynxTemplate, - rootDom, - globalProps, - ssrHydrateInfo, - ssrHooks, - mtsRealm, - document, - } = config; - const { elementTemplate, lepusCode } = lynxTemplate; - const lynxUniqueIdToElement: WeakRef[] = - ssrHydrateInfo?.lynxUniqueIdToElement ?? []; - const elementToRuntimeInfoMap: WeakMap = - new WeakMap(); - - let pageElement: HTMLElement | undefined = lynxUniqueIdToElement[1] - ?.deref(); - let uniqueIdInc = lynxUniqueIdToElement.length || 1; - const exposureChangedElements = new Set(); - - const commonHandler = (event: Event, capture: boolean) => { - if (!event.currentTarget) { - return; - } - // The `capture false` event should not be triggered during the capture-phase - // The `capture true` event should not be triggered during the bubbling phase - if ( - (event.eventPhase === Event.CAPTURING_PHASE && capture === false) - || (event.eventPhase === Event.BUBBLING_PHASE && capture === true) - ) { - return; - } - const currentTarget = event.currentTarget as HTMLElement; - // When the event is triggered by the target element, `event.eventPhase` is always `target`, and the listener type is determined by the passed-in `capture`. - // When the event is triggered by a non-target element, the listener type is determined by `event.eventPhase` (1, 3). - const isCapture = event.eventPhase === Event.AT_TARGET - ? capture - : event.eventPhase === event.CAPTURING_PHASE; - const lynxEventName = W3cEventNameToLynx[event.type] ?? event.type; - const runtimeInfo = elementToRuntimeInfoMap.get( - currentTarget as any as HTMLElement, - ); - if (runtimeInfo) { - const handlerInfos = (isCapture - ? runtimeInfo.eventHandlerMap[lynxEventName]?.capture - : runtimeInfo.eventHandlerMap[lynxEventName]?.bind) as unknown as { - handler: string | { type: 'worklet'; value: unknown }; - }[]; - let stopPropagation = false; - if (handlerInfos) { - for (const handlerInfo of handlerInfos) { - const hname = handlerInfo.handler; - const crossThreadEvent = createCrossThreadEvent( - event as MinimalRawEventObject, - lynxEventName, - ); - if (typeof hname === 'string') { - const parentComponentUniqueId = Number( - currentTarget.getAttribute(parentComponentUniqueIdAttribute)!, - ); - const parentComponent = - lynxUniqueIdToElement[parentComponentUniqueId]! - .deref()!; - const componentId = - parentComponent?.getAttribute(lynxTagAttribute) !== 'page' - ? parentComponent?.getAttribute(componentIdAttribute) - ?? undefined - : undefined; - if (componentId) { - callbacks.publicComponentEvent( - componentId, - hname, - crossThreadEvent, - ); - } else { - callbacks.publishEvent( - hname, - crossThreadEvent, - ); - } - if (handlerInfos.length === 1) { - stopPropagation = true; - } - } else if (hname) { - (crossThreadEvent as MainThreadScriptEvent).target.elementRefptr = - event.target; - if (crossThreadEvent.currentTarget) { - (crossThreadEvent as MainThreadScriptEvent).currentTarget! - .elementRefptr = event.currentTarget; - } - (mtsRealm.globalWindow as typeof globalThis & MainThreadGlobalThis) - .runWorklet?.(hname.value, [crossThreadEvent]); - } - } - } - return stopPropagation; - } - return false; - }; - const captureHandler = (e: Event) => { - commonHandler(e, true); - }; - const defaultHandler = (e: Event) => { - commonHandler(e, false); - }; - const commonCatchHandler = (event: Event, isCapture: boolean) => { - const handlerTriggered = commonHandler(event, isCapture); - if (handlerTriggered) event.stopPropagation(); - }; - const catchCaptureHandler = (e: Event) => { - commonCatchHandler(e, true); - }; - const defaultCatchHandler = (e: Event) => { - commonCatchHandler(e, false); - }; - const __AddEvent: AddEventPAPI = ( - element, - eventType, - eventName, - newEventHandler, - ) => { - eventName = eventName.toLowerCase(); - const isCatch = eventType === 'catchEvent' || eventType === 'capture-catch'; - const isCapture = eventType.startsWith('capture'); - const runtimeInfo = elementToRuntimeInfoMap.get(element) ?? { - eventHandlerMap: {}, - componentAtIndex: undefined, - enqueueComponent: undefined, - }; - const handlerList = (isCapture - ? runtimeInfo.eventHandlerMap[eventName]?.capture - : runtimeInfo.eventHandlerMap[eventName]?.bind) as unknown as any[]; - const currentHandler = handlerList && handlerList.length > 0; - const currentRegisteredHandler = isCatch - ? (isCapture ? catchCaptureHandler : defaultCatchHandler) - : (isCapture ? captureHandler : defaultHandler); - if (currentHandler) { - if (!newEventHandler) { - /** - * remove handler - */ - element.removeEventListener(eventName, currentRegisteredHandler, { - capture: isCapture, - }); - // remove the exposure id if the exposure-id is a placeholder value - const isExposure = eventName === 'uiappear' - || eventName === 'uidisappear'; - if (isExposure && element.getAttribute('exposure-id') === '-1') { - mtsGlobalThis.__SetAttribute(element, 'exposure-id', null); - } - if (runtimeInfo.eventHandlerMap[eventName]) { - if (isCapture) { - runtimeInfo.eventHandlerMap[eventName]!.capture = undefined; - } else { - runtimeInfo.eventHandlerMap[eventName]!.bind = undefined; - } - } - } - } else { - /** - * append new handler - */ - if (newEventHandler) { - const htmlEventName = - LynxEventNameToW3cByTagName[element.tagName]?.[eventName] - ?? LynxEventNameToW3cCommon[eventName] ?? eventName; - element.addEventListener(htmlEventName, currentRegisteredHandler, { - capture: isCapture, - }); - // add exposure id if no exposure-id is set - const isExposure = eventName === 'uiappear' - || eventName === 'uidisappear'; - if (isExposure && element.getAttribute('exposure-id') === null) { - mtsGlobalThis.__SetAttribute(element, 'exposure-id', '-1'); - } - } - } - if (newEventHandler) { - const info = { - type: eventType, - handler: newEventHandler, - }; - if (!runtimeInfo.eventHandlerMap[eventName]) { - runtimeInfo.eventHandlerMap[eventName] = { - capture: undefined, - bind: undefined, - }; - } - let targetList = (isCapture - ? runtimeInfo.eventHandlerMap[eventName]!.capture - : runtimeInfo.eventHandlerMap[eventName]!.bind) as unknown as any[]; - - if (!Array.isArray(targetList)) { - targetList = targetList ? [targetList] : []; - } - - const typeOfNew = typeof newEventHandler; - const index = targetList.findIndex((h: any) => - typeof h.handler === typeOfNew - ); - if (index !== -1) { - targetList[index] = info; - } else { - targetList.push(info); - } - - if (isCapture) { - runtimeInfo.eventHandlerMap[eventName]!.capture = targetList as any; - } else { - runtimeInfo.eventHandlerMap[eventName]!.bind = targetList as any; - } - } - elementToRuntimeInfoMap.set(element, runtimeInfo); - }; - - const __GetEvent: GetEventPAPI = ( - element, - eventName, - eventType, - ) => { - const runtimeInfo = elementToRuntimeInfoMap.get(element); - if (runtimeInfo) { - eventName = eventName.toLowerCase(); - const isCapture = eventType.startsWith('capture'); - const handler = (isCapture - ? runtimeInfo.eventHandlerMap[eventName]?.capture - : runtimeInfo.eventHandlerMap[eventName]?.bind) as unknown as any[]; - if (Array.isArray(handler)) { - return handler[0]?.handler; - } - return (handler as any)?.handler; - } else { - return undefined; - } - }; - - const __GetEvents: GetEventsPAPI = (element) => { - const eventHandlerMap = - elementToRuntimeInfoMap.get(element)?.eventHandlerMap ?? {}; - const eventInfos: { - type: LynxEventType; - name: string; - function: string | { type: 'worklet'; value: unknown } | undefined; - }[] = []; - for (const [lynxEventName, info] of Object.entries(eventHandlerMap)) { - for (const atomInfo of [info.bind, info.capture]) { - if (atomInfo) { - const handlerList = (Array.isArray(atomInfo) - ? atomInfo - : [atomInfo]) as any[]; - for (const item of handlerList) { - const { type, handler } = item; - if (handler) { - eventInfos.push({ - type: type as LynxEventType, - name: lynxEventName, - function: handler, - }); - } - } - } - } - } - return eventInfos; - }; - - const __SetEvents: SetEventsPAPI = ( - element, - listeners, - ) => { - for ( - const { type: eventType, name: lynxEventName, function: eventHandler } - of listeners - ) { - __AddEvent(element, eventType, lynxEventName, eventHandler); - } - }; - - const __CreateElement: CreateElementPAPI = ( - tag, - parentComponentUniqueId, - ) => { - const uniqueId = uniqueIdInc++; - const htmlTag = tagMap[tag] ?? tag; - const element = document.createElement( - htmlTag, - ) as unknown as HTMLElement; - lynxUniqueIdToElement[uniqueId] = new WeakRef(element); - const parentComponentCssID = lynxUniqueIdToElement[parentComponentUniqueId] - ?.deref()?.getAttribute(cssIdAttribute); - parentComponentCssID && parentComponentCssID !== '0' - && element.setAttribute(cssIdAttribute, parentComponentCssID); - element.setAttribute(lynxTagAttribute, tag); - element.setAttribute(lynxUniqueIdAttribute, uniqueId + ''); - element.setAttribute( - parentComponentUniqueIdAttribute, - parentComponentUniqueId + '', - ); - return element; - }; - - const __CreateView: CreateViewPAPI = ( - parentComponentUniqueId: number, - ) => __CreateElement('view', parentComponentUniqueId); - - const __CreateText: CreateTextPAPI = ( - parentComponentUniqueId: number, - ) => __CreateElement('text', parentComponentUniqueId); - - const __CreateRawText: CreateRawTextPAPI = ( - text: string, - ) => { - const element = __CreateElement('raw-text', -1); - element.setAttribute('text', text); - return element; - }; - - const __CreateImage: CreateImagePAPI = ( - parentComponentUniqueId: number, - ) => __CreateElement('image', parentComponentUniqueId); - - const __CreateScrollView: CreateScrollViewPAPI = ( - parentComponentUniqueId: number, - ) => __CreateElement('scroll-view', parentComponentUniqueId); - - const __CreateWrapperElement: CreateWrapperElementPAPI = ( - parentComponentUniqueId: number, - ) => __CreateElement('lynx-wrapper', parentComponentUniqueId); - - const __CreatePage: CreatePagePAPI = ( - componentID, - cssID, - ) => { - const page = __CreateElement('page', 0); - page.setAttribute('part', 'page'); - page.setAttribute(cssIdAttribute, cssID + ''); - page.setAttribute(parentComponentUniqueIdAttribute, '1'); - page.setAttribute(componentIdAttribute, componentID); - __MarkTemplateElement(page); - if (pageConfig.defaultDisplayLinear === false) { - page.setAttribute(lynxDefaultDisplayLinearAttribute, 'false'); - } - if (pageConfig.defaultOverflowVisible === true) { - page.setAttribute('lynx-default-overflow-visible', 'true'); - } - pageElement = page; - return page; - }; - - const __CreateList: CreateListPAPI = ( - parentComponentUniqueId, - componentAtIndex, - enqueueComponent, - ) => { - const list = __CreateElement('list', parentComponentUniqueId); - const runtimeInfo: LynxRuntimeInfo = { - eventHandlerMap: {}, - componentAtIndex: componentAtIndex, - enqueueComponent: enqueueComponent, - }; - elementToRuntimeInfoMap.set(list, runtimeInfo); - return list; - }; - - const __CreateComponent: CreateComponentPAPI = ( - componentParentUniqueID, - componentID, - cssID, - _, - name, - ) => { - const component = __CreateElement('view', componentParentUniqueID); - component.setAttribute(cssIdAttribute, cssID + ''); - component.setAttribute(componentIdAttribute, componentID); - component.setAttribute('name', name); - return component; - }; - - const __SetAttribute: SetAttributePAPI & SetAttributePAPIUpdateListInfo = ( - element, - key, - value, - ) => { - const tag = element.getAttribute(lynxTagAttribute)!; - if (tag === 'list' && key === 'update-list-info') { - const listInfo = value as UpdateListInfoAttributeValue; - const { insertAction, removeAction } = listInfo; - queueMicrotask(() => { - const runtimeInfo = elementToRuntimeInfoMap.get(element); - if (runtimeInfo) { - const componentAtIndex = runtimeInfo.componentAtIndex; - const enqueueComponent = runtimeInfo.enqueueComponent; - const uniqueId = __GetElementUniqueID(element); - removeAction.forEach((position, i) => { - // remove list-item - const removedEle = element.children[position - i] as HTMLElement; - if (removedEle) { - const sign = __GetElementUniqueID(removedEle); - enqueueComponent?.(element, uniqueId, sign); - element.removeChild(removedEle); - } - }); - for (const action of insertAction) { - const childSign = componentAtIndex?.( - element, - uniqueId, - action.position, - 0, - false, - ) as number | undefined; - if (typeof childSign === 'number') { - const childElement = lynxUniqueIdToElement[childSign]?.deref(); - if (childElement) { - const referenceNode = element.children[action.position]; - if (referenceNode !== childElement) { - element.insertBefore(childElement, referenceNode || null); - } - } - } - } - } - }); - } else { - value == null - ? element.removeAttribute(key) - : element.setAttribute(key, value + ''); - if (key === __lynx_timing_flag && value) { - timingFlags.push(value as string); - } - if (exposureRelatedAttributes.has(key)) { - // if the attribute is related to exposure, we need to mark the element as changed - exposureChangedElements.add(element); - } - } - }; - - const __UpdateListCallbacks: UpdateListCallbacksPAPI = ( - element, - componentAtIndex, - enqueueComponent, - ) => { - const runtimeInfo = elementToRuntimeInfoMap.get(element) ?? { - eventHandlerMap: {}, - componentAtIndex: componentAtIndex, - enqueueComponent: enqueueComponent, - uniqueId: __GetElementUniqueID(element), - }; - runtimeInfo.componentAtIndex = componentAtIndex; - runtimeInfo.enqueueComponent = enqueueComponent; - elementToRuntimeInfoMap.set(element, runtimeInfo); - }; - const __SwapElement: SwapElementPAPI = ( - childA, - childB, - ) => { - const temp = document.createElement('div'); - childA.replaceWith(temp); - childB.replaceWith(childA); - temp.replaceWith(childB); - }; - - const __SetCSSIdForCSSOG: SetCSSIdPAPI = ( - elements, - cssId, - entryName, - ) => { - for (const element of elements) { - element.setAttribute(cssIdAttribute, cssId + ''); - entryName && element.setAttribute(lynxEntryNameAttribute, entryName); - const cls = element.getAttribute('class'); - cls && __SetClassesForCSSOG(element, cls); - } - }; - - const __AddClassForCSSOG: AddClassPAPI = ( - element, - className, - ) => { - const newClassName = - ((element.getAttribute('class') ?? '') + ' ' + className) - .trim(); - element.setAttribute('class', newClassName); - const cssId = element.getAttribute(cssIdAttribute); - const uniqueId = Number(element.getAttribute(lynxUniqueIdAttribute)); - const entryName = element.getAttribute(lynxEntryNameAttribute); - callbacks.updateCssOGStyle( - uniqueId, - newClassName, - cssId, - entryName, - ); - }; - - const __SetClassesForCSSOG: SetClassesPAPI = ( - element, - classNames, - ) => { - __SetClasses(element, classNames); - const cssId = element.getAttribute(cssIdAttribute); - const uniqueId = Number(element.getAttribute(lynxUniqueIdAttribute)); - const entryName = element.getAttribute(lynxEntryNameAttribute); - callbacks.updateCssOGStyle( - uniqueId, - classNames ?? '', - cssId, - entryName, - ); - }; - - const __LoadLepusChunk: (path: string) => boolean = (path) => { - try { - path = lepusCode?.[path] ?? path; - mtsRealm.loadScriptSync(path); - return true; - } catch (e) { - console.error(`failed to load lepus chunk ${path}`, e); - return false; - } - }; - - const __FlushElementTree: ( - _subTree: unknown, - options: FlushElementTreeOptions | undefined, - ) => void = ( - _subTree, - options, - ) => { - const timingFlagsCopied = timingFlags; - timingFlags = []; - if ( - pageElement && !pageElement.parentNode - && pageElement.getAttribute(lynxDisposedAttribute) !== '' - ) { - rootDom.append(pageElement); - } - const exposureChangedElementsArray = Array.from(exposureChangedElements); - exposureChangedElements.clear(); - callbacks.flushElementTree( - options, - timingFlagsCopied, - exposureChangedElementsArray, - ); - }; - - const __InvokeUIMethod: InvokeUIMethodPAPI = ( - element, - method, - params, - callback, - ) => { - try { - if (method === 'boundingClientRect') { - const rect = (element as HTMLElement).getBoundingClientRect(); - callback({ - code: ErrorCode.SUCCESS, - data: { - id: (element as HTMLElement).id, - width: rect.width, - height: rect.height, - left: rect.left, - right: rect.right, - top: rect.top, - bottom: rect.bottom, - }, - }); - return; - } - if (typeof (element as any)[method] === 'function') { - const data = (element as any)[method](params); - callback({ - code: ErrorCode.SUCCESS, - data, - }); - return; - } - callback({ - code: ErrorCode.METHOD_NOT_FOUND, - }); - } catch (e) { - console.error( - `[lynx-web] invokeUIMethod: apply method failed with`, - e, - element, - ); - callback({ - code: ErrorCode.PARAM_INVALID, - }); - } - }; - - const __QuerySelector: QuerySelectorPAPI = ( - element, - selector, - ) => { - if (!element) return null; - const el = (element as HTMLElement).querySelector(selector); - if (el) { - if (!(el as any).invoke) { - (el as any).invoke = (method: string, params: object) => { - return new Promise((resolve, reject) => { - __InvokeUIMethod(el as HTMLElement, method, params, (res) => { - if (res.code === ErrorCode.SUCCESS) { - resolve(res.data); - } else { - reject(res); - } - }); - }); - }; - } - } - return el; - }; - - const animationMap = new Map(); - - const mapTimingOptions = ( - options?: Record, - ): KeyframeAnimationOptions | undefined => { - if (!options) return undefined; - const result: KeyframeAnimationOptions = {}; - if ('duration' in options) result.duration = Number(options['duration']); - if ('delay' in options) result.delay = Number(options['delay']); - if ('direction' in options) { - result.direction = options['direction'] as PlaybackDirection; - } - if ('iterationCount' in options) { - result.iterations = options['iterationCount'] === 'infinite' - ? Infinity - : Number(options['iterationCount']); - } - if ('fillMode' in options) result.fill = options['fillMode'] as FillMode; - if ('timingFunction' in options) { - result.easing = options['timingFunction'] as string; - } - return result; - }; - - const __ElementAnimate: ElementAnimatePAPI = (element, args) => { - const [operation, name] = args; - switch (operation) { - case AnimationOperation.START: { - const keyframes = args[2]; - const options = args[3]; - animationMap.get(name)?.cancel(); - const animation = element.animate( - keyframes as Keyframe[], - mapTimingOptions(options), - ); - animation.oncancel = animation.onfinish = () => { - if (animationMap.get(name) === animation) { - animationMap.delete(name); - } - }; - animationMap.set(name, animation); - break; - } - case AnimationOperation.PLAY: - animationMap.get(name)?.play(); - break; - case AnimationOperation.PAUSE: - animationMap.get(name)?.pause(); - break; - case AnimationOperation.CANCEL: - animationMap.get(name)?.cancel(); - animationMap.delete(name); - break; - case AnimationOperation.FINISH: - animationMap.get(name)?.finish(); - break; - } - }; - - const __GetPageElement: GetPageElementPAPI = () => { - return pageElement; - }; - - const templateIdToTemplate: Record = {}; - - const createElementForElementTemplateData = ( - data: ElementTemplateData, - parentComponentUniId: number, - ): HTMLElement => { - const element = __CreateElement(data.type, parentComponentUniId); - __SetID(element, data.id); - data.class && __SetClasses(element, data.class.join(' ')); - for (const [key, value] of Object.entries(data.attributes || {})) { - __SetAttribute(element, key, value); - } - for (const [key, value] of Object.entries(data.builtinAttributes || {})) { - if (key === 'dirtyID' && value === data.id) { - __MarkPartElement(element, value); - } - __SetAttribute(element, key, value); - } - for (const childData of data.children || []) { - __AppendElement( - element, - createElementForElementTemplateData(childData, parentComponentUniId), - ); - } - data.dataset !== undefined && __SetDataset(element, data.dataset); - return element; - }; - - const applyEventsForElementTemplate: ( - data: ElementTemplateData, - element: HTMLElement, - ) => void = (data, element) => { - const uniqueId = uniqueIdInc++; - element.setAttribute(lynxUniqueIdAttribute, uniqueId + ''); - for (const event of data.events || []) { - const { type, name, value } = event; - __AddEvent(element, type, name, value); - } - for (let ii = 0; ii < (data.children || []).length; ii++) { - const childData = (data.children || [])[ii]; - const childElement = element.children[ii] as HTMLElement; - if (childData && childElement) { - applyEventsForElementTemplate(childData, childElement); - } - } - }; - - const __ElementFromBinary: ElementFromBinaryPAPI = ( - templateId, - parentComponentUniId, - ) => { - const elementTemplateData = elementTemplate[templateId]; - if (elementTemplateData) { - let clonedElements: HTMLElement[]; - if (templateIdToTemplate[templateId]) { - clonedElements = Array.from( - (templateIdToTemplate[templateId].content.cloneNode( - true, - ) as DocumentFragment).children, - ) as unknown as HTMLElement[]; - } else { - clonedElements = elementTemplateData.map(data => - createElementForElementTemplateData(data, parentComponentUniId) - ); - if (rootDom.cloneNode) { - const template = document.createElement( - 'template', - ) as unknown as HTMLTemplateElement; - template.content.append(...clonedElements as unknown as Node[]); - templateIdToTemplate[templateId] = template; - rootDom.append(template); - return __ElementFromBinary(templateId, parentComponentUniId); - } - } - for (let ii = 0; ii < clonedElements.length; ii++) { - const data = elementTemplateData[ii]; - const element = clonedElements[ii]; - if (data && element) { - applyEventsForElementTemplate(data, element); - } - } - clonedElements.forEach(__MarkTemplateElement); - return clonedElements; - } - return []; - }; - - let release = ''; - const isCSSOG = !pageConfig.enableCSSSelector; - const SystemInfo = { - ...systemInfo, - ...config.browserConfig, - }; - const mtsGlobalThis: MainThreadGlobalThis = { - __ElementFromBinary, - __GetTemplateParts: rootDom.querySelectorAll - ? __GetTemplateParts - : undefined, - __MarkTemplateElement, - __MarkPartElement, - __AddEvent: ssrHooks?.__AddEvent ?? __AddEvent, - __GetEvent, - __GetEvents, - __SetEvents, - __AppendElement, - __ElementIsEqual, - __FirstElement, - __GetChildren, - __GetParent, - __InsertElementBefore, - __LastElement, - __NextElement, - __RemoveElement, - __ReplaceElement, - __ReplaceElements, - __AddConfig, - __AddDataset, - __GetAttributes, - __GetComponentID, - __GetDataByKey, - __GetDataset, - __GetElementConfig, - __GetElementUniqueID, - __GetID, - __GetTag, - __SetConfig, - __SetDataset, - __SetID, - __UpdateComponentID, - __UpdateComponentInfo, - __CreateElement, - __CreateView, - __CreateText, - __CreateComponent, - __CreatePage, - __CreateRawText, - __CreateImage, - __CreateScrollView, - __CreateWrapperElement, - __CreateList, - __SetAttribute, - __SwapElement, - __UpdateListCallbacks, - __GetConfig: __GetElementConfig, - __GetAttributeByName, - __GetClasses, - __AddClass: isCSSOG ? __AddClassForCSSOG : __AddClass, - __SetClasses: isCSSOG ? __SetClassesForCSSOG : __SetClasses, - __AddInlineStyle, - __SetCSSId: isCSSOG ? __SetCSSIdForCSSOG : __SetCSSId, - __SetInlineStyles, - __LoadLepusChunk, - __GetPageElement, - __globalProps: globalProps, - __QueryComponent: callbacks.__QueryComponent, - SystemInfo, - lynx: createMainThreadLynx(config, SystemInfo), - _ReportError: (err, _) => callbacks._ReportError(err, _, release), - _SetSourceMapRelease: (errInfo) => release = errInfo?.release, - __OnLifecycleEvent: callbacks.__OnLifecycleEvent, - __FlushElementTree, - _I18nResourceTranslation: callbacks._I18nResourceTranslation, - _AddEventListener: () => {}, - renderPage: undefined, - __InvokeUIMethod, - __QuerySelector, - __ElementAnimate, - }; - Object.assign(mtsRealm.globalWindow, mtsGlobalThis); - Object.defineProperty(mtsRealm.globalWindow, 'renderPage', { - get() { - return mtsGlobalThis.renderPage; - }, - set(v) { - mtsGlobalThis.renderPage = v; - queueMicrotask(callbacks.mainChunkReady); - }, - configurable: true, - enumerable: true, - }); - - return mtsRealm.globalWindow as typeof globalThis & MainThreadGlobalThis; -} diff --git a/packages/web-platform/web-mainthread-apis/ts/createMainThreadLynx.ts b/packages/web-platform/web-mainthread-apis/ts/createMainThreadLynx.ts deleted file mode 100644 index 5777c7ed48..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/createMainThreadLynx.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import type { MainThreadLynx } from '@lynx-js/web-constants'; -import { type MainThreadRuntimeConfig } from './createMainThreadGlobalThis.js'; - -export function createMainThreadLynx( - config: MainThreadRuntimeConfig, - SystemInfo: Record, -): MainThreadLynx { - const requestAnimationFrameBrowserImpl = requestAnimationFrame; - const cancelAnimationFrameBrowserImpl = cancelAnimationFrame; - const setTimeoutBrowserImpl = setTimeout; - const clearTimeoutBrowserImpl = clearTimeout; - const setIntervalBrowserImpl = setInterval; - const clearIntervalBrowserImpl = clearInterval; - return { - getJSContext() { - return config.jsContext; - }, - requestAnimationFrame(cb: FrameRequestCallback) { - return requestAnimationFrameBrowserImpl(cb); - }, - cancelAnimationFrame(handler: number) { - return cancelAnimationFrameBrowserImpl(handler); - }, - __globalProps: config.globalProps, - getCustomSectionSync(key: string) { - return config.lynxTemplate.customSections[key]?.content; - }, - markPipelineTiming: config.callbacks.markTiming, - SystemInfo, - setTimeout: setTimeoutBrowserImpl, - clearTimeout: clearTimeoutBrowserImpl, - setInterval: setIntervalBrowserImpl, - clearInterval: clearIntervalBrowserImpl, - }; -} diff --git a/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/createQueryComponent.ts b/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/createQueryComponent.ts deleted file mode 100644 index 546723d391..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/createQueryComponent.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { - queryComponentEndpoint, - updateBTSTemplateCacheEndpoint, - type JSRealm, - type LynxCrossThreadContext, - type MainThreadGlobalThis, - type QueryComponentPAPI, - type Rpc, - type RpcCallType, - type StyleInfo, - type TemplateLoader, -} from '@lynx-js/web-constants'; - -export function createQueryComponent( - loadTemplate: TemplateLoader, - updateLazyComponentStyle: (styleInfo: StyleInfo, entryName: string) => void, - backgroundThreadRpc: Rpc, - mtsGlobalThisRef: { - mtsGlobalThis: MainThreadGlobalThis; - }, - jsContext: LynxCrossThreadContext, - mtsRealm: JSRealm, -): QueryComponentPAPI { - const updateBTSTemplateCache = backgroundThreadRpc.createCall( - updateBTSTemplateCacheEndpoint, - ); - const lazyCache: Map> = new Map(); - const __QueryComponentImpl: QueryComponentPAPI = (url, callback) => { - const cacheLazy = lazyCache.get(url); - const loadPromise = cacheLazy - ?? loadTemplate(url).then(async (template) => { - const updateBTSCachePromise = updateBTSTemplateCache(url, template); - let lepusRootChunkExport = await mtsRealm.loadScript( - template.lepusCode.root, - ); - if (mtsGlobalThisRef.mtsGlobalThis.processEvalResult) { - lepusRootChunkExport = mtsGlobalThisRef.mtsGlobalThis - .processEvalResult( - lepusRootChunkExport, - url, - ); - } - updateLazyComponentStyle(template.styleInfo, url); - await updateBTSCachePromise; - jsContext.dispatchEvent({ - type: '__OnDynamicJSSourcePrepared', - data: url, - }); - return lepusRootChunkExport; - }); - !cacheLazy && lazyCache.set(url, loadPromise); - loadPromise.then(lepusRootChunkExport => { - callback?.({ - code: 0, - data: { - url, - evalResult: lepusRootChunkExport, - }, - }); - }).catch((error) => { - console.error(`lynx web: lazy bundle load failed:`, error); - lazyCache.delete(url); - callback?.({ - code: -1, - data: undefined, - }); - }); - return null; - }; - backgroundThreadRpc.registerHandler(queryComponentEndpoint, (url: string) => { - const ret: ReturnType> = - new Promise(resolve => { - __QueryComponentImpl(url, (result) => { - resolve({ - code: result.code, - detail: { - schema: url, - }, - }); - }); - }); - return ret; - }); - return __QueryComponentImpl; -} diff --git a/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/registerCallLepusMethodHandler.ts b/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/registerCallLepusMethodHandler.ts deleted file mode 100644 index 7711437548..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/registerCallLepusMethodHandler.ts +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - callLepusMethodEndpoint, - type MainThreadGlobalThis, - type Rpc, -} from '@lynx-js/web-constants'; - -export function registerCallLepusMethodHandler( - rpc: Rpc, - runtime: MainThreadGlobalThis, -): void { - rpc.registerHandler( - callLepusMethodEndpoint, - (methodName: string, data: unknown) => { - ((runtime as any)[methodName])(data); - }, - ); -} diff --git a/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/registerGetCustomSectionHandler.ts b/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/registerGetCustomSectionHandler.ts deleted file mode 100644 index 1003c6061d..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/crossThreadHandlers/registerGetCustomSectionHandler.ts +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - getCustomSectionsEndpoint, - type LynxTemplate, - type Rpc, -} from '@lynx-js/web-constants'; - -export function registerGetCustomSectionHandler( - rpc: Rpc, - customSections: LynxTemplate['customSections'], -): void { - rpc.registerHandler( - getCustomSectionsEndpoint, - (key) => { - return customSections[key]?.content; - }, - ); -} diff --git a/packages/web-platform/web-mainthread-apis/ts/index.ts b/packages/web-platform/web-mainthread-apis/ts/index.ts deleted file mode 100644 index 4aa43ca269..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export { prepareMainThreadAPIs } from './prepareMainThreadAPIs.js'; -export * from './createMainThreadGlobalThis.js'; diff --git a/packages/web-platform/web-mainthread-apis/ts/prepareMainThreadAPIs.ts b/packages/web-platform/web-mainthread-apis/ts/prepareMainThreadAPIs.ts deleted file mode 100644 index d17d90e45c..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/prepareMainThreadAPIs.ts +++ /dev/null @@ -1,272 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - BackgroundThreadStartEndpoint, - publishEventEndpoint, - publicComponentEventEndpoint, - postExposureEndpoint, - postTimingFlagsEndpoint, - dispatchCoreContextOnBackgroundEndpoint, - dispatchJSContextOnMainThreadEndpoint, - type Rpc, - type StartMainThreadContextConfig, - LynxCrossThreadContext, - type RpcCallType, - type reportErrorEndpoint, - switchExposureServiceEndpoint, - type I18nResourceTranslationOptions, - getCacheI18nResourcesKey, - type InitI18nResources, - type I18nResources, - dispatchI18nResourceEndpoint, - type Cloneable, - type SSRHydrateInfo, - type SSRDehydrateHooks, - type JSRealm, - type MainThreadGlobalThis, - type TemplateLoader, - type UpdateDataOptions, - updateDataEndpoint, -} from '@lynx-js/web-constants'; -import { registerCallLepusMethodHandler } from './crossThreadHandlers/registerCallLepusMethodHandler.js'; -import { registerGetCustomSectionHandler } from './crossThreadHandlers/registerGetCustomSectionHandler.js'; -import { createMainThreadGlobalThis } from './createMainThreadGlobalThis.js'; -import { createExposureService } from './utils/createExposureService.js'; -import { appendStyleElement } from './utils/processStyleInfo.js'; -import { createQueryComponent } from './crossThreadHandlers/createQueryComponent.js'; - -export function prepareMainThreadAPIs( - backgroundThreadRpc: Rpc, - rootDom: Document | ShadowRoot, - document: Document, - mtsRealmPromise: JSRealm | Promise, - commitDocument: ( - exposureChangedElements: HTMLElement[], - ) => Promise | void, - markTimingInternal: (timingKey: string, pipelineId?: string) => void, - flushMarkTimingInternal: () => void, - reportError: RpcCallType, - triggerI18nResourceFallback: ( - options: I18nResourceTranslationOptions, - ) => void, - initialI18nResources: (data: InitI18nResources) => I18nResources, - loadTemplate: TemplateLoader, - ssrHooks?: SSRDehydrateHooks, - allOnUI?: boolean, -) { - const postTimingFlags = backgroundThreadRpc.createCall( - postTimingFlagsEndpoint, - ); - const backgroundStart = backgroundThreadRpc.createCall( - BackgroundThreadStartEndpoint, - ); - const publishEvent = backgroundThreadRpc.createCall( - publishEventEndpoint, - ); - const publicComponentEvent = backgroundThreadRpc.createCall( - publicComponentEventEndpoint, - ); - const postExposure = backgroundThreadRpc.createCall(postExposureEndpoint); - const dispatchI18nResource = backgroundThreadRpc.createCall( - dispatchI18nResourceEndpoint, - ); - const updateDataBackground = backgroundThreadRpc.createCall( - updateDataEndpoint, - ); - markTimingInternal('lepus_execute_start'); - async function startMainThread( - config: StartMainThreadContextConfig, - ssrHydrateInfo?: SSRHydrateInfo, - ): Promise { - let isFp = true; - const { - globalProps, - template, - browserConfig, - nativeModulesMap, - napiModulesMap, - tagMap, - initI18nResources, - } = config; - const { - styleInfo, - pageConfig, - customSections, - cardType, - } = template; - const mtsRealm = await mtsRealmPromise; - markTimingInternal('decode_start'); - const jsContext = new LynxCrossThreadContext({ - rpc: backgroundThreadRpc, - receiveEventEndpoint: dispatchJSContextOnMainThreadEndpoint, - sendEventEndpoint: dispatchCoreContextOnBackgroundEndpoint, - }); - const i18nResources = initialI18nResources(initI18nResources); - - const { updateCssOGStyle, updateLazyComponentStyle } = appendStyleElement( - styleInfo, - pageConfig, - rootDom as unknown as Node, - document, - ssrHydrateInfo, - allOnUI, - ); - const mtsGlobalThisRef: { mtsGlobalThis: MainThreadGlobalThis } = { - mtsGlobalThis: undefined as unknown as MainThreadGlobalThis, - }; - const __QueryComponent = createQueryComponent( - loadTemplate, - updateLazyComponentStyle, - backgroundThreadRpc, - mtsGlobalThisRef, - jsContext, - mtsRealm, - ); - const mtsGlobalThis = createMainThreadGlobalThis({ - lynxTemplate: template, - mtsRealm, - jsContext, - tagMap, - browserConfig, - globalProps, - pageConfig, - rootDom, - ssrHydrateInfo, - ssrHooks, - document, - callbacks: { - updateCssOGStyle, - mainChunkReady: () => { - markTimingInternal('data_processor_start'); - let initData = config.initData; - if ( - pageConfig.enableJSDataProcessor !== true - && mtsGlobalThis.processData - ) { - initData = mtsGlobalThis.processData(config.initData); - } - markTimingInternal('data_processor_end'); - registerCallLepusMethodHandler( - backgroundThreadRpc, - mtsGlobalThis, - ); - registerGetCustomSectionHandler( - backgroundThreadRpc, - customSections, - ); - const { switchExposureService } = createExposureService( - rootDom, - postExposure, - ); - backgroundThreadRpc.registerHandler( - switchExposureServiceEndpoint, - switchExposureService, - ); - backgroundStart({ - initData, - globalProps, - template, - cardType: cardType ?? 'react', - customSections: Object.fromEntries( - Object.entries(customSections).filter(([, value]) => - value.type !== 'lazy' - ).map(([k, v]) => [k, v.content]), - ), - nativeModulesMap, - napiModulesMap, - }); - if (!ssrHydrateInfo) { - mtsGlobalThis.renderPage!(initData); - mtsGlobalThis.__FlushElementTree(undefined, {}); - } else { - // replay the hydrate event - for (const event of ssrHydrateInfo.events) { - const uniqueId = event[0]; - const element = ssrHydrateInfo.lynxUniqueIdToElement[uniqueId] - ?.deref(); - if (element) { - mtsGlobalThis.__AddEvent(element, event[1], event[2], event[3]); - } - } - mtsGlobalThis.ssrHydrate?.(ssrHydrateInfo.ssrEncodeData); - } - }, - flushElementTree: async ( - options, - timingFlags, - exposureChangedElements, - ) => { - const pipelineId = options?.pipelineOptions?.pipelineID; - markTimingInternal('dispatch_start', pipelineId); - if (isFp) { - isFp = false; - jsContext.dispatchEvent({ - type: '__OnNativeAppReady', - data: undefined, - }); - } - markTimingInternal('layout_start', pipelineId); - markTimingInternal('ui_operation_flush_start', pipelineId); - await commitDocument( - exposureChangedElements as unknown as HTMLElement[], - ); - markTimingInternal('ui_operation_flush_end', pipelineId); - markTimingInternal('layout_end', pipelineId); - markTimingInternal('dispatch_end', pipelineId); - flushMarkTimingInternal(); - requestAnimationFrame(() => { - postTimingFlags(timingFlags, pipelineId); - }); - }, - _ReportError: reportError, - __OnLifecycleEvent: (data) => { - jsContext.dispatchEvent({ - type: '__OnLifecycleEvent', - data, - }); - }, - /** - * Note : - * The parameter of lynx.performance.markTiming is (pipelineId:string, timingFlag:string)=>void - * But our markTimingInternal is (timingFlag:string, pipelineId?:string, timeStamp?:number) => void - */ - markTiming: (a, b) => markTimingInternal(b, a), - publishEvent, - publicComponentEvent, - _I18nResourceTranslation: (options: I18nResourceTranslationOptions) => { - const matchedInitI18nResources = i18nResources.data?.find(i => - getCacheI18nResourcesKey(i.options) - === getCacheI18nResourcesKey(options) - ); - dispatchI18nResource(matchedInitI18nResources?.resource as Cloneable); - if (matchedInitI18nResources) { - return matchedInitI18nResources.resource; - } - return triggerI18nResourceFallback(options); - }, - __QueryComponent, - }, - }); - mtsGlobalThisRef.mtsGlobalThis = mtsGlobalThis; - markTimingInternal('decode_end'); - await mtsRealm.loadScript(template.lepusCode.root); - jsContext.__start(); // start the jsContext after the runtime is created - } - async function handleUpdatedData( - newData: Cloneable, - options: UpdateDataOptions | undefined, - ) { - const mtsRealm = await mtsRealmPromise; - const runtime = mtsRealm.globalWindow as - & typeof globalThis - & MainThreadGlobalThis; - const processedData = runtime.processData - ? runtime.processData(newData, options?.processorName) - : newData; - runtime.updatePage?.(processedData, options); - return updateDataBackground(processedData, options); - } - return { startMainThread, handleUpdatedData }; -} diff --git a/packages/web-platform/web-mainthread-apis/ts/pureElementPAPIs.ts b/packages/web-platform/web-mainthread-apis/ts/pureElementPAPIs.ts deleted file mode 100644 index 667680a984..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/pureElementPAPIs.ts +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - componentIdAttribute, - cssIdAttribute, - lynxComponentConfigAttribute, - lynxDatasetAttribute, - lynxElementTemplateMarkerAttribute, - lynxEntryNameAttribute, - lynxPartIdAttribute, - lynxTagAttribute, - lynxUniqueIdAttribute, - type AddClassPAPI, - type AddConfigPAPI, - type AddDatasetPAPI, - type AddInlineStylePAPI, - type AppendElementPAPI, - type ElementIsEqualPAPI, - type FirstElementPAPI, - type GetAttributeByNamePAPI, - type GetAttributesPAPI, - type GetChildrenPAPI, - type GetClassesPAPI, - type GetComponentIdPAPI, - type GetDataByKeyPAPI, - type GetDatasetPAPI, - type GetElementConfigPAPI, - type GetElementUniqueIDPAPI, - type GetIDPAPI, - type GetParentPAPI, - type GetTagPAPI, - type GetTemplatePartsPAPI, - type InsertElementBeforePAPI, - type LastElementPAPI, - type MarkPartElementPAPI, - type MarkTemplateElementPAPI, - type NextElementPAPI, - type RemoveElementPAPI, - type ReplaceElementPAPI, - type ReplaceElementsPAPI, - type SetClassesPAPI, - type SetConfigPAPI, - type SetCSSIdPAPI, - type SetDatasetPAPI, - type SetIDPAPI, - type SetInlineStylesPAPI, - type UpdateComponentIDPAPI, - type UpdateComponentInfoPAPI, -} from '@lynx-js/web-constants'; -import { queryCSSProperty } from './style/cssPropertyMap.js'; -import { - transformInlineStyleString, - transformParsedStyles, -} from './style/transformInlineStyle.js'; -import hyphenateStyleName from 'hyphenate-style-name'; - -export const __AppendElement: AppendElementPAPI = /*#__PURE__*/ ( - parent, - child, -) => parent.appendChild(child); - -export const __ElementIsEqual: ElementIsEqualPAPI = /*#__PURE__*/ ( - left, - right, -) => left === right; - -export const __FirstElement: FirstElementPAPI = /*#__PURE__*/ ( - element, -) => element.firstElementChild as HTMLElement | null; - -export const __GetChildren: GetChildrenPAPI = /*#__PURE__*/ ( - element, -) => - element.children ? [...(element.children as unknown as HTMLElement[])] : null; - -export const __GetParent: GetParentPAPI = /*#__PURE__*/ ( - element, -) => element.parentElement; - -export const __InsertElementBefore: InsertElementBeforePAPI = /*#__PURE__*/ ( - parent, - child, - ref, -) => parent.insertBefore(child, ref as Node | null); - -export const __LastElement: LastElementPAPI = /*#__PURE__*/ ( - element, -) => element.lastElementChild as HTMLElement | null; - -export const __NextElement: NextElementPAPI = /*#__PURE__*/ ( - element, -) => element.nextElementSibling as HTMLElement | null; - -export const __RemoveElement: RemoveElementPAPI = /*#__PURE__*/ ( - parent, - child, -) => parent.removeChild(child); - -export const __ReplaceElement: ReplaceElementPAPI = /*#__PURE__*/ ( - newElement, - oldElement, -) => oldElement.replaceWith(newElement); - -export const __ReplaceElements: ReplaceElementsPAPI = /*#__PURE__*/ ( - parent, - newChildren, - oldChildren, -) => { - newChildren = Array.isArray(newChildren) ? newChildren : [newChildren]; - if ( - !oldChildren || (Array.isArray(oldChildren) && oldChildren?.length === 0) - ) { - parent.append(...newChildren); - } else { - oldChildren = Array.isArray(oldChildren) ? oldChildren : [oldChildren]; - for (let ii = 1; ii < oldChildren.length; ii++) { - __RemoveElement(parent, oldChildren[ii]!); - } - const firstOldChildren = oldChildren[0]!; - firstOldChildren.replaceWith(...newChildren); - } -}; -export const __AddConfig: AddConfigPAPI = /*#__PURE__*/ ( - element, - type, - value, -) => { - const currentComponentConfigString = element.getAttribute( - lynxComponentConfigAttribute, - ); - let currentComponentConfig: Record = currentComponentConfigString - ? JSON.parse(decodeURIComponent(currentComponentConfigString)) - : {}; - currentComponentConfig[type] = value; - element.setAttribute( - lynxComponentConfigAttribute, - encodeURIComponent(JSON.stringify(currentComponentConfig)), - ); -}; - -export const __AddDataset: AddDatasetPAPI = /*#__PURE__*/ ( - element, - key, - value, -) => { - const currentDataset = __GetDataset(element); - currentDataset[key] = value; - element.setAttribute( - lynxDatasetAttribute, - encodeURIComponent(JSON.stringify(currentDataset)), - ); - value - ? element.setAttribute('data-' + key, value.toString()) - : element.removeAttribute('data-' + key); -}; - -export const __GetDataset: GetDatasetPAPI = /*#__PURE__*/ ( - element, -) => { - const datasetString = element.getAttribute(lynxDatasetAttribute); - const currentDataset: Record = datasetString - ? JSON.parse(decodeURIComponent(datasetString)) - : {}; - return currentDataset; -}; - -export const __GetDataByKey: GetDataByKeyPAPI = /*#__PURE__*/ ( - element, - key, -) => { - const dataset = __GetDataset(element); - return dataset[key]; -}; - -export const __GetAttributes: GetAttributesPAPI = /*#__PURE__*/ ( - element, -) => { - return Object.fromEntries( - element.getAttributeNames().map(( - attributeName, - ) => [attributeName, element.getAttribute(attributeName)]) - .filter(( - [, value], - ) => value) as [string, string][], - ); -}; - -export const __GetComponentID: GetComponentIdPAPI = /*#__PURE__*/ (element) => - element.getAttribute(componentIdAttribute); - -export const __GetElementConfig: GetElementConfigPAPI = /*#__PURE__*/ ( - element, -) => { - const currentComponentConfigString = element.getAttribute( - lynxComponentConfigAttribute, - ); - return currentComponentConfigString - ? JSON.parse(decodeURIComponent(currentComponentConfigString)) - : {}; -}; - -export const __GetAttributeByName: GetAttributeByNamePAPI = /*#__PURE__*/ ( - element, - name, -) => element.getAttribute(name); - -export const __GetElementUniqueID: GetElementUniqueIDPAPI = /*#__PURE__*/ ( - element, -) => ( - element && element.getAttribute - ? Number(element.getAttribute(lynxUniqueIdAttribute)) - : -1 -); - -export const __GetID: GetIDPAPI = /*#__PURE__*/ (element) => - element.getAttribute('id'); - -export const __SetID: SetIDPAPI = /*#__PURE__*/ (element, id) => - id ? element.setAttribute('id', id) : element.removeAttribute('id'); - -export const __GetTag: GetTagPAPI = /*#__PURE__*/ (element) => - element.getAttribute(lynxTagAttribute)!; - -export const __SetConfig: SetConfigPAPI = /*#__PURE__*/ ( - element, - config, -) => { - element.setAttribute( - lynxComponentConfigAttribute, - encodeURIComponent(JSON.stringify(config)), - ); -}; - -export const __SetDataset: SetDatasetPAPI = /*#__PURE__*/ ( - element, - dataset, -) => { - element.setAttribute( - lynxDatasetAttribute, - encodeURIComponent(JSON.stringify(dataset)), - ); - for (const [key, value] of Object.entries(dataset)) { - element.setAttribute('data-' + key, value!.toString()); - } -}; - -export const __UpdateComponentID: UpdateComponentIDPAPI = /*#__PURE__*/ ( - element, - componentID, -) => element.setAttribute(componentIdAttribute, componentID); - -export const __GetClasses: GetClassesPAPI = /*#__PURE__*/ (element) => ( - (element.getAttribute('class') ?? '').split(' ').filter(e => e) -); - -export const __UpdateComponentInfo: UpdateComponentInfoPAPI = /*#__PURE__*/ ( - element, - params, -) => { - params.componentID !== undefined - && __UpdateComponentID(element, params.componentID); - params.cssID !== undefined - && element.setAttribute(cssIdAttribute, params.cssID + ''); - params.name !== undefined && element.setAttribute('name', params.name); -}; - -export const __SetCSSId: SetCSSIdPAPI = /*#__PURE__*/ ( - elements, - cssId, - entryName, -) => { - for (const element of elements) { - element.setAttribute(cssIdAttribute, cssId + ''); - entryName && element.setAttribute(lynxEntryNameAttribute, entryName); - } -}; - -export const __SetClasses: SetClassesPAPI = /*#__PURE__*/ ( - element, - classname, -) => { - classname - ? element.setAttribute('class', classname) - : element.removeAttribute('class'); -}; - -export const __AddInlineStyle: AddInlineStylePAPI = /*#__PURE__*/ ( - element, - key: number | string, - value: string | number | null | undefined, -) => { - let dashName: string | undefined; - if (typeof key === 'number') { - const queryResult = queryCSSProperty(key); - dashName = queryResult.dashName; - if (queryResult.isX) { - console.error( - `[lynx-web] css property: ${dashName} is not supported.`, - ); - } - } else { - dashName = key; - } - const valueStr = typeof value === 'number' ? value.toString() : value; - if (!valueStr) { // null or undefined - element.style.removeProperty(dashName); - } else { - const { transformedStyle } = transformParsedStyles([[ - dashName, - valueStr, - ]]); - for (const [property, value] of transformedStyle) { - element.style.setProperty(property, value); - } - } -}; - -export const __AddClass: AddClassPAPI = /*#__PURE__*/ ( - element, - className, -) => { - const newClassName = ((element.getAttribute('class') ?? '') + ' ' + className) - .trim(); - element.setAttribute('class', newClassName); -}; - -export const __SetInlineStyles: SetInlineStylesPAPI = /*#__PURE__*/ ( - element, - value, -) => { - if (!value) return; - if (typeof value === 'string') { - element.setAttribute('style', transformInlineStyleString(value)); - } else { - const { transformedStyle } = transformParsedStyles( - Object.entries(value).map(([k, value]) => - [ - hyphenateStyleName(k), - value?.toString?.() ?? '', - ] as [string, string] - ), - ); - const transformedStyleStr = transformedStyle.map(( - [property, value], - ) => `${property}:${value};`).join(''); - element.setAttribute('style', transformedStyleStr); - } -}; - -export const __GetTemplateParts: GetTemplatePartsPAPI = ( - templateElement, -) => { - const isTemplate = - templateElement.getAttribute(lynxElementTemplateMarkerAttribute) - !== null; - if (!isTemplate) { - return {}; - } - const templateUniqueId = __GetElementUniqueID(templateElement); - const parts: Record = {}; - const partElements = templateElement.querySelectorAll!( - `[${lynxUniqueIdAttribute}="${templateUniqueId}"] [${lynxPartIdAttribute}]:not([${lynxUniqueIdAttribute}="${templateUniqueId}"] [${lynxElementTemplateMarkerAttribute}] [${lynxPartIdAttribute}])`, - ) as unknown as HTMLElement[]; - for (const partElement of partElements) { - const partId = partElement.getAttribute(lynxPartIdAttribute); - if (partId) { - parts[partId] = partElement as HTMLElement; - } - } - return parts; -}; - -export const __MarkTemplateElement: MarkTemplateElementPAPI = ( - element, -) => { - element.setAttribute(lynxElementTemplateMarkerAttribute, ''); -}; - -export const __MarkPartElement: MarkPartElementPAPI = ( - element, - partId, -) => { - element.setAttribute(lynxPartIdAttribute, partId); -}; diff --git a/packages/web-platform/web-mainthread-apis/ts/style/cssPropertyMap.ts b/packages/web-platform/web-mainthread-apis/ts/style/cssPropertyMap.ts deleted file mode 100644 index 242ac1189c..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/style/cssPropertyMap.ts +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -const cacheForCamelize: Record = {}; - -export function camelize(str: string): string { - if (cacheForCamelize[str]) { - return cacheForCamelize[str]; - } - - const result = (str + '').replace(/-\D/g, function(match) { - return match.charAt(1).toUpperCase(); - }); - cacheForCamelize[str] = result; - return result; -} - -let index = 1; -const cssPropertyMap: Record< - number, - { name: string; dashName: string; isX: boolean } -> = {}; -const cssPropertyReverseMap: Record = {}; -const V = (name: string) => { - const k = index++; - const isX = name.startsWith('-x-'); - cssPropertyMap[k] = { name: camelize(name), dashName: name, isX }; - cssPropertyReverseMap[name] = k; -}; - -V('top'); -V('left'); -V('right'); -V('bottom'); -V('position'); -V('box-sizing'); -V('background-color'); -V('border-left-color'); -V('border-right-color'); -V('border-top-color'); -V('border-bottom-color'); -V('border-radius'); -V('border-top-left-radius'); -V('border-bottom-left-radius'); -V('border-top-right-radius'); -V('border-bottom-right-radius'); -V('border-width'); -V('border-left-width'); -V('border-right-width'); -V('border-top-width'); -V('border-bottom-width'); -V('color'); -V('opacity'); -V('display'); -V('overflow'); -V('height'); -V('width'); -V('max-width'); -V('min-width'); -V('max-height'); -V('min-height'); -V('padding'); -V('padding-left'); -V('padding-right'); -V('padding-top'); -V('padding-bottom'); -V('margin'); -V('margin-left'); -V('margin-right'); -V('margin-top'); -V('margin-bottom'); -V('white-space'); -V('letter-spacing'); -V('text-align'); -V('line-height'); -V('text-overflow'); -V('font-size'); -V('font-weight'); -V('flex'); -V('flex-grow'); -V('flex-shrink'); -V('flex-basis'); -V('flex-direction'); -V('flex-wrap'); -V('align-items'); -V('align-self'); -V('align-content'); -V('justify-content'); -V('background'); -V('border-color'); -V('font-family'); -V('font-style'); -V('transform'); -V('animation'); -V('animation-name'); -V('animation-duration'); -V('animation-timing-function'); -V('animation-delay'); -V('animation-iteration-count'); -V('animation-direction'); -V('animation-fill-mode'); -V('animation-play-state'); -V('line-spacing'); -V('border-style'); -V('order'); -V('box-shadow'); -V('transform-origin'); -V('linear-orientation'); -V('linear-weight-sum'); -V('linear-weight'); -V('linear-gravity'); -V('linear-layout-gravity'); -V('layout-animation-create-duration'); -V('layout-animation-create-timing-function'); -V('layout-animation-create-delay'); -V('layout-animation-create-property'); -V('layout-animation-delete-duration'); -V('layout-animation-delete-timing-function'); -V('layout-animation-delete-delay'); -V('layout-animation-delete-property'); -V('layout-animation-update-duration'); -V('layout-animation-update-timing-function'); -V('layout-animation-update-delay'); -V('adapt-font-size'); -V('aspect-ratio'); -V('text-decoration'); -V('text-shadow'); -V('background-image'); -V('background-position'); -V('background-origin'); -V('background-repeat'); -V('background-size'); -V('border'); -V('visibility'); -V('border-right'); -V('border-left'); -V('border-top'); -V('border-bottom'); -V('transition'); -V('transition-property'); -V('transition-duration'); -V('transition-delay'); -V('transition-timing-function'); -V('content'); -V('border-left-style'); -V('border-right-style'); -V('border-top-style'); -V('border-bottom-style'); -V('implicit-animation'); -V('overflow-x'); -V('overflow-y'); -V('word-break'); -V('background-clip'); -V('outline'); -V('outline-color'); -V('outline-style'); -V('outline-width'); -V('vertical-align'); -V('caret-color'); -V('direction'); -V('relative-id'); -V('relative-align-top'); -V('relative-align-right'); -V('relative-align-bottom'); -V('relative-align-left'); -V('relative-top-of'); -V('relative-right-of'); -V('relative-bottom-of'); -V('relative-left-of'); -V('relative-layout-once'); -V('relative-center'); -V('enter-transition-name'); -V('exit-transition-name'); -V('pause-transition-name'); -V('resume-transition-name'); -V('flex-flow'); -V('z-index'); -V('text-decoration-color'); -V('linear-cross-gravity'); -V('margin-inline-start'); -V('margin-inline-end'); -V('padding-inline-start'); -V('padding-inline-end'); -V('border-inline-start-color'); -V('border-inline-end-color'); -V('border-inline-start-width'); -V('border-inline-end-width'); -V('border-inline-start-style'); -V('border-inline-end-style'); -V('border-start-start-radius'); -V('border-end-start-radius'); -V('border-start-end-radius'); -V('border-end-end-radius'); -V('relative-align-inline-start'); -V('relative-align-inline-end'); -V('relative-inline-start-of'); -V('relative-inline-end-of'); -V('inset-inline-start'); -V('inset-inline-end'); -V('mask-image'); -V('grid-template-columns'); -V('grid-template-rows'); -V('grid-auto-columns'); -V('grid-auto-rows'); -V('grid-column-span'); -V('grid-row-span'); -V('grid-column-start'); -V('grid-column-end'); -V('grid-row-start'); -V('grid-row-end'); -V('grid-column-gap'); -V('grid-row-gap'); -V('justify-items'); -V('justify-self'); -V('grid-auto-flow'); -V('filter'); -V('list-main-axis-gap'); -V('list-cross-axis-gap'); -V('linear-direction'); -V('perspective'); -V('cursor'); -V('text-indent'); -V('clip-path'); -V('text-stroke'); -V('text-stroke-width'); -V('text-stroke-color'); -V('-x-auto-font-size'); -V('-x-auto-font-size-preset-sizes'); -V('mask'); -V('mask-repeat'); -V('mask-position'); -V('mask-clip'); -V('mask-origin'); -V('mask-size'); -V('gap'); -V('column-gap'); -V('row-gap'); -V('image-rendering'); -V('hyphens'); -V('-x-app-region'); -V( - '-x-animation-color-interpolation', -); -V('-x-handle-color'); -V('-x-handle-size'); -V('offset-path'); -V('offset-distance'); - -export function queryCSSProperty(index: number): { - name: string; - dashName: string; - isX: boolean; -} { - return cssPropertyMap[index]!; -} - -export function queryCSSPropertyNumber(name: string): number { - return cssPropertyReverseMap[name]!; -} - -export { cssPropertyMap }; diff --git a/packages/web-platform/web-mainthread-apis/ts/style/transformInlineStyle.ts b/packages/web-platform/web-mainthread-apis/ts/style/transformInlineStyle.ts deleted file mode 100644 index c26a9b8581..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/style/transformInlineStyle.ts +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export { - transformInlineStyleString, - transformParsedStyles, -} from '../utils/tokenizer.js'; diff --git a/packages/web-platform/web-mainthread-apis/ts/utils/createCrossThreadEvent.ts b/packages/web-platform/web-mainthread-apis/ts/utils/createCrossThreadEvent.ts deleted file mode 100644 index 30e96ab4f2..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/utils/createCrossThreadEvent.ts +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - lynxDatasetAttribute, - lynxUniqueIdAttribute, - type Cloneable, - type CloneableObject, - type LynxCrossThreadEvent, - type MinimalRawEventObject, -} from '@lynx-js/web-constants'; - -function toCloneableObject(obj: any): CloneableObject { - const cloneableObj: CloneableObject = {}; - for (const key in obj) { - const value = obj[key]; - if ( - typeof value === 'boolean' || typeof value === 'number' - || typeof value === 'string' || value === null - ) { - cloneableObj[key] = value; - } - } - return cloneableObj; -} - -export function createCrossThreadEvent( - domEvent: MinimalRawEventObject, - eventName: string, -): LynxCrossThreadEvent { - const targetElement = domEvent.target as HTMLElement; - const currentTargetElement = (domEvent - .currentTarget as HTMLElement).getAttribute - ? (domEvent.currentTarget as HTMLElement) - : undefined; - const type = domEvent.type; - const params: Cloneable = {}; - const isTrusted = domEvent.isTrusted; - const otherProperties: CloneableObject = {}; - let detail = domEvent.detail ?? {}; - if (type.match(/^transition/)) { - Object.assign(params, { - 'animation_type': 'keyframe-animation', - 'animation_name': domEvent.propertyName, - new_animator: true, // we support the new_animator only - }); - } else if (type.match(/animation/)) { - Object.assign(params, { - 'animation_type': 'keyframe-animation', - 'animation_name': domEvent.animationName, - new_animator: true, // we support the new_animator only - }); - } else if (type.startsWith('touch')) { - const touchEvent = domEvent; - const touch = [...touchEvent.touches as unknown as Touch[]]; - const targetTouches = [...touchEvent.targetTouches as unknown as Touch[]]; - const changedTouches = [...touchEvent.changedTouches as unknown as Touch[]]; - Object.assign(otherProperties, { - touches: isTrusted ? touch.map(toCloneableObject) : touch, - targetTouches: isTrusted - ? targetTouches.map( - toCloneableObject, - ) - : targetTouches, - changedTouches: isTrusted - ? changedTouches.map( - toCloneableObject, - ) - : changedTouches, - }); - } else if (type.startsWith('mouse')) { - const mouseEvent = domEvent as MouseEvent; - Object.assign(otherProperties, { - button: mouseEvent.button, - buttons: mouseEvent.buttons, - x: mouseEvent.x, - y: mouseEvent.y, - pageX: mouseEvent.pageX, - pageY: mouseEvent.pageY, - clientX: mouseEvent.clientX, - clientY: mouseEvent.clientY, - }); - } else if (type === 'click') { - detail = { - x: (domEvent as MouseEvent).x, - y: (domEvent as MouseEvent).y, - }; - } - const currentTargetDatasetString = currentTargetElement?.getAttribute( - lynxDatasetAttribute, - ); - const currentTargetDataset = currentTargetDatasetString - ? JSON.parse(decodeURIComponent(currentTargetDatasetString)) - : {}; - const targetDatasetString = targetElement.getAttribute(lynxDatasetAttribute); - const targetDataset = targetDatasetString - ? JSON.parse(decodeURIComponent(targetDatasetString)) - : {}; - - return { - type: eventName, - timestamp: domEvent.timeStamp, - target: { - id: targetElement.getAttribute('id'), - dataset: targetDataset, - uniqueId: Number(targetElement.getAttribute(lynxUniqueIdAttribute)), - }, - currentTarget: currentTargetElement - ? { - id: currentTargetElement.getAttribute('id'), - dataset: currentTargetDataset, - uniqueId: Number( - currentTargetElement.getAttribute(lynxUniqueIdAttribute), - ), - } - : null, - // @ts-expect-error - detail, - params, - ...otherProperties, - }; -} diff --git a/packages/web-platform/web-mainthread-apis/ts/utils/createExposureService.ts b/packages/web-platform/web-mainthread-apis/ts/utils/createExposureService.ts deleted file mode 100644 index 85af9d4542..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/utils/createExposureService.ts +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - lynxUniqueIdAttribute, - type ExposureWorkerEvent, - type MinimalRawEventObject, - type postExposureEndpoint, - type RpcCallType, -} from '@lynx-js/web-constants'; -import { createCrossThreadEvent } from './createCrossThreadEvent.js'; - -export function createExposureService( - rootDom: Pick, - postExposure: RpcCallType, -) { - let working = true; - let exposureCache: ExposureWorkerEvent[] = []; - let disexposureCache: ExposureWorkerEvent[] = []; - let delayCallback: ReturnType | null = null; - const onScreen = new Map(); - function exposureEventHandler(ev: Event) { - const exposureEvent = createCrossThreadEvent( - ev as MinimalRawEventObject, - ev.type, - ) as ExposureWorkerEvent; - exposureEvent.detail['unique-id'] = parseFloat( - (ev.target as Element).getAttribute(lynxUniqueIdAttribute)!, - ); - const exposureID = exposureEvent.detail.exposureID; - if (ev.type === 'exposure') { - exposureCache.push(exposureEvent); - onScreen.set(exposureID, exposureEvent); - } else { - disexposureCache.push(exposureEvent); - onScreen.delete(exposureID); - } - if (!delayCallback) { - delayCallback = setTimeout(() => { - if (exposureCache.length > 0 || disexposureCache.length > 0) { - const currentExposure = exposureCache; - const currentDisexposure = disexposureCache; - exposureCache = []; - disexposureCache = []; - postExposure({ - exposures: currentExposure, - disExposures: currentDisexposure, - }); - } - delayCallback = null; - }, 1000 / 20); - } - } - rootDom.addEventListener('exposure', exposureEventHandler, { - passive: true, - }); - rootDom.addEventListener('disexposure', exposureEventHandler, { - passive: true, - }); - - function switchExposureService(enable: boolean, sendEvent: boolean) { - if (enable && !working) { - // send all onScreen info - postExposure({ - exposures: [...onScreen.values()], - disExposures: [], - }); - } else if (!enable && working) { - if (sendEvent) { - postExposure({ - exposures: [], - disExposures: [...onScreen.values()], - }); - } - } - working = enable; - } - return { switchExposureService }; -} diff --git a/packages/web-platform/web-mainthread-apis/ts/utils/decodeCssOG.ts b/packages/web-platform/web-mainthread-apis/ts/utils/decodeCssOG.ts deleted file mode 100644 index 31c705f480..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/utils/decodeCssOG.ts +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import type { CssOGInfo } from '@lynx-js/web-constants'; - -/** - * @param classes - * @param styleInfo it should be flattened, which means there is no imports field in the styleInfo - * @param cssId - * @returns - */ -export function decodeCssOG( - classes: string, - styleInfo: CssOGInfo, - cssId: string | null, -) { - const classList = classes.split(' ').filter(e => e); - let declarations: [string, string][] = []; - const currentStyleInfo = styleInfo[cssId ?? '0']; - if (currentStyleInfo) { - for (const oneClassName of classList) { - const oneRule = currentStyleInfo[oneClassName]; - if (oneRule) declarations.push(...oneRule); - } - } else { - console.warn(`[lynx-web] cannot find styleinfo for cssid ${cssId}`); - } - return declarations.map(([property, value]) => `${property}:${value};`).join( - '', - ); -} diff --git a/packages/web-platform/web-mainthread-apis/ts/utils/processStyleInfo.ts b/packages/web-platform/web-mainthread-apis/ts/utils/processStyleInfo.ts deleted file mode 100644 index 91ebfb3564..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/utils/processStyleInfo.ts +++ /dev/null @@ -1,333 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - type StyleInfo, - type CssOGInfo, - type PageConfig, - type CSSRule, - cssIdAttribute, - lynxTagAttribute, - type SSRHydrateInfo, - lynxUniqueIdAttribute, - lynxEntryNameAttribute, - type FlattenedStyleInfo, - type FlattenedOneInfo, -} from '@lynx-js/web-constants'; -import { transformParsedStyles } from './tokenizer.js'; -import { decodeCssOG } from './decodeCssOG.js'; - -function topologicalSort( - styleInfo: StyleInfo, -): string[] { - /** - * kahn's algorithm - * 1. The styleInfo is already equivalent to a adjacency list. (cssId, import) - * 2. The styleInfo is a DAG therefore we don't need to do cyclic detection - */ - const queue: string[] = []; - const inDegreeMap = new Map(); - for (const [cssId, oneStyleInfo] of Object.entries(styleInfo)) { - !inDegreeMap.has(cssId) && inDegreeMap.set(cssId, 0); // initialize - for (const importCssId of oneStyleInfo.imports ?? []) { - const currentInDegree = inDegreeMap.get(importCssId) ?? 0; - inDegreeMap.set(importCssId, currentInDegree + 1); - } - } - for (const [cssId, inDegree] of inDegreeMap.entries()) { - if (inDegree === 0) { - queue.push(cssId); - } - } - const sortedCssIds: string[] = []; - while (queue.length > 0) { - const currentCssId = queue.shift()!; - sortedCssIds.push(currentCssId); - const currentAdjunction = styleInfo[currentCssId]?.imports; - if (currentAdjunction) { - for (const importCssId of currentAdjunction) { - const importInDegree = inDegreeMap.get(importCssId)! - 1; - inDegreeMap.set(importCssId, importInDegree); - if (importInDegree === 0) { - queue.push(importCssId); - } - } - } - } - return sortedCssIds; -} -function generateImportByMap( - styleInfo: StyleInfo, - sortedCssIds: string[], -): Map> { - const cssIdToImportBy = new Map>(); - for (const cssId of sortedCssIds) { - const currentAdjunction = styleInfo[cssId]?.imports; - if (currentAdjunction) { - const currentImportBy = cssIdToImportBy.get(cssId) ?? new Set([cssId]); - for (const importCssId of currentAdjunction) { - const importDeps = cssIdToImportBy.get(importCssId) - ?? new Set([importCssId]); - importDeps.add(cssId); - cssIdToImportBy.set(importCssId, currentImportBy.union(importDeps)); - } - cssIdToImportBy.set(cssId, currentImportBy); - } - } - return cssIdToImportBy; -} -/** - * get Transitive Closure of a Direct Acyclic Graph (DAG) - * 1. for each css, find all the imported by css files (directly and indirectly) - * 2. for each css, find all the importing css files (directly and indirectly) - * 3. return the flattened style info, do not modify the content and rules - */ -export function flattenStyleInfo( - styleInfo: StyleInfo, - cloneDeep?: boolean, -): FlattenedStyleInfo { - // Step 1. Topological sorting - const sortedCssIds = topologicalSort(styleInfo); - - // Step 2. generate deps; - const cssIdToImportBy = generateImportByMap(styleInfo, sortedCssIds); - sortedCssIds.reverse(); - - // Step 3. generate the flattened style info - return sortedCssIds.map(cssId => { - const oneInfo = styleInfo[cssId]; - const flattenedInfo: FlattenedOneInfo = oneInfo - ? { - content: cloneDeep - ? (oneInfo.content ? [...oneInfo.content] : []) - : (oneInfo.content ?? []), - rules: cloneDeep - ? (oneInfo.rules - ? oneInfo.rules.map(rule => ({ - sel: rule.sel.map(selectors => - selectors.map(arr => arr.slice()) as typeof selectors - ) as CSSRule['sel'], - decl: rule.decl.map(([k, v]) => [k, v]) as typeof rule.decl, - })) - : []) - : (oneInfo.rules ?? []), - importBy: Array.from(cssIdToImportBy.get(cssId) ?? [cssId]), - } - : { - content: [], - rules: [], - importBy: [cssId], - }; - return flattenedInfo; - }); -} - -/** - * apply the lynx css -> web css transformation - */ -export function transformToWebCss(styleInfo: FlattenedStyleInfo) { - for (const cssInfos of styleInfo) { - for (const rule of cssInfos.rules) { - const { sel: selectors, decl: declarations } = rule; - const { transformedStyle, childStyle } = transformParsedStyles( - declarations, - ); - rule.decl = transformedStyle; - if (childStyle.length > 0) { - cssInfos.rules.push({ - sel: selectors.map(selector => - selector.toSpliced( - -2, - 1, - /* replace the last combinator and insert at the end */ - ['>'], - ['*'], - [], - [], - [], - ) - ) as CSSRule['sel'], - decl: childStyle, - }); - } - } - } -} - -/** - * generate those styles applied by - */ -export function genCssContent( - styleInfo: FlattenedStyleInfo, - pageConfig: PageConfig, - entryName?: string, -): string { - function getExtraSelectors( - cssId: string, - ) { - let suffix; - if (!pageConfig.enableRemoveCSSScope) { - suffix = `[${cssIdAttribute}="${cssId}"]`; - } else { - suffix = `[${lynxTagAttribute}]`; - } - if (entryName) { - suffix = `${suffix}[${lynxEntryNameAttribute}=${ - JSON.stringify(entryName) - }]`; - } else { - suffix = `${suffix}:not([${lynxEntryNameAttribute}])`; - } - return suffix; - } - const finalCssContent: string[] = []; - for (const cssInfos of styleInfo) { - const declarationContent = cssInfos.rules.map((rule) => { - const { sel: selectorList, decl: declarations } = rule; - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice - const selectorString = cssInfos.importBy.map(cssId => { - const suffix = getExtraSelectors(cssId); - return selectorList.map( - (selectors) => { - return selectors.toSpliced(-4, 0, [suffix]).flat().join(''); - }, - ).join(','); - }).join(','); - const declarationString = declarations.map(([k, v]) => `${k}:${v};`).join( - '', - ); - return `${selectorString}{${declarationString}}`; - }).join(''); - finalCssContent.push(...cssInfos.content, declarationContent); - } - return finalCssContent.join('\n'); -} - -/** - * generate the css-in-js data - */ -export function genCssOGInfo(styleInfo: FlattenedStyleInfo): CssOGInfo { - const cssOGInfo: CssOGInfo = {}; - for (const oneInfo of styleInfo) { - oneInfo.rules = oneInfo.rules.filter(oneRule => { - oneRule.sel = oneRule.sel.filter(selectorList => { - const [ - classSelectors, - pseudoClassSelectors, - pseudoElementSelectors, - combinator, - ] = selectorList; - if ( - // only one class selector - classSelectors.length === 1 && classSelectors[0]![0] === '.' - && pseudoClassSelectors.length === 0 - && pseudoElementSelectors.length === 0 - && combinator.length === 0 - ) { - const selectorName = classSelectors[0]!.substring(1); - for (const cssId of oneInfo.importBy) { - if (!cssOGInfo[cssId]) { - cssOGInfo[cssId] = {}; - } - const currentDeclarations = cssOGInfo[cssId][selectorName]; - if (currentDeclarations) { - currentDeclarations.push(...oneRule.decl); - } else { - cssOGInfo[cssId][selectorName] = oneRule.decl; - } - } - - return false; // remove this selector from style info - } - return true; - }); - return oneRule.sel.length > 0; - }); - } - return cssOGInfo; -} - -export function appendStyleElement( - styleInfo: StyleInfo, - pageConfig: PageConfig, - rootDom: Node, - document: Document, - ssrHydrateInfo?: SSRHydrateInfo, - allOnUI?: boolean, -) { - const lynxUniqueIdToStyleRulesIndex: number[] = - ssrHydrateInfo?.lynxUniqueIdToStyleRulesIndex ?? []; - /** - * now create the style content - * 1. flatten the styleInfo - * 2. transform the styleInfo to web css - * 3. generate the css in js info - * 4. create the style element - * 5. append the style element to the root dom - */ - const flattenedStyleInfo = flattenStyleInfo( - styleInfo, - !!allOnUI, - ); - transformToWebCss(flattenedStyleInfo); - const cssOGInfo: CssOGInfo = pageConfig.enableCSSSelector - ? {} - : genCssOGInfo(flattenedStyleInfo); - const lazyCSSOGInfo: Record = {}; - let cardStyleElement: HTMLStyleElement; - if (ssrHydrateInfo?.cardStyleElement) { - cardStyleElement = ssrHydrateInfo.cardStyleElement; - } else { - cardStyleElement = document.createElement( - 'style', - ) as unknown as HTMLStyleElement; - cardStyleElement.textContent = genCssContent( - flattenedStyleInfo, - pageConfig, - undefined, - ); - rootDom.appendChild(cardStyleElement); - } - const updateCssOGStyle: ( - uniqueId: number, - newClassName: string, - cssID: string | null, - entryName: string | null, - ) => void = (uniqueId, newClassName, cssID, entryName) => { - const cardStyleElementSheet = - (cardStyleElement as unknown as HTMLStyleElement).sheet!; - const styleMap = entryName && lazyCSSOGInfo[entryName] - ? lazyCSSOGInfo[entryName] - : cssOGInfo; - const newStyles = decodeCssOG(newClassName, styleMap, cssID); - if (lynxUniqueIdToStyleRulesIndex[uniqueId] !== undefined) { - const rule = cardStyleElementSheet - .cssRules[lynxUniqueIdToStyleRulesIndex[uniqueId]] as CSSStyleRule; - rule.style.cssText = newStyles; - } else { - const index = cardStyleElementSheet.insertRule( - `[${lynxUniqueIdAttribute}="${uniqueId}"]{${newStyles}}`, - cardStyleElementSheet.cssRules.length, - ); - lynxUniqueIdToStyleRulesIndex[uniqueId] = index; - } - }; - const updateLazyComponentStyle = ( - styleInfo: StyleInfo, - entryName: string, - ) => { - const flattenedStyleInfo = flattenStyleInfo(styleInfo, !!allOnUI); - transformToWebCss(flattenedStyleInfo); - if (!pageConfig.enableCSSSelector) { - lazyCSSOGInfo[entryName] = genCssOGInfo(flattenedStyleInfo); - } - const newStyleSheet = genCssContent( - flattenedStyleInfo, - pageConfig, - entryName, - ); - cardStyleElement.textContent += newStyleSheet; - }; - return { updateCssOGStyle, updateLazyComponentStyle }; -} diff --git a/packages/web-platform/web-mainthread-apis/ts/utils/tokenizer.ts b/packages/web-platform/web-mainthread-apis/ts/utils/tokenizer.ts deleted file mode 100644 index 24d7878643..0000000000 --- a/packages/web-platform/web-mainthread-apis/ts/utils/tokenizer.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { wasm } from '../../wasm/index.js'; -export function transformInlineStyleString(str: string): string { - return wasm.transform_raw_u16_inline_style_ptr(str) ?? str; -} - -export function transformParsedStyles( - styles: [string, string][], -): { childStyle: [string, string][]; transformedStyle: [string, string][] } { - let childStyle: [string, string][] = []; - let transformedStyle: [string, string][] = []; - for (const [property, value] of styles) { - const transformedResult = wasm - .transform_raw_u16_inline_style_ptr_parsed( - property, - value, - ); - if (transformedResult) { - const [transformedStyleForCurrent, childStyleForCurrent] = - transformedResult; - transformedStyle = transformedStyle.concat(transformedStyleForCurrent); - if (childStyleForCurrent) { - childStyle = childStyle.concat(childStyleForCurrent); - } - } else { - // If the transformation fails, we keep the original style - transformedStyle.push([property, value]); - } - } - return { - childStyle, - transformedStyle, - }; -} diff --git a/packages/web-platform/web-mainthread-apis/tsconfig.json b/packages/web-platform/web-mainthread-apis/tsconfig.json deleted file mode 100644 index 29b378c92f..0000000000 --- a/packages/web-platform/web-mainthread-apis/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "composite": true, - "rootDir": "./ts", - "outDir": "./dist", - "lib": ["ESNext", "DOM"], - }, - "include": ["ts"], - "references": [ - { - "path": "../web-constants", - }, - ], -} diff --git a/packages/web-platform/web-mainthread-apis/turbo.json b/packages/web-platform/web-mainthread-apis/turbo.json deleted file mode 100644 index 939d6be9f2..0000000000 --- a/packages/web-platform/web-mainthread-apis/turbo.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "extends": [ - "//" - ], - "tasks": { - "build": { - "dependsOn": [ - "^build" - ], - "inputs": [ - "ts/**", - "src/**" - ], - "outputs": [ - "dist/**", - "binary/**" - ] - } - } -} diff --git a/packages/web-platform/web-mainthread-apis/wasm/index.d.ts b/packages/web-platform/web-mainthread-apis/wasm/index.d.ts deleted file mode 100644 index 8e19f2d7c5..0000000000 --- a/packages/web-platform/web-mainthread-apis/wasm/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export type WASMModule = typeof import('./standard.js'); -export declare let wasm: WASMModule; -export declare function initWasm(): Promise; diff --git a/packages/web-platform/web-mainthread-apis/wasm/index.js b/packages/web-platform/web-mainthread-apis/wasm/index.js deleted file mode 100644 index 372b2e22ab..0000000000 --- a/packages/web-platform/web-mainthread-apis/wasm/index.js +++ /dev/null @@ -1,26 +0,0 @@ -import { referenceTypes, simd } from 'wasm-feature-detect'; -export let wasm; -export async function initWasm() { - const [supportsReferenceTypes, supportsSimd] = await Promise.all([ - referenceTypes(), - simd(), - ]); - if (supportsReferenceTypes && supportsSimd) { - wasm = await import( - /* webpackMode: "eager" */ - /* webpackFetchPriority: "high" */ - /* webpackChunkName: "standard-wasm-chunk" */ - /* webpackPrefetch: true */ - /* webpackPreload: true */ - './standard.js' - ); - } else { - wasm = await import( - /* webpackMode: "lazy" */ - /* webpackChunkName: "legacy-wasm-chunk" */ - /* webpackPrefetch: false */ - './legacy.js' - ); - } -} -await initWasm(); diff --git a/packages/web-platform/web-mainthread-apis/wasm/legacy.js b/packages/web-platform/web-mainthread-apis/wasm/legacy.js deleted file mode 100644 index b3d20eea31..0000000000 --- a/packages/web-platform/web-mainthread-apis/wasm/legacy.js +++ /dev/null @@ -1 +0,0 @@ -export * from '../binary/legacy.js'; diff --git a/packages/web-platform/web-mainthread-apis/wasm/standard.d.ts b/packages/web-platform/web-mainthread-apis/wasm/standard.d.ts deleted file mode 100644 index efc4908f05..0000000000 --- a/packages/web-platform/web-mainthread-apis/wasm/standard.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -export function transform_raw_u16_inline_style_ptr( - str: string, -): string | undefined; -export function transform_raw_u16_inline_style_ptr_parsed( - name: string, - value: string, -): [[string, string][], [string, string][]] | undefined; diff --git a/packages/web-platform/web-mainthread-apis/wasm/standard.js b/packages/web-platform/web-mainthread-apis/wasm/standard.js deleted file mode 100644 index a010daeb8a..0000000000 --- a/packages/web-platform/web-mainthread-apis/wasm/standard.js +++ /dev/null @@ -1 +0,0 @@ -export * from '../binary/standard.js'; diff --git a/packages/web-platform/web-rsbuild-plugin/package.json b/packages/web-platform/web-rsbuild-plugin/package.json index bf0ea7fa50..b700c62152 100644 --- a/packages/web-platform/web-rsbuild-plugin/package.json +++ b/packages/web-platform/web-rsbuild-plugin/package.json @@ -29,7 +29,7 @@ "loader-utils": "^3.3.1" }, "devDependencies": { - "@lynx-js/web-core": "workspace:*", + "@lynx-js/web-core-wasm": "workspace:*", "@lynx-js/web-elements": "workspace:*", "@rsbuild/core": "catalog:rsbuild", "@types/loader-utils": "^2.0.6", @@ -38,7 +38,7 @@ "vitest": "^3.2.4" }, "peerDependencies": { - "@lynx-js/web-core": ">0.13.0", + "@lynx-js/web-core-wasm": ">0.0.0", "@rsbuild/core": "*" } } diff --git a/packages/web-platform/web-rsbuild-plugin/tests/fixtures/index.ts b/packages/web-platform/web-rsbuild-plugin/tests/fixtures/index.ts index e9a912b823..288a927c20 100644 --- a/packages/web-platform/web-rsbuild-plugin/tests/fixtures/index.ts +++ b/packages/web-platform/web-rsbuild-plugin/tests/fixtures/index.ts @@ -1,5 +1,4 @@ -import '@lynx-js/web-core'; -import '@lynx-js/web-core/index.css'; +import '@lynx-js/web-core-wasm/client'; import '@lynx-js/web-elements/all'; import '@lynx-js/web-elements/index.css'; document.body.innerHTML = ` diff --git a/packages/web-platform/web-rsbuild-server-middleware/package.json b/packages/web-platform/web-rsbuild-server-middleware/package.json index a4ef2ca27b..4377d9b3a4 100644 --- a/packages/web-platform/web-rsbuild-server-middleware/package.json +++ b/packages/web-platform/web-rsbuild-server-middleware/package.json @@ -26,7 +26,7 @@ "build": "rsbuild build" }, "devDependencies": { - "@lynx-js/web-core": "workspace:*", + "@lynx-js/web-core-wasm": "workspace:*", "@lynx-js/web-elements": "workspace:*", "@rsbuild/core": "catalog:rsbuild", "rsbuild-plugin-arethetypeswrong": "0.2.0", diff --git a/packages/web-platform/web-rsbuild-server-middleware/src/web/index.ts b/packages/web-platform/web-rsbuild-server-middleware/src/web/index.ts index caf72bc96d..cf3490ec36 100644 --- a/packages/web-platform/web-rsbuild-server-middleware/src/web/index.ts +++ b/packages/web-platform/web-rsbuild-server-middleware/src/web/index.ts @@ -1,9 +1,7 @@ -import '@lynx-js/web-core'; -import '@lynx-js/web-elements/all'; -import '@lynx-js/web-core/index.css'; +import '@lynx-js/web-core-wasm/client'; import '@lynx-js/web-elements/index.css'; import './index.css'; -import type { LynxView } from '@lynx-js/web-core'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; const INIT_DATA_KEY = 'lynx-web-core-init-data'; const GLOBAL_PROPS_KEY = 'lynx-web-core-global-props'; diff --git a/packages/web-platform/web-rsbuild-server-middleware/tsconfig.json b/packages/web-platform/web-rsbuild-server-middleware/tsconfig.json index 8d28f31891..40f42bee69 100644 --- a/packages/web-platform/web-rsbuild-server-middleware/tsconfig.json +++ b/packages/web-platform/web-rsbuild-server-middleware/tsconfig.json @@ -8,7 +8,6 @@ }, "include": ["src/node"], "references": [ - { "path": "../web-core/tsconfig.json" }, { "path": "../web-elements/tsconfig.json" }, ], } diff --git a/packages/web-platform/web-tests/package.json b/packages/web-platform/web-tests/package.json index 9c8ea84f36..90fdb2bfc8 100644 --- a/packages/web-platform/web-tests/package.json +++ b/packages/web-platform/web-tests/package.json @@ -25,19 +25,13 @@ }, "devDependencies": { "@lynx-js/lynx-core": "0.1.3", - "@lynx-js/offscreen-document": "workspace:*", "@lynx-js/playwright-fixtures": "workspace:*", "@lynx-js/react": "workspace:*", "@lynx-js/react-rsbuild-plugin": "workspace:*", "@lynx-js/rspeedy": "workspace:*", - "@lynx-js/web-constants": "workspace:*", - "@lynx-js/web-core": "workspace:*", - "@lynx-js/web-core-server": "workspace:*", - "@lynx-js/web-elements": "workspace:*", - "@lynx-js/web-mainthread-apis": "workspace:*", + "@lynx-js/web-core-wasm": "workspace:*", "@lynx-js/web-platform-rsbuild-plugin": "workspace:*", "@lynx-js/web-rsbuild-server-middleware": "workspace:*", - "@lynx-js/webpack-dev-transport": "workspace:*", "@playwright/test": "^1.58.2", "@rspack/cli": "catalog:rspack", "@rspack/core": "catalog:rspack", diff --git a/packages/web-platform/web-tests/server.js b/packages/web-platform/web-tests/server.js index c138a33c9c..0b3ce44ba5 100644 --- a/packages/web-platform/web-tests/server.js +++ b/packages/web-platform/web-tests/server.js @@ -1,38 +1,22 @@ -import { createLynxView } from '@lynx-js/web-core-server'; +import { executeTemplate } from '@lynx-js/web-core-wasm/server'; import { readFile } from 'node:fs/promises'; import { fileURLToPath } from 'node:url'; import path from 'node:path'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); export async function loadTemplate(caseName) { - return JSON.parse( - await readFile( - path.join(__dirname, 'dist', 'ssr', caseName, 'index.web.json'), - 'utf-8', - ), + return await readFile( + path.join(__dirname, 'dist', 'ssr', caseName, 'index.web.bundle'), ); } export async function SSR(rawTemplate, caseName, projectName = 'fp-only') { - const lynxView = await createLynxView({ - browserConfig: { - pixelRatio: 1, - pixelHeight: 800, - pixelWidth: 375, - }, - tagMap: {}, - initData: { mockData: 'mockData' }, - globalProps: {}, - template: rawTemplate, - templateName: caseName, - hydrateUrl: `/dist/ssr/${caseName}/index.web.json`, - injectStyles: - `@import url("/${projectName}.css"); .injected-style-rules{background:green}`, - autoSize: true, - lynxViewStyle: 'width:100vw; max-width: 500px;', - threadStrategy: 'all-on-ui', - }); - const ssrHtml = await lynxView.renderToString(); - return ssrHtml.toString('utf-16le'); + const ssrHtml = executeTemplate( + rawTemplate, + { mockData: 'mockData' }, + {}, + [], + ); + return ssrHtml; } export async function genTemplate(caseName, projectName = 'fp-only') { const ssrHtml = await SSR( diff --git a/packages/web-platform/web-tests/shell-project/fp-only.ts b/packages/web-platform/web-tests/shell-project/fp-only.ts index 58e054a336..53a3aa02e1 100644 --- a/packages/web-platform/web-tests/shell-project/fp-only.ts +++ b/packages/web-platform/web-tests/shell-project/fp-only.ts @@ -1,3 +1,2 @@ import '@lynx-js/web-elements/index.css'; -import '@lynx-js/web-core/index.css'; import './index.css'; diff --git a/packages/web-platform/web-tests/shell-project/index.ts b/packages/web-platform/web-tests/shell-project/index.ts index 6000788777..292f91fe56 100644 --- a/packages/web-platform/web-tests/shell-project/index.ts +++ b/packages/web-platform/web-tests/shell-project/index.ts @@ -2,7 +2,7 @@ // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. -import type { LynxTemplate, LynxView } from '@lynx-js/web-core'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; import { lynxViewTests } from './lynx-view.ts'; const ENABLE_MULTI_THREAD = !!process.env.ENABLE_MULTI_THREAD; @@ -56,34 +56,7 @@ if (casename) { } if (casename.includes('custom-template-loader')) { - lynxView.customTemplateLoader = async () => { - const template = { - styleInfo: {}, - pageConfig: { - enableCSSSelector: true, - enableRemoveCSSScope: true, - defaultDisplayLinear: true, - defaultOverflowVisible: true, - enableJSDataProcessor: false, - }, - customSections: {}, - lepusCode: { - root: ` - - let root = __CreatePage('page', 0); - __AddInlineStyle(root, 'min-height', '80px'); - __AddInlineStyle(root, 'width', '80px'); - __AddInlineStyle(root, 'background', 'green'); - __SetID(root, 'target'); - __FlushElementTree(); - `, - }, - manifest: { - '/app-service.js': '', - }, - } as LynxTemplate; - return template; - }; + // custom template loader is not supported by web-core-wasm } if (casename === 'api-createLynxView-browserConfig') { diff --git a/packages/web-platform/web-tests/shell-project/lynx-view.ts b/packages/web-platform/web-tests/shell-project/lynx-view.ts index 1238a0a30c..804f52ac6c 100644 --- a/packages/web-platform/web-tests/shell-project/lynx-view.ts +++ b/packages/web-platform/web-tests/shell-project/lynx-view.ts @@ -1,11 +1,10 @@ // Copyright 2023 The Lynx Authors. All rights reserved. // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. -import type { LynxView } from '@lynx-js/web-core'; -import '@lynx-js/web-core'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; +import '@lynx-js/web-core-wasm/client'; import '@lynx-js/web-elements/all'; import '@lynx-js/web-elements/index.css'; -import '@lynx-js/web-core/index.css'; import './index.css'; export const lynxViewTests = ( diff --git a/packages/web-platform/web-tests/shell-project/web-core.ts b/packages/web-platform/web-tests/shell-project/web-core.ts index 0e81fc3ba1..16fa062760 100644 --- a/packages/web-platform/web-tests/shell-project/web-core.ts +++ b/packages/web-platform/web-tests/shell-project/web-core.ts @@ -1,10 +1,9 @@ // Copyright 2023 The Lynx Authors. All rights reserved. // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. -import type { LynxView } from '@lynx-js/web-core'; -import '@lynx-js/web-core'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; +import '@lynx-js/web-core-wasm/client'; import '@lynx-js/web-elements/index.css'; -import '@lynx-js/web-core/index.css'; import './index.css'; const ENABLE_MULTI_THREAD = !!process.env.ENABLE_MULTI_THREAD; diff --git a/packages/web-platform/web-tests/tsconfig.json b/packages/web-platform/web-tests/tsconfig.json index b69d03d61f..2789eb4a3d 100644 --- a/packages/web-platform/web-tests/tsconfig.json +++ b/packages/web-platform/web-tests/tsconfig.json @@ -14,7 +14,6 @@ { "path": "../web-constants/tsconfig.json" }, { "path": "../web-mainthread-apis/tsconfig.json" }, { "path": "../web-core-server/tsconfig.json" }, - { "path": "../web-core/tsconfig.json" }, /** packages-end */ ], } diff --git a/packages/web-platform/web-worker-runtime/CHANGELOG.md b/packages/web-platform/web-worker-runtime/CHANGELOG.md deleted file mode 100644 index 8691b69f2b..0000000000 --- a/packages/web-platform/web-worker-runtime/CHANGELOG.md +++ /dev/null @@ -1,966 +0,0 @@ -# @lynx-js/web-worker-runtime - -## 0.19.9 - -### Patch Changes - -- Updated dependencies [[`2efecc2`](https://github.com/lynx-family/lynx-stack/commit/2efecc252c746831e7566e3c81fd7b04a45c5dbf)]: - - @lynx-js/web-constants@0.19.9 - - @lynx-js/web-mainthread-apis@0.19.9 - - @lynx-js/web-worker-rpc@0.19.9 - -## 0.19.8 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.8 - - @lynx-js/web-mainthread-apis@0.19.8 - - @lynx-js/web-worker-rpc@0.19.8 - -## 0.19.7 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.7 - - @lynx-js/web-mainthread-apis@0.19.7 - - @lynx-js/web-worker-rpc@0.19.7 - -## 0.19.6 - -### Patch Changes - -- feat: support lynx.reload() ([#2127](https://github.com/lynx-family/lynx-stack/pull/2127)) - -- Updated dependencies [[`179f984`](https://github.com/lynx-family/lynx-stack/commit/179f9844adf00ff4b2cd450ffb943649441c87d3), [`f7133c1`](https://github.com/lynx-family/lynx-stack/commit/f7133c137f094063e991dfa0e993ea92177aa173), [`6c2b51a`](https://github.com/lynx-family/lynx-stack/commit/6c2b51a661ae244eb40671f63f29ee971e084ed4), [`556fe9f`](https://github.com/lynx-family/lynx-stack/commit/556fe9fded90945a7926093897288d5302c314d3), [`5b589ab`](https://github.com/lynx-family/lynx-stack/commit/5b589ab53b01a8e2357d3ccbb159edab004086d3)]: - - @lynx-js/web-constants@0.19.6 - - @lynx-js/web-mainthread-apis@0.19.6 - - @lynx-js/web-worker-rpc@0.19.6 - -## 0.19.5 - -### Patch Changes - -- Updated dependencies [[`a91173c`](https://github.com/lynx-family/lynx-stack/commit/a91173c986ce3f358f1c11c788ca46a0529c701d)]: - - @lynx-js/web-worker-rpc@0.19.5 - - @lynx-js/web-constants@0.19.5 - - @lynx-js/web-mainthread-apis@0.19.5 - -## 0.19.4 - -### Patch Changes - -- Updated dependencies [[`bba05e2`](https://github.com/lynx-family/lynx-stack/commit/bba05e2ed06cca8009ad415fd9777e8334a0887a)]: - - @lynx-js/web-worker-rpc@0.19.4 - - @lynx-js/web-constants@0.19.4 - - @lynx-js/web-mainthread-apis@0.19.4 - -## 0.19.3 - -### Patch Changes - -- Updated dependencies [[`986761d`](https://github.com/lynx-family/lynx-stack/commit/986761dd1e9e631f8118faec68188f29f78e9236)]: - - @lynx-js/web-worker-rpc@0.19.3 - - @lynx-js/web-constants@0.19.3 - - @lynx-js/web-mainthread-apis@0.19.3 - -## 0.19.2 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.19.2 - - @lynx-js/web-mainthread-apis@0.19.2 - - @lynx-js/web-worker-rpc@0.19.2 - -## 0.19.1 - -### Patch Changes - -- Updated dependencies [[`f7256d5`](https://github.com/lynx-family/lynx-stack/commit/f7256d5bd920b2f6c0cadab44455585c35621b35)]: - - @lynx-js/web-mainthread-apis@0.19.1 - - @lynx-js/web-constants@0.19.1 - - @lynx-js/web-worker-rpc@0.19.1 - -## 0.19.0 - -### Patch Changes - -- Updated dependencies [[`40c3a1a`](https://github.com/lynx-family/lynx-stack/commit/40c3a1a0436701e46b505301c4ba66a8f68de7c0), [`46bd5ee`](https://github.com/lynx-family/lynx-stack/commit/46bd5eea324d0c8348f44b3d0b437e745411ab5c)]: - - @lynx-js/web-mainthread-apis@0.19.0 - - @lynx-js/web-constants@0.19.0 - - @lynx-js/web-worker-rpc@0.19.0 - -## 0.18.4 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.18.4 - - @lynx-js/web-mainthread-apis@0.18.4 - - @lynx-js/web-worker-rpc@0.18.4 - -## 0.18.3 - -### Patch Changes - -- fix: `this` may be undefined in Card(). ([#1922](https://github.com/lynx-family/lynx-stack/pull/1922)) - -- feat: add \_\_GetSourceMapRelease API for nativeApp. ([#1923](https://github.com/lynx-family/lynx-stack/pull/1923)) - -- Updated dependencies [[`fece7d0`](https://github.com/lynx-family/lynx-stack/commit/fece7d0a92fa76948488373757a27dff52a90437), [`ebc1a60`](https://github.com/lynx-family/lynx-stack/commit/ebc1a606318e9809e8a07457e18536b59be12a18)]: - - @lynx-js/web-mainthread-apis@0.18.3 - - @lynx-js/web-constants@0.18.3 - - @lynx-js/web-worker-rpc@0.18.3 - -## 0.18.2 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.18.2 - - @lynx-js/web-mainthread-apis@0.18.2 - - @lynx-js/web-worker-rpc@0.18.2 - -## 0.18.1 - -### Patch Changes - -- Updated dependencies [[`70a18fc`](https://github.com/lynx-family/lynx-stack/commit/70a18fce0083743e4516eefc91c0392d748b855f)]: - - @lynx-js/web-mainthread-apis@0.18.1 - - @lynx-js/web-constants@0.18.1 - - @lynx-js/web-worker-rpc@0.18.1 - -## 0.18.0 - -### Patch Changes - -- fix: ([#1837](https://github.com/lynx-family/lynx-stack/pull/1837)) - - 1. `LynxView.updateData()` cannot trigger `dataProcessor`. - - 2. **This is a break change:** The second parameter of `LynxView.updateData()` has been changed from `UpdateDataType` to `string`, which is the `processorName` (default is `default` which will use `defaultDataProcessor`). This change is to better align with Native. The current complete type is as follows: - - ```ts - LynxView.updateData(data: Cloneable, processorName?: string | undefined, callback?: (() => void) | undefined): void - ``` - -- Updated dependencies [[`77397fd`](https://github.com/lynx-family/lynx-stack/commit/77397fd535cf60556f8f82f7ef8dae8a623d1625), [`7d90ed5`](https://github.com/lynx-family/lynx-stack/commit/7d90ed52a20fd7665a3517507800e7e29426f6f9)]: - - @lynx-js/web-constants@0.18.0 - - @lynx-js/web-mainthread-apis@0.18.0 - - @lynx-js/web-worker-rpc@0.18.0 - -## 0.17.2 - -### Patch Changes - -- feat: support load bts chunk from remote address ([#1834](https://github.com/lynx-family/lynx-stack/pull/1834)) - - - re-support chunk splitting - - support lynx.requireModule with a json file - - support lynx.requireModule, lynx.requireModuleAsync with a remote url - - support to add a breakpoint in chrome after reloading the web page - -- Updated dependencies [[`a35a245`](https://github.com/lynx-family/lynx-stack/commit/a35a2452e5355bda3c475f9a750a86085e0cf56a)]: - - @lynx-js/web-constants@0.17.2 - - @lynx-js/web-mainthread-apis@0.17.2 - - @lynx-js/web-worker-rpc@0.17.2 - -## 0.17.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.17.1 - - @lynx-js/web-mainthread-apis@0.17.1 - - @lynx-js/web-worker-rpc@0.17.1 - -## 0.17.0 - -### Patch Changes - -- Updated dependencies [[`721635d`](https://github.com/lynx-family/lynx-stack/commit/721635de6c1d2d617c7cbaa86e7d816c42d62930), [`93d707b`](https://github.com/lynx-family/lynx-stack/commit/93d707b82a59f7256952e21da6dcad2999f8233d), [`d150ed4`](https://github.com/lynx-family/lynx-stack/commit/d150ed440a4f1e9d9a3a2911adf6e6fa39a0c589)]: - - @lynx-js/web-mainthread-apis@0.17.0 - - @lynx-js/web-constants@0.17.0 - - @lynx-js/web-worker-rpc@0.17.0 - -## 0.16.1 - -### Patch Changes - -- feat: supports lazy bundle. (This feature requires `@lynx-js/lynx-core >= 0.1.3`) ([#1235](https://github.com/lynx-family/lynx-stack/pull/1235)) - -- Updated dependencies [[`608f375`](https://github.com/lynx-family/lynx-stack/commit/608f375e20732cc4c9f141bfbf9800ba6896100b)]: - - @lynx-js/web-mainthread-apis@0.16.1 - - @lynx-js/web-constants@0.16.1 - - @lynx-js/web-worker-rpc@0.16.1 - -## 0.16.0 - -### Minor Changes - -- refactor: provide the mts a real globalThis ([#1589](https://github.com/lynx-family/lynx-stack/pull/1589)) - - Before this change, We create a function wrapper and a fake globalThis for Javascript code. - - This caused some issues. - - After this change, we will create an iframe for createing an isolated Javascript context. - - This means the globalThis will be the real one. - -### Patch Changes - -- fix: the SystemInfo in bts should be assigned to the globalThis ([#1599](https://github.com/lynx-family/lynx-stack/pull/1599)) - -- Updated dependencies [[`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`bb53d9a`](https://github.com/lynx-family/lynx-stack/commit/bb53d9a035f607e7c89952098d4ed77877a2e3c1), [`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`c1f8715`](https://github.com/lynx-family/lynx-stack/commit/c1f8715a81b2e69ff46fc363013626db4468c209)]: - - @lynx-js/web-mainthread-apis@0.16.0 - - @lynx-js/web-constants@0.16.0 - - @lynx-js/offscreen-document@0.1.4 - - @lynx-js/web-worker-rpc@0.16.0 - -## 0.15.7 - -### Patch Changes - -- fix: globalThis is never accessible in MTS ([#1531](https://github.com/lynx-family/lynx-stack/pull/1531)) - -- Updated dependencies [[`70863fb`](https://github.com/lynx-family/lynx-stack/commit/70863fbc311d8885ebda40855668097b0631f521)]: - - @lynx-js/web-mainthread-apis@0.15.7 - - @lynx-js/web-constants@0.15.7 - - @lynx-js/web-worker-rpc@0.15.7 - -## 0.15.6 - -### Patch Changes - -- Updated dependencies [[`405a917`](https://github.com/lynx-family/lynx-stack/commit/405a9170442ae32603b7687549b49ab4b34aff92), [`b8f89e2`](https://github.com/lynx-family/lynx-stack/commit/b8f89e25f106a15ba9d70f2df06dfb684cbb6633), [`f76aae9`](https://github.com/lynx-family/lynx-stack/commit/f76aae9ea06abdc7022ba508d22f9f4eb00864e8), [`b8b060b`](https://github.com/lynx-family/lynx-stack/commit/b8b060b9bef722bb47bd90c33fab3922160c711d), [`d8381a5`](https://github.com/lynx-family/lynx-stack/commit/d8381a58d12af6424cab4955617251e798bdc9f1), [`214898b`](https://github.com/lynx-family/lynx-stack/commit/214898bb9c74fc9b44e68cb220a4c02485102ce2), [`ab8cee4`](https://github.com/lynx-family/lynx-stack/commit/ab8cee4bab384fa905c045c4b4b93e5d4a95d57f)]: - - @lynx-js/web-mainthread-apis@0.15.6 - - @lynx-js/web-constants@0.15.6 - - @lynx-js/web-worker-rpc@0.15.6 - -## 0.15.5 - -### Patch Changes - -- feat: support path() for `createQuerySelector` ([#1456](https://github.com/lynx-family/lynx-stack/pull/1456)) - - - Added `getPathInfo` API to `NativeApp` and its cross-thread handler for retrieving the path from a DOM node to the root. - - Implemented endpoint and handler registration in both background and UI threads. - - Implemented `nativeApp.getPathInfo()` - -- Updated dependencies [[`29434ae`](https://github.com/lynx-family/lynx-stack/commit/29434aec853f14242f521316429cf07a93b8c371), [`fb7096b`](https://github.com/lynx-family/lynx-stack/commit/fb7096bb3c79166cd619a407095b8206eccb7918)]: - - @lynx-js/web-mainthread-apis@0.15.5 - - @lynx-js/web-constants@0.15.5 - - @lynx-js/web-worker-rpc@0.15.5 - -## 0.15.4 - -### Patch Changes - -- optimize IO for all-on-ui: make startMainThreadWorker async and defer import ([#1385](https://github.com/lynx-family/lynx-stack/pull/1385)) - -- Updated dependencies [[`22ca433`](https://github.com/lynx-family/lynx-stack/commit/22ca433eb96b39724c6eb47ce0a938d291bbdef2), [`143e481`](https://github.com/lynx-family/lynx-stack/commit/143e481b4353b3c3d2e8d9cc4f201442ca56f097)]: - - @lynx-js/web-mainthread-apis@0.15.4 - - @lynx-js/web-constants@0.15.4 - - @lynx-js/web-worker-rpc@0.15.4 - -## 0.15.3 - -### Patch Changes - -- Updated dependencies [[`0da5ef0`](https://github.com/lynx-family/lynx-stack/commit/0da5ef03e41f20e9f8019c6dc03cb4a38ab18854)]: - - @lynx-js/web-constants@0.15.3 - - @lynx-js/web-mainthread-apis@0.15.3 - - @lynx-js/web-worker-rpc@0.15.3 - -## 0.15.2 - -### Patch Changes - -- Updated dependencies [[`cebda59`](https://github.com/lynx-family/lynx-stack/commit/cebda592ac5c7d152c877c2ac5ec403d477077e1), [`1443e46`](https://github.com/lynx-family/lynx-stack/commit/1443e468a353363e29aab0d90cd8b91c232a5525), [`5062128`](https://github.com/lynx-family/lynx-stack/commit/5062128c68e21abcf276ebcb40d7cc8f6e54244b), [`f656b7f`](https://github.com/lynx-family/lynx-stack/commit/f656b7f0d390d69c0da0d11a6c9b3f66ae877ac8)]: - - @lynx-js/web-mainthread-apis@0.15.2 - - @lynx-js/web-constants@0.15.2 - - @lynx-js/web-worker-rpc@0.15.2 - -## 0.15.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-mainthread-apis@0.15.1 - - @lynx-js/web-constants@0.15.1 - - @lynx-js/web-worker-rpc@0.15.1 - -## 0.15.0 - -### Minor Changes - -- refactor: move exposure system to web-core ([#1254](https://github.com/lynx-family/lynx-stack/pull/1254)) - - **THIS IS A BREAKING CHANGE** - - **You'll need to upgrade your @lynx-js/web-elements to >= 0.8.0** - - For SSR and better performance, we moved the lynx's exposure system from web-element to web-core. - - Before this commit, we create Intersection observers by creating HTMLElements. - - After this commit, we will create such Intersection observers after dom stabled. - - Also, the setInterval for exposure has been removed, now we use an on time lazy timer for such features. - -### Patch Changes - -- feat: add `napiModulesPath` to bundle napiModules into worker runtime. ([#1134](https://github.com/lynx-family/lynx-stack/pull/1134)) - - Usage: - - ```ts - import { pluginWebPlatform } from '@lynx-js/web-platform-rsbuild-plugin'; - import { defineConfig } from '@rsbuild/core'; - - export default defineConfig({ - plugins: [ - pluginWebPlatform({ - // replace with your actual napi-modules file path - napiModulesPath: path.resolve(__dirname, './index.napi-modules.ts'), - }), - ], - }); - ``` - - `napi-modules.ts` example: - - ```ts - // index.napi-modules.ts - export default { - custom_module: function(NapiModules, NapiModulesCall) { - return { - async test(name) { - console.log('CustomModule', NapiModules, NapiModulesCall); - }, - }; - }, - }; - ``` - -- Updated dependencies [[`7b75469`](https://github.com/lynx-family/lynx-stack/commit/7b75469d05dd2ec78bf6e1e54b94c8dff938eb40), [`224c653`](https://github.com/lynx-family/lynx-stack/commit/224c653f370d807281fa0a9ffbb4f4dd5c9d308e)]: - - @lynx-js/offscreen-document@0.1.3 - - @lynx-js/web-mainthread-apis@0.15.0 - - @lynx-js/web-constants@0.15.0 - - @lynx-js/web-worker-rpc@0.15.0 - -## 0.14.2 - -### Patch Changes - -- feat: merge multiple markTiming RPC communication events together and send them together, which can effectively reduce the number of RPC communications. ([#1178](https://github.com/lynx-family/lynx-stack/pull/1178)) - -- Updated dependencies [[`e44b146`](https://github.com/lynx-family/lynx-stack/commit/e44b146b1bc2b58c0347af7fb4e4157688e07e36), [`5a9b38b`](https://github.com/lynx-family/lynx-stack/commit/5a9b38b783e611aa9761c4cd52191172270c09c7), [`6ca5b91`](https://github.com/lynx-family/lynx-stack/commit/6ca5b9106aade393dfac88914b160960a61a82f2)]: - - @lynx-js/web-mainthread-apis@0.14.2 - - @lynx-js/web-constants@0.14.2 - - @lynx-js/web-worker-rpc@0.14.2 - -## 0.14.1 - -### Patch Changes - -- feat: support BTS API `lynx.reportError` && `__SetSourceMapRelease`, now you can use it and handle it in lynx-view error event. ([#1059](https://github.com/lynx-family/lynx-stack/pull/1059)) - -- Updated dependencies [[`a64333e`](https://github.com/lynx-family/lynx-stack/commit/a64333ef28228d6b90c32e027f67bef8acbd8432), [`7751375`](https://github.com/lynx-family/lynx-stack/commit/775137521782ca5445f22029c39163c0a63bbfa5), [`b52a924`](https://github.com/lynx-family/lynx-stack/commit/b52a924a2375cb6f7ebafdd8abfbab0254eb2330)]: - - @lynx-js/web-constants@0.14.1 - - @lynx-js/web-mainthread-apis@0.14.1 - - @lynx-js/web-worker-rpc@0.14.1 - -## 0.14.0 - -### Patch Changes - -- fix: The parameter config of loadCard needs to add updateData, otherwise some event binding will fail when enableJSDataProcessor is turned on. ([#1077](https://github.com/lynx-family/lynx-stack/pull/1077)) - -- feat: add `_I18nResourceTranslation` api in mts && `init-i18n-resources` attr, `i18nResourceMissed` event of lynx-view. ([#1065](https://github.com/lynx-family/lynx-stack/pull/1065)) - - `init-i18n-resource` is the complete set of i18nResources that need to be maintained on the container side. Note: You need to pass this value when lynx-view is initialized. - - You can use `_I18nResourceTranslation` in MTS to get the corresponding i18nResource from `init-i18n-resources`. If it is undefined, the `i18nResourceMissed` event will be dispatched. - - ```js - // ui thread - lynxView.initI18nResources = [ - { - options: { - locale: 'en', - channel: '1', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform1', - }, - }, - ]; - lynxView.addEventListener('i18nResourceMissed', (e) => { - console.log(e); - }); - - // mts - _I18nResourceTranslation({ - locale: 'en', - channel: '1', - fallback_url: '', - }); - ``` - -- feat: supports `lynx.getI18nResource()` and `onI18nResourceReady` event in bts. ([#1088](https://github.com/lynx-family/lynx-stack/pull/1088)) - - - `lynx.getI18nResource()` can be used to get i18nResource in bts, it has two data sources: - - the result of `_I18nResourceTranslation()` - - lynx-view `updateI18nResources(data: InitI18nResources, options: I18nResourceTranslationOptions)`, it will be matched to the correct i8nResource as a result of `lynx.getI18nResource()` - - `onI18nResourceReady` event can be used to listen `_I18nResourceTranslation` and lynx-view `updateI18nResources` execution. - -- feat: add `updateI18nResources` method of lynx-view. ([#1085](https://github.com/lynx-family/lynx-stack/pull/1085)) - - Now you can use `updateI18nResources` to update i18nResources, and then use \_I18nResourceTranslation() to get the updated result. - -- Updated dependencies [[`25a04c9`](https://github.com/lynx-family/lynx-stack/commit/25a04c9e59f4b893227bdead74f2de69f6615cdb), [`0dbb8b1`](https://github.com/lynx-family/lynx-stack/commit/0dbb8b1f580d0700e2b67b92018a7a00d1494837), [`f99de1e`](https://github.com/lynx-family/lynx-stack/commit/f99de1ef60cc5a11eae4fd0acc70a490787d36c9), [`873a285`](https://github.com/lynx-family/lynx-stack/commit/873a2852fa3df9e32c48a6504160bb243540c7b9), [`afacb2c`](https://github.com/lynx-family/lynx-stack/commit/afacb2cbea7feca46c553651000625d0845b2b00), [`1861cbe`](https://github.com/lynx-family/lynx-stack/commit/1861cbead4b373e0511214999b0e100b6285fa9a)]: - - @lynx-js/web-mainthread-apis@0.14.0 - - @lynx-js/web-constants@0.14.0 - - @lynx-js/offscreen-document@0.1.2 - - @lynx-js/web-worker-rpc@0.14.0 - -## 0.13.5 - -### Patch Changes - -- refactor: implement mts apis in closure pattern ([#1004](https://github.com/lynx-family/lynx-stack/pull/1004)) - -- Updated dependencies [[`70b82d2`](https://github.com/lynx-family/lynx-stack/commit/70b82d23744d6b6ec945dff9f8895ab3488ba4c8), [`5651e24`](https://github.com/lynx-family/lynx-stack/commit/5651e24827358963c3261252bcc53c2ad981c13e), [`9499ea9`](https://github.com/lynx-family/lynx-stack/commit/9499ea91debdf73b2d31af0b31bcbc216135543b), [`50f0193`](https://github.com/lynx-family/lynx-stack/commit/50f01933942268b697bf5abe790da86c932f1dfc), [`57bf0ef`](https://github.com/lynx-family/lynx-stack/commit/57bf0ef19f1d79bc52ab6a4f0cd2939e7901d98b), [`5651e24`](https://github.com/lynx-family/lynx-stack/commit/5651e24827358963c3261252bcc53c2ad981c13e), [`0525fbf`](https://github.com/lynx-family/lynx-stack/commit/0525fbf38baa7a977a7a8c66e8a4d8bf34cc3b68), [`b6b87fd`](https://github.com/lynx-family/lynx-stack/commit/b6b87fd11dbc76c28f3b5022aa8c6afeb773d90f), [`c014327`](https://github.com/lynx-family/lynx-stack/commit/c014327ad0cf599b32d4182d95116b46c35f5fa5)]: - - @lynx-js/web-mainthread-apis@0.13.5 - - @lynx-js/web-constants@0.13.5 - - @lynx-js/offscreen-document@0.1.1 - - @lynx-js/web-worker-rpc@0.13.5 - -## 0.13.4 - -### Patch Changes - -- feat: lynx-view supports `updateGlobalProps` method, which can be used to update lynx.\_\_globalProps ([#918](https://github.com/lynx-family/lynx-stack/pull/918)) - -- feat: supports `lynx.getElementById()` && `animate()`. ([#912](https://github.com/lynx-family/lynx-stack/pull/912)) - - After this commit, you can use `lynx.getElementById()` to get the element by id, and use `element.animate()` to animate the element. - -- Updated dependencies [[`96d3133`](https://github.com/lynx-family/lynx-stack/commit/96d3133b149b61af01c5478f4dc7b0a071137d98), [`75e5b2f`](https://github.com/lynx-family/lynx-stack/commit/75e5b2ff16ecf5f7072a45cd130e653dee747461), [`569618d`](https://github.com/lynx-family/lynx-stack/commit/569618d8e2665f5c9e1672f7ee5900ec2a5179a2), [`f9f88d6`](https://github.com/lynx-family/lynx-stack/commit/f9f88d6fb9c42d3370a6622d9d799d671ffcf1a7)]: - - @lynx-js/web-mainthread-apis@0.13.4 - - @lynx-js/offscreen-document@0.1.0 - - @lynx-js/web-constants@0.13.4 - - @lynx-js/web-worker-rpc@0.13.4 - -## 0.13.3 - -### Patch Changes - -- refactor: code clean ([#897](https://github.com/lynx-family/lynx-stack/pull/897)) - - rename many internal apis to make logic be clear: - - multi-thread: startMainWorker -> prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - all-on-ui: prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) - -- Updated dependencies [[`bb1f9d8`](https://github.com/lynx-family/lynx-stack/commit/bb1f9d845ef2395a0508666701409972e159389d), [`b6e27da`](https://github.com/lynx-family/lynx-stack/commit/b6e27daf865b0627b1c3238228a4fdf65ad87ee3), [`3d716d7`](https://github.com/lynx-family/lynx-stack/commit/3d716d79ae053b225e9bac2bbb036c968f5261e7)]: - - @lynx-js/offscreen-document@0.0.4 - - @lynx-js/web-mainthread-apis@0.13.3 - - @lynx-js/web-constants@0.13.3 - - @lynx-js/web-worker-rpc@0.13.3 - -## 0.13.2 - -### Patch Changes - -- feat: allow lynx code to get JS engine provided properties on globalThis ([#786](https://github.com/lynx-family/lynx-stack/pull/786)) - - ``` - globalThis.Reflect; // this will be the Reflect Object - ``` - - Note that `assigning to the globalThis` is still not allowed. - -- feat: return the offscreenDocument instance for startMainThread() ([#772](https://github.com/lynx-family/lynx-stack/pull/772)) - -- Updated dependencies [[`03a5f64`](https://github.com/lynx-family/lynx-stack/commit/03a5f64d7d09e38903f5d1c022f36f6e68b6432d), [`8cdd288`](https://github.com/lynx-family/lynx-stack/commit/8cdd28884288b9456aee3a919d6edbf72da1c67b), [`6d3d852`](https://github.com/lynx-family/lynx-stack/commit/6d3d8529d0d528419920102ca52da279bbe0f1e0)]: - - @lynx-js/web-mainthread-apis@0.13.2 - - @lynx-js/web-constants@0.13.2 - - @lynx-js/offscreen-document@0.0.3 - - @lynx-js/web-worker-rpc@0.13.2 - -## 0.13.1 - -### Patch Changes - -- feat: support for using `lynx.queueMicrotask`. ([#702](https://github.com/lynx-family/lynx-stack/pull/702)) - -- feat: support touch events for MTS ([#641](https://github.com/lynx-family/lynx-stack/pull/641)) - - now we support - - - main-thread:bindtouchstart - - main-thread:bindtouchend - - main-thread:bindtouchmove - - main-thread:bindtouchcancel - -- feat: provide comments for `@lynx-js/web-platform-rsbuild-plugin`. ([#668](https://github.com/lynx-family/lynx-stack/pull/668)) - -- Updated dependencies [[`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91), [`9ad394e`](https://github.com/lynx-family/lynx-stack/commit/9ad394ea9ef28688a3b810b4051868b2a28eb7de), [`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91)]: - - @lynx-js/offscreen-document@0.0.2 - - @lynx-js/web-mainthread-apis@0.13.1 - - @lynx-js/web-constants@0.13.1 - - @lynx-js/web-worker-rpc@0.13.1 - -## 0.13.0 - -### Patch Changes - -- refactor: isolate SystemInfo ([#628](https://github.com/lynx-family/lynx-stack/pull/628)) - - Never assign `SystemInfo` on worker's self object. - -- feat: support thread strategy `all-on-ui` ([#625](https://github.com/lynx-family/lynx-stack/pull/625)) - - ```html - - ``` - - This will make the lynx's main-thread run on the UA's main thread. - - Note that the `all-on-ui` does not support the HMR & chunk splitting yet. - -- refactor: move mainthread impl into mainthread-api packages ([#622](https://github.com/lynx-family/lynx-stack/pull/622)) - -- Updated dependencies [[`4ee0465`](https://github.com/lynx-family/lynx-stack/commit/4ee0465f6e5846a0d038b49d2a7c95e87c9e5c77), [`74b5bd1`](https://github.com/lynx-family/lynx-stack/commit/74b5bd15339b70107a7c42525494da46e8f8f6bd), [`06bb78a`](https://github.com/lynx-family/lynx-stack/commit/06bb78a6b93d4a7be7177a6269dd4337852ce90d), [`5a3d9af`](https://github.com/lynx-family/lynx-stack/commit/5a3d9afe52ba639987db124ca35580261e0718b5), [`5269cab`](https://github.com/lynx-family/lynx-stack/commit/5269cabef7609159bdd0dd14a03c5da667907424), [`74b5bd1`](https://github.com/lynx-family/lynx-stack/commit/74b5bd15339b70107a7c42525494da46e8f8f6bd), [`2b069f8`](https://github.com/lynx-family/lynx-stack/commit/2b069f8786c95bdb9ac1f35091f05f7fd3b52225)]: - - @lynx-js/web-mainthread-apis@0.13.0 - - @lynx-js/web-constants@0.13.0 - - @lynx-js/offscreen-document@0.0.1 - - @lynx-js/web-worker-rpc@0.13.0 - -## 0.12.0 - -### Patch Changes - -- feat: fully support MTS ([#569](https://github.com/lynx-family/lynx-stack/pull/569)) - - Now use support the following usage - - - mainthread event - - mainthread ref - - runOnMainThread/runOnBackground - - ref.current.xx - -- Updated dependencies [[`f1ca29b`](https://github.com/lynx-family/lynx-stack/commit/f1ca29bd766377dd46583f15e1e75bca447699cd), [`8ca9fcb`](https://github.com/lynx-family/lynx-stack/commit/8ca9fcbbc86b0f0ac05ee4319876cdd5dd08d668), [`efe6fd7`](https://github.com/lynx-family/lynx-stack/commit/efe6fd7de8a3d8119ea550f4d4e939d1fbfee4f0)]: - - @lynx-js/web-mainthread-apis@0.12.0 - - @lynx-js/web-constants@0.12.0 - - @lynx-js/web-worker-rpc@0.12.0 - -## 0.11.0 - -### Patch Changes - -- feat: support mts event handler (1/n) ([#495](https://github.com/lynx-family/lynx-stack/pull/495)) - - now the main-thread:bind handler could be invoked. The params of the handler will be implemented later. - -- feat: allow multi lynx-view to share bts worker ([#520](https://github.com/lynx-family/lynx-stack/pull/520)) - - Now we allow users to enable so-called "shared-context" feature on the Web Platform. - - Similar to the same feature for Lynx iOS/Android, this feature let multi lynx cards to share one js context. - - The `lynx.getSharedData` and `lynx.setSharedData` are also supported in this commit. - - To enable this feature, set property `lynxGroupId` or attribute `lynx-group-id` before a lynx-view starts rendering. Those card with same context id will share one web worker for the bts scripts. - -- Updated dependencies [[`ea42e62`](https://github.com/lynx-family/lynx-stack/commit/ea42e62fbcd5c743132c3e6e7c4851770742d544), [`a0f5ca4`](https://github.com/lynx-family/lynx-stack/commit/a0f5ca4ea0895ccbaa6aa63f449f53a677a1cf73)]: - - @lynx-js/web-mainthread-apis@0.11.0 - - @lynx-js/web-constants@0.11.0 - - @lynx-js/web-worker-rpc@0.11.0 - -## 0.10.1 - -### Patch Changes - -- feat: onNapiModulesCall function add new param: `dispatchNapiModules`, napiModulesMap val add new param: `handleDispatch`. ([#414](https://github.com/lynx-family/lynx-stack/pull/414)) - - Now you can use them to actively communicate to napiModules (background thread) in onNapiModulesCall (ui thread). - -- Updated dependencies [[`1af3b60`](https://github.com/lynx-family/lynx-stack/commit/1af3b6052ab27f98bf0e4d1b0ec9f7d9e88e0afc)]: - - @lynx-js/web-constants@0.10.1 - - @lynx-js/web-mainthread-apis@0.10.1 - - @lynx-js/web-worker-rpc@0.10.1 - -## 0.10.0 - -### Minor Changes - -- feat: rewrite the main thread Element PAPIs ([#343](https://github.com/lynx-family/lynx-stack/pull/343)) - - In this commit we've rewritten the main thread apis. - - The most highlighted change is that - - - Before this commit we send events directly to bts - - After this change, we send events to mts then send them to bts with some data combined. - -### Patch Changes - -- Updated dependencies [[`2a8ddf3`](https://github.com/lynx-family/lynx-stack/commit/2a8ddf3fb2a2fc5ed9b44184e30847aaf74fd1f4), [`3a8dabd`](https://github.com/lynx-family/lynx-stack/commit/3a8dabd877084c15db1404c912dd8a19c7a0fc59), [`878050a`](https://github.com/lynx-family/lynx-stack/commit/878050aaa3d9eb534848cab1dd0d4a2096a0a940), [`a521759`](https://github.com/lynx-family/lynx-stack/commit/a5217592f5aebea4b17860e729d523ecabb5f691), [`890c6c5`](https://github.com/lynx-family/lynx-stack/commit/890c6c51470c82104abb1049681f55e5d97cf9d6)]: - - @lynx-js/web-mainthread-apis@0.10.0 - - @lynx-js/web-constants@0.10.0 - - @lynx-js/web-worker-rpc@0.10.0 - -## 0.9.1 - -### Patch Changes - -- Updated dependencies []: - - @lynx-js/web-constants@0.9.1 - - @lynx-js/web-mainthread-apis@0.9.1 - - @lynx-js/web-worker-rpc@0.9.1 - -## 0.9.0 - -### Minor Changes - -- feat: `nativeModulesUrl` of lynx-view is changed to `nativeModulesMap`, and the usage is completely aligned with `napiModulesMap`. ([#220](https://github.com/lynx-family/lynx-stack/pull/220)) - - "warning: This is a breaking change." - - `nativeModulesMap` will be a map: key is module-name, value should be a esm url which export default a - function with two parameters(you never need to use `this`): - - - `NativeModules`: oriented `NativeModules`, which you can use to call - other Native-Modules. - - - `NativeModulesCall`: trigger `onNativeModulesCall`, same as the deprecated `this.nativeModulesCall`. - - example: - - ```js - const nativeModulesMap = { - CustomModule: URL.createObjectURL( - new Blob( - [ - `export default function(NativeModules, NativeModulesCall) { - return { - async getColor(data, callback) { - const color = await NativeModulesCall('getColor', data); - callback(color); - }, - } - };`, - ], - { type: 'text/javascript' }, - ), - ), - }; - lynxView.nativeModulesMap = nativeModulesMap; - ``` - - In addition, we will use Promise.all to load `nativeModules`, which will optimize performance in the case of multiple modules. - -- refractor: remove entryId concept ([#217](https://github.com/lynx-family/lynx-stack/pull/217)) - - After the PR #198 - All contents are isolated by a shadowroot. - Therefore we don't need to add the entryId selector to avoid the lynx-view's style taking effect on the whole page. - -### Patch Changes - -- refactor: remove customelement defined detecting logic ([#247](https://github.com/lynx-family/lynx-stack/pull/247)) - - Before this commit, for those element with tag without `-`, we always try to detect if the `x-${tagName}` is defined. - - After this commit, we pre-define a map(could be override by the `overrideLynxTagToHTMLTagMap`) to make that transformation for tag name. - - This change is a path to SSR and the MTS support. - -- Updated dependencies [[`5b5e090`](https://github.com/lynx-family/lynx-stack/commit/5b5e090fdf0e896f1c38a49bf3ed9889117c4fb8), [`b844e75`](https://github.com/lynx-family/lynx-stack/commit/b844e751f566d924256365d37aec4c86c520ec00), [`53230f0`](https://github.com/lynx-family/lynx-stack/commit/53230f012216f3a627853e11d544e4be175c5b9b), [`6f16827`](https://github.com/lynx-family/lynx-stack/commit/6f16827d1f4d7364870d354fc805a8868c110f1e), [`d2d55ef`](https://github.com/lynx-family/lynx-stack/commit/d2d55ef9fe438c35921d9db0daa40d5228822ecc)]: - - @lynx-js/web-constants@0.9.0 - - @lynx-js/web-mainthread-apis@0.9.0 - - @lynx-js/web-worker-rpc@0.9.0 - -## 0.8.0 - -### Minor Changes - -- refactor: remove web-elements/lazy and loadNewTag ([#123](https://github.com/lynx-family/lynx-stack/pull/123)) - - - remove @lynx-js/web-elements/lazy - - remove loadElement - - remove loadNewTag callback - - **This is a breaking change** - - Now we removed the default lazy loading preinstalled in web-core - - Please add the following statement in your web project - - ``` - import "@lynx-js/web-elements/all"; - ``` - -### Patch Changes - -- feat: add pixelRatio of SystemInfo, now you can use `SystemInfo.pixelRatio`. ([#150](https://github.com/lynx-family/lynx-stack/pull/150)) - -- feat: add two prop of lynx-view about `napiLoader`: ([#173](https://github.com/lynx-family/lynx-stack/pull/173)) - - - `napiModulesMap`: [optional] the napiModule which is called in lynx-core. key is module-name, value is esm url. - - - `onNapiModulesCall`: [optional] the NapiModule value handler. - - **Warning:** This is the internal implementation of `@lynx-js/lynx-core`. In most cases, this API is not required for projects. - - 1. The `napiModulesMap` value should be a esm url which export default a function with two parameters: - - - `NapiModules`: oriented `napiModulesMap`, which you can use to call other Napi-Modules - - - `NapiModulesCall`: trigger `onNapiModulesCall` - - example: - - ```js - const color_environment = URL.createObjectURL( - new Blob( - [ - `export default function(NapiModules, NapiModulesCall) { - return { - getColor() { - NapiModules.color_methods.getColor({ color: 'green' }, color => { - console.log(color); - }); - }, - ColorEngine: class ColorEngine { - getColor(name) { - NapiModules.color_methods.getColor({ color: 'green' }, color => { - console.log(color); - }); - } - }, - }; - };`, - ], - { type: 'text/javascript' }, - ), - ); - - const color_methods = URL.createObjectURL( - new Blob( - [ - `export default function(NapiModules, NapiModulesCall) { - return { - async getColor(data, callback) { - const color = await NapiModulesCall('getColor', data); - callback(color); - }, - }; - };`, - ], - { type: 'text/javascript' }, - ), - ); - - lynxView.napiModuleMap = { - color_environment: color_environment, - color_methods: color_methods, - }; - ``` - - 2. The `onNapiModulesCall` function has three parameters: - - - `name`: the first parameter of `NapiModulesCall`, the function name - - `data`: the second parameter of `NapiModulesCall`, data - - `moduleName`: the module-name of the called napi-module - - ```js - lynxView.onNapiModulesCall = (name, data, moduleName) => { - if (name === 'getColor' && moduleName === 'color_methods') { - return data.color; - } - }; - ``` - -- Updated dependencies [[`e9e8370`](https://github.com/lynx-family/lynx-stack/commit/e9e8370e070a50cbf65a4ebc46c2e37ea1e0be40), [`ec4e1ce`](https://github.com/lynx-family/lynx-stack/commit/ec4e1ce0d7612d6c0701792a46c78cd52130bad4), [`f0a717c`](https://github.com/lynx-family/lynx-stack/commit/f0a717c630700e16ab0af7f1fe370fd60ac75b30), [`63fab7b`](https://github.com/lynx-family/lynx-stack/commit/63fab7b515b7456750b5f7e06844f244a20ca4f1)]: - - @lynx-js/web-mainthread-apis@0.8.0 - - @lynx-js/web-constants@0.8.0 - - @lynx-js/web-worker-rpc@0.8.0 - -## 0.7.1 - -### Patch Changes - -- Support NPM provenance. ([#30](https://github.com/lynx-family/lynx-stack/pull/30)) - -- Updated dependencies [[`c617453`](https://github.com/lynx-family/lynx-stack/commit/c617453aea967aba702967deb2916b5c883f03bb), [`2044571`](https://github.com/lynx-family/lynx-stack/commit/204457166531dae6e9f653db56b14187553b7666), [`82285ce`](https://github.com/lynx-family/lynx-stack/commit/82285cefbc87a5b9b9f5b79b082b5030d1a7b772), [`7da7601`](https://github.com/lynx-family/lynx-stack/commit/7da7601f00407970c485046ad73eeb8534aaa4f6)]: - - @lynx-js/web-mainthread-apis@0.7.1 - - @lynx-js/web-worker-rpc@0.7.1 - - @lynx-js/web-constants@0.7.1 - -## 0.7.0 - -### Minor Changes - -- 1abf8f0: feat(web): - - **This is a breaking change** - - 1. A new param for `lynx-view`: `nativeModulesUrl`, which allows you to pass an esm url to add a new module to `NativeModules`. And we bind the `nativeModulesCall` method to each function on the module, run `this.nativeModulesCall()` to trigger onNativeModulesCall. - - ```typescript - export type NativeModuleHandlerContext = { - nativeModulesCall: (name: string, data: Cloneable) => Promise; - }; - ``` - - a simple case: - - ```js - lynxView.nativeModules = URL.createObjectURL( - new Blob( - [ - `export default { - myNativeModules: { - async getColor(data, callback) { - // trigger onNativeModulesCall and get the result - const color = await this.nativeModulesCall('getColor', data); - // return the result to caller - callback(color); - }, - } - };`, - ], - { type: 'text/javascript' }, - ), - ); - ``` - - 2. `onNativeModulesCall` is no longer the value handler of `NativeModules.bridge.call`, it will be the value handler of all `NativeModules` modules. - - **Warning: This is a breaking change.** - - Before this commit, you listen to `NativeModules.bridge.call('getColor')` like this: - - ```js - lynxView.onNativeModulesCall = (name, data, callback) => { - if (name === 'getColor') { - callback(data.color); - } - }; - ``` - - Now you should use it like this: - - ```js - lynxView.onNativeModulesCall = (name, data, moduleName) => { - if (name === 'getColor' && moduleName === 'bridge') { - return data.color; - } - }; - ``` - - You need to use `moduleName` to determine the NativeModules-module. And you don’t need to run callback, just return the result! - -### Patch Changes - -- Updated dependencies [1abf8f0] - - @lynx-js/web-constants@0.7.0 - - @lynx-js/web-mainthread-apis@0.7.0 - - @lynx-js/web-worker-rpc@0.7.0 - -## 0.6.2 - -### Patch Changes - -- 085b99e: feat: add `nativeApp.createJSObjectDestructionObserver`, it is a prerequisite for implementing mts event. -- Updated dependencies [0412db0] -- Updated dependencies [085b99e] - - @lynx-js/web-constants@0.6.2 - - @lynx-js/web-mainthread-apis@0.6.2 - - @lynx-js/web-worker-rpc@0.6.2 - -## 0.6.1 - -### Patch Changes - -- 62b7841: feat: add lynx.requireModule in main-thread && \_\_LoadLepusChunk API. - - now the `lynx.requireModule` is available in mts. - -- Updated dependencies [62b7841] - - @lynx-js/web-mainthread-apis@0.6.1 - - @lynx-js/web-constants@0.6.1 - - @lynx-js/web-worker-rpc@0.6.1 - -## 0.6.0 - -### Minor Changes - -- e406d69: refractor: update output json format - - **This is a breaking change** - - Before this change the style info is dump in Javascript code. - - After this change the style info will be pure JSON data. - - Now we're using the css-serializer tool's output only. If you're using plugins for it, now they're enabled. - -### Patch Changes - -- Updated dependencies [e406d69] - - @lynx-js/web-mainthread-apis@0.6.0 - - @lynx-js/web-constants@0.6.0 - - @lynx-js/web-worker-rpc@0.6.0 - -## 0.5.1 - -### Patch Changes - -- ee340da: feat: add SystemInfo.platform as 'web'. now you can use `SystemInfo.platform`. -- b5ef20e: feat: updateData should also call `updatePage` in main-thread. -- Updated dependencies [c49b1fb] -- Updated dependencies [b5ef20e] - - @lynx-js/web-constants@0.5.1 - - @lynx-js/web-mainthread-apis@0.5.1 - - @lynx-js/web-worker-rpc@0.5.1 - -## 0.5.0 - -### Minor Changes - -- 7b84edf: feat: introduce new output chunk format - - **This is a breaking change** - - After this commit, we new introduce a new output format for web platform. - - This new output file is a JSON file, includes all essential info. - - Now we'll add the chunk global scope wrapper on runtime, this will help us to provide a better backward compatibility. - - Also we have a intergrated output file cache for one session. - - Now your `output.filename` will work. - - The split-chunk feature has been temporary removed until the rspeedy team supports this feature for us. - -### Patch Changes - -- 04607bd: refractor: do not create return endpoint for those rpcs don't need it -- Updated dependencies [04607bd] -- Updated dependencies [3050faf] -- Updated dependencies [7b84edf] -- Updated dependencies [e0f0793] - - @lynx-js/web-worker-rpc@0.5.0 - - @lynx-js/web-constants@0.5.0 - - @lynx-js/web-mainthread-apis@0.5.0 diff --git a/packages/web-platform/web-worker-runtime/LICENSE.txt b/packages/web-platform/web-worker-runtime/LICENSE.txt deleted file mode 100644 index ce66b4c3a7..0000000000 --- a/packages/web-platform/web-worker-runtime/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2023-2024 The Lynx Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/web-platform/web-worker-runtime/Notice.txt b/packages/web-platform/web-worker-runtime/Notice.txt deleted file mode 100644 index 3ff8881bfd..0000000000 --- a/packages/web-platform/web-worker-runtime/Notice.txt +++ /dev/null @@ -1 +0,0 @@ -Copyright 2023-2024 The Lynx Authors. All rights reserved. \ No newline at end of file diff --git a/packages/web-platform/web-worker-runtime/README.md b/packages/web-platform/web-worker-runtime/README.md deleted file mode 100644 index 1c03acd87d..0000000000 --- a/packages/web-platform/web-worker-runtime/README.md +++ /dev/null @@ -1 +0,0 @@ -# @lynx-js/worker-rpc diff --git a/packages/web-platform/web-worker-runtime/package.json b/packages/web-platform/web-worker-runtime/package.json deleted file mode 100644 index 7241e7af09..0000000000 --- a/packages/web-platform/web-worker-runtime/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "@lynx-js/web-worker-runtime", - "version": "0.19.9", - "private": false, - "description": "", - "keywords": [], - "repository": { - "type": "git", - "url": "https://github.com/lynx-family/lynx-stack.git", - "directory": "packages/web-platform/web-worker-runtime" - }, - "license": "Apache-2.0", - "type": "module", - "main": "dist/index.js", - "typings": "dist/index.d.ts", - "files": [ - "dist", - "!dist/**/*.js.map", - "LICENSE.txt", - "Notice.txt", - "CHANGELOG.md", - "README.md" - ], - "dependencies": { - "@lynx-js/offscreen-document": "workspace:*", - "@lynx-js/web-constants": "workspace:*", - "@lynx-js/web-mainthread-apis": "workspace:*", - "@lynx-js/web-worker-rpc": "workspace:*" - }, - "devDependencies": { - "@lynx-js/lynx-core": "0.1.3" - }, - "peerDependencies": { - "@lynx-js/lynx-core": "0.1.3" - } -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createBackgroundLynx.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createBackgroundLynx.ts deleted file mode 100644 index ecb300e161..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createBackgroundLynx.ts +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - dispatchCoreContextOnBackgroundEndpoint, - dispatchJSContextOnMainThreadEndpoint, - LynxCrossThreadContext, - reloadEndpoint, - type BackMainThreadContextConfig, - type NativeApp, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { createGetCustomSection } from './crossThreadHandlers/createGetCustomSection.js'; -import { createElement } from './createElement.js'; - -export function createBackgroundLynx( - config: BackMainThreadContextConfig, - nativeApp: NativeApp, - mainThreadRpc: Rpc, - uiThreadRpc: Rpc, -) { - const coreContext = new LynxCrossThreadContext({ - rpc: mainThreadRpc, - receiveEventEndpoint: dispatchCoreContextOnBackgroundEndpoint, - sendEventEndpoint: dispatchJSContextOnMainThreadEndpoint, - }); - return { - __globalProps: config.globalProps, - getJSModule(_moduleName: string): any { - }, - getNativeApp(): NativeApp { - return nativeApp; - }, - getCoreContext() { - return coreContext; - }, - getCustomSectionSync(key: string) { - return config.customSections[key]; - }, - getCustomSection: createGetCustomSection( - mainThreadRpc, - config.customSections, - ), - queueMicrotask: (callback: () => void) => { - queueMicrotask(callback); - }, - createElement(_: string, id: string) { - return createElement(id, uiThreadRpc); - }, - getI18nResource: () => nativeApp.i18nResource.data, - QueryComponent: ( - source: string, - callback: ( - ret: { __hasReady: boolean } | { - code: number; - detail?: { schema: string }; - }, - ) => void, - ) => nativeApp.queryComponent(source, callback), - reload: () => { - uiThreadRpc.invoke(reloadEndpoint, []); - }, - }; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createChunkLoading.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createChunkLoading.ts deleted file mode 100644 index 310885ceb0..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createChunkLoading.ts +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { - NativeApp, - LynxTemplate, - BTSChunkEntry, - BundleInitReturnObj, -} from '@lynx-js/web-constants'; - -export function createChunkLoading(initialTemplate: LynxTemplate): { - readScript: NativeApp['readScript']; - loadScript: NativeApp['loadScript']; - loadScriptAsync: NativeApp['loadScriptAsync']; - templateCache: Map; -} { - const templateCache = new Map([[ - '__Card__', - initialTemplate, - ]]); - const readScript: NativeApp['readScript'] = ( - sourceURL, - entryName = '__Card__', - ) => { - const jsContentInTemplate = templateCache.get(entryName!) - ?.manifest[`/${sourceURL}`]; - if (jsContentInTemplate) return jsContentInTemplate; - const xhr = new XMLHttpRequest(); - xhr.open('GET', sourceURL, false); - xhr.send(null); - if (xhr.status === 200) { - return xhr.responseText; - } - throw new Error(`Failed to load ${sourceURL}, status: ${xhr.status}`); - }; - - const readScriptAsync: ( - sourceURL: string, - entryName: string | undefined, - ) => Promise = async (sourceURL, entryName = '__Card__') => { - const jsContentInTemplate = templateCache.get(entryName!) - ?.manifest[`/${sourceURL}`]; - if (jsContentInTemplate) return jsContentInTemplate; - return new Promise((resolve, reject) => { - fetch(sourceURL).then((response) => { - if (response.ok) { - response.text().then((text) => resolve(text), reject); - } else { - reject( - new Error( - `Failed to load ${sourceURL}, status: ${response.status}`, - ), - ); - } - }, reject); - }); - }; - const createBundleInitReturnObj = ( - jsContent: string, - fileName: string, - ): BundleInitReturnObj => { - const foo = new Function( - 'postMessage', - 'module', - 'exports', - 'lynxCoreInject', - 'Card', - 'setTimeout', - 'setInterval', - 'clearInterval', - 'clearTimeout', - 'NativeModules', - 'Component', - 'ReactLynx', - 'nativeAppId', - 'Behavior', - 'LynxJSBI', - 'lynx', - // BOM API - 'window', - 'document', - 'frames', - 'location', - 'navigator', - 'localStorage', - 'history', - 'Caches', - 'screen', - 'alert', - 'confirm', - 'prompt', - 'fetch', - 'XMLHttpRequest', - 'webkit', - 'Reporter', - 'print', - 'global', - // Lynx API - 'requestAnimationFrame', - 'cancelAnimationFrame', - [ - jsContent, - '\n//# sourceURL=', - fileName, - ].join(''), - ) as BTSChunkEntry; - return { - init(lynxCoreInject) { - const module = { exports: {} }; - const tt = lynxCoreInject.tt as any; - foo( - undefined, - module, - module.exports, - lynxCoreInject, - tt.Card.bind(tt), - tt.setTimeout, - tt.setInterval, - tt.clearInterval, - tt.clearTimeout, - tt.NativeModules, - tt.Component.bind(tt), - tt.ReactLynx, - tt.nativeAppId, - tt.Behavior, - tt.LynxJSBI, - tt.lynx, - // BOM API - tt.window, - tt.document, - tt.frames, - tt.location, - tt.navigator, - tt.localStorage, - tt.history, - tt.Caches, - tt.screen, - tt.alert, - tt.confirm, - tt.prompt, - tt.fetch, - tt.XMLHttpRequest, - tt.webkit, - tt.Reporter, - tt.print, - tt.global, - tt.requestAnimationFrame, - tt.cancelAnimationFrame, - ); - return module.exports; - }, - }; - }; - return { - readScript, - loadScript: (sourceURL, entryName = '__Card__') => { - const jsContent = readScript(sourceURL, entryName); - return createBundleInitReturnObj( - jsContent, - `${encodeURIComponent(entryName)}/${sourceURL}`, - ); - }, - loadScriptAsync: async (sourceURL, callback, entryName = '__Card__') => { - readScriptAsync(sourceURL, entryName).then((jsContent) => { - callback( - null, - createBundleInitReturnObj( - jsContent, - `${encodeURIComponent(entryName)}/${sourceURL}`, - ), - ); - }); - }, - templateCache, - }; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createElement.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createElement.ts deleted file mode 100644 index ebcd7f0ce1..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createElement.ts +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { triggerElementMethodEndpoint } from '@lynx-js/web-constants'; -import type { AnimationOperation } from '@lynx-js/web-constants/src/types/Element.js'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export const createElement = (elementId: string, uiThreadRpc: Rpc) => { - const triggerElementMethod = uiThreadRpc.createCall( - triggerElementMethodEndpoint, - ); - - return { - animate( - operation: AnimationOperation, - id: string, - keyframes?: Record[], - timingOptions?: Record, - ) { - triggerElementMethod('animate', elementId, { - operation, - id, - keyframes, - timingOptions, - }); - }, - }; -}; diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNapiLoader.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNapiLoader.ts deleted file mode 100644 index aa45b9a96b..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNapiLoader.ts +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -/* LYNX_NAPI_MODULES_IMPORT */ -import { - dispatchNapiModuleEndpoint, - napiModulesCallEndpoint, - type Cloneable, - type NapiModulesMap, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export const createNapiLoader = async ( - rpc: Rpc, - napiModulesMap: NapiModulesMap, -) => { - const napiModulesCall = rpc.createCall(napiModulesCallEndpoint); - const napiModules: Record> = {}; - await Promise.all( - Object.entries(napiModulesMap).map(( - [moduleName, moduleStr], - ) => - import(/* webpackIgnore: true */ moduleStr).then( - module => - napiModules[moduleName] = module?.default?.( - napiModules, - (name: string, data: Cloneable) => - napiModulesCall(name, data, moduleName), - (func: (data: unknown) => void) => { - rpc.registerHandler(dispatchNapiModuleEndpoint, (data) => - func(data)); - }, - ), - ) - ), - ); - /* LYNX_NAPI_MODULES_ADD */ - - return { - load(moduleName: string) { - return napiModules[moduleName]; - }, - }; -}; diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts deleted file mode 100644 index effd6025c9..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeApp.ts +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { - callLepusMethodEndpoint, - setNativePropsEndpoint, - triggerComponentEventEndpoint, - selectComponentEndpoint, - type NativeApp, - type LynxCrossThreadContext, - type BackMainThreadContextConfig, - I18nResource, - reportErrorEndpoint, - queryComponentEndpoint, - updateBTSTemplateCacheEndpoint, -} from '@lynx-js/web-constants'; -import { createInvokeUIMethod } from './crossThreadHandlers/createInvokeUIMethod.js'; -import { registerPublicComponentEventHandler } from './crossThreadHandlers/registerPublicComponentEventHandler.js'; -import { registerGlobalExposureEventHandler } from './crossThreadHandlers/registerGlobalExposureEventHandler.js'; -import { createNativeModules } from './createNativeModules.js'; -import { registerUpdateDataHandler } from './crossThreadHandlers/registerUpdateDataHandler.js'; -import { registerPublishEventHandler } from './crossThreadHandlers/registerPublishEventHandler.js'; -import { createPerformanceApis } from './createPerformanceApis.js'; -import { registerSendGlobalEventHandler } from './crossThreadHandlers/registerSendGlobalEvent.js'; -import { createJSObjectDestructionObserver } from './crossThreadHandlers/createJSObjectDestructionObserver.js'; -import type { TimingSystem } from './createTimingSystem.js'; -import { registerUpdateGlobalPropsHandler } from './crossThreadHandlers/registerUpdateGlobalPropsHandler.js'; -import { registerUpdateI18nResource } from './crossThreadHandlers/registerUpdateI18nResource.js'; -import { createGetPathInfo } from './crossThreadHandlers/createGetPathInfo.js'; -import { createChunkLoading } from './createChunkLoading.js'; - -let nativeAppCount = 0; -const sharedData: Record = {}; - -export async function createNativeApp( - config: { - uiThreadRpc: Rpc; - mainThreadRpc: Rpc; - timingSystem: TimingSystem; - } & BackMainThreadContextConfig, -): Promise { - const { - mainThreadRpc, - uiThreadRpc, - template, - nativeModulesMap, - timingSystem, - } = config; - const performanceApis = createPerformanceApis( - timingSystem, - ); - const callLepusMethod = mainThreadRpc.createCallbackify( - callLepusMethodEndpoint, - 2, - ); - const setNativeProps = uiThreadRpc.createCall(setNativePropsEndpoint); - const triggerComponentEvent = uiThreadRpc.createCall( - triggerComponentEventEndpoint, - ); - const selectComponent = uiThreadRpc.createCallbackify( - selectComponentEndpoint, - 3, - ); - const queryComponent = mainThreadRpc.createCall( - queryComponentEndpoint, - ); - const reportError = uiThreadRpc.createCall(reportErrorEndpoint); - const { templateCache, loadScript, loadScriptAsync, readScript } = - createChunkLoading(template); - - mainThreadRpc.registerHandler( - updateBTSTemplateCacheEndpoint, - (url, template) => { - templateCache.set(url, template); - }, - ); - const i18nResource = new I18nResource(); - let release = ''; - const nativeApp: NativeApp = { - id: (nativeAppCount++).toString(), - ...performanceApis, - setTimeout: setTimeout, - setInterval: setInterval, - clearTimeout: clearTimeout, - clearInterval: clearInterval, - nativeModuleProxy: await createNativeModules( - uiThreadRpc, - mainThreadRpc, - nativeModulesMap, - ), - readScript, - loadScriptAsync, - loadScript, - requestAnimationFrame(cb: FrameRequestCallback) { - return requestAnimationFrame(cb); - }, - cancelAnimationFrame(handler: number) { - return cancelAnimationFrame(handler); - }, - callLepusMethod, - setNativeProps, - getPathInfo: createGetPathInfo(uiThreadRpc), - invokeUIMethod: createInvokeUIMethod(uiThreadRpc), - tt: null, - setCard(tt) { - registerPublicComponentEventHandler( - mainThreadRpc, - tt, - ); - registerPublishEventHandler( - mainThreadRpc, - tt, - ); - registerGlobalExposureEventHandler( - mainThreadRpc, - tt, - ); - registerUpdateDataHandler( - mainThreadRpc, - tt, - ); - registerSendGlobalEventHandler( - uiThreadRpc, - tt, - ); - registerUpdateGlobalPropsHandler(uiThreadRpc, tt); - registerUpdateI18nResource(uiThreadRpc, mainThreadRpc, i18nResource, tt); - timingSystem.registerGlobalEmitter(tt.GlobalEventEmitter); - (tt.lynx.getCoreContext() as LynxCrossThreadContext).__start(); - nativeApp.tt = tt; - }, - triggerComponentEvent, - selectComponent, - createJSObjectDestructionObserver: createJSObjectDestructionObserver(), - setSharedData(dataKey: string, dataVal: T) { - sharedData[dataKey] = dataVal; - }, - getSharedData(dataKey: string): T | undefined { - return sharedData[dataKey] as T | undefined; - }, - i18nResource, - reportException: (err: Error, _: unknown) => reportError(err, _, release), - __SetSourceMapRelease: (err: Error) => release = err.message, - __GetSourceMapRelease: (_url: string) => release, - queryComponent: (source, callback) => { - if (templateCache.has(source)) { - callback({ __hasReady: true }); - } else { - queryComponent(source).then(res => { - callback?.(res); - }); - } - }, - }; - return nativeApp; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeModules.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeModules.ts deleted file mode 100644 index 1922ba42d2..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createNativeModules.ts +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -/* LYNX_NATIVE_MODULES_IMPORT */ -import { - nativeModulesCallEndpoint, - switchExposureServiceEndpoint, - type Cloneable, - type NativeModulesMap, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export async function createNativeModules( - uiThreadRpc: Rpc, - mainThreadRpc: Rpc, - nativeModulesMap: NativeModulesMap, -): Promise> { - const switchExposure = mainThreadRpc.createCall( - switchExposureServiceEndpoint, - ); - const nativeModulesCall = uiThreadRpc.createCall(nativeModulesCallEndpoint); - const lynxExposureModule = { - resumeExposure() { - switchExposure(true, true); - }, - stopExposure(param: { sendEvent?: boolean }) { - switchExposure(false, param.sendEvent ?? true); - }, - }; - const bridgeModule = { - call( - name: string, - data: Cloneable, - callback: (ret: Cloneable) => void, - ): void { - nativeModulesCall(name, data, 'bridge').then(callback); - }, - }; - - const nativeModules = {}; - const customNativeModules: Record> = {}; - await Promise.all( - Object.entries(nativeModulesMap).map(( - [moduleName, moduleStr], - ) => - import(/* webpackIgnore: true */ moduleStr).then( - module => - customNativeModules[moduleName] = module?.default?.( - nativeModules, - (name: string, data: Cloneable) => - nativeModulesCall(name, data, moduleName), - ), - ) - ), - ); - /* LYNX_NATIVE_MODULES_ADD */ - - return Object.assign(nativeModules, { - bridge: bridgeModule, - LynxExposureModule: lynxExposureModule, - ...customNativeModules, - }); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createPerformanceApis.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createPerformanceApis.ts deleted file mode 100644 index 0a28b7d704..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createPerformanceApis.ts +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import type { NativeApp } from '@lynx-js/web-constants'; -import type { TimingSystem } from './createTimingSystem.js'; - -export function createPerformanceApis(timingSystem: TimingSystem): Pick< - NativeApp, - | 'generatePipelineOptions' - | 'onPipelineStart' - | 'markPipelineTiming' - | 'bindPipelineIdWithTimingFlag' - | 'profileStart' - | 'profileEnd' - | 'profileMark' - | 'profileFlowId' - | 'isProfileRecording' -> { - let inc = 0; - const performanceApis = { - generatePipelineOptions: () => { - const newPipelineId = `_pipeline_` + (inc++); - return { - pipelineID: newPipelineId, - needTimestamps: false, - }; - }, - onPipelineStart: function(): void { - // Do nothing - }, - markPipelineTiming: function( - pipelineId: string, - timingKey: string, - ): void { - timingSystem.markTimingInternal(timingKey, pipelineId); - }, - bindPipelineIdWithTimingFlag: function( - pipelineId: string, - timingFlag: string, - ): void { - if (!timingSystem.pipelineIdToTimingFlags.has(pipelineId)) { - timingSystem.pipelineIdToTimingFlags.set(pipelineId, []); - } - const timingFlags = timingSystem.pipelineIdToTimingFlags.get(pipelineId)!; - timingFlags.push(timingFlag); - }, - profileStart: () => { - console.error('NYI: profileStart. This is an issue of lynx-core.'); - }, - profileEnd: () => { - console.error('NYI: profileEnd. This is an issue of lynx-core.'); - }, - profileMark: () => { - console.error('NYI: profileMark. This is an issue of lynx-core.'); - }, - profileFlowId: () => { - console.error('NYI: profileFlowId. This is an issue of lynx-core.'); - return 0; - }, - isProfileRecording: () => { - console.error('NYI: isProfileRecording. This is an issue of lynx-core.'); - return false; - }, - }; - return performanceApis; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createTimingSystem.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createTimingSystem.ts deleted file mode 100644 index 7522b9ba58..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/createTimingSystem.ts +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - dispatchLynxViewEventEndpoint, - markTimingEndpoint, - postTimingFlagsEndpoint, - type EventEmitter, - type MarkTiming, - type TimingInfo, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export type TimingSystem = { - registerGlobalEmitter: (globalEventEmitter: EventEmitter) => void; - markTimingInternal: (timingKey: string, pipelineId?: string) => void; - pipelineIdToTimingFlags: Map; -}; - -const ListenerKeys = { - onSetup: 'lynx.performance.timing.onSetup', - onUpdate: 'lynx.performance.timing.onUpdate', -} as const; - -export function createTimingSystem( - mainThreadRpc: Rpc, - uiThreadRpc: Rpc, -): TimingSystem { - let isFp = true; - const setupTiming: Record = {}; - const pipelineIdToTiming: Map> = new Map(); - const pipelineIdToTimingFlags: Map = new Map(); - const dispatchLynxViewEvent = uiThreadRpc.createCall( - dispatchLynxViewEventEndpoint, - ); - let commonTimingFlags: string[] = []; - function markTimingInternal( - markTimingRecords: Array< - Omit & { timeStamp?: number } - >, - ) { - for (let { timingKey, pipelineId, timeStamp } of markTimingRecords) { - if (!timeStamp) timeStamp = performance.now() + performance.timeOrigin; - if (!pipelineId) { - setupTiming[timingKey] = timeStamp; - continue; - } - if (!pipelineIdToTiming.has(pipelineId)) { - pipelineIdToTiming.set(pipelineId, {}); - } - const timingInfo = pipelineIdToTiming.get(pipelineId)!; - timingInfo[timingKey] = timeStamp; - } - } - const registerGlobalEmitter = (globalEventEmitter: EventEmitter) => { - mainThreadRpc.registerHandler( - postTimingFlagsEndpoint, - ( - timingFlags: string[], - pipelineId: string | undefined, - ) => { - if (!pipelineId) { - commonTimingFlags = commonTimingFlags.concat(timingFlags); - } else timingFlags = timingFlags.concat(commonTimingFlags); - if (isFp) { - const timingInfo: TimingInfo = { - extra_timing: {}, - setup_timing: setupTiming, - update_timings: {}, - metrics: {}, - has_reload: false, - thread_strategy: 0, - url: '', - }; - globalEventEmitter.emit(ListenerKeys.onSetup, [timingInfo]); - dispatchLynxViewEvent('timing', setupTiming); - } else { - const timings = - (pipelineId ? pipelineIdToTiming.get(pipelineId) : undefined) ?? {}; - const flags = [ - ...timingFlags, - ...(pipelineIdToTimingFlags.get(pipelineId!) ?? []), - ]; - const timingInfo: TimingInfo = { - extra_timing: {}, - setup_timing: {}, - update_timings: Object.fromEntries( - [...flags].map(flag => [flag, timings]), - ), - metrics: {}, - has_reload: false, - thread_strategy: 0, - url: '', - }; - globalEventEmitter.emit(ListenerKeys.onUpdate, [timingInfo]); - dispatchLynxViewEvent('timing', timings); - } - if (pipelineId) { - pipelineIdToTimingFlags.delete(pipelineId); - pipelineIdToTiming.delete(pipelineId); - } - if (isFp) { - isFp = false; - } - }, - ); - }; - mainThreadRpc.registerHandler( - markTimingEndpoint, - markTimingInternal, - ); - uiThreadRpc.registerHandler( - markTimingEndpoint, - markTimingInternal, - ); - return { - markTimingInternal: ( - timingKey: string, - pipelineId?: string, - timeStamp?: number, - ) => markTimingInternal([{ timingKey, pipelineId, timeStamp }]), - registerGlobalEmitter, - pipelineIdToTimingFlags, - }; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createGetCustomSection.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createGetCustomSection.ts deleted file mode 100644 index 662468ccf8..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createGetCustomSection.ts +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - getCustomSectionsEndpoint, - type Cloneable, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function createGetCustomSection( - rpc: Rpc, - customSections: Record, -): (key: string, callback: (object: Cloneable) => void) => void { - const getCustomSections = rpc.createCall(getCustomSectionsEndpoint); - return ( - key: string, - callback: (object: Cloneable) => void, - ) => { - if (customSections[key]) { - callback(customSections[key]); - } - getCustomSections(key).then(callback); - }; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createGetPathInfo.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createGetPathInfo.ts deleted file mode 100644 index 0a61df5072..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createGetPathInfo.ts +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - ErrorCode, - getPathInfoEndpoint, - type NativeApp, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function createGetPathInfo(rpc: Rpc): NativeApp['getPathInfo'] { - return ( - type, - identifier, - component_id, - first_only, - callback, - root_unique_id, - ) => { - rpc.invoke(getPathInfoEndpoint, [ - type, - identifier, - component_id, - first_only, - root_unique_id, - ]).then(callback).catch((error: Error) => { - console.error(`[lynx-web] getPathInfo failed`, error); - callback({ - code: ErrorCode.UNKNOWN, - data: error.message || '', - }); - }); - }; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createInvokeUIMethod.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createInvokeUIMethod.ts deleted file mode 100644 index 183cd8c128..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createInvokeUIMethod.ts +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - ErrorCode, - invokeUIMethodEndpoint, - type NativeApp, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function createInvokeUIMethod(rpc: Rpc): NativeApp['invokeUIMethod'] { - return ( - type, - identifier, - component_id, - method, - params, - callback, - root_unique_id, - ) => { - rpc.invoke(invokeUIMethodEndpoint, [ - type, - identifier, - component_id, - method, - params, - root_unique_id, - ]).then(callback).catch((error) => { - console.error(`[lynx-web] invokeUIMethod failed`, error); - callback({ - code: ErrorCode.UNKNOWN, - data: '', - }); - }); - }; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts deleted file mode 100644 index 6cd34895d4..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { type NativeApp } from '@lynx-js/web-constants'; - -export function createJSObjectDestructionObserver(): NativeApp[ - 'createJSObjectDestructionObserver' -] { - const registry = new FinalizationRegistry(( - callback: (...args: unknown[]) => unknown, - ) => callback()); - return (cleanupCallback) => { - const observedObject = {}; - registry.register(observedObject, cleanupCallback); - return observedObject; - }; -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerDisposeHandler.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerDisposeHandler.ts deleted file mode 100644 index bc6f0eb4d8..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerDisposeHandler.ts +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { disposeEndpoint, type NativeApp } from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerDisposeHandler( - rpc: Rpc, - nativeApp: NativeApp, - destroyCard: typeof import('@lynx-js/lynx-core/web')['destroyCard'], - callDestroyLifetimeFun: - typeof import('@lynx-js/lynx-core/web')['callDestroyLifetimeFun'], -): void { - rpc.registerHandler(disposeEndpoint, () => { - const id = nativeApp.id; - callDestroyLifetimeFun(id); - destroyCard(id); - }); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerGlobalExposureEventHandler.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerGlobalExposureEventHandler.ts deleted file mode 100644 index 2c37c5ba2c..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerGlobalExposureEventHandler.ts +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - postExposureEndpoint, - type NativeTTObject, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerGlobalExposureEventHandler( - rpc: Rpc, - tt: NativeTTObject, -): void { - rpc.registerHandler(postExposureEndpoint, ({ exposures, disExposures }) => { - if (exposures.length > 0) { - tt.GlobalEventEmitter.emit('exposure', [ - exposures.map(e => - Object.assign(e, e.detail, { dataset: e.target.dataset }) - ), - ]); - } - if (disExposures.length > 0) { - tt.GlobalEventEmitter.emit('disexposure', [ - disExposures.map(e => - Object.assign(e, e.detail, { dataset: e.target.dataset }) - ), - ]); - } - }); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts deleted file mode 100644 index ed8935a2c5..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - publicComponentEventEndpoint, - type NativeTTObject, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerPublicComponentEventHandler( - rpc: Rpc, - tt: NativeTTObject, -): void { - rpc.registerHandlerLazy( - publicComponentEventEndpoint, - tt, - 'publicComponentEvent', - ); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerPublishEventHandler.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerPublishEventHandler.ts deleted file mode 100644 index b963def656..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerPublishEventHandler.ts +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - publishEventEndpoint, - type NativeTTObject, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerPublishEventHandler( - rpc: Rpc, - tt: NativeTTObject, -): void { - rpc.registerHandlerLazy( - publishEventEndpoint, - tt, - 'publishEvent', - ); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts deleted file mode 100644 index 5fb08323bc..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - sendGlobalEventEndpoint, - type NativeTTObject, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerSendGlobalEventHandler( - rpc: Rpc, - tt: NativeTTObject, -): void { - rpc.registerHandler(sendGlobalEventEndpoint, (...args) => { - tt.GlobalEventEmitter.emit(...args); - }); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts deleted file mode 100644 index 145d3068c3..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - updateDataEndpoint, - type NativeTTObject, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerUpdateDataHandler( - rpc: Rpc, - tt: NativeTTObject, -): void { - rpc.registerHandlerLazy( - updateDataEndpoint, - tt, - 'updateCardData', - ); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts deleted file mode 100644 index 963dd1ee63..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - updateGlobalPropsEndpoint, - type NativeTTObject, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerUpdateGlobalPropsHandler( - rpc: Rpc, - tt: NativeTTObject, -): void { - rpc.registerHandlerLazy( - updateGlobalPropsEndpoint, - tt, - 'updateGlobalProps', - ); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts deleted file mode 100644 index 5a1e7127ef..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { - dispatchI18nResourceEndpoint, - updateI18nResourceEndpoint, - type NativeTTObject, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; -import { I18nResource } from '@lynx-js/web-constants'; - -export function registerUpdateI18nResource( - uiThreadRpc: Rpc, - mainThreadRpc: Rpc, - i18nResource: I18nResource, - tt: NativeTTObject, -): void { - // updateI18nResourceEndpoint from ui thread - uiThreadRpc.registerHandler(updateI18nResourceEndpoint, (data) => { - i18nResource.setData(data); - tt.GlobalEventEmitter.emit('onI18nResourceReady', []); - }); - // dispatchI18nResource from mts - mainThreadRpc.registerHandler(dispatchI18nResourceEndpoint, (data) => { - i18nResource.setData(data); - tt.GlobalEventEmitter.emit('onI18nResourceReady', []); - }); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/startBackgroundThread.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/startBackgroundThread.ts deleted file mode 100644 index 32085b94d7..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/background-apis/startBackgroundThread.ts +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { Rpc } from '@lynx-js/web-worker-rpc'; -import { createBackgroundLynx } from './createBackgroundLynx.js'; -import { createNativeApp } from './createNativeApp.js'; -import { registerDisposeHandler } from './crossThreadHandlers/registerDisposeHandler.js'; -import { BackgroundThreadStartEndpoint } from '@lynx-js/web-constants'; -import { createNapiLoader } from './createNapiLoader.js'; -import { createTimingSystem } from './createTimingSystem.js'; - -const lynxCore = import( - /* webpackMode: "eager" */ '@lynx-js/lynx-core/web' -); - -export function startBackgroundThread( - uiThreadPort: MessagePort, - mainThreadPort: MessagePort, -): void { - const uiThreadRpc = new Rpc(uiThreadPort, 'bg-to-ui'); - const mainThreadRpc = new Rpc(mainThreadPort, 'bg-to-main'); - const timingSystem = createTimingSystem(mainThreadRpc, uiThreadRpc); - timingSystem.markTimingInternal('load_core_start'); - mainThreadRpc.registerHandler( - BackgroundThreadStartEndpoint, - async (config) => { - timingSystem.markTimingInternal('load_core_end'); - const nativeApp = await createNativeApp({ - ...config, - uiThreadRpc, - mainThreadRpc, - timingSystem, - }); - (globalThis as any)['napiLoaderOnRT' + nativeApp.id] = - await createNapiLoader( - uiThreadRpc, - config.napiModulesMap, - ); - - const nativeLynx = createBackgroundLynx( - config, - nativeApp, - mainThreadRpc, - uiThreadRpc, - ); - lynxCore.then( - ( - { - loadCard, - destroyCard, - callDestroyLifetimeFun, - nativeGlobal, - loadDynamicComponent, - }, - ) => { - // @lynx-js/lynx-core >= 0.1.3 will export nativeGlobal and loadDynamicComponent - if (nativeGlobal && loadDynamicComponent) { - nativeGlobal.loadDynamicComponent = loadDynamicComponent; - } - loadCard(nativeApp, { - ...config, - // @ts-ignore - updateData: config.initData, - }, nativeLynx); - registerDisposeHandler( - uiThreadRpc, - nativeApp, - destroyCard, - callDestroyLifetimeFun, - ); - }, - ); - }, - ); -} diff --git a/packages/web-platform/web-worker-runtime/src/backgroundThread/index.ts b/packages/web-platform/web-worker-runtime/src/backgroundThread/index.ts deleted file mode 100644 index f843ca104e..0000000000 --- a/packages/web-platform/web-worker-runtime/src/backgroundThread/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -// @ts-expect-error -globalThis.nativeConsole = console; - -export { startBackgroundThread } from './background-apis/startBackgroundThread.js'; diff --git a/packages/web-platform/web-worker-runtime/src/global.d.ts b/packages/web-platform/web-worker-runtime/src/global.d.ts deleted file mode 100644 index 4d36088cd9..0000000000 --- a/packages/web-platform/web-worker-runtime/src/global.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare global { - var SystemInfo: Record | undefined; - var module: { exports: any }; - var __bundle__holder: unknown; -} - -export {}; diff --git a/packages/web-platform/web-worker-runtime/src/index.ts b/packages/web-platform/web-worker-runtime/src/index.ts deleted file mode 100644 index 80ff6c2028..0000000000 --- a/packages/web-platform/web-worker-runtime/src/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { startBackgroundThread } from './backgroundThread/index.js'; - -export interface WorkerStartMessage { - mode: 'main' | 'background'; - toPeerThread: MessagePort; - toUIThread: MessagePort; - systemInfo?: Record; -} - -globalThis.onmessage = async (ev) => { - const { mode, toPeerThread, toUIThread, systemInfo } = ev - .data as WorkerStartMessage; - if (!globalThis.SystemInfo) { - globalThis.SystemInfo = systemInfo; - } - if (mode === 'main') { - const { startMainThreadWorker } = await import( - /* webpackChunkName: "web-worker-runtime-main-thread" */ - /* webpackMode: "lazy-once" */ - /* webpackPreload: true */ - './mainThread/startMainThread.js' - ); - startMainThreadWorker(toUIThread, toPeerThread); - } else { - startBackgroundThread(toUIThread, toPeerThread); - } -}; -Object.assign(globalThis, { - module: { exports: null }, -}); diff --git a/packages/web-platform/web-worker-runtime/src/mainThread/crossThreadHandlers/createMainthreadMarkTimingInternal.ts b/packages/web-platform/web-worker-runtime/src/mainThread/crossThreadHandlers/createMainthreadMarkTimingInternal.ts deleted file mode 100644 index e20e37b61d..0000000000 --- a/packages/web-platform/web-worker-runtime/src/mainThread/crossThreadHandlers/createMainthreadMarkTimingInternal.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - dispatchMarkTiming, - flushMarkTiming, - markTimingEndpoint, -} from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function createMarkTimingInternal( - backgroundThreadRpc: Rpc, -) { - const markTiming = backgroundThreadRpc.createCall(markTimingEndpoint); - const cacheMarkTimings = { - records: [], - timeout: null, - }; - - return { - markTimingInternal: ( - timingKey: string, - pipelineId?: string, - timeStamp?: number, - ) => { - dispatchMarkTiming({ - timingKey, - pipelineId, - timeStamp, - markTiming, - cacheMarkTimings, - }); - }, - flushMarkTimingInternal: () => - flushMarkTiming(markTiming, cacheMarkTimings), - }; -} diff --git a/packages/web-platform/web-worker-runtime/src/mainThread/crossThreadHandlers/registerUpdateDataHandler.ts b/packages/web-platform/web-worker-runtime/src/mainThread/crossThreadHandlers/registerUpdateDataHandler.ts deleted file mode 100644 index e79c5e87e6..0000000000 --- a/packages/web-platform/web-worker-runtime/src/mainThread/crossThreadHandlers/registerUpdateDataHandler.ts +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import { updateDataEndpoint } from '@lynx-js/web-constants'; -import type { Rpc } from '@lynx-js/web-worker-rpc'; - -export function registerUpdateDataHandler( - mainThreadRpc: Rpc, - handleUpdatedData: ReturnType< - typeof import('@lynx-js/web-mainthread-apis').prepareMainThreadAPIs - >['handleUpdatedData'], -): void { - mainThreadRpc.registerHandler( - updateDataEndpoint, - (newData, options) => handleUpdatedData(newData, options), - ); -} diff --git a/packages/web-platform/web-worker-runtime/src/mainThread/index.ts b/packages/web-platform/web-worker-runtime/src/mainThread/index.ts deleted file mode 100644 index 1173553ae1..0000000000 --- a/packages/web-platform/web-worker-runtime/src/mainThread/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -export { startMainThreadWorker } from './startMainThread.js'; diff --git a/packages/web-platform/web-worker-runtime/src/mainThread/startMainThread.ts b/packages/web-platform/web-worker-runtime/src/mainThread/startMainThread.ts deleted file mode 100644 index ca57ba78af..0000000000 --- a/packages/web-platform/web-worker-runtime/src/mainThread/startMainThread.ts +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. - -import { - flushElementTreeEndpoint, - mainThreadStartEndpoint, - postOffscreenEventEndpoint, - reportErrorEndpoint, - type I18nResourceTranslationOptions, - dispatchLynxViewEventEndpoint, - type CloneableObject, - i18nResourceMissedEventName, - I18nResources, - type InitI18nResources, - updateI18nResourcesEndpoint, - multiThreadExposureChangedEndpoint, - lynxUniqueIdAttribute, - type JSRealm, - loadTemplateMultiThread, -} from '@lynx-js/web-constants'; -import { Rpc } from '@lynx-js/web-worker-rpc'; -import { createMarkTimingInternal } from './crossThreadHandlers/createMainthreadMarkTimingInternal.js'; -import { OffscreenDocument } from '@lynx-js/offscreen-document/webworker'; -import { _onEvent } from '@lynx-js/offscreen-document/webworker'; -import { registerUpdateDataHandler } from './crossThreadHandlers/registerUpdateDataHandler.js'; - -const { prepareMainThreadAPIs } = await import( - /* webpackChunkName: "web-core-main-thread-apis" */ - /* webpackMode: "lazy-once" */ - /* webpackPreload: true */ - /* webpackPrefetch: true */ - /* webpackFetchPriority: "high" */ - '@lynx-js/web-mainthread-apis' -); -function loadScriptSync(url: string): unknown { - globalThis.module.exports = null; - importScripts(url); - const ret = globalThis.module?.exports; - return ret; -} - -function loadScript(url: string): Promise { - return new Promise((resolve, reject) => { - fetch(url) - .then(() => { - globalThis.module.exports = null; - importScripts(url); - const ret = globalThis.module?.exports; - resolve(ret); - }).catch(reject); - }); -} - -function createCurrentWorkerRealm(): JSRealm { - return { - globalWindow: globalThis, - loadScript, - loadScriptSync, - }; -} - -export async function startMainThreadWorker( - uiThreadPort: MessagePort, - backgroundThreadPort: MessagePort, -) { - const uiThreadRpc = new Rpc(uiThreadPort, 'main-to-ui'); - const backgroundThreadRpc = new Rpc(backgroundThreadPort, 'main-to-bg'); - const { markTimingInternal, flushMarkTimingInternal } = - createMarkTimingInternal(backgroundThreadRpc); - const uiFlush = uiThreadRpc.createCall(flushElementTreeEndpoint); - const reportError = uiThreadRpc.createCall(reportErrorEndpoint); - const triggerI18nResourceFallback = ( - options: I18nResourceTranslationOptions, - ) => { - uiThreadRpc.invoke(dispatchLynxViewEventEndpoint, [ - i18nResourceMissedEventName, - options as CloneableObject, - ]); - }; - const document = new OffscreenDocument({ - onCommit: uiFlush, - }); - Object.assign(globalThis, { - document, - }); - const mtsRealm = createCurrentWorkerRealm(); - const i18nResources = new I18nResources(); - uiThreadRpc.registerHandler(postOffscreenEventEndpoint, document[_onEvent]); - const sendMultiThreadExposureChangedEndpoint = uiThreadRpc.createCall( - multiThreadExposureChangedEndpoint, - ); - const loadTemplate = uiThreadRpc.createCall(loadTemplateMultiThread); - const { startMainThread, handleUpdatedData } = prepareMainThreadAPIs( - backgroundThreadRpc, - document, // rootDom - document, - mtsRealm, - (exposureChangedElementUniqueIds) => { - document.commit(); - sendMultiThreadExposureChangedEndpoint( - exposureChangedElementUniqueIds - .map(e => e.getAttribute(lynxUniqueIdAttribute)) - .filter(id => id !== null), - ); - }, - markTimingInternal, - flushMarkTimingInternal, - reportError, - triggerI18nResourceFallback, - (initI18nResources: InitI18nResources) => { - i18nResources.setData(initI18nResources); - return i18nResources; - }, - loadTemplate, - undefined, - false, - ); - uiThreadRpc.registerHandler( - mainThreadStartEndpoint, - async (config) => { - await startMainThread(config); - registerUpdateDataHandler( - uiThreadRpc, - handleUpdatedData, - ); - }, - ); - uiThreadRpc.registerHandler(updateI18nResourcesEndpoint, data => { - i18nResources.setData(data as InitI18nResources); - }); -} diff --git a/packages/web-platform/web-worker-runtime/tsconfig.json b/packages/web-platform/web-worker-runtime/tsconfig.json deleted file mode 100644 index 5383953e08..0000000000 --- a/packages/web-platform/web-worker-runtime/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "composite": true, - "rootDir": "./src", - "outDir": "./dist", - "lib": ["ESNext", "WebWorker"], - }, - "include": ["src"], - "references": [ - { "path": "../web-constants/tsconfig.json" }, - { "path": "../web-mainthread-apis/tsconfig.json" }, - { "path": "../web-worker-rpc/tsconfig.json" }, - { "path": "../offscreen-document/tsconfig.json" }, - ], -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab805fa4b5..0b7e25da9e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -275,7 +275,7 @@ importers: version: 3.7.0 '@rsbuild/plugin-babel': specifier: 1.1.0 - version: 1.1.0(@rsbuild/core@1.7.3) + version: 1.1.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0)) '@types/react': specifier: ^18.3.28 version: 18.3.28 @@ -702,27 +702,12 @@ importers: '@lynx-js/types': specifier: 3.7.0 version: 3.7.0 - '@lynx-js/web-constants': - specifier: workspace:* - version: link:../web-platform/web-constants - '@lynx-js/web-core': - specifier: workspace:* - version: link:../web-platform/web-core - '@lynx-js/web-elements': - specifier: workspace:* - version: link:../web-platform/web-elements - '@lynx-js/web-mainthread-apis': + '@lynx-js/web-core-wasm': specifier: workspace:* - version: link:../web-platform/web-mainthread-apis + version: link:../web-platform/web-core-wasm '@lynx-js/web-platform-rsbuild-plugin': specifier: workspace:* version: link:../web-platform/web-rsbuild-plugin - '@lynx-js/web-worker-rpc': - specifier: workspace:* - version: link:../web-platform/web-worker-rpc - '@lynx-js/web-worker-runtime': - specifier: workspace:* - version: link:../web-platform/web-worker-runtime '@rsbuild/core': specifier: catalog:rsbuild version: 1.7.3 @@ -1104,18 +1089,18 @@ importers: '@lynx-js/types': specifier: 3.7.0 version: 3.7.0 - '@lynx-js/web-core': + '@lynx-js/web-core-wasm': specifier: workspace:* - version: link:../../web-platform/web-core + version: link:../../web-platform/web-core-wasm '@lynx-js/web-elements': specifier: workspace:* version: link:../../web-platform/web-elements '@rsbuild/plugin-less': specifier: 1.6.0 - version: 1.6.0(@rsbuild/core@1.7.3) + version: 1.6.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0)) '@rsbuild/plugin-sass': specifier: 1.5.0 - version: 1.5.0(@rsbuild/core@1.7.3) + version: 1.5.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0)) commander: specifier: ^13.1.0 version: 13.1.0 @@ -1130,7 +1115,7 @@ importers: version: 1.1.1 rsbuild-plugin-tailwindcss: specifier: 0.2.4 - version: 0.2.4(@rsbuild/core@1.7.3)(tailwindcss@4.2.1) + version: 0.2.4(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))(tailwindcss@4.2.1) rslog: specifier: ^1.3.2 version: 1.3.2 @@ -1317,8 +1302,6 @@ importers: specifier: workspace:* version: link:../react - packages/web-platform/offscreen-document: {} - packages/web-platform/playwright-fixtures: dependencies: nyc: @@ -1332,65 +1315,6 @@ importers: specifier: ^1.58.2 version: 1.58.2 - packages/web-platform/web-constants: - dependencies: - '@lynx-js/web-worker-rpc': - specifier: workspace:* - version: link:../web-worker-rpc - devDependencies: - '@lynx-js/offscreen-document': - specifier: workspace:* - version: link:../offscreen-document - - packages/web-platform/web-core: - dependencies: - '@lynx-js/offscreen-document': - specifier: workspace:* - version: link:../offscreen-document - '@lynx-js/web-constants': - specifier: workspace:* - version: link:../web-constants - '@lynx-js/web-mainthread-apis': - specifier: workspace:* - version: link:../web-mainthread-apis - '@lynx-js/web-worker-rpc': - specifier: workspace:* - version: link:../web-worker-rpc - '@lynx-js/web-worker-runtime': - specifier: workspace:* - version: link:../web-worker-runtime - devDependencies: - '@lynx-js/lynx-core': - specifier: 0.1.3 - version: 0.1.3 - '@lynx-js/web-elements': - specifier: workspace:* - version: link:../web-elements - - packages/web-platform/web-core-server: - devDependencies: - '@lynx-js/offscreen-document': - specifier: workspace:* - version: link:../offscreen-document - '@lynx-js/web-constants': - specifier: workspace:* - version: link:../web-constants - '@lynx-js/web-elements': - specifier: workspace:* - version: link:../web-elements - '@lynx-js/web-mainthread-apis': - specifier: workspace:* - version: link:../web-mainthread-apis - '@lynx-js/web-worker-rpc': - specifier: workspace:* - version: link:../web-worker-rpc - rsbuild-plugin-arethetypeswrong: - specifier: 0.2.0 - version: 0.2.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))(typescript@5.9.3) - rsbuild-plugin-publint: - specifier: 0.3.4 - version: 0.3.4(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0)) - packages/web-platform/web-core-wasm: dependencies: '@lynx-js/web-elements': @@ -1493,9 +1417,9 @@ importers: '@lynx-js/lynx-core': specifier: 0.1.3 version: 0.1.3 - '@lynx-js/web-core': + '@lynx-js/web-core-wasm': specifier: workspace:* - version: link:../web-core + version: link:../web-core-wasm '@lynx-js/web-elements': specifier: workspace:* version: link:../web-elements @@ -1512,34 +1436,15 @@ importers: specifier: ^2.8.1 version: 2.8.1 - packages/web-platform/web-mainthread-apis: - dependencies: - '@lynx-js/web-constants': - specifier: workspace:* - version: link:../web-constants - hyphenate-style-name: - specifier: ^1.1.0 - version: 1.1.0 - wasm-feature-detect: - specifier: ^1.8.0 - version: 1.8.0 - devDependencies: - binaryen: - specifier: ^125.0.0 - version: 125.0.0 - fb-dotslash: - specifier: ^0.5.8 - version: 0.5.8 - packages/web-platform/web-rsbuild-plugin: dependencies: loader-utils: specifier: ^3.3.1 version: 3.3.1 devDependencies: - '@lynx-js/web-core': + '@lynx-js/web-core-wasm': specifier: workspace:* - version: link:../web-core + version: link:../web-core-wasm '@lynx-js/web-elements': specifier: workspace:* version: link:../web-elements @@ -1561,9 +1466,9 @@ importers: packages/web-platform/web-rsbuild-server-middleware: devDependencies: - '@lynx-js/web-core': + '@lynx-js/web-core-wasm': specifier: workspace:* - version: link:../web-core + version: link:../web-core-wasm '@lynx-js/web-elements': specifier: workspace:* version: link:../web-elements @@ -1582,9 +1487,6 @@ importers: '@lynx-js/lynx-core': specifier: 0.1.3 version: 0.1.3 - '@lynx-js/offscreen-document': - specifier: workspace:* - version: link:../offscreen-document '@lynx-js/playwright-fixtures': specifier: workspace:* version: link:../playwright-fixtures @@ -1597,30 +1499,15 @@ importers: '@lynx-js/rspeedy': specifier: workspace:* version: link:../../rspeedy/core - '@lynx-js/web-constants': - specifier: workspace:* - version: link:../web-constants - '@lynx-js/web-core': - specifier: workspace:* - version: link:../web-core - '@lynx-js/web-core-server': - specifier: workspace:* - version: link:../web-core-server - '@lynx-js/web-elements': - specifier: workspace:* - version: link:../web-elements - '@lynx-js/web-mainthread-apis': + '@lynx-js/web-core-wasm': specifier: workspace:* - version: link:../web-mainthread-apis + version: link:../web-core-wasm '@lynx-js/web-platform-rsbuild-plugin': specifier: workspace:* version: link:../web-rsbuild-plugin '@lynx-js/web-rsbuild-server-middleware': specifier: workspace:* version: link:../web-rsbuild-server-middleware - '@lynx-js/webpack-dev-transport': - specifier: workspace:* - version: link:../../webpack/webpack-dev-transport '@playwright/test': specifier: ^1.58.2 version: 1.58.2 @@ -1645,25 +1532,6 @@ importers: packages/web-platform/web-worker-rpc: {} - packages/web-platform/web-worker-runtime: - dependencies: - '@lynx-js/offscreen-document': - specifier: workspace:* - version: link:../offscreen-document - '@lynx-js/web-constants': - specifier: workspace:* - version: link:../web-constants - '@lynx-js/web-mainthread-apis': - specifier: workspace:* - version: link:../web-mainthread-apis - '@lynx-js/web-worker-rpc': - specifier: workspace:* - version: link:../web-worker-rpc - devDependencies: - '@lynx-js/lynx-core': - specifier: 0.1.3 - version: 0.1.3 - packages/webpack/cache-events-webpack-plugin: dependencies: '@lynx-js/webpack-runtime-globals': @@ -2008,13 +1876,13 @@ importers: version: 7.33.4(@types/node@24.10.13) '@rsbuild/plugin-sass': specifier: 1.5.0 - version: 1.5.0(@rsbuild/core@1.7.3) + version: 1.5.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0)) '@rsbuild/plugin-type-check': specifier: 1.3.4 - version: 1.3.4(@rsbuild/core@1.7.3)(@rspack/core@1.7.7(@swc/helpers@0.5.18))(tslib@2.8.1)(typescript@5.9.3) + version: 1.3.4(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))(@rspack/core@1.7.7(@swc/helpers@0.5.18))(tslib@2.8.1)(typescript@5.9.3) '@rsbuild/plugin-typed-css-modules': specifier: 1.2.2 - version: 1.2.2(@rsbuild/core@1.7.3) + version: 1.2.2(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0)) '@rspress/core': specifier: 2.0.3 version: 2.0.3(@types/react@19.2.14)(core-js@3.48.0) @@ -2354,8 +2222,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + '@babel/plugin-transform-react-jsx@7.28.6': + resolution: {integrity: sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -10690,11 +10558,11 @@ snapshots: '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 @@ -10728,7 +10596,7 @@ snapshots: '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.29.0) transitivePeerDependencies: @@ -12188,13 +12056,13 @@ snapshots: optionalDependencies: core-js: 3.48.0 - '@rsbuild/plugin-babel@1.1.0(@rsbuild/core@1.7.3)': + '@rsbuild/plugin-babel@1.1.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@rsbuild/core': 1.7.3 + '@rsbuild/core': 2.0.0-beta.3(core-js@3.48.0) '@types/babel__core': 7.20.5 deepmerge: 4.3.1 reduce-configs: 1.1.1 @@ -12234,9 +12102,9 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 - '@rsbuild/plugin-less@1.6.0(@rsbuild/core@1.7.3)': + '@rsbuild/plugin-less@1.6.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))': dependencies: - '@rsbuild/core': 1.7.3 + '@rsbuild/core': 2.0.0-beta.3(core-js@3.48.0) deepmerge: 4.3.1 reduce-configs: 1.1.1 @@ -12265,6 +12133,15 @@ snapshots: reduce-configs: 1.1.1 sass-embedded: 1.97.3 + '@rsbuild/plugin-sass@1.5.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))': + dependencies: + '@rsbuild/core': 2.0.0-beta.3(core-js@3.48.0) + deepmerge: 4.3.1 + loader-utils: 2.0.4 + postcss: 8.5.6 + reduce-configs: 1.1.1 + sass-embedded: 1.97.3 + '@rsbuild/plugin-source-build@1.0.4(@rsbuild/core@1.7.3)': dependencies: fast-glob: 3.3.3 @@ -12273,19 +12150,6 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 - '@rsbuild/plugin-type-check@1.3.4(@rsbuild/core@1.7.3)(@rspack/core@1.7.7(@swc/helpers@0.5.18))(tslib@2.8.1)(typescript@5.9.3)': - dependencies: - deepmerge: 4.3.1 - json5: 2.2.3 - reduce-configs: 1.1.1 - ts-checker-rspack-plugin: 1.3.0(@rspack/core@1.7.7(@swc/helpers@0.5.18))(tslib@2.8.1)(typescript@5.9.3) - optionalDependencies: - '@rsbuild/core': 1.7.3 - transitivePeerDependencies: - - '@rspack/core' - - tslib - - typescript - '@rsbuild/plugin-type-check@1.3.4(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))(@rspack/core@1.7.7(@swc/helpers@0.5.18))(tslib@2.8.1)(typescript@5.9.3)': dependencies: deepmerge: 4.3.1 @@ -12303,6 +12167,10 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 + '@rsbuild/plugin-typed-css-modules@1.2.2(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))': + optionalDependencies: + '@rsbuild/core': 2.0.0-beta.3(core-js@3.48.0) + '@rsdoctor/client@1.2.3': {} '@rsdoctor/core@1.2.3(@rsbuild/core@1.7.3)(@rspack/core@1.7.7(@swc/helpers@0.5.18))(webpack@5.105.2)': @@ -18191,12 +18059,6 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 - rsbuild-plugin-arethetypeswrong@0.2.0(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - optionalDependencies: - '@rsbuild/core': 2.0.0-beta.3(core-js@3.48.0) - rsbuild-plugin-dts@0.19.6(@microsoft/api-extractor@7.57.6(@types/node@24.10.13))(@rsbuild/core@1.7.3)(@typescript/native-preview@7.0.0-dev.20260212.1)(typescript@5.9.3): dependencies: '@ast-grep/napi': 0.37.0 @@ -18220,15 +18082,15 @@ snapshots: optionalDependencies: '@rsbuild/core': 2.0.0-beta.3(core-js@3.48.0) - rsbuild-plugin-tailwindcss@0.2.4(@rsbuild/core@1.7.3)(tailwindcss@4.2.1): + rsbuild-plugin-tailwindcss@0.2.4(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))(tailwindcss@3.4.19): dependencies: - tailwindcss: 4.2.1 + tailwindcss: 3.4.19 optionalDependencies: - '@rsbuild/core': 1.7.3 + '@rsbuild/core': 2.0.0-beta.3(core-js@3.48.0) - rsbuild-plugin-tailwindcss@0.2.4(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))(tailwindcss@3.4.19): + rsbuild-plugin-tailwindcss@0.2.4(@rsbuild/core@2.0.0-beta.3(core-js@3.48.0))(tailwindcss@4.2.1): dependencies: - tailwindcss: 3.4.19 + tailwindcss: 4.2.1 optionalDependencies: '@rsbuild/core': 2.0.0-beta.3(core-js@3.48.0) From ef62fba069d337e82df80c26719eafc779dedb0e Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:17:07 +0800 Subject: [PATCH 02/32] + build ok --- .changeset/config.json | 3 - Cargo.lock | 9 - Cargo.toml | 1 - .../shell-project/mainthread-test.ts | 172 ------------------ packages/web-platform/web-tests/tsconfig.json | 4 - 5 files changed, 189 deletions(-) delete mode 100644 packages/web-platform/web-tests/shell-project/mainthread-test.ts diff --git a/.changeset/config.json b/.changeset/config.json index 8e4a53dd49..09a430351e 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -10,10 +10,7 @@ "fixed": [ [ "@lynx-js/web-core-server", - "@lynx-js/web-constants", - "@lynx-js/web-mainthread-apis", "@lynx-js/web-worker-rpc", - "@lynx-js/web-worker-runtime", "@lynx-js/web-rsbuild-server-middleware" ], [ diff --git a/Cargo.lock b/Cargo.lock index 27cc54838c..ac5ecb5f98 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3928,15 +3928,6 @@ dependencies = [ "web_elements", ] -[[package]] -name = "web-mainthread-apis" -version = "0.0.0" -dependencies = [ - "js-sys", - "lazy_static", - "wasm-bindgen", -] - [[package]] name = "web-sys" version = "0.3.85" diff --git a/Cargo.toml b/Cargo.toml index 7f220931de..6c9718b095 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,6 @@ members = [ "packages/react/transform/swc-plugin-reactlynx-compat", "packages/web-platform/web-core-wasm", "packages/web-platform/web-elements", - "packages/web-platform/web-mainthread-apis", ] [workspace.dependencies] diff --git a/packages/web-platform/web-tests/shell-project/mainthread-test.ts b/packages/web-platform/web-tests/shell-project/mainthread-test.ts deleted file mode 100644 index 69fca9e937..0000000000 --- a/packages/web-platform/web-tests/shell-project/mainthread-test.ts +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2023 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -import * as lynxTemplate from '../resources/web-core.main-thread.json' with { - type: 'json', -}; -import { createMainThreadGlobalThis } from '@lynx-js/web-mainthread-apis'; -import { initOffscreenDocument } from '@lynx-js/offscreen-document/main'; -import { - _onEvent, - OffscreenDocument, -} from '@lynx-js/offscreen-document/webworker'; - -import { - lynxTagAttribute, - lynxUniqueIdAttribute, - type MainThreadGlobalThis, -} from '@lynx-js/web-constants'; - -const ENABLE_MULTI_THREAD = !!process.env.ENABLE_MULTI_THREAD; - -type ComparableElementJson = { - tag: string; - children: ComparableElementJson[]; - parentUid?: number; -}; -let runtime!: MainThreadGlobalThis; -let elementOperations: unknown[] = []; - -const div: HTMLElement = document.createElement('div'); -div.id = 'root'; -const shadowRoot = div.attachShadow({ mode: 'open' }); -document.body.appendChild(div); -const docu: Document = ENABLE_MULTI_THREAD - ? new OffscreenDocument({ - onCommit(operations) { - elementOperations = operations; - }, - }) as unknown as Document - : document; -const { decodeOperation } = ENABLE_MULTI_THREAD - ? initOffscreenDocument({ - shadowRoot, - onEvent: docu[_onEvent], - }) - : {}; - -function serializeElementThreadElement( - element: HTMLElement, -): ComparableElementJson { - const parent = runtime.__GetParent(element); - const tag = runtime.__GetTag(element); - const parentUid = parent && runtime.__GetTag(element) !== 'page' - ? runtime.__GetElementUniqueID(parent) - : undefined; - const children = runtime.__GetChildren(element).map(e => - serializeElementThreadElement(e) - ); - return { - tag, - children, - parentUid, - }; -} - -function serializeDomElement(element: Element): ComparableElementJson { - const attributes: Record = {}; - for (const attr of element.attributes) { - if (attr.value) { - attributes[attr.name] = attr.value; - } - } - const parentUid = element?.parentElement?.getAttribute(lynxUniqueIdAttribute); - return { - tag: element.getAttribute(lynxTagAttribute)!, - children: [...element.children].map(e => serializeDomElement(e)), - parentUid: parentUid ? parseFloat(parentUid) : undefined, - }; -} - -function genFiberElementTree() { - const page = runtime.__GetPageElement()!; - if (page && runtime.__GetTag(page) === 'page') { - return serializeElementThreadElement(page as any); - } else { - return {}; - } -} - -function genDomElementTree() { - const rootDom = shadowRoot.querySelector('[lynx-tag=\'page\']'); - if (rootDom) { - return serializeDomElement(rootDom); - } else { - return {}; - } -} - -function initializeMainThreadTest() { - runtime = createMainThreadGlobalThis({ - document: docu, - mtsRealm: { - globalWindow: globalThis, - loadScript: async (url: string) => { - throw new Error('loadScript is not supported in main thread'); - }, - loadScriptSync: () => { - throw new Error('loadScriptSync is not supported in main thread'); - }, - }, - // @ts-expect-error - lynxTemplate, - tagMap: { - 'page': 'div', - 'view': 'x-view', - 'text': 'x-text', - 'image': 'x-image', - 'list': 'x-list', - 'svg': 'x-svg', - }, - browserConfig: { - pixelRatio: 0, - pixelWidth: 0, - pixelHeight: 0, - }, - pageConfig: { - enableCSSSelector: true, - enableRemoveCSSScope: true, - defaultDisplayLinear: true, - defaultOverflowVisible: false, - enableJSDataProcessor: false, - }, - // @ts-expect-error - rootDom: ENABLE_MULTI_THREAD ? docu : shadowRoot, - styleInfo: {}, - globalProps: {}, - callbacks: { - mainChunkReady: function(): void { - }, - flushElementTree: () => { - // @ts-expect-error - docu.commit?.(); - decodeOperation?.(elementOperations as any); - }, - _ReportError: function(): void { - document.body.innerHTML = ''; - }, - __OnLifecycleEvent() { - }, - markTiming: function(pipelineId: string, timingKey: string): void { - }, - publishEvent: (hname, ev) => { - Object.assign(globalThis, { publishEvent: { hname, ev } }); - }, - publicComponentEvent: (componentId, hname, ev) => { - Object.assign(globalThis, { - publicComponentEvent: { componentId, hname, ev }, - }); - }, - _I18nResourceTranslation: () => {}, - }, - }); - const originalGlobalThis = globalThis; - // @ts-ignore - globalThis = originalGlobalThis; - Object.assign(globalThis, { - genFiberElementTree, - genDomElementTree, - }); -} - -initializeMainThreadTest(); diff --git a/packages/web-platform/web-tests/tsconfig.json b/packages/web-platform/web-tests/tsconfig.json index 2789eb4a3d..7f5fb238a9 100644 --- a/packages/web-platform/web-tests/tsconfig.json +++ b/packages/web-platform/web-tests/tsconfig.json @@ -9,11 +9,7 @@ ], "references": [ /** packages-start */ - { "path": "../offscreen-document/tsconfig.json" }, { "path": "../web-elements/tsconfig.json" }, - { "path": "../web-constants/tsconfig.json" }, - { "path": "../web-mainthread-apis/tsconfig.json" }, - { "path": "../web-core-server/tsconfig.json" }, /** packages-end */ ], } From bc61c42d5c7f151bd36fb5c787834f4f0be86863 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 14:26:43 +0800 Subject: [PATCH 03/32] web-core-wasm -> web-core --- .changeset/config.json | 2 +- .github/workflows/test.yml | 8 +- AGENTS.md | 2 +- Cargo.lock | 2 +- Cargo.toml | 2 +- packages/repl/package.json | 2 +- packages/repl/src/components/PreviewPane.tsx | 2 +- packages/repl/src/index.tsx | 2 +- packages/rspeedy/upgrade-rspeedy/package.json | 2 +- packages/web-platform/tsconfig.json | 2 +- .../bench/server.bench.vitest.spec.ts | 2 +- .../package.json | 4 +- .../playwright.config.ts | 0 .../resources/NotoSansSC-Regular.woff2 | Bin .../ddee519472dd7e73eeb153e78d484db3.mp3 | Bin .../resources/firefox-logo.png | Bin .../resources/font.css | 0 .../resources/lynx-logo.jpeg | Bin .../resources/star.png | Bin .../resources/text.txt | 0 .../resources/web-core.main-thread.json | 0 .../rsbuild.config.ts | 4 +- .../scripts/generate-build-command.js | 0 .../__snapshots__/server-e2e.test.ts.snap | 0 .../server-tests/server-e2e.test.ts | 2 +- .../shell-project/devMiddleware.ts | 2 +- .../shell-project/index.css | 0 .../shell-project/index.ts | 2 +- .../shell-project/ssr.html | 4 +- .../tests/common.css | 0 .../tests/reactlynx.spec.ts | 2 +- .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../animate/index-chromium-linux.png | Bin .../animate/index-firefox-linux.png | Bin .../animate/index-webkit-linux.png | Bin .../initial/index-chromium-linux.png | Bin .../initial/index-firefox-linux.png | Bin .../initial/index-webkit-linux.png | Bin .../blue/index-chromium-linux.png | Bin .../blue/index-firefox-linux.png | Bin .../blue/index-webkit-linux.png | Bin .../initial/index-chromium-linux.png | Bin .../initial/index-firefox-linux.png | Bin .../initial/index-webkit-linux.png | Bin .../show-lynx-logo/index-chromium-linux.png | Bin .../show-lynx-logo/index-firefox-linux.png | Bin .../show-lynx-logo/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../compound-selector/index-firefox-linux.png | Bin .../compound-selector/index-webkit-linux.png | Bin .../green-blue/index-chromium-linux.png | Bin .../green-blue/index-firefox-linux.png | Bin .../green-blue/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../basic-flex-1/index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../initial-chromium-linux.png | Bin .../initial-firefox-linux.png | Bin .../initial-webkit-linux.png | Bin ...posure-area-requirement-chromium-linux.png | Bin ...xposure-area-requirement-firefox-linux.png | Bin ...exposure-area-requirement-webkit-linux.png | Bin .../scroll-200-green-chromium-linux.png | Bin .../scroll-200-green-firefox-linux.png | Bin .../scroll-200-green-webkit-linux.png | Bin .../0-initial-chromium-linux.png | Bin .../0-initial-webkit-linux.png | Bin .../1-right-yellow-chromium-linux.png | Bin .../1-right-yellow-webkit-linux.png | Bin .../2-white-back-chromium-linux.png | Bin .../2-white-back-webkit-linux.png | Bin .../3-red-down-chromium-linux.png | Bin .../3-red-down-webkit-linux.png | Bin .../4-white-down-back-chromium-linux.png | Bin .../4-white-down-back-webkit-linux.png | Bin .../all-green-chromium-linux.png | Bin .../all-green-firefox-linux.png | Bin .../all-green-webkit-linux.png | Bin .../0-initial-chromium-linux.png | Bin .../0-initial-firefox-linux.png | Bin .../0-initial-webkit-linux.png | Bin ...-orange-half-do-trigger-chromium-linux.png | Bin ...1-orange-half-do-trigger-firefox-linux.png | Bin .../1-orange-half-do-trigger-webkit-linux.png | Bin ...-green-half-not-trigger-chromium-linux.png | Bin ...2-green-half-not-trigger-firefox-linux.png | Bin .../2-green-half-not-trigger-webkit-linux.png | Bin ...3-green-half-do-trigger-chromium-linux.png | Bin .../3-green-half-do-trigger-firefox-linux.png | Bin .../3-green-half-do-trigger-webkit-linux.png | Bin .../0-initial-chromium-linux.png | Bin .../0-initial-firefox-linux.png | Bin .../0-initial-webkit-linux.png | Bin ...-orange-half-do-trigger-chromium-linux.png | Bin ...1-orange-half-do-trigger-firefox-linux.png | Bin .../1-orange-half-do-trigger-webkit-linux.png | Bin ...-green-half-not-trigger-chromium-linux.png | Bin ...2-green-half-not-trigger-firefox-linux.png | Bin .../2-green-half-not-trigger-webkit-linux.png | Bin ...3-green-half-do-trigger-chromium-linux.png | Bin .../3-green-half-do-trigger-firefox-linux.png | Bin .../3-green-half-do-trigger-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../image/auto-size/index-chromium-linux.png | Bin .../image/auto-size/index-firefox-linux.png | Bin .../image/auto-size/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../border-radius/index-chromium-linux.png | Bin .../border-radius/index-firefox-linux.png | Bin .../border-radius/index-webkit-linux.png | Bin .../placeholder/index-chromium-linux.png | Bin .../image/placeholder/index-firefox-linux.png | Bin .../image/placeholder/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../initial-chromium-linux.png | Bin .../initial-firefox-linux.png | Bin .../initial-webkit-linux.png | Bin .../scroll-to-position-chromium-linux.png | Bin .../scroll-to-position-firefox-linux.png | Bin .../scroll-to-position-webkit-linux.png | Bin .../initial-chromium-linux.png | Bin .../initial-firefox-linux.png | Bin .../initial-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../initial-chromium-linux.png | Bin .../initial-firefox-linux.png | Bin .../initial-webkit-linux.png | Bin .../background-image/index-chromium-linux.png | Bin .../background-image/index-firefox-linux.png | Bin .../background-image/index-webkit-linux.png | Bin .../svg/hex-color/index-chromium-linux.png | Bin .../svg/hex-color/index-firefox-linux.png | Bin .../svg/hex-color/index-webkit-linux.png | Bin .../svg/utf8/index-chromium-linux.png | Bin .../svg/utf8/index-firefox-linux.png | Bin .../svg/utf8/index-webkit-linux.png | Bin .../svg/with-css/index-chromium-linux.png | Bin .../svg/with-css/index-firefox-linux.png | Bin .../svg/with-css/index-webkit-linux.png | Bin .../with-position/index-chromium-linux.png | Bin .../svg/with-position/index-firefox-linux.png | Bin .../svg/with-position/index-webkit-linux.png | Bin .../text/baseline/index-chromium-linux.png | Bin .../text/baseline/index-firefox-linux.png | Bin .../text/baseline/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../initial-chromium-linux.png | Bin .../initial-firefox-linux.png | Bin .../initial-webkit-linux.png | Bin .../updated-chromium-linux.png | Bin .../updated-firefox-linux.png | Bin .../updated-webkit-linux.png | Bin .../display-none/index-chromium-linux.png | Bin .../text/display-none/index-firefox-linux.png | Bin .../text/display-none/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../gradient-text-chromium-linux.png | Bin .../gradient-text-firefox-linux.png | Bin .../gradient-text-webkit-linux.png | Bin .../text/maxlength/index-chromium-linux.png | Bin .../text/maxlength/index-firefox-linux.png | Bin .../text/maxlength/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../text/maxline/index-chromium-linux.png | Bin .../text/maxline/index-firefox-linux.png | Bin .../text/maxline/index-webkit-linux.png | Bin .../text/nest-image/index-chromium-linux.png | Bin .../text/nest-image/index-firefox-linux.png | Bin .../text/nest-image/index-webkit-linux.png | Bin .../text/nest-text/index-chromium-linux.png | Bin .../text/nest-text/index-firefox-linux.png | Bin .../text/nest-text/index-webkit-linux.png | Bin .../text/nest-view/index-chromium-linux.png | Bin .../text/nest-view/index-firefox-linux.png | Bin .../text/nest-view/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../raw-text-new-line/index-firefox-linux.png | Bin .../raw-text-new-line/index-webkit-linux.png | Bin .../index/index-chromium-linux.png | Bin .../index/index-firefox-linux.png | Bin .../index/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../tail-color-convert/index-webkit-linux.png | Bin ...e-boolean-flatten-false-chromium-linux.png | Bin ...lse-boolean-flatten-false-webkit-linux.png | Bin ...se-string-flatten-false-chromium-linux.png | Bin ...alse-string-flatten-false-webkit-linux.png | Bin ...e-boolean-flatten-false-chromium-linux.png | Bin ...ue-boolean-flatten-false-firefox-linux.png | Bin ...rue-boolean-flatten-false-webkit-linux.png | Bin ...ue-string-flatten-false-chromium-linux.png | Bin ...rue-string-flatten-false-firefox-linux.png | Bin ...true-string-flatten-false-webkit-linux.png | Bin .../text/word-break/index-chromium-linux.png | Bin .../text/word-break/index-firefox-linux.png | Bin .../text/word-break/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-chromium-linux.png | Bin .../initial-chromium-linux.png | Bin .../initial-firefox-linux.png | Bin .../initial-webkit-linux.png | Bin ...d-be-scrolled-by-method-chromium-linux.png | Bin ...ld-be-scrolled-by-method-firefox-linux.png | Bin ...uld-be-scrolled-by-method-webkit-linux.png | Bin .../x-input/blur/index-chromium-linux.png | Bin .../x-input/blur/index-firefox-linux.png | Bin .../x-input/blur/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../placeholder/index-chromium-linux.png | Bin .../placeholder/index-firefox-linux.png | Bin .../placeholder/index-webkit-linux.png | Bin .../x-input/type/index-chromium-linux.png | Bin .../x-input/type/index-firefox-linux.png | Bin .../x-input/type/index-webkit-linux.png | Bin .../could-close-all-4-chromium-linux.png | Bin .../could-close-all-4-firefox-linux.png | Bin .../could-open-all-4-chromium-linux.png | Bin .../could-open-all-4-firefox-linux.png | Bin ...wrapper-dom-hide-dialog-chromium-linux.png | Bin ...-wrapper-dom-hide-dialog-firefox-linux.png | Bin ...k-wrapper-dom-hide-dialog-webkit-linux.png | Bin .../demo/initial-chromium-linux.png | Bin .../demo/initial-firefox-linux.png | Bin .../demo/initial-webkit-linux.png | Bin .../demo/show-dialog-chromium-linux.png | Bin .../demo/show-dialog-firefox-linux.png | Bin .../demo/show-dialog-webkit-linux.png | Bin .../click-button-1-chromium-linux.png | Bin .../click-button-1-firefox-linux.png | Bin .../click-button-1-webkit-linux.png | Bin ...-content-do-not-through-chromium-linux.png | Bin ...y-content-do-not-through-firefox-linux.png | Bin ...ay-content-do-not-through-webkit-linux.png | Bin ...o-trigger-bottom-button-chromium-linux.png | Bin ...to-trigger-bottom-button-firefox-linux.png | Bin ...-to-trigger-bottom-button-webkit-linux.png | Bin .../click-button-2-chromium-linux.png | Bin .../click-button-2-firefox-linux.png | Bin .../click-button-2-webkit-linux.png | Bin ...close-button-in-overlay-chromium-linux.png | Bin ...-close-button-in-overlay-firefox-linux.png | Bin ...k-close-button-in-overlay-webkit-linux.png | Bin .../click-button-3-chromium-linux.png | Bin .../click-button-3-firefox-linux.png | Bin .../click-button-3-webkit-linux.png | Bin ...will-handle-by-backdrop-chromium-linux.png | Bin ...-will-handle-by-backdrop-firefox-linux.png | Bin ...n-will-handle-by-backdrop-webkit-linux.png | Bin .../click-button-4-chromium-linux.png | Bin .../click-button-4-firefox-linux.png | Bin .../click-button-4-webkit-linux.png | Bin ...button-to-close-overlay-chromium-linux.png | Bin ...-button-to-close-overlay-firefox-linux.png | Bin ...e-button-to-close-overlay-webkit-linux.png | Bin .../demo/initial/index-chromium-linux.png | Bin .../pull-down-loaded/index-chromium-linux.png | Bin .../demo/pull-down/index-chromium-linux.png | Bin .../pull-up-loaded/index-chromium-linux.png | Bin .../demo/pull-up/index-chromium-linux.png | Bin .../autoplay-10/index-chromium-linux.png | Bin .../autoplay-10/index-firefox-linux.png | Bin .../autoplay-10/index-webkit-linux.png | Bin .../autoplay-15/index-chromium-linux.png | Bin .../autoplay-15/index-firefox-linux.png | Bin .../autoplay-15/index-webkit-linux.png | Bin .../autoplay-20/index-chromium-linux.png | Bin .../autoplay-20/index-firefox-linux.png | Bin .../autoplay-20/index-webkit-linux.png | Bin .../autoplay-5/index-chromium-linux.png | Bin .../autoplay-5/index-firefox-linux.png | Bin .../autoplay-5/index-webkit-linux.png | Bin .../carousel/index-0-chromium-linux.png | Bin .../carousel/index-0-firefox-linux.png | Bin .../carousel/index-0-webkit-linux.png | Bin .../carousel/index-1-chromium-linux.png | Bin .../carousel/index-1-firefox-linux.png | Bin .../carousel/index-1-webkit-linux.png | Bin .../carousel/index-2-chromium-linux.png | Bin .../carousel/index-2-firefox-linux.png | Bin .../carousel/index-2-webkit-linux.png | Bin .../carousel/index-3-chromium-linux.png | Bin .../carousel/index-3-firefox-linux.png | Bin .../carousel/index-3-webkit-linux.png | Bin .../carousel/index-chromium-linux.png | Bin .../circular/carousel/index-firefox-linux.png | Bin .../circular/carousel/index-webkit-linux.png | Bin .../circular/carry/index-0-chromium-linux.png | Bin .../circular/carry/index-0-firefox-linux.png | Bin .../circular/carry/index-0-webkit-linux.png | Bin .../circular/carry/index-1-chromium-linux.png | Bin .../circular/carry/index-1-firefox-linux.png | Bin .../circular/carry/index-1-webkit-linux.png | Bin .../circular/carry/index-2-chromium-linux.png | Bin .../circular/carry/index-2-firefox-linux.png | Bin .../circular/carry/index-2-webkit-linux.png | Bin .../circular/carry/index-3-chromium-linux.png | Bin .../circular/carry/index-3-firefox-linux.png | Bin .../circular/carry/index-3-webkit-linux.png | Bin .../circular/carry/index-chromium-linux.png | Bin .../circular/carry/index-firefox-linux.png | Bin .../circular/carry/index-webkit-linux.png | Bin .../coverflow/index-0-chromium-linux.png | Bin .../coverflow/index-1-chromium-linux.png | Bin .../coverflow/index-2-chromium-linux.png | Bin .../coverflow/index-3-chromium-linux.png | Bin .../coverflow/index-chromium-linux.png | Bin .../flat-coverflow/index-0-chromium-linux.png | Bin .../flat-coverflow/index-0-firefox-linux.png | Bin .../flat-coverflow/index-0-webkit-linux.png | Bin .../flat-coverflow/index-1-chromium-linux.png | Bin .../flat-coverflow/index-1-firefox-linux.png | Bin .../flat-coverflow/index-1-webkit-linux.png | Bin .../flat-coverflow/index-2-chromium-linux.png | Bin .../flat-coverflow/index-2-firefox-linux.png | Bin .../flat-coverflow/index-2-webkit-linux.png | Bin .../flat-coverflow/index-3-chromium-linux.png | Bin .../flat-coverflow/index-3-firefox-linux.png | Bin .../flat-coverflow/index-3-webkit-linux.png | Bin .../flat-coverflow/index-chromium-linux.png | Bin .../flat-coverflow/index-firefox-linux.png | Bin .../flat-coverflow/index-webkit-linux.png | Bin .../normal/index-0-chromium-linux.png | Bin .../circular/normal/index-0-firefox-linux.png | Bin .../circular/normal/index-0-webkit-linux.png | Bin .../normal/index-1-chromium-linux.png | Bin .../circular/normal/index-1-firefox-linux.png | Bin .../circular/normal/index-1-webkit-linux.png | Bin .../normal/index-2-chromium-linux.png | Bin .../circular/normal/index-2-firefox-linux.png | Bin .../circular/normal/index-2-webkit-linux.png | Bin .../normal/index-3-chromium-linux.png | Bin .../circular/normal/index-3-firefox-linux.png | Bin .../circular/normal/index-3-webkit-linux.png | Bin .../circular/normal/index-chromium-linux.png | Bin .../circular/normal/index-firefox-linux.png | Bin .../circular/normal/index-webkit-linux.png | Bin .../current-0/index-chromium-linux.png | Bin .../current-0/index-firefox-linux.png | Bin .../x-swiper/current-0/index-webkit-linux.png | Bin .../current-1/index-chromium-linux.png | Bin .../current-1/index-firefox-linux.png | Bin .../x-swiper/current-1/index-webkit-linux.png | Bin .../current-2/index-chromium-linux.png | Bin .../current-2/index-firefox-linux.png | Bin .../x-swiper/current-2/index-webkit-linux.png | Bin .../current-3/index-chromium-linux.png | Bin .../current-3/index-firefox-linux.png | Bin .../x-swiper/current-3/index-webkit-linux.png | Bin .../current-4/index-chromium-linux.png | Bin .../current-4/index-firefox-linux.png | Bin .../x-swiper/current-4/index-webkit-linux.png | Bin .../duration/current-1-chromium-linux.png | Bin .../duration/current-1-firefox-linux.png | Bin .../duration/current-1-webkit-linux.png | Bin .../duration/current-2-chromium-linux.png | Bin .../duration/current-2-firefox-linux.png | Bin .../duration/current-2-webkit-linux.png | Bin .../duration/current-3-chromium-linux.png | Bin .../duration/current-3-firefox-linux.png | Bin .../duration/current-3-webkit-linux.png | Bin .../duration/current-4-chromium-linux.png | Bin .../duration/current-4-firefox-linux.png | Bin .../duration/current-4-webkit-linux.png | Bin .../dynamic-status-0/index-chromium-linux.png | Bin .../dynamic-status-0/index-firefox-linux.png | Bin .../dynamic-status-0/index-webkit-linux.png | Bin .../dynamic-status-1/index-chromium-linux.png | Bin .../dynamic-status-1/index-firefox-linux.png | Bin .../dynamic-status-1/index-webkit-linux.png | Bin .../dynamic-status-2/index-chromium-linux.png | Bin .../dynamic-status-2/index-firefox-linux.png | Bin .../dynamic-status-2/index-webkit-linux.png | Bin .../dynamic-status-3/index-chromium-linux.png | Bin .../dynamic-status-3/index-firefox-linux.png | Bin .../dynamic-status-3/index-webkit-linux.png | Bin .../dynamic-status-4/index-chromium-linux.png | Bin .../dynamic-status-4/index-firefox-linux.png | Bin .../dynamic-status-4/index-webkit-linux.png | Bin .../indicator-color/index-chromium-linux.png | Bin .../indicator-color/index-firefox-linux.png | Bin .../indicator-color/index-webkit-linux.png | Bin .../indicator-dots/index-chromium-linux.png | Bin .../indicator-dots/index-firefox-linux.png | Bin .../indicator-dots/index-webkit-linux.png | Bin .../interval-1/index-chromium-linux.png | Bin .../interval-1/index-webkit-linux.png | Bin .../interval-2/index-chromium-linux.png | Bin .../interval-2/index-webkit-linux.png | Bin .../interval-3/index-chromium-linux.png | Bin .../interval-3/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../mode-carousel/index-chromium-linux.png | Bin .../mode-carousel/index-firefox-linux.png | Bin .../mode-carousel/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../mode-carry/index-chromium-linux.png | Bin .../mode-carry/index-firefox-linux.png | Bin .../mode-carry/index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../mode-coverflow/index-chromium-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../index-chromium-linux.png | Bin .../index-firefox-linux.png | Bin .../index-webkit-linux.png | Bin .../mode-normal/index-chromium-linux.png | Bin .../mode-normal/index-firefox-linux.png | Bin .../mode-normal/index-webkit-linux.png | Bin .../page-margin-1/index-chromium-linux.png | Bin .../page-margin-1/index-firefox-linux.png | Bin .../page-margin/index-chromium-linux.png | Bin .../page-margin/index-firefox-linux.png | Bin .../x-swiper/scroll-to/1-chromium-linux.png | Bin .../x-swiper/scroll-to/1-firefox-linux.png | Bin .../x-swiper/scroll-to/1-webkit-linux.png | Bin .../x-swiper/scroll-to/2-chromium-linux.png | Bin .../x-swiper/scroll-to/2-firefox-linux.png | Bin .../x-swiper/scroll-to/2-webkit-linux.png | Bin .../x-swiper/scroll-to/3-chromium-linux.png | Bin .../x-swiper/scroll-to/3-firefox-linux.png | Bin .../x-swiper/scroll-to/3-webkit-linux.png | Bin .../current-0/index-chromium-linux.png | Bin .../current-0/index-firefox-linux.png | Bin .../current-1/index-chromium-linux.png | Bin .../current-1/index-firefox-linux.png | Bin .../initial-chromium-linux.png | Bin .../initial-firefox-linux.png | Bin .../initial-webkit-linux.png | Bin .../disabled/default/index-chromium-linux.png | Bin .../disabled/default/index-firefox-linux.png | Bin .../disabled/default/index-webkit-linux.png | Bin .../disabled/false/index-chromium-linux.png | Bin .../disabled/false/index-firefox-linux.png | Bin .../disabled/false/index-webkit-linux.png | Bin .../disabled/true/index-chromium-linux.png | Bin .../disabled/true/index-firefox-linux.png | Bin .../disabled/true/index-webkit-linux.png | Bin .../default/index-chromium-linux.png | Bin .../maxlength/default/index-firefox-linux.png | Bin .../maxlength/default/index-webkit-linux.png | Bin .../dynamic/index-chromium-linux.png | Bin .../maxlength/dynamic/index-firefox-linux.png | Bin .../maxlength/dynamic/index-webkit-linux.png | Bin .../init-value/index-chromium-linux.png | Bin .../init-value/index-firefox-linux.png | Bin .../init-value/index-webkit-linux.png | Bin .../update-value/index-chromium-linux.png | Bin .../update-value/index-firefox-linux.png | Bin .../update-value/index-webkit-linux.png | Bin .../max-height/index-chromium-linux.png | Bin .../max-height/index-firefox-linux.png | Bin .../max-height/index-webkit-linux.png | Bin .../min-height/index-chromium-linux.png | Bin .../min-height/index-firefox-linux.png | Bin .../min-height/index-webkit-linux.png | Bin .../font-size/index-chromium-linux.png | Bin .../font-size/index-firefox-linux.png | Bin .../font-size/index-webkit-linux.png | Bin .../init-value/index-chromium-linux.png | Bin .../init-value/index-firefox-linux.png | Bin .../init-value/index-webkit-linux.png | Bin .../update-value/index-chromium-linux.png | Bin .../update-value/index-firefox-linux.png | Bin .../update-value/index-webkit-linux.png | Bin .../init-value/index-chromium-linux.png | Bin .../init-value/index-firefox-linux.png | Bin .../init-value/index-webkit-linux.png | Bin .../update-value/index-chromium-linux.png | Bin .../update-value/index-firefox-linux.png | Bin .../update-value/index-webkit-linux.png | Bin .../initial-chromium-linux.png | Bin .../swipe-not-change-chromium-linux.png | Bin .../exposure-1-chromium-linux.png | Bin .../exposure-2-chromium-linux.png | Bin .../select-index-chromium-linux.png | Bin .../select-index-firefox-linux.png | Bin .../select-index-webkit-linux.png | Bin .../initial-chromium-linux.png | Bin .../initial-firefox-linux.png | Bin .../initial-webkit-linux.png | Bin .../selecttab-1-green-chromium-linux.png | Bin .../selecttab-1-green-firefox-linux.png | Bin .../selecttab-1-green-webkit-linux.png | Bin .../select-index-change-chromium-linux.png | Bin .../select-index-change-firefox-linux.png | Bin .../select-index-change-webkit-linux.png | Bin .../select-index-chromium-linux.png | Bin .../select-index-firefox-linux.png | Bin .../select-index-webkit-linux.png | Bin .../reactlynx/api-SelectorQuery/index.jsx | 0 .../reactlynx/api-SelectorQuery/inner.jsx | 0 .../mini-result-cell/index.css | 0 .../mini-result-cell/index.jsx | 0 .../reactlynx/api-SelectorQuery/outer.jsx | 0 .../api-SystemInfo-height-width/index.jsx | 0 .../tests/reactlynx/api-SystemInfo/index.jsx | 0 .../tests/reactlynx/api-animate/index.jsx | 0 .../reactlynx/api-animation-event/index.css | 0 .../reactlynx/api-animation-event/index.jsx | 0 .../reactlynx/api-bindlauoutchange/index.jsx | 0 .../tests/reactlynx/api-dispose/index.jsx | 0 .../tests/reactlynx/api-error-bts/index.jsx | 0 .../tests/reactlynx/api-error-mts/index.jsx | 0 .../tests/reactlynx/api-error/index.jsx | 0 .../reactlynx/api-exposure-area/index.jsx | 0 .../reactlynx/api-exposure-basic/index.jsx | 0 .../api-exposure-basic/placeholder.css | 0 .../api-exposure-change-exposure-id/index.jsx | 0 .../api-exposure-change-exposure-id/main.css | 0 .../index.css | 0 .../index.jsx | 0 .../index.jsx | 0 .../placeholder.css | 0 .../api-exposure-dynamic-ui-margin/index.jsx | 0 .../placeholder.css | 0 .../api-exposure-no-fake-disappear/index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../api-exposure-stop-exposure/index.css | 0 .../api-exposure-stop-exposure/index.jsx | 0 .../reactlynx/api-get-path-info/index.jsx | 0 .../tests/reactlynx/api-getJSModule/index.jsx | 0 .../reactlynx/api-getSharedData/index.jsx | 0 .../api-global-disallowed-vars/index.jsx | 0 .../tests/reactlynx/api-globalThis/index.jsx | 0 .../tests/reactlynx/api-initdata/index.jsx | 0 .../api-inject-style-rules/index.jsx | 0 .../tests/reactlynx/api-invoke-fail/index.jsx | 0 .../reactlynx/api-invoke-success/index.jsx | 0 .../reactlynx/api-lynx-performance/index.jsx | 0 .../api-nativemodules-bridge-call/index.jsx | 0 .../api-nativemodules-call-delay/index.jsx | 0 .../api-nativemodules-call/index.jsx | 0 .../reactlynx/api-queueMicrotask/index.jsx | 0 .../reactlynx/api-report-error/index.jsx | 0 .../api-requestAnimationFrame/index.jsx | 0 .../reactlynx/api-sendGlobalEvent/index.jsx | 0 .../reactlynx/api-set-release-bts/index.jsx | 0 .../tests/reactlynx/api-set-release/index.jsx | 0 .../reactlynx/api-setSharedData/index.jsx | 0 .../api-updateData-callback/index.jsx | 0 .../api-updateData-processData/index.jsx | 0 .../tests/reactlynx/api-updateData/index.jsx | 0 .../reactlynx/api-updateGlobalProps/index.jsx | 0 .../tests/reactlynx/api.config.ts | 0 .../basic-at-rule-animation-from-to/index.css | 0 .../basic-at-rule-animation-from-to/index.jsx | 0 .../basic-at-rule-animation/index.css | 0 .../basic-at-rule-animation/index.jsx | 0 .../tests/reactlynx/basic-bindmouse/index.jsx | 0 .../reactlynx/basic-bindtap-detail/index.jsx | 0 .../tests/reactlynx/basic-bindtap/index.jsx | 0 .../reactlynx/basic-class-selector/index.css | 0 .../reactlynx/basic-class-selector/index.jsx | 0 .../basic-color-not-inherit/index.jsx | 0 .../basic-css-asset-in-css/index.css | 0 .../basic-css-asset-in-css/index.jsx | 0 .../basic-css-compound-selector/index.css | 0 .../basic-css-compound-selector/index.jsx | 0 .../tests/reactlynx/basic-css-var/index.css | 0 .../tests/reactlynx/basic-css-var/index.jsx | 0 .../reactlynx/basic-dataprocessor/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-image-auto-size/index.css | 0 .../basic-element-image-auto-size/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-image-placeholder/index.css | 0 .../basic-element-image-placeholder/index.jsx | 0 .../basic-element-image-placeholder/lynx.png | Bin .../basic-element-image-src/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-input-bindinput/index.jsx | 0 .../basic-element-list-basic-size/index.css | 0 .../basic-element-list-basic-size/index.jsx | 0 .../basic-element-list-basic/index.css | 0 .../basic-element-list-basic/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-list-waterfall/index.css | 0 .../basic-element-list-waterfall/index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../basic-element-scroll-view-fixed/index.jsx | 0 .../index.jsx | 0 .../assets.ts | 0 .../index.css | 0 .../index.jsx | 0 .../index.jsx | 0 .../basic-element-svg-bindload/index.jsx | 0 .../basic-element-svg-hex-color/index.jsx | 0 .../basic-element-svg-utf8/index.jsx | 0 .../basic-element-svg-with-css/index.css | 0 .../basic-element-svg-with-css/index.jsx | 0 .../basic-element-svg-with-position/index.css | 0 .../basic-element-svg-with-position/index.jsx | 0 .../basic-element-text-baseline/index.jsx | 0 .../basic-element-text-bindlayout/index.jsx | 0 .../basic-element-text-color/index.css | 0 .../basic-element-text-color/index.jsx | 0 .../basic-element-text-display-none/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.jsx | 0 .../basic-element-text-maxlength/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-text-maxline/index.jsx | 0 .../5a076f79f05c644487d688bba0817195.png | Bin .../basic-element-text-nest-image/index.jsx | 0 .../basic-element-text-nest-text/index.jsx | 0 .../basic-element-text-nest-view/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.jsx | 0 .../main.css | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../basic-element-text-word-break/index.jsx | 0 .../index.jsx | 0 .../basic-element-x-audio-tt-play/index.css | 0 .../basic-element-x-audio-tt-play/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-x-input-bindblur/index.jsx | 0 .../index.jsx | 0 .../basic-element-x-input-bindfocus/index.jsx | 0 .../basic-element-x-input-bindinput/index.jsx | 0 .../index.jsx | 0 .../basic-element-x-input-blur/index.jsx | 0 .../basic-element-x-input-focus/index.jsx | 0 .../basic-element-x-input-getValue/index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.jsx | 0 .../basic-element-x-input-setValue/index.jsx | 0 .../basic-element-x-input-type/index.jsx | 0 .../basic-element-x-input-value/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-x-overlay-ng-demo/index.css | 0 .../basic-element-x-overlay-ng-demo/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-x-refresh-view-demo/img.png | Bin .../index.css | 0 .../index.jsx | 0 .../basic-element-x-swiper-autoplay/index.css | 0 .../basic-element-x-swiper-autoplay/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-x-swiper-current/index.css | 0 .../basic-element-x-swiper-current/index.jsx | 0 .../basic-element-x-swiper-duration/index.css | 0 .../basic-element-x-swiper-duration/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-x-swiper-interval/index.css | 0 .../basic-element-x-swiper-interval/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../getColor.js | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-x-swiper-vertical/index.css | 0 .../basic-element-x-swiper-vertical/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.jsx | 0 .../basic-element-x-textarea-color/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-element-x-textarea-focus/index.css | 0 .../basic-element-x-textarea-focus/index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-event-bubble-dataset/index.jsx | 0 .../reactlynx/basic-event-dataset/index.jsx | 0 .../reactlynx/basic-event-target-id/index.jsx | 0 .../reactlynx/basic-event-trigger/index.jsx | 0 .../tests/reactlynx/basic-flex-1/index.css | 0 .../tests/reactlynx/basic-flex-1/index.jsx | 0 .../basic-flex-column-align-items/index.css | 0 .../basic-flex-column-align-items/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-flex-item-shrink/index.css | 0 .../basic-flex-item-shrink/index.jsx | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-flex-with-overflow/index.css | 0 .../basic-flex-with-overflow/index.jsx | 0 .../reactlynx/basic-globalProps/index.jsx | 0 .../basic-globalThis-property-bts/index.jsx | 0 .../basic-globalThis-property-mts/index.jsx | 0 .../tests/reactlynx/basic-image/index.jsx | 0 .../basic-lazy-component-css-blank/index.css | 0 .../basic-lazy-component-css-blank/index.jsx | 0 .../basic-lazy-component-css-multi/index.css | 0 .../basic-lazy-component-css-multi/index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 ...azy-component-css-selector-false.config.ts | 0 .../basic-lazy-component-css/index.css | 0 .../basic-lazy-component-css/index.jsx | 0 .../basic-lazy-component-effect/index.jsx | 0 .../basic-lazy-component-fail/index.jsx | 0 .../index.jsx | 0 .../basic-lazy-component-multi/index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../reactlynx/basic-lazy-component/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-linear-column-align-items/index.css | 0 .../basic-linear-column-align-items/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-linear-grand-kid-weight/index.css | 0 .../basic-linear-grand-kid-weight/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-linear-item-do-not-shrink/index.css | 0 .../basic-linear-item-do-not-shrink/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-linear-item-use-order/index.css | 0 .../basic-linear-item-use-order/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-linear-row-cross-gravity/index.css | 0 .../basic-linear-row-cross-gravity/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../basic-linear-weight-sum-is-zero/index.css | 0 .../basic-linear-weight-sum-is-zero/index.jsx | 0 .../reactlynx/basic-list-rendering/index.jsx | 0 .../reactlynx/basic-lynx-reload/index.jsx | 0 .../index.jsx | 0 .../reactlynx/basic-mts-bindtap/index.jsx | 0 .../basic-mts-bindtouchstart/index.jsx | 0 .../basic-mts-mainthread-nested-ref/index.jsx | 0 .../basic-mts-mainthread-ref/index.jsx | 0 .../basic-mts-run-on-background/index.jsx | 0 .../basic-mts-run-on-main-thread/index.jsx | 0 .../reactlynx/basic-mts-systeminfo/index.jsx | 0 .../reactlynx/basic-page-event/index.jsx | 0 .../basic-performance-div-10/index.jsx | 0 .../basic-performance-div-100/index.jsx | 0 .../basic-performance-div-1000/index.jsx | 0 .../basic-performance-div-10000/index.jsx | 0 .../basic-performance-event-div-100/index.jsx | 0 .../basic-performance-image-100/index.jsx | 0 .../basic-performance-large-css/index.css | 0 .../basic-performance-large-css/index.jsx | 0 .../index.jsx | 0 .../index.jsx | 0 .../basic-performance-small-css/index.css | 0 .../basic-performance-small-css/index.jsx | 0 .../basic-performance-text-200/index.jsx | 0 .../tests/reactlynx/basic-pink-rect/index.jsx | 0 .../tests/reactlynx/basic-reload/index.jsx | 0 .../reactlynx/basic-replaceelement/index.css | 0 .../reactlynx/basic-replaceelement/index.jsx | 0 .../reactlynx/basic-scroll-view/index.jsx | 0 .../reactlynx/basic-setsate-with-cb/index.jsx | 0 .../basic-setstate-in-constructor/index.jsx | 0 .../basic-style-combinator/index.css | 0 .../basic-style-combinator/index.jsx | 0 .../basic-style-remove-one-property/index.css | 0 .../basic-style-remove-one-property/index.jsx | 0 .../reactlynx/basic-style-remove/index.css | 0 .../reactlynx/basic-style-remove/index.jsx | 0 .../basic-style-root-selector/index.css | 0 .../basic-style-root-selector/index.jsx | 0 .../basic-useeffect-hydrate/index.css | 0 .../basic-useeffect-hydrate/index.jsx | 0 .../index.jsx | 0 .../tests/reactlynx/basic.config.ts | 0 .../tests/reactlynx/commonConfig.ts | 0 .../index.css | 0 .../index.jsx | 0 .../rspeedy.config.ts | 0 .../index.css | 0 .../index.jsx | 0 .../rspeedy.config.ts | 0 .../index.css | 0 .../index.jsx | 0 .../linear.css | 0 .../rspeedy.config.ts | 0 .../sub.css | 0 .../sub.jsx | 0 .../common.css | 0 .../index.css | 0 .../index.jsx | 0 .../rspeedy.config.ts | 0 .../sub.css | 0 .../sub.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../rspeedy.config.ts | 0 .../sub.css | 0 .../sub.jsx | 0 .../config-css-remove-scope-false/index.css | 0 .../config-css-remove-scope-false/index.jsx | 0 .../rspeedy.config.ts | 0 .../config-css-remove-scope-false/sub.css | 0 .../config-css-remove-scope-false/sub.jsx | 0 .../config-css-remove-scope-true/index.css | 0 .../config-css-remove-scope-true/index.jsx | 0 .../rspeedy.config.ts | 0 .../config-css-remove-scope-true/sub.css | 0 .../config-css-remove-scope-true/sub.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../config-css-selector-false.config.ts | 0 .../config-lazy-component-bindtap/index.jsx | 0 .../config-lazy-component-css-blank/index.css | 0 .../config-lazy-component-css-blank/index.jsx | 0 .../config-lazy-component-css-other/index.css | 0 .../config-lazy-component-css-other/index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../index.css | 0 .../index.jsx | 0 .../config-lazy-component-css/index.css | 0 .../config-lazy-component-css/index.jsx | 0 .../index.jsx | 0 .../reactlynx/config-lazy-component.config.ts | 0 .../tests/reactlynx/config-mixed-01/index.css | 0 .../tests/reactlynx/config-mixed-01/index.jsx | 0 .../config-mixed-01/rspeedy.config.ts | 0 .../config-mode-dev-with-all-in-one/index.jsx | 0 .../rspeedy.config.ts | 0 .../config-splitchunk-single-vendor/index.jsx | 0 .../rspeedy.config.ts | 0 .../index.jsx | 0 .../rspeedy.config.ts | 0 .../index.jsx | 0 .../rspeedy.config.ts | 0 .../tests/ssr-no-js.spec.ts | 0 .../tests/web-core.test.ts | 2 +- .../tsconfig.json | 2 +- .../turbo.json | 0 .../vitest.config.ts | 8 +- .../web-platform/web-core-wasm/CHANGELOG.md | 50 - .../{web-core-wasm => web-core}/.gitignore | 0 .../{web-core-wasm => web-core}/AGENTS.md | 14 +- packages/web-platform/web-core/CHANGELOG.md | 1749 +++++++++++++++++ .../{web-core-wasm => web-core}/Cargo.toml | 2 +- .../{web-core-wasm => web-core}/LICENSE.txt | 0 .../{web-core-wasm => web-core}/Notice.txt | 0 .../{web-core-wasm => web-core}/README.md | 0 .../benches/wasm_bench.rs | 4 +- .../binary/client/client.d.ts | 0 .../binary/client/client_bg.wasm.d.ts | 0 .../binary/encode/encode.d.ts | 0 .../binary/encode/encode_bg.wasm.d.ts | 0 .../binary/server/server.d.ts | 0 .../binary/server/server_bg.wasm.d.ts | 0 .../css/in_shadow.css | 0 .../{web-core-wasm => web-core}/css/index.css | 0 .../eslint.config.js | 0 .../{web-core-wasm => web-core}/package.json | 6 +- .../rsbuild.config.ts | 0 .../scripts/build.js | 4 +- .../scripts/dotslash-config.json | 0 .../scripts/wasm-bindgen | 0 .../src/constants.rs | 4 +- .../src/css_tokenizer/LICENSE | 0 .../css_tokenizer/char_code_definitions.rs | 0 .../src/css_tokenizer/mod.rs | 0 .../src/css_tokenizer/token_types.rs | 0 .../src/css_tokenizer/tokenize.rs | 0 .../src/css_tokenizer/utils.rs | 0 .../src/js_binding/mod.rs | 0 .../src/js_binding/mts_js_binding.rs | 0 .../{web-core-wasm => web-core}/src/lib.rs | 0 .../client/element_apis/component_apis.rs | 0 .../client/element_apis/dataset_apis.rs | 0 .../client/element_apis/event_apis.rs | 0 .../main_thread/client/element_apis/mod.rs | 0 .../client/element_apis/style_apis.rs | 0 .../main_thread/client/main_thread_context.rs | 0 .../src/main_thread/client/mod.rs | 0 .../src/main_thread/client/style_manager.rs | 0 .../src/main_thread/element_data.rs | 0 .../src/main_thread/mod.rs | 0 .../server/main_thread_server_context.rs | 0 .../src/main_thread/server/mod.rs | 0 .../server/style_manager_server.rs | 0 .../src/style_transformer/inline_style.rs | 0 .../src/style_transformer/mod.rs | 0 .../src/style_transformer/rules.rs | 0 .../style_transformer/token_transformer.rs | 0 .../src/style_transformer/transformer.rs | 0 .../src/template/mod.rs | 0 .../src/template/template_sections/mod.rs | 0 .../style_info/css_property.rs | 0 .../style_info/decoded_style_data.rs | 0 .../style_info/flattened_style_info.rs | 0 .../template_sections/style_info/mod.rs | 0 .../style_info/raw_style_info.rs | 0 .../style_info/style_info_decoder.rs | 0 .../style_info/style_sheet_resource.rs | 0 .../src/utils/hyphenate_style_name.rs | 0 .../src/utils/mod.rs | 0 .../tests/I18n.spec.ts | 0 .../tests/__snapshots__/encode.spec.ts.snap | 0 .../__snapshots__/server-compat.spec.ts.snap | 0 .../tests/decode.spec.ts | 0 .../tests/element-apis.bench.spec.ts | 0 .../tests/element-apis.spec.ts | 0 .../tests/encode.bench.spec.ts | 0 .../tests/encode.spec.ts | 0 .../tests/jsdom.ts | 0 .../tests/server-compat.spec.ts | 0 .../tests/server-ssr-bulk.spec.ts | 0 .../tests/server-ssr.spec.ts | 0 .../tests/template-manager.spec.ts | 0 .../tests/testing-library-port.spec.ts | 0 .../ts/client/LynxCrossThreadContext.ts | 0 .../background-apis/createBackgroundLynx.ts | 0 .../background-apis/createChunkLoading.ts | 0 .../background-apis/createElement.ts | 0 .../background-apis/createNapiLoader.ts | 0 .../background-apis/createNativeApp.ts | 0 .../background-apis/createNativeModules.ts | 0 .../background-apis/createPerformanceApis.ts | 0 .../background-apis/createTimingSystem.ts | 0 .../createGetCustomSection.ts | 0 .../crossThreadHandlers/createGetPathInfo.ts | 0 .../createInvokeUIMethod.ts | 0 .../createJSObjectDestructionObserver.ts | 0 .../registerDisposeHandler.ts | 0 .../registerPublicComponentEventHandler.ts | 0 .../registerPublishEventHandler.ts | 0 .../registerSendGlobalEvent.ts | 0 .../registerUpdateDataHandler.ts | 0 .../registerUpdateGlobalPropsHandler.ts | 0 .../registerUpdateI18nResource.ts | 0 .../background-apis/startBackgroundThread.ts | 0 .../ts/client/background/index.ts | 0 .../ts/client/decodeWorker/cssLoader.ts | 0 .../ts/client/decodeWorker/decode.worker.ts | 0 .../ts/client/decodeWorker/types.ts | 0 .../ts/client/endpoints.ts | 0 .../ts/client/global.d.ts | 0 .../ts/client/index.ts | 0 .../ts/client/mainthread/Background.ts | 0 .../ts/client/mainthread/ExposureServices.ts | 0 .../ts/client/mainthread/I18n.ts | 0 .../ts/client/mainthread/LynxView.ts | 0 .../ts/client/mainthread/LynxViewInstance.ts | 0 .../ts/client/mainthread/TemplateManager.ts | 0 .../ts/client/mainthread/createIFrameRealm.ts | 0 .../mainthread/createMainThreadGlobalAPIs.ts | 0 .../crossThreadHandlers/queryNodes.ts | 0 .../registerGetPathInfoHandler.ts | 0 .../registerInvokeUIMethodHandler.ts | 0 .../registerNapiModulesCallHandler.ts | 0 .../registerNativeModulesCallHandler.ts | 0 .../registerReloadHandler.ts | 0 .../registerSelectComponentHandler.ts | 0 .../registerSetNativePropsHandler.ts | 0 .../registerTriggerComponentEventHandler.ts | 0 ...sterTriggerElementMethodEndpointHandler.ts | 0 .../mainthread/elementAPIs/WASMJSBinding.ts | 0 .../elementAPIs/createCrossThreadEvent.ts | 0 .../elementAPIs/createElementAPI.ts | 0 .../ts/client/mainthread/elementAPIs/index.ts | 0 .../elementAPIs/pureElementPAPIs.ts | 0 .../mainthread/utils/convertLengthToPx.ts | 0 .../mainthread/utils/requestIdleCallback.ts | 0 .../ts/client/wasm.ts | 0 .../ts/client/webElementsDynamicLoader.ts | 0 .../ts/common/decodeUtils.ts | 0 .../ts/constants.ts | 2 +- .../ts/encode/encodeCSS.ts | 0 .../ts/encode/index.ts | 0 .../ts/encode/webEncoder.ts | 0 .../ts/server/createServerLynx.ts | 0 .../ts/server/decode.ts | 0 .../ts/server/deploy.ts | 0 .../ts/server/elementAPIs/createElementAPI.ts | 0 .../ts/server/elementAPIs/pureElementAPIs.ts | 0 .../ts/server/index.ts | 0 .../ts/server/wasm.ts | 0 .../ts/types/BTSChunk.ts | 0 .../ts/types/Cloneable.ts | 0 .../ts/types/DecodedTemplate.ts | 0 .../ts/types/Element.ts | 0 .../ts/types/ElementTemplateData.ts | 0 .../ts/types/EventType.ts | 0 .../ts/types/I18nTypes.ts | 0 .../ts/types/IElementPAPI.ts | 0 .../ts/types/IMtsBinding.ts | 0 .../ts/types/JSRealm.ts | 0 .../ts/types/LynxContextEventTarget.ts | 0 .../ts/types/MainThreadLynx.ts | 0 .../ts/types/NapiModules.ts | 0 .../ts/types/NativeApp.ts | 0 .../ts/types/NativeModules.ts | 0 .../ts/types/PageConfig.ts | 0 .../ts/types/ProcessDataCallback.ts | 0 .../ts/types/TimingAPIs.ts | 0 .../ts/types/UpdateDataOptions.ts | 0 .../ts/types/WorkerStartMessage.ts | 0 .../ts/types/index.ts | 0 .../{web-core-wasm => web-core}/tsconfig.json | 0 .../{web-core-wasm => web-core}/turbo.json | 0 .../vitest.config.ts | 2 +- packages/web-platform/web-explorer/index.ts | 4 +- .../web-platform/web-explorer/package.json | 2 +- .../web-rsbuild-plugin/package.json | 4 +- .../tests/fixtures/index.ts | 2 +- .../package.json | 2 +- .../src/web/index.ts | 4 +- packages/web-platform/web-tests/package.json | 2 +- packages/web-platform/web-tests/server.js | 2 +- .../web-tests/shell-project/index.ts | 4 +- .../web-tests/shell-project/lynx-view.ts | 4 +- .../web-tests/shell-project/web-core.ts | 4 +- .../template-webpack-plugin/package.json | 2 +- .../src/WebEncodePlugin.ts | 4 +- .../tsconfig.build.json | 2 +- .../template-webpack-plugin/tsconfig.json | 2 +- pnpm-lock.yaml | 36 +- vitest.config.ts | 2 +- 1374 files changed, 1839 insertions(+), 140 deletions(-) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/bench/server.bench.vitest.spec.ts (95%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/package.json (92%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/playwright.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/resources/NotoSansSC-Regular.woff2 (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/resources/ddee519472dd7e73eeb153e78d484db3.mp3 (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/resources/firefox-logo.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/resources/font.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/resources/lynx-logo.jpeg (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/resources/star.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/resources/text.txt (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/resources/web-core.main-thread.json (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/rsbuild.config.ts (86%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/scripts/generate-build-command.js (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/server-tests/__snapshots__/server-e2e.test.ts.snap (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/server-tests/server-e2e.test.ts (98%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/shell-project/devMiddleware.ts (97%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/shell-project/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/shell-project/index.ts (98%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/shell-project/ssr.html (61%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/common.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts (99%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/baseline/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/baseline/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/baseline/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/display-none/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/display-none/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/display-none/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxline/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxline/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/maxline/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/word-break/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/word-break/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/text/word-break/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-blur-radius/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-default/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/type/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/type/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-input/type/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/initial/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down-loaded/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up-loaded/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-0-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-3-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry-inter-state/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow-last-child/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/swipe-not-change-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-1-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-2-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-chromium-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-firefox-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-webkit-linux.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-SelectorQuery/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-SelectorQuery/inner.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-SelectorQuery/outer.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-SystemInfo-height-width/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-SystemInfo/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-animate/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-animation-event/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-animation-event/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-bindlauoutchange/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-dispose/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-error-bts/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-error-mts/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-error/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-area/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-basic/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-basic/placeholder.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-change-exposure-id/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-change-exposure-id/main.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-custom-event-handler/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-custom-event-handler/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-dynamic-screen-margin/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-dynamic-screen-margin/placeholder.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-dynamic-ui-margin/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-dynamic-ui-margin/placeholder.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-no-fake-disappear/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-stop-events-has-complex-dataset/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-stop-events-has-dataset/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-stop-exposure/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-exposure-stop-exposure/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-get-path-info/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-getJSModule/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-getSharedData/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-global-disallowed-vars/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-globalThis/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-initdata/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-inject-style-rules/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-invoke-fail/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-invoke-success/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-lynx-performance/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-nativemodules-bridge-call/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-nativemodules-call-delay/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-nativemodules-call/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-queueMicrotask/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-report-error/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-requestAnimationFrame/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-sendGlobalEvent/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-set-release-bts/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-set-release/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-setSharedData/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-updateData-callback/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-updateData-processData/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-updateData/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api-updateGlobalProps/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/api.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-at-rule-animation-from-to/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-at-rule-animation-from-to/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-at-rule-animation/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-at-rule-animation/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-bindmouse/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-bindtap-detail/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-bindtap/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-class-selector/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-class-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-color-not-inherit/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-css-asset-in-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-css-asset-in-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-css-compound-selector/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-css-compound-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-css-var/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-css-var/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-dataprocessor/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-auto-size-with-padding/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-auto-size-with-padding/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-auto-size/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-auto-size/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-border-radius/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-border-radius/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-placeholder/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-placeholder/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-placeholder/lynx.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-src/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-support-tap-event/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-image-support-tap-event/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-input-bindinput/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-basic-size/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-basic-size/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-basic/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-basic/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-scroll-to-position/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-scroll-to-position/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-waterfall/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-list-waterfall/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-lynx-view-not-auto/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-event-scroll/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-event-scrollend/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-event-scrolltolower/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-event-scrolltoupper/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-fixed/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-scroll-to-index/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-scrollable/assets.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-scrollable/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-scroll-view-scrollable/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-svg-background-image/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-svg-bindload/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-svg-hex-color/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-svg-utf8/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-svg-with-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-svg-with-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-svg-with-position/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-svg-with-position/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-baseline/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-bindlayout/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-color/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-color/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-display-none/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-linear-gradient-color/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-maxlength/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-maxline-with-setData/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-maxline-with-setData/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-maxline/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-nest-image/images/5a076f79f05c644487d688bba0817195.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-nest-image/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-nest-text/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-nest-view/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-set-native-props-text/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-set-native-props-text/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-set-native-props-with-setData/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-set-native-props-with-setData/main.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-tail-color-convert/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-text-selection/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-text-with-linear-gradient/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-with-new-line/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-text-word-break/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-view-border-style-default/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-audio-tt-play/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-audio-tt-play/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-blur-view-default/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-blur-view-default/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-bindblur/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-bindconfirm/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-bindfocus/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-bindinput/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-bindselection/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-blur/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-focus/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-getValue/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-input-filter/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-ng-bindinput/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-placeholder/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-setValue/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-type/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-input-value/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-overlay-ng-demo/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-overlay-ng-demo/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-refresh-view-demo/img.png (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-refresh-view-demo/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-refresh-view-demo/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-autoplay/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-autoplay/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-bindchange/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-bindchange/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-carry/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-carry/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-normal/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-circular-normal/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-current/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-current/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-duration/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-duration/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-indicator-color/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-indicator-color/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-interval/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-interval/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-carry/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-carry/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-normal/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-mode-normal/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-page-margin/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-page-margin/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/getColor.js (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-vertical/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-swiper-vertical/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-bindinput/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-bindinput/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-bindselection/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-color/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-disabled/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-disabled/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-focus/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-focus/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-getValue/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-input-filter/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-maxlength/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-maxlength/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-maxlines/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-maxlines/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-placeholder/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-textarea-placeholder/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-event-bubble-dataset/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-event-dataset/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-event-target-id/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-event-trigger/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-1/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-1/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-column-align-items/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-column-align-items/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-column-container-items-align-self/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-column-container-items-align-self/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-item-shrink/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-item-shrink/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-nested-linear-setting/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-with-overflow/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-flex-with-overflow/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-globalProps/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-globalThis-property-bts/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-globalThis-property-mts/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-image/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-blank/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-blank/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-multi/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-multi/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-exchange-class/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-multi-level-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-remove-all/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false-type-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css-selector-false.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-effect/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-fail/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-multi-import/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-multi/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-relative-path/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-when-need-with-itself/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component-when-needed/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lazy-component/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-absolute-not-in-flow/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-absolute-not-in-flow/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-child-container-wrap/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-child-container-wrap/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-align-items/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-align-items/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-items-align-self/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-items-align-self/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-cross-gravity/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-column-cross-gravity/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-default-orientation/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-default-orientation/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-grand-kid-weight/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-grand-kid-weight/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-graverty-space-between/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-graverty-space-between/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-do-not-shrink/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-do-not-shrink/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-use-order/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-item-use-order/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-margin-not-collapse/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-margin-not-collapse/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-cross-gravity/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-row-cross-gravity/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-sum-is-float/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-sum-is-float/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-sum-is-zero/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-linear-weight-sum-is-zero/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-list-rendering/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-lynx-reload/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-mts-bindtap-change-element-background/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-mts-bindtap/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-mts-bindtouchstart/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-mts-mainthread-nested-ref/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-mts-mainthread-ref/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-mts-run-on-background/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-mts-run-on-main-thread/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-mts-systeminfo/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-page-event/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-div-10/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-div-100/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-div-1000/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-div-10000/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-event-div-100/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-image-100/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-large-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-large-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-nest-level-100/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-scroll-view-100/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-small-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-small-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-performance-text-200/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-pink-rect/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-reload/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-replaceelement/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-replaceelement/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-scroll-view/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-setsate-with-cb/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-setstate-in-constructor/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-style-combinator/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-style-combinator/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-style-remove-one-property/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-style-remove-one-property/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-style-remove/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-style-remove/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-style-root-selector/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-style-root-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-useeffect-hydrate/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-useeffect-hydrate/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic-wrapper-element-do-not-impact-layout/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/basic.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/commonConfig.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-default-display-linear-false/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-default-display-linear-false/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-default-display-linear-false/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-default-overflow-visible-unset/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-default-overflow-visible-unset/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-default-overflow-visible-unset/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-display-linear/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-display-linear/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-display-linear/linear.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-display-linear/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-import-css/common.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-import-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-import-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-import-css/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-import-css/sub.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-import-css/sub.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false/sub.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-false/sub.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-true/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-true/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-true/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-true/sub.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-remove-scope-true/sub.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-exchange-class/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-exchange-class/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-multi-level-selector/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-multi-level-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-reload/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-reload/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-remove-all/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-remove-all/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-type-selector/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false-type-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-css-selector-false.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-bindtap/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-blank/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-blank/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-other/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-other/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-css/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component-use-effect/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-lazy-component.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-mixed-01/index.css (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-mixed-01/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-mixed-01/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-mode-dev-with-all-in-one/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-mode-dev-with-all-in-one/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-splitchunk-single-vendor/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-splitchunk-single-vendor/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-splitchunk-split-by-experience/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-splitchunk-split-by-experience/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-splitchunk-split-by-module/index.jsx (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/reactlynx/config-splitchunk-split-by-module/rspeedy.config.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/ssr-no-js.spec.ts (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tests/web-core.test.ts (99%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/tsconfig.json (87%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/turbo.json (100%) rename packages/web-platform/{web-core-wasm-e2e => web-core-e2e}/vitest.config.ts (73%) delete mode 100644 packages/web-platform/web-core-wasm/CHANGELOG.md rename packages/web-platform/{web-core-wasm => web-core}/.gitignore (100%) rename packages/web-platform/{web-core-wasm => web-core}/AGENTS.md (91%) create mode 100644 packages/web-platform/web-core/CHANGELOG.md rename packages/web-platform/{web-core-wasm => web-core}/Cargo.toml (96%) rename packages/web-platform/{web-core-wasm => web-core}/LICENSE.txt (100%) rename packages/web-platform/{web-core-wasm => web-core}/Notice.txt (100%) rename packages/web-platform/{web-core-wasm => web-core}/README.md (100%) rename packages/web-platform/{web-core-wasm => web-core}/benches/wasm_bench.rs (99%) rename packages/web-platform/{web-core-wasm => web-core}/binary/client/client.d.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/binary/client/client_bg.wasm.d.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/binary/encode/encode.d.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/binary/encode/encode_bg.wasm.d.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/binary/server/server.d.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/binary/server/server_bg.wasm.d.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/css/in_shadow.css (100%) rename packages/web-platform/{web-core-wasm => web-core}/css/index.css (100%) rename packages/web-platform/{web-core-wasm => web-core}/eslint.config.js (100%) rename packages/web-platform/{web-core-wasm => web-core}/package.json (95%) rename packages/web-platform/{web-core-wasm => web-core}/rsbuild.config.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/scripts/build.js (98%) rename packages/web-platform/{web-core-wasm => web-core}/scripts/dotslash-config.json (100%) rename packages/web-platform/{web-core-wasm => web-core}/scripts/wasm-bindgen (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/constants.rs (96%) rename packages/web-platform/{web-core-wasm => web-core}/src/css_tokenizer/LICENSE (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/css_tokenizer/char_code_definitions.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/css_tokenizer/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/css_tokenizer/token_types.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/css_tokenizer/tokenize.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/css_tokenizer/utils.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/js_binding/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/js_binding/mts_js_binding.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/lib.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/client/element_apis/component_apis.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/client/element_apis/dataset_apis.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/client/element_apis/event_apis.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/client/element_apis/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/client/element_apis/style_apis.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/client/main_thread_context.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/client/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/client/style_manager.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/element_data.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/server/main_thread_server_context.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/server/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/main_thread/server/style_manager_server.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/style_transformer/inline_style.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/style_transformer/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/style_transformer/rules.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/style_transformer/token_transformer.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/style_transformer/transformer.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/template_sections/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/template_sections/style_info/css_property.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/template_sections/style_info/decoded_style_data.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/template_sections/style_info/flattened_style_info.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/template_sections/style_info/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/template_sections/style_info/raw_style_info.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/template_sections/style_info/style_info_decoder.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/template/template_sections/style_info/style_sheet_resource.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/utils/hyphenate_style_name.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/src/utils/mod.rs (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/I18n.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/__snapshots__/encode.spec.ts.snap (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/__snapshots__/server-compat.spec.ts.snap (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/decode.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/element-apis.bench.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/element-apis.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/encode.bench.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/encode.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/jsdom.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/server-compat.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/server-ssr-bulk.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/server-ssr.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/template-manager.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tests/testing-library-port.spec.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/LynxCrossThreadContext.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/createBackgroundLynx.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/createChunkLoading.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/createElement.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/createNapiLoader.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/createNativeApp.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/createNativeModules.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/createPerformanceApis.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/createTimingSystem.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/createGetCustomSection.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/createGetPathInfo.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/createInvokeUIMethod.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/registerDisposeHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/registerPublishEventHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/background-apis/startBackgroundThread.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/background/index.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/decodeWorker/cssLoader.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/decodeWorker/decode.worker.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/decodeWorker/types.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/endpoints.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/global.d.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/index.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/Background.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/ExposureServices.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/I18n.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/LynxView.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/LynxViewInstance.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/TemplateManager.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/createIFrameRealm.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/createMainThreadGlobalAPIs.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/queryNodes.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerGetPathInfoHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerNapiModulesCallHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerNativeModulesCallHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerReloadHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerSelectComponentHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerSetNativePropsHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerTriggerComponentEventHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/elementAPIs/WASMJSBinding.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/elementAPIs/createCrossThreadEvent.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/elementAPIs/createElementAPI.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/elementAPIs/index.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/utils/convertLengthToPx.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/mainthread/utils/requestIdleCallback.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/wasm.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/client/webElementsDynamicLoader.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/common/decodeUtils.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/constants.ts (98%) rename packages/web-platform/{web-core-wasm => web-core}/ts/encode/encodeCSS.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/encode/index.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/encode/webEncoder.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/server/createServerLynx.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/server/decode.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/server/deploy.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/server/elementAPIs/createElementAPI.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/server/elementAPIs/pureElementAPIs.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/server/index.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/server/wasm.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/BTSChunk.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/Cloneable.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/DecodedTemplate.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/Element.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/ElementTemplateData.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/EventType.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/I18nTypes.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/IElementPAPI.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/IMtsBinding.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/JSRealm.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/LynxContextEventTarget.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/MainThreadLynx.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/NapiModules.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/NativeApp.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/NativeModules.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/PageConfig.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/ProcessDataCallback.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/TimingAPIs.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/UpdateDataOptions.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/WorkerStartMessage.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/ts/types/index.ts (100%) rename packages/web-platform/{web-core-wasm => web-core}/tsconfig.json (100%) rename packages/web-platform/{web-core-wasm => web-core}/turbo.json (100%) rename packages/web-platform/{web-core-wasm => web-core}/vitest.config.ts (96%) diff --git a/.changeset/config.json b/.changeset/config.json index 09a430351e..87f1f9f609 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -38,7 +38,7 @@ "ignore": [ "@lynx-js/web-tests", "@lynx-js/example-react", - "@lynx-js/web-core-wasm-e2e" + "@lynx-js/web-core-e2e" ], "changedFilePatterns": [ "src/**" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0751487014..b2014628fc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -129,7 +129,7 @@ jobs: export PLAYWRIGHT_JUNIT_OUTPUT_NAME=test-report.junit.xml pnpm --filter @lynx-js/web-tests run test --reporter='github,dot,junit,html' --shard=${{ matrix.shard }}/3 pnpm --filter @lynx-js/web-tests run coverage:ci - web-core-wasm-e2e: + web-core-e2e: needs: build uses: ./.github/workflows/workflow-test.yml secrets: @@ -144,7 +144,7 @@ jobs: runs-on: lynx-custom-container is-web: true web-report-name: "playwright-${{ matrix.render }}-shard${{ matrix.shard }}" - web-report-path: "packages/web-platform/web-core-wasm-e2e/playwright-report" + web-report-path: "packages/web-platform/web-core-e2e/playwright-report" codecov-flags: "e2e" run: | if [ "${{ matrix.render }}" = "SSR" ]; then @@ -152,7 +152,7 @@ jobs: fi export NODE_OPTIONS="--max-old-space-size=32768" export PLAYWRIGHT_JUNIT_OUTPUT_NAME=test-report.junit.xml - pnpm --filter @lynx-js/web-core-wasm-e2e run test --reporter='github,dot,junit,html' --shard=${{ matrix.shard }}/2 + pnpm --filter @lynx-js/web-core-e2e run test --reporter='github,dot,junit,html' --shard=${{ matrix.shard }}/2 test-api: needs: build uses: ./.github/workflows/workflow-test.yml @@ -354,7 +354,7 @@ jobs: - test-type - test-typos - test-vitest - - web-core-wasm-e2e + - web-core-e2e - website if: always() runs-on: ubuntu-latest diff --git a/AGENTS.md b/AGENTS.md index b75e866a68..b0a8bb1c0b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -245,7 +245,7 @@ These instructions were generated through comprehensive analysis and testing of - Includes E2E test suite requiring Playwright - Many packages have complex interdependencies - Contains performance-critical rendering code -- See `packages/web-platform/web-core-wasm/AGENTS.md` for specific instructions on `web-core-wasm`. +- See `packages/web-platform/web-core/AGENTS.md` for specific instructions on `web-core`. Remember: This is a complex, multi-language monorepo. Always allow extra time for builds and tests, and follow the exact command sequences provided. diff --git a/Cargo.lock b/Cargo.lock index ac5ecb5f98..b67c641c44 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3915,7 +3915,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8145dd1593bf0fb137dbfa85b8be79ec560a447298955877804640e40c2d6ea" [[package]] -name = "web-core-wasm" +name = "web-core" version = "0.0.0" dependencies = [ "fnv", diff --git a/Cargo.toml b/Cargo.toml index 6c9718b095..fdfb747afd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ members = [ "packages/react/transform/crates/*", "packages/react/transform/swc-plugin-reactlynx", "packages/react/transform/swc-plugin-reactlynx-compat", - "packages/web-platform/web-core-wasm", + "packages/web-platform/web-core", "packages/web-platform/web-elements", ] diff --git a/packages/repl/package.json b/packages/repl/package.json index b84b4912b7..d7f9596da1 100644 --- a/packages/repl/package.json +++ b/packages/repl/package.json @@ -27,7 +27,7 @@ "@lynx-js/lynx-core": "0.1.3", "@lynx-js/type-element-api": "0.0.3", "@lynx-js/types": "3.7.0", - "@lynx-js/web-core-wasm": "workspace:*", + "@lynx-js/web-core": "workspace:*", "@lynx-js/web-platform-rsbuild-plugin": "workspace:*", "@rsbuild/core": "catalog:rsbuild", "@rsbuild/plugin-react": "^1.4.5", diff --git a/packages/repl/src/components/PreviewPane.tsx b/packages/repl/src/components/PreviewPane.tsx index d162b2da3f..cdbdabf079 100644 --- a/packages/repl/src/components/PreviewPane.tsx +++ b/packages/repl/src/components/PreviewPane.tsx @@ -1,6 +1,6 @@ /* eslint-disable headers/header-format, sort-imports, import/order, n/file-extension-in-import */ import { RotateCw } from 'lucide-react'; -import type { LynxTemplate } from '@lynx-js/web-core-wasm/client'; +import type { LynxTemplate } from '@lynx-js/web-core/client'; import { LynxPreview } from './LynxPreview'; import { ConsolePanel } from './ConsolePanel'; import { diff --git a/packages/repl/src/index.tsx b/packages/repl/src/index.tsx index a2e85c1f30..5aeda8de09 100644 --- a/packages/repl/src/index.tsx +++ b/packages/repl/src/index.tsx @@ -2,7 +2,7 @@ // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. -import '@lynx-js/web-core-wasm/client'; +import '@lynx-js/web-core/client'; import './globals.css'; diff --git a/packages/rspeedy/upgrade-rspeedy/package.json b/packages/rspeedy/upgrade-rspeedy/package.json index adc6ff98ee..a007d445f8 100644 --- a/packages/rspeedy/upgrade-rspeedy/package.json +++ b/packages/rspeedy/upgrade-rspeedy/package.json @@ -39,7 +39,7 @@ "@lynx-js/react-rsbuild-plugin": "workspace:*", "@lynx-js/rspeedy": "workspace:*", "@lynx-js/types": "3.7.0", - "@lynx-js/web-core-wasm": "workspace:*", + "@lynx-js/web-core": "workspace:*", "@lynx-js/web-elements": "workspace:*", "@rsbuild/plugin-less": "1.6.0", "@rsbuild/plugin-sass": "1.5.0", diff --git a/packages/web-platform/tsconfig.json b/packages/web-platform/tsconfig.json index 06b3768600..445a58a64d 100644 --- a/packages/web-platform/tsconfig.json +++ b/packages/web-platform/tsconfig.json @@ -15,7 +15,7 @@ { "path": "./playwright-fixtures/tsconfig.json" }, { "path": "./web-elements/tsconfig.json" }, { "path": "./web-worker-rpc/tsconfig.json" }, - { "path": "./web-core-wasm/tsconfig.json" }, + { "path": "./web-core/tsconfig.json" }, { "path": "./web-rsbuild-plugin/tsconfig.json" }, { "path": "./web-rsbuild-server-middleware/tsconfig.json" }, /** packages-end */ diff --git a/packages/web-platform/web-core-wasm-e2e/bench/server.bench.vitest.spec.ts b/packages/web-platform/web-core-e2e/bench/server.bench.vitest.spec.ts similarity index 95% rename from packages/web-platform/web-core-wasm-e2e/bench/server.bench.vitest.spec.ts rename to packages/web-platform/web-core-e2e/bench/server.bench.vitest.spec.ts index ea0eab273d..bc9cd4d244 100644 --- a/packages/web-platform/web-core-wasm-e2e/bench/server.bench.vitest.spec.ts +++ b/packages/web-platform/web-core-e2e/bench/server.bench.vitest.spec.ts @@ -1,7 +1,7 @@ import { bench, describe } from 'vitest'; import * as path from 'path'; import * as fs from 'fs'; -import { executeTemplate } from '@lynx-js/web-core-wasm/server'; +import { executeTemplate } from '@lynx-js/web-core/server'; import { fileURLToPath } from 'url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); diff --git a/packages/web-platform/web-core-wasm-e2e/package.json b/packages/web-platform/web-core-e2e/package.json similarity index 92% rename from packages/web-platform/web-core-wasm-e2e/package.json rename to packages/web-platform/web-core-e2e/package.json index 61609007c5..22ac20e4e8 100644 --- a/packages/web-platform/web-core-wasm-e2e/package.json +++ b/packages/web-platform/web-core-e2e/package.json @@ -1,5 +1,5 @@ { - "name": "@lynx-js/web-core-wasm-e2e", + "name": "@lynx-js/web-core-e2e", "version": "0.0.0", "private": true, "license": "Apache-2.0", @@ -21,7 +21,7 @@ "@lynx-js/react": "workspace:*", "@lynx-js/react-rsbuild-plugin": "workspace:*", "@lynx-js/rspeedy": "workspace:*", - "@lynx-js/web-core-wasm": "workspace:*", + "@lynx-js/web-core": "workspace:*", "@playwright/test": "^1.58.2", "@rsbuild/core": "catalog:rsbuild", "nyc": "^17.1.0", diff --git a/packages/web-platform/web-core-wasm-e2e/playwright.config.ts b/packages/web-platform/web-core-e2e/playwright.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/playwright.config.ts rename to packages/web-platform/web-core-e2e/playwright.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/resources/NotoSansSC-Regular.woff2 b/packages/web-platform/web-core-e2e/resources/NotoSansSC-Regular.woff2 similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/resources/NotoSansSC-Regular.woff2 rename to packages/web-platform/web-core-e2e/resources/NotoSansSC-Regular.woff2 diff --git a/packages/web-platform/web-core-wasm-e2e/resources/ddee519472dd7e73eeb153e78d484db3.mp3 b/packages/web-platform/web-core-e2e/resources/ddee519472dd7e73eeb153e78d484db3.mp3 similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/resources/ddee519472dd7e73eeb153e78d484db3.mp3 rename to packages/web-platform/web-core-e2e/resources/ddee519472dd7e73eeb153e78d484db3.mp3 diff --git a/packages/web-platform/web-core-wasm-e2e/resources/firefox-logo.png b/packages/web-platform/web-core-e2e/resources/firefox-logo.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/resources/firefox-logo.png rename to packages/web-platform/web-core-e2e/resources/firefox-logo.png diff --git a/packages/web-platform/web-core-wasm-e2e/resources/font.css b/packages/web-platform/web-core-e2e/resources/font.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/resources/font.css rename to packages/web-platform/web-core-e2e/resources/font.css diff --git a/packages/web-platform/web-core-wasm-e2e/resources/lynx-logo.jpeg b/packages/web-platform/web-core-e2e/resources/lynx-logo.jpeg similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/resources/lynx-logo.jpeg rename to packages/web-platform/web-core-e2e/resources/lynx-logo.jpeg diff --git a/packages/web-platform/web-core-wasm-e2e/resources/star.png b/packages/web-platform/web-core-e2e/resources/star.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/resources/star.png rename to packages/web-platform/web-core-e2e/resources/star.png diff --git a/packages/web-platform/web-core-wasm-e2e/resources/text.txt b/packages/web-platform/web-core-e2e/resources/text.txt similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/resources/text.txt rename to packages/web-platform/web-core-e2e/resources/text.txt diff --git a/packages/web-platform/web-core-wasm-e2e/resources/web-core.main-thread.json b/packages/web-platform/web-core-e2e/resources/web-core.main-thread.json similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/resources/web-core.main-thread.json rename to packages/web-platform/web-core-e2e/resources/web-core.main-thread.json diff --git a/packages/web-platform/web-core-wasm-e2e/rsbuild.config.ts b/packages/web-platform/web-core-e2e/rsbuild.config.ts similarity index 86% rename from packages/web-platform/web-core-wasm-e2e/rsbuild.config.ts rename to packages/web-platform/web-core-e2e/rsbuild.config.ts index 03221a952e..2c16f79761 100644 --- a/packages/web-platform/web-core-wasm-e2e/rsbuild.config.ts +++ b/packages/web-platform/web-core-e2e/rsbuild.config.ts @@ -47,7 +47,7 @@ export default defineConfig({ attrs: { module: 'true', src: - '/node_modules/@lynx-js/web-core-wasm/dist/client_prod/static/js/client.js', + '/node_modules/@lynx-js/web-core/dist/client_prod/static/js/client.js', }, }, { @@ -56,7 +56,7 @@ export default defineConfig({ attrs: { rel: 'stylesheet', href: - '/node_modules/@lynx-js/web-core-wasm/dist/client_prod/static/css/client.css', + '/node_modules/@lynx-js/web-core/dist/client_prod/static/css/client.css', }, }, ], diff --git a/packages/web-platform/web-core-wasm-e2e/scripts/generate-build-command.js b/packages/web-platform/web-core-e2e/scripts/generate-build-command.js similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/scripts/generate-build-command.js rename to packages/web-platform/web-core-e2e/scripts/generate-build-command.js diff --git a/packages/web-platform/web-core-wasm-e2e/server-tests/__snapshots__/server-e2e.test.ts.snap b/packages/web-platform/web-core-e2e/server-tests/__snapshots__/server-e2e.test.ts.snap similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/server-tests/__snapshots__/server-e2e.test.ts.snap rename to packages/web-platform/web-core-e2e/server-tests/__snapshots__/server-e2e.test.ts.snap diff --git a/packages/web-platform/web-core-wasm-e2e/server-tests/server-e2e.test.ts b/packages/web-platform/web-core-e2e/server-tests/server-e2e.test.ts similarity index 98% rename from packages/web-platform/web-core-wasm-e2e/server-tests/server-e2e.test.ts rename to packages/web-platform/web-core-e2e/server-tests/server-e2e.test.ts index 3896887637..b10d05e6d6 100644 --- a/packages/web-platform/web-core-wasm-e2e/server-tests/server-e2e.test.ts +++ b/packages/web-platform/web-core-e2e/server-tests/server-e2e.test.ts @@ -2,7 +2,7 @@ import { test, expect } from 'vitest'; import * as path from 'path'; import * as fs from 'fs'; import { format } from 'prettier'; -import { executeTemplate } from '@lynx-js/web-core-wasm/server'; +import { executeTemplate } from '@lynx-js/web-core/server'; import { fileURLToPath } from 'url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); diff --git a/packages/web-platform/web-core-wasm-e2e/shell-project/devMiddleware.ts b/packages/web-platform/web-core-e2e/shell-project/devMiddleware.ts similarity index 97% rename from packages/web-platform/web-core-wasm-e2e/shell-project/devMiddleware.ts rename to packages/web-platform/web-core-e2e/shell-project/devMiddleware.ts index 6673345b97..7b06572d34 100644 --- a/packages/web-platform/web-core-wasm-e2e/shell-project/devMiddleware.ts +++ b/packages/web-platform/web-core-e2e/shell-project/devMiddleware.ts @@ -7,7 +7,7 @@ import * as fs from 'fs'; import * as path from 'path'; import { fileURLToPath } from 'url'; -import { executeTemplate } from '@lynx-js/web-core-wasm/server'; +import { executeTemplate } from '@lynx-js/web-core/server'; import type { IncomingMessage, ServerResponse } from 'http'; const __filename = fileURLToPath(import.meta.url); diff --git a/packages/web-platform/web-core-wasm-e2e/shell-project/index.css b/packages/web-platform/web-core-e2e/shell-project/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/shell-project/index.css rename to packages/web-platform/web-core-e2e/shell-project/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/shell-project/index.ts b/packages/web-platform/web-core-e2e/shell-project/index.ts similarity index 98% rename from packages/web-platform/web-core-wasm-e2e/shell-project/index.ts rename to packages/web-platform/web-core-e2e/shell-project/index.ts index 97ac04c107..830e529dc6 100644 --- a/packages/web-platform/web-core-wasm-e2e/shell-project/index.ts +++ b/packages/web-platform/web-core-e2e/shell-project/index.ts @@ -1,4 +1,4 @@ -import type { LynxViewElement } from '@lynx-js/web-core-wasm/client'; +import type { LynxViewElement } from '@lynx-js/web-core/client'; import './index.css'; export const lynxViewTests = ( diff --git a/packages/web-platform/web-core-wasm-e2e/shell-project/ssr.html b/packages/web-platform/web-core-e2e/shell-project/ssr.html similarity index 61% rename from packages/web-platform/web-core-wasm-e2e/shell-project/ssr.html rename to packages/web-platform/web-core-e2e/shell-project/ssr.html index 72089be7c1..a7cda59cfa 100644 --- a/packages/web-platform/web-core-wasm-e2e/shell-project/ssr.html +++ b/packages/web-platform/web-core-e2e/shell-project/ssr.html @@ -6,9 +6,9 @@ SSR Test - +
diff --git a/packages/web-platform/web-core-wasm-e2e/tests/common.css b/packages/web-platform/web-core-e2e/tests/common.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/common.css rename to packages/web-platform/web-core-e2e/tests/common.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts similarity index 99% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts index 74dae5d97f..39b5a57368 100644 --- a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts +++ b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts @@ -3,7 +3,7 @@ // LICENSE file in the root directory of this source tree. import { test, expect, swipe, dragAndHold } from '@lynx-js/playwright-fixtures'; import type { Page } from '@playwright/test'; -import type { LynxViewElement } from '@lynx-js/web-core-wasm/client'; +import type { LynxViewElement } from '@lynx-js/web-core/client'; const isSSR = !!process.env['ENABLE_SSR']; const wait = async (ms: number) => { diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-SelectorQuery/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/animate/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-animate/initial/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/blue/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/api-updateGlobalProps/initial/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-asset-in-css/show-lynx-logo/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-css-compound-selector/compound-selector/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-element-scroll-view-scroll-to-index/green-blue/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-1/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-align-items/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-items-align-self/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-not-shrink-to-zero/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-item-shrink/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-flex-with-overflow/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-absolute-not-in-flow/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-child-container-wrap/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-align-items/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-align-self/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-items-layout-gravity/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-center/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-center/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-column-cross-gravity/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-default-orientation/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-grand-kid-weight/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-graverty-space-between/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex-basis/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-respond-to-flex/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-do-not-shrink/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-item-use-order/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-horizontal-with-direction/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-orientation-vertical-with-direction/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-items-layout-gravity/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-center/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-row-cross-gravity/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-not-assign-full-free-space/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-equal-to-item-weight/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/basic-linear-weight-sum-is-zero/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-display-linear-false/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/config-css-default-overflow-visible-unset/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-do-not-meet-exposure-area-requirement-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-area/scroll-200-green-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/0-initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/1-right-yellow-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/2-white-back-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/3-red-down-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-basic/4-white-down-back-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-custom-event-handler/all-green-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/0-initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/1-orange-half-do-trigger-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/2-green-half-not-trigger-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-screen-margin/3-green-half-do-trigger-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/0-initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/1-orange-half-do-trigger-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/2-green-half-not-trigger-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/exposure/api-exposure-dynamic-ui-margin/3-green-half-do-trigger-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size-with-padding/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/auto-size/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/basic-element-image-src/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/border-radius/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/image/placeholder/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic-size/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-basic/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-scroll-to-position/scroll-to-position-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/list/basic-element-list-waterfall/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/lynx-view/basic-element-lynx-view-not-auto/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/scroll-view/basic-element-scroll-view-fixed/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/background-image/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/hex-color/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/utf8/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-css/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/svg/with-position/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/baseline/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-color/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/basic-element-text-dynamic-text-style-update/updated-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/display-none/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient-color/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/linear-gradient/gradient-text-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxlength/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline-with-setData/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/maxline/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-image/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-text/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/nest-view/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/raw-text-new-line/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/set-native-props-with-maxlength/index/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/tail-color-convert/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-boolean-flatten-false-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-false-string-flatten-false-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-boolean-flatten-false-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/text-selection/text-selection-true-string-flatten-false-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/text/word-break/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/view/basic-element-view-border-style-default/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-blur-radius/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-blur-radius/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-blur-radius/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-blur-radius/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-default/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-default/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-default/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-blur-view/basic-element-x-blur-view-default/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-foldview-ng/basic-element-x-foldview-ng-method-setFoldExpanded/should-be-scrolled-by-method-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/blur/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder-pseudo-element/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/placeholder/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-input/type/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-close-all-4-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/counter-test2-could-show-all/could-open-all-4-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/click-wrapper-dom-hide-dialog-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/demo/show-dialog-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-button-1-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-content-do-not-through-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-1/click-overlay-out-of-content-to-trigger-bottom-button-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-button-2-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-2/click-close-button-in-overlay-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-3/click-button-3-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-again-will-handle-by-backdrop-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-button-4-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-overlay-ng/playground-test-4-has-backdrop/click-close-button-to-close-overlay-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/initial/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/initial/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/initial/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/initial/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down-loaded/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down-loaded/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down-loaded/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down-loaded/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-down/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up-loaded/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up-loaded/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up-loaded/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up-loaded/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-refresh-view/demo/pull-up/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-10/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-15/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-20/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/autoplay-5/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-0-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-1-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-2-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-3-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carousel/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-0-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-1-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-2-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-3-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/carry/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-0-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-0-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-0-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-0-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-3-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-3-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-3-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-3-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/coverflow/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-0-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-1-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-2-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-3-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/flat-coverflow/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-0-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-1-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-2-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-3-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/circular/normal/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-0/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-1/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-2/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-3/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/current-4/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-1-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-2-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-3-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/duration/current-4-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-0/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-1/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-2/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-3/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/dynamic-status-4/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-color/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/indicator-dots/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-1/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-2/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/interval-3/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel-last-child/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carousel/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry-inter-state/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry-inter-state/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry-inter-state/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry-inter-state/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-carry/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow-last-child/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow-last-child/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow-last-child/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow-last-child/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-coverflow/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow-last-child/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-flat-coverflow/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal-last-child/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/mode-normal/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin-1/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/page-margin/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/1-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/2-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/scroll-to/3-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-0/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-swiper/vertical/current-1/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/basic-element-x-textarea-color/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/default/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/false/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/disabled/true/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/default/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlength/dynamic/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/init-value/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/maxlines/update-value/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/max-height/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/min-height-max-height/min-height/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-font-size/font-size/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/init-value/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder-style/update-value/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/init-value/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-textarea/placeholder/update-value/index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/swipe-not-change-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/swipe-not-change-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/swipe-not-change-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-allow-horizontal-gesture/swipe-not-change-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-1-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-1-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-1-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-1-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-2-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-2-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-2-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-exposure/exposure-2-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-item-position-absolute/select-index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/initial-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-method-selecttab/selecttab-1-green-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-change-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-chromium-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-chromium-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-chromium-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-chromium-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-firefox-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-firefox-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-firefox-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-firefox-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-webkit-linux.png b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-webkit-linux.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-webkit-linux.png rename to packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts-snapshots/x-viewpager-ng/basic-element-x-viewpager-ng-select-index/select-index-webkit-linux.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/inner.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/inner.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/inner.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/inner.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/mini-result-cell/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/outer.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/outer.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SelectorQuery/outer.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-SelectorQuery/outer.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SystemInfo-height-width/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-SystemInfo-height-width/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SystemInfo-height-width/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-SystemInfo-height-width/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SystemInfo/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-SystemInfo/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-SystemInfo/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-SystemInfo/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-animate/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-animate/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-animate/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-animate/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-animation-event/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/api-animation-event/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-animation-event/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-animation-event/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-animation-event/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-animation-event/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-animation-event/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-animation-event/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-bindlauoutchange/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-bindlauoutchange/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-bindlauoutchange/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-bindlauoutchange/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-dispose/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-dispose/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-dispose/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-dispose/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-error-bts/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-error-bts/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-error-bts/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-error-bts/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-error-mts/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-error-mts/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-error-mts/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-error-mts/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-error/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-error/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-error/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-error/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-area/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-area/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-area/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-area/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-basic/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-basic/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-basic/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-basic/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-basic/placeholder.css b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-basic/placeholder.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-basic/placeholder.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-basic/placeholder.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-change-exposure-id/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-change-exposure-id/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-change-exposure-id/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-change-exposure-id/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-change-exposure-id/main.css b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-change-exposure-id/main.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-change-exposure-id/main.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-change-exposure-id/main.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-custom-event-handler/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-custom-event-handler/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-custom-event-handler/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-custom-event-handler/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-custom-event-handler/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-custom-event-handler/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-custom-event-handler/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-custom-event-handler/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-dynamic-screen-margin/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-dynamic-screen-margin/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-dynamic-screen-margin/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-dynamic-screen-margin/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-dynamic-screen-margin/placeholder.css b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-dynamic-screen-margin/placeholder.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-dynamic-screen-margin/placeholder.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-dynamic-screen-margin/placeholder.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-dynamic-ui-margin/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-dynamic-ui-margin/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-dynamic-ui-margin/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-dynamic-ui-margin/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-dynamic-ui-margin/placeholder.css b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-dynamic-ui-margin/placeholder.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-dynamic-ui-margin/placeholder.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-dynamic-ui-margin/placeholder.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-no-fake-disappear/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-no-fake-disappear/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-no-fake-disappear/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-no-fake-disappear/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-stop-events-has-complex-dataset/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-stop-events-has-complex-dataset/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-stop-events-has-complex-dataset/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-stop-events-has-complex-dataset/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-stop-events-has-dataset/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-stop-events-has-dataset/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-stop-events-has-dataset/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-stop-events-has-dataset/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-stop-exposure/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-stop-exposure/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-stop-exposure/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-stop-exposure/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-stop-exposure/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-stop-exposure/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-exposure-stop-exposure/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-exposure-stop-exposure/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-get-path-info/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-get-path-info/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-get-path-info/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-get-path-info/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-getJSModule/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-getJSModule/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-getJSModule/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-getJSModule/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-getSharedData/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-getSharedData/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-getSharedData/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-getSharedData/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-global-disallowed-vars/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-global-disallowed-vars/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-global-disallowed-vars/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-global-disallowed-vars/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-globalThis/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-globalThis/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-globalThis/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-globalThis/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-initdata/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-initdata/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-initdata/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-initdata/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-inject-style-rules/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-inject-style-rules/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-inject-style-rules/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-inject-style-rules/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-invoke-fail/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-invoke-fail/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-invoke-fail/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-invoke-fail/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-invoke-success/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-invoke-success/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-invoke-success/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-invoke-success/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-lynx-performance/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-lynx-performance/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-lynx-performance/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-lynx-performance/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-nativemodules-bridge-call/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-nativemodules-bridge-call/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-nativemodules-bridge-call/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-nativemodules-bridge-call/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-nativemodules-call-delay/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-nativemodules-call-delay/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-nativemodules-call-delay/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-nativemodules-call-delay/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-nativemodules-call/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-nativemodules-call/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-nativemodules-call/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-nativemodules-call/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-queueMicrotask/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-queueMicrotask/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-queueMicrotask/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-queueMicrotask/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-report-error/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-report-error/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-report-error/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-report-error/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-requestAnimationFrame/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-requestAnimationFrame/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-requestAnimationFrame/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-requestAnimationFrame/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-sendGlobalEvent/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-sendGlobalEvent/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-sendGlobalEvent/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-sendGlobalEvent/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-set-release-bts/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-set-release-bts/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-set-release-bts/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-set-release-bts/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-set-release/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-set-release/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-set-release/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-set-release/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-setSharedData/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-setSharedData/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-setSharedData/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-setSharedData/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-updateData-callback/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-updateData-callback/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-updateData-callback/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-updateData-callback/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-updateData-processData/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-updateData-processData/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-updateData-processData/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-updateData-processData/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-updateData/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-updateData/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-updateData/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-updateData/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-updateGlobalProps/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/api-updateGlobalProps/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api-updateGlobalProps/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/api-updateGlobalProps/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/api.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/api.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/api.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-at-rule-animation-from-to/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-at-rule-animation-from-to/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-at-rule-animation-from-to/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-at-rule-animation-from-to/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-at-rule-animation-from-to/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-at-rule-animation-from-to/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-at-rule-animation-from-to/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-at-rule-animation-from-to/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-at-rule-animation/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-at-rule-animation/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-at-rule-animation/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-at-rule-animation/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-at-rule-animation/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-at-rule-animation/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-at-rule-animation/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-at-rule-animation/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-bindmouse/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-bindmouse/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-bindmouse/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-bindmouse/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-bindtap-detail/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-bindtap-detail/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-bindtap-detail/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-bindtap-detail/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-bindtap/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-bindtap/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-bindtap/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-bindtap/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-class-selector/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-class-selector/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-class-selector/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-class-selector/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-class-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-class-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-class-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-class-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-color-not-inherit/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-color-not-inherit/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-color-not-inherit/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-color-not-inherit/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-asset-in-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-asset-in-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-asset-in-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-asset-in-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-asset-in-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-asset-in-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-asset-in-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-asset-in-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-compound-selector/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-compound-selector/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-compound-selector/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-compound-selector/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-compound-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-compound-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-compound-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-compound-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-var/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-var/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-var/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-var/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-var/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-var/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-css-var/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-css-var/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-dataprocessor/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-dataprocessor/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-dataprocessor/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-dataprocessor/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-auto-size-with-padding/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-auto-size-with-padding/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-auto-size-with-padding/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-auto-size-with-padding/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-auto-size-with-padding/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-auto-size-with-padding/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-auto-size-with-padding/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-auto-size-with-padding/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-auto-size/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-auto-size/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-auto-size/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-auto-size/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-auto-size/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-auto-size/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-auto-size/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-auto-size/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-border-radius/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-border-radius/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-border-radius/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-border-radius/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-border-radius/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-border-radius/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-border-radius/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-border-radius/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-placeholder/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-placeholder/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-placeholder/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-placeholder/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-placeholder/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-placeholder/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-placeholder/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-placeholder/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-placeholder/lynx.png b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-placeholder/lynx.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-placeholder/lynx.png rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-placeholder/lynx.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-src/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-src/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-src/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-src/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-support-tap-event/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-support-tap-event/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-support-tap-event/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-support-tap-event/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-support-tap-event/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-support-tap-event/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-image-support-tap-event/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-image-support-tap-event/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-input-bindinput/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-input-bindinput/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-input-bindinput/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-input-bindinput/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-basic-size/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-basic-size/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-basic-size/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-basic-size/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-basic-size/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-basic-size/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-basic-size/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-basic-size/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-basic/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-basic/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-basic/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-basic/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-basic/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-basic/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-basic/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-basic/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px-waterfall/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-estimated-main-axis-size-px/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px-waterfall/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-horizontal-estimated-main-axis-size-px/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-scroll-to-position/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-scroll-to-position/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-scroll-to-position/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-scroll-to-position/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-scroll-to-position/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-scroll-to-position/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-scroll-to-position/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-scroll-to-position/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-waterfall/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-waterfall/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-waterfall/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-waterfall/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-waterfall/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-waterfall/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-list-waterfall/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-waterfall/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-lynx-view-not-auto/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-lynx-view-not-auto/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-lynx-view-not-auto/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-lynx-view-not-auto/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-event-scroll/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-event-scroll/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-event-scroll/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-event-scroll/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-event-scrollend/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-event-scrollend/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-event-scrollend/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-event-scrollend/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-event-scrolltolower/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-event-scrolltolower/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-event-scrolltolower/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-event-scrolltolower/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-event-scrolltoupper/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-event-scrolltoupper/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-event-scrolltoupper/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-event-scrolltoupper/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-fixed/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-fixed/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-fixed/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-fixed/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-scroll-to-index/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-scroll-to-index/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-scroll-to-index/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-scroll-to-index/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/assets.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/assets.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/assets.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/assets.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-scroll-view-scrollable/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-background-image/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-background-image/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-background-image/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-background-image/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-bindload/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-bindload/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-bindload/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-bindload/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-hex-color/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-hex-color/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-hex-color/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-hex-color/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-utf8/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-utf8/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-utf8/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-utf8/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-with-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-with-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-with-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-with-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-with-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-with-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-with-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-with-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-with-position/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-with-position/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-with-position/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-with-position/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-with-position/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-with-position/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-svg-with-position/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-svg-with-position/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-baseline/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-baseline/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-baseline/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-baseline/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-bindlayout/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-bindlayout/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-bindlayout/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-bindlayout/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-color/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-color/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-color/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-color/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-color/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-color/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-color/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-color/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-display-none/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-display-none/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-display-none/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-display-none/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-dynamic-text-style-update/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-linear-gradient-color/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-linear-gradient-color/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-linear-gradient-color/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-linear-gradient-color/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-maxlength/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-maxlength/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-maxlength/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-maxlength/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-maxline-with-setData/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-maxline-with-setData/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-maxline-with-setData/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-maxline-with-setData/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-maxline-with-setData/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-maxline-with-setData/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-maxline-with-setData/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-maxline-with-setData/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-maxline/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-maxline/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-maxline/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-maxline/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-nest-image/images/5a076f79f05c644487d688bba0817195.png b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-nest-image/images/5a076f79f05c644487d688bba0817195.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-nest-image/images/5a076f79f05c644487d688bba0817195.png rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-nest-image/images/5a076f79f05c644487d688bba0817195.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-nest-image/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-nest-image/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-nest-image/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-nest-image/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-nest-text/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-nest-text/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-nest-text/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-nest-text/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-nest-view/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-nest-view/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-nest-view/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-nest-view/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-text-do-not-change-inline-text/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-text/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-text/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-text/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-text/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-text/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-text/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-text/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-text/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-with-maxlength/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-with-setData/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-with-setData/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-with-setData/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-with-setData/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-with-setData/main.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-with-setData/main.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-set-native-props-with-setData/main.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-set-native-props-with-setData/main.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-tail-color-convert/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-tail-color-convert/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-tail-color-convert/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-tail-color-convert/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-text-selection/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-text-selection/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-text-selection/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-text-selection/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-text-with-linear-gradient/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-text-with-linear-gradient/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-text-with-linear-gradient/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-text-with-linear-gradient/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-with-new-line/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-with-new-line/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-with-new-line/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-with-new-line/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-word-break/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-word-break/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-text-word-break/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-text-word-break/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-view-border-style-default/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-view-border-style-default/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-view-border-style-default/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-view-border-style-default/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-audio-tt-play/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-audio-tt-play/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-audio-tt-play/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-audio-tt-play/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-audio-tt-play/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-audio-tt-play/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-audio-tt-play/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-audio-tt-play/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-blur-view-blur-radius/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-blur-view-default/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-blur-view-default/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-blur-view-default/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-blur-view-default/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-blur-view-default/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-blur-view-default/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-blur-view-default/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-blur-view-default/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-foldview-ng-method-setFoldExpanded/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindblur/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindblur/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindblur/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindblur/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindconfirm/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindconfirm/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindconfirm/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindconfirm/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindfocus/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindfocus/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindfocus/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindfocus/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindinput/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindinput/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindinput/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindinput/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindselection/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindselection/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-bindselection/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-bindselection/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-blur/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-blur/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-blur/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-blur/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-focus/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-focus/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-focus/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-focus/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-getValue/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-getValue/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-getValue/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-getValue/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-input-filter/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-input-filter/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-input-filter/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-input-filter/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-ng-bindinput/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-ng-bindinput/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-ng-bindinput/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-ng-bindinput/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-placeholder-pseudo-element/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-placeholder/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-placeholder/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-placeholder/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-placeholder/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-setValue/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-setValue/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-setValue/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-setValue/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-type/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-type/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-type/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-type/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-value/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-value/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-input-value/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-input-value/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-counter-test2/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-demo/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-demo/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-demo/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-demo/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-demo/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-demo/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-demo/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-demo/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-overlay-ng-playground-test/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/img.png b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/img.png similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/img.png rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/img.png diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-refresh-view-demo/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-autoplay/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-autoplay/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-autoplay/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-autoplay/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-autoplay/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-autoplay/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-autoplay/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-autoplay/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindchange/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindchange/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindchange/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindchange/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindchange/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindchange/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindchange/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindchange/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollend/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-bindscrollstart/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-carousel/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-carry/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-carry/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-carry/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-carry/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-carry/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-carry/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-carry/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-carry/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-coverflow/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-flat-coverflow/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-normal/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-normal/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-normal/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-normal/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-normal/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-normal/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-circular-normal/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-circular-normal/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-current/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-current/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-current/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-current/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-current/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-current/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-current/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-current/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-duration/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-duration/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-duration/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-duration/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-duration/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-duration/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-duration/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-duration/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-indicator-color/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-indicator-color/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-indicator-color/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-indicator-color/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-indicator-color/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-indicator-color/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-indicator-color/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-indicator-color/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-indicator-dots/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-interval/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-interval/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-interval/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-interval/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-interval/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-interval/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-interval/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-interval/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-method-scroll-to/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-carousel/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-carry/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-carry/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-carry/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-carry/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-carry/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-carry/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-carry/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-carry/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-coverflow/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-flat-coverflow/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-normal/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-normal/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-normal/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-normal/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-normal/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-normal/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-mode-normal/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-mode-normal/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-page-margin/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-page-margin/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-page-margin/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-page-margin/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-page-margin/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-page-margin/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-page-margin/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-page-margin/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/getColor.js b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/getColor.js similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/getColor.js rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/getColor.js diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-swiper-dynamic/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-vertical/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-vertical/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-vertical/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-vertical/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-vertical/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-vertical/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-swiper-vertical/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-swiper-vertical/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-bindinput/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-bindinput/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-bindinput/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-bindinput/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-bindinput/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-bindinput/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-bindinput/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-bindinput/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-bindselection/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-bindselection/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-bindselection/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-bindselection/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-color/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-color/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-color/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-color/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-disabled/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-disabled/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-disabled/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-disabled/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-disabled/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-disabled/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-disabled/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-disabled/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-focus/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-focus/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-focus/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-focus/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-focus/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-focus/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-focus/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-focus/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-getValue/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-getValue/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-getValue/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-getValue/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-input-filter/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-input-filter/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-input-filter/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-input-filter/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-maxlength/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-maxlength/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-maxlength/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-maxlength/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-maxlength/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-maxlength/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-maxlength/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-maxlength/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-maxlines/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-maxlines/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-maxlines/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-maxlines/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-maxlines/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-maxlines/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-maxlines/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-maxlines/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-min-height-max-height/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-font-size/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder-style/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-textarea-placeholder/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-textarea-placeholder/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-allow-horizontal-gesture/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange-select-tab/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindchange/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-bindoffsetchange/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-exposure/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-item-position-absolute/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-method-selecttab/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-x-viewpager-ng-select-index/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-event-bubble-dataset/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-event-bubble-dataset/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-event-bubble-dataset/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-event-bubble-dataset/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-event-dataset/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-event-dataset/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-event-dataset/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-event-dataset/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-event-target-id/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-event-target-id/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-event-target-id/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-event-target-id/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-event-trigger/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-event-trigger/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-event-trigger/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-event-trigger/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-1/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-1/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-1/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-1/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-1/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-1/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-1/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-1/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-align-items/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-align-items/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-align-items/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-align-items/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-align-items/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-align-items/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-align-items/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-align-items/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-container-items-align-self/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-container-items-align-self/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-container-items-align-self/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-container-items-align-self/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-container-items-align-self/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-container-items-align-self/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-container-items-align-self/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-container-items-align-self/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-main-axis-content-based-min-size-not-from-content-size-suggestion/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-not-shrink-to-zero/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-shrink/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-shrink/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-shrink/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-shrink/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-shrink/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-shrink/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-item-shrink/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-item-shrink/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-nested-linear-setting/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-nested-linear-setting/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-nested-linear-setting/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-nested-linear-setting/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-with-overflow/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-with-overflow/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-with-overflow/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-with-overflow/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-with-overflow/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-with-overflow/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-flex-with-overflow/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-flex-with-overflow/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-globalProps/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-globalProps/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-globalProps/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-globalProps/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-globalThis-property-bts/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-globalThis-property-bts/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-globalThis-property-bts/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-globalThis-property-bts/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-globalThis-property-mts/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-globalThis-property-mts/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-globalThis-property-mts/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-globalThis-property-mts/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-image/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-image/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-image/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-image/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-blank/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-blank/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-blank/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-blank/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-blank/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-blank/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-blank/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-blank/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-multi/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-multi/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-multi/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-multi/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-multi/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-multi/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-multi/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-multi/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-exchange-class/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-exchange-class/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-exchange-class/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-exchange-class/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-multi-level-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-multi-level-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-multi-level-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-multi-level-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-all/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-all/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-all/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-all/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-type-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-type-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-type-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false-type-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css-selector-false.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css-selector-false.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-effect/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-effect/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-effect/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-effect/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-fail/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-fail/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-fail/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-fail/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-multi-import/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-multi-import/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-multi-import/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-multi-import/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-multi/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-multi/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-multi/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-multi/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-relative-path/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-relative-path/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-relative-path/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-relative-path/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-when-need-with-itself/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-when-need-with-itself/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-when-need-with-itself/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-when-need-with-itself/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-when-needed/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-when-needed/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component-when-needed/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component-when-needed/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lazy-component/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lazy-component/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-absolute-not-in-flow/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-absolute-not-in-flow/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-absolute-not-in-flow/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-absolute-not-in-flow/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-absolute-not-in-flow/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-absolute-not-in-flow/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-absolute-not-in-flow/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-absolute-not-in-flow/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-child-container-wrap/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-child-container-wrap/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-child-container-wrap/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-child-container-wrap/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-child-container-wrap/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-child-container-wrap/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-child-container-wrap/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-child-container-wrap/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-align-items/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-align-items/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-align-items/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-align-items/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-align-items/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-align-items/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-align-items/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-align-items/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-items-align-self/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-items-align-self/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-items-align-self/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-items-align-self/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-items-align-self/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-items-align-self/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-items-align-self/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-items-align-self/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-items-layout-gravity/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-center/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-center/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-cross-gravity/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-cross-gravity/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-cross-gravity/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-cross-gravity/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-cross-gravity/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-cross-gravity/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-column-cross-gravity/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-column-cross-gravity/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-default-orientation/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-default-orientation/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-default-orientation/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-default-orientation/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-default-orientation/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-default-orientation/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-default-orientation/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-default-orientation/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-grand-kid-weight/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-grand-kid-weight/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-grand-kid-weight/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-grand-kid-weight/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-grand-kid-weight/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-grand-kid-weight/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-grand-kid-weight/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-grand-kid-weight/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-graverty-space-between/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-graverty-space-between/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-graverty-space-between/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-graverty-space-between/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-graverty-space-between/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-graverty-space-between/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-graverty-space-between/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-graverty-space-between/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex-basis/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-respond-to-flex/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-shrink/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-shrink/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-shrink/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-shrink/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-shrink/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-shrink/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-do-not-shrink/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-do-not-shrink/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-use-order-affect-z-layout/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-use-order/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-use-order/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-use-order/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-use-order/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-use-order/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-use-order/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-item-use-order/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-item-use-order/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-margin-not-collapse/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-margin-not-collapse/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-margin-not-collapse/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-margin-not-collapse/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-margin-not-collapse/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-margin-not-collapse/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-margin-not-collapse/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-margin-not-collapse/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-orientation-horizontal-with-direction/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-orientation-vertical-with-direction/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-items-layout-gravity/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-center/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-right-left-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-start-end-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-graverty-top-bottom-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-right-left-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-container-main-axis-justify-content-start-end-with-direction-rtl/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-cross-gravity/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-cross-gravity/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-cross-gravity/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-cross-gravity/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-cross-gravity/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-cross-gravity/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-row-cross-gravity/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-row-cross-gravity/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-sum-of-item-weight-larger-than-container-weight-sum/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-calced-large-than-size/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-calced-less-than-size/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-not-assign-full-free-space/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-equal-to-item-weight/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-is-float/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-is-float/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-is-float/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-is-float/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-is-float/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-is-float/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-is-float/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-is-float/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-is-zero/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-is-zero/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-is-zero/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-is-zero/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-is-zero/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-is-zero/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-linear-weight-sum-is-zero/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-linear-weight-sum-is-zero/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-list-rendering/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-list-rendering/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-list-rendering/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-list-rendering/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lynx-reload/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-lynx-reload/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-lynx-reload/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-lynx-reload/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-bindtap-change-element-background/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-bindtap-change-element-background/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-bindtap-change-element-background/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-bindtap-change-element-background/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-bindtap/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-bindtap/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-bindtap/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-bindtap/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-bindtouchstart/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-bindtouchstart/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-bindtouchstart/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-bindtouchstart/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-mainthread-nested-ref/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-mainthread-nested-ref/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-mainthread-nested-ref/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-mainthread-nested-ref/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-mainthread-ref/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-mainthread-ref/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-mainthread-ref/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-mainthread-ref/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-run-on-background/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-run-on-background/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-run-on-background/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-run-on-background/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-run-on-main-thread/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-run-on-main-thread/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-run-on-main-thread/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-run-on-main-thread/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-systeminfo/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-systeminfo/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-mts-systeminfo/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-mts-systeminfo/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-page-event/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-page-event/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-page-event/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-page-event/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-div-10/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-div-10/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-div-10/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-div-10/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-div-100/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-div-100/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-div-100/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-div-100/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-div-1000/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-div-1000/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-div-1000/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-div-1000/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-div-10000/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-div-10000/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-div-10000/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-div-10000/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-event-div-100/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-event-div-100/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-event-div-100/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-event-div-100/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-image-100/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-image-100/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-image-100/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-image-100/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-large-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-large-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-large-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-large-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-large-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-large-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-large-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-large-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-nest-level-100/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-nest-level-100/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-nest-level-100/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-nest-level-100/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-scroll-view-100/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-scroll-view-100/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-scroll-view-100/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-scroll-view-100/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-small-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-small-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-small-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-small-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-small-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-small-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-small-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-small-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-text-200/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-text-200/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-performance-text-200/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-performance-text-200/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-pink-rect/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-pink-rect/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-pink-rect/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-pink-rect/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-reload/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-reload/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-reload/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-reload/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-replaceelement/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-replaceelement/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-replaceelement/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-replaceelement/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-replaceelement/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-replaceelement/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-replaceelement/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-replaceelement/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-scroll-view/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-scroll-view/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-scroll-view/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-scroll-view/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-setsate-with-cb/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-setsate-with-cb/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-setsate-with-cb/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-setsate-with-cb/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-setstate-in-constructor/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-setstate-in-constructor/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-setstate-in-constructor/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-setstate-in-constructor/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-combinator/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-combinator/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-combinator/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-combinator/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-combinator/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-combinator/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-combinator/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-combinator/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-remove-one-property/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-remove-one-property/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-remove-one-property/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-remove-one-property/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-remove-one-property/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-remove-one-property/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-remove-one-property/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-remove-one-property/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-remove/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-remove/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-remove/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-remove/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-remove/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-remove/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-remove/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-remove/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-root-selector/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-root-selector/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-root-selector/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-root-selector/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-root-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-root-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-style-root-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-style-root-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-useeffect-hydrate/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-useeffect-hydrate/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-useeffect-hydrate/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-useeffect-hydrate/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-useeffect-hydrate/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-useeffect-hydrate/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-useeffect-hydrate/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-useeffect-hydrate/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-wrapper-element-do-not-impact-layout/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-wrapper-element-do-not-impact-layout/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic-wrapper-element-do-not-impact-layout/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic-wrapper-element-do-not-impact-layout/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/basic.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/basic.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/basic.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/commonConfig.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/commonConfig.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/commonConfig.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/commonConfig.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-display-linear-false/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-display-linear-false/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-display-linear-false/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-display-linear-false/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-display-linear-false/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-display-linear-false/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-display-linear-false/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-display-linear-false/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-display-linear-false/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-display-linear-false/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-display-linear-false/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-display-linear-false/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-default-overflow-visible-unset/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/linear.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/linear.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/linear.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/linear.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-display-linear/sub.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/common.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/common.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/common.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/common.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/sub.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/sub.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/sub.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/sub.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/sub.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/sub.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/sub.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-import-css/sub.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false-with-descendant-combinator/sub.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/sub.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/sub.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/sub.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/sub.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/sub.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/sub.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-false/sub.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-false/sub.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/sub.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/sub.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/sub.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/sub.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/sub.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/sub.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-remove-scope-true/sub.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-remove-scope-true/sub.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-exchange-class/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-exchange-class/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-exchange-class/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-exchange-class/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-exchange-class/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-exchange-class/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-exchange-class/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-exchange-class/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-inline-css-change-same-time/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-inline-remove-css-remove-inline/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-multi-level-selector/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-multi-level-selector/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-multi-level-selector/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-multi-level-selector/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-multi-level-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-multi-level-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-multi-level-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-multi-level-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-reload/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-reload/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-reload/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-reload/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-reload/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-reload/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-reload/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-reload/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-all/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-all/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-all/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-all/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-all/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-all/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-all/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-all/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-reuse-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-css-and-style-collapsed/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-remove-inline-style-and-reuse-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-type-selector/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-type-selector/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-type-selector/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-type-selector/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-type-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-type-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false-type-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false-type-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-css-selector-false.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-css-selector-false.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-bindtap/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-bindtap/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-bindtap/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-bindtap/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-blank/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-blank/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-blank/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-blank/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-blank/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-blank/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-blank/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-blank/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-other/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-other/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-other/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-other/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-other/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-other/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-other/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-other/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-exchange-class/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-css-change-same-time/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-inline-remove-css-remove-inline/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-multi-level-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-all/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-reuse-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-css-and-style-collapsed/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-remove-inline-style-and-reuse-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css-selector-false-type-selector/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-css/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-css/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-use-effect/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-use-effect/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component-use-effect/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component-use-effect/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-lazy-component.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-lazy-component.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mixed-01/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/config-mixed-01/index.css similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mixed-01/index.css rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-mixed-01/index.css diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mixed-01/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-mixed-01/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mixed-01/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-mixed-01/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mixed-01/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-mixed-01/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mixed-01/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-mixed-01/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mode-dev-with-all-in-one/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-mode-dev-with-all-in-one/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mode-dev-with-all-in-one/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-mode-dev-with-all-in-one/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mode-dev-with-all-in-one/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-mode-dev-with-all-in-one/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-mode-dev-with-all-in-one/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-mode-dev-with-all-in-one/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-single-vendor/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-single-vendor/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-single-vendor/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-single-vendor/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-single-vendor/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-single-vendor/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-single-vendor/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-single-vendor/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-split-by-experience/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-split-by-experience/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-split-by-experience/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-split-by-experience/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-split-by-experience/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-split-by-experience/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-split-by-experience/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-split-by-experience/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-split-by-module/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-split-by-module/index.jsx similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-split-by-module/index.jsx rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-split-by-module/index.jsx diff --git a/packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-split-by-module/rspeedy.config.ts b/packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-split-by-module/rspeedy.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/reactlynx/config-splitchunk-split-by-module/rspeedy.config.ts rename to packages/web-platform/web-core-e2e/tests/reactlynx/config-splitchunk-split-by-module/rspeedy.config.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/ssr-no-js.spec.ts b/packages/web-platform/web-core-e2e/tests/ssr-no-js.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/tests/ssr-no-js.spec.ts rename to packages/web-platform/web-core-e2e/tests/ssr-no-js.spec.ts diff --git a/packages/web-platform/web-core-wasm-e2e/tests/web-core.test.ts b/packages/web-platform/web-core-e2e/tests/web-core.test.ts similarity index 99% rename from packages/web-platform/web-core-wasm-e2e/tests/web-core.test.ts rename to packages/web-platform/web-core-e2e/tests/web-core.test.ts index 7e95a6c1d9..e5bfedba42 100644 --- a/packages/web-platform/web-core-wasm-e2e/tests/web-core.test.ts +++ b/packages/web-platform/web-core-e2e/tests/web-core.test.ts @@ -2,7 +2,7 @@ // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. import { test, expect } from '@lynx-js/playwright-fixtures'; -import type { LynxViewElement } from '@lynx-js/web-core-wasm/client'; +import type { LynxViewElement } from '@lynx-js/web-core/client'; import type { Page, Worker } from '@playwright/test'; declare global { diff --git a/packages/web-platform/web-core-wasm-e2e/tsconfig.json b/packages/web-platform/web-core-e2e/tsconfig.json similarity index 87% rename from packages/web-platform/web-core-wasm-e2e/tsconfig.json rename to packages/web-platform/web-core-e2e/tsconfig.json index 05e5fe0909..526808ea78 100644 --- a/packages/web-platform/web-core-wasm-e2e/tsconfig.json +++ b/packages/web-platform/web-core-e2e/tsconfig.json @@ -10,6 +10,6 @@ "./shell-project/**/*.ts", ], "references": [ - { "path": "../web-core-wasm" }, + { "path": "../web-core" }, ], } diff --git a/packages/web-platform/web-core-wasm-e2e/turbo.json b/packages/web-platform/web-core-e2e/turbo.json similarity index 100% rename from packages/web-platform/web-core-wasm-e2e/turbo.json rename to packages/web-platform/web-core-e2e/turbo.json diff --git a/packages/web-platform/web-core-wasm-e2e/vitest.config.ts b/packages/web-platform/web-core-e2e/vitest.config.ts similarity index 73% rename from packages/web-platform/web-core-wasm-e2e/vitest.config.ts rename to packages/web-platform/web-core-e2e/vitest.config.ts index f7944266d4..5bb2dde76d 100644 --- a/packages/web-platform/web-core-wasm-e2e/vitest.config.ts +++ b/packages/web-platform/web-core-e2e/vitest.config.ts @@ -5,13 +5,13 @@ import * as path from 'path'; export default defineConfig({ resolve: { alias: { - '@lynx-js/web-core-wasm/server': path.resolve( + '@lynx-js/web-core/server': path.resolve( __dirname, - '../web-core-wasm/ts/server/index.ts', + '../web-core/ts/server/index.ts', ), - '@lynx-js/web-core-wasm': path.resolve( + '@lynx-js/web-core': path.resolve( __dirname, - '../web-core-wasm/ts/client/index.ts', + '../web-core/ts/client/index.ts', ), }, }, diff --git a/packages/web-platform/web-core-wasm/CHANGELOG.md b/packages/web-platform/web-core-wasm/CHANGELOG.md deleted file mode 100644 index c38057c55d..0000000000 --- a/packages/web-platform/web-core-wasm/CHANGELOG.md +++ /dev/null @@ -1,50 +0,0 @@ -# @lynx-js/web-core-wasm - -## 0.0.6 - -### Patch Changes - -- reexports essential utils & types in @lynx-js/web-elements from @lynx-js/web-core-wasm/client ([#2321](https://github.com/lynx-family/lynx-stack/pull/2321)) - -- Updated dependencies []: - - @lynx-js/web-worker-rpc@0.19.9 - -## 0.0.5 - -### Patch Changes - -- Updated dependencies [[`4963907`](https://github.com/lynx-family/lynx-stack/commit/49639072a46399378ca7e1279eb8e8f2282d7bfe), [`8fd936a`](https://github.com/lynx-family/lynx-stack/commit/8fd936a47de753b53ecdd90968d96756d90ec552), [`0d41253`](https://github.com/lynx-family/lynx-stack/commit/0d412531665736acbfe4f052239cb9bfff997b58), [`d32c4c6`](https://github.com/lynx-family/lynx-stack/commit/d32c4c6fb5a583819b39da77fa41d8199de5e1b9), [`7518b72`](https://github.com/lynx-family/lynx-stack/commit/7518b729ca11861bb8c18565b8aa318f4e90dd42), [`fca9d4a`](https://github.com/lynx-family/lynx-stack/commit/fca9d4ab47ef033d66bfb32c12afc7a24250fd58)]: - - @lynx-js/web-elements@0.12.0 - -## 0.0.4 - -### Patch Changes - -- Refactor web element templates and server-side rendering logic ([#2205](https://github.com/lynx-family/lynx-stack/pull/2205)) - -- Updated dependencies [[`94e5779`](https://github.com/lynx-family/lynx-stack/commit/94e57796c39e9cab1f3790a1986aeacea6a7484e), [`9033e2d`](https://github.com/lynx-family/lynx-stack/commit/9033e2d6c7c0c2405ecbbf73446239dd65b4a177)]: - - @lynx-js/web-elements@0.11.3 - - @lynx-js/css-serializer@0.1.4 - -## 0.0.3 - -### Patch Changes - -- Updated dependencies [[`e0972ef`](https://github.com/lynx-family/lynx-stack/commit/e0972ef5e9651c3a42fff7512f139d515647ae94), [`3bc017e`](https://github.com/lynx-family/lynx-stack/commit/3bc017e8326f90faf4f75ba34986b2db7b285199), [`e2d349e`](https://github.com/lynx-family/lynx-stack/commit/e2d349e7de156a7edc4045ad14e4b93ed3176902), [`d924b6a`](https://github.com/lynx-family/lynx-stack/commit/d924b6a3bf3121ad45a62a832827aa39e634d5c3)]: - - @lynx-js/web-elements@0.11.2 - - @lynx-js/web-worker-rpc@0.19.8 - -## 0.0.2 - -### Patch Changes - -- Updated dependencies [[`43fc7e7`](https://github.com/lynx-family/lynx-stack/commit/43fc7e7f550a761ab94bdcd01a3eda9b93273279)]: - - @lynx-js/web-elements@0.11.1 - - @lynx-js/web-worker-rpc@0.19.7 - -## 0.0.1 - -### Patch Changes - -- Updated dependencies [[`f7133c1`](https://github.com/lynx-family/lynx-stack/commit/f7133c137f094063e991dfa0e993ea92177aa173)]: - - @lynx-js/web-worker-rpc@0.19.6 diff --git a/packages/web-platform/web-core-wasm/.gitignore b/packages/web-platform/web-core/.gitignore similarity index 100% rename from packages/web-platform/web-core-wasm/.gitignore rename to packages/web-platform/web-core/.gitignore diff --git a/packages/web-platform/web-core-wasm/AGENTS.md b/packages/web-platform/web-core/AGENTS.md similarity index 91% rename from packages/web-platform/web-core-wasm/AGENTS.md rename to packages/web-platform/web-core/AGENTS.md index 49eb41f866..471961afbd 100644 --- a/packages/web-platform/web-core-wasm/AGENTS.md +++ b/packages/web-platform/web-core/AGENTS.md @@ -1,10 +1,10 @@ # Web Core WASM -This package (`packages/web-platform/web-core-wasm`) is the high-performance core of the Lynx Web Platform, implemented primarily in Rust and compiled to WebAssembly (WASM). It handles computation-intensive tasks and facilitates the interaction between the Lynx runtime and the browser DOM. +This package (`packages/web-platform/web-core`) is the high-performance core of the Lynx Web Platform, implemented primarily in Rust and compiled to WebAssembly (WASM). It handles computation-intensive tasks and facilitates the interaction between the Lynx runtime and the browser DOM. ## Overview -The `web-core-wasm` package bridges the gap between Lynx's native-like architecture and the web platform. Its primary responsibilities include: +The `web-core` package bridges the gap between Lynx's native-like architecture and the web platform. Its primary responsibilities include: 1. **CSS Processing**: High-performance tokenization and transformation of Lynx-specific CSS (e.g., `rpx` units, `linear` layout) into standard Web CSS. 2. **Template Management**: efficient binary serialization (`encode`) and deserialization (`decode`) of style templates using `rkyv`. @@ -112,11 +112,11 @@ This package uses a hybrid build system involving `pnpm`, `rsbuild`, and `cargo` - **`tests/encode.spec.ts`**: Verifies that the CSS encoder correctly serializes various CSS rules. - **`tests/lazy-load.spec.ts`**: Ensures that custom elements are loaded dynamically only when needed. - **Rust Tests**: run `cargo test --all-features` and `cargo test --target wasm32-unknown-unknown --all-features` separately. -- **Server E2E Tests (`packages/web-platform/web-core-wasm-e2e`)**: - - Located in `packages/web-platform/web-core-wasm-e2e`. +- **Server E2E Tests (`packages/web-platform/web-core-e2e`)**: + - Located in `packages/web-platform/web-core-e2e`. - Uses `vitest` to run tests against the **built artifacts** (e.g., `dist/api-globalThis.web.bundle`). - Verifies server-side execution of templates using `executeTemplate` and isolated VM contexts. - - Run with `pnpm test` inside the `web-core-wasm-e2e` directory. + - Run with `pnpm test` inside the `web-core-e2e` directory. ## Guidelines for LLMs @@ -137,8 +137,8 @@ This package uses a hybrid build system involving `pnpm`, `rsbuild`, and `cargo` ### Rust (wasm32) - Run: cargo bench --target wasm32-unknown-unknown --all-features -- Bench entry: packages/web-platform/web-core-wasm/benches/wasm_bench.rs -- Bench helper module: packages/web-platform/web-core-wasm/benches/support/bench_support.rs +- Bench entry: packages/web-platform/web-core/benches/wasm_bench.rs +- Bench helper module: packages/web-platform/web-core/benches/support/bench_support.rs Notes: diff --git a/packages/web-platform/web-core/CHANGELOG.md b/packages/web-platform/web-core/CHANGELOG.md new file mode 100644 index 0000000000..b00b8eca3d --- /dev/null +++ b/packages/web-platform/web-core/CHANGELOG.md @@ -0,0 +1,1749 @@ +# @lynx-js/web-core + +## 0.19.8 + +### Patch Changes + +- reexports essential utils & types in @lynx-js/web-elements from @lynx-js/web-core-wasm/client ([#2321](https://github.com/lynx-family/lynx-stack/pull/2321)) + +- fix: avoid error when LynxView is removed immediately after connected ([#2182](https://github.com/lynx-family/lynx-stack/pull/2182)) + +- Updated dependencies []: + - @lynx-js/web-constants@0.19.8 + - @lynx-js/web-mainthread-apis@0.19.8 + - @lynx-js/web-worker-rpc@0.19.8 + - @lynx-js/web-worker-runtime@0.19.8 + +## 0.19.7 + +### Patch Changes + +- feat: add browser config of lynx-view, now you can customize the browser config of lynx-view: ([#2140](https://github.com/lynx-family/lynx-stack/pull/2140)) + + ``` + lynxView.browserConfig = { + pixelRatio: 1, + pixelWidth: 1234, + pixelHeight: 5678, + } + ``` + +- Updated dependencies []: + - @lynx-js/web-constants@0.19.7 + - @lynx-js/web-mainthread-apis@0.19.7 + - @lynx-js/web-worker-rpc@0.19.7 + - @lynx-js/web-worker-runtime@0.19.7 + +## 0.19.6 + +### Patch Changes + +- fix: avoid crash on CPUs that do not support SIMD ([#2133](https://github.com/lynx-family/lynx-stack/pull/2133)) + +- feat: support lynx.reload() ([#2127](https://github.com/lynx-family/lynx-stack/pull/2127)) + +- Updated dependencies [[`179f984`](https://github.com/lynx-family/lynx-stack/commit/179f9844adf00ff4b2cd450ffb943649441c87d3), [`f7133c1`](https://github.com/lynx-family/lynx-stack/commit/f7133c137f094063e991dfa0e993ea92177aa173), [`6c2b51a`](https://github.com/lynx-family/lynx-stack/commit/6c2b51a661ae244eb40671f63f29ee971e084ed4), [`556fe9f`](https://github.com/lynx-family/lynx-stack/commit/556fe9fded90945a7926093897288d5302c314d3), [`5b589ab`](https://github.com/lynx-family/lynx-stack/commit/5b589ab53b01a8e2357d3ccbb159edab004086d3)]: + - @lynx-js/web-constants@0.19.6 + - @lynx-js/web-mainthread-apis@0.19.6 + - @lynx-js/web-worker-rpc@0.19.6 + - @lynx-js/web-worker-runtime@0.19.6 + +## 0.19.5 + +### Patch Changes + +- fix: pixelWidth and pixelHeight use client instead of screen ([#2055](https://github.com/lynx-family/lynx-stack/pull/2055)) + +- Updated dependencies [[`a91173c`](https://github.com/lynx-family/lynx-stack/commit/a91173c986ce3f358f1c11c788ca46a0529c701d)]: + - @lynx-js/web-worker-rpc@0.19.5 + - @lynx-js/web-constants@0.19.5 + - @lynx-js/web-worker-runtime@0.19.5 + - @lynx-js/web-mainthread-apis@0.19.5 + +## 0.19.4 + +### Patch Changes + +- Updated dependencies [[`bba05e2`](https://github.com/lynx-family/lynx-stack/commit/bba05e2ed06cca8009ad415fd9777e8334a0887a)]: + - @lynx-js/web-worker-rpc@0.19.4 + - @lynx-js/web-constants@0.19.4 + - @lynx-js/web-worker-runtime@0.19.4 + - @lynx-js/web-mainthread-apis@0.19.4 + +## 0.19.3 + +### Patch Changes + +- Updated dependencies [[`986761d`](https://github.com/lynx-family/lynx-stack/commit/986761dd1e9e631f8118faec68188f29f78e9236)]: + - @lynx-js/web-worker-rpc@0.19.3 + - @lynx-js/web-constants@0.19.3 + - @lynx-js/web-worker-runtime@0.19.3 + - @lynx-js/web-mainthread-apis@0.19.3 + +## 0.19.2 + +### Patch Changes + +- chore: mark the "multi-thread" deprecated ([#2030](https://github.com/lynx-family/lynx-stack/pull/2030)) + + **NOTICE This will be a breaking change in the future** + + mark the thread strategy "multi-thread" as deprecated. + + Please use "all-on-ui" instead. If you still want to use multi-thread mode, please try to use a cross-origin isolated iframe. + + A console warning will be printed if `thread-strategy` is set to `multi-thread`. + +- fix csp issue for mts realm ([#1998](https://github.com/lynx-family/lynx-stack/pull/1998)) + +- Updated dependencies []: + - @lynx-js/web-constants@0.19.2 + - @lynx-js/web-mainthread-apis@0.19.2 + - @lynx-js/web-worker-rpc@0.19.2 + - @lynx-js/web-worker-runtime@0.19.2 + +## 0.19.1 + +### Patch Changes + +- fix: support CSP for mts ([#1994](https://github.com/lynx-family/lynx-stack/pull/1994)) + +- Updated dependencies [[`f7256d5`](https://github.com/lynx-family/lynx-stack/commit/f7256d5bd920b2f6c0cadab44455585c35621b35)]: + - @lynx-js/web-mainthread-apis@0.19.1 + - @lynx-js/web-worker-runtime@0.19.1 + - @lynx-js/web-constants@0.19.1 + - @lynx-js/web-worker-rpc@0.19.1 + +## 0.19.0 + +### Minor Changes + +- feat: new flex:val impl ([#1979](https://github.com/lynx-family/lynx-stack/pull/1979)) + +### Patch Changes + +- Updated dependencies [[`40c3a1a`](https://github.com/lynx-family/lynx-stack/commit/40c3a1a0436701e46b505301c4ba66a8f68de7c0), [`46bd5ee`](https://github.com/lynx-family/lynx-stack/commit/46bd5eea324d0c8348f44b3d0b437e745411ab5c)]: + - @lynx-js/web-mainthread-apis@0.19.0 + - @lynx-js/web-worker-runtime@0.19.0 + - @lynx-js/web-constants@0.19.0 + - @lynx-js/web-worker-rpc@0.19.0 + +## 0.18.4 + +### Patch Changes + +- feat: builtinTagTransformMap add `'x-input-ng': 'x-input'` ([#1932](https://github.com/lynx-family/lynx-stack/pull/1932)) + +- Updated dependencies []: + - @lynx-js/web-constants@0.18.4 + - @lynx-js/web-mainthread-apis@0.18.4 + - @lynx-js/web-worker-rpc@0.18.4 + - @lynx-js/web-worker-runtime@0.18.4 + +## 0.18.3 + +### Patch Changes + +- Updated dependencies [[`fece7d0`](https://github.com/lynx-family/lynx-stack/commit/fece7d0a92fa76948488373757a27dff52a90437), [`e1db63f`](https://github.com/lynx-family/lynx-stack/commit/e1db63fac8a351f98711b9b47acbb871f7a23701), [`ebc1a60`](https://github.com/lynx-family/lynx-stack/commit/ebc1a606318e9809e8a07457e18536b59be12a18)]: + - @lynx-js/web-mainthread-apis@0.18.3 + - @lynx-js/web-worker-runtime@0.18.3 + - @lynx-js/web-constants@0.18.3 + - @lynx-js/web-worker-rpc@0.18.3 + +## 0.18.2 + +### Patch Changes + +- feat: builtinTagTransformMap add `'input': 'x-input'` ([#1907](https://github.com/lynx-family/lynx-stack/pull/1907)) + +- Updated dependencies []: + - @lynx-js/web-constants@0.18.2 + - @lynx-js/web-mainthread-apis@0.18.2 + - @lynx-js/web-worker-rpc@0.18.2 + - @lynx-js/web-worker-runtime@0.18.2 + +## 0.18.1 + +### Patch Changes + +- fix: mts freeze after reload() ([#1892](https://github.com/lynx-family/lynx-stack/pull/1892)) + + The mts may be freezed after reload() called. + + We fixed it by waiting until the all-on-ui Javascript realm implementation, an iframe, to be fully loaded. + +- Updated dependencies [[`70a18fc`](https://github.com/lynx-family/lynx-stack/commit/70a18fce0083743e4516eefc91c0392d748b855f)]: + - @lynx-js/web-mainthread-apis@0.18.1 + - @lynx-js/web-worker-runtime@0.18.1 + - @lynx-js/web-constants@0.18.1 + - @lynx-js/web-worker-rpc@0.18.1 + +## 0.18.0 + +### Minor Changes + +- fix: ([#1837](https://github.com/lynx-family/lynx-stack/pull/1837)) + + 1. `LynxView.updateData()` cannot trigger `dataProcessor`. + + 2. **This is a break change:** The second parameter of `LynxView.updateData()` has been changed from `UpdateDataType` to `string`, which is the `processorName` (default is `default` which will use `defaultDataProcessor`). This change is to better align with Native. The current complete type is as follows: + + ```ts + LynxView.updateData(data: Cloneable, processorName?: string | undefined, callback?: (() => void) | undefined): void + ``` + +### Patch Changes + +- Updated dependencies [[`77397fd`](https://github.com/lynx-family/lynx-stack/commit/77397fd535cf60556f8f82f7ef8dae8a623d1625), [`7d90ed5`](https://github.com/lynx-family/lynx-stack/commit/7d90ed52a20fd7665a3517507800e7e29426f6f9)]: + - @lynx-js/web-worker-runtime@0.18.0 + - @lynx-js/web-constants@0.18.0 + - @lynx-js/web-mainthread-apis@0.18.0 + - @lynx-js/web-worker-rpc@0.18.0 + +## 0.17.2 + +### Patch Changes + +- feat: support load bts chunk from remote address ([#1834](https://github.com/lynx-family/lynx-stack/pull/1834)) + + - re-support chunk splitting + - support lynx.requireModule with a json file + - support lynx.requireModule, lynx.requireModuleAsync with a remote url + - support to add a breakpoint in chrome after reloading the web page + +- Updated dependencies [[`a35a245`](https://github.com/lynx-family/lynx-stack/commit/a35a2452e5355bda3c475f9a750a86085e0cf56a)]: + - @lynx-js/web-worker-runtime@0.17.2 + - @lynx-js/web-constants@0.17.2 + - @lynx-js/web-mainthread-apis@0.17.2 + - @lynx-js/web-worker-rpc@0.17.2 + +## 0.17.1 + +### Patch Changes + +- Updated dependencies []: + - @lynx-js/web-constants@0.17.1 + - @lynx-js/web-mainthread-apis@0.17.1 + - @lynx-js/web-worker-rpc@0.17.1 + - @lynx-js/web-worker-runtime@0.17.1 + +## 0.17.0 + +### Minor Changes + +- break(web): temporary remove support for chunk split ([#1739](https://github.com/lynx-family/lynx-stack/pull/1739)) + + Since the global variables cannot be accessed in the splited chunk, we temporary remove supporting for chunk spliting + + Developers could easily remove the chunk Split settings in Rspeedy for migration + + ``` + import { defineConfig } from '@lynx-js/rspeedy' + + export default defineConfig({ + performance: { + chunkSplit: { + strategy: 'all-in-one', + }, + }, + }) + ``` + +### Patch Changes + +- fix: lazy component load error ([#1794](https://github.com/lynx-family/lynx-stack/pull/1794)) + + Some special version template may have chunk loading error. We fixed it. + +- fix: avoid duplicate style transformation ([#1748](https://github.com/lynx-family/lynx-stack/pull/1748)) + + After this commit, we use DAG methods to handle the styleInfos + +- fix: add sandbox attribute to iframe for enhanced security ([#1709](https://github.com/lynx-family/lynx-stack/pull/1709)) + +- fix: the default template loader won't fetch twice for one url ([#1709](https://github.com/lynx-family/lynx-stack/pull/1709)) + +- Updated dependencies [[`721635d`](https://github.com/lynx-family/lynx-stack/commit/721635de6c1d2d617c7cbaa86e7d816c42d62930), [`93d707b`](https://github.com/lynx-family/lynx-stack/commit/93d707b82a59f7256952e21da6dcad2999f8233d), [`d150ed4`](https://github.com/lynx-family/lynx-stack/commit/d150ed440a4f1e9d9a3a2911adf6e6fa39a0c589)]: + - @lynx-js/web-mainthread-apis@0.17.0 + - @lynx-js/web-constants@0.17.0 + - @lynx-js/web-worker-runtime@0.17.0 + - @lynx-js/web-worker-rpc@0.17.0 + +## 0.16.1 + +### Patch Changes + +- refactor: improve chunk loading ([#1703](https://github.com/lynx-family/lynx-stack/pull/1703)) + +- feat: supports lazy bundle. (This feature requires `@lynx-js/lynx-core >= 0.1.3`) ([#1235](https://github.com/lynx-family/lynx-stack/pull/1235)) + +- Updated dependencies [[`608f375`](https://github.com/lynx-family/lynx-stack/commit/608f375e20732cc4c9f141bfbf9800ba6896100b)]: + - @lynx-js/web-mainthread-apis@0.16.1 + - @lynx-js/web-worker-runtime@0.16.1 + - @lynx-js/web-constants@0.16.1 + - @lynx-js/web-worker-rpc@0.16.1 + +## 0.16.0 + +### Minor Changes + +- refactor: provide the mts a real globalThis ([#1589](https://github.com/lynx-family/lynx-stack/pull/1589)) + + Before this change, We create a function wrapper and a fake globalThis for Javascript code. + + This caused some issues. + + After this change, we will create an iframe for createing an isolated Javascript context. + + This means the globalThis will be the real one. + +### Patch Changes + +- refactor: add `:not([l-e-name])` at the end of selector for lazy component ([#1622](https://github.com/lynx-family/lynx-stack/pull/1622)) + +- feat: remove multi-thread mts heating ([#1597](https://github.com/lynx-family/lynx-stack/pull/1597)) + + The default rendering mode is "all-on-ui". Therefore the preheating for "multi-thread" will be removed. + +- fix: the SystemInfo in bts should be assigned to the globalThis ([#1599](https://github.com/lynx-family/lynx-stack/pull/1599)) + +- Updated dependencies [[`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`bb53d9a`](https://github.com/lynx-family/lynx-stack/commit/bb53d9a035f607e7c89952098d4ed77877a2e3c1), [`1a32dd8`](https://github.com/lynx-family/lynx-stack/commit/1a32dd886fe736c95639f67028cf7685377d9769), [`c1f8715`](https://github.com/lynx-family/lynx-stack/commit/c1f8715a81b2e69ff46fc363013626db4468c209)]: + - @lynx-js/web-mainthread-apis@0.16.0 + - @lynx-js/web-constants@0.16.0 + - @lynx-js/web-worker-runtime@0.16.0 + - @lynx-js/offscreen-document@0.1.4 + - @lynx-js/web-worker-rpc@0.16.0 + +## 0.15.7 + +### Patch Changes + +- fix: fake uidisappear event ([#1539](https://github.com/lynx-family/lynx-stack/pull/1539)) + +- Updated dependencies [[`70863fb`](https://github.com/lynx-family/lynx-stack/commit/70863fbc311d8885ebda40855668097b0631f521)]: + - @lynx-js/web-mainthread-apis@0.15.7 + - @lynx-js/web-constants@0.15.7 + - @lynx-js/web-worker-runtime@0.15.7 + - @lynx-js/web-worker-rpc@0.15.7 + +## 0.15.6 + +### Patch Changes + +- fix: systeminfo in mts function ([#1537](https://github.com/lynx-family/lynx-stack/pull/1537)) + +- refactor: use utf-8 string ([#1473](https://github.com/lynx-family/lynx-stack/pull/1473)) + +- Fix mtsGlobalThis race condition in createRenderAllOnUI ([#1506](https://github.com/lynx-family/lynx-stack/pull/1506)) + +- Updated dependencies [[`405a917`](https://github.com/lynx-family/lynx-stack/commit/405a9170442ae32603b7687549b49ab4b34aff92), [`b8f89e2`](https://github.com/lynx-family/lynx-stack/commit/b8f89e25f106a15ba9d70f2df06dfb684cbb6633), [`f76aae9`](https://github.com/lynx-family/lynx-stack/commit/f76aae9ea06abdc7022ba508d22f9f4eb00864e8), [`b8b060b`](https://github.com/lynx-family/lynx-stack/commit/b8b060b9bef722bb47bd90c33fab3922160c711d), [`d8381a5`](https://github.com/lynx-family/lynx-stack/commit/d8381a58d12af6424cab4955617251e798bdc9f1), [`214898b`](https://github.com/lynx-family/lynx-stack/commit/214898bb9c74fc9b44e68cb220a4c02485102ce2), [`ab8cee4`](https://github.com/lynx-family/lynx-stack/commit/ab8cee4bab384fa905c045c4b4b93e5d4a95d57f)]: + - @lynx-js/web-mainthread-apis@0.15.6 + - @lynx-js/web-constants@0.15.6 + - @lynx-js/web-worker-runtime@0.15.6 + - @lynx-js/web-worker-rpc@0.15.6 + +## 0.15.5 + +### Patch Changes + +- fix: load main-thread chunk in ESM format ([#1437](https://github.com/lynx-family/lynx-stack/pull/1437)) + + See [nodejs/node#59362](https://github.com/nodejs/node/issues/59362) for more details. + +- feat: support path() for `createQuerySelector` ([#1456](https://github.com/lynx-family/lynx-stack/pull/1456)) + + - Added `getPathInfo` API to `NativeApp` and its cross-thread handler for retrieving the path from a DOM node to the root. + - Implemented endpoint and handler registration in both background and UI threads. + - Implemented `nativeApp.getPathInfo()` + +- fix: when `onNativeModulesCall` is delayed in mounting, the NativeModules execution result may be undefined. ([#1457](https://github.com/lynx-family/lynx-stack/pull/1457)) + +- fix: `onNativeModulesCall` && `onNapiModulesCall` use getter to get. ([#1466](https://github.com/lynx-family/lynx-stack/pull/1466)) + +- Updated dependencies [[`29434ae`](https://github.com/lynx-family/lynx-stack/commit/29434aec853f14242f521316429cf07a93b8c371), [`fb7096b`](https://github.com/lynx-family/lynx-stack/commit/fb7096bb3c79166cd619a407095b8206eccb7918)]: + - @lynx-js/web-mainthread-apis@0.15.5 + - @lynx-js/web-constants@0.15.5 + - @lynx-js/web-worker-runtime@0.15.5 + - @lynx-js/web-worker-rpc@0.15.5 + +## 0.15.4 + +### Patch Changes + +- feat: support `__ElementFromBinary` ([#1391](https://github.com/lynx-family/lynx-stack/pull/1391)) + +- fix: crash on chrome<96 ([#1361](https://github.com/lynx-family/lynx-stack/pull/1361)) + + https://github.com/wasm-bindgen/wasm-bindgen/issues/4211#issuecomment-2505965903 + + https://github.com/WebAssembly/binaryen/issues/7358 + + The rust toolchain enables WASM feature `reference types` by default. + + However this feature is not supported by chromium lower than version 96 + + Therefore we found a workaround for it. + + In this implementation we detect if browser supports `reference types` first. + + If user's browser supported it, we load the wasm file with `reference types` on, otherwise we load the wasm file with `reference types` off. + +- Updated dependencies [[`22ca433`](https://github.com/lynx-family/lynx-stack/commit/22ca433eb96b39724c6eb47ce0a938d291bbdef2), [`8645d12`](https://github.com/lynx-family/lynx-stack/commit/8645d1240ecb2005da52ab2ffeb10a5d08cc9cc2), [`143e481`](https://github.com/lynx-family/lynx-stack/commit/143e481b4353b3c3d2e8d9cc4f201442ca56f097)]: + - @lynx-js/web-mainthread-apis@0.15.4 + - @lynx-js/web-constants@0.15.4 + - @lynx-js/web-worker-runtime@0.15.4 + - @lynx-js/web-worker-rpc@0.15.4 + +## 0.15.3 + +### Patch Changes + +- fix: improve compatibility with legacy template ([#1337](https://github.com/lynx-family/lynx-stack/pull/1337)) + + avoid "object Object" error for old version rspeedy outputs + +- Updated dependencies [[`0da5ef0`](https://github.com/lynx-family/lynx-stack/commit/0da5ef03e41f20e9f8019c6dc03cb4a38ab18854)]: + - @lynx-js/web-constants@0.15.3 + - @lynx-js/web-mainthread-apis@0.15.3 + - @lynx-js/web-worker-runtime@0.15.3 + - @lynx-js/web-worker-rpc@0.15.3 + +## 0.15.2 + +### Patch Changes + +- feat: support SSR for all-on-ui ([#1029](https://github.com/lynx-family/lynx-stack/pull/1029)) + +- feat: move SSR hydrate essential info to the ssr attribute ([#1292](https://github.com/lynx-family/lynx-stack/pull/1292)) + + We found that in browser there is no simple tool to decode a base64 string + + Therefore we move the data to `ssr` attribute + + Also fix some ssr issues + +- feat: support \_\_MarkTemplateElement, \_\_MarkPartElement and \_\_GetTemplateParts for all-on-ui ([#1275](https://github.com/lynx-family/lynx-stack/pull/1275)) + +- feat: mark template elements for SSR and update part ID handling ([#1286](https://github.com/lynx-family/lynx-stack/pull/1286)) + +- Updated dependencies [[`cebda59`](https://github.com/lynx-family/lynx-stack/commit/cebda592ac5c7d152c877c2ac5ec403d477077e1), [`1443e46`](https://github.com/lynx-family/lynx-stack/commit/1443e468a353363e29aab0d90cd8b91c232a5525), [`5062128`](https://github.com/lynx-family/lynx-stack/commit/5062128c68e21abcf276ebcb40d7cc8f6e54244b), [`f656b7f`](https://github.com/lynx-family/lynx-stack/commit/f656b7f0d390d69c0da0d11a6c9b3f66ae877ac8)]: + - @lynx-js/web-mainthread-apis@0.15.2 + - @lynx-js/web-constants@0.15.2 + - @lynx-js/web-worker-runtime@0.15.2 + - @lynx-js/web-worker-rpc@0.15.2 + +## 0.15.1 + +### Patch Changes + +- Updated dependencies []: + - @lynx-js/web-mainthread-apis@0.15.1 + - @lynx-js/web-worker-runtime@0.15.1 + - @lynx-js/web-constants@0.15.1 + - @lynx-js/web-worker-rpc@0.15.1 + +## 0.15.0 + +### Minor Changes + +- refactor: move exposure system to web-core ([#1254](https://github.com/lynx-family/lynx-stack/pull/1254)) + + **THIS IS A BREAKING CHANGE** + + **You'll need to upgrade your @lynx-js/web-elements to >= 0.8.0** + + For SSR and better performance, we moved the lynx's exposure system from web-element to web-core. + + Before this commit, we create Intersection observers by creating HTMLElements. + + After this commit, we will create such Intersection observers after dom stabled. + + Also, the setInterval for exposure has been removed, now we use an on time lazy timer for such features. + +### Patch Changes + +- refactor: improve `linear-weight-sum` performance ([#1216](https://github.com/lynx-family/lynx-stack/pull/1216)) + +- feat: lynx-view error event adds a new parameter: `e.detail.fileName`, which will be determined by the file location where the error occurred, either `lepus.js` or `app-service.js`. ([#1242](https://github.com/lynx-family/lynx-stack/pull/1242)) + +- perf: use rust implemented style transformer ([#1094](https://github.com/lynx-family/lynx-stack/pull/1094)) + +- Updated dependencies [[`7b75469`](https://github.com/lynx-family/lynx-stack/commit/7b75469d05dd2ec78bf6e1e54b94c8dff938eb40), [`f54a7aa`](https://github.com/lynx-family/lynx-stack/commit/f54a7aa539ad56ccd1e7e1b49d7ee59e742fe493), [`224c653`](https://github.com/lynx-family/lynx-stack/commit/224c653f370d807281fa0a9ffbb4f4dd5c9d308e)]: + - @lynx-js/offscreen-document@0.1.3 + - @lynx-js/web-worker-runtime@0.15.0 + - @lynx-js/web-mainthread-apis@0.15.0 + - @lynx-js/web-constants@0.15.0 + - @lynx-js/web-worker-rpc@0.15.0 + +## 0.14.2 + +### Patch Changes + +- feat: merge multiple markTiming RPC communication events together and send them together, which can effectively reduce the number of RPC communications. ([#1178](https://github.com/lynx-family/lynx-stack/pull/1178)) + +- chore: extract shared logic from web-core and web-core-server's loadTemplate into a unified generateTemplate function ([#1211](https://github.com/lynx-family/lynx-stack/pull/1211)) + +- Updated dependencies [[`e44b146`](https://github.com/lynx-family/lynx-stack/commit/e44b146b1bc2b58c0347af7fb4e4157688e07e36), [`5a9b38b`](https://github.com/lynx-family/lynx-stack/commit/5a9b38b783e611aa9761c4cd52191172270c09c7), [`6ca5b91`](https://github.com/lynx-family/lynx-stack/commit/6ca5b9106aade393dfac88914b160960a61a82f2)]: + - @lynx-js/web-mainthread-apis@0.14.2 + - @lynx-js/web-worker-runtime@0.14.2 + - @lynx-js/web-constants@0.14.2 + - @lynx-js/web-worker-rpc@0.14.2 + +## 0.14.1 + +### Patch Changes + +- feat: support BTS API `lynx.reportError` && `__SetSourceMapRelease`, now you can use it and handle it in lynx-view error event. ([#1059](https://github.com/lynx-family/lynx-stack/pull/1059)) + +- fix: under the all-on-ui strategy, reload() will add two page elements. ([#1147](https://github.com/lynx-family/lynx-stack/pull/1147)) + +- Updated dependencies [[`a64333e`](https://github.com/lynx-family/lynx-stack/commit/a64333ef28228d6b90c32e027f67bef8acbd8432), [`7751375`](https://github.com/lynx-family/lynx-stack/commit/775137521782ca5445f22029c39163c0a63bbfa5), [`b52a924`](https://github.com/lynx-family/lynx-stack/commit/b52a924a2375cb6f7ebafdd8abfbab0254eb2330)]: + - @lynx-js/web-worker-runtime@0.14.1 + - @lynx-js/web-constants@0.14.1 + - @lynx-js/web-mainthread-apis@0.14.1 + - @lynx-js/web-worker-rpc@0.14.1 + +## 0.14.0 + +### Minor Changes + +- refactor: the default thread-strategy will be all on ui ([#1105](https://github.com/lynx-family/lynx-stack/pull/1105)) + + **This is a breaking change!!!** + +### Patch Changes + +- feat: add `_SetSourceMapRelease(errInfo)` MTS API. ([#1118](https://github.com/lynx-family/lynx-stack/pull/1118)) + + You can get `errInfo.release` through `e.detail.release` in the error event callback of lynx-view. + + The `_SetSourceMapRelease` function is not complete yet, because it is currently limited by the Web platform and some functions and some props such as `err.stack` do not need to be supported for the time being. + +- feat: add `_I18nResourceTranslation` api in mts && `init-i18n-resources` attr, `i18nResourceMissed` event of lynx-view. ([#1065](https://github.com/lynx-family/lynx-stack/pull/1065)) + + `init-i18n-resource` is the complete set of i18nResources that need to be maintained on the container side. Note: You need to pass this value when lynx-view is initialized. + + You can use `_I18nResourceTranslation` in MTS to get the corresponding i18nResource from `init-i18n-resources`. If it is undefined, the `i18nResourceMissed` event will be dispatched. + + ```js + // ui thread + lynxView.initI18nResources = [ + { + options: { + locale: 'en', + channel: '1', + fallback_url: '', + }, + resource: { + hello: 'hello', + lynx: 'lynx web platform1', + }, + }, + ]; + lynxView.addEventListener('i18nResourceMissed', (e) => { + console.log(e); + }); + + // mts + _I18nResourceTranslation({ + locale: 'en', + channel: '1', + fallback_url: '', + }); + ``` + +- fix: lynx-view `updateGlobalProps` method will also update globalProps, so `reload()` will use the latest updated globalProps. ([#1119](https://github.com/lynx-family/lynx-stack/pull/1119)) + +- feat: supports `lynx.getI18nResource()` and `onI18nResourceReady` event in bts. ([#1088](https://github.com/lynx-family/lynx-stack/pull/1088)) + + - `lynx.getI18nResource()` can be used to get i18nResource in bts, it has two data sources: + - the result of `_I18nResourceTranslation()` + - lynx-view `updateI18nResources(data: InitI18nResources, options: I18nResourceTranslationOptions)`, it will be matched to the correct i8nResource as a result of `lynx.getI18nResource()` + - `onI18nResourceReady` event can be used to listen `_I18nResourceTranslation` and lynx-view `updateI18nResources` execution. + +- refactor: make the opcode be a plain array ([#1051](https://github.com/lynx-family/lynx-stack/pull/1051)) + + #1042 + +- feat: The error event return value detail of lynx-view adds `sourceMap` value, the type is as follows: ([#1058](https://github.com/lynx-family/lynx-stack/pull/1058)) + + ``` + CustomEvent<{ + error: Error; + sourceMap: { + offset: { + line: number; + col: number; + }; + }; + }>; + ``` + + This is because web-core adds wrapper at runtime, which causes the stack offset to be different. Now you can calculate the real offset based on it. + +- feat: add `updateI18nResources` method of lynx-view. ([#1085](https://github.com/lynx-family/lynx-stack/pull/1085)) + + Now you can use `updateI18nResources` to update i18nResources, and then use \_I18nResourceTranslation() to get the updated result. + +- fix: --lynx-color will be removed, and if color contains `gradient` it will be processed as transparent. ([#1069](https://github.com/lynx-family/lynx-stack/pull/1069)) + +- Updated dependencies [[`42ed2e3`](https://github.com/lynx-family/lynx-stack/commit/42ed2e325ff38f781dc88b92cc56093a7a7164ea), [`25a04c9`](https://github.com/lynx-family/lynx-stack/commit/25a04c9e59f4b893227bdead74f2de69f6615cdb), [`0dbb8b1`](https://github.com/lynx-family/lynx-stack/commit/0dbb8b1f580d0700e2b67b92018a7a00d1494837), [`f99de1e`](https://github.com/lynx-family/lynx-stack/commit/f99de1ef60cc5a11eae4fd0acc70a490787d36c9), [`873a285`](https://github.com/lynx-family/lynx-stack/commit/873a2852fa3df9e32c48a6504160bb243540c7b9), [`afacb2c`](https://github.com/lynx-family/lynx-stack/commit/afacb2cbea7feca46c553651000625d0845b2b00), [`1861cbe`](https://github.com/lynx-family/lynx-stack/commit/1861cbead4b373e0511214999b0e100b6285fa9a)]: + - @lynx-js/web-worker-runtime@0.14.0 + - @lynx-js/web-mainthread-apis@0.14.0 + - @lynx-js/web-constants@0.14.0 + - @lynx-js/offscreen-document@0.1.2 + - @lynx-js/web-worker-rpc@0.14.0 + +## 0.13.5 + +### Patch Changes + +- refactor: move some internal status to dom's attribute ([#945](https://github.com/lynx-family/lynx-stack/pull/945)) + + It's essential for SSR + +- refactor: avoid to create many style element for cssog ([#1026](https://github.com/lynx-family/lynx-stack/pull/1026)) + +- refactor: move component config info to attribute ([#984](https://github.com/lynx-family/lynx-stack/pull/984)) + +- fix: ensure render starts after dom connected ([#1020](https://github.com/lynx-family/lynx-stack/pull/1020)) + +- refactor: save dataset on an attribute ([#981](https://github.com/lynx-family/lynx-stack/pull/981)) + + On lynx, the `data-*` attributes have different behaviors than the HTMLElement has. + + The dataset will be treated as properties, the key will not be applied the camel-case <-> hyphenate name transformation. + + Before this commit we use it as a runtime data, but after this commit we will use encodeURI(JSON.stringify(dataset)) to encode it as a string. + +- refactor: implement mts apis in closure pattern ([#1004](https://github.com/lynx-family/lynx-stack/pull/1004)) + +- Updated dependencies [[`70b82d2`](https://github.com/lynx-family/lynx-stack/commit/70b82d23744d6b6ec945dff9f8895ab3488ba4c8), [`5651e24`](https://github.com/lynx-family/lynx-stack/commit/5651e24827358963c3261252bcc53c2ad981c13e), [`9499ea9`](https://github.com/lynx-family/lynx-stack/commit/9499ea91debdf73b2d31af0b31bcbc216135543b), [`50f0193`](https://github.com/lynx-family/lynx-stack/commit/50f01933942268b697bf5abe790da86c932f1dfc), [`57bf0ef`](https://github.com/lynx-family/lynx-stack/commit/57bf0ef19f1d79bc52ab6a4f0cd2939e7901d98b), [`5651e24`](https://github.com/lynx-family/lynx-stack/commit/5651e24827358963c3261252bcc53c2ad981c13e), [`0525fbf`](https://github.com/lynx-family/lynx-stack/commit/0525fbf38baa7a977a7a8c66e8a4d8bf34cc3b68), [`b6b87fd`](https://github.com/lynx-family/lynx-stack/commit/b6b87fd11dbc76c28f3b5022aa8c6afeb773d90f), [`c014327`](https://github.com/lynx-family/lynx-stack/commit/c014327ad0cf599b32d4182d95116b46c35f5fa5)]: + - @lynx-js/web-mainthread-apis@0.13.5 + - @lynx-js/web-constants@0.13.5 + - @lynx-js/offscreen-document@0.1.1 + - @lynx-js/web-worker-runtime@0.13.5 + - @lynx-js/web-worker-rpc@0.13.5 + +## 0.13.4 + +### Patch Changes + +- feat: lynx-view supports `updateGlobalProps` method, which can be used to update lynx.\_\_globalProps ([#918](https://github.com/lynx-family/lynx-stack/pull/918)) + +- feat: supports `lynx.getElementById()` && `animate()`. ([#912](https://github.com/lynx-family/lynx-stack/pull/912)) + + After this commit, you can use `lynx.getElementById()` to get the element by id, and use `element.animate()` to animate the element. + +- Updated dependencies [[`96d3133`](https://github.com/lynx-family/lynx-stack/commit/96d3133b149b61af01c5478f4dc7b0a071137d98), [`75e5b2f`](https://github.com/lynx-family/lynx-stack/commit/75e5b2ff16ecf5f7072a45cd130e653dee747461), [`569618d`](https://github.com/lynx-family/lynx-stack/commit/569618d8e2665f5c9e1672f7ee5900ec2a5179a2), [`f9f88d6`](https://github.com/lynx-family/lynx-stack/commit/f9f88d6fb9c42d3370a6622d9d799d671ffcf1a7)]: + - @lynx-js/web-mainthread-apis@0.13.4 + - @lynx-js/offscreen-document@0.1.0 + - @lynx-js/web-worker-runtime@0.13.4 + - @lynx-js/web-constants@0.13.4 + - @lynx-js/web-worker-rpc@0.13.4 + +## 0.13.3 + +### Patch Changes + +- refactor: code clean ([#897](https://github.com/lynx-family/lynx-stack/pull/897)) + + rename many internal apis to make logic be clear: + + multi-thread: startMainWorker -> prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) + all-on-ui: prepareMainThreadAPIs -> startMainThread -> createMainThreadContext(new MainThreadRuntime) + +- perf: improve dom operation performance ([#881](https://github.com/lynx-family/lynx-stack/pull/881)) + + - code clean for offscreen-document, cut down inheritance levels + - add `appendChild` method for OffscreenElement, improve performance for append one node + - bypass some JS getter for dumping SSR string + +- fix: worker not released when backgroundWorkerContextCount != 1 ([#845](https://github.com/lynx-family/lynx-stack/pull/845)) + +- Updated dependencies [[`bb1f9d8`](https://github.com/lynx-family/lynx-stack/commit/bb1f9d845ef2395a0508666701409972e159389d), [`b6e27da`](https://github.com/lynx-family/lynx-stack/commit/b6e27daf865b0627b1c3238228a4fdf65ad87ee3), [`3d716d7`](https://github.com/lynx-family/lynx-stack/commit/3d716d79ae053b225e9bac2bbb036c968f5261e7)]: + - @lynx-js/offscreen-document@0.0.4 + - @lynx-js/web-mainthread-apis@0.13.3 + - @lynx-js/web-worker-runtime@0.13.3 + - @lynx-js/web-constants@0.13.3 + - @lynx-js/web-worker-rpc@0.13.3 + +## 0.13.2 + +### Patch Changes + +- feat: allow lynx code to get JS engine provided properties on globalThis ([#786](https://github.com/lynx-family/lynx-stack/pull/786)) + + ``` + globalThis.Reflect; // this will be the Reflect Object + ``` + + Note that `assigning to the globalThis` is still not allowed. + +- perf: use v8 hint for generated javascript file ([#807](https://github.com/lynx-family/lynx-stack/pull/807)) + + https://v8.dev/blog/explicit-compile-hints + +- feat: add new property `inject-style-rules` for LynxView ([#785](https://github.com/lynx-family/lynx-stack/pull/785)) + + This property allows developer to inject some style rules into the shadowroot. + + It's a wrapper of https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule + +- fix: corrupt mainthread module cache ([#806](https://github.com/lynx-family/lynx-stack/pull/806)) + +- Updated dependencies [[`03a5f64`](https://github.com/lynx-family/lynx-stack/commit/03a5f64d7d09e38903f5d1c022f36f6e68b6432d), [`6d3d852`](https://github.com/lynx-family/lynx-stack/commit/6d3d8529d0d528419920102ca52da279bbe0f1e0), [`8cdd288`](https://github.com/lynx-family/lynx-stack/commit/8cdd28884288b9456aee3a919d6edbf72da1c67b), [`6d3d852`](https://github.com/lynx-family/lynx-stack/commit/6d3d8529d0d528419920102ca52da279bbe0f1e0)]: + - @lynx-js/web-mainthread-apis@0.13.2 + - @lynx-js/web-worker-runtime@0.13.2 + - @lynx-js/web-constants@0.13.2 + - @lynx-js/offscreen-document@0.0.3 + - @lynx-js/web-worker-rpc@0.13.2 + +## 0.13.1 + +### Patch Changes + +- fix: some inline style properties cause crash ([#647](https://github.com/lynx-family/lynx-stack/pull/647)) + + add support for the following css properties + + - mask + - mask-repeat + - mask-position + - mask-clip + - mask-origin + - mask-size + - gap + - column-gap + - row-gap + - image-rendering + - hyphens + - offset-path + - offset-distance + +- feat: support touch events for MTS ([#641](https://github.com/lynx-family/lynx-stack/pull/641)) + + now we support + + - main-thread:bindtouchstart + - main-thread:bindtouchend + - main-thread:bindtouchmove + - main-thread:bindtouchcancel + +- feat: add SystemInfo.screenWidth and SystemInfo.screenHeight ([#641](https://github.com/lynx-family/lynx-stack/pull/641)) + +- Updated dependencies [[`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91), [`9ad394e`](https://github.com/lynx-family/lynx-stack/commit/9ad394ea9ef28688a3b810b4051868b2a28eb7de), [`f4cfb70`](https://github.com/lynx-family/lynx-stack/commit/f4cfb70606d46cd4017254c326095432f9c6bcb8), [`c9ccad6`](https://github.com/lynx-family/lynx-stack/commit/c9ccad6b574c98121149d3e9d4a9a7e97af63d91), [`839d61c`](https://github.com/lynx-family/lynx-stack/commit/839d61c8a329ed1e265fe2edc12a702e9592f743)]: + - @lynx-js/offscreen-document@0.0.2 + - @lynx-js/web-mainthread-apis@0.13.1 + - @lynx-js/web-worker-runtime@0.13.1 + - @lynx-js/web-constants@0.13.1 + - @lynx-js/web-worker-rpc@0.13.1 + +## 0.13.0 + +### Patch Changes + +- refactor: isolate SystemInfo ([#628](https://github.com/lynx-family/lynx-stack/pull/628)) + + Never assign `SystemInfo` on worker's self object. + +- feat: support thread strategy `all-on-ui` ([#625](https://github.com/lynx-family/lynx-stack/pull/625)) + + ```html + + ``` + + This will make the lynx's main-thread run on the UA's main thread. + + Note that the `all-on-ui` does not support the HMR & chunk splitting yet. + +- fix(web): css selector not work for selectors with combinator and pseudo-class on WEB ([#608](https://github.com/lynx-family/lynx-stack/pull/608)) + + like `.parent > :not([hidden]) ~ :not([hidden])` + + you will need to upgrade your `react-rsbuild-plugin` to fix this issue + +- Updated dependencies [[`4ee0465`](https://github.com/lynx-family/lynx-stack/commit/4ee0465f6e5846a0d038b49d2a7c95e87c9e5c77), [`74b5bd1`](https://github.com/lynx-family/lynx-stack/commit/74b5bd15339b70107a7c42525494da46e8f8f6bd), [`06bb78a`](https://github.com/lynx-family/lynx-stack/commit/06bb78a6b93d4a7be7177a6269dd4337852ce90d), [`5a3d9af`](https://github.com/lynx-family/lynx-stack/commit/5a3d9afe52ba639987db124ca35580261e0718b5), [`5269cab`](https://github.com/lynx-family/lynx-stack/commit/5269cabef7609159bdd0dd14a03c5da667907424), [`74b5bd1`](https://github.com/lynx-family/lynx-stack/commit/74b5bd15339b70107a7c42525494da46e8f8f6bd), [`2b069f8`](https://github.com/lynx-family/lynx-stack/commit/2b069f8786c95bdb9ac1f35091f05f7fd3b52225)]: + - @lynx-js/web-mainthread-apis@0.13.0 + - @lynx-js/web-worker-runtime@0.13.0 + - @lynx-js/web-constants@0.13.0 + - @lynx-js/offscreen-document@0.0.1 + - @lynx-js/web-worker-rpc@0.13.0 + +## 0.12.0 + +### Minor Changes + +- feat: improve compatibility for chrome 108 & support linear-gradient for nested x-text ([#590](https://github.com/lynx-family/lynx-stack/pull/590)) + + **This is a breaking change** + + - Please upgrade your `@lynx-js/web-elements` to >=0.6.0 + - Please upgrade your `@lynx-js/web-core` to >=0.12.0 + - The compiled lynx template json won't be impacted. + + On chrome 108, the `-webkit-background-clip:text` cannot be computed by a `var(--css-var-value-text)` + + Therefore we move the logic into style transformation logic. + + Now the following status is supported + + ``` + + + + + ``` + +### Patch Changes + +- feat: allow user to implement custom template load function ([#587](https://github.com/lynx-family/lynx-stack/pull/587)) + + ```js + lynxView.customTemplateLoader = (url) => { + return (await (await fetch(url, { + method: 'GET', + })).json()); + }; + ``` + +- feat: support mts event with target methods ([#564](https://github.com/lynx-family/lynx-stack/pull/564)) + + After this commit, developers are allowed to invoke `event.target.setStyleProperty` in mts handler + +- fix: crash on removing a id attribute ([#582](https://github.com/lynx-family/lynx-stack/pull/582)) + +- Updated dependencies [[`f1ca29b`](https://github.com/lynx-family/lynx-stack/commit/f1ca29bd766377dd46583f15e1e75bca447699cd)]: + - @lynx-js/web-worker-runtime@0.12.0 + - @lynx-js/web-constants@0.12.0 + - @lynx-js/web-worker-rpc@0.12.0 + +## 0.11.0 + +### Minor Changes + +- feat: upgrade @lynx-js/lynx-core to 0.1.2 ([#465](https://github.com/lynx-family/lynx-stack/pull/465)) + + refactor some internal logic + + - \_\_OnLifeCycleEvent + - \_\_OnNativeAppReady + +### Patch Changes + +- feat: support mts event handler (1/n) ([#495](https://github.com/lynx-family/lynx-stack/pull/495)) + + now the main-thread:bind handler could be invoked. The params of the handler will be implemented later. + +- feat: allow multi lynx-view to share bts worker ([#520](https://github.com/lynx-family/lynx-stack/pull/520)) + + Now we allow users to enable so-called "shared-context" feature on the Web Platform. + + Similar to the same feature for Lynx iOS/Android, this feature let multi lynx cards to share one js context. + + The `lynx.getSharedData` and `lynx.setSharedData` are also supported in this commit. + + To enable this feature, set property `lynxGroupId` or attribute `lynx-group-id` before a lynx-view starts rendering. Those card with same context id will share one web worker for the bts scripts. + +- perf: dispatchLynxViewEventEndpoint is a void call ([#506](https://github.com/lynx-family/lynx-stack/pull/506)) + +- Updated dependencies [[`ea42e62`](https://github.com/lynx-family/lynx-stack/commit/ea42e62fbcd5c743132c3e6e7c4851770742d544), [`a0f5ca4`](https://github.com/lynx-family/lynx-stack/commit/a0f5ca4ea0895ccbaa6aa63f449f53a677a1cf73)]: + - @lynx-js/web-worker-runtime@0.11.0 + - @lynx-js/web-constants@0.11.0 + - @lynx-js/web-worker-rpc@0.11.0 + +## 0.10.1 + +### Patch Changes + +- docs: fix documents about lynx-view's properties ([#412](https://github.com/lynx-family/lynx-stack/pull/412)) + + Attributes should be hyphen-name: 'init-data', 'global-props'. + + now all properties has corresponding attributes. + +- feat: onNapiModulesCall function add new param: `dispatchNapiModules`, napiModulesMap val add new param: `handleDispatch`. ([#414](https://github.com/lynx-family/lynx-stack/pull/414)) + + Now you can use them to actively communicate to napiModules (background thread) in onNapiModulesCall (ui thread). + +- Updated dependencies [[`1af3b60`](https://github.com/lynx-family/lynx-stack/commit/1af3b6052ab27f98bf0e4d1b0ec9f7d9e88e0afc)]: + - @lynx-js/web-constants@0.10.1 + - @lynx-js/web-worker-runtime@0.10.1 + - @lynx-js/web-worker-rpc@0.10.1 + +## 0.10.0 + +### Minor Changes + +- feat: rewrite the main thread Element PAPIs ([#343](https://github.com/lynx-family/lynx-stack/pull/343)) + + In this commit we've rewritten the main thread apis. + + The most highlighted change is that + + - Before this commit we send events directly to bts + - After this change, we send events to mts then send them to bts with some data combined. + +### Patch Changes + +- refactor: timing system ([#378](https://github.com/lynx-family/lynx-stack/pull/378)) + + Now we moved the timing system to the background thread. + +- feat: support `defaultOverflowVisible` config ([#406](https://github.com/lynx-family/lynx-stack/pull/406)) + +- fix(web): rsbuild will bundle 2 exactly same chunk for two same `new Worker` stmt ([#372](https://github.com/lynx-family/lynx-stack/pull/372)) + + the bundle size will be optimized about 28.2KB + +- fix: inline style will be removed for value number `0` ([#368](https://github.com/lynx-family/lynx-stack/pull/368)) + + the inline style value could be incorrectly removed for number value `0`; + + For example, `flex-shrink:0` may be ignored. + +- feat: The onNapiModulesCall function of lynx-view provides the fourth parameter: `lynxView`, which is the actual lynx-view DOM. ([#350](https://github.com/lynx-family/lynx-stack/pull/350)) + +- fix: publicComponentEvent args order ([#401](https://github.com/lynx-family/lynx-stack/pull/401)) + +- Updated dependencies [[`3a8dabd`](https://github.com/lynx-family/lynx-stack/commit/3a8dabd877084c15db1404c912dd8a19c7a0fc59), [`a521759`](https://github.com/lynx-family/lynx-stack/commit/a5217592f5aebea4b17860e729d523ecabb5f691), [`890c6c5`](https://github.com/lynx-family/lynx-stack/commit/890c6c51470c82104abb1049681f55e5d97cf9d6)]: + - @lynx-js/web-worker-runtime@0.10.0 + - @lynx-js/web-constants@0.10.0 + - @lynx-js/web-worker-rpc@0.10.0 + +## 0.9.1 + +### Patch Changes + +- feat: remove extra div #lynx-view-root ([#311](https://github.com/lynx-family/lynx-stack/pull/311)) + + In this commit we've re-implemented the lynx-view's auto-size. Now we use the `contain:content` instead of `resizeObserver`. + +- Updated dependencies []: + - @lynx-js/web-constants@0.9.1 + - @lynx-js/web-worker-rpc@0.9.1 + - @lynx-js/web-worker-runtime@0.9.1 + +## 0.9.0 + +### Minor Changes + +- feat: `nativeModulesUrl` of lynx-view is changed to `nativeModulesMap`, and the usage is completely aligned with `napiModulesMap`. ([#220](https://github.com/lynx-family/lynx-stack/pull/220)) + + "warning: This is a breaking change." + + `nativeModulesMap` will be a map: key is module-name, value should be a esm url which export default a + function with two parameters(you never need to use `this`): + + - `NativeModules`: oriented `NativeModules`, which you can use to call + other Native-Modules. + + - `NativeModulesCall`: trigger `onNativeModulesCall`, same as the deprecated `this.nativeModulesCall`. + + example: + + ```js + const nativeModulesMap = { + CustomModule: URL.createObjectURL( + new Blob( + [ + `export default function(NativeModules, NativeModulesCall) { + return { + async getColor(data, callback) { + const color = await NativeModulesCall('getColor', data); + callback(color); + }, + } + };`, + ], + { type: 'text/javascript' }, + ), + ), + }; + lynxView.nativeModulesMap = nativeModulesMap; + ``` + + In addition, we will use Promise.all to load `nativeModules`, which will optimize performance in the case of multiple modules. + +- refractor: remove entryId concept ([#217](https://github.com/lynx-family/lynx-stack/pull/217)) + + After the PR #198 + All contents are isolated by a shadowroot. + Therefore we don't need to add the entryId selector to avoid the lynx-view's style taking effect on the whole page. + +### Patch Changes + +- refactor: code clean ([#266](https://github.com/lynx-family/lynx-stack/pull/266)) + +- refactor: clean the decodeOperations implementation ([#261](https://github.com/lynx-family/lynx-stack/pull/261)) + +- fix: When the width and height of lynx-view are not auto, the width and height of the `lynx-tag="page"` need to be correctly set to 100%. ([#228](https://github.com/lynx-family/lynx-stack/pull/228)) + +- refactor: remove customelement defined detecting logic ([#247](https://github.com/lynx-family/lynx-stack/pull/247)) + + Before this commit, for those element with tag without `-`, we always try to detect if the `x-${tagName}` is defined. + + After this commit, we pre-define a map(could be override by the `overrideLynxTagToHTMLTagMap`) to make that transformation for tag name. + + This change is a path to SSR and the MTS support. + +- fix: 'error' event for main-thread \_reportError ([#283](https://github.com/lynx-family/lynx-stack/pull/283)) + +- Updated dependencies [[`5b5e090`](https://github.com/lynx-family/lynx-stack/commit/5b5e090fdf0e896f1c38a49bf3ed9889117c4fb8), [`b844e75`](https://github.com/lynx-family/lynx-stack/commit/b844e751f566d924256365d37aec4c86c520ec00), [`53230f0`](https://github.com/lynx-family/lynx-stack/commit/53230f012216f3a627853e11d544e4be175c5b9b), [`6f16827`](https://github.com/lynx-family/lynx-stack/commit/6f16827d1f4d7364870d354fc805a8868c110f1e), [`d2d55ef`](https://github.com/lynx-family/lynx-stack/commit/d2d55ef9fe438c35921d9db0daa40d5228822ecc)]: + - @lynx-js/web-worker-runtime@0.9.0 + - @lynx-js/web-constants@0.9.0 + - @lynx-js/web-worker-rpc@0.9.0 + +## 0.8.0 + +### Minor Changes + +- refactor: remove web-elements/lazy and loadNewTag ([#123](https://github.com/lynx-family/lynx-stack/pull/123)) + + - remove @lynx-js/web-elements/lazy + - remove loadElement + - remove loadNewTag callback + + **This is a breaking change** + + Now we removed the default lazy loading preinstalled in web-core + + Please add the following statement in your web project + + ``` + import "@lynx-js/web-elements/all"; + ``` + +- feat: use shadowroot to isolate one lynx-view ([#198](https://github.com/lynx-family/lynx-stack/pull/198)) + + Before this commit, we have been detecting if current browser supports the `@scope` rule. + This allows us to scope one lynx-view's styles. + + After this commit we always create a shadowroot to scope then. + + Also for the new shadowroot pattern, we add a new **attribute** `inject-head-links`. + By default, we will iterate all `` in the ``, and use `@import url()` to import them inside the shadowroot. + Developers could add a `inject-head-links="false"` to disable this behavior. + +- feat: never add the x-enable-xx-event attributes ([#157](https://github.com/lynx-family/lynx-stack/pull/157)) + + After this commit, we update the reqirement of the version of `@lynx-js/web-elements` to `>=0.3.1` + +### Patch Changes + +- feat: add pixelRatio of SystemInfo, now you can use `SystemInfo.pixelRatio`. ([#150](https://github.com/lynx-family/lynx-stack/pull/150)) + +- Improve LynxView resize observer cleanup ([#124](https://github.com/lynx-family/lynx-stack/pull/124)) + +- feat: add two prop of lynx-view about `napiLoader`: ([#173](https://github.com/lynx-family/lynx-stack/pull/173)) + + - `napiModulesMap`: [optional] the napiModule which is called in lynx-core. key is module-name, value is esm url. + + - `onNapiModulesCall`: [optional] the NapiModule value handler. + + **Warning:** This is the internal implementation of `@lynx-js/lynx-core`. In most cases, this API is not required for projects. + + 1. The `napiModulesMap` value should be a esm url which export default a function with two parameters: + + - `NapiModules`: oriented `napiModulesMap`, which you can use to call other Napi-Modules + + - `NapiModulesCall`: trigger `onNapiModulesCall` + + example: + + ```js + const color_environment = URL.createObjectURL( + new Blob( + [ + `export default function(NapiModules, NapiModulesCall) { + return { + getColor() { + NapiModules.color_methods.getColor({ color: 'green' }, color => { + console.log(color); + }); + }, + ColorEngine: class ColorEngine { + getColor(name) { + NapiModules.color_methods.getColor({ color: 'green' }, color => { + console.log(color); + }); + } + }, + }; + };`, + ], + { type: 'text/javascript' }, + ), + ); + + const color_methods = URL.createObjectURL( + new Blob( + [ + `export default function(NapiModules, NapiModulesCall) { + return { + async getColor(data, callback) { + const color = await NapiModulesCall('getColor', data); + callback(color); + }, + }; + };`, + ], + { type: 'text/javascript' }, + ), + ); + + lynxView.napiModuleMap = { + color_environment: color_environment, + color_methods: color_methods, + }; + ``` + + 2. The `onNapiModulesCall` function has three parameters: + + - `name`: the first parameter of `NapiModulesCall`, the function name + - `data`: the second parameter of `NapiModulesCall`, data + - `moduleName`: the module-name of the called napi-module + + ```js + lynxView.onNapiModulesCall = (name, data, moduleName) => { + if (name === 'getColor' && moduleName === 'color_methods') { + return data.color; + } + }; + ``` + +- Updated dependencies [[`eab1328`](https://github.com/lynx-family/lynx-stack/commit/eab1328a83797fc903255c984d9f39537b9138b9), [`e9e8370`](https://github.com/lynx-family/lynx-stack/commit/e9e8370e070a50cbf65a4ebc46c2e37ea1e0be40), [`ec4e1ce`](https://github.com/lynx-family/lynx-stack/commit/ec4e1ce0d7612d6c0701792a46c78cd52130bad4), [`f0a717c`](https://github.com/lynx-family/lynx-stack/commit/f0a717c630700e16ab0af7f1fe370fd60ac75b30)]: + - @lynx-js/web-worker-runtime@0.8.0 + - @lynx-js/web-constants@0.8.0 + - @lynx-js/web-worker-rpc@0.8.0 + +## 0.7.1 + +### Patch Changes + +- Support NPM provenance. ([#30](https://github.com/lynx-family/lynx-stack/pull/30)) + +- fix: some valus should be updateable by global scope ([#130](https://github.com/lynx-family/lynx-stack/pull/130)) + + Now we add an allowlist to allow some identifiers could be updated by globalThis. + + For those values in the allowlist: + + ``` + globalThis.foo = 'xx'; + console.log(foo); //'xx' + ``` + +- refactor: isolate the globalThis in mts ([#90](https://github.com/lynx-family/lynx-stack/pull/90)) + + After this commit, developers' mts code won't be able to access the globalThis + + The following usage will NOT work + + ``` + globalThis.foo = () =>{}; + foo();//crash + ``` + +- refractor: improve some internal logic for element creating in MTS ([#71](https://github.com/lynx-family/lynx-stack/pull/71)) + +- Updated dependencies [[`c617453`](https://github.com/lynx-family/lynx-stack/commit/c617453aea967aba702967deb2916b5c883f03bb), [`2044571`](https://github.com/lynx-family/lynx-stack/commit/204457166531dae6e9f653db56b14187553b7666), [`7da7601`](https://github.com/lynx-family/lynx-stack/commit/7da7601f00407970c485046ad73eeb8534aaa4f6)]: + - @lynx-js/web-worker-runtime@0.7.1 + - @lynx-js/web-worker-rpc@0.7.1 + - @lynx-js/web-constants@0.7.1 + +## 0.7.0 + +### Minor Changes + +- 1abf8f0: feat(web): + + **This is a breaking change** + + 1. A new param for `lynx-view`: `nativeModulesUrl`, which allows you to pass an esm url to add a new module to `NativeModules`. And we bind the `nativeModulesCall` method to each function on the module, run `this.nativeModulesCall()` to trigger onNativeModulesCall. + + ```typescript + export type NativeModuleHandlerContext = { + nativeModulesCall: (name: string, data: Cloneable) => Promise; + }; + ``` + + a simple case: + + ```js + lynxView.nativeModules = URL.createObjectURL( + new Blob( + [ + `export default { + myNativeModules: { + async getColor(data, callback) { + // trigger onNativeModulesCall and get the result + const color = await this.nativeModulesCall('getColor', data); + // return the result to caller + callback(color); + }, + } + };`, + ], + { type: 'text/javascript' }, + ), + ); + ``` + + 2. `onNativeModulesCall` is no longer the value handler of `NativeModules.bridge.call`, it will be the value handler of all `NativeModules` modules. + + **Warning: This is a breaking change.** + + Before this commit, you listen to `NativeModules.bridge.call('getColor')` like this: + + ```js + lynxView.onNativeModulesCall = (name, data, callback) => { + if (name === 'getColor') { + callback(data.color); + } + }; + ``` + + Now you should use it like this: + + ```js + lynxView.onNativeModulesCall = (name, data, moduleName) => { + if (name === 'getColor' && moduleName === 'bridge') { + return data.color; + } + }; + ``` + + You need to use `moduleName` to determine the NativeModules-module. And you don’t need to run callback, just return the result! + +### Patch Changes + +- Updated dependencies [1abf8f0] + - @lynx-js/web-worker-runtime@0.7.0 + - @lynx-js/web-constants@0.7.0 + - @lynx-js/web-worker-rpc@0.7.0 + +## 0.6.2 + +### Patch Changes + +- 15381ca: fix: the 'page' should have default style width:100%; height:100%; +- 0412db0: fix: The runtime wrapper parameter name is changed from `runtime` to `lynx_runtime`. + + This is because some project logic may use `runtime`, which may cause duplication of declarations. + +- 2738fdc: feat: support linear-direction +- Updated dependencies [0412db0] +- Updated dependencies [085b99e] + - @lynx-js/web-constants@0.6.2 + - @lynx-js/web-worker-runtime@0.6.2 + - @lynx-js/web-worker-rpc@0.6.2 + +## 0.6.1 + +### Patch Changes + +- 9c25c3d: feat: support synchronously chunk loading + + now the `lynx.requireModule` is available in bts. + +- Updated dependencies [62b7841] + - @lynx-js/web-worker-runtime@0.6.1 + - @lynx-js/web-constants@0.6.1 + - @lynx-js/web-worker-rpc@0.6.1 + +## 0.6.0 + +### Minor Changes + +- e406d69: refractor: update output json format + + **This is a breaking change** + + Before this change the style info is dump in Javascript code. + + After this change the style info will be pure JSON data. + + Now we're using the css-serializer tool's output only. If you're using plugins for it, now they're enabled. + +### Patch Changes + +- bfae2ab: feat: We will only preheat the mainThreadWorker now, and the backgroundWorker will be created when renderPage is called, which can save some memory. + + Before this change, We will preheat two workers: mainThreadWorker and backgroundWorker. + +- b80e2bb: feat: add reload() method +- Updated dependencies [e406d69] + - @lynx-js/web-worker-runtime@0.6.0 + - @lynx-js/web-constants@0.6.0 + - @lynx-js/web-worker-rpc@0.6.0 + +## 0.5.1 + +### Patch Changes + +- c49b1fb: feat: updateData api needs to have the correct format, now you can pass a callback. +- ee340da: feat: add SystemInfo.platform as 'web'. now you can use `SystemInfo.platform`. +- b5ef20e: feat: updateData should also call `updatePage` in main-thread. +- Updated dependencies [c49b1fb] +- Updated dependencies [ee340da] +- Updated dependencies [b5ef20e] + - @lynx-js/web-constants@0.5.1 + - @lynx-js/web-worker-runtime@0.5.1 + - @lynx-js/web-worker-rpc@0.5.1 + +## 0.5.0 + +### Minor Changes + +- 7b84edf: feat: introduce new output chunk format + + **This is a breaking change** + + After this commit, we new introduce a new output format for web platform. + + This new output file is a JSON file, includes all essential info. + + Now we'll add the chunk global scope wrapper on runtime, this will help us to provide a better backward compatibility. + + Also we have a intergrated output file cache for one session. + + Now your `output.filename` will work. + + The split-chunk feature has been temporary removed until the rspeedy team supports this feature for us. + +### Patch Changes + +- 3050faf: refractor: housekeeping +- dc6216c: feat: add selectComponent of nativeApp +- 5eaa052: refractor: unifiying worker runtime +- Updated dependencies [04607bd] +- Updated dependencies [3050faf] +- Updated dependencies [7b84edf] +- Updated dependencies [e0f0793] + - @lynx-js/web-worker-rpc@0.5.0 + - @lynx-js/web-worker-runtime@0.5.0 + - @lynx-js/web-constants@0.5.0 + +## 0.4.2 + +### Patch Changes + +- 958efda: feat(web): bundle background.js into main-thread.js for web + + To enable this feature: + + 1. set the performance.chunkSplit.strategy to `all-in-one` + 2. use the `mode:'production'` to build + + The output will be only one file. + +- 283e6bd: fix: invoke callback should be called after invoke && the correct callback params should be passed to callback function. + + Before this commit the invoke() success and fail callback function was be called. + +- 8d583f5: refactor: organize internal dependencies +- 8cd3f65: feat: add triggerComponentEvent of NativeApp. +- 38f21e4: fix: avoid card freezing on the background.js starts too fast + + if the background thread starts too fast, Reactlynx runtime will assign an lazy handler first and then replace it by the real handler. + + Before this commit we cannot handle such "replace" operation for cross-threading call. + + Now we fix this issue + +- 8714140: fix(web): check and assign globalThis property of nativeTTObject +- 7c3c2a1: feat: support `sendGlobalEvent` method. + + Now developers can do this: + + ```javascript + const lynxView = createLynxView(configs); + lynxView.sendGlobalEvent(eventName, params); + ``` + +- 168b4fa: feat: rename CloneableObject to Cloneable, Now its type refers to a structure that can be cloned; CloneableObject type is added, which only refers to object types that can be cloned. +- Updated dependencies [8d583f5] +- Updated dependencies [38f21e4] +- Updated dependencies [168b4fa] + - @lynx-js/web-worker-rpc@0.4.2 + - @lynx-js/web-constants@0.4.2 + - @lynx-js/web-mainthread-apis@0.4.2 + +## 0.4.1 + +### Patch Changes + +- 2a49a42: fix(web): gen 2nd parameter for updateData +- 084eb17: feat: At any time, a worker is reserved for preheating subsequent cards. +- d3eac58: fix(web): refractor worker terminate system +- de2f62b: fix(web): performance doesn't handle main-thread timings correctly +- e72aae0: feat(web): support onNativeAppReady +- 27c0e6e: feat(web): infer the cssId if parent component unique id is set + + ``` + (The following info is provided for DSL maintainers) + + - the 'infer' operation only happens on fiber element creating, changing the parent's cssId, changing children's parent component unique id will cause an issue + - __SetCSSId will be called for setting inferred cssId value. Runtime could use the same `__SetCSSId` to overwrite this value. + - cssId: `0` will be treated as an void value + ``` + +- 500057e: fix: `__GetElementUniqueID` return -1 for illegal param + + (Only DSL developers need to care this) + +- Updated dependencies [27c0e6e] +- Updated dependencies [500057e] + - @lynx-js/web-mainthread-apis@0.4.1 + - @lynx-js/web-constants@0.4.1 + +## 0.4.0 + +### Minor Changes + +- a3c39d6: fix: enableRemoveCSSScope:false with descendant combinator does not work + + **THIS IS A BREAKING CHANGE** + + Before this commit, we will add a [lynx-css-id=""] selector at the beginning of all selector, like this + + ```css + [lynx-css-id="12345"].bg-pink { + background-color: pink; + } + ``` + + However, for selector with descendant combinator, this will cause an issue + + ```css + [lynx-css-id="12345"].light .bg-pink { + background-color: pink; + } + ``` + + What we actually want is + + ```css + .light .bg-pink[lynx-css-id="12345"] { + background-color: pink; + } + ``` + + After this commit, we changed the data structor of the styleinfo which bundled into the main-thread.js. + This allows us to add class selectors at the begining of selector and the end of plain selector(before the pseudo part). + + **THIS IS A BREAKING CHANGE** + + After this version, you will need to upgrade the version of @lynx-js/web-core^0.4.0 + +- 2dd0aef: feat: support performance apis for lynx + + - support `nativeApp.generatePipelineOptions` + - support `nativeApp.onPipelineStart` + - support `nativeApp.markPipelineTiming` + - support `nativeApp.bindPipelineIdWithTimingFlag` + + for lynx developers, the following apis are now supported + + - `lynx.performance.addTimingListener` + - `__lynx_timing_flag` attribute + + for lynx-view container developers + + - `mainChunkReady` event has been removed + - add a new `timing` event + +### Patch Changes + +- 3123b86: fix(web): do not use @scope for safari for enableCSSSelector:false + + We this there is a bug in webkit. + +- 585d55a: feat(web): support animation-_ and transition-_ event + + Now we will append the correct `event.params` property for animation events and transition events + + - @lynx-js/web-constants@0.4.0 + - @lynx-js/web-mainthread-apis@0.4.0 + +## 0.3.1 + +### Patch Changes + +- 9f2ad5e: feat: add worker name for debug + + before this commit, all web workers will be named as `main-thread` or `worker-thread` + + now we name based on it's entryId + +- 583c003: fix: + + 1. custom-element pre-check before define to avoid duplicate registration. + + 2. make sure @lynx-js/lynx-core is bundled into @lynx-js/web-core. + +- 61a7014: refractor: migrate to publishEvent +- c3726e8: feat: pre heat the worker runtime at the very beginning + + We cecently found that the worker booting takes some time. + + Here we boot the first 2 workers for the first lynx-view. + + This will help use to improve performance + + - @lynx-js/web-constants@0.3.1 + - @lynx-js/web-mainthread-apis@0.3.1 + +## 0.3.0 + +### Minor Changes + +- 267c935: feat: make cardType could be configurable +- f44c589: feat: support exports field of the lynx-core + +### Patch Changes + +- 884e31c: fix: bind lazy rpc handlers +- 6e873bc: fix: incorrect parent component id value on publishComponentEvent +- Updated dependencies [d255d24] +- Updated dependencies [6e873bc] +- Updated dependencies [267c935] + - @lynx-js/web-mainthread-apis@0.3.0 + - @lynx-js/web-constants@0.3.0 + +## 0.2.0 + +### Minor Changes + +- 32d47c4: chore: upgrate dep version of web-core + +### Patch Changes + +- 272db24: refractor: the main-thread worker will be dedicated for every lynx view + - @lynx-js/web-constants@0.2.0 + - @lynx-js/web-mainthread-apis@0.2.0 + +## 0.1.0 + +### Minor Changes + +- 78638dc: feat: support invokeUIMethod and setNativeProps +- 06fe3cd: feat: support splitchunk and lynx.requireModuleAsync + + - support splitchunk option of rspeedy + - add implementation for lynx.requireModuleAsync for both main-thread and background-thread + - mark worker `ready` after \_OnLifeCycleEvent is assigned + + close #96 + +- fe0d06f: feat: add onError callback to `LynxCard` + + The onError callback is a wrapper of the ElementAPI `_reportError`. + + This allows the externel caller to detect errors. + +- 66ce343: feat: support config `defaultDisplayLinear` +- c43f436: feat: add `dispose()` method for lynxview +- 068f677: feat: suppport createSelectorQuery +- 3547621: feat(web): use `` to replace `
` +- d551d81: feat: support customSection + + - support lynx.getCustomSection + - support lynx.getCustomSectionSync + +- f1ddb5a: feat: never need to pass background entry url +- b323923: feat(web): support **ReplaceElement, **CreateImage, \_\_CreateScrollView +- 3a370ab: feat: support global identifier `lynxCoreInject` and `SystemInfo` +- 23e6fa5: feat(web): support enableCSSSelector:false + + We will extract all selectors with single class selector and rules in a Json object. + + These classes will be applied on runtime. + + **About enableCSSSelector:false** + + This flag changes the behaviour of cascading. It provide a way to do this + + ```jsx + ; + ``` + + The class-b will override (cascading) styles of class-a. + +- 39cf3ae: feat: improve performance for supporting linear layout + + Before this commit, we'll use `getComputedStyle()` to find out if a dom is a linear container. + + After this commit, we'll use the css variable cyclic toggle pattern and `@container style()` + + This feature requires **Chrome 111, Safari 18**. + + We'll provide a fallback implementation for firefox and legacy browsers. + + After this commit, your `flex-direction`, `flex-shrink`, `flex`, `flex-grow`, `flex-basis` will be transformed to a css variable expression. + +- 2973ba5: feat: move lynx main-thread to web worker + + Move The Mainthread of Lynx to a web worker. + + This helps the performance. + +- 6327fa8: feat(web): add support for \_\_CreateWrapperElement +- 2047658: feat: support exposure system + + support the following APIs: + + - lynx.stopExposure({sendEvent?:boolean}) + - lynx.resumeExposure() + - GlobalEvent: 'exposure' + - GlobalEvent: 'disexposure' + - uiappear event + - uidisappear event + +- 269bf61: feat: support rspeedy layer model and support sharing chunk between main and background +- c95430c: feat: support `updateData` + + Now developers can do this: + + ```javascript + const lynxView = createLynxView(configs); + lynxView.updateData(newData); + ``` + +- 29f24aa: feat(web): support removeCSSScope:false + + - add element api `__SetCSSId` + - add new WebpackPlugin `@lynx-js/web-webpack-plugin` + - add support for removeCSSSCope + - pass all configs via thie \*.lepus.js + - support to scope styles of lynx card for browsers do not support `@scope` and nesting + +- 216ed68: feat: add a new element + + ``` + * @param {string} url [required] The url of the entry of your Lynx card + * @param {Cloneable} globalProps [optional] The globalProps value of this Lynx card + * @param {Cloneable} initData [optional] The initial data of this Lynx card + * @param {Record} overrideLynxTagToHTMLTagMap [optional] use this property/attribute to override the lynx tag -> html tag map + * @param {NativeModulesCallHandler} onNativeModulesCall [optional] the NativeModules.bridge.call value handler. Arguments will be cached before this property is assigned. + * + * @property entryId the currently Lynx view entryId. + * + * @event error lynx card fired an error + * @event mainchunkready performance event. All mainthread chunks are ready + ``` + + - HTML Exmaple + + Note that you should declarae the size of lynx-view + + ```html + + + ``` + + - React 19 Example + + ```jsx + + + ``` + +- f8d1d98: feat: allow custom elements to be lazy loaded + + After this commit, we'll allow developer to define custom elements lazy. + + A new api `onElementLoad` will be added to the `LynxCard`. + + Once a new element is creating, it will be called with the tag name. + + There is also a simple way to use this feature + + ```javascript + import { LynxCard } from '@lynx-js/web-core'; + import { loadElement } from '@lynx-js/web-elements/lazy'; + import '@lynx-js/web-elements/index.css'; + import '@lynx-js/web-core/index.css'; + import './index.css'; + + const lynxcard = new LynxCard({ + ...beforeConfigs, + onElementLoad: loadElement, + }); + ``` + +- 906e894: feat(web): support dataset & \_\_AddDataset +- 6e003e8: feat(web): support linear layout and add tests +- 2b85d73: feat(web): support Nativemodules.bridge.call +- 0fc1826: feat(web): add \_\_CreateListElement Element API + +### Patch Changes + +- 238df71: fix(web): fix bugs of Elements + includes: + **AddClass, + **ReplaceElements, + **GetElementUniqueID, + **GetConfig, + **GetChildren, + **FlushElementTree, + \_\_SetInlineStyles +- 32952fb: chore: bump target to esnext +- f900b75: refactor: do not use inline style to apply css-in-js styles + + Now you will see your css-in-js styles applied under a `[lynx-unique-id=""]` selector. + +- 9c23659: fix(web): \_\_SetAttribute allows the value to be null +- d3acc7b: fix: we should call \_\_FlushElementTree after renderPage +- 314cb44: fix(web): x-textarea replace blur,focus with lynxblur,lynxfocus. +- e170052: chore: remove tslib + + We provide ESNext output for this lib. + +- Updated dependencies [987da15] +- Updated dependencies [3e66349] +- Updated dependencies [2b7a4fe] +- Updated dependencies [461d965] +- Updated dependencies [2973ba5] +- Updated dependencies [7ee0dc1] +- Updated dependencies [7c752d9] +- Updated dependencies [29e4684] +- Updated dependencies [068f677] +- Updated dependencies [3547621] +- Updated dependencies [bed4f24] +- Updated dependencies [33691cd] +- Updated dependencies [2047658] +- Updated dependencies [b323923] +- Updated dependencies [39cf3ae] +- Updated dependencies [2973ba5] +- Updated dependencies [917e496] +- Updated dependencies [532380d] +- Updated dependencies [a41965d] +- Updated dependencies [f900b75] +- Updated dependencies [2e0a780] +- Updated dependencies [a7a222b] +- Updated dependencies [f8d1d98] +- Updated dependencies [c04669b] +- Updated dependencies [81be6cf] +- Updated dependencies [f8d1d98] +- Updated dependencies [5018d8f] +- Updated dependencies [c0a482a] +- Updated dependencies [314cb44] +- Updated dependencies [8c6eeb9] +- Updated dependencies [c43f436] +- Updated dependencies [67a70ac] +- Updated dependencies [e0854a8] +- Updated dependencies [e170052] +- Updated dependencies [e86bba0] +- Updated dependencies [1fe49a2] +- Updated dependencies [f0a50b6] + - @lynx-js/web-elements@0.1.0 + - @lynx-js/web-constants@0.1.0 + - @lynx-js/lynx-core@0.0.1 + - @lynx-js/web-mainthread-apis@0.1.0 diff --git a/packages/web-platform/web-core-wasm/Cargo.toml b/packages/web-platform/web-core/Cargo.toml similarity index 96% rename from packages/web-platform/web-core-wasm/Cargo.toml rename to packages/web-platform/web-core/Cargo.toml index d611f6377f..c6ad51ac8b 100644 --- a/packages/web-platform/web-core-wasm/Cargo.toml +++ b/packages/web-platform/web-core/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "web-core-wasm" +name = "web-core" version = "0.0.0" edition = "2021" diff --git a/packages/web-platform/web-core-wasm/LICENSE.txt b/packages/web-platform/web-core/LICENSE.txt similarity index 100% rename from packages/web-platform/web-core-wasm/LICENSE.txt rename to packages/web-platform/web-core/LICENSE.txt diff --git a/packages/web-platform/web-core-wasm/Notice.txt b/packages/web-platform/web-core/Notice.txt similarity index 100% rename from packages/web-platform/web-core-wasm/Notice.txt rename to packages/web-platform/web-core/Notice.txt diff --git a/packages/web-platform/web-core-wasm/README.md b/packages/web-platform/web-core/README.md similarity index 100% rename from packages/web-platform/web-core-wasm/README.md rename to packages/web-platform/web-core/README.md diff --git a/packages/web-platform/web-core-wasm/benches/wasm_bench.rs b/packages/web-platform/web-core/benches/wasm_bench.rs similarity index 99% rename from packages/web-platform/web-core-wasm/benches/wasm_bench.rs rename to packages/web-platform/web-core/benches/wasm_bench.rs index a7965c82a9..1cb2bd3833 100644 --- a/packages/web-platform/web-core-wasm/benches/wasm_bench.rs +++ b/packages/web-platform/web-core/benches/wasm_bench.rs @@ -2,8 +2,8 @@ use wasm_bindgen_test::{wasm_bindgen_bench, wasm_bindgen_test_configure, Criterion}; -use web_core_wasm::css_tokenizer::tokenize::{self, Parser}; -use web_core_wasm::{ +use web_core::css_tokenizer::tokenize::{self, Parser}; +use web_core::{ Generator, RawStyleInfo, Rule, RulePrelude, Selector, StyleInfoDecoder, StyleTransformer, }; diff --git a/packages/web-platform/web-core-wasm/binary/client/client.d.ts b/packages/web-platform/web-core/binary/client/client.d.ts similarity index 100% rename from packages/web-platform/web-core-wasm/binary/client/client.d.ts rename to packages/web-platform/web-core/binary/client/client.d.ts diff --git a/packages/web-platform/web-core-wasm/binary/client/client_bg.wasm.d.ts b/packages/web-platform/web-core/binary/client/client_bg.wasm.d.ts similarity index 100% rename from packages/web-platform/web-core-wasm/binary/client/client_bg.wasm.d.ts rename to packages/web-platform/web-core/binary/client/client_bg.wasm.d.ts diff --git a/packages/web-platform/web-core-wasm/binary/encode/encode.d.ts b/packages/web-platform/web-core/binary/encode/encode.d.ts similarity index 100% rename from packages/web-platform/web-core-wasm/binary/encode/encode.d.ts rename to packages/web-platform/web-core/binary/encode/encode.d.ts diff --git a/packages/web-platform/web-core-wasm/binary/encode/encode_bg.wasm.d.ts b/packages/web-platform/web-core/binary/encode/encode_bg.wasm.d.ts similarity index 100% rename from packages/web-platform/web-core-wasm/binary/encode/encode_bg.wasm.d.ts rename to packages/web-platform/web-core/binary/encode/encode_bg.wasm.d.ts diff --git a/packages/web-platform/web-core-wasm/binary/server/server.d.ts b/packages/web-platform/web-core/binary/server/server.d.ts similarity index 100% rename from packages/web-platform/web-core-wasm/binary/server/server.d.ts rename to packages/web-platform/web-core/binary/server/server.d.ts diff --git a/packages/web-platform/web-core-wasm/binary/server/server_bg.wasm.d.ts b/packages/web-platform/web-core/binary/server/server_bg.wasm.d.ts similarity index 100% rename from packages/web-platform/web-core-wasm/binary/server/server_bg.wasm.d.ts rename to packages/web-platform/web-core/binary/server/server_bg.wasm.d.ts diff --git a/packages/web-platform/web-core-wasm/css/in_shadow.css b/packages/web-platform/web-core/css/in_shadow.css similarity index 100% rename from packages/web-platform/web-core-wasm/css/in_shadow.css rename to packages/web-platform/web-core/css/in_shadow.css diff --git a/packages/web-platform/web-core-wasm/css/index.css b/packages/web-platform/web-core/css/index.css similarity index 100% rename from packages/web-platform/web-core-wasm/css/index.css rename to packages/web-platform/web-core/css/index.css diff --git a/packages/web-platform/web-core-wasm/eslint.config.js b/packages/web-platform/web-core/eslint.config.js similarity index 100% rename from packages/web-platform/web-core-wasm/eslint.config.js rename to packages/web-platform/web-core/eslint.config.js diff --git a/packages/web-platform/web-core-wasm/package.json b/packages/web-platform/web-core/package.json similarity index 95% rename from packages/web-platform/web-core-wasm/package.json rename to packages/web-platform/web-core/package.json index afd125c8a5..1c562893c5 100644 --- a/packages/web-platform/web-core-wasm/package.json +++ b/packages/web-platform/web-core/package.json @@ -1,11 +1,11 @@ { - "name": "@lynx-js/web-core-wasm", - "version": "0.0.6", + "name": "@lynx-js/web-core", + "version": "0.19.8", "description": "This is an internal experimental package, do not use", "repository": { "type": "git", "url": "https://github.com/lynx-family/lynx-stack.git", - "directory": "packages/web-platform/web-core-wasm" + "directory": "packages/web-platform/web-core" }, "license": "Apache-2.0", "sideEffects": true, diff --git a/packages/web-platform/web-core-wasm/rsbuild.config.ts b/packages/web-platform/web-core/rsbuild.config.ts similarity index 100% rename from packages/web-platform/web-core-wasm/rsbuild.config.ts rename to packages/web-platform/web-core/rsbuild.config.ts diff --git a/packages/web-platform/web-core-wasm/scripts/build.js b/packages/web-platform/web-core/scripts/build.js similarity index 98% rename from packages/web-platform/web-core-wasm/scripts/build.js rename to packages/web-platform/web-core/scripts/build.js index e32e9524e8..6c0a48f746 100644 --- a/packages/web-platform/web-core-wasm/scripts/build.js +++ b/packages/web-platform/web-core/scripts/build.js @@ -12,7 +12,7 @@ const cargoOutput = path.join( 'target', 'wasm32-unknown-unknown', 'release', - 'web_core_wasm.wasm', + 'web_core.wasm', ); const cargoOutputDebug = path.join( '..', @@ -21,7 +21,7 @@ const cargoOutputDebug = path.join( 'target', 'wasm32-unknown-unknown', 'debug', - 'web_core_wasm.wasm', + 'web_core.wasm', ); // build the standard wasm package diff --git a/packages/web-platform/web-core-wasm/scripts/dotslash-config.json b/packages/web-platform/web-core/scripts/dotslash-config.json similarity index 100% rename from packages/web-platform/web-core-wasm/scripts/dotslash-config.json rename to packages/web-platform/web-core/scripts/dotslash-config.json diff --git a/packages/web-platform/web-core-wasm/scripts/wasm-bindgen b/packages/web-platform/web-core/scripts/wasm-bindgen similarity index 100% rename from packages/web-platform/web-core-wasm/scripts/wasm-bindgen rename to packages/web-platform/web-core/scripts/wasm-bindgen diff --git a/packages/web-platform/web-core-wasm/src/constants.rs b/packages/web-platform/web-core/src/constants.rs similarity index 96% rename from packages/web-platform/web-core-wasm/src/constants.rs rename to packages/web-platform/web-core/src/constants.rs index 59dff99f24..1ace97c68d 100644 --- a/packages/web-platform/web-core-wasm/src/constants.rs +++ b/packages/web-platform/web-core/src/constants.rs @@ -40,8 +40,8 @@ lazy_static::lazy_static! { ); /** - * See packages/web-platform/web-core-wasm/ts/client/webElementsDynamicLoader.ts - * This is a replica of the map in packages/web-platform/web-core-wasm/ts/constants.ts + * See packages/web-platform/web-core/ts/client/webElementsDynamicLoader.ts + * This is a replica of the map in packages/web-platform/web-core/ts/constants.ts */ pub static ref LYNX_TAG_TO_DYNAMIC_LOAD_TAG_ID: FnvHashMap<&'static str, usize> = FnvHashMap::from_iter(vec![ ("list", 0), diff --git a/packages/web-platform/web-core-wasm/src/css_tokenizer/LICENSE b/packages/web-platform/web-core/src/css_tokenizer/LICENSE similarity index 100% rename from packages/web-platform/web-core-wasm/src/css_tokenizer/LICENSE rename to packages/web-platform/web-core/src/css_tokenizer/LICENSE diff --git a/packages/web-platform/web-core-wasm/src/css_tokenizer/char_code_definitions.rs b/packages/web-platform/web-core/src/css_tokenizer/char_code_definitions.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/css_tokenizer/char_code_definitions.rs rename to packages/web-platform/web-core/src/css_tokenizer/char_code_definitions.rs diff --git a/packages/web-platform/web-core-wasm/src/css_tokenizer/mod.rs b/packages/web-platform/web-core/src/css_tokenizer/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/css_tokenizer/mod.rs rename to packages/web-platform/web-core/src/css_tokenizer/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/css_tokenizer/token_types.rs b/packages/web-platform/web-core/src/css_tokenizer/token_types.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/css_tokenizer/token_types.rs rename to packages/web-platform/web-core/src/css_tokenizer/token_types.rs diff --git a/packages/web-platform/web-core-wasm/src/css_tokenizer/tokenize.rs b/packages/web-platform/web-core/src/css_tokenizer/tokenize.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/css_tokenizer/tokenize.rs rename to packages/web-platform/web-core/src/css_tokenizer/tokenize.rs diff --git a/packages/web-platform/web-core-wasm/src/css_tokenizer/utils.rs b/packages/web-platform/web-core/src/css_tokenizer/utils.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/css_tokenizer/utils.rs rename to packages/web-platform/web-core/src/css_tokenizer/utils.rs diff --git a/packages/web-platform/web-core-wasm/src/js_binding/mod.rs b/packages/web-platform/web-core/src/js_binding/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/js_binding/mod.rs rename to packages/web-platform/web-core/src/js_binding/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/js_binding/mts_js_binding.rs b/packages/web-platform/web-core/src/js_binding/mts_js_binding.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/js_binding/mts_js_binding.rs rename to packages/web-platform/web-core/src/js_binding/mts_js_binding.rs diff --git a/packages/web-platform/web-core-wasm/src/lib.rs b/packages/web-platform/web-core/src/lib.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/lib.rs rename to packages/web-platform/web-core/src/lib.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/component_apis.rs b/packages/web-platform/web-core/src/main_thread/client/element_apis/component_apis.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/component_apis.rs rename to packages/web-platform/web-core/src/main_thread/client/element_apis/component_apis.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/dataset_apis.rs b/packages/web-platform/web-core/src/main_thread/client/element_apis/dataset_apis.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/dataset_apis.rs rename to packages/web-platform/web-core/src/main_thread/client/element_apis/dataset_apis.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/event_apis.rs b/packages/web-platform/web-core/src/main_thread/client/element_apis/event_apis.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/event_apis.rs rename to packages/web-platform/web-core/src/main_thread/client/element_apis/event_apis.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/mod.rs b/packages/web-platform/web-core/src/main_thread/client/element_apis/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/mod.rs rename to packages/web-platform/web-core/src/main_thread/client/element_apis/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/style_apis.rs b/packages/web-platform/web-core/src/main_thread/client/element_apis/style_apis.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/client/element_apis/style_apis.rs rename to packages/web-platform/web-core/src/main_thread/client/element_apis/style_apis.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/client/main_thread_context.rs b/packages/web-platform/web-core/src/main_thread/client/main_thread_context.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/client/main_thread_context.rs rename to packages/web-platform/web-core/src/main_thread/client/main_thread_context.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/client/mod.rs b/packages/web-platform/web-core/src/main_thread/client/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/client/mod.rs rename to packages/web-platform/web-core/src/main_thread/client/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/client/style_manager.rs b/packages/web-platform/web-core/src/main_thread/client/style_manager.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/client/style_manager.rs rename to packages/web-platform/web-core/src/main_thread/client/style_manager.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/element_data.rs b/packages/web-platform/web-core/src/main_thread/element_data.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/element_data.rs rename to packages/web-platform/web-core/src/main_thread/element_data.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/mod.rs b/packages/web-platform/web-core/src/main_thread/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/mod.rs rename to packages/web-platform/web-core/src/main_thread/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/server/main_thread_server_context.rs b/packages/web-platform/web-core/src/main_thread/server/main_thread_server_context.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/server/main_thread_server_context.rs rename to packages/web-platform/web-core/src/main_thread/server/main_thread_server_context.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/server/mod.rs b/packages/web-platform/web-core/src/main_thread/server/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/server/mod.rs rename to packages/web-platform/web-core/src/main_thread/server/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/main_thread/server/style_manager_server.rs b/packages/web-platform/web-core/src/main_thread/server/style_manager_server.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/main_thread/server/style_manager_server.rs rename to packages/web-platform/web-core/src/main_thread/server/style_manager_server.rs diff --git a/packages/web-platform/web-core-wasm/src/style_transformer/inline_style.rs b/packages/web-platform/web-core/src/style_transformer/inline_style.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/style_transformer/inline_style.rs rename to packages/web-platform/web-core/src/style_transformer/inline_style.rs diff --git a/packages/web-platform/web-core-wasm/src/style_transformer/mod.rs b/packages/web-platform/web-core/src/style_transformer/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/style_transformer/mod.rs rename to packages/web-platform/web-core/src/style_transformer/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/style_transformer/rules.rs b/packages/web-platform/web-core/src/style_transformer/rules.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/style_transformer/rules.rs rename to packages/web-platform/web-core/src/style_transformer/rules.rs diff --git a/packages/web-platform/web-core-wasm/src/style_transformer/token_transformer.rs b/packages/web-platform/web-core/src/style_transformer/token_transformer.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/style_transformer/token_transformer.rs rename to packages/web-platform/web-core/src/style_transformer/token_transformer.rs diff --git a/packages/web-platform/web-core-wasm/src/style_transformer/transformer.rs b/packages/web-platform/web-core/src/style_transformer/transformer.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/style_transformer/transformer.rs rename to packages/web-platform/web-core/src/style_transformer/transformer.rs diff --git a/packages/web-platform/web-core-wasm/src/template/mod.rs b/packages/web-platform/web-core/src/template/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/mod.rs rename to packages/web-platform/web-core/src/template/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/template/template_sections/mod.rs b/packages/web-platform/web-core/src/template/template_sections/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/template_sections/mod.rs rename to packages/web-platform/web-core/src/template/template_sections/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/template/template_sections/style_info/css_property.rs b/packages/web-platform/web-core/src/template/template_sections/style_info/css_property.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/template_sections/style_info/css_property.rs rename to packages/web-platform/web-core/src/template/template_sections/style_info/css_property.rs diff --git a/packages/web-platform/web-core-wasm/src/template/template_sections/style_info/decoded_style_data.rs b/packages/web-platform/web-core/src/template/template_sections/style_info/decoded_style_data.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/template_sections/style_info/decoded_style_data.rs rename to packages/web-platform/web-core/src/template/template_sections/style_info/decoded_style_data.rs diff --git a/packages/web-platform/web-core-wasm/src/template/template_sections/style_info/flattened_style_info.rs b/packages/web-platform/web-core/src/template/template_sections/style_info/flattened_style_info.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/template_sections/style_info/flattened_style_info.rs rename to packages/web-platform/web-core/src/template/template_sections/style_info/flattened_style_info.rs diff --git a/packages/web-platform/web-core-wasm/src/template/template_sections/style_info/mod.rs b/packages/web-platform/web-core/src/template/template_sections/style_info/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/template_sections/style_info/mod.rs rename to packages/web-platform/web-core/src/template/template_sections/style_info/mod.rs diff --git a/packages/web-platform/web-core-wasm/src/template/template_sections/style_info/raw_style_info.rs b/packages/web-platform/web-core/src/template/template_sections/style_info/raw_style_info.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/template_sections/style_info/raw_style_info.rs rename to packages/web-platform/web-core/src/template/template_sections/style_info/raw_style_info.rs diff --git a/packages/web-platform/web-core-wasm/src/template/template_sections/style_info/style_info_decoder.rs b/packages/web-platform/web-core/src/template/template_sections/style_info/style_info_decoder.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/template_sections/style_info/style_info_decoder.rs rename to packages/web-platform/web-core/src/template/template_sections/style_info/style_info_decoder.rs diff --git a/packages/web-platform/web-core-wasm/src/template/template_sections/style_info/style_sheet_resource.rs b/packages/web-platform/web-core/src/template/template_sections/style_info/style_sheet_resource.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/template/template_sections/style_info/style_sheet_resource.rs rename to packages/web-platform/web-core/src/template/template_sections/style_info/style_sheet_resource.rs diff --git a/packages/web-platform/web-core-wasm/src/utils/hyphenate_style_name.rs b/packages/web-platform/web-core/src/utils/hyphenate_style_name.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/utils/hyphenate_style_name.rs rename to packages/web-platform/web-core/src/utils/hyphenate_style_name.rs diff --git a/packages/web-platform/web-core-wasm/src/utils/mod.rs b/packages/web-platform/web-core/src/utils/mod.rs similarity index 100% rename from packages/web-platform/web-core-wasm/src/utils/mod.rs rename to packages/web-platform/web-core/src/utils/mod.rs diff --git a/packages/web-platform/web-core-wasm/tests/I18n.spec.ts b/packages/web-platform/web-core/tests/I18n.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/I18n.spec.ts rename to packages/web-platform/web-core/tests/I18n.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/__snapshots__/encode.spec.ts.snap b/packages/web-platform/web-core/tests/__snapshots__/encode.spec.ts.snap similarity index 100% rename from packages/web-platform/web-core-wasm/tests/__snapshots__/encode.spec.ts.snap rename to packages/web-platform/web-core/tests/__snapshots__/encode.spec.ts.snap diff --git a/packages/web-platform/web-core-wasm/tests/__snapshots__/server-compat.spec.ts.snap b/packages/web-platform/web-core/tests/__snapshots__/server-compat.spec.ts.snap similarity index 100% rename from packages/web-platform/web-core-wasm/tests/__snapshots__/server-compat.spec.ts.snap rename to packages/web-platform/web-core/tests/__snapshots__/server-compat.spec.ts.snap diff --git a/packages/web-platform/web-core-wasm/tests/decode.spec.ts b/packages/web-platform/web-core/tests/decode.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/decode.spec.ts rename to packages/web-platform/web-core/tests/decode.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/element-apis.bench.spec.ts b/packages/web-platform/web-core/tests/element-apis.bench.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/element-apis.bench.spec.ts rename to packages/web-platform/web-core/tests/element-apis.bench.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/element-apis.spec.ts b/packages/web-platform/web-core/tests/element-apis.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/element-apis.spec.ts rename to packages/web-platform/web-core/tests/element-apis.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/encode.bench.spec.ts b/packages/web-platform/web-core/tests/encode.bench.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/encode.bench.spec.ts rename to packages/web-platform/web-core/tests/encode.bench.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/encode.spec.ts b/packages/web-platform/web-core/tests/encode.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/encode.spec.ts rename to packages/web-platform/web-core/tests/encode.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/jsdom.ts b/packages/web-platform/web-core/tests/jsdom.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/jsdom.ts rename to packages/web-platform/web-core/tests/jsdom.ts diff --git a/packages/web-platform/web-core-wasm/tests/server-compat.spec.ts b/packages/web-platform/web-core/tests/server-compat.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/server-compat.spec.ts rename to packages/web-platform/web-core/tests/server-compat.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/server-ssr-bulk.spec.ts b/packages/web-platform/web-core/tests/server-ssr-bulk.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/server-ssr-bulk.spec.ts rename to packages/web-platform/web-core/tests/server-ssr-bulk.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/server-ssr.spec.ts b/packages/web-platform/web-core/tests/server-ssr.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/server-ssr.spec.ts rename to packages/web-platform/web-core/tests/server-ssr.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/template-manager.spec.ts b/packages/web-platform/web-core/tests/template-manager.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/template-manager.spec.ts rename to packages/web-platform/web-core/tests/template-manager.spec.ts diff --git a/packages/web-platform/web-core-wasm/tests/testing-library-port.spec.ts b/packages/web-platform/web-core/tests/testing-library-port.spec.ts similarity index 100% rename from packages/web-platform/web-core-wasm/tests/testing-library-port.spec.ts rename to packages/web-platform/web-core/tests/testing-library-port.spec.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/LynxCrossThreadContext.ts b/packages/web-platform/web-core/ts/client/LynxCrossThreadContext.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/LynxCrossThreadContext.ts rename to packages/web-platform/web-core/ts/client/LynxCrossThreadContext.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/createBackgroundLynx.ts b/packages/web-platform/web-core/ts/client/background/background-apis/createBackgroundLynx.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/createBackgroundLynx.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/createBackgroundLynx.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/createChunkLoading.ts b/packages/web-platform/web-core/ts/client/background/background-apis/createChunkLoading.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/createChunkLoading.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/createChunkLoading.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/createElement.ts b/packages/web-platform/web-core/ts/client/background/background-apis/createElement.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/createElement.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/createElement.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/createNapiLoader.ts b/packages/web-platform/web-core/ts/client/background/background-apis/createNapiLoader.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/createNapiLoader.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/createNapiLoader.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/createNativeApp.ts b/packages/web-platform/web-core/ts/client/background/background-apis/createNativeApp.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/createNativeApp.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/createNativeApp.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/createNativeModules.ts b/packages/web-platform/web-core/ts/client/background/background-apis/createNativeModules.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/createNativeModules.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/createNativeModules.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/createPerformanceApis.ts b/packages/web-platform/web-core/ts/client/background/background-apis/createPerformanceApis.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/createPerformanceApis.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/createPerformanceApis.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/createTimingSystem.ts b/packages/web-platform/web-core/ts/client/background/background-apis/createTimingSystem.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/createTimingSystem.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/createTimingSystem.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/createGetCustomSection.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/createGetCustomSection.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/createGetCustomSection.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/createGetCustomSection.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/createGetPathInfo.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/createGetPathInfo.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/createGetPathInfo.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/createGetPathInfo.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/createInvokeUIMethod.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/createInvokeUIMethod.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/createInvokeUIMethod.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/createInvokeUIMethod.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/createJSObjectDestructionObserver.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerDisposeHandler.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerDisposeHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerDisposeHandler.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerDisposeHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerPublicComponentEventHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerPublishEventHandler.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerPublishEventHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerPublishEventHandler.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerPublishEventHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerSendGlobalEvent.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerUpdateDataHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerUpdateGlobalPropsHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts b/packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/crossThreadHandlers/registerUpdateI18nResource.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/background-apis/startBackgroundThread.ts b/packages/web-platform/web-core/ts/client/background/background-apis/startBackgroundThread.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/background-apis/startBackgroundThread.ts rename to packages/web-platform/web-core/ts/client/background/background-apis/startBackgroundThread.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/background/index.ts b/packages/web-platform/web-core/ts/client/background/index.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/background/index.ts rename to packages/web-platform/web-core/ts/client/background/index.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/decodeWorker/cssLoader.ts b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/decodeWorker/cssLoader.ts rename to packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/decodeWorker/decode.worker.ts b/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/decodeWorker/decode.worker.ts rename to packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/decodeWorker/types.ts b/packages/web-platform/web-core/ts/client/decodeWorker/types.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/decodeWorker/types.ts rename to packages/web-platform/web-core/ts/client/decodeWorker/types.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/endpoints.ts b/packages/web-platform/web-core/ts/client/endpoints.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/endpoints.ts rename to packages/web-platform/web-core/ts/client/endpoints.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/global.d.ts b/packages/web-platform/web-core/ts/client/global.d.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/global.d.ts rename to packages/web-platform/web-core/ts/client/global.d.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/index.ts b/packages/web-platform/web-core/ts/client/index.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/index.ts rename to packages/web-platform/web-core/ts/client/index.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/Background.ts b/packages/web-platform/web-core/ts/client/mainthread/Background.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/Background.ts rename to packages/web-platform/web-core/ts/client/mainthread/Background.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/ExposureServices.ts b/packages/web-platform/web-core/ts/client/mainthread/ExposureServices.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/ExposureServices.ts rename to packages/web-platform/web-core/ts/client/mainthread/ExposureServices.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/I18n.ts b/packages/web-platform/web-core/ts/client/mainthread/I18n.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/I18n.ts rename to packages/web-platform/web-core/ts/client/mainthread/I18n.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/LynxView.ts b/packages/web-platform/web-core/ts/client/mainthread/LynxView.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/LynxView.ts rename to packages/web-platform/web-core/ts/client/mainthread/LynxView.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/LynxViewInstance.ts b/packages/web-platform/web-core/ts/client/mainthread/LynxViewInstance.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/LynxViewInstance.ts rename to packages/web-platform/web-core/ts/client/mainthread/LynxViewInstance.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/TemplateManager.ts b/packages/web-platform/web-core/ts/client/mainthread/TemplateManager.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/TemplateManager.ts rename to packages/web-platform/web-core/ts/client/mainthread/TemplateManager.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/createIFrameRealm.ts b/packages/web-platform/web-core/ts/client/mainthread/createIFrameRealm.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/createIFrameRealm.ts rename to packages/web-platform/web-core/ts/client/mainthread/createIFrameRealm.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/createMainThreadGlobalAPIs.ts b/packages/web-platform/web-core/ts/client/mainthread/createMainThreadGlobalAPIs.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/createMainThreadGlobalAPIs.ts rename to packages/web-platform/web-core/ts/client/mainthread/createMainThreadGlobalAPIs.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/queryNodes.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/queryNodes.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/queryNodes.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/queryNodes.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerGetPathInfoHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerGetPathInfoHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerGetPathInfoHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerGetPathInfoHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerNapiModulesCallHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerNapiModulesCallHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerNapiModulesCallHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerNapiModulesCallHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerNativeModulesCallHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerNativeModulesCallHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerNativeModulesCallHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerNativeModulesCallHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerReloadHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerReloadHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerReloadHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerReloadHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerSelectComponentHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerSelectComponentHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerSelectComponentHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerSelectComponentHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerSetNativePropsHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerSetNativePropsHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerSetNativePropsHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerSetNativePropsHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerTriggerComponentEventHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerTriggerComponentEventHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerTriggerComponentEventHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerTriggerComponentEventHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts rename to packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/WASMJSBinding.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/WASMJSBinding.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/WASMJSBinding.ts rename to packages/web-platform/web-core/ts/client/mainthread/elementAPIs/WASMJSBinding.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/createCrossThreadEvent.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createCrossThreadEvent.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/createCrossThreadEvent.ts rename to packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createCrossThreadEvent.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/createElementAPI.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/createElementAPI.ts rename to packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/index.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/index.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/index.ts rename to packages/web-platform/web-core/ts/client/mainthread/elementAPIs/index.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts rename to packages/web-platform/web-core/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/utils/convertLengthToPx.ts b/packages/web-platform/web-core/ts/client/mainthread/utils/convertLengthToPx.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/utils/convertLengthToPx.ts rename to packages/web-platform/web-core/ts/client/mainthread/utils/convertLengthToPx.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/mainthread/utils/requestIdleCallback.ts b/packages/web-platform/web-core/ts/client/mainthread/utils/requestIdleCallback.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/mainthread/utils/requestIdleCallback.ts rename to packages/web-platform/web-core/ts/client/mainthread/utils/requestIdleCallback.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/wasm.ts b/packages/web-platform/web-core/ts/client/wasm.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/wasm.ts rename to packages/web-platform/web-core/ts/client/wasm.ts diff --git a/packages/web-platform/web-core-wasm/ts/client/webElementsDynamicLoader.ts b/packages/web-platform/web-core/ts/client/webElementsDynamicLoader.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/client/webElementsDynamicLoader.ts rename to packages/web-platform/web-core/ts/client/webElementsDynamicLoader.ts diff --git a/packages/web-platform/web-core-wasm/ts/common/decodeUtils.ts b/packages/web-platform/web-core/ts/common/decodeUtils.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/common/decodeUtils.ts rename to packages/web-platform/web-core/ts/common/decodeUtils.ts diff --git a/packages/web-platform/web-core-wasm/ts/constants.ts b/packages/web-platform/web-core/ts/constants.ts similarity index 98% rename from packages/web-platform/web-core-wasm/ts/constants.ts rename to packages/web-platform/web-core/ts/constants.ts index 3010a36055..621e30f607 100644 --- a/packages/web-platform/web-core-wasm/ts/constants.ts +++ b/packages/web-platform/web-core/ts/constants.ts @@ -101,7 +101,7 @@ export const HTML_TAG_TO_LYNX_TAG_MAP: Record = ); /** - * also see packages/web-platform/web-core-wasm/src/constants.rs + * also see packages/web-platform/web-core/src/constants.rs */ export const LYNX_TAG_TO_DYNAMIC_LOAD_TAG_ID: Record = /*#__PURE__*/ Object diff --git a/packages/web-platform/web-core-wasm/ts/encode/encodeCSS.ts b/packages/web-platform/web-core/ts/encode/encodeCSS.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/encode/encodeCSS.ts rename to packages/web-platform/web-core/ts/encode/encodeCSS.ts diff --git a/packages/web-platform/web-core-wasm/ts/encode/index.ts b/packages/web-platform/web-core/ts/encode/index.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/encode/index.ts rename to packages/web-platform/web-core/ts/encode/index.ts diff --git a/packages/web-platform/web-core-wasm/ts/encode/webEncoder.ts b/packages/web-platform/web-core/ts/encode/webEncoder.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/encode/webEncoder.ts rename to packages/web-platform/web-core/ts/encode/webEncoder.ts diff --git a/packages/web-platform/web-core-wasm/ts/server/createServerLynx.ts b/packages/web-platform/web-core/ts/server/createServerLynx.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/server/createServerLynx.ts rename to packages/web-platform/web-core/ts/server/createServerLynx.ts diff --git a/packages/web-platform/web-core-wasm/ts/server/decode.ts b/packages/web-platform/web-core/ts/server/decode.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/server/decode.ts rename to packages/web-platform/web-core/ts/server/decode.ts diff --git a/packages/web-platform/web-core-wasm/ts/server/deploy.ts b/packages/web-platform/web-core/ts/server/deploy.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/server/deploy.ts rename to packages/web-platform/web-core/ts/server/deploy.ts diff --git a/packages/web-platform/web-core-wasm/ts/server/elementAPIs/createElementAPI.ts b/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/server/elementAPIs/createElementAPI.ts rename to packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts diff --git a/packages/web-platform/web-core-wasm/ts/server/elementAPIs/pureElementAPIs.ts b/packages/web-platform/web-core/ts/server/elementAPIs/pureElementAPIs.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/server/elementAPIs/pureElementAPIs.ts rename to packages/web-platform/web-core/ts/server/elementAPIs/pureElementAPIs.ts diff --git a/packages/web-platform/web-core-wasm/ts/server/index.ts b/packages/web-platform/web-core/ts/server/index.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/server/index.ts rename to packages/web-platform/web-core/ts/server/index.ts diff --git a/packages/web-platform/web-core-wasm/ts/server/wasm.ts b/packages/web-platform/web-core/ts/server/wasm.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/server/wasm.ts rename to packages/web-platform/web-core/ts/server/wasm.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/BTSChunk.ts b/packages/web-platform/web-core/ts/types/BTSChunk.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/BTSChunk.ts rename to packages/web-platform/web-core/ts/types/BTSChunk.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/Cloneable.ts b/packages/web-platform/web-core/ts/types/Cloneable.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/Cloneable.ts rename to packages/web-platform/web-core/ts/types/Cloneable.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/DecodedTemplate.ts b/packages/web-platform/web-core/ts/types/DecodedTemplate.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/DecodedTemplate.ts rename to packages/web-platform/web-core/ts/types/DecodedTemplate.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/Element.ts b/packages/web-platform/web-core/ts/types/Element.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/Element.ts rename to packages/web-platform/web-core/ts/types/Element.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/ElementTemplateData.ts b/packages/web-platform/web-core/ts/types/ElementTemplateData.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/ElementTemplateData.ts rename to packages/web-platform/web-core/ts/types/ElementTemplateData.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/EventType.ts b/packages/web-platform/web-core/ts/types/EventType.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/EventType.ts rename to packages/web-platform/web-core/ts/types/EventType.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/I18nTypes.ts b/packages/web-platform/web-core/ts/types/I18nTypes.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/I18nTypes.ts rename to packages/web-platform/web-core/ts/types/I18nTypes.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/IElementPAPI.ts b/packages/web-platform/web-core/ts/types/IElementPAPI.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/IElementPAPI.ts rename to packages/web-platform/web-core/ts/types/IElementPAPI.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/IMtsBinding.ts b/packages/web-platform/web-core/ts/types/IMtsBinding.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/IMtsBinding.ts rename to packages/web-platform/web-core/ts/types/IMtsBinding.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/JSRealm.ts b/packages/web-platform/web-core/ts/types/JSRealm.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/JSRealm.ts rename to packages/web-platform/web-core/ts/types/JSRealm.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/LynxContextEventTarget.ts b/packages/web-platform/web-core/ts/types/LynxContextEventTarget.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/LynxContextEventTarget.ts rename to packages/web-platform/web-core/ts/types/LynxContextEventTarget.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/MainThreadLynx.ts b/packages/web-platform/web-core/ts/types/MainThreadLynx.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/MainThreadLynx.ts rename to packages/web-platform/web-core/ts/types/MainThreadLynx.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/NapiModules.ts b/packages/web-platform/web-core/ts/types/NapiModules.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/NapiModules.ts rename to packages/web-platform/web-core/ts/types/NapiModules.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/NativeApp.ts b/packages/web-platform/web-core/ts/types/NativeApp.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/NativeApp.ts rename to packages/web-platform/web-core/ts/types/NativeApp.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/NativeModules.ts b/packages/web-platform/web-core/ts/types/NativeModules.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/NativeModules.ts rename to packages/web-platform/web-core/ts/types/NativeModules.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/PageConfig.ts b/packages/web-platform/web-core/ts/types/PageConfig.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/PageConfig.ts rename to packages/web-platform/web-core/ts/types/PageConfig.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/ProcessDataCallback.ts b/packages/web-platform/web-core/ts/types/ProcessDataCallback.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/ProcessDataCallback.ts rename to packages/web-platform/web-core/ts/types/ProcessDataCallback.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/TimingAPIs.ts b/packages/web-platform/web-core/ts/types/TimingAPIs.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/TimingAPIs.ts rename to packages/web-platform/web-core/ts/types/TimingAPIs.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/UpdateDataOptions.ts b/packages/web-platform/web-core/ts/types/UpdateDataOptions.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/UpdateDataOptions.ts rename to packages/web-platform/web-core/ts/types/UpdateDataOptions.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/WorkerStartMessage.ts b/packages/web-platform/web-core/ts/types/WorkerStartMessage.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/WorkerStartMessage.ts rename to packages/web-platform/web-core/ts/types/WorkerStartMessage.ts diff --git a/packages/web-platform/web-core-wasm/ts/types/index.ts b/packages/web-platform/web-core/ts/types/index.ts similarity index 100% rename from packages/web-platform/web-core-wasm/ts/types/index.ts rename to packages/web-platform/web-core/ts/types/index.ts diff --git a/packages/web-platform/web-core-wasm/tsconfig.json b/packages/web-platform/web-core/tsconfig.json similarity index 100% rename from packages/web-platform/web-core-wasm/tsconfig.json rename to packages/web-platform/web-core/tsconfig.json diff --git a/packages/web-platform/web-core-wasm/turbo.json b/packages/web-platform/web-core/turbo.json similarity index 100% rename from packages/web-platform/web-core-wasm/turbo.json rename to packages/web-platform/web-core/turbo.json diff --git a/packages/web-platform/web-core-wasm/vitest.config.ts b/packages/web-platform/web-core/vitest.config.ts similarity index 96% rename from packages/web-platform/web-core-wasm/vitest.config.ts rename to packages/web-platform/web-core/vitest.config.ts index 11decf2567..282f0582e3 100644 --- a/packages/web-platform/web-core-wasm/vitest.config.ts +++ b/packages/web-platform/web-core/vitest.config.ts @@ -7,7 +7,7 @@ const __dirname = path.dirname(__filename); export default defineConfig({ test: { - name: 'web-platform/web-core-wasm', + name: 'web-platform/web-core', include: ['./tests/*.spec.ts'], exclude: ['./tests/*.bench.spec.ts'], benchmark: { diff --git a/packages/web-platform/web-explorer/index.ts b/packages/web-platform/web-explorer/index.ts index 07d2c13860..099ff2d1c1 100644 --- a/packages/web-platform/web-explorer/index.ts +++ b/packages/web-platform/web-explorer/index.ts @@ -1,5 +1,5 @@ -import '@lynx-js/web-core-wasm/client'; -import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; +import '@lynx-js/web-core/client'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core/client'; import '@lynx-js/web-elements/index.css'; import '@lynx-js/web-elements/all'; diff --git a/packages/web-platform/web-explorer/package.json b/packages/web-platform/web-explorer/package.json index bf1b75e7c9..70b81f3938 100644 --- a/packages/web-platform/web-explorer/package.json +++ b/packages/web-platform/web-explorer/package.json @@ -25,7 +25,7 @@ }, "devDependencies": { "@lynx-js/lynx-core": "0.1.3", - "@lynx-js/web-core-wasm": "workspace:*", + "@lynx-js/web-core": "workspace:*", "@lynx-js/web-elements": "workspace:*", "@lynx-js/web-platform-rsbuild-plugin": "workspace:*", "@rsbuild/core": "catalog:rsbuild", diff --git a/packages/web-platform/web-rsbuild-plugin/package.json b/packages/web-platform/web-rsbuild-plugin/package.json index b700c62152..e5726bcc01 100644 --- a/packages/web-platform/web-rsbuild-plugin/package.json +++ b/packages/web-platform/web-rsbuild-plugin/package.json @@ -29,7 +29,7 @@ "loader-utils": "^3.3.1" }, "devDependencies": { - "@lynx-js/web-core-wasm": "workspace:*", + "@lynx-js/web-core": "workspace:*", "@lynx-js/web-elements": "workspace:*", "@rsbuild/core": "catalog:rsbuild", "@types/loader-utils": "^2.0.6", @@ -38,7 +38,7 @@ "vitest": "^3.2.4" }, "peerDependencies": { - "@lynx-js/web-core-wasm": ">0.0.0", + "@lynx-js/web-core": ">0.0.0", "@rsbuild/core": "*" } } diff --git a/packages/web-platform/web-rsbuild-plugin/tests/fixtures/index.ts b/packages/web-platform/web-rsbuild-plugin/tests/fixtures/index.ts index 288a927c20..4cacfcb8a0 100644 --- a/packages/web-platform/web-rsbuild-plugin/tests/fixtures/index.ts +++ b/packages/web-platform/web-rsbuild-plugin/tests/fixtures/index.ts @@ -1,4 +1,4 @@ -import '@lynx-js/web-core-wasm/client'; +import '@lynx-js/web-core/client'; import '@lynx-js/web-elements/all'; import '@lynx-js/web-elements/index.css'; document.body.innerHTML = ` diff --git a/packages/web-platform/web-rsbuild-server-middleware/package.json b/packages/web-platform/web-rsbuild-server-middleware/package.json index 4377d9b3a4..a4ef2ca27b 100644 --- a/packages/web-platform/web-rsbuild-server-middleware/package.json +++ b/packages/web-platform/web-rsbuild-server-middleware/package.json @@ -26,7 +26,7 @@ "build": "rsbuild build" }, "devDependencies": { - "@lynx-js/web-core-wasm": "workspace:*", + "@lynx-js/web-core": "workspace:*", "@lynx-js/web-elements": "workspace:*", "@rsbuild/core": "catalog:rsbuild", "rsbuild-plugin-arethetypeswrong": "0.2.0", diff --git a/packages/web-platform/web-rsbuild-server-middleware/src/web/index.ts b/packages/web-platform/web-rsbuild-server-middleware/src/web/index.ts index cf3490ec36..914128a3e5 100644 --- a/packages/web-platform/web-rsbuild-server-middleware/src/web/index.ts +++ b/packages/web-platform/web-rsbuild-server-middleware/src/web/index.ts @@ -1,7 +1,7 @@ -import '@lynx-js/web-core-wasm/client'; +import '@lynx-js/web-core/client'; import '@lynx-js/web-elements/index.css'; import './index.css'; -import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core/client'; const INIT_DATA_KEY = 'lynx-web-core-init-data'; const GLOBAL_PROPS_KEY = 'lynx-web-core-global-props'; diff --git a/packages/web-platform/web-tests/package.json b/packages/web-platform/web-tests/package.json index 90fdb2bfc8..659ce9a747 100644 --- a/packages/web-platform/web-tests/package.json +++ b/packages/web-platform/web-tests/package.json @@ -29,7 +29,7 @@ "@lynx-js/react": "workspace:*", "@lynx-js/react-rsbuild-plugin": "workspace:*", "@lynx-js/rspeedy": "workspace:*", - "@lynx-js/web-core-wasm": "workspace:*", + "@lynx-js/web-core": "workspace:*", "@lynx-js/web-platform-rsbuild-plugin": "workspace:*", "@lynx-js/web-rsbuild-server-middleware": "workspace:*", "@playwright/test": "^1.58.2", diff --git a/packages/web-platform/web-tests/server.js b/packages/web-platform/web-tests/server.js index 0b3ce44ba5..5fc68868d5 100644 --- a/packages/web-platform/web-tests/server.js +++ b/packages/web-platform/web-tests/server.js @@ -1,4 +1,4 @@ -import { executeTemplate } from '@lynx-js/web-core-wasm/server'; +import { executeTemplate } from '@lynx-js/web-core/server'; import { readFile } from 'node:fs/promises'; import { fileURLToPath } from 'node:url'; import path from 'node:path'; diff --git a/packages/web-platform/web-tests/shell-project/index.ts b/packages/web-platform/web-tests/shell-project/index.ts index 292f91fe56..e127c46588 100644 --- a/packages/web-platform/web-tests/shell-project/index.ts +++ b/packages/web-platform/web-tests/shell-project/index.ts @@ -2,7 +2,7 @@ // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. -import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core/client'; import { lynxViewTests } from './lynx-view.ts'; const ENABLE_MULTI_THREAD = !!process.env.ENABLE_MULTI_THREAD; @@ -56,7 +56,7 @@ if (casename) { } if (casename.includes('custom-template-loader')) { - // custom template loader is not supported by web-core-wasm + // custom template loader is not supported by web-core } if (casename === 'api-createLynxView-browserConfig') { diff --git a/packages/web-platform/web-tests/shell-project/lynx-view.ts b/packages/web-platform/web-tests/shell-project/lynx-view.ts index 804f52ac6c..293d2a5047 100644 --- a/packages/web-platform/web-tests/shell-project/lynx-view.ts +++ b/packages/web-platform/web-tests/shell-project/lynx-view.ts @@ -1,8 +1,8 @@ // Copyright 2023 The Lynx Authors. All rights reserved. // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. -import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; -import '@lynx-js/web-core-wasm/client'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core/client'; +import '@lynx-js/web-core/client'; import '@lynx-js/web-elements/all'; import '@lynx-js/web-elements/index.css'; import './index.css'; diff --git a/packages/web-platform/web-tests/shell-project/web-core.ts b/packages/web-platform/web-tests/shell-project/web-core.ts index 16fa062760..46cb44ea81 100644 --- a/packages/web-platform/web-tests/shell-project/web-core.ts +++ b/packages/web-platform/web-tests/shell-project/web-core.ts @@ -1,8 +1,8 @@ // Copyright 2023 The Lynx Authors. All rights reserved. // Licensed under the Apache License Version 2.0 that can be found in the // LICENSE file in the root directory of this source tree. -import type { LynxViewElement as LynxView } from '@lynx-js/web-core-wasm/client'; -import '@lynx-js/web-core-wasm/client'; +import type { LynxViewElement as LynxView } from '@lynx-js/web-core/client'; +import '@lynx-js/web-core/client'; import '@lynx-js/web-elements/index.css'; import './index.css'; diff --git a/packages/webpack/template-webpack-plugin/package.json b/packages/webpack/template-webpack-plugin/package.json index 0c76c85175..1f447176f9 100644 --- a/packages/webpack/template-webpack-plugin/package.json +++ b/packages/webpack/template-webpack-plugin/package.json @@ -38,7 +38,7 @@ "dependencies": { "@lynx-js/css-serializer": "workspace:*", "@lynx-js/tasm": "0.0.26", - "@lynx-js/web-core-wasm": "workspace:*", + "@lynx-js/web-core": "workspace:*", "@lynx-js/webpack-runtime-globals": "workspace:^", "@rspack/lite-tapable": "1.1.0", "css-tree": "^3.1.0", diff --git a/packages/webpack/template-webpack-plugin/src/WebEncodePlugin.ts b/packages/webpack/template-webpack-plugin/src/WebEncodePlugin.ts index eca646e4b3..153b8cc106 100644 --- a/packages/webpack/template-webpack-plugin/src/WebEncodePlugin.ts +++ b/packages/webpack/template-webpack-plugin/src/WebEncodePlugin.ts @@ -5,7 +5,7 @@ import type { Compilation, Compiler } from 'webpack'; import type { LynxStyleNode } from '@lynx-js/css-serializer'; -import type { TasmJSONInfo } from '@lynx-js/web-core-wasm/encode'; +import type { TasmJSONInfo } from '@lynx-js/web-core/encode'; import { LynxTemplatePlugin, @@ -105,7 +105,7 @@ export class WebEncodePlugin { const isExperimentalWebBinary = process .env['EXPERIMENTAL_USE_WEB_BINARY_TEMPLATE']; if (isExperimentalWebBinary === 'true') { - const { encode } = await import('@lynx-js/web-core-wasm/encode'); + const { encode } = await import('@lynx-js/web-core/encode'); return { buffer: Buffer.from(encode(tasmJSONInfo as TasmJSONInfo)), debugInfo: '', diff --git a/packages/webpack/template-webpack-plugin/tsconfig.build.json b/packages/webpack/template-webpack-plugin/tsconfig.build.json index 39c7299f34..777a251218 100644 --- a/packages/webpack/template-webpack-plugin/tsconfig.build.json +++ b/packages/webpack/template-webpack-plugin/tsconfig.build.json @@ -10,6 +10,6 @@ "references": [ { "path": "../webpack-runtime-globals/tsconfig.build.json" }, { "path": "../../tools/css-serializer" }, - { "path": "../../web-platform/web-core-wasm" }, + { "path": "../../web-platform/web-core" }, ], } diff --git a/packages/webpack/template-webpack-plugin/tsconfig.json b/packages/webpack/template-webpack-plugin/tsconfig.json index b7e5efbad4..9c14dcd4e6 100644 --- a/packages/webpack/template-webpack-plugin/tsconfig.json +++ b/packages/webpack/template-webpack-plugin/tsconfig.json @@ -8,6 +8,6 @@ "references": [ { "path": "../webpack-runtime-globals/tsconfig.build.json" }, { "path": "../../tools/css-serializer" }, - { "path": "../../web-platform/web-core-wasm" }, + { "path": "../../web-platform/web-core" }, ], } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b7e25da9e..4748e233da 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -702,9 +702,9 @@ importers: '@lynx-js/types': specifier: 3.7.0 version: 3.7.0 - '@lynx-js/web-core-wasm': + '@lynx-js/web-core': specifier: workspace:* - version: link:../web-platform/web-core-wasm + version: link:../web-platform/web-core '@lynx-js/web-platform-rsbuild-plugin': specifier: workspace:* version: link:../web-platform/web-rsbuild-plugin @@ -1089,9 +1089,9 @@ importers: '@lynx-js/types': specifier: 3.7.0 version: 3.7.0 - '@lynx-js/web-core-wasm': + '@lynx-js/web-core': specifier: workspace:* - version: link:../../web-platform/web-core-wasm + version: link:../../web-platform/web-core '@lynx-js/web-elements': specifier: workspace:* version: link:../../web-platform/web-elements @@ -1315,7 +1315,7 @@ importers: specifier: ^1.58.2 version: 1.58.2 - packages/web-platform/web-core-wasm: + packages/web-platform/web-core: dependencies: '@lynx-js/web-elements': specifier: workspace:* @@ -1358,7 +1358,7 @@ importers: specifier: ^1.8.0 version: 1.8.0 - packages/web-platform/web-core-wasm-e2e: + packages/web-platform/web-core-e2e: devDependencies: '@lynx-js/playwright-fixtures': specifier: workspace:* @@ -1372,9 +1372,9 @@ importers: '@lynx-js/rspeedy': specifier: workspace:* version: link:../../rspeedy/core - '@lynx-js/web-core-wasm': + '@lynx-js/web-core': specifier: workspace:* - version: link:../web-core-wasm + version: link:../web-core '@playwright/test': specifier: ^1.58.2 version: 1.58.2 @@ -1417,9 +1417,9 @@ importers: '@lynx-js/lynx-core': specifier: 0.1.3 version: 0.1.3 - '@lynx-js/web-core-wasm': + '@lynx-js/web-core': specifier: workspace:* - version: link:../web-core-wasm + version: link:../web-core '@lynx-js/web-elements': specifier: workspace:* version: link:../web-elements @@ -1442,9 +1442,9 @@ importers: specifier: ^3.3.1 version: 3.3.1 devDependencies: - '@lynx-js/web-core-wasm': + '@lynx-js/web-core': specifier: workspace:* - version: link:../web-core-wasm + version: link:../web-core '@lynx-js/web-elements': specifier: workspace:* version: link:../web-elements @@ -1466,9 +1466,9 @@ importers: packages/web-platform/web-rsbuild-server-middleware: devDependencies: - '@lynx-js/web-core-wasm': + '@lynx-js/web-core': specifier: workspace:* - version: link:../web-core-wasm + version: link:../web-core '@lynx-js/web-elements': specifier: workspace:* version: link:../web-elements @@ -1499,9 +1499,9 @@ importers: '@lynx-js/rspeedy': specifier: workspace:* version: link:../../rspeedy/core - '@lynx-js/web-core-wasm': + '@lynx-js/web-core': specifier: workspace:* - version: link:../web-core-wasm + version: link:../web-core '@lynx-js/web-platform-rsbuild-plugin': specifier: workspace:* version: link:../web-rsbuild-plugin @@ -1722,9 +1722,9 @@ importers: '@lynx-js/tasm': specifier: 0.0.26 version: 0.0.26 - '@lynx-js/web-core-wasm': + '@lynx-js/web-core': specifier: workspace:* - version: link:../../web-platform/web-core-wasm + version: link:../../web-platform/web-core '@lynx-js/webpack-runtime-globals': specifier: workspace:^ version: link:../webpack-runtime-globals diff --git a/vitest.config.ts b/vitest.config.ts index e62962a15d..325ae5eb71 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -31,7 +31,7 @@ export default defineConfig({ 'packages/tools/canary-release/**', 'packages/web-platform/web-tests/**', - 'packages/web-platform/web-core-wasm-e2e/**', + 'packages/web-platform/web-core-e2e/**', 'packages/webpack/test-tools/**', 'packages/testing-library/test-environment/**', 'packages/react/testing-library/**', From 5039e143d458327d2ca34125cd91990898de981a Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 17:50:07 +0800 Subject: [PATCH 04/32] + initial test clean --- .../web-core-e2e/tests/web-core.test.ts | 37 + .../elementAPIs/pureElementPAPIs.ts | 60 + .../web-core/ts/types/IElementPAPI.ts | 14 + packages/web-platform/web-tests/package.json | 2 + .../web-platform/web-tests/rspack.config.js | 39 +- .../web-tests/shell-project/fp-only.ts | 2 +- .../web-tests/shell-project/lynx-view.ts | 2 - .../web-tests/shell-project/web-core.ts | 1 - .../web-tests/tests/main-thread-apis.test.ts | 1655 ----------------- .../tests/server.bench.vitest.spec.ts | 38 - .../web-tests/tests/server.vitest.spec.ts | 28 - .../web-tests/tests/web-core.test.ts | 752 -------- packages/web-platform/web-tests/tsconfig.json | 1 - .../web-platform/web-tests/vitest.config.ts | 16 - pnpm-lock.yaml | 16 + 15 files changed, 152 insertions(+), 2511 deletions(-) delete mode 100644 packages/web-platform/web-tests/tests/main-thread-apis.test.ts delete mode 100644 packages/web-platform/web-tests/tests/server.bench.vitest.spec.ts delete mode 100644 packages/web-platform/web-tests/tests/server.vitest.spec.ts delete mode 100644 packages/web-platform/web-tests/tests/web-core.test.ts delete mode 100644 packages/web-platform/web-tests/vitest.config.ts diff --git a/packages/web-platform/web-core-e2e/tests/web-core.test.ts b/packages/web-platform/web-core-e2e/tests/web-core.test.ts index e5bfedba42..26047227c3 100644 --- a/packages/web-platform/web-core-e2e/tests/web-core.test.ts +++ b/packages/web-platform/web-core-e2e/tests/web-core.test.ts @@ -803,4 +803,41 @@ test.describe('web core tests', () => { await wait(1000); expect(isSuccess).toBeTruthy(); }); + + test('should not throw error when removed immediately after connected', async ({ page }) => { + const errors: Error[] = []; + page.on('pageerror', (err) => { + errors.push(err); + }); + + await goto(page); + + // Evaluate in browser context + await page.evaluate(async () => { + // Verify DOM behavior assumption + const div = document.createElement('div'); + const shadow = div.attachShadow({ mode: 'open' }); + const style = document.createElement('style'); + shadow.appendChild(style); + document.body.appendChild(div); + if (!style.sheet) throw new Error('Sheet should exist when connected'); + + document.body.removeChild(div); + if (style.sheet) { + throw new Error('Sheet should be null when disconnected'); + } + + // Create a new lynx-view + const view = document.createElement('lynx-view'); + // Connect it + document.body.appendChild(view); + // Immediately disconnect it + document.body.removeChild(view); + + // Wait a bit to ensure microtasks run + await new Promise((resolve) => setTimeout(resolve, 100)); + }); + + expect(errors.length).toBe(0); + }); }); diff --git a/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts index 3adbb0520f..45e8a1229e 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/pureElementPAPIs.ts @@ -7,6 +7,7 @@ import { lynxElementTemplateMarkerAttribute, lynxPartIdAttribute, uniqueIdSymbol, + ErrorCode, } from '../../../constants.js'; import type { @@ -36,6 +37,8 @@ import type { SetIDPAPI, SwapElementPAPI, UpdateListCallbacksPAPI, + InvokeUIMethodPAPI, + QuerySelectorPAPI, } from '../../../types/index.js'; export const __AppendElement: AppendElementPAPI = /*#__PURE__*/ ( @@ -217,3 +220,60 @@ export const __UpdateListCallbacks: UpdateListCallbacksPAPI = /*#__PURE__*/ ( decoratedElement.componentAtIndex = componentAtIndex; decoratedElement.enqueueComponent = enqueueComponent; }; + +const methodAlias: Record< + string, + (element: Element, params: unknown) => unknown +> = { + 'boundingClientRect': (element) => { + const rect = element.getBoundingClientRect(); + return { + id: element.id, + width: rect.width, + height: rect.height, + left: rect.left, + right: rect.right, + top: rect.top, + bottom: rect.bottom, + }; + }, +}; + +export const __InvokeUIMethod: InvokeUIMethodPAPI = /*#__PURE__*/ ( + element, + method, + params, + callback, +) => { + let code = ErrorCode.UNKNOWN; + let data: any = undefined; + try { + const aliasMethod = methodAlias[method]; + const hasDomMethod = typeof (element as any)[method] === 'function'; + if (!aliasMethod && !hasDomMethod) { + code = ErrorCode.METHOD_NOT_FOUND; + } else { + if (aliasMethod) { + data = aliasMethod(element, params); + } else { + data = (element as any)[method](params); + } + code = ErrorCode.SUCCESS; + } + } catch (e) { + console.error( + `[lynx-web] invokeUIMethod: apply method failed with`, + e, + element, + ); + code = ErrorCode.PARAM_INVALID; + } + callback({ code, data }); +}; + +export const __QuerySelector: QuerySelectorPAPI = /*#__PURE__*/ ( + element, + selector, +) => { + return element.querySelector(selector); +}; diff --git a/packages/web-platform/web-core/ts/types/IElementPAPI.ts b/packages/web-platform/web-core/ts/types/IElementPAPI.ts index e3619ea9dd..9ebd40702f 100644 --- a/packages/web-platform/web-core/ts/types/IElementPAPI.ts +++ b/packages/web-platform/web-core/ts/types/IElementPAPI.ts @@ -9,6 +9,7 @@ import type { PerformancePipelineOptions, } from './index.js'; import type { MainThreadLynx } from './MainThreadLynx.js'; +import type { InvokeCallbackRes } from './NativeApp.js'; import type { ProcessDataCallback } from './ProcessDataCallback.js'; import type { UpdateDataOptions } from './UpdateDataOptions.js'; @@ -329,6 +330,17 @@ export type QueryComponentPAPI = ( }; }) => void, ) => null; +export type InvokeUIMethodPAPI = ( + element: HTMLElement, + method: string, + params: object, + callback: (result: InvokeCallbackRes) => void, +) => void; + +export type QuerySelectorPAPI = ( + element: HTMLElement, + selector: string, +) => unknown; export interface ElementPAPIs { // __GetTemplateParts currently only provided by the thread-strategy = "all-on-ui" (default) __GetTemplateParts: GetTemplatePartsPAPI; @@ -388,6 +400,8 @@ export interface ElementPAPIs { __GetPageElement: GetPageElementPAPI; __GetAttributeByName: GetAttributeByNamePAPI; __ElementAnimate: ElementAnimatePAPI; + __InvokeUIMethod: InvokeUIMethodPAPI; + __QuerySelector: QuerySelectorPAPI; __FlushElementTree: ( _subTree?: unknown, options?: FlushElementTreeOptions, diff --git a/packages/web-platform/web-tests/package.json b/packages/web-platform/web-tests/package.json index 659ce9a747..648e65f7da 100644 --- a/packages/web-platform/web-tests/package.json +++ b/packages/web-platform/web-tests/package.json @@ -35,8 +35,10 @@ "@playwright/test": "^1.58.2", "@rspack/cli": "catalog:rspack", "@rspack/core": "catalog:rspack", + "css-loader": "^7.1.4", "nyc": "^17.1.0", "source-map-loader": "^5.0.0", + "style-loader": "^4.0.0", "tslib": "^2.8.1", "v8-to-istanbul": "^9.3.0" } diff --git a/packages/web-platform/web-tests/rspack.config.js b/packages/web-platform/web-tests/rspack.config.js index 48b68eadfc..328fb0b216 100644 --- a/packages/web-platform/web-tests/rspack.config.js +++ b/packages/web-platform/web-tests/rspack.config.js @@ -23,7 +23,6 @@ const config = { cache: false, entry: { main: './shell-project/index.ts', - 'main-thread-test': './shell-project/mainthread-test.ts', 'web-core': './shell-project/web-core.ts', 'fp-only': './shell-project/fp-only.ts', }, @@ -75,21 +74,6 @@ const config = { scriptLoading: 'module', filename: 'ssr.html', }), - new rspack.HtmlRspackPlugin({ - title: 'mainthread-test', - meta: { - viewport: - 'width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no', - 'apple-mobile-web-app-capable': 'yes', - 'apple-mobile-web-app-status-bar-style': 'default', - 'screen-orientation': 'portrait', - 'format-detection': 'telephone=no', - 'x5-orientation': 'portrait', - }, - chunks: ['main-thread-test'], - scriptLoading: 'module', - filename: 'main-thread-test.html', - }), new rspack.HtmlRspackPlugin({ title: 'lynx-for-web-core-test', meta: { @@ -230,7 +214,27 @@ const config = { rules: [ { test: /\.css$/, - type: 'css', + oneOf: [ + { + resourceQuery: /inline/, + use: [ + { + loader: 'css-loader', + options: { + exportType: 'string', + }, + }, + ], + type: 'javascript/auto', + }, + { + use: [ + 'style-loader', + 'css-loader', + ], + type: 'javascript/auto', + }, + ], }, { test: /\.tsx$|\.ts$/, @@ -265,6 +269,7 @@ const config = { }, experiments: { futureDefaults: true, + css: false, }, // TODO: enable lazy compilation lazyCompilation: false, diff --git a/packages/web-platform/web-tests/shell-project/fp-only.ts b/packages/web-platform/web-tests/shell-project/fp-only.ts index 53a3aa02e1..698c38f954 100644 --- a/packages/web-platform/web-tests/shell-project/fp-only.ts +++ b/packages/web-platform/web-tests/shell-project/fp-only.ts @@ -1,2 +1,2 @@ -import '@lynx-js/web-elements/index.css'; +import '@lynx-js/web-core/client'; import './index.css'; diff --git a/packages/web-platform/web-tests/shell-project/lynx-view.ts b/packages/web-platform/web-tests/shell-project/lynx-view.ts index 293d2a5047..6c1667061b 100644 --- a/packages/web-platform/web-tests/shell-project/lynx-view.ts +++ b/packages/web-platform/web-tests/shell-project/lynx-view.ts @@ -3,8 +3,6 @@ // LICENSE file in the root directory of this source tree. import type { LynxViewElement as LynxView } from '@lynx-js/web-core/client'; import '@lynx-js/web-core/client'; -import '@lynx-js/web-elements/all'; -import '@lynx-js/web-elements/index.css'; import './index.css'; export const lynxViewTests = ( diff --git a/packages/web-platform/web-tests/shell-project/web-core.ts b/packages/web-platform/web-tests/shell-project/web-core.ts index 46cb44ea81..48deaad450 100644 --- a/packages/web-platform/web-tests/shell-project/web-core.ts +++ b/packages/web-platform/web-tests/shell-project/web-core.ts @@ -3,7 +3,6 @@ // LICENSE file in the root directory of this source tree. import type { LynxViewElement as LynxView } from '@lynx-js/web-core/client'; import '@lynx-js/web-core/client'; -import '@lynx-js/web-elements/index.css'; import './index.css'; const ENABLE_MULTI_THREAD = !!process.env.ENABLE_MULTI_THREAD; diff --git a/packages/web-platform/web-tests/tests/main-thread-apis.test.ts b/packages/web-platform/web-tests/tests/main-thread-apis.test.ts deleted file mode 100644 index 35022b521e..0000000000 --- a/packages/web-platform/web-tests/tests/main-thread-apis.test.ts +++ /dev/null @@ -1,1655 +0,0 @@ -// Copyright 2024 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -// @ts-nocheck -import { componentIdAttribute, cssIdAttribute } from '@lynx-js/web-constants'; -import { test, expect } from '@lynx-js/playwright-fixtures'; -import type { Page } from '@playwright/test'; - -const ENABLE_MULTI_THREAD = !!process.env.ENABLE_MULTI_THREAD; -const isSSR = !!process.env['ENABLE_SSR']; - -const wait = async (ms: number) => { - await new Promise((resolve) => { - setTimeout(resolve, ms); - }); -}; - -test.describe('main thread api tests', () => { - test.skip(isSSR, 'mts api tests not support ssr'); - test.beforeEach(async ({ page }) => { - await page.goto(`/main-thread-test.html`, { - waitUntil: 'domcontentloaded', - }); - await wait(200); - }); - - test.afterEach(async ({ page }) => { - const fiberTree = await page.evaluate(() => { - return globalThis.genFiberElementTree() as Record; - }); - const domTree = await page.evaluate(() => { - return globalThis.genDomElementTree() as Record; - }); - expect(fiberTree).toStrictEqual(domTree); - }); - - test('createElementView', async ({ page }, { title }) => { - const lynxTag = await page.evaluate(() => { - const ret = globalThis.__CreateElement('view', 0) as HTMLElement; - return globalThis.__GetTag(ret); - }); - expect(lynxTag).toBe('view'); - }); - - test('__CreateComponent', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - const ret = globalThis.__CreateComponent( - 0, - 'id', - 0, - 'test_entry', - 'name', - 'path', - '', - {}, - ) as HTMLElement; - return { - id: globalThis.__GetComponentID(ret), - name: ret.getAttribute('name'), - }; - }); - expect(ret.id).toBe('id'); - expect(ret.name).toBe('name'); - }); - - test('__CreateView', async ({ page }, { title }) => { - const lynxTag = await page.evaluate(() => { - const ret = globalThis.__CreateView(0) as HTMLElement; - return globalThis.__GetTag(ret); - }); - expect(lynxTag).toBe('view'); - }); - - test('__CreateScrollView', async ({ page }, { title }) => { - const lynxTag = await page.evaluate(() => { - const ret = globalThis.__CreateScrollView(0) as HTMLElement; - return globalThis.__GetTag(ret); - }); - expect(lynxTag).toBe('scroll-view'); - }); - - test( - 'create-scroll-view-with-set-attribute', - async ({ page, browserName }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - let ret = globalThis.__CreateScrollView(0); - globalThis.__SetAttribute(ret, 'scroll-x', true); - globalThis.__AppendElement(root, ret); - globalThis.__FlushElementTree(); - }); - expect(page.locator('scroll-view')).toHaveAttribute('scroll-x', 'true'); - }, - ); - test( - '__SetID', - async ({ page, browserName }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - let ret = globalThis.__CreateView(0); - globalThis.__SetID(ret, 'target'); - globalThis.__AppendElement(root, ret); - globalThis.__FlushElementTree(); - }); - expect(await page.locator('#target').count()).toBe(1); - }, - ); - test( - '__SetID to remove id', - async ({ page, browserName }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - let ret = globalThis.__CreateView(0); - globalThis.__SetID(ret, 'target'); - globalThis.__AppendElement(root, ret); - globalThis.__FlushElementTree(); - globalThis.view = ret; - }); - expect(await page.locator('#target').count()).toBe(1); - await page.evaluate(() => { - let ret = globalThis.view; - globalThis.__SetID(ret, null); - globalThis.__FlushElementTree(); - }); - expect(await page.locator('#target').count()).toBe(0); - }, - ); - - test('__CreateText', async ({ page }, { title }) => { - const lynxTag = await page.evaluate(() => { - const ret = globalThis.__CreateText(0) as HTMLElement; - return globalThis.__GetTag(ret); - }); - expect(lynxTag).toBe('text'); - }); - - test('__CreateImage', async ({ page }, { title }) => { - const lynxTag = await page.evaluate(() => { - const ret = globalThis.__CreateImage(0) as HTMLElement; - return globalThis.__GetTag(ret); - }); - expect(lynxTag).toBe('image'); - }); - - test('__CreateRawText', async ({ page }, { title }) => { - const lynxTag = await page.evaluate(() => { - const ret = globalThis.__CreateRawText('content') as HTMLElement; - return { - tag: globalThis.__GetTag(ret), - text: ret.getAttribute('text'), - }; - }); - expect(lynxTag.tag).toBe('raw-text'); - expect(lynxTag.text).toBe('content'); - }); - - test('__CreateWrapperElement', async ({ page }, { title }) => { - const lynxTag = await page.evaluate(() => { - const ret = globalThis.__CreateWrapperElement(0) as HTMLElement; - return { - tag: globalThis.__GetTag(ret), - }; - }); - expect(lynxTag.tag).toBe('lynx-wrapper'); - }); - - test('__AppendElement-children-count', async ({ page }, { title }) => { - const count = await page.evaluate(() => { - let ret = globalThis.__CreateView(0) as HTMLElement; - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateView(0); - globalThis.__AppendElement(ret, child_0); - globalThis.__AppendElement(ret, child_1); - return ret.children.length; - }); - expect(count).toBe(2); - }); - - test('__AppendElement-__RemoveElement', async ({ page }, { title }) => { - const count = await page.evaluate(() => { - let ret = globalThis.__CreateView(0) as HTMLElement; - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateView(0); - globalThis.__AppendElement(ret, child_0); - globalThis.__AppendElement(ret, child_1); - globalThis.__RemoveElement(ret, child_0); - return ret.children.length; - }); - expect(count).toBe(1); - }); - - test('__InsertElementBefore', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let ret = globalThis.__CreateView(0); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - globalThis.__InsertElementBefore(ret, child_0, undefined); - globalThis.__InsertElementBefore(ret, child_1, child_0); - globalThis.__InsertElementBefore(ret, child_2, child_1); - return { - count: ret.children.length, - tags: [ - globalThis.__GetTag(ret.children[0]), - globalThis.__GetTag(ret.children[1]), - globalThis.__GetTag(ret.children[2]), - ], - }; - }); - expect(ret.count).toBe(3); - expect(ret.tags[0]).toBe('text'); - expect(ret.tags[1]).toBe('image'); - }); - - test('__FirstElement', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreateView(0); - let ret0 = globalThis.__FirstElement(root); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - globalThis.__InsertElementBefore(root, child_0, undefined); - globalThis.__InsertElementBefore(root, child_1, child_0); - globalThis.__InsertElementBefore(root, child_2, child_1); - let ret1 = globalThis.__FirstElement(root); - let ret_u = globalThis.__FirstElement(''); - return { - ret0, - ret_u, - ret1: globalThis.__GetTag(ret1), - }; - }); - expect(ret.ret0).toBeFalsy(); - expect(ret.ret_u).toBeFalsy(); - expect(ret.ret1).toBe('text'); - }); - - test('__LastElement', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreateView(0); - let ret0 = globalThis.__LastElement(root); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - globalThis.__InsertElementBefore(root, child_0, undefined); - globalThis.__InsertElementBefore(root, child_1, child_0); - globalThis.__InsertElementBefore(root, child_2, child_1); - let ret1 = globalThis.__LastElement(root); - let ret_u = globalThis.__LastElement('xxxx'); - return { - ret0, - ret_u, - ret1: globalThis.__GetTag(ret1), - }; - }); - expect(ret.ret0).toBeFalsy(); - expect(ret.ret_u).toBeFalsy(); - expect(ret.ret1).toBe('view'); - }); - - test('__NextElement', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreateView(0); - let ret0 = globalThis.__NextElement(root); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - globalThis.__InsertElementBefore(root, child_0, undefined); - globalThis.__InsertElementBefore(root, child_1, child_0); - globalThis.__InsertElementBefore(root, child_2, child_1); - let ret1 = globalThis.__NextElement(globalThis.__FirstElement(root)); - let ret_u = globalThis.__NextElement('xxxx'); - return { - ret0, - ret_u, - ret1: globalThis.__GetTag(ret1), - }; - }); - expect(ret.ret0).toBeFalsy(); - expect(ret.ret_u).toBeFalsy(); - expect(ret.ret1).toBe('image'); - }); - - test('__ReplaceElement', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - let ret0 = globalThis.__NextElement(root); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - let child_3 = globalThis.__CreateScrollView(0); - globalThis.__InsertElementBefore(root, child_0, undefined); - globalThis.__InsertElementBefore(root, child_1, child_0); - globalThis.__InsertElementBefore(root, child_2, child_1); - globalThis.__ReplaceElement(child_3, child_1); - let ret1 = globalThis.__NextElement(globalThis.__FirstElement(root)); - globalThis.__FlushElementTree(root); - globalThis.__ReplaceElement(child_1, child_1); - globalThis.__ReplaceElement(child_1, child_1); - return { - ret0, - ret1: globalThis.__GetTag(ret1), - }; - }); - expect(ret.ret0).toBeFalsy(); - expect(ret.ret1).toBe('scroll-view'); - }); - - test('__SwapElement', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreateView(0); - let ret = root; - let ret0 = globalThis.__NextElement(root); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - globalThis.__AppendElement(root, child_0); - globalThis.__AppendElement(root, child_1); - globalThis.__AppendElement(root, child_2); - globalThis.__SwapElement(child_0, child_1); - return { - ret0, - ret_children: [ - globalThis.__GetTag(ret.children[0]), - globalThis.__GetTag(ret.children[1]), - ], - }; - }); - expect(ret.ret0).toBeFalsy(); - expect(ret.ret_children[0]).toBe('image'); - expect(ret.ret_children[1]).toBe('view'); - }); - - test('__GetParent', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreateView(0); - let ret0 = globalThis.__NextElement(root); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - globalThis.__AppendElement(root, child_0); - globalThis.__AppendElement(root, child_1); - globalThis.__AppendElement(root, child_2); - let ret1 = globalThis.__GetParent(child_0); - let ret_u = globalThis.__GetParent('xxxx'); - return { - ret1: !!ret1, - ret_u, - }; - }); - expect(ret.ret1).toBe(true); - expect(ret.ret_u).toBe(undefined); - }); - - test('__GetChildren', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreateView(0); - let ret0 = globalThis.__NextElement(root); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - globalThis.__AppendElement(root, child_0); - globalThis.__AppendElement(root, child_1); - globalThis.__AppendElement(root, child_2); - let ret1 = globalThis.__GetChildren(root); - let ret_u = globalThis.__GetChildren('xxxxx'); - return { - ret0, - ret1, - ret_u, - }; - }); - expect(ret.ret0).toBeFalsy(); - expect(ret.ret_u).toBeFalsy(); - expect(Array.isArray(ret.ret1)).toBe(true); - expect(ret.ret1.length).toBe(3); - }); - - test('__ElementIsEqual', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let node1 = globalThis.__CreateView(0); - let node2 = globalThis.__CreateView(0); - let node3 = node1; - let ret0 = globalThis.__ElementIsEqual(node1, node2); - let ret1 = globalThis.__ElementIsEqual(node1, node3); - let ret2 = globalThis.__ElementIsEqual(node1, null); - return { - ret0, - ret1, - ret2, - }; - }); - expect(ret.ret0).toBe(false); - expect(ret.ret1).toBe(true); - expect(ret.ret2).toBe(false); - }); - - test('__GetElementUniqueID', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let node1 = globalThis.__CreateView(0); - let node2 = globalThis.__CreateView(0); - let ret0 = globalThis.__GetElementUniqueID(node1); - let ret1 = globalThis.__GetElementUniqueID(node2); - return { - ret0, - ret1, - }; - }); - expect(ret.ret0 + 1).toBe(ret.ret1); - }); - - test('__GetAttributes', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let node1 = globalThis.__CreateText(0); - globalThis.__SetAttribute(node1, 'test', 'test-value'); - let attr_map = globalThis.__GetAttributes(node1); - return attr_map; - }); - expect(ret.test).toBe('test-value'); - }); - - test('__GetAttributeByName', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - const page = globalThis.__CreatePage('page', 0); - globalThis.__SetAttribute(page, 'test-attr', 'val'); - globalThis.__FlushElementTree(); - return globalThis.__GetAttributeByName(page, 'test-attr'); - }); - expect(ret).toBe('val'); - }); - - test('__SetDataset', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - let node1 = globalThis.__CreateText(0); - globalThis.__SetDataset(node1, { 'test': 'test-value' }); - let ret_0 = globalThis.__GetDataset(node1); - globalThis.__AddDataset(node1, 'test1', 'test-value1'); - let ret_2 = globalThis.__GetDataByKey(node1, 'test1'); - globalThis.__AppendElement(root, node1); - globalThis.__AppendElement(root, node1); - globalThis.__FlushElementTree(); - return { - ret_0, - ret_2, - }; - }); - expect(ret.ret_0.test).toBe('test-value'); - expect(ret.ret_2).toBe('test-value1'); - }); - - test('__GetClasses', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let node1 = globalThis.__CreateText(0); - globalThis.__AddClass(node1, 'a'); - globalThis.__AddClass(node1, 'b'); - globalThis.__AddClass(node1, 'c'); - let class_1 = globalThis.__GetClasses(node1); - globalThis.__SetClasses(node1, 'c b a'); - let class_2 = globalThis.__GetClasses(node1); - return { - class_1, - class_2, - }; - }); - expect(ret.class_1.length).toBe(3); - expect(ret.class_1).toStrictEqual(['a', 'b', 'c']); - expect(ret.class_2.length).toBe(3); - expect(ret.class_2).toStrictEqual(['c', 'b', 'a']); - }); - - test('__UpdateComponentID', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let e1 = globalThis.__CreateComponent( - 0, - 'id1', - 0, - 'test_entry', - 'name', - 'path', - {}, - ); - let e2 = globalThis.__CreateComponent( - 0, - 'id2', - 0, - 'test_entry', - 'name', - 'path', - {}, - ); - globalThis.__UpdateComponentID(e1, 'id2'); - globalThis.__UpdateComponentID(e2, 'id1'); - return { - id1: globalThis.__GetComponentID(e1), - id2: globalThis.__GetComponentID(e2), - }; - }); - expect(ret.id1).toBe('id2'); - expect(ret.id2).toBe('id1'); - }); - - test('component-id-vs-parent-component-id', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - const root = globalThis.__CreatePage('page', 0); - let e1 = globalThis.__CreateComponent( - 0, - 'id1', - 0, - 'test_entry', - 'name', - 'path', - {}, - ); - globalThis.__AppendElement(root, e1); - globalThis.__FlushElementTree(); - return; - }); - const e1 = page.locator(`[${componentIdAttribute}="id1"]`); - }); - - test('__SetInlineStyles', async ({ page }, { title }) => { - await page.evaluate(() => { - const root = globalThis.__CreatePage('page', 0); - let target = globalThis.__CreateView(0); - globalThis.__SetID(target, 'target'); - globalThis.__SetInlineStyles(target, undefined); - globalThis.__SetInlineStyles(target, { - 'margin': '10px', - 'marginTop': '20px', - 'marginLeft': '30px', - 'marginRight': '20px', - 'marginBottom': '10px', - }); - globalThis.__AppendElement(root, target); - globalThis.__FlushElementTree(); - }); - const targetStyle = await page.locator(`#target`).getAttribute('style'); - expect(targetStyle).toContain('20px'); - expect(targetStyle).toContain('30px'); - expect(targetStyle).toContain('10px'); - }); - - test('__GetConfig__AddConfig', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - globalThis.__AddConfig(root, 'key1', 'value1'); - globalThis.__AddConfig(root, 'key2', 'value2'); - globalThis.__AddConfig(root, 'key3', 'value3'); - globalThis.__FlushElementTree(); - let config = globalThis.__GetConfig(root); - return { - config, - }; - }); - expect(ret.config.key1).toBe('value1'); - expect(ret.config.key2).toBe('value2'); - expect(ret.config.key3).toBe('value3'); - }); - - test('__AddInlineStyle', async ({ page }, { title }) => { - await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - globalThis.__AddInlineStyle(root, 26, '80px'); - globalThis.__FlushElementTree(); - }); - const pageElement = page.locator(`[lynx-tag='page']`); - await expect(pageElement).toHaveCSS('height', '80px'); - }); - - test('__AddInlineStyle_key_is_name', async ({ page }, { title }) => { - await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - globalThis.__AddInlineStyle(root, 'height', '80px'); - globalThis.__FlushElementTree(); - }); - const pageElement = page.locator(`[lynx-tag='page']`); - await expect(pageElement).toHaveCSS('height', '80px'); - }); - - test('__AddInlineStyle_raw_string', async ({ page }, { title }) => { - await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - globalThis.__SetInlineStyles(root, 'height:80px'); - globalThis.__FlushElementTree(); - }); - await expect(page.locator(`[lynx-tag='page']`)).toHaveCSS('height', '80px'); - }); - - test('complicated_dom_tree_opt', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let res = true; - let root = globalThis.__CreatePage('page', 0); - - let view_0 = globalThis.__CreateView(0); - let view_1 = globalThis.__CreateView(0); - let view_2 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [view_0, view_1, view_2], null); - - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_0, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_1, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_2, - ); - let view_3 = globalThis.__CreateView(0); - let view_4 = globalThis.__CreateView(0); - let view_5 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [view_3, view_4, view_5], [ - view_0, - view_1, - view_2, - ]); - - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_3, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_4, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_5, - ); - globalThis.__FlushElementTree(root); - - globalThis.__ReplaceElements(root, [view_0, view_1, view_2], [ - view_3, - view_4, - view_5, - ]); - globalThis.__ReplaceElements(root, [view_0, view_1, view_2], [ - view_0, - view_1, - view_2, - ]); - globalThis.__ReplaceElements(root, [view_0, view_1, view_2], [ - view_0, - view_1, - view_2, - ]); - globalThis.__ReplaceElements(root, [view_0, view_1, view_2], [ - view_0, - view_1, - view_2, - ]); - globalThis.__ReplaceElements(root, [view_0, view_1, view_2], [ - view_0, - view_1, - view_2, - ]); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_0, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_1, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_2, - ); - globalThis.__FlushElementTree(root); - return { - res, - }; - }); - expect(ret.res).toBe(true); - }); - - test('__ReplaceElements', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let res = true; - let root = globalThis.__CreatePage('page', 0); - let view_0 = globalThis.__CreateView(0); - let view_1 = globalThis.__CreateView(0); - let view_2 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [view_0, view_1, view_2], null); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_0, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_1, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_2, - ); - globalThis.__ReplaceElements(root, [view_2, view_1, view_0], [ - view_0, - view_1, - view_2, - ]); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_2, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_1, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_0, - ); - globalThis.__FlushElementTree(); - return { - res, - }; - }); - expect(ret.res).toBe(true); - }); - - test('__ReplaceElements_2', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let res = true; - let root = globalThis.__CreatePage('page', 0); - let view_0 = globalThis.__CreateView(0); - let view_1 = globalThis.__CreateView(0); - let view_2 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [view_0, view_1, view_2], null); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_0, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_1, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_2, - ); - let view_3 = globalThis.__CreateView(0); - let view_4 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [view_0, view_1, view_3, view_4], [ - view_0, - view_1, - ]); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_0, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_1, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_3, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[3], - view_4, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[4], - view_2, - ); - globalThis.__FlushElementTree(root); - let view_5 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [view_5], null); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[5], - view_5, - ); - globalThis.__FlushElementTree(root); - let view_6 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [view_6], [view_3]); - globalThis.__FlushElementTree(root); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_6, - ); - res &&= globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[3], - view_4, - ); - return { - res, - }; - }); - expect(ret.res).toBe(true); - }); - - test('__ReplaceElements_3', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let res = true; - let root = globalThis.__CreatePage('page', 0); - let view_0 = globalThis.__CreateView(0); - let view_1 = globalThis.__CreateView(0); - let view_2 = globalThis.__CreateView(0); - let view_3 = globalThis.__CreateView(0); - let view_4 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [ - view_0, - view_1, - view_2, - view_3, - view_4, - ], null); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_0, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_1, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_2, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[3], - view_3, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[4], - view_4, - ); - globalThis.__FlushElementTree(root); - - globalThis.__ReplaceElements(root, [view_1, view_0, view_2], [ - view_0, - view_1, - view_2, - ]); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_1, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_0, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_2, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[3], - view_3, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[4], - view_4, - ); - globalThis.__FlushElementTree(root); - - globalThis.__ReplaceElements(root, [view_1, view_0, view_3, view_2], [ - view_1, - view_0, - view_2, - view_3, - ]); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_1, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_0, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_3, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[3], - view_2, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[4], - view_4, - ); - globalThis.__FlushElementTree(root); - - let view_5 = globalThis.__CreateView(0); - globalThis.__ReplaceElements(root, [view_5], null); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[5], - view_5, - ); - globalThis.__FlushElementTree(root); - - globalThis.__ReplaceElements(root, [ - view_1, - view_3, - view_2, - view_0, - view_4, - ], [view_1, view_0, view_3, view_2, view_4]); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[0], - view_1, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[1], - view_3, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[2], - view_2, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[3], - view_0, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[4], - view_4, - ); - res = res - && globalThis.__ElementIsEqual( - globalThis.__GetChildren(root)[5], - view_5, - ); - globalThis.__FlushElementTree(root); - return { - res, - }; - }); - expect(ret.res).toBe(true); - }); - - test('with_querySelector', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let page = globalThis.__CreatePage('0', 0); - let parent = globalThis.__CreateComponent( - 0, - 'id1', - 0, - 'test_entry', - 'name', - 'path', - {}, - ); - globalThis.__AppendElement(page, parent); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateView(0); - let child_component = globalThis.__CreateComponent( - globalThis.__GetElementUniqueID(parent), - 'id2', - 0, - 'test_entry', - 'name', - 'path', - {}, - ); - let child_2 = globalThis.__CreateView(0); - globalThis.__AppendElement(parent, child_0); - globalThis.__AppendElement(parent, child_1); - globalThis.__AppendElement(parent, child_component); - globalThis.__AppendElement(child_component, child_2); - globalThis.__SetID(child_1, 'node_id'); - globalThis.__SetID(child_2, 'node_id_2'); - - globalThis.__FlushElementTree(); - let ret_node = document.getElementById('root').shadowRoot.querySelector( - '#node_id', - ); - let ret_id = ret_node?.getAttribute('id'); - - let ret_u = document.getElementById('root').shadowRoot.querySelector( - '#node_id_u', - ); - - let ret_child = document.getElementById('root').shadowRoot.querySelector( - '#node_id_2', - ); - let ret_child_id = ret_child?.getAttribute('id'); - - // let ret_child_u = parent.querySelector('#node_id_2'); - return { - ret_id, - ret_u, - ret_child_id, - // ret_child_u - }; - }); - expect(ret.ret_id).toBe('node_id'); - expect(ret.ret_u).toBe(null); - expect(ret.ret_child_id).toBe('node_id_2'); - // expect(ret.ret_child_u).toBe(null); - }); - - test('__setAttribute_null_value', async ({ page }, { title }) => { - await page.evaluate(() => { - const ret = globalThis.__CreatePage('page', 0); - globalThis.__SetAttribute(ret, 'test-attr', 'val'); - globalThis.__SetAttribute(ret, 'test-attr', null); - globalThis.__FlushElementTree(); - }); - await expect(page.locator(`[lynx-tag='page']`)).not.toHaveAttribute( - 'test-attr', - ); - }); - - test( - '__ReplaceElements should accept not array', - async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let root = globalThis.__CreatePage('page', 0); - let ret0 = globalThis.__NextElement(root); - let child_0 = globalThis.__CreateView(0); - let child_1 = globalThis.__CreateImage(0); - let child_2 = globalThis.__CreateText(0); - let child_3 = globalThis.__CreateScrollView(0); - globalThis.__InsertElementBefore(root, child_0, undefined); - globalThis.__InsertElementBefore(root, child_1, child_0); - globalThis.__InsertElementBefore(root, child_2, child_1); - globalThis.__ReplaceElements( - globalThis.__GetParent(child_3), - child_3, - child_1, - ); - let ret1 = globalThis.__NextElement(globalThis.__FirstElement(root)); - globalThis.__FlushElementTree(root); - globalThis.__ReplaceElements( - globalThis.__GetParent(child_1), - child_1, - child_1, - ); - globalThis.__ReplaceElements( - globalThis.__GetParent(child_1), - child_1, - child_1, - ); - return { - ret0, - ret1: globalThis.__GetTag(ret1), - }; - }); - expect(ret.ret0).toBeFalsy(); - expect(ret.ret1).toBe('scroll-view'); - }, - ); - - test( - 'create element infer css id from parent component id', - async ({ page }, { title }) => { - await wait(100); - await page.evaluate(() => { - const root = globalThis.__CreatePage('page', 0); - const parentComponent = globalThis.__CreateComponent( - 0, - 'id', - 100, // cssid - 'test_entry', - 'name', - 'path', - '', - {}, - ); - const parentComponentUniqueId = __GetElementUniqueID(parentComponent); - const view = globalThis.__CreateText(parentComponentUniqueId); - - globalThis.__AppendElement(root, view); - globalThis.__SetID(view, 'target'); - globalThis.__AppendElement(root, parentComponent); - globalThis.__FlushElementTree(); - return {}; - }); - await wait(100); - await expect(page.locator('#target')).toHaveAttribute( - cssIdAttribute, - '100', - ); - }, - ); - - test( - 'create element wont infer for cssid 0', - async ({ page }, { title }) => { - await page.evaluate(() => { - const root = globalThis.__CreatePage('page', 0); - const parentComponent = globalThis.__CreateComponent( - 0, - 'id', - 0, // cssid - 'test_entry', - 'name', - 'path', - '', - {}, - ); - const parentComponentUniqueId = __GetElementUniqueID(parentComponent); - const view = globalThis.__CreateText(parentComponentUniqueId); - - globalThis.__AppendElement(root, view); - globalThis.__SetID(view, 'target'); - globalThis.__AppendElement(root, parentComponent); - globalThis.__FlushElementTree(); - return {}; - }); - expect(page.locator('#target')).not.toHaveAttribute(cssIdAttribute); - }, - ); - - test( - '__GetElementUniqueID for incorrect fiber object', - async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - const root = globalThis.__CreatePage('page', 0); - const parentComponent = globalThis.__CreateComponent( - 0, - 'id', - 0, // cssid - 'test_entry', - 'name', - 'path', - '', - {}, - ); - const list = globalThis.__CreateList(0, () => {}, () => {}); - globalThis.__FlushElementTree(); - return { - root: __GetElementUniqueID(root), - parentComponent: __GetElementUniqueID(parentComponent), - list: __GetElementUniqueID(list), - nul: __GetElementUniqueID(null), - undef: __GetElementUniqueID(undefined), - randomObject: __GetElementUniqueID({}), - }; - }); - const { root, parentComponent, list, nul, undef, randomObject } = ret; - expect(root).toBeGreaterThanOrEqual(0); - expect(parentComponent).toBeGreaterThanOrEqual(0); - expect(list).toBeGreaterThanOrEqual(0); - expect(nul).toBe(-1); - expect(undef).toBe(-1); - expect(randomObject).toBe(-1); - }, - ); - - test( - '__AddInlineStyle_value_number_0', - async ({ page }, { title }) => { - await page.evaluate(() => { - const root = globalThis.__CreatePage('page', 0); - const view = globalThis.__CreateView(0); - globalThis.__AddInlineStyle(root, 24, 'flex'); // display: flex - globalThis.__AddInlineStyle(view, 51, 0); // flex-shrink:0; - globalThis.__SetID(view, 'target'); - globalThis.__AppendElement(root, view); - globalThis.__FlushElementTree(); - return {}; - }); - const inlineStyle = await page.locator('#target').getAttribute('style'); - expect(inlineStyle).toContain('flex-shrink'); - }, - ); - - test('publicComponentEvent', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let page = globalThis.__CreatePage('0', 0); - let parent = globalThis.__CreateComponent( - 0, - 'id1', - 0, - 'test_entry', - 'name', - 'path', - {}, - ); - let parentUid = globalThis.__GetElementUniqueID(parent); - let child = globalThis.__CreateView(parentUid); - globalThis.__AppendElement(page, parent); - globalThis.__AppendElement(parent, child); - globalThis.__SetID(parent, 'parent_id'); - globalThis.__SetID(child, 'child_id'); - globalThis.__AddEvent(child, 'bindEvent', 'tap', 'hname'); - globalThis.__SetInlineStyles(parent, { - 'display': 'flex', - }); - globalThis.__SetInlineStyles(child, { - 'width': '100px', - 'height': '100px', - }); - globalThis.__FlushElementTree(); - }); - await page.locator('#child_id').click({ force: true }); - await wait(100); - const publicComponentEventArgs = await page.evaluate(() => { - return globalThis.publicComponentEvent; - }); - await expect(publicComponentEventArgs.hname).toBe('hname'); - await expect(publicComponentEventArgs.componentId).toBe('id1'); - }); - - test( - '__MarkTemplate_and_Get_Parts', - async ({ page }, { title }) => { - test.skip(ENABLE_MULTI_THREAD, 'NYI for multi-thread'); - /* - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - const result = await page.evaluate(() => { - const root = globalThis.__CreatePage('page', 0); - const grandParentTemplate = globalThis.__CreateView(0); - globalThis.__MarkTemplateElement(grandParentTemplate); - let view = globalThis.__CreateView(0); - globalThis.__MarkPartElement(view, 'grandParentPart'); - globalThis.__AppendElement(grandParentTemplate, view); - const targetTemplate = globalThis.__CreateView(0); - globalThis.__MarkTemplateElement(targetTemplate); - globalThis.__AppendElement(view, targetTemplate); - view = globalThis.__CreateView(0); - globalThis.__AppendElement(targetTemplate, view); - const targetPart = globalThis.__CreateView(0); - globalThis.__MarkPartElement(targetPart, 'targetPart'); - globalThis.__AppendElement(view, targetPart); - const subTemplate = globalThis.__CreateView(0); - globalThis.__MarkTemplateElement(subTemplate); - globalThis.__AppendElement(targetPart, subTemplate); - const subPart = globalThis.__CreateView(0); - globalThis.__MarkPartElement(subPart, 'subPart'); - globalThis.__AppendElement(subTemplate, subPart); - globalThis.__FlushElementTree(); - return { - targetPartLength: - Object.keys(globalThis.__GetTemplateParts(targetTemplate)).length, - targetPartExist: - globalThis.__GetTemplateParts(targetTemplate)['targetPart'] - === targetPart, - }; - }); - expect(result.targetPartLength).toBe(1); - expect(result.targetPartExist).toBe(true); - }, - ); - - test.describe('__ElementFromBinary', () => { - test('should create a basic element from template', async ({ page }) => { - const result = await page.evaluate(() => { - const element = globalThis.__ElementFromBinary('test-template', 0)[0]; - return { - tag: globalThis.__GetTag(element), - }; - }); - expect(result.tag).toBe('view'); - }); - - test('should apply attributes from template', async ({ page }) => { - const result = await page.evaluate(() => { - const element = globalThis.__ElementFromBinary('test-template', 0)[0]; - return globalThis.__GetAttributes(element); - }); - expect(result.attr1).toBe('value1'); - }); - - test('should apply classes from template', async ({ page }) => { - const result = await page.evaluate(() => { - const element = globalThis.__ElementFromBinary('test-template', 0)[0]; - return globalThis.__GetClasses(element); - }); - expect(result).toEqual(['class1', 'class2']); - }); - - test('should apply id from template', async ({ page }) => { - const result = await page.evaluate(() => { - const element = globalThis.__ElementFromBinary('test-template', 0)[0]; - return globalThis.__GetID(element); - }); - expect(result).toBe('id-1'); - }); - - test('should create child elements from template', async ({ page }) => { - const result = await page.evaluate(() => { - const element = globalThis.__ElementFromBinary('test-template', 0)[0]; - const child = globalThis.__FirstElement(element); - return { - childTag: globalThis.__GetTag(child), - value: globalThis.__GetAttributes(child).value, - }; - }); - expect(result.childTag).toBe('text'); - expect(result.value).toBe('Hello from template'); - }); - - test('should apply events from template', async ({ page }) => { - const result = await page.evaluate(() => { - const element = globalThis.__ElementFromBinary('test-template', 0)[0]; - const events = globalThis.__GetEvents(element); - return events; - }); - expect(result.length).toBe(1); - expect(result[0].name).toBe('tap'); - expect(result[0].type).toBe('bindEvent'); - }); - - test('should mark part element', async ({ page }) => { - test.skip(ENABLE_MULTI_THREAD, 'NYI for multi-thread'); - const result = await page.evaluate(() => { - const element = globalThis.__ElementFromBinary('test-template', 0)[0]; - const child = globalThis.__FirstElement(element); - return { - targetPartLength: - Object.keys(globalThis.__GetTemplateParts(element)).length, - targetPartExist: globalThis.__GetTemplateParts(element)['id-2'] - === child, - }; - }); - expect(result.targetPartLength).toBe(1); - expect(result.targetPartExist).toBe(true); - }); - - test('should apply dataset from template', async ({ page }) => { - const result = await page.evaluate(() => { - const element = globalThis.__ElementFromBinary('test-template', 0)[0]; - return globalThis.__GetAttributes(element)['data-customdata']; - }); - expect(result).toBe('customdata'); - }); - }); - - test('__UpdateComponentInfo', async ({ page }, { title }) => { - const ret = await page.evaluate(() => { - let ele = globalThis.__CreateComponent( - 0, - 'id1', - 0, - 'test_entry', - 'name1', - 'path', - {}, - ); - globalThis.__UpdateComponentInfo(ele, { - componentID: 'id2', - cssID: 8, - name: 'name2', - }); - globalThis.__UpdateComponentInfo(ele, 'id1'); - return { - id: globalThis.__GetComponentID(ele), - cssID: globalThis.__GetAttributes(ele)['l-css-id'], - name: globalThis.__GetAttributes(ele).name, - }; - }); - expect(ret.id).toBe('id2'); - expect(ret.cssID).toBe('8'); - expect(ret.name).toBe('name2'); - }); - - test( - 'list update-list-info should insert at correct position', - async ({ page }, { title }) => { - const result = await page.evaluate(async () => { - const list = globalThis.__CreateList( - 0, - (list, listID, cellIndex, operationID, enableReuseNotification) => { - const item = globalThis.__CreateView(0); - item.setAttribute('data-content', 'B'); - globalThis.__AppendElement(list, item); - return globalThis.__GetElementUniqueID(item); - }, - (list, listID, sign) => {}, - ); - - const itemA = globalThis.__CreateView(0); - itemA.setAttribute('data-content', 'A'); - globalThis.__AppendElement(list, itemA); - - const updateInfo = { - insertAction: [ - { position: 0, type: 'type' }, - ], - removeAction: [], - }; - - globalThis.__SetAttribute(list, 'update-list-info', updateInfo); - - await new Promise(resolve => setTimeout(resolve, 0)); - - const children = list.children; - return { - count: children.length, - firstContent: children[0].getAttribute('data-content'), - secondContent: children[1].getAttribute('data-content'), - }; - }); - - expect(result.count).toBe(2); - expect(result.firstContent).toBe('B'); - expect(result.secondContent).toBe('A'); - }, - ); - - test( - 'list update-list-info should remove at correct position', - async ({ page }, { title }) => { - const result = await page.evaluate(async () => { - let recycledSign = -1; - const list = globalThis.__CreateList( - 0, - (list, listID, cellIndex, operationID, enableReuseNotification) => { - return 0; - }, - (list, listID, sign) => { - recycledSign = sign; - }, - ); - - const itemA = globalThis.__CreateView(0); - itemA.setAttribute('data-content', 'A'); - const itemB = globalThis.__CreateView(0); - itemB.setAttribute('data-content', 'B'); - const itemC = globalThis.__CreateView(0); - itemC.setAttribute('data-content', 'C'); - - globalThis.__AppendElement(list, itemA); - globalThis.__AppendElement(list, itemB); - globalThis.__AppendElement(list, itemC); - - const bUniqueId = globalThis.__GetElementUniqueID(itemB); - - const updateInfo = { - insertAction: [], - removeAction: [1], // Remove B - }; - - globalThis.__SetAttribute(list, 'update-list-info', updateInfo); - - await new Promise((resolve) => setTimeout(resolve, 0)); - - const children = list.children; - return { - count: children.length, - firstContent: children[0].getAttribute('data-content'), - secondContent: children[1].getAttribute('data-content'), - recycledSign: recycledSign, - expectedRecycledSign: bUniqueId, - }; - }); - - expect(result.count).toBe(2); - expect(result.firstContent).toBe('A'); - expect(result.secondContent).toBe('C'); - expect(result.recycledSign).toBe(result.expectedRecycledSign); - }, - ); - - test( - 'list update-list-info should handle mixed insert and remove', - async ({ page }, { title }) => { - const result = await page.evaluate(async () => { - const list = globalThis.__CreateList( - 0, - (list, listID, cellIndex, operationID, enableReuseNotification) => { - const item = globalThis.__CreateView(0); - item.setAttribute('data-content', 'D'); - globalThis.__AppendElement(list, item); - return globalThis.__GetElementUniqueID(item); - }, - (list, listID, sign) => {}, - ); - - const itemA = globalThis.__CreateView(0); - itemA.setAttribute('data-content', 'A'); - const itemB = globalThis.__CreateView(0); - itemB.setAttribute('data-content', 'B'); - const itemC = globalThis.__CreateView(0); - itemC.setAttribute('data-content', 'C'); - - globalThis.__AppendElement(list, itemA); - globalThis.__AppendElement(list, itemB); - globalThis.__AppendElement(list, itemC); - - // Initial: [A, B, C] - // Remove 1 (B) -> [A, C] - // Insert at 0 (D) -> [D, A, C] - - const updateInfo = { - insertAction: [{ position: 0, type: 'type' }], - removeAction: [1], - }; - - globalThis.__SetAttribute(list, 'update-list-info', updateInfo); - - await new Promise((resolve) => setTimeout(resolve, 0)); - - const children = list.children; - return { - count: children.length, - c0: children[0].getAttribute('data-content'), - c1: children[1].getAttribute('data-content'), - c2: children[2].getAttribute('data-content'), - }; - }); - - expect(result.count).toBe(3); - expect(result.c0).toBe('D'); - expect(result.c1).toBe('A'); - expect(result.c2).toBe('C'); - }, - ); - - test( - 'list update-list-info stress test with random operations', - async ({ page }, { title }) => { - const result = await page.evaluate(async () => { - // 1. Setup Initial State - const INITIAL_COUNT = 20; - const INSERT_COUNT = 10; - let uniqueCounter = INITIAL_COUNT; - const pendingInsertions: string[] = []; - - const list = globalThis.__CreateList( - 0, - (list, listID, cellIndex, operationID, enableReuseNotification) => { - const content = pendingInsertions.shift(); - const item = globalThis.__CreateView(0); - item.setAttribute('data-content', content || 'ERROR'); - globalThis.__AppendElement(list, item); - return globalThis.__GetElementUniqueID(item); - }, - (list, listID, sign) => {}, - ); - - // Populate initial list - const currentModel: string[] = []; - for (let i = 0; i < INITIAL_COUNT; i++) { - const content = i.toString(); - const item = globalThis.__CreateView(0); - item.setAttribute('data-content', content); - globalThis.__AppendElement(list, item); - currentModel.push(content); - } - - // 2. Generate Random Actions - // Phase A: Removals - // Randomly remove ~30% of items - const originalIndicesToRemove: number[] = []; - for (let i = 0; i < INITIAL_COUNT; i++) { - if (Math.random() < 0.3) { - originalIndicesToRemove.push(i); - } - } - // Remove from model (simulating the logic: removeAction indices are from original list) - // We need to remove them from currentModel. - // Since originalIndicesToRemove is sorted ascending, we can iterate from back to front to avoid index shifting issues when splicing? - // No, removeAction indices are "original indices". - // currentModel is [0, 1, 2, ...]. - // If we remove 1 and 3. - // Value '1' is at index 1. Value '3' is at index 3. - // So we just filter out values where parseInt(val) is in originalIndicesToRemove. - const modelAfterRemovals = currentModel.filter((val) => - !originalIndicesToRemove.includes(Number(val)) - ); - - // Phase B: Insertions - const insertAction: { position: number; type: string }[] = []; - const finalModel = [...modelAfterRemovals]; - - for (let i = 0; i < INSERT_COUNT; i++) { - // Random position in the CURRENT list (accumulated state) - const pos = Math.floor(Math.random() * (finalModel.length + 1)); - const content = (uniqueCounter++).toString(); - - finalModel.splice(pos, 0, content); - insertAction.push({ position: pos, type: 'stress' }); - pendingInsertions.push(content); - } - - // 3. Apply Update - const updateInfo = { - insertAction, - removeAction: originalIndicesToRemove, - }; - - globalThis.__SetAttribute(list, 'update-list-info', updateInfo); - - await new Promise((resolve) => setTimeout(resolve, 0)); - - // 4. Verification - const children = list.children; - const actualContent = Array.from(children).map((child) => - child.getAttribute('data-content') - ); - - return { - match: JSON.stringify(actualContent) === JSON.stringify(finalModel), - actual: actualContent, - expected: finalModel, - actions: { - remove: originalIndicesToRemove, - insert: insertAction, - }, - }; - }); - - expect(result.match).toBe(true); - if (!result.match) { - console.log( - 'Stress Test Failed Details:', - JSON.stringify(result, null, 2), - ); - } - }, - ); -}); diff --git a/packages/web-platform/web-tests/tests/server.bench.vitest.spec.ts b/packages/web-platform/web-tests/tests/server.bench.vitest.spec.ts deleted file mode 100644 index 97926b0d77..0000000000 --- a/packages/web-platform/web-tests/tests/server.bench.vitest.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { bench, expect, describe } from 'vitest'; -// @ts-expect-error -import { SSR, loadTemplate } from '../server.js'; - -const cases = { - 'basic-performance-div-10000': await loadTemplate( - 'basic-performance-div-10000', - ), - 'basic-performance-div-1000': await loadTemplate( - 'basic-performance-div-1000', - ), - 'basic-performance-div-100': await loadTemplate('basic-performance-div-100'), - 'basic-performance-nest-level-100': await loadTemplate( - 'basic-performance-nest-level-100', - ), - 'basic-performance-image-100': await loadTemplate( - 'basic-performance-image-100', - ), - 'basic-performance-scroll-view-100': await loadTemplate( - 'basic-performance-scroll-view-100', - ), - 'basic-performance-text-200': await loadTemplate( - 'basic-performance-text-200', - ), - 'basic-performance-large-css': await loadTemplate( - 'basic-performance-large-css', - ), - 'basic-performance-small-css': await loadTemplate( - 'basic-performance-small-css', - ), -}; -describe('server-tests', async () => { - for (const [testName, rawTemplate] of Object.entries(cases)) { - bench(testName, async () => { - const html = await SSR(rawTemplate, testName); - }); - } -}); diff --git a/packages/web-platform/web-tests/tests/server.vitest.spec.ts b/packages/web-platform/web-tests/tests/server.vitest.spec.ts deleted file mode 100644 index 22f814ba3d..0000000000 --- a/packages/web-platform/web-tests/tests/server.vitest.spec.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { test, expect, describe } from 'vitest'; -// @ts-expect-error -import { genTemplate } from '../server.js'; - -describe('server-tests', () => { - for ( - const testName of [ - 'basic-performance-div-10', - 'basic-performance-nest-level-100', - 'basic-performance-event-div-100', - ] - ) { - test(testName, async () => { - const html = await genTemplate(testName); - expect(html).toMatchSnapshot(); - }); - } - - test('config-css-selector-false-exchange-class', async () => { - const html = await genTemplate('config-css-selector-false-exchange-class'); - expect(html).toContain('[l-uid="2"]'); - }); - - test('basic-bindtap-contains-bind-event', async () => { - const html = await genTemplate('basic-bindtap'); - expect(html).toContain('bindEvent'); - }); -}); diff --git a/packages/web-platform/web-tests/tests/web-core.test.ts b/packages/web-platform/web-tests/tests/web-core.test.ts deleted file mode 100644 index 2b11987ad1..0000000000 --- a/packages/web-platform/web-tests/tests/web-core.test.ts +++ /dev/null @@ -1,752 +0,0 @@ -// Copyright 2024 The Lynx Authors. All rights reserved. -// Licensed under the Apache License Version 2.0 that can be found in the -// LICENSE file in the root directory of this source tree. -// @ts-nocheck -import { test, expect } from '@lynx-js/playwright-fixtures'; -import type { Page, Worker } from '@playwright/test'; - -const ENABLE_MULTI_THREAD = !!process.env.ENABLE_MULTI_THREAD; -const isSSR = !!process.env['ENABLE_SSR']; - -const wait = async (ms: number) => { - await new Promise((resolve) => { - setTimeout(resolve, ms); - }); -}; - -const goto = async (page: Page, title?: string) => { - let url = '/web-core.html'; - if (title) { - url += `?casename=${title}`; - } - - await page.goto(url, { - waitUntil: 'load', - }); - await wait(500); -}; - -async function getMainThreadWorker( - page: Page, -): Promise { - await wait(100); - if (!ENABLE_MULTI_THREAD) { - return page; - } else { - for (const i of page.workers()) { - const isActive = await i.evaluate(() => { - return globalThis.runtime !== undefined - && globalThis.__lynx_worker_type === 'main'; - }); - - if (isActive) { - return i; - } - } - } -} - -async function getBackgroundThreadWorker( - page: Page, -): Promise { - await wait(100); - for (const i of page.workers()) { - const isActive = await i.evaluate(() => { - return globalThis.runtime !== undefined - && globalThis.__lynx_worker_type === 'background'; - }); - - if (isActive) { - return i; - } - } -} - -test.describe('web core tests', () => { - test.skip(isSSR, 'not support ssr'); - test('selectComponent', async ({ page, browserName }) => { - // firefox not support - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => { - const root = globalThis.runtime.__CreatePage('0', '0', {}); - const element = globalThis.runtime.__CreateElement('view', '0', {}); - globalThis.runtime.__AppendElement(root, element); - const component = globalThis.runtime.__CreateComponent( - '1', - '0-13826000', - '0', - '', - '', - '', - {}, - {}, - ); - globalThis.runtime.__AddClass(component, 'wrapper'); - globalThis.runtime.__AppendElement(element, component); - }; - }); - const backWorker = await getBackgroundThreadWorker(page); - const isSuccess = await backWorker.evaluate(() => { - return new Promise(resolve => { - globalThis.runtime.lynx.getNativeApp().selectComponent( - 'card', - '.wrapper', - true, - (ids) => { - if (Array.isArray(ids) && ids[0] === '0-13826000') { - resolve(true); - } - }, - ); - }); - }); - await wait(1000); - expect(isSuccess).toBeTruthy(); - }); - test('lynx.requireModuleAsync', async ({ page, browserName }) => { - test.skip( - browserName === 'firefox' && ENABLE_MULTI_THREAD, - 'firefox flaky', - ); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - const worker = await getBackgroundThreadWorker(page); - const importedValue = await worker!.evaluate(async () => { - const { promise, resolve } = Promise.withResolvers(); - globalThis.runtime.lynx.requireModuleAsync( - 'manifest-chunk.js', - (_, exports) => { - resolve(exports); - }, - ); - return promise; - }); - expect(importedValue).toBe('hello'); - }); - test('lynx.requireModuleAsync-2', async ({ page, browserName }) => { - test.skip( - browserName === 'firefox' && ENABLE_MULTI_THREAD, - 'firefox flaky', - ); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - const worker = await getBackgroundThreadWorker(page); - const [hello, world] = await worker!.evaluate(async () => { - const chunk1 = Promise.withResolvers(); - const chunk2 = Promise.withResolvers(); - globalThis.runtime.lynx.requireModuleAsync( - 'manifest-chunk.js', - (_, exports) => { - chunk1.resolve(exports); - }, - ); - globalThis.runtime.lynx.requireModuleAsync( - 'manifest-chunk2.js', - (_, exports) => { - chunk2.resolve(exports); - }, - ); - return Promise.all([chunk1.promise, chunk2.promise]); - }); - expect(hello).toBe('hello'); - expect(world).toBe('world'); - }); - test('lynx.requireModule+sync', async ({ page, browserName }) => { - test.skip( - browserName === 'firefox' && ENABLE_MULTI_THREAD, - 'firefox flaky', - ); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - const worker = await getBackgroundThreadWorker(page); - const [hello, world] = await worker!.evaluate(async () => { - const chunk1 = Promise.withResolvers(); - const chunk2 = Promise.withResolvers(); - globalThis.runtime.lynx.requireModuleAsync( - 'manifest-chunk.js', - (_, exports) => { - chunk1.resolve(exports); - }, - ); - chunk2.resolve( - globalThis.runtime.lynx.requireModule('manifest-chunk2.js'), - ); - return Promise.all([chunk1.promise, chunk2.promise]); - }); - expect(hello).toBe('hello'); - expect(world).toBe('world'); - }); - - test('loadLepusChunk', async ({ page, browserName }) => { - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - const [success, fail] = await mainWorker!.evaluate(async () => { - return [ - globalThis.runtime.__LoadLepusChunk('manifest-chunk2.js'), - globalThis.runtime.__LoadLepusChunk('manifest-chunk8.js'), - ]; - }); - expect(success).toBe(true); - expect(fail).toBe(false); - }); - - test('api-nativeApp-readScript', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - await wait(3000); - const backWorker = await getBackgroundThreadWorker(page); - const jsonContent = await backWorker.evaluate(() => { - const nativeApp = globalThis.runtime.lynx.getNativeApp(); - return nativeApp.readScript('json'); - }); - await wait(100); - expect(jsonContent).toBe('{}'); - }); - test('registerDataProcessor-as-global-var-update', async ({ page, browserName }) => { - await goto(page); - const mainWorker = await getMainThreadWorker(page); - const registerDataProcessor = await mainWorker.evaluate(() => { - return globalThis.runtime.registerDataProcessor; - }); - expect(registerDataProcessor).toBe('pass'); - }); - - test('createJSObjectDestructionObserver', async ({ page, browserName }) => { - test.skip(); // https://github.com/microsoft/playwright/issues/34774 - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - const backgroundWorker = await getBackgroundThreadWorker(page); - const ret = await backgroundWorker!.evaluate(async () => { - const { promise, resolve } = Promise.withResolvers(); - let arrayCollected = false; - let obj = globalThis.runtime.lynx.getNativeApp() - .createJSObjectDestructionObserver( - () => { - arrayCollected = true; - resolve('destructionObserver'); - }, - ); - obj = null; - - let counter = 0; - (function allocateMemory() { - // Allocate 50000 functions — a lot of memory! - Array.from({ length: 50000 }, () => () => {}); - if (counter > 5000 || arrayCollected) return; - counter++; - // Use setTimeout to make each allocateMemory a different job - setTimeout(allocateMemory); - })(); - - setTimeout(() => { - let counter2 = 0; - (function allocateMemory() { - // Allocate 50000 functions — a lot of memory! - Array.from({ length: 50000 }, () => () => {}); - if (counter2 > 5000 || arrayCollected) return; - counter2++; - // Use setTimeout to make each allocateMemory a different job - setTimeout(allocateMemory); - })(); - }, 3000); - - return promise; - }); - expect(ret).toBe('destructionObserver'); - }); - - test('api-onNapiModulesCall-func', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - await wait(3000); - const backWorker = await getBackgroundThreadWorker(page); - let successCallback = false; - let successCallback2 = false; - await page.on('console', async (message) => { - if (message.text() === 'green') { - successCallback = true; - } - if (message.text() === 'LYNX-VIEW') { - successCallback2 = true; - } - }); - await backWorker.evaluate(() => { - const nativeApp = globalThis.runtime.lynx.getNativeApp(); - const colorStarter = globalThis[`napiLoaderOnRT${nativeApp.id}`].load( - 'color_environment', - ); - colorStarter.getColor(); - }); - await wait(100); - expect(successCallback).toBeTruthy(); - expect(successCallback2).toBeTruthy(); - }); - test('api-onNapiModulesCall-class', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - await wait(3000); - const backWorker = await getBackgroundThreadWorker(page); - let successCallback = false; - let successCallback2 = false; - await page.on('console', async (message) => { - if (message.text() === 'green') { - successCallback = true; - } - if (message.text() === 'LYNX-VIEW') { - successCallback2 = true; - } - }); - await backWorker.evaluate(() => { - const nativeApp = globalThis.runtime.lynx.getNativeApp(); - const colorStarter = globalThis[`napiLoaderOnRT${nativeApp.id}`].load( - 'color_environment', - ); - const engine = new colorStarter.ColorEngine(); - engine.getColor(); - }); - await wait(100); - expect(successCallback).toBeTruthy(); - expect(successCallback2).toBeTruthy(); - }); - test('api-onNapiModulesCall-dispatchNapiModules', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - await wait(3000); - const backWorker = await getBackgroundThreadWorker(page); - let successDispatchNapiModule = false; - await page.on('console', async (message) => { - if (message.text() === 'bts:lynx-view') { - successDispatchNapiModule = true; - } - }); - await backWorker.evaluate(() => { - const nativeApp = globalThis.runtime.lynx.getNativeApp(); - const eventMethod = globalThis[`napiLoaderOnRT${nativeApp.id}`].load( - 'event_method', - ); - eventMethod.bindEvent(); - }); - await wait(1000); - await page.evaluate(() => { - document.querySelector('lynx-view')?.click(); - }); - await wait(1000); - expect(successDispatchNapiModule).toBeTruthy(); - }); - test('api-i18n-resources-translation', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - const success = await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - if ( - JSON.stringify(globalThis.runtime._I18nResourceTranslation({ - locale: 'en', - channel: '1', - fallback_url: '', - })) === '{"hello":"hello","lynx":"lynx web platform1"}' - ) { - return true; - } - }); - await wait(2000); - expect(success).toBeTruthy(); - }); - test('event-i18n-resources-missed', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - let success = false; - await page.on('console', async (msg) => { - const event = await msg.args()[0]?.evaluate((e) => { - return { - type: e.type, - channel: e.detail?.channel, - }; - }); - if (!event || event.type !== 'i18nResourceMissed') { - return; - } - if (event.channel === '2') { - success = true; - } - }); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - globalThis.runtime._I18nResourceTranslation({ - locale: 'en', - channel: '2', - fallback_url: '', - }); - }); - await wait(2000); - expect(success).toBeTruthy(); - }); - test('api-update-i18n-resources', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - const first = await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - if ( - globalThis.runtime._I18nResourceTranslation({ - locale: 'en', - channel: '2', - fallback_url: '', - }) === undefined - ) { - return true; - } - }); - await wait(500); - await page.evaluate(() => { - document.querySelector('lynx-view').updateI18nResources([ - { - options: { - locale: 'en', - channel: '1', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform1', - }, - }, - { - options: { - locale: 'en', - channel: '2', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform2', - }, - }, - ], { - locale: 'en', - channel: '2', - fallback_url: '', - }); - }); - await wait(500); - const second = await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - if ( - JSON.stringify(globalThis.runtime._I18nResourceTranslation({ - locale: 'en', - channel: '2', - fallback_url: '', - })) === '{"hello":"hello","lynx":"lynx web platform2"}' - ) { - return true; - } - }); - await wait(500); - expect(first).toBeTruthy(); - expect(second).toBeTruthy(); - }); - test('api-get-i18n-resource-by-mts', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - await wait(500); - const backWorker = await getBackgroundThreadWorker(page); - const first = await backWorker?.evaluate(() => - globalThis.runtime.lynx.getNativeLynx().getI18nResource() === undefined - ); - await wait(500); - await mainWorker?.evaluate(() => { - globalThis.runtime._I18nResourceTranslation({ - locale: 'en', - channel: '1', - fallback_url: '', - }); - }); - const second = await backWorker?.evaluate(() => - JSON.stringify(globalThis.runtime.lynx.getNativeLynx().getI18nResource()) - === '{"hello":"hello","lynx":"lynx web platform1"}' - ); - expect(first).toBeTruthy(); - expect(second).toBeTruthy(); - }); - test('api-get-i18n-resource-by-lynx-update', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - await wait(500); - const backWorker = await getBackgroundThreadWorker(page); - const first = await backWorker?.evaluate(() => - globalThis.runtime.lynx.getNativeLynx().getI18nResource() === undefined - ); - await wait(500); - await page.evaluate(() => { - document.querySelector('lynx-view').updateI18nResources([ - { - options: { - locale: 'en', - channel: '1', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform1', - }, - }, - { - options: { - locale: 'en', - channel: '2', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform2', - }, - }, - ], { - locale: 'en', - channel: '2', - fallback_url: '', - }); - }); - await wait(500); - const second = await backWorker?.evaluate(() => - JSON.stringify(globalThis.runtime.lynx.getNativeLynx().getI18nResource()) - === '{"hello":"hello","lynx":"lynx web platform2"}' - ); - expect(first).toBeTruthy(); - expect(second).toBeTruthy(); - }); - test('api-onI18nResourceReady-by-mts', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - await wait(500); - let success = false; - await page.on('console', async (message) => { - if (message.text() === 'onI18nResourceReady') { - success = true; - } - }); - const backWorker = await getBackgroundThreadWorker(page); - await backWorker?.evaluate(() => { - globalThis.runtime.GlobalEventEmitter.addListener( - 'onI18nResourceReady', - () => { - console.log('onI18nResourceReady'); - }, - ); - }); - await wait(500); - await mainWorker?.evaluate(() => { - globalThis.runtime._I18nResourceTranslation({ - locale: 'en', - channel: '1', - fallback_url: '', - }); - }); - await wait(500); - expect(success).toBeTruthy(); - }); - test('api-onI18nResourceReady-by-lynx-update', async ({ page, browserName }) => { - // firefox dose not support this. - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - await wait(500); - let success = false; - await page.on('console', async (message) => { - if (message.text() === 'onI18nResourceReady') { - success = true; - } - }); - const backWorker = await getBackgroundThreadWorker(page); - await backWorker?.evaluate(() => { - globalThis.runtime.GlobalEventEmitter.addListener( - 'onI18nResourceReady', - () => { - console.log('onI18nResourceReady'); - }, - ); - }); - await wait(500); - await page.evaluate(() => { - document.querySelector('lynx-view').updateI18nResources([ - { - options: { - locale: 'en', - channel: '1', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform1', - }, - }, - { - options: { - locale: 'en', - channel: '2', - fallback_url: '', - }, - resource: { - hello: 'hello', - lynx: 'lynx web platform2', - }, - }, - ], { - locale: 'en', - channel: '2', - fallback_url: '', - }); - }); - await wait(500); - expect(success).toBeTruthy(); - }); - test('decode-css-in-js-warn', async ({ page, browserName }) => { - // firefox not support - test.skip(browserName === 'firefox'); - await goto(page, 'enable-css-selector-false'); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => { - const root = globalThis.runtime.__CreatePage('0', '0', {}); - const container = globalThis.runtime.__CreateElement('view', '0', {}); - globalThis.runtime.__SetAttribute(container, 'l-css-id', '-1'); - globalThis.runtime.__SetAttribute( - container, - 'style', - 'width: 100px;height: 100px; background-color: red', - ); - globalThis.runtime.__AppendElement(root, container); - globalThis.runtime.__AddClass(container, 'target'); - }; - }); - await wait(1000); - const height = await page.evaluate(() => - getComputedStyle(document.querySelector('lynx-view')).getPropertyValue( - 'height', - ) - ); - await wait(500); - expect(height).toBe('100px'); - }); - test('source-map-release', async ({ page, browserName }) => { - // firefox not support - test.skip(browserName === 'firefox'); - await goto(page); - const mainWorker = await getMainThreadWorker(page); - await mainWorker.evaluate(() => { - globalThis.runtime.renderPage = () => {}; - }); - const backWorker = await getBackgroundThreadWorker(page); - const isSuccess = await backWorker.evaluate(() => { - return new Promise(resolve => { - globalThis.runtime.lynx.getNativeApp().__SetSourceMapRelease({ - message: 'd73160119ef7e77776246caca2a7b98e', - }); - resolve( - globalThis.runtime.lynx.getNativeApp().__GetSourceMapRelease() - === 'd73160119ef7e77776246caca2a7b98e', - ); - }); - }); - await wait(1000); - expect(isSuccess).toBeTruthy(); - }); - test('should not throw error when removed immediately after connected', async ({ page }) => { - const errors: Error[] = []; - page.on('pageerror', (err) => { - errors.push(err); - }); - - await goto(page); - - // Evaluate in browser context - await page.evaluate(async () => { - // Verify DOM behavior assumption - const div = document.createElement('div'); - const shadow = div.attachShadow({ mode: 'open' }); - const style = document.createElement('style'); - shadow.appendChild(style); - document.body.appendChild(div); - if (!style.sheet) throw new Error('Sheet should exist when connected'); - - document.body.removeChild(div); - if (style.sheet) { - throw new Error('Sheet should be null when disconnected'); - } - - // Create a new lynx-view - const view = document.createElement('lynx-view'); - // Connect it - document.body.appendChild(view); - // Immediately disconnect it - document.body.removeChild(view); - - // Wait a bit to ensure microtasks run - await new Promise((resolve) => setTimeout(resolve, 100)); - }); - - expect(errors.length).toBe(0); - }); -}); diff --git a/packages/web-platform/web-tests/tsconfig.json b/packages/web-platform/web-tests/tsconfig.json index 7f5fb238a9..88cedaae15 100644 --- a/packages/web-platform/web-tests/tsconfig.json +++ b/packages/web-platform/web-tests/tsconfig.json @@ -9,7 +9,6 @@ ], "references": [ /** packages-start */ - { "path": "../web-elements/tsconfig.json" }, /** packages-end */ ], } diff --git a/packages/web-platform/web-tests/vitest.config.ts b/packages/web-platform/web-tests/vitest.config.ts deleted file mode 100644 index b7b37cc26b..0000000000 --- a/packages/web-platform/web-tests/vitest.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { defineConfig } from 'vitest/config'; -import codspeed from '@codspeed/vitest-plugin'; - -export default defineConfig({ - test: { - include: ['**/tests/*.vitest.spec.ts'], - exclude: ['**/tests/*.bench.vitest.spec.ts'], - name: 'web-platform/web-tests', - benchmark: { - include: ['**/tests/*.bench.vitest.spec.ts'], - }, - }, - plugins: [ - process.env['CI'] ? codspeed() : undefined, - ], -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4748e233da..a5bf93146d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1517,12 +1517,18 @@ importers: '@rspack/core': specifier: 1.7.7 version: 1.7.7(@swc/helpers@0.5.18) + css-loader: + specifier: ^7.1.4 + version: 7.1.4(@rspack/core@1.7.7(@swc/helpers@0.5.18))(webpack@5.105.2) nyc: specifier: ^17.1.0 version: 17.1.0 source-map-loader: specifier: ^5.0.0 version: 5.0.0(webpack@5.105.2) + style-loader: + specifier: ^4.0.0 + version: 4.0.0(webpack@5.105.2) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -9334,6 +9340,12 @@ packages: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} + style-loader@4.0.0: + resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.27.0 + style-to-js@1.1.16: resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} @@ -18687,6 +18699,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + style-loader@4.0.0(webpack@5.105.2): + dependencies: + webpack: 5.105.2 + style-to-js@1.1.16: dependencies: style-to-object: 1.0.8 From ad819db1e4168e2ace8375edccf2fa61f3687971 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 17:52:43 +0800 Subject: [PATCH 05/32] feat: support __QuerySelector and __InvokeUIMethod --- .../web-core-e2e/tests/reactlynx.spec.ts | 16 +++++ .../basic-ref-main-invoke-ui-method/index.jsx | 68 +++++++++++++++++++ .../crossThreadHandlers/queryNodes.ts | 6 +- .../registerInvokeUIMethodHandler.ts | 50 +++----------- ...sterTriggerElementMethodEndpointHandler.ts | 6 +- .../elementAPIs/createElementAPI.ts | 4 ++ .../ts/server/elementAPIs/createElementAPI.ts | 6 ++ 7 files changed, 114 insertions(+), 42 deletions(-) create mode 100644 packages/web-platform/web-core-e2e/tests/reactlynx/basic-ref-main-invoke-ui-method/index.jsx diff --git a/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts index 39b5a57368..6175fb00d1 100644 --- a/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts +++ b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts @@ -460,6 +460,22 @@ test.describe('reactlynx3 tests', () => { }, ); + test('basic-ref-main-invoke-ui-method', async ({ page }, { title }) => { + await goto(page, title); + await wait(100); + const scrollView = page.locator('#scroll-view'); + const scrollTopBefore = await scrollView.evaluate((node) => + node.scrollTop + ); + expect(scrollTopBefore).toBe(0); + await page.locator('#target').click(); + await wait(2000); + const scrollTopAfter = await scrollView.evaluate((node) => + node.scrollTop + ); + expect(scrollTopAfter).toBeGreaterThan(100); + }); + // lazy component test( 'basic-lazy-component', diff --git a/packages/web-platform/web-core-e2e/tests/reactlynx/basic-ref-main-invoke-ui-method/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-ref-main-invoke-ui-method/index.jsx new file mode 100644 index 0000000000..81fe471855 --- /dev/null +++ b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-ref-main-invoke-ui-method/index.jsx @@ -0,0 +1,68 @@ +import { useMainThreadRef, root } from '@lynx-js/react'; + +export const ScrollItem = (props) => { + // Calculate gradient angle based on index to create wave effect + const angle = 90 + 6 * props.index; + + return ( + + + ); +}; + +export const App = () => { + const scrollRef = useMainThreadRef(null); + + const handleTap = () => { + 'main thread'; + scrollRef.current?.invoke('autoScroll', { + rate: 120, + start: true, + }); + }; + + return ( + + + + Tap me to enable auto-scroll + + + + {Array.from({ length: 5 }).map((item, index) => ( + + ))} + + + ); +}; +root.render(); diff --git a/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/queryNodes.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/queryNodes.ts index 5630220edc..a3833048e6 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/queryNodes.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/queryNodes.ts @@ -4,6 +4,7 @@ import { ErrorCode, IdentifierType } from '../../../constants.js'; import type { LynxViewInstance } from '../LynxViewInstance.js'; +import { __QuerySelector } from '../elementAPIs/pureElementPAPIs.js'; export function queryNodes( lynxViewInstance: LynxViewInstance, @@ -68,7 +69,10 @@ export function queryNodes( if (first_only) { let targetElement: Element | null = null; try { - targetElement = queryRoot.querySelector(selector); + targetElement = __QuerySelector( + queryRoot as HTMLElement, + selector, + ) as Element | null; } catch (e) { console.error(`[lynx-web] cannot use selector: ${selector}`); error?.(ErrorCode.SELECTOR_NOT_SUPPORTED); diff --git a/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts index e47e63f475..85017c27b6 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerInvokeUIMethodHandler.ts @@ -6,25 +6,7 @@ import { queryNodes } from './queryNodes.js'; import { ErrorCode } from '../../../constants.js'; import { invokeUIMethodEndpoint } from '../../endpoints.js'; import type { LynxViewInstance } from '../LynxViewInstance.js'; - -const methodAlias: Record< - string, - (element: Element, params: unknown) => unknown -> = { - 'boundingClientRect': (element) => { - const rect = element.getBoundingClientRect(); - return { - id: element.id, - width: rect.width, - height: rect.height, - left: rect.left, - right: rect.right, - top: rect.top, - bottom: rect.bottom, - }; - }, -}; - +import { __InvokeUIMethod } from '../elementAPIs/pureElementPAPIs.js'; export function registerInvokeUIMethodHandler( rpc: Rpc, lynxViewInstance: LynxViewInstance, @@ -49,27 +31,15 @@ export function registerInvokeUIMethodHandler( true, root_unique_id, (element) => { - try { - const aliasMethod = methodAlias[method]; - const hasDomMethod = typeof (element as any)[method] === 'function'; - if (!aliasMethod && !hasDomMethod) { - code = ErrorCode.METHOD_NOT_FOUND; - } else { - if (aliasMethod) { - data = aliasMethod(element, params); - } else { - data = (element as any)[method](params); - } - code = ErrorCode.SUCCESS; - } - } catch (e) { - console.error( - `[lynx-web] invokeUIMethod: apply method failed with`, - e, - element, - ); - code = ErrorCode.PARAM_INVALID; - } + __InvokeUIMethod( + element as HTMLElement, + method, + params as object, + (res) => { + code = res.code; + data = res.data; + }, + ); }, (error) => { code = error; diff --git a/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts index a3ef8ef6df..feda5e156d 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/crossThreadHandlers/registerTriggerElementMethodEndpointHandler.ts @@ -6,6 +6,7 @@ import { triggerElementMethodEndpoint } from '../../endpoints.js'; import type { LynxViewInstance } from '../LynxViewInstance.js'; import type { ElementAnimationOptions } from '../../../types/index.js'; import { AnimationOperation } from '../../../constants.js'; +import { __QuerySelector } from '../elementAPIs/pureElementPAPIs.js'; export function registerTriggerElementMethodEndpointHandler( rpc: Rpc, @@ -25,7 +26,10 @@ export function registerTriggerElementMethodEndpointHandler( case AnimationOperation.START: animationMap.set( options.id, - lynxViewInstance.rootDom.querySelector(id)?.animate( + (__QuerySelector( + lynxViewInstance.rootDom as unknown as HTMLElement, + id, + ) as Element | null)?.animate( options.keyframes, options.timingOptions, ), diff --git a/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts index c16929c5ed..3061166cd3 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts @@ -36,6 +36,8 @@ import { __GetElementUniqueID, __GetTemplateParts, __UpdateListCallbacks, + __InvokeUIMethod, + __QuerySelector, } from './pureElementPAPIs.js'; import type { AddEventPAPI, @@ -525,6 +527,8 @@ export function createElementAPI( } }; })(), + __InvokeUIMethod, + __QuerySelector, __FlushElementTree: (_, options) => { const pipelineId = options?.pipelineOptions?.pipelineID; const backgroundThread = mtsBinding.lynxViewInstance.backgroundThread; diff --git a/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts b/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts index 8d17c01ac8..9b2345de27 100644 --- a/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts +++ b/packages/web-platform/web-core/ts/server/elementAPIs/createElementAPI.ts @@ -425,6 +425,12 @@ export function createElementAPI( id ?? '', ); }) as SetIDPAPI, + __InvokeUIMethod: () => { + throw new Error('Not yet Implemented'); + }, + __QuerySelector: () => { + throw new Error('Not yet Implemented'); + }, }, wasmContext, }; From 5342856b552299d0e99a696f3a8dcce892ed07be Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 19:18:24 +0800 Subject: [PATCH 06/32] fix: support legacy json template for lazy usage --- .../web-core/tests/template-manager.spec.ts | 43 +++++++++++++++++-- .../ts/client/decodeWorker/decode.worker.ts | 9 ++++ .../web-core/ts/types/PageConfig.ts | 1 + 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/packages/web-platform/web-core/tests/template-manager.spec.ts b/packages/web-platform/web-core/tests/template-manager.spec.ts index 9ccc2e146f..6bf10be98e 100644 --- a/packages/web-platform/web-core/tests/template-manager.spec.ts +++ b/packages/web-platform/web-core/tests/template-manager.spec.ts @@ -338,9 +338,46 @@ describe('Template Manager', () => { expect(mockLynxViewInstance.onStyleInfoReady).toHaveBeenCalled(); // Verify script decoding (LepusCode) - // The worker sends section: LepusCode with a blob URL map. - // TemplateManager handles this but doesn't expose the blob map directly easily in tests unless we mock the handler side effect or inspect mockLynxViewInstance. - // TemplateManager calls lynxViewInstance.onMTSScriptsLoaded(url, data). expect(mockLynxViewInstance.onMTSScriptsLoaded).toHaveBeenCalled(); }); + + test('should detect lazy appType from lepusCode.root prefix for json template', async () => { + const jsonContent = { + 'lepusCode': { + 'root': '(function (globDynamicComponentEntry) {})', + }, + 'pageConfig': {}, + }; + + const jsonString = JSON.stringify(jsonContent); + const encoded = new TextEncoder().encode(jsonString); + + const stream = new ReadableStream({ + start(controller) { + controller.enqueue(encoded); + controller.close(); + }, + }); + + (globalThis.fetch as any).mockResolvedValue({ + ok: true, + status: 200, + statusText: 'OK', + body: stream, + }); + + const templateUrl = 'http://example.com/lazy.json'; + await templateManager.fetchBundle( + templateUrl, + Promise.resolve(mockLynxViewInstance), + ); + + // Verify config has appType = lazy and isLazy = true + expect(mockLynxViewInstance.onPageConfigReady).toHaveBeenCalledWith( + expect.objectContaining({ + appType: 'lazy', + isLazy: 'true', + }), + ); + }); }); diff --git a/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts b/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts index 30dd1b7993..d7acfb234f 100644 --- a/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts +++ b/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts @@ -314,6 +314,15 @@ async function handleJSON( if (json.pageConfig) { config = { ...json.pageConfig }; } + if (json.lepusCode?.root && typeof json.lepusCode.root === 'string') { + const appType = json.appType + ?? (json.lepusCode.root.startsWith('(function (globDynamicComponentEntry') + ? 'lazy' + : 'card'); + config.appType = config.appType ?? appType; + config.isLazy = (appType === 'card') ? 'false' : 'true'; + } + if (overrideConfig) { config = { ...config, ...overrideConfig }; } diff --git a/packages/web-platform/web-core/ts/types/PageConfig.ts b/packages/web-platform/web-core/ts/types/PageConfig.ts index e40c7b8a20..b34774a52f 100644 --- a/packages/web-platform/web-core/ts/types/PageConfig.ts +++ b/packages/web-platform/web-core/ts/types/PageConfig.ts @@ -8,5 +8,6 @@ export interface PageConfig { defaultOverflowVisible: 'true' | 'false'; enableJSDataProcessor: 'true' | 'false'; isLazy: 'true' | 'false'; + appType?: string; cardType: string; } From fcf5baa77225e7ffe49fed49f86ce1aafc5d61a0 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 20:04:11 +0800 Subject: [PATCH 07/32] feat: Make `systemInfo` instance-specific and configurable via a new `browser-config` attribute on `LynxView`. --- .../ts/client/mainthread/Background.ts | 4 +- .../web-core/ts/client/mainthread/LynxView.ts | 42 +++++++++++++++++++ .../ts/client/mainthread/LynxViewInstance.ts | 22 ++++++---- .../mainthread/createMainThreadGlobalAPIs.ts | 6 +-- 4 files changed, 62 insertions(+), 12 deletions(-) diff --git a/packages/web-platform/web-core/ts/client/mainthread/Background.ts b/packages/web-platform/web-core/ts/client/mainthread/Background.ts index 438f268d99..45c2331f8a 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/Background.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/Background.ts @@ -33,7 +33,7 @@ import type { WorkerStartMessage, } from '../../types/index.js'; import { LynxCrossThreadContext } from '../LynxCrossThreadContext.js'; -import { systemInfo, type LynxViewInstance } from './LynxViewInstance.js'; +import { type LynxViewInstance } from './LynxViewInstance.js'; import { registerInvokeUIMethodHandler } from './crossThreadHandlers/registerInvokeUIMethodHandler.js'; import { registerNativePropsHandler } from './crossThreadHandlers/registerSetNativePropsHandler.js'; import { registerGetPathInfoHandler } from './crossThreadHandlers/registerGetPathInfoHandler.js'; @@ -155,7 +155,7 @@ export class BackgroundThread implements AsyncDisposable { this.#webWorker.postMessage( { mainThreadMessagePort: messageChannel.port2, - systemInfo, + systemInfo: this.#lynxViewInstance.systemInfo, initData, globalProps, cardType, diff --git a/packages/web-platform/web-core/ts/client/mainthread/LynxView.ts b/packages/web-platform/web-core/ts/client/mainthread/LynxView.ts index 20d0a27511..21e34dd0de 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/LynxView.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/LynxView.ts @@ -20,6 +20,13 @@ import( /* webpackFetchPriority: "high" */ './LynxViewInstance.js' ); +export interface BrowserConfig { + pixelRatio?: number; + pixelWidth?: number; + pixelHeight?: number; + [key: string]: any; +} + export type INapiModulesCall = ( name: string, data: any, @@ -79,6 +86,7 @@ export class LynxViewElement extends HTMLElement { 'url', 'global-props', 'init-data', + 'browser-config', ]; /** * @private @@ -111,6 +119,26 @@ export class LynxViewElement extends HTMLElement { */ onNapiModulesCall: NapiModulesCall | undefined; + #browserConfig?: BrowserConfig; + /** + * @public + * @property browserConfig + */ + get browserConfig(): BrowserConfig | undefined { + return this.#browserConfig; + } + set browserConfig(val: string | BrowserConfig | undefined) { + if (typeof val === 'string') { + try { + this.#browserConfig = JSON.parse(val); + } catch (e) { + console.error('Invalid browser-config', e); + } + } else { + this.#browserConfig = val; + } + } + constructor() { super(); if (!this.onNativeModulesCall) { @@ -309,6 +337,9 @@ export class LynxViewElement extends HTMLElement { case 'global-props': this.#globalProps = JSON.parse(newValue); break; + case 'browser-config': + this.browserConfig = JSON.parse(newValue); + break; case 'init-data': this.#initData = JSON.parse(newValue); break; @@ -390,6 +421,7 @@ export class LynxViewElement extends HTMLElement { this.nativeModulesMap, this.napiModulesMap, this.#initI18nResources, + this.browserConfig, ); }); templateManager.fetchBundle(this.#url, lynxViewInstance); @@ -401,10 +433,20 @@ export class LynxViewElement extends HTMLElement { }); } } + + #upgradeProperty(prop: string) { + if (Object.prototype.hasOwnProperty.call(this, prop)) { + const value = (this as any)[prop]; + delete (this as any)[prop]; + (this as any)[prop] = value; + } + } + /** * @private */ connectedCallback() { + this.#upgradeProperty('browserConfig'); if (this.url) { this.#url = this.url; } diff --git a/packages/web-platform/web-core/ts/client/mainthread/LynxViewInstance.ts b/packages/web-platform/web-core/ts/client/mainthread/LynxViewInstance.ts index 7dfe56757e..fba76452cf 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/LynxViewInstance.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/LynxViewInstance.ts @@ -43,13 +43,18 @@ linkElement.blocking = 'render'; const pixelRatio = window.devicePixelRatio; const screenWidth = window.screen.availWidth * pixelRatio; const screenHeight = window.screen.availHeight * pixelRatio; -export const systemInfo = Object.freeze({ - ...systemInfoBase, - // some information only available on main thread, we should read and pass to worker - pixelRatio, - pixelWidth: screenWidth, - pixelHeight: screenHeight, -}); +export function createSystemInfo( + browserConfig?: Record, +): Record { + return Object.freeze({ + ...systemInfoBase, + // some information only available on main thread, we should read and pass to worker + pixelRatio, + pixelWidth: screenWidth, + pixelHeight: screenHeight, + ...browserConfig, + }); +} export interface LynxViewConfigs { templateUrl: string; @@ -77,6 +82,7 @@ export class LynxViewInstance implements AsyncDisposable { #napiModulesMap: NapiModulesMap; lepusCodeUrls = new Map>(); + systemInfo: Record; constructor( public readonly parentDom: LynxViewElement, @@ -89,7 +95,9 @@ export class LynxViewInstance implements AsyncDisposable { nativeModulesMap: NativeModulesMap = {}, napiModulesMap: NapiModulesMap = {}, initI18nResources?: InitI18nResources, + browserConfig?: Record, ) { + this.systemInfo = createSystemInfo(browserConfig); this.rootDom.append(linkElement.cloneNode(false)); this.#nativeModulesMap = nativeModulesMap; this.#napiModulesMap = napiModulesMap; diff --git a/packages/web-platform/web-core/ts/client/mainthread/createMainThreadGlobalAPIs.ts b/packages/web-platform/web-core/ts/client/mainthread/createMainThreadGlobalAPIs.ts index 59baf00220..46323ab5a9 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/createMainThreadGlobalAPIs.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/createMainThreadGlobalAPIs.ts @@ -9,7 +9,7 @@ import type { MainThreadLynx, } from '../../types/index.js'; import { templateManager } from './TemplateManager.js'; -import { systemInfo, type LynxViewInstance } from './LynxViewInstance.js'; +import { type LynxViewInstance } from './LynxViewInstance.js'; function createMainThreadLynx( lynxViewInstance: LynxViewInstance, @@ -40,7 +40,7 @@ function createMainThreadLynx( markPipelineTiming: lynxViewInstance.backgroundThread.markTiming.bind( lynxViewInstance.backgroundThread, ), - SystemInfo: systemInfo, + SystemInfo: lynxViewInstance.systemInfo, setTimeout: setTimeoutBrowserImpl, clearTimeout: clearTimeoutBrowserImpl, setInterval: setIntervalBrowserImpl, @@ -54,7 +54,7 @@ export function createMainThreadGlobalAPIs( let releaseSetting = ''; return { __globalProps: lynxViewInstance.globalprops, - SystemInfo: systemInfo, + SystemInfo: lynxViewInstance.systemInfo, lynx: createMainThreadLynx( lynxViewInstance, ), From b16215df256c3fbb35883876579d741a5b45cbb3 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 20:29:00 +0800 Subject: [PATCH 08/32] fix: type selector for legacy json template --- .../ts/client/decodeWorker/cssLoader.ts | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts index 4a18a9e121..7ee7972373 100644 --- a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts +++ b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts @@ -1,3 +1,4 @@ +import type { Selector } from '../../encode/encodeCSS.js'; import { wasmInstance } from '../wasm.js'; interface CSSRule { @@ -97,11 +98,24 @@ export function loadStyleFromJSON( ); } -function parseAndPushSelector(selector: any, s: string) { +function parseAndPushSelector(selector: Selector, s: string) { if (s.startsWith('.')) { selector.push_one_selector_section('ClassSelector', s.substring(1)); } else if (s.startsWith('#')) { selector.push_one_selector_section('IdSelector', s.substring(1)); + } else if ( + s.startsWith('[') && s.startsWith('[lynx-tag=') && s.endsWith(']') + ) { + // Handling [lynx-tag="tag_name"] or [lynx-tag='tag_name'] or [lynx-tag=tag_name] + let tag = s.substring('[lynx-tag='.length, s.length - 1); + if ( + (tag.startsWith('"') && tag.endsWith('"')) + || (tag.startsWith('\'') && tag.endsWith('\'')) + ) { + tag = tag.substring(1, tag.length - 1); + } + const typeName = tag.includes('-') ? tag : `x-${tag}`; + selector.push_one_selector_section('TypeSelector', typeName); } else if (s.startsWith('[')) { // Attribute: [attr=val] // Remove enclosing [] @@ -110,12 +124,6 @@ function parseAndPushSelector(selector: any, s: string) { } else if (s === '*') { selector.push_one_selector_section('UniversalSelector', '*'); } else { - // Type selector - // It comes as [lynx-tag="div"] usually. - let content = s; - if (s.startsWith('[') && s.endsWith(']')) { - content = s.substring(1, s.length - 1); - } - selector.push_one_selector_section('AttributeSelector', content); + selector.push_one_selector_section('TypeSelector', s); } } From bbd8ac2466d589827bc62b8f7ef3cbaf398c20d0 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 20:43:25 +0800 Subject: [PATCH 09/32] fix: legacy root selector --- .../web-core/ts/client/decodeWorker/cssLoader.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts index 7ee7972373..22135d18a6 100644 --- a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts +++ b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts @@ -114,8 +114,12 @@ function parseAndPushSelector(selector: Selector, s: string) { ) { tag = tag.substring(1, tag.length - 1); } - const typeName = tag.includes('-') ? tag : `x-${tag}`; - selector.push_one_selector_section('TypeSelector', typeName); + if (tag === 'page') { + selector.push_one_selector_section('AttributeSelector', 'part="page"'); + } else { + const typeName = tag.includes('-') ? tag : `x-${tag}`; + selector.push_one_selector_section('TypeSelector', typeName); + } } else if (s.startsWith('[')) { // Attribute: [attr=val] // Remove enclosing [] From d3b1b519e8055ead699ad56e645d7322ccd6d6ec Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 10 Mar 2026 21:54:44 +0800 Subject: [PATCH 10/32] fix: support @keyframe in legacy json template --- .../tests/__snapshots__/encode.spec.ts.snap | 2 ++ .../web-core/tests/encode.spec.ts | 20 +++++++++++++++++++ .../ts/client/decodeWorker/cssLoader.ts | 18 +++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/packages/web-platform/web-core/tests/__snapshots__/encode.spec.ts.snap b/packages/web-platform/web-core/tests/__snapshots__/encode.spec.ts.snap index b42d23fb7d..82f9a8cbf4 100644 --- a/packages/web-platform/web-core/tests/__snapshots__/encode.spec.ts.snap +++ b/packages/web-platform/web-core/tests/__snapshots__/encode.spec.ts.snap @@ -10,6 +10,8 @@ exports[`encodeCSS > css cascading order 1`] = `".foo:not([l-e-name]){background exports[`encodeCSS > font-family-at-rule 1`] = `"@font-face{font-family:"MyFont";src:url('myfont.woff');}"`; +exports[`encodeCSS > keyframes-rule 1`] = `"@keyframes my-animation{from{opacity:0;}to{opacity:1;}}"`; + exports[`encodeCSS > non ascii characters 1`] = `".class145[[data-status="complete"]]:before:not([l-e-name]){content:"✓ ";}"`; exports[`encodeCSS > normal css 1`] = `".foo:not([l-e-name]){background:red;}"`; diff --git a/packages/web-platform/web-core/tests/encode.spec.ts b/packages/web-platform/web-core/tests/encode.spec.ts index 669fdfbbb2..9c6761ba27 100644 --- a/packages/web-platform/web-core/tests/encode.spec.ts +++ b/packages/web-platform/web-core/tests/encode.spec.ts @@ -241,6 +241,26 @@ describe('encodeCSS', () => { expect(decodedString.trim()).toMatchSnapshot(); }); + test('keyframes-rule', () => { + const cssMap = { + '0': CSS.parse(` + @keyframes my-animation { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + `).root, + }; + const buffer = encodeCSS(cssMap); + const decodedString = get_style_content( + decode_style_info(buffer, undefined, true), + ); + expect(decodedString.trim()).toMatchSnapshot(); + }); + test('scoped css', () => { const cssMap = { '1': CSS.parse(` diff --git a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts index 22135d18a6..f501198df9 100644 --- a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts +++ b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts @@ -1,4 +1,5 @@ import type { Selector } from '../../encode/encodeCSS.js'; +import type { RawStyleInfo } from '../../server/wasm.js'; import { wasmInstance } from '../wasm.js'; interface CSSRule { @@ -41,6 +42,9 @@ export function loadStyleFromJSON( // Actually, in the ecosystem, imports might not be fully supported in JSON mode yet or resolved differently. // I will log or ignore for now, focusing on Rules. } + if (info.content) { + parseAndPushContentRules(rawStyleInfo, cssId, info.content.join('\n')); + } // Handle rules for (const rule of info.rules) { @@ -131,3 +135,17 @@ function parseAndPushSelector(selector: Selector, s: string) { selector.push_one_selector_section('TypeSelector', s); } } + +function parseAndPushContentRules( + rawStyleInfo: RawStyleInfo, + cssId: number, + content: string, +) { + const rule = new wasmInstance.Rule('StyleRule'); + const prelude = new wasmInstance.RulePrelude(); + const selector = new wasmInstance.Selector(); + selector.push_one_selector_section('UnknownText', '{}' + content); // this is a hack We put it into selector section and use a {} to make the prior part be a valid rule (`{}` means corresponding block) + prelude.push_selector(selector); + rule.set_prelude(prelude); + rawStyleInfo.push_rule(cssId, rule); +} From fa68712dfc21d020362a66174b5fc948a5b81da8 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Wed, 11 Mar 2026 16:59:42 +0800 Subject: [PATCH 11/32] refactor: Adjust module loading paths, promote `wasm-feature-detect` to web-core dependencies, and update worker count assertion. --- packages/web-platform/web-core/package.json | 6 +++--- .../web-rsbuild-plugin/src/pluginWebPlatform.ts | 5 +++-- packages/web-platform/web-tests/tests/react.spec.ts | 2 +- pnpm-lock.yaml | 6 +++--- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/web-platform/web-core/package.json b/packages/web-platform/web-core/package.json index 1c562893c5..7808be4e9f 100644 --- a/packages/web-platform/web-core/package.json +++ b/packages/web-platform/web-core/package.json @@ -62,7 +62,8 @@ }, "dependencies": { "@lynx-js/web-elements": "workspace:*", - "@lynx-js/web-worker-rpc": "workspace:*" + "@lynx-js/web-worker-rpc": "workspace:*", + "wasm-feature-detect": "^1.8.0" }, "devDependencies": { "@lynx-js/css-serializer": "workspace:*", @@ -74,8 +75,7 @@ "eslint-plugin-compat": "^6.2.0", "fb-dotslash": "^0.5.8", "jsdom": "^27.4.0", - "tslib": "^2.8.1", - "wasm-feature-detect": "^1.8.0" + "tslib": "^2.8.1" }, "peerDependencies": { "@lynx-js/css-serializer": "workspace:*", diff --git a/packages/web-platform/web-rsbuild-plugin/src/pluginWebPlatform.ts b/packages/web-platform/web-rsbuild-plugin/src/pluginWebPlatform.ts index ec844c859f..9340963fb7 100644 --- a/packages/web-platform/web-rsbuild-plugin/src/pluginWebPlatform.ts +++ b/packages/web-platform/web-rsbuild-plugin/src/pluginWebPlatform.ts @@ -10,7 +10,8 @@ import type { RsbuildPlugin } from '@rsbuild/core'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); export const getNativeModulesPathRule = (nativeModulesPath: string) => ({ - test: /backgroundThread[\\/]background-apis[\\/]createNativeModules\.js$/, + test: + /client[\\/]background[\\/]background-apis[\\/]createNativeModules\.js$/, loader: path.resolve( __dirname, './loaders/native-modules.js', @@ -21,7 +22,7 @@ export const getNativeModulesPathRule = (nativeModulesPath: string) => ({ }); export const getNapiModulesPathRule = (napiModulesPath: string) => ({ - test: /backgroundThread[\\/]background-apis[\\/]createNapiLoader\.js$/, + test: /client[\\/]background[\\/]background-apis[\\/]createNapiLoader\.js$/, loader: path.resolve( __dirname, './loaders/napi-modules.js', diff --git a/packages/web-platform/web-tests/tests/react.spec.ts b/packages/web-platform/web-tests/tests/react.spec.ts index bc8b72fce6..3716b8fe36 100644 --- a/packages/web-platform/web-tests/tests/react.spec.ts +++ b/packages/web-platform/web-tests/tests/react.spec.ts @@ -1500,7 +1500,7 @@ test.describe('reactlynx3 tests', () => { document.body.querySelector('lynx-view')?.remove() ); await wait(100); - expect(page.workers().length).toBeLessThanOrEqual(0); + expect(page.workers().length).toBeLessThanOrEqual(1); }); test.describe('api-exposure', () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a5bf93146d..41db7ee4cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1323,6 +1323,9 @@ importers: '@lynx-js/web-worker-rpc': specifier: workspace:* version: link:../web-worker-rpc + wasm-feature-detect: + specifier: ^1.8.0 + version: 1.8.0 devDependencies: '@lynx-js/css-serializer': specifier: workspace:* @@ -1354,9 +1357,6 @@ importers: tslib: specifier: ^2.8.1 version: 2.8.1 - wasm-feature-detect: - specifier: ^1.8.0 - version: 1.8.0 packages/web-platform/web-core-e2e: devDependencies: From f5754fc20513110b03056fe2f6fd81e2f29bceba Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Wed, 11 Mar 2026 17:09:49 +0800 Subject: [PATCH 12/32] fix: Add nonce attribute to the iframe srcdoc script for CSP compliance. --- .../web-core/ts/client/mainthread/createIFrameRealm.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web-platform/web-core/ts/client/mainthread/createIFrameRealm.ts b/packages/web-platform/web-core/ts/client/mainthread/createIFrameRealm.ts index 5252c6ce7a..67c9426471 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/createIFrameRealm.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/createIFrameRealm.ts @@ -27,8 +27,8 @@ export async function createIFrameRealm(parent: Node): Promise { globalThis.addEventListener('message', listener); }); iframe.style.display = 'none'; - iframe.srcdoc = - ''; + iframe.srcdoc = ''; iframe.sandbox = 'allow-same-origin allow-scripts'; // Restrict capabilities for security iframe.loading = 'eager'; parent.appendChild(iframe); From d767345c7485fca67cc9fa382ac11651c70047e1 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:22:09 +0800 Subject: [PATCH 13/32] feat: Implement and test dynamic list item removal and insertion in ReactLynx by updating element API logic and adding a new e2e test. --- .../web-core-e2e/tests/reactlynx.spec.ts | 36 +++++++++++ .../index.css | 24 +++++++ .../index.jsx | 64 +++++++++++++++++++ .../elementAPIs/createElementAPI.ts | 25 ++++++-- .../web-core/ts/types/IElementPAPI.ts | 4 +- .../web-tests/tests/react.spec.ts | 15 ++--- 6 files changed, 150 insertions(+), 18 deletions(-) create mode 100644 packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-remove-action/index.css create mode 100644 packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-remove-action/index.jsx diff --git a/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts index 6175fb00d1..9e145ab835 100644 --- a/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts +++ b/packages/web-platform/web-core-e2e/tests/reactlynx.spec.ts @@ -4636,7 +4636,43 @@ test.describe('reactlynx3 tests', () => { await diffScreenShot(page, elementName, title, 'scroll-to-position'); }, ); + test( + 'basic-element-list-remove-action', + async ({ page }, { title }) => { + page.on('console', msg => console.log('[PAGE]', msg.text())); + test.skip(isSSR, 'not support on SSR'); + await goto(page, title); + + // Initial state: loading = true + // Expected: 1, 2, 3, 5 + await wait(500); + await expect(page.locator('list-item').count()).resolves.toBe(4); + let ids = await page.locator('list-item').evaluateAll((items) => + items.map((i) => i.id) + ); + expect(ids).toEqual(['1', '2', '3', '5']); + // First click: loading = false + // Expected: 1, 4, 5 + await page.locator('#target').click(); + await wait(1000); + await expect(page.locator('list-item').count()).resolves.toBe(3); + ids = await page.locator('list-item').evaluateAll((items) => + items.map((i) => i.id) + ); + expect(ids).toEqual(['1', '4', '5']); + + // Second click: loading = true + // Expected: 1, 2, 3, 5 + await page.locator('#target').click(); + await wait(1000); + await expect(page.locator('list-item').count()).resolves.toBe(4); + ids = await page.locator('list-item').evaluateAll((items) => + items.map((i) => i.id) + ); + expect(ids).toEqual(['1', '2', '3', '5']); + }, + ); test( 'basic-element-list-waterfall', async ({ page }, { title }) => { diff --git a/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-remove-action/index.css b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-remove-action/index.css new file mode 100644 index 0000000000..ad5c143f13 --- /dev/null +++ b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-remove-action/index.css @@ -0,0 +1,24 @@ +/* +// Copyright 2024 The Lynx Authors. All rights reserved. +// Licensed under the Apache License Version 2.0 that can be found in the +// LICENSE file in the root directory of this source tree. +*/ +.page { + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; +} + +list { + width: 100%; + height: 500px; +} + +list-item { + border-width: 5px; + border-color: green; + width: 100%; + height: 100px; + background-color: yellow; +} diff --git a/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-remove-action/index.jsx b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-remove-action/index.jsx new file mode 100644 index 0000000000..e81f5fb91a --- /dev/null +++ b/packages/web-platform/web-core-e2e/tests/reactlynx/basic-element-list-remove-action/index.jsx @@ -0,0 +1,64 @@ +// Copyright 2023 The Lynx Authors. All rights reserved. +// Licensed under the Apache License Version 2.0 that can be found in the +// LICENSE file in the root directory of this source tree. +import { root, useState, useEffect } from '@lynx-js/react'; +import './index.css'; + +function App() { + const [loading, setLoading] = useState(true); + const handleTap = () => setLoading(!loading); + + return ( + + + + + + + {loading + ? ( + <> + + + + + + ) + : ( + <> + + + + )} + + + + + ); +} + +root.render(); diff --git a/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts index 3061166cd3..2e41959d00 100644 --- a/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts +++ b/packages/web-platform/web-core/ts/client/mainthread/elementAPIs/createElementAPI.ts @@ -385,17 +385,32 @@ export function createElementAPI( const enqueueComponent = (element as DecoratedHTMLElement).enqueueComponent; const uniqueId = __GetElementUniqueID(element); + + removeAction.forEach((position, i) => { + const removedEle = element.children[position - i] as HTMLElement; + if (removedEle) { + const sign = __GetElementUniqueID(removedEle); + enqueueComponent?.(element, uniqueId, sign); + element.removeChild(removedEle); + } + }); for (const action of insertAction) { - componentAtIndex?.( + const childSign = componentAtIndex?.( element, uniqueId, action.position, 0, false, - ); - } - for (const action of removeAction) { - enqueueComponent?.(element, uniqueId, action.position); + ) as number | undefined; + if (typeof childSign === 'number') { + const childElement = wasmContext.get_dom_by_unique_id(childSign); + if (childElement) { + const referenceNode = element.children[action.position]; + if (referenceNode !== childElement) { + element.insertBefore(childElement, referenceNode || null); + } + } + } } }); } else { diff --git a/packages/web-platform/web-core/ts/types/IElementPAPI.ts b/packages/web-platform/web-core/ts/types/IElementPAPI.ts index 9ebd40702f..a929c89c32 100644 --- a/packages/web-platform/web-core/ts/types/IElementPAPI.ts +++ b/packages/web-platform/web-core/ts/types/IElementPAPI.ts @@ -197,9 +197,7 @@ export type UpdateListInfoAttributeValue = { insertAction: { position: number; }[]; - removeAction: { - position: number; - }[]; + removeAction: number[]; }; export type SetAttributePAPI = ( element: HTMLElement, diff --git a/packages/web-platform/web-tests/tests/react.spec.ts b/packages/web-platform/web-tests/tests/react.spec.ts index 3716b8fe36..f8c18883bf 100644 --- a/packages/web-platform/web-tests/tests/react.spec.ts +++ b/packages/web-platform/web-tests/tests/react.spec.ts @@ -95,13 +95,13 @@ test.describe('reactlynx3 tests', () => { // @ts-expect-error globalThis.lynxView.reload(); }); - await wait(100); + await wait(1000); expect( await page.evaluate(() => Array.from( document.querySelector('lynx-view')?.shadowRoot?.children || [], ) - .filter(i => i.getAttribute('lynx-tag') === 'page').length + .filter(i => i.getAttribute('part') === 'page').length ), ).toBe(1); }); @@ -994,13 +994,6 @@ test.describe('reactlynx3 tests', () => { }); }); test.describe('apis', () => { - test('api-custom-template-loader', async ({ page }, { title }) => { - test.skip(isSSR, 'No need to test on SSR'); - await goto(page, title); - await wait(100); - const target = page.locator('#target'); - await expect(target).toHaveCSS('background-color', 'rgb(0, 128, 0)'); // green - }); test('api-animation-event', async ({ page }, { title }) => { await goto(page, title); await page.locator('#tap1').click(); @@ -1296,7 +1289,7 @@ test.describe('reactlynx3 tests', () => { }); await wait(50); expect(message).toContain('fin'); - expect(page.workers().length).toStrictEqual(0); + expect(page.workers().length).toStrictEqual(1); }); test('api-error', async ({ page }, { title }) => { @@ -4679,11 +4672,13 @@ test.describe('reactlynx3 tests', () => { test( 'basic-element-list-remove-action', async ({ page }, { title }) => { + page.on('console', msg => console.log('[PAGE]', msg.text())); test.skip(isSSR, 'not support on SSR'); await goto(page, title); // Initial state: loading = true // Expected: 1, 2, 3, 5 + await wait(500); await expect(page.locator('list-item').count()).resolves.toBe(4); let ids = await page.locator('list-item').evaluateAll((items) => items.map((i) => i.id) From 9d5ac5df50eb54f5608618295faf27b5ce385a9f Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Thu, 12 Mar 2026 16:49:37 +0800 Subject: [PATCH 14/32] fix: scoped css support for json legacy bundle @pupiltong: gemini-3.1-pro-high is amazing --- .../ts/client/decodeWorker/cssLoader.ts | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts index f501198df9..9fdbca55c8 100644 --- a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts +++ b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts @@ -27,23 +27,18 @@ export function loadStyleFromJSON( // Handle imports if (info.imports) { - // imports in StyleInfo are filenames/hrefs, but RawStyleInfo expects cssIds. - // Wait, genStyleInfo output imports as string hrefs? - // RawStyleInfo: imports: Vec - // It seems genStyleInfo.ts produces imports array of strings, but RawStyleInfo needs integers. - // If the JSON only contains strings, we might have a problem mapping them back to IDs unless we have a map. - // However, WebEncodePlugin usually handles mapping. - // Let's check genStyleInfo again. - // node.type === 'ImportRule' => imports.push(node.href). - // If imports are paths, we can't easily convert to ID without extra info. - // BUT, current usage of imports in RawStyleInfo is strictly ID-based. - // If the input JSON has hrefs, we might skip imports or error. - // For now, I will omit imports if they are strings, or try to parse if they look like IDs. - // Actually, in the ecosystem, imports might not be fully supported in JSON mode yet or resolved differently. - // I will log or ignore for now, focusing on Rules. + info.imports.forEach(importIdStr => { + const importId = parseInt(importIdStr, 10); + if (!isNaN(importId)) { + rawStyleInfo.append_import(cssId, importId); + } + }); } if (info.content) { - parseAndPushContentRules(rawStyleInfo, cssId, info.content.join('\n')); + const contentStr = info.content.join('\n').trim(); + if (contentStr.length > 0) { + parseAndPushContentRules(rawStyleInfo, cssId, contentStr); + } } // Handle rules From e001c05d7fa3894005ccdbee71f8d8502d85f83a Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Thu, 12 Mar 2026 17:51:27 +0800 Subject: [PATCH 15/32] + fix --- packages/web-platform/web-tests/tests/react.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web-platform/web-tests/tests/react.spec.ts b/packages/web-platform/web-tests/tests/react.spec.ts index f8c18883bf..b79f53dc69 100644 --- a/packages/web-platform/web-tests/tests/react.spec.ts +++ b/packages/web-platform/web-tests/tests/react.spec.ts @@ -2136,7 +2136,7 @@ test.describe('reactlynx3 tests', () => { document.querySelector('lynx-view')!.setAttribute('height', '100vh'); document.querySelector('lynx-view')!.setAttribute( 'style', - 'width: 100vw; height: 100vh', + 'display:flex; width: 100vw; height: 100vh', ); }); await wait(100); From 553dbf9219b824d4721bf522c2d3a6770199fd11 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Thu, 12 Mar 2026 18:04:29 +0800 Subject: [PATCH 16/32] + CSR OK! --- .../web-core/ts/client/decodeWorker/cssLoader.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts index 9fdbca55c8..747a98f2e5 100644 --- a/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts +++ b/packages/web-platform/web-core/ts/client/decodeWorker/cssLoader.ts @@ -66,9 +66,16 @@ export function loadStyleFromJSON( parseAndPushSelector(selector, s); } for (const s of pseudoClass) { - // Strip leading : - const val = s.startsWith(':') ? s.substring(1) : s; - selector.push_one_selector_section('PseudoClassSelector', val); + if (s === '::part(input)::placeholder') { + selector.push_one_selector_section( + 'PseudoElementSelector', + 'placeholder', + ); + } else { + // Strip leading : + const val = s.startsWith(':') ? s.substring(1) : s; + selector.push_one_selector_section('PseudoClassSelector', val); + } } for (const s of pseudoElement) { // Strip leading :: From c5928b29a14ef8c449b063406e4a42e1e3e20f72 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Mon, 16 Mar 2026 14:14:41 +0800 Subject: [PATCH 17/32] + partial fix --- packages/web-platform/web-tests/package.json | 2 +- packages/web-platform/web-tests/server.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web-platform/web-tests/package.json b/packages/web-platform/web-tests/package.json index 648e65f7da..4d8092dec8 100644 --- a/packages/web-platform/web-tests/package.json +++ b/packages/web-platform/web-tests/package.json @@ -13,7 +13,7 @@ "bench": "vitest bench", "build": "pnpm dlx premove dist && pnpm run --stream \"/^build:.*/\"", "build:csr": "node ./scripts/generate-build-command.js", - "build:ssr": "pnpm dlx cross-env ENABLE_SSR=1 node ./scripts/generate-build-command.js", + "build:ssr": "pnpm dlx cross-env ENABLE_SSR=1 EXPERIMENTAL_USE_WEB_BINARY_TEMPLATE=true node ./scripts/generate-build-command.js", "coverage": "nyc report --cwd=$(realpath ../)", "coverage:ci": "nyc report --cwd=$(realpath ../) --reporter=lcov", "lh": "pnpm dlx @lhci/cli autorun", diff --git a/packages/web-platform/web-tests/server.js b/packages/web-platform/web-tests/server.js index 5fc68868d5..a270b1f4ce 100644 --- a/packages/web-platform/web-tests/server.js +++ b/packages/web-platform/web-tests/server.js @@ -6,7 +6,7 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); export async function loadTemplate(caseName) { return await readFile( - path.join(__dirname, 'dist', 'ssr', caseName, 'index.web.bundle'), + path.join(__dirname, 'dist', 'ssr', caseName, 'index.web.json'), ); } export async function SSR(rawTemplate, caseName, projectName = 'fp-only') { From 4731cbe06983360148a28f03c26ea0db047ff6ea Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Mon, 16 Mar 2026 15:41:25 +0800 Subject: [PATCH 18/32] + fix header --- .../web-core/ts/client/decodeWorker/decode.worker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts b/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts index d7acfb234f..34bc814bc4 100644 --- a/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts +++ b/packages/web-platform/web-core/ts/client/decodeWorker/decode.worker.ts @@ -110,7 +110,7 @@ self.onmessage = async ( try { const response = await fetch(fetchUrl, { headers: { - 'Content-Type': 'octet-stream', + 'Accept': 'application/octet-stream, application/json', }, }); if (!response.body || response.status !== 200) { From 86c00ba798f6e8f8e956b442a7f9ffbff364e991 Mon Sep 17 00:00:00 2001 From: pupiltong <12288479+PupilTong@users.noreply.github.com> Date: Tue, 17 Mar 2026 15:33:24 +0800 Subject: [PATCH 19/32] + implement FP support --- .../web-core/binary/server/server.d.ts | 2 + .../binary/server/server_bg.wasm.d.ts | 1 + packages/web-platform/web-core/css/index.css | 23 ++++++++- .../web-platform/web-core/eslint.config.js | 9 +++- packages/web-platform/web-core/package.json | 3 +- .../web-platform/web-core/rslib.config.ts | 47 +++++++++++++++++++ .../server/main_thread_server_context.rs | 21 ++++++++- .../__snapshots__/server-compat.spec.ts.snap | 6 +-- .../web-core/tests/server-compat.spec.ts | 7 ++- .../web-core/tests/server-ssr-bulk.spec.ts | 18 ++++--- .../web-core/tests/server-ssr.spec.ts | 8 +++- .../web-platform/web-core/ts/server/index.ts | 6 +++ .../web-platform/web-core/vitest.config.ts | 12 +++++ packages/web-platform/web-tests/server.js | 1 + pnpm-lock.yaml | 3 ++ 15 files changed, 150 insertions(+), 17 deletions(-) create mode 100644 packages/web-platform/web-core/rslib.config.ts diff --git a/packages/web-platform/web-core/binary/server/server.d.ts b/packages/web-platform/web-core/binary/server/server.d.ts index df48da420f..89d702763c 100644 --- a/packages/web-platform/web-core/binary/server/server.d.ts +++ b/packages/web-platform/web-core/binary/server/server.d.ts @@ -132,3 +132,5 @@ export function encode_legacy_json_generated_raw_style_info(raw_style_info: RawS export function get_font_face_content(buffer: Uint8Array): string; export function get_style_content(buffer: Uint8Array): string; + +export function init_server_in_shadow_css(css: string): void; diff --git a/packages/web-platform/web-core/binary/server/server_bg.wasm.d.ts b/packages/web-platform/web-core/binary/server/server_bg.wasm.d.ts index acf8521340..598a8b80a5 100644 --- a/packages/web-platform/web-core/binary/server/server_bg.wasm.d.ts +++ b/packages/web-platform/web-core/binary/server/server_bg.wasm.d.ts @@ -11,6 +11,7 @@ export const decode_style_info: (a: any, b: number, c: number, d: number) => [nu export const encode_legacy_json_generated_raw_style_info: (a: number, b: number, c: number, d: number) => [number, number, number]; export const get_font_face_content: (a: any) => [number, number, number, number]; export const get_style_content: (a: any) => [number, number, number, number]; +export const init_server_in_shadow_css: (a: number, b: number) => void; export const mainthreadservercontext_add_class: (a: number, b: number, c: number, d: number) => [number, number]; export const mainthreadservercontext_add_inline_style_raw_string_key: (a: number, b: number, c: number, d: number, e: number, f: number) => void; export const mainthreadservercontext_append_child: (a: number, b: number, c: number) => void; diff --git a/packages/web-platform/web-core/css/index.css b/packages/web-platform/web-core/css/index.css index 7ca316de77..36e52192f1 100644 --- a/packages/web-platform/web-core/css/index.css +++ b/packages/web-platform/web-core/css/index.css @@ -9,13 +9,18 @@ lynx-view { display: none; } +lynx-view[ssr] { + display: flex; +} + lynx-view[width="auto"] { --lynx-view-width: 100%; width: var(--lynx-view-width); inline-size: var(--lynx-view-width); } -lynx-view[height="auto"], lynx-view[width="auto"] { +lynx-view[height="auto"], +lynx-view[width="auto"] { contain: content; } @@ -29,51 +34,61 @@ lynx-view::part(page) { inherits: false; initial-value: linear; } + @property --lynx-linear-weight-sum { syntax: ""; inherits: false; initial-value: 1; } + @property --lynx-linear-weight { syntax: ""; inherits: false; initial-value: 0; } + @property --justify-content-column { syntax: "flex-start|flex-end|center|space-between|space-around"; inherits: false; initial-value: flex-start; } + @property --justify-content-column-reverse { syntax: "flex-start|flex-end|center|space-between|space-around"; inherits: false; initial-value: flex-start; } + @property --justify-content-row { syntax: "flex-start|flex-end|center|space-between|space-around"; inherits: false; initial-value: flex-start; } + @property --justify-content-row-reverse { syntax: "flex-start|flex-end|center|space-between|space-around"; inherits: false; initial-value: flex-start; } + @property --align-self-row { syntax: "start|end|center|stretch|auto"; inherits: false; initial-value: auto; } + @property --align-self-column { syntax: "start|end|center|stretch|auto"; inherits: false; initial-value: auto; } + @property --lynx-linear-weight-basis { syntax: "auto||"; inherits: false; initial-value: auto; } + @property --lynx-linear-orientation { syntax: ""; inherits: false; @@ -84,29 +99,35 @@ lynx-view::part(page) { syntax: "*"; inherits: false; } + @property --flex-wrap { syntax: "*"; inherits: false; } + @property --flex-grow { syntax: ""; inherits: false; initial-value: 0; } + @property --flex-shrink { syntax: ""; inherits: false; initial-value: 1; } + @property --flex-basis { syntax: "*"; inherits: false; initial-value: auto; } + @property --flex-value { syntax: "*"; inherits: false; } + @property --flex { syntax: "*"; inherits: false; diff --git a/packages/web-platform/web-core/eslint.config.js b/packages/web-platform/web-core/eslint.config.js index e0413a1622..0504eecffa 100644 --- a/packages/web-platform/web-core/eslint.config.js +++ b/packages/web-platform/web-core/eslint.config.js @@ -4,7 +4,14 @@ import tseslint from 'typescript-eslint'; export default defineConfig( compat.configs['flat/recommended'], { - ignores: ['dist/**', 'binary/**', 'css/**', 'scripts/**', 'tests/**'], + ignores: [ + 'dist/**', + 'binary/**', + 'css/**', + 'scripts/**', + 'tests/**', + '.rslib/**', + ], }, { files: ['**/*.ts'], diff --git a/packages/web-platform/web-core/package.json b/packages/web-platform/web-core/package.json index 7808be4e9f..afe672d5e4 100644 --- a/packages/web-platform/web-core/package.json +++ b/packages/web-platform/web-core/package.json @@ -47,7 +47,7 @@ "README.md" ], "scripts": { - "build": "rsbuild build", + "build": "rsbuild build && rslib build", "build:wasm": "node ./scripts/build.js", "test": "vitest run" }, @@ -71,6 +71,7 @@ "@rsbuild/core": "catalog:rsbuild", "@rsbuild/plugin-eslint": "1.2.1", "@rsbuild/plugin-source-build": "1.0.4", + "@rslib/core": "^0.19.6", "binaryen": "^125.0.0", "eslint-plugin-compat": "^6.2.0", "fb-dotslash": "^0.5.8", diff --git a/packages/web-platform/web-core/rslib.config.ts b/packages/web-platform/web-core/rslib.config.ts new file mode 100644 index 0000000000..468b57f35e --- /dev/null +++ b/packages/web-platform/web-core/rslib.config.ts @@ -0,0 +1,47 @@ +import { defineConfig } from '@rslib/core'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const cleanJsFiles = (dir: string) => { + if (!fs.existsSync(dir)) return; + for (const file of fs.readdirSync(dir)) { + const fullPath = path.join(dir, file); + if (fs.statSync(fullPath).isDirectory()) { + cleanJsFiles(fullPath); + } else if (fullPath.endsWith('.js')) { + fs.unlinkSync(fullPath); + } + } +}; + +cleanJsFiles(path.join(__dirname, 'dist/server')); + +export default defineConfig({ + lib: [ + { + format: 'esm', + syntax: 'esnext', + dts: false, + }, + ], + source: { + entry: { + index: './ts/server/index.ts', + }, + }, + output: { + target: 'node', + externals: [ + /\.wasm$/, + /binary\/server\/.*\.js$/, + ], + cleanDistPath: false, + distPath: { + root: './dist/server', + }, + }, +}); diff --git a/packages/web-platform/web-core/src/main_thread/server/main_thread_server_context.rs b/packages/web-platform/web-core/src/main_thread/server/main_thread_server_context.rs index bb032eba3e..f966b0699a 100644 --- a/packages/web-platform/web-core/src/main_thread/server/main_thread_server_context.rs +++ b/packages/web-platform/web-core/src/main_thread/server/main_thread_server_context.rs @@ -12,8 +12,20 @@ use crate::style_transformer::{ use crate::template::template_sections::style_info::css_property::CSSProperty; use crate::template::template_sections::style_info::StyleSheetResource; use std::borrow::Cow; +use std::cell::RefCell; use wasm_bindgen::prelude::*; +thread_local! { + static SERVER_IN_SHADOW_CSS: RefCell = RefCell::new(String::new()); +} + +#[wasm_bindgen] +pub fn init_server_in_shadow_css(css: &str) { + SERVER_IN_SHADOW_CSS.with(|cell| { + *cell.borrow_mut() = css.to_string(); + }); +} + #[wasm_bindgen] pub struct MainThreadServerContext { elements: Vec>, @@ -263,12 +275,15 @@ impl MainThreadServerContext { pub fn generate_html(&self, element_id: usize) -> String { let mut buffer = String::with_capacity(4096); - buffer.push_str("