diff --git a/clo/README.md b/clo/README.md index 191be01692f..b21d48ce933 100644 --- a/clo/README.md +++ b/clo/README.md @@ -5,17 +5,19 @@ This example demos a basic host application loading remote component. - `host` is the host application (cra-based). - `remote` standalone application (cra-based) which exposes `Button` component. -# Running Demo +## Setup -Run `pnpm run start`. This will build and serve both `host` and `remote` on ports 3001 and 3002 respectively. +Run `pnpm install` in this directory to install dependencies for both `host` and `remote`. -- [localhost:3001](http://localhost:3000/) (HOST) -- [localhost:3002](http://localhost:3002/) (STANDALONE REMOTE) +## Running Demo + +Run `pnpm run start`. This will build and serve both `host` and `remote` on ports 3000 and 3002 respectively. -# Running Cypress E2E Tests +- [localhost:3000](http://localhost:3000/) (HOST) +- [localhost:3002](http://localhost:3002/) (STANDALONE REMOTE) -To run tests in interactive mode, run `npm run cypress:debug` from the root directory of the project. It will open Cypress Test Runner and allow to run tests in interactive mode. [More info about "How to run tests"](../../cypress-e2e/README.md#how-to-run-tests) +## Running Playwright E2E Tests -To build app and run test in headless mode, run `yarn e2e:ci`. It will build app and run tests for this workspace in headless mode. If tets failed cypress will create `cypress` directory in sample root folder with screenshots and videos. +To run tests in interactive UI mode, run `pnpm test:e2e:ui`. -["Best Practices, Rules amd more interesting information here](../../cypress-e2e/README.md) +To build the apps, start both servers, and run tests in headless mode, run `pnpm e2e:ci`. diff --git a/clo/cypress.env.json b/clo/cypress.env.json deleted file mode 100644 index c65e6cd032e..00000000000 --- a/clo/cypress.env.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "allure": true, - "allureResultsPath": "../cypress-e2e/results/allure-results" -} diff --git a/clo/e2e/checkCraApps.cy.ts b/clo/e2e/checkCraApps.cy.ts deleted file mode 100644 index f9eda897537..00000000000 --- a/clo/e2e/checkCraApps.cy.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { baseSelectors } from './../../cypress-e2e/common/selectors'; -import { BaseMethods } from '../../cypress-e2e/common/base'; -import { Constants } from '../../cypress-e2e/fixtures/constants'; - -const basePage: BaseMethods = new BaseMethods(); - -const appsData = [ - { - appNameText: Constants.commonConstantsData.basicComponents.host, - host: 3000, - }, - { - appNameText: Constants.commonConstantsData.basicComponents.remote, - host: 3002, - }, -]; - -appsData.forEach((property: { appNameText: string; host: number }) => { - const appName = property.host === 3000 ? appsData[0].appNameText : appsData[1].appNameText; - - describe('CLO', () => { - context(`Check ${appName}`, () => { - beforeEach(() => { - basePage.openLocalhost({ - number: property.host, - }); - }); - - it(`Check ${appName} elements exist on the page`, () => { - basePage.checkElementWithTextPresence({ - selector: baseSelectors.tags.headers.h1, - text: Constants.commonConstantsData.basicComponents.basicHostRemote, - }); - basePage.checkElementWithTextPresence({ - selector: baseSelectors.tags.headers.h2, - text: property.appNameText, - }); - basePage.checkElementWithTextPresence({ - selector: baseSelectors.tags.coreElements.button, - text: Constants.elementsText.craApp.buttonText, - }); - }); - }); - }); -}); diff --git a/clo/e2e/checkCraApps.spec.ts b/clo/e2e/checkCraApps.spec.ts new file mode 100644 index 00000000000..dcda8c7eb6d --- /dev/null +++ b/clo/e2e/checkCraApps.spec.ts @@ -0,0 +1,17 @@ +import { test, expect } from '@playwright/test'; + +const apps = [ + { port: 3000, name: 'Host' }, + { port: 3002, name: 'Remote' }, +]; + +apps.forEach(({ port, name }) => { + test.describe(`Check ${name}`, () => { + test(`Check ${name} elements exist on the page`, async ({ page }) => { + await page.goto(`http://localhost:${port}`); + await expect(page.getByRole('heading', { level: 1 })).toContainText('Basic Host-Remote'); + await expect(page.getByRole('heading', { level: 2, name })).toBeVisible(); + await expect(page.getByRole('button')).toContainText('Hello from remote'); + }); + }); +}); diff --git a/clo/host/rsbuild.config.ts b/clo/host/rsbuild.config.ts index 7f58692c28e..d5a420c17fc 100644 --- a/clo/host/rsbuild.config.ts +++ b/clo/host/rsbuild.config.ts @@ -9,4 +9,11 @@ export default defineConfig({ }, moduleFederation: { options: mfConfig }, plugins: [pluginReact()], + tools: { + rspack: { + output: { + publicPath: 'auto', + }, + }, + }, }); diff --git a/clo/package.json b/clo/package.json index d16fe879c57..55fe953338c 100644 --- a/clo/package.json +++ b/clo/package.json @@ -9,12 +9,17 @@ "scripts": { "start": "pnpm --filter clo_* start", "build": "pnpm --filter clo_* build", - "preview": "pnpm run build && pnpm --filter clo_* preview", - "e2e:ci": "pnpm start & npx cypress run --config-file ../cypress-e2e/config/cypress.config.ts --config '{\"supportFile\": \"../cypress-e2e/support/e2e.ts\"}' --spec \"./e2e/*.cy.ts\" --browser=chrome && lsof -ti tcp:3000,3001,3002 | xargs kill" + "preview": "pnpm run build && concurrently \"pnpm --filter clo_host preview\" \"pnpm --filter clo_remote preview\"", + "test:e2e": "npx playwright test", + "test:e2e:ui": "npx playwright test --ui", + "test:e2e:debug": "npx playwright test --debug", + "e2e:ci": "pnpm install && npx playwright install --with-deps && npx playwright test --reporter=list" }, "devDependencies": { "wait-on": "7.2.0", "concurrently": "8.2.2", - "forever": "4.0.3" + "forever": "4.0.3", + "@playwright/test": "^1.54.2", + "playwright": "^1.54.2" } } diff --git a/clo/playwright.config.ts b/clo/playwright.config.ts new file mode 100644 index 00000000000..1bc2469e1cc --- /dev/null +++ b/clo/playwright.config.ts @@ -0,0 +1,35 @@ +import { defineConfig, devices } from '@playwright/test'; + +export default defineConfig({ + testDir: './e2e', + timeout: 60000, + expect: { + timeout: 15000, + }, + fullyParallel: true, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 1 : 0, + workers: process.env.CI ? 1 : undefined, + reporter: [ + ['html', { outputFolder: 'playwright-report', open: 'never' }], + ['list'], + ], + use: { + trace: 'on-first-retry', + screenshot: 'only-on-failure', + video: 'retain-on-failure', + viewport: { width: 1920, height: 1080 }, + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + ], + webServer: { + command: 'pnpm preview', + port: 3000, + reuseExistingServer: !process.env.CI, + timeout: 120000, + }, +}); diff --git a/clo/remote/rsbuild.config.ts b/clo/remote/rsbuild.config.ts index 15517f208f2..cb5a59607af 100644 --- a/clo/remote/rsbuild.config.ts +++ b/clo/remote/rsbuild.config.ts @@ -9,4 +9,11 @@ export default defineConfig({ }, moduleFederation: { options: mfConfig }, plugins: [pluginReact()], + tools: { + rspack: { + output: { + publicPath: 'auto', + }, + }, + }, }); diff --git a/clo/remote/src/ServiceComponent.js b/clo/remote/src/ServiceComponent.js index 7383d6b1c6e..e5558aeeb8c 100644 --- a/clo/remote/src/ServiceComponent.js +++ b/clo/remote/src/ServiceComponent.js @@ -21,7 +21,7 @@ function fetchData(url) { if (status === 'pending') { throw suspender; } else if (status === 'error') { - throw result; + return { error: result }; } else if (status === 'success') { return result; } @@ -33,6 +33,9 @@ const resource = fetchData('https://jsonplaceholder.typicode.com/todos/1'); function HelloWorld() { const data = resource.read(); // This will suspend if the data isn't ready + if (data?.error) { + return
Error loading data; + } return
{JSON.stringify(data)};
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b36983cf0bb..9a7115f4a56 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -893,7 +893,7 @@ importers:
dependencies:
'@modern-js/runtime':
specifier: 2.54.6
- version: 2.54.6(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
+ version: 2.54.6(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))
react:
specifier: ~18.3.0
version: 18.3.1
@@ -903,22 +903,22 @@ importers:
devDependencies:
'@modern-js-app/eslint-config':
specifier: 2.54.6
- version: 2.54.6(@swc/helpers@0.5.17)(typescript@5.6.2)
+ version: 2.54.6(@swc/helpers@0.5.3)(typescript@5.6.2)
'@modern-js/app-tools':
specifier: 2.54.6
- version: 2.54.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))(encoding@0.1.13)(eslint@9.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@4.15.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1)
+ version: 2.54.6(@rspack/core@0.4.5)(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))(encoding@0.1.13)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@4.15.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)))(webpack-hot-middleware@2.26.1)
'@modern-js/builder-rspack-provider':
specifier: 2.46.1
- version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@1.4.12)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2)
+ version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@0.7.10)(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/express@4.17.21)(esbuild@0.17.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2)
'@modern-js/eslint-config':
specifier: 2.54.6
- version: 2.54.6(@swc/helpers@0.5.17)(typescript@5.6.2)
+ version: 2.54.6(@swc/helpers@0.5.3)(typescript@5.6.2)
'@modern-js/tsconfig':
specifier: 2.54.6
version: 2.54.6
'@module-federation/enhanced':
specifier: 0.17.1
- version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
+ version: 0.17.1(@rspack/core@0.4.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))
husky:
specifier: 9.0.11
version: 9.0.11
@@ -936,7 +936,7 @@ importers:
dependencies:
'@modern-js/runtime':
specifier: 2.54.6
- version: 2.54.6(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))
+ version: 2.54.6(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
react:
specifier: ~18.3.0
version: 18.3.1
@@ -946,22 +946,22 @@ importers:
devDependencies:
'@modern-js-app/eslint-config':
specifier: 2.54.6
- version: 2.54.6(@swc/helpers@0.5.3)(typescript@5.6.2)
+ version: 2.54.6(@swc/helpers@0.5.17)(typescript@5.6.2)
'@modern-js/app-tools':
specifier: 2.54.6
- version: 2.54.6(@rspack/core@0.4.5)(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))(encoding@0.1.13)(eslint@8.57.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.24.7)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@4.15.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19)))(webpack-hot-middleware@2.26.1)
+ version: 2.54.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))(encoding@0.1.13)(eslint@9.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@4.15.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1)
'@modern-js/builder-rspack-provider':
specifier: 2.46.1
- version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@0.7.10)(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/express@4.17.21)(esbuild@0.17.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.3))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2)
+ version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@1.4.12)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2)
'@modern-js/eslint-config':
specifier: 2.54.6
- version: 2.54.6(@swc/helpers@0.5.3)(typescript@5.6.2)
+ version: 2.54.6(@swc/helpers@0.5.17)(typescript@5.6.2)
'@modern-js/tsconfig':
specifier: 2.54.6
version: 2.54.6
'@module-federation/enhanced':
specifier: 0.17.1
- version: 0.17.1(@rspack/core@0.4.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))
+ version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
husky:
specifier: 9.0.11
version: 9.0.11
@@ -997,7 +997,7 @@ importers:
version: 2.68.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@module-federation/modern-js':
specifier: 0.17.1
- version: 0.17.1(@rsbuild/core@1.4.11)(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))
+ version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
react:
specifier: ~18.3.0
version: 18.3.1
@@ -1010,10 +1010,10 @@ importers:
version: 2.59.0(typescript@5.6.2)
'@modern-js/app-tools':
specifier: 2.68.6
- version: 2.68.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@5.2.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)))(webpack-hot-middleware@2.26.1)
+ version: 2.68.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@5.2.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1)
'@modern-js/builder-rspack-provider':
specifier: 2.46.1
- version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@1.4.11)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2)
+ version: 2.46.1(@babel/traverse@7.28.0)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2)
'@modern-js/eslint-config':
specifier: 2.59.0
version: 2.59.0(typescript@5.6.2)
@@ -1022,7 +1022,7 @@ importers:
version: 2.68.6
'@module-federation/enhanced':
specifier: 0.17.1
- version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))
+ version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
husky:
specifier: 9.0.11
version: 9.0.11
@@ -1043,7 +1043,7 @@ importers:
version: 2.68.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@module-federation/modern-js':
specifier: 0.17.1
- version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
+ version: 0.17.1(@rsbuild/core@1.4.11)(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))
react:
specifier: ~18.3.0
version: 18.3.1
@@ -1056,10 +1056,10 @@ importers:
version: 2.59.0(typescript@5.6.2)
'@modern-js/app-tools':
specifier: 2.68.6
- version: 2.68.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@5.2.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))))(webpack-hot-middleware@2.26.1)
+ version: 2.68.6(@rspack/core@1.4.11(@swc/helpers@0.5.17))(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/webpack@5.28.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@7.28.0)(react-dom@18.3.1(react@18.3.1))(react-is@18.3.1)(react@18.3.1))(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(type-fest@2.19.0)(typescript@5.6.2)(webpack-dev-server@5.2.2(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5)))(webpack-hot-middleware@2.26.1)
'@modern-js/builder-rspack-provider':
specifier: 2.46.1
- version: 2.46.1(@babel/traverse@7.28.0)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2)
+ version: 2.46.1(@babel/traverse@7.28.0)(@rsbuild/core@1.4.11)(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/express@4.17.21)(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.11.31(@swc/helpers@0.5.17))(@types/node@20.16.5)(typescript@5.6.2))(tsconfig-paths@4.2.0)(typescript@5.6.2)
'@modern-js/eslint-config':
specifier: 2.59.0
version: 2.59.0(typescript@5.6.2)
@@ -1068,7 +1068,7 @@ importers:
version: 2.68.6
'@module-federation/enhanced':
specifier: 0.17.1
- version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
+ version: 0.17.1(@rspack/core@1.4.11(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))
husky:
specifier: 9.0.11
version: 9.0.11
@@ -1082,6 +1082,62 @@ importers:
specifier: 5.0.8
version: 5.0.8
+ clo:
+ devDependencies:
+ '@playwright/test':
+ specifier: ^1.54.2
+ version: 1.54.2
+ concurrently:
+ specifier: 8.2.2
+ version: 8.2.2
+ forever:
+ specifier: 4.0.3
+ version: 4.0.3
+ playwright:
+ specifier: ^1.54.2
+ version: 1.54.2
+ wait-on:
+ specifier: 7.2.0
+ version: 7.2.0
+
+ clo/host:
+ dependencies:
+ react:
+ specifier: 17.0.2
+ version: 17.0.2
+ react-dom:
+ specifier: 17.0.2
+ version: 17.0.2(react@17.0.2)
+ devDependencies:
+ '@rsbuild/core':
+ specifier: 1.4.12
+ version: 1.4.12
+ '@rsbuild/plugin-react':
+ specifier: 1.3.4
+ version: 1.3.4(@rsbuild/core@1.4.12)(webpack-hot-middleware@2.26.1)
+ '@rspack/core':
+ specifier: 1.4.11
+ version: 1.4.11(@swc/helpers@0.5.17)
+
+ clo/remote:
+ dependencies:
+ react:
+ specifier: 17.0.2
+ version: 17.0.2
+ react-dom:
+ specifier: 17.0.2
+ version: 17.0.2(react@17.0.2)
+ devDependencies:
+ '@rsbuild/core':
+ specifier: 1.4.12
+ version: 1.4.12
+ '@rsbuild/plugin-react':
+ specifier: 1.3.4
+ version: 1.3.4(@rsbuild/core@1.4.12)(webpack-hot-middleware@2.26.1)
+ '@rspack/core':
+ specifier: 1.4.11
+ version: 1.4.11(@swc/helpers@0.5.17)
+
cloud/azure-functions-node-v4:
devDependencies:
concurrently:
@@ -17109,8 +17165,8 @@ packages:
caniuse-api@3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
- caniuse-lite@1.0.30001734:
- resolution: {integrity: sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==}
+ caniuse-lite@1.0.30001735:
+ resolution: {integrity: sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==}
case-sensitive-paths-webpack-plugin@2.4.0:
resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==}
@@ -33907,7 +33963,7 @@ snapshots:
'@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5)
'@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2)
'@swc/helpers': 0.5.3
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
core-js: 3.32.2
postcss: 8.4.31
react-refresh: 0.14.2
@@ -33950,7 +34006,7 @@ snapshots:
'@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5)
'@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2)
'@swc/helpers': 0.5.3
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
core-js: 3.32.2
postcss: 8.4.31
react-refresh: 0.14.2
@@ -33993,7 +34049,7 @@ snapshots:
'@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5)
'@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2)
'@swc/helpers': 0.5.3
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
core-js: 3.32.2
postcss: 8.4.31
react-refresh: 0.14.2
@@ -34036,7 +34092,7 @@ snapshots:
'@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5)
'@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2)
'@swc/helpers': 0.5.3
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
core-js: 3.32.2
postcss: 8.4.31
react-refresh: 0.14.2
@@ -34079,7 +34135,7 @@ snapshots:
'@rspack/plugin-html': 0.4.5(@rspack/core@0.4.5)
'@rspack/plugin-react-refresh': 0.4.5(react-refresh@0.14.2)
'@swc/helpers': 0.5.3
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
core-js: 3.32.2
postcss: 8.4.31
react-refresh: 0.14.2
@@ -34121,7 +34177,7 @@ snapshots:
'@modern-js/utils': 2.46.1
'@swc/helpers': 0.5.3
acorn: 8.15.0
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
css-minimizer-webpack-plugin: 5.0.1(esbuild@0.17.19)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))
cssnano: 6.0.1(postcss@8.4.31)
fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.3))(esbuild@0.17.19))
@@ -34168,7 +34224,7 @@ snapshots:
'@modern-js/utils': 2.46.1
'@swc/helpers': 0.5.3
acorn: 8.15.0
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))
cssnano: 6.0.1(postcss@8.4.31)
fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17))(esbuild@0.25.5))
@@ -34215,7 +34271,7 @@ snapshots:
'@modern-js/utils': 2.46.1
'@swc/helpers': 0.5.3
acorn: 8.15.0
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
cssnano: 6.0.1(postcss@8.4.31)
fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.5.3)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
@@ -34262,7 +34318,7 @@ snapshots:
'@modern-js/utils': 2.46.1
'@swc/helpers': 0.5.3
acorn: 8.15.0
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
cssnano: 6.0.1(postcss@8.4.31)
fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
@@ -34309,7 +34365,7 @@ snapshots:
'@modern-js/utils': 2.46.1
'@swc/helpers': 0.5.3
acorn: 8.15.0
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
css-minimizer-webpack-plugin: 5.0.1(esbuild@0.25.5)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
cssnano: 6.0.1(postcss@8.4.31)
fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.101.0(@swc/core@1.11.31(@swc/helpers@0.5.17)))
@@ -35933,35 +35989,35 @@ snapshots:
'@modern-js/utils@2.46.1':
dependencies:
'@swc/helpers': 0.5.3
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
lodash: 4.17.21
rslog: 1.2.11
'@modern-js/utils@2.54.6':
dependencies:
'@swc/helpers': 0.5.3
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
lodash: 4.17.21
rslog: 1.2.11
'@modern-js/utils@2.57.0':
dependencies:
'@swc/helpers': 0.5.3
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
lodash: 4.17.21
rslog: 1.2.11
'@modern-js/utils@2.68.2':
dependencies:
'@swc/helpers': 0.5.17
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
lodash: 4.17.21
rslog: 1.2.11
'@modern-js/utils@2.68.6':
dependencies:
'@swc/helpers': 0.5.17
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
lodash: 4.17.21
rslog: 1.2.11
@@ -39553,7 +39609,7 @@ snapshots:
'@rspack/core': 1.0.0-alpha.5(@swc/helpers@0.5.11)
'@rspack/lite-tapable': 1.0.0-alpha.5
'@swc/helpers': 0.5.11
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
core-js: 3.37.1
postcss: 8.4.47
optionalDependencies:
@@ -39564,7 +39620,7 @@ snapshots:
'@rspack/core': 1.0.14(@swc/helpers@0.5.17)
'@rspack/lite-tapable': 1.0.1
'@swc/helpers': 0.5.17
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
core-js: 3.38.1
optionalDependencies:
fsevents: 2.3.3
@@ -40267,7 +40323,7 @@ snapshots:
'@rsbuild/shared@0.3.4(@swc/helpers@0.5.3)':
dependencies:
'@rspack/core': 0.5.0(@swc/helpers@0.5.3)
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
lodash: 4.17.21
postcss: 8.4.47
transitivePeerDependencies:
@@ -40276,7 +40332,7 @@ snapshots:
'@rsbuild/shared@0.7.10(@swc/helpers@0.5.17)':
dependencies:
'@rspack/core': 0.7.5(@swc/helpers@0.5.17)
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
html-webpack-plugin: html-rspack-plugin@5.7.2(@rspack/core@0.7.5(@swc/helpers@0.5.17))
postcss: 8.4.47
optionalDependencies:
@@ -40287,7 +40343,7 @@ snapshots:
'@rsbuild/shared@0.7.10(@swc/helpers@0.5.3)':
dependencies:
'@rspack/core': 0.7.5(@swc/helpers@0.5.3)
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
html-webpack-plugin: html-rspack-plugin@5.7.2(@rspack/core@0.7.5(@swc/helpers@0.5.3))
postcss: 8.4.47
optionalDependencies:
@@ -40875,7 +40931,7 @@ snapshots:
dependencies:
'@module-federation/runtime-tools': 0.1.6
'@rspack/binding': 0.7.5
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
tapable: 2.2.1
webpack-sources: 3.2.3
optionalDependencies:
@@ -40885,7 +40941,7 @@ snapshots:
dependencies:
'@module-federation/runtime-tools': 0.1.6
'@rspack/binding': 0.7.5
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
tapable: 2.2.1
webpack-sources: 3.2.3
optionalDependencies:
@@ -40896,7 +40952,7 @@ snapshots:
'@module-federation/runtime-tools': 0.2.3
'@rspack/binding': 1.0.0-alpha.5
'@rspack/lite-tapable': 1.0.0-alpha.5
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
optionalDependencies:
'@swc/helpers': 0.5.11
@@ -40905,7 +40961,7 @@ snapshots:
'@module-federation/runtime-tools': 0.5.1
'@rspack/binding': 1.0.14
'@rspack/lite-tapable': 1.0.1
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
optionalDependencies:
'@swc/helpers': 0.5.17
@@ -42934,7 +42990,7 @@ snapshots:
'@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.24.7)
'@vanilla-extract/babel-plugin-debug-ids': 1.2.2
'@vanilla-extract/css': 1.17.4(babel-plugin-macros@3.1.0)
- esbuild: 0.18.20
+ esbuild: 0.17.6
eval: 0.1.8
find-up: 5.0.0
javascript-stringify: 2.1.0
@@ -44395,7 +44451,7 @@ snapshots:
autoprefixer@10.4.19(postcss@8.4.39):
dependencies:
browserslist: 4.25.2
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -44405,7 +44461,7 @@ snapshots:
autoprefixer@10.4.20(postcss@8.4.32):
dependencies:
browserslist: 4.25.2
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -44415,7 +44471,7 @@ snapshots:
autoprefixer@10.4.20(postcss@8.4.39):
dependencies:
browserslist: 4.25.2
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -44425,7 +44481,7 @@ snapshots:
autoprefixer@10.4.20(postcss@8.4.47):
dependencies:
browserslist: 4.25.2
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -44435,7 +44491,7 @@ snapshots:
autoprefixer@10.4.21(postcss@8.5.6):
dependencies:
browserslist: 4.24.4
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -45166,21 +45222,21 @@ snapshots:
browserslist@4.23.1:
dependencies:
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
electron-to-chromium: 1.5.200
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.23.1)
browserslist@4.24.4:
dependencies:
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
electron-to-chromium: 1.5.200
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.24.4)
browserslist@4.25.2:
dependencies:
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
electron-to-chromium: 1.5.200
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.25.2)
@@ -45339,11 +45395,11 @@ snapshots:
caniuse-api@3.0.0:
dependencies:
browserslist: 4.25.2
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
lodash.memoize: 4.1.2
lodash.uniq: 4.5.0
- caniuse-lite@1.0.30001734: {}
+ caniuse-lite@1.0.30001735: {}
case-sensitive-paths-webpack-plugin@2.4.0: {}
@@ -49788,7 +49844,7 @@ snapshots:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
- minimatch: 3.1.2
+ minimatch: 3.0.5
once: 1.4.0
path-is-absolute: 1.0.1
@@ -53652,7 +53708,7 @@ snapshots:
dependencies:
'@next/env': 12.3.4
'@swc/helpers': 0.4.11
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
postcss: 8.4.14
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -53682,7 +53738,7 @@ snapshots:
'@next/env': 14.2.13
'@swc/helpers': 0.5.5
busboy: 1.6.0
- caniuse-lite: 1.0.30001734
+ caniuse-lite: 1.0.30001735
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.3.1
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 8d96e331ed1..335d6af1093 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -22,6 +22,8 @@ packages:
- "basic-host-remote/*"
- "bi-directional"
- "bi-directional/*"
+ - "clo"
+ - "clo/*"
- "cloud/azure-functions-node-v4"
- "cloud/azure-functions-node-v4/*"
- "complete-react-case"