feat: initial commit for web-core-server#772
Conversation
web-core-server is the server-side package for web-core It's mainly designed for SSR. We'll consider the server-side bts in the future.
🦋 Changeset detectedLatest commit: 0e3f903 The changes in this PR will be included in the next version bump. This PR includes changesets to release 6 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Bundle ReportChanges will increase total bundle size by 3.69kB (0.58%) ⬆️. This is within the configured threshold ✅ Detailed changes
Affected Assets, Files, and Routes:view changes for bundle: @lynx-js/example-react-lynx-cjsAssets Changed:
view changes for bundle: @lynx-js/web-explorer-web-array-pushAssets Changed:
|
CodSpeed Performance ReportMerging #772 will not alter performanceComparing Summary
Benchmarks breakdown
|
❌ 2 Tests Failed:
View the top 2 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
There was a problem hiding this comment.
Pull Request Overview
This PR introduces the initial implementation of the web-core-server package that supports SSR through leveraging web workers and establishes testing and benchmarking configurations for the web platform.
- Updated the web-worker-runtime to use globalThis for event handling.
- Added several testing configurations (Vitest, Playwright, benchmark workflows) and package references for integration.
- Introduced the web-core-server package with template loading, main thread polyfills, and SSR view creation.
Reviewed Changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/web-platform/web-worker-runtime/src/index.ts | Changed the event handling from self.onmessage to globalThis.onmessage. |
| packages/web-platform/web-tests/vitest.config.ts | Configured Vitest with custom inclusion, exclusion, and benchmark settings. |
| packages/web-platform/web-tests/tsconfig.json | Added project references for improved project structure and dependency management. |
| packages/web-platform/web-tests/tests/* | Added test files for server rendering and benchmarks. |
| packages/web-platform/web-core-server/* | Introduced the main package implementation for SSR with helper utilities and polyfills. |
| packages/web-platform/offscreen-document/* | Exported and refactored symbols to support innerHTML extraction. |
| .github/workflows/workflow-bench.yml | Tweaked benchmark workflow command to include workspace concurrency. |
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @lynx-js/runtime-wrapper-webpack-plugin@0.1.0 ### Minor Changes - Add parameter forwarding for Browser Object Model (BOM) APIs. ([#787](#787)) This allows direct access to APIs like `fetch`, `requestAnimationFrame`. ## @lynx-js/react@0.108.1 ### Patch Changes - Bump swc_core v23.2.0. ([#827](#827)) ## @lynx-js/rspeedy@0.9.5 ### Patch Changes - Support `source.preEntry`. ([#750](#750)) Add a script before the entry file of each page. This script will be executed before the page code. It can be used to execute global logics, such as injecting polyfills, setting global styles, etc. example: ```js import { defineConfig } from "@lynx-js/rspeedy"; export default defineConfig({ source: { preEntry: "./src/polyfill.ts", }, }); ``` - Bump Rsbuild v1.3.20 with Rspack v1.3.10. ([#799](#799)) - Add `callerName` option to `createRspeedy`. ([#757](#757)) It can be accessed by Rsbuild plugins through [`api.context.callerName`](https://rsbuild.dev/api/javascript-api/instance#contextcallername), and execute different logic based on this identifier. ```js export const myPlugin = { name: "my-plugin", setup(api) { const { callerName } = api.context; if (callerName === "rslib") { // ... } else if (callerName === "rspeedy") { // ... } }, }; ``` - Support `performance.buildCache`. ([#766](#766)) - Updated dependencies \[[`fbc4fbb`](fbc4fbb)]: - @lynx-js/webpack-dev-transport@0.1.3 ## @lynx-js/react-rsbuild-plugin@0.9.10 ### Patch Changes - Updated dependencies \[[`e599635`](e599635), [`c38c737`](c38c737), [`d16522e`](d16522e)]: - @lynx-js/template-webpack-plugin@0.6.11 - @lynx-js/web-webpack-plugin@0.6.7 - @lynx-js/runtime-wrapper-webpack-plugin@0.1.0 - @lynx-js/react-alias-rsbuild-plugin@0.9.10 - @lynx-js/react-refresh-webpack-plugin@0.3.2 - @lynx-js/react-webpack-plugin@0.6.13 - @lynx-js/css-extract-webpack-plugin@0.5.3 ## @lynx-js/offscreen-document@0.0.3 ### Patch Changes - feat: support OffscreenDocument.innerHTML ([#772](#772)) ## @lynx-js/web-constants@0.13.2 ### Patch Changes - fix: corrupt mainthread module cache ([#806](#806)) - Updated dependencies \[]: - @lynx-js/web-worker-rpc@0.13.2 ## @lynx-js/web-core@0.13.2 ### Patch Changes - feat: allow lynx code to get JS engine provided properties on globalThis ([#786](#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](#807)) <https://v8.dev/blog/explicit-compile-hints> - feat: add new property `inject-style-rules` for LynxView ([#785](#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](#806)) - Updated dependencies \[[`03a5f64`](03a5f64), [`6d3d852`](6d3d852), [`8cdd288`](8cdd288), [`6d3d852`](6d3d852)]: - @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 ## @lynx-js/web-core-server@0.13.2 ### Patch Changes - perf: use v8 hint for generated javascript file ([#807](#807)) <https://v8.dev/blog/explicit-compile-hints> - fix: corrupt mainthread module cache ([#806](#806)) - feat: improve template js loading ([#807](#807)) now we will create temp js file based on the new `templateName` argument. ## @lynx-js/web-elements@0.7.2 ### Patch Changes - refactor: split shadowroot templates into a package ([#811](#811)) We're going to implement Lynx Web Platform's SSR based on the `shadowrootmode`. `https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/shadowRootMode` (chrome 111, firefox 123, safari 16.4) This means those modern browsers are able to show the correct layout before the web components are defined. To make this work, we have to split the shadowroot template string into a new package `@lynx-js/web-elements-template`. No features affected. - Updated dependencies \[[`ae9652a`](ae9652a), [`ae9652a`](ae9652a)]: - @lynx-js/web-elements-template@0.7.2 - @lynx-js/web-elements-reactive@0.2.2 ## @lynx-js/web-elements-reactive@0.2.2 ### Patch Changes - feat: do not create shadowroot if there already have one ([#811](#811)) the shadowroot may already be created by <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/shadowRootMode> ## @lynx-js/web-elements-template@0.7.2 ### Patch Changes - refactor: split shadowroot templates into a package ([#811](#811)) We're going to implement Lynx Web Platform's SSR based on the `shadowrootmode`. `https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement/shadowRootMode` (chrome 111, firefox 123, safari 16.4) This means those modern browsers are able to show the correct layout before the web components are defined. To make this work, we have to split the shadowroot template string into a new package `@lynx-js/web-elements-template`. No features affected. ## @lynx-js/web-explorer@0.0.8 ### Patch Changes - chore: import qr-scanner from unpkg ([#815](#815)) ## @lynx-js/web-mainthread-apis@0.13.2 ### Patch Changes - feat: allow lynx code to get JS engine provided properties on globalThis ([#786](#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](#806)) - Updated dependencies \[[`8cdd288`](8cdd288)]: - @lynx-js/web-constants@0.13.2 ## @lynx-js/web-worker-runtime@0.13.2 ### Patch Changes - feat: allow lynx code to get JS engine provided properties on globalThis ([#786](#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](#772)) - Updated dependencies \[[`03a5f64`](03a5f64), [`8cdd288`](8cdd288), [`6d3d852`](6d3d852)]: - @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 ## @lynx-js/template-webpack-plugin@0.6.11 ### Patch Changes - Be compatible with rspack-manifest-plugin. ([#812](#812)) Now only the `[name].lynx.bundle` and `[name].web.bundle` would exist in `manifest.json`. See [#763](#763) for details. - Avoid CSS encode crash on Web platform. ([#814](#814)) ## @lynx-js/web-webpack-plugin@0.6.7 ### Patch Changes - Be compatible with rspack-manifest-plugin. ([#812](#812)) Now only the `[name].lynx.bundle` and `[name].web.bundle` would exist in `manifest.json`. See [#763](#763) for details. ## @lynx-js/webpack-dev-transport@0.1.3 ### Patch Changes - Fix live-reload not working on Lynx 3.3 ([#795](#795)) ## create-rspeedy@0.9.5 ## @lynx-js/react-alias-rsbuild-plugin@0.9.10 ## upgrade-rspeedy@0.9.5 ## @lynx-js/web-worker-rpc@0.13.2 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
web-core-server is the server-side package for web-core
It's mainly designed for SSR. We'll consider the server-side bts in the future.
#52