diff --git a/.changeset/openruntime-observability.md b/.changeset/openruntime-observability.md new file mode 100644 index 00000000000..175c8967df5 --- /dev/null +++ b/.changeset/openruntime-observability.md @@ -0,0 +1,5 @@ +--- +'@module-federation/observability-plugin': minor +--- + +Add optional OpenRuntime target synchronization for Module Federation observability reports. diff --git a/apps/runtime-demo/3005-runtime-host/cypress/e2e/app.cy.ts b/apps/runtime-demo/3005-runtime-host/cypress/e2e/app.cy.ts index f37b336bb8a..13c6810ef81 100644 --- a/apps/runtime-demo/3005-runtime-host/cypress/e2e/app.cy.ts +++ b/apps/runtime-demo/3005-runtime-host/cypress/e2e/app.cy.ts @@ -3,6 +3,40 @@ import { getH1, getH3 } from '../support/app.po'; const getObservabilityReader = (win: Cypress.AUTWindow) => (win as any).__FEDERATION__?.__OBSERVABILITY__?.runtime_host; +type OpenRuntimeTestTarget = { + id: string; + type: string; + status: string; + source?: string; + data?: Record; + dependsOn?: string[]; + error?: { + message?: string; + }; +}; +type OpenRuntimeTestWaitResult = { + success: boolean; + target?: OpenRuntimeTestTarget; + reason?: string; +}; +type OpenRuntimeTestRuntime = { + waitFor( + condition: { + id: string; + status: string; + where?: Array<{ path: string; equals: unknown }>; + }, + options?: { timeout?: number }, + ): Promise; + getSnapshot(): { + targets: Record; + }; +}; + +const getOpenRuntime = (win: Cypress.AUTWindow) => + (win as unknown as { __OPEN_RUNTIME__?: OpenRuntimeTestRuntime }) + .__OPEN_RUNTIME__; + type ObservabilityTestReport = { traceId: string; status?: string; @@ -210,6 +244,170 @@ describe('3005-runtime-host/', () => { }); }); + it('should sync remote loading state to OpenRuntime targets', () => { + cy.get('[data-testid="observability-load-success"]').click(); + + cy.window() + .then((win) => + getOpenRuntime(win)!.waitFor( + { + id: 'mf:remote:runtime_remote2', + status: 'ready', + }, + { timeout: 5000 }, + ), + ) + .its('success') + .should('equal', true); + cy.window() + .then((win) => + getOpenRuntime(win)!.waitFor( + { + id: 'mf:remote:runtime_remote2:expose:ButtonOldAnt', + status: 'ready', + }, + { timeout: 5000 }, + ), + ) + .its('success') + .should('equal', true); + cy.get('[data-testid="observability-load-status"]').contains('success'); + + cy.window().then((win) => { + const snapshot = getOpenRuntime(win)!.getSnapshot(); + expect(snapshot.targets['mf:remote:runtime_remote2']).to.include({ + type: 'mf.remote', + status: 'ready', + source: 'mf-runtime-demo', + }); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data?.remote, + ).to.include({ + name: 'runtime_remote2', + }); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data?.hostName, + ).to.include('runtime_host'); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data?.exposes, + ).to.deep.include({ + targetId: 'mf:remote:runtime_remote2:expose:ButtonOldAnt', + }); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data, + ).not.to.have.property('state'); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data, + ).not.to.have.property('latestReport'); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data, + ).not.to.have.property('currentPhase'); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data, + ).not.to.have.property('exposeCount'); + expect(snapshot.targets['mf:manifest:runtime_remote2']).to.be.undefined; + expect(snapshot.targets['mf:remote-entry:runtime_remote2']).to.be + .undefined; + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'], + ).to.include({ + type: 'mf.remote.expose', + status: 'ready', + source: 'mf-runtime-demo', + }); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'] + .data, + ).to.include({ + requestId: 'dynamic-remote/ButtonOldAnt', + requestAlias: 'dynamic-remote', + }); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'].data + ?.hostName, + ).to.include('runtime_host'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'].data + ?.consumers, + ).to.include('runtime_host'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'] + .data, + ).not.to.have.property('remote'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'] + .data, + ).not.to.have.property('expose'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'] + .data, + ).not.to.have.property('outcome'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'] + .data, + ).not.to.have.property('currentPhase'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'] + .data, + ).not.to.have.property('status'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'] + .data, + ).not.to.have.property('state'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'].data + ?.phases, + ).to.have.property('loadRemote'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ButtonOldAnt'] + .data, + ).to.include({ + lastPhase: 'loadRemote', + }); + }); + }); + + it('should wait for an expose target before running the business action', () => { + cy.get('[data-testid="observability-load-success"]').click(); + + cy.window() + .then((win) => + getOpenRuntime(win)!.waitFor( + { + id: 'mf:remote:runtime_remote2:expose:ButtonOldAnt', + status: 'ready', + }, + { timeout: 5000 }, + ), + ) + .then((result) => { + expect(result.success).to.equal(true); + expect(result.target?.id).to.equal( + 'mf:remote:runtime_remote2:expose:ButtonOldAnt', + ); + expect(result.target?.data).to.include({ + requestId: 'dynamic-remote/ButtonOldAnt', + }); + expect(result.target?.data?.hostName).to.include('runtime_host'); + expect(result.target?.data?.consumers).to.include('runtime_host'); + expect(result.target?.data).not.to.have.property('expose'); + expect(result.target?.data).not.to.have.property('currentPhase'); + expect(result.target?.data).not.to.have.property('outcome'); + }); + + cy.get('[data-testid="observability-business-loaded"]').click(); + cy.get('[data-testid="observability-report"]').contains( + 'component:business-loaded', + ); + cy.window().then((win) => { + const latestReport = getObservabilityReader(win).getLatestReport(); + expect(latestReport.status).to.equal('success'); + expect(latestReport.summary.componentLoaded).to.equal(true); + expect(latestReport.summary.outcome).to.equal('component-loaded'); + expect(latestReport.diagnosis.facts.componentLoaded).to.equal(true); + }); + }); + it('should expose a preloadRemote observability scenario', () => { cy.get('[data-testid="observability-preload-success"]').click(); cy.get('[data-testid="observability-load-status"]').contains('success'); @@ -520,6 +718,72 @@ describe('3005-runtime-host/', () => { }); }); + it('should sync shared loading state to OpenRuntime targets', () => { + const sharedTargetId = + 'mf:shared:observability-provider-choice:2.0.0:observability-provider-scope'; + cy.get( + '[data-testid="observability-shared-unexpected-provider"]', + ).click(); + + cy.window() + .then((win) => + getOpenRuntime(win)!.waitFor( + { + id: sharedTargetId, + status: 'loaded', + }, + { timeout: 5000 }, + ), + ) + .its('success') + .should('equal', true); + cy.get('[data-testid="observability-load-status"]').contains('success'); + + cy.window().then((win) => { + const snapshot = getOpenRuntime(win)!.getSnapshot(); + expect(snapshot.targets[sharedTargetId]).to.include({ + type: 'mf.shared', + status: 'loaded', + source: 'mf-runtime-demo', + }); + expect(snapshot.targets[sharedTargetId].data).not.to.have.property( + 'loadState', + ); + expect(snapshot.targets[sharedTargetId].data).not.to.have.property( + 'state', + ); + expect(snapshot.targets[sharedTargetId].data).not.to.have.property( + 'status', + ); + expect(snapshot.targets[sharedTargetId].data).not.to.have.property( + 'outcome', + ); + expect(snapshot.targets[sharedTargetId].data?.shared).to.include({ + name: 'observability-provider-choice', + version: '2.0.0', + provider: 'runtime_remote2', + }); + expect( + snapshot.targets[sharedTargetId].data?.shared, + ).not.to.have.property('selectedVersion'); + expect( + snapshot.targets[sharedTargetId].data?.shared, + ).not.to.have.property('availableVersions'); + expect( + snapshot.targets[sharedTargetId].data?.shared, + ).not.to.have.property('useIn'); + expect( + snapshot.targets[sharedTargetId].data?.shared, + ).not.to.have.property('get'); + expect( + snapshot.targets[sharedTargetId].data?.shared, + ).not.to.have.property('loading'); + expect( + snapshot.targets[sharedTargetId].data?.shared, + ).not.to.have.property('from'); + }); + }); + it('should expose a multi-consumer loading chain scenario', () => { cy.get('[data-testid="observability-multi-consumer-chain"]').click(); cy.get('[data-testid="observability-load-status"]').contains('success'); @@ -600,10 +864,43 @@ describe('3005-runtime-host/', () => { (checkoutSharedReports[0] as ObservabilityTestReport).traceId, ), ).to.equal(true); + + const snapshot = getOpenRuntime(win)!.getSnapshot(); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data?.hostName, + ).to.include('observability_consumer_checkout'); + expect( + snapshot.targets['mf:remote:runtime_remote2'].data?.hostName, + ).to.include('observability_consumer_analytics'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ProfileCard'].data + ?.hostName, + ).to.include('observability_consumer_checkout'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ProfileCard'].data + ?.hostName, + ).not.to.include('observability_consumer_analytics'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:AnalyticsPanel'] + .data?.hostName, + ).to.include('observability_consumer_analytics'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:AnalyticsPanel'] + .data?.hostName, + ).not.to.include('observability_consumer_checkout'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:ProfileCard'].data, + ).not.to.have.property('expose'); + expect( + snapshot.targets['mf:remote:runtime_remote2:expose:AnalyticsPanel'] + .data, + ).not.to.have.property('expose'); }); }); it('should expose an eager config observability scenario', () => { + const sharedTargetId = + 'mf:shared:observability-async-shared:1.0.0:default'; cy.get('[data-testid="observability-eager-config-error"]').click(); cy.get('[data-testid="observability-load-status"]').contains('error'); cy.get('[data-testid="observability-report"]') @@ -620,6 +917,21 @@ describe('3005-runtime-host/', () => { (action: { id: string }) => action.id === 'check-eager-config', ), ).to.equal(true); + + const snapshot = getOpenRuntime(win)!.getSnapshot(); + expect(snapshot.targets[sharedTargetId]).to.include({ + type: 'mf.shared', + status: 'error', + source: 'mf-runtime-demo', + }); + expect(snapshot.targets[sharedTargetId].data?.shared).to.include({ + name: 'observability-async-shared', + version: '1.0.0', + reason: 'sync-async-boundary', + }); + expect(snapshot.targets[sharedTargetId].error?.message).to.contain( + 'RUNTIME-005', + ); }); }); diff --git a/apps/runtime-demo/3005-runtime-host/src/observability.ts b/apps/runtime-demo/3005-runtime-host/src/observability.ts index bfdf94aef2e..df293465f9f 100644 --- a/apps/runtime-demo/3005-runtime-host/src/observability.ts +++ b/apps/runtime-demo/3005-runtime-host/src/observability.ts @@ -1,5 +1,11 @@ import { createObservability } from '@module-federation/observability-plugin'; +const openRuntimeBridge = shouldConnectBridge() + ? { + autoReconnect: true, + } + : false; + export const observability = createObservability({ level: 'verbose', maxEvents: 100, @@ -18,4 +24,16 @@ export const observability = createObservability({ ], defaultExportMode: 'component', }, + openRuntime: { + bridge: openRuntimeBridge, + source: 'mf-runtime-demo', + }, }); + +function shouldConnectBridge(): boolean { + if (typeof window === 'undefined') { + return false; + } + + return new URLSearchParams(window.location.search).has('openruntimeBridge'); +} diff --git a/apps/runtime-demo/README.md b/apps/runtime-demo/README.md index 1070027d4b0..ab2b011b383 100644 --- a/apps/runtime-demo/README.md +++ b/apps/runtime-demo/README.md @@ -25,6 +25,9 @@ The host also installs `ObservabilityBuildPlugin`, so each build writes a build summary to `.mf/observability/build-info.json`. If a host build fails after the plugin runs, the build-side report is written to `.mf/observability/build-report.json`. +The observability plugin also creates `window.__OPEN_RUNTIME__` for this demo, +so MF remote, expose, and shared states are synced into OpenRuntime targets +without the host app importing OpenRuntime directly. - observability fixture page: [localhost:3005/observability](http://localhost:3005/observability) @@ -118,7 +121,7 @@ Then open the observability fixture page and use these controls: - `Shared unexpected provider`: resolves a shared dependency from a remote-like provider even though the host provider is present. The report should be successful and include `observability-provider-choice`, - `provider: "runtime_remote2"`, and `selectedVersion: "2.0.0"`. + `provider: "runtime_remote2"`, and the selected version in the report. - `Load multi-consumer chain`: creates two runtime consumers with `createInstance`, loads different exposes from the real `runtime_remote2` remote on port 3007, and gives each consumer its own shared dependency. It @@ -136,6 +139,76 @@ Then open the observability fixture page and use these controls: `observability-runtime-async-shared`, `RUNTIME-006`, and `sync-async-boundary`, with the same eager config check. +### OpenRuntime check + +The OpenRuntime check reuses the existing `3005-runtime-host` observability +fixture. No separate demo app is needed. + +Automated coverage is included in the runtime host e2e suite: + +```bash +pnpm run ci:local --only=e2e-runtime +``` + +The OpenRuntime assertions open `/observability`, click the real MF controls, +verify that MF targets can be waited for, and then run a business action after +the exposed module is ready. The covered flow is: + +1. Click `Load success remote`. +2. Wait for `mf:remote:runtime_remote2:expose:ButtonOldAnt` to become `ready`. +3. Click `Mark business loaded`. +4. Verify the latest report becomes `component-loaded`. + +The suite waits for these targets: + +- `mf:remote:runtime_remote2` +- `mf:remote:runtime_remote2:expose:ButtonOldAnt` +- `mf:shared:observability-provider-choice:2.0.0:observability-provider-scope` + +Manifest and remoteEntry are not exposed as separate OpenRuntime targets. The +remote target stays centered on the remote instance and lists attempted expose +target ids only. Specific exposed modules stay available as +`mf:remote:*:expose:*` targets so they can be waited for and inspected without +bloating the remote target. + +For a manual CLI check, start the OpenRuntime Bridge from the local +OpenRuntime repo, then start the runtime demo: + +```bash +cd /Users/bytedance/ai/openruntime +pnpm build +pnpm exec openruntime bridge start +``` + +```bash +cd /Users/bytedance/outter/core +pnpm run app:runtime:dev +``` + +Open the bridge-enabled fixture page: + +```text +http://127.0.0.1:3005/observability?openruntimeBridge=1 +``` + +After the page is open, click `Load success remote` and verify the exposed +module target: + +```bash +cd /Users/bytedance/ai/openruntime +pnpm exec openruntime wait-for mf:remote:runtime_remote2:expose:ButtonOldAnt ready --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" +``` + +After the wait succeeds, click `Mark business loaded` on the page and verify +the latest report includes `component:business-loaded`. + +Then click `Shared unexpected provider` and verify the shared target: + +```bash +cd /Users/bytedance/ai/openruntime +pnpm exec openruntime wait-for mf:shared:observability-provider-choice:2.0.0:observability-provider-scope loaded --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" +``` + Run the automated verification: ```bash diff --git a/packages/observability-plugin/README.md b/packages/observability-plugin/README.md index 53424a03426..f9030faff68 100644 --- a/packages/observability-plugin/README.md +++ b/packages/observability-plugin/README.md @@ -148,6 +148,183 @@ For agent-led debugging, use the repository's single `mf` skill entry with the `observability` sub-command. The skill is the maintained guide for reading reports and deciding the next debugging step. +## OpenRuntime targets + +When `openRuntime` is enabled, the observability plugin syncs Module Federation +loading state into OpenRuntime targets. The host application does not need to +import OpenRuntime directly. + +```ts +ObservabilityPlugin({ + level: 'verbose', + openRuntime: { + bridge: { + port: 17321, + }, + }, +}); +``` + +Use the OpenRuntime CLI to inspect the page: + +```bash +pnpm exec openruntime targets --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" +pnpm exec openruntime snapshot --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" +``` + +### `mf:remote:` + +Type: `mf.remote` + +This target represents the remote instance as a whole. Use it to understand +whether a remote is currently known, loading, ready, failed, or recovered. Do +not use the remote target to prove that a specific exposed module is ready; use +the expose target for that. + +Statuses: + +- `registered`: the remote is known, but no clear loading result has been + observed yet. +- `loading`: a remote lifecycle phase is currently in progress. +- `ready`: the latest relevant remote lifecycle phase completed successfully. +- `error`: a remote lifecycle phase failed and no recovery result was observed. +- `recovered`: loading hit an error path, but Module Federation returned a + recovery result. + +Snapshot data: + +- `hostName`: array of host or consumer names observed for this remote. +- `runtimeVersion`: Module Federation runtime version from the latest report. +- `remote`: remote definition fields such as `name`, `alias`, `entry`, + `entryGlobalName`, and `type`. +- `exposes`: array of `{ targetId }` entries. Each target id points to a + `mf:remote::expose:` target. +- `reportCount`: number of related reports used to build this remote snapshot. + +The plugin does not create separate `mf:manifest:*`, `mf:remote-entry:*`, or +`mf:consumer:*` targets. Manifest and remoteEntry details are kept as phases on +the remote or expose data. + +Common wait: + +```bash +pnpm exec openruntime wait-for mf:remote:runtime_remote2 ready --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" +``` + +### `mf:remote::expose:` + +Type: `mf.remote.expose` + +This target represents one exposed module request from a remote. Use it when an +agent needs to wait until a specific remote module is usable. + +Statuses are the same as `mf.remote`: + +- `registered` +- `loading` +- `ready` +- `error` +- `recovered` + +Snapshot data: + +- `traceId`: report id for the latest matching trace. +- `requestId`: requested remote module id, for example + `runtime_remote2/ButtonOldAnt`. +- `requestAlias`: request alias when Module Federation provides one. +- `hostName`: array of host or consumer names observed for this expose. +- `runtimeVersion`: Module Federation runtime version from the latest report. +- `consumers`: consumer names that loaded this expose. +- `lastPhase`: latest phase name from the report summary. +- `phases`: phase summary, including entries such as `matchRemote`, + `manifest`, `remoteEntry`, `remoteEntryInit`, `expose`, and `loadRemote`. +- `loadedBefore`: cached producer/consumer information when the runtime reports + that this module was already loaded. + +The expose target does not repeat `remote`, `expose`, `status`, `state`, +`outcome`, or `currentPhase` inside `data`. The target id and outer target +status already carry that information. + +Common wait: + +```bash +pnpm exec openruntime wait-for mf:remote:runtime_remote2:expose:ButtonOldAnt ready --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" +``` + +### `mf:shared:::` + +Type: `mf.shared` + +This target represents one observed shared dependency entry. The id includes +the shared package name, selected or requested version, and share scope. The +plugin only registers shared targets that have been observed by the runtime. + +Statuses: + +- `unloaded`: the shared dependency was observed, but no active loading or + loaded signal was seen. +- `loading`: shared loading has started or the shared entry is currently + loading. +- `loaded`: the shared entry was loaded or resolved successfully. +- `recovered`: shared loading hit a handled fallback path, such as a + bundler-runtime provided shared entry. +- `error`: shared loading failed. + +Snapshot data: + +- `traceId`: report id for the latest matching trace. +- `requestId`: shared request id. +- `hostName`: Module Federation host name that resolved the shared dependency. +- `runtimeVersion`: Module Federation runtime version. +- `shared.name`: shared package name. +- `shared.shareScope`: share scope array. +- `shared.version`: version used in the target id. +- `shared.requiredVersion`: requested version range when available. +- `shared.provider`: selected provider when available. +- `shared.singleton`, `shared.strictVersion`, `shared.eager`, + `shared.strategy`: shared config details when available. +- `shared.loaded`: whether the shared entry is loaded. +- `shared.loading`: included only while the shared entry is loading. It is + omitted once `loaded` is true. +- `shared.reason`: reason such as `sync-async-boundary` or + `custom-share-info-unmatched`. +- `shared.definedBy`: `bundler-runtime` when the runtime reports a handled + bundler-runtime shared path. +- `lastPhase`: latest phase name from the report summary. +- `phases`: phase summary for shared loading. + +The shared snapshot intentionally omits `selectedVersion`, +`availableVersions`, `get`, `useIn`, and `from`. If a user needs broader +runtime global state, use the OpenRuntime actions below. + +Common waits: + +```bash +pnpm exec openruntime wait-for mf:shared:observability-provider-choice:2.0.0:observability-provider-scope loaded --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" +pnpm exec openruntime wait-for mf:shared:observability-async-shared:1.0.0:default error --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" +``` + +### Actions + +The plugin also registers safe OpenRuntime actions for deeper inspection: + +- `mf:list-reports`: list report summaries. Supports filters such as `remote`, + `expose`, `shared`, `traceId`, `status`, and `outcome`. +- `mf:get-latest-report`: read the latest report. +- `mf:get-report`: read one report by `traceId`. +- `mf:export-report`: export a report, defaulting to the latest report. +- `mf:get-federation-global`: read a compact summary of the current + `__FEDERATION__` or `__VMOK__` global. +- `mf:get-federation-module-info`: read `moduleInfo` or one `moduleInfo` entry. +- `mf:list-federation-instances`: list current runtime instances. +- `mf:get-federation-instance-config`: read one runtime instance config. + +Example: + +```bash +pnpm exec openruntime run-action --url "http://127.0.0.1:3005/observability?openruntimeBridge=1" mf:list-reports --payload '{"remote":"runtime_remote2"}' +``` + `errorLoadShare` is used only for observation. Shared dependency miss, version mismatch, and eager boundary errors are not retried by the retry plugin by default because they are usually configuration or availability problems instead diff --git a/packages/observability-plugin/__tests__/observability.spec.ts b/packages/observability-plugin/__tests__/observability.spec.ts index ea53d15e2d4..926b6c55013 100644 --- a/packages/observability-plugin/__tests__/observability.spec.ts +++ b/packages/observability-plugin/__tests__/observability.spec.ts @@ -2,6 +2,8 @@ import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import { describe, expect, it, vi } from 'vitest'; +import { createOpenRuntime } from '@openruntime/core'; +import type { OpenRuntimeWindowHost } from '@openruntime/core'; import { createObservability, ObservabilityPlugin } from '../src'; import { ObservabilityBuildPlugin, @@ -34,6 +36,49 @@ const createShared = (overrides: Record = {}) => ({ ...overrides, }); +type SharedFixture = ReturnType; +type ShareScopeMapFixture = Record< + string, + Record> +>; +type EnabledOriginFixture = typeof enabledOrigin & { + shareScopeMap?: ShareScopeMapFixture; + sharedHandler?: { + shareScopeMap?: ShareScopeMapFixture; + }; +}; +type SharedHookFixturePlugin = { + beforeRegisterShare?: (args: { + pkgName: string; + shared: SharedFixture; + origin: EnabledOriginFixture; + }) => unknown; + beforeLoadShare?: (args: { + pkgName: string; + shareInfo?: SharedFixture; + shared: Record; + origin: EnabledOriginFixture; + }) => unknown; + afterLoadShare?: (args: { + pkgName: string; + shareInfo?: SharedFixture; + selectedShared?: Partial; + shared: Record; + origin: EnabledOriginFixture; + lifecycle: 'loadShare' | 'loadShareSync'; + }) => void; + errorLoadShare?: (args: { + pkgName: string; + shareInfo?: SharedFixture; + shared: Record; + shareScopeMap?: Record>>; + origin: EnabledOriginFixture; + lifecycle: 'loadShare' | 'loadShareSync'; + error?: Error; + recovered?: boolean; + }) => unknown; +}; + const hasUndefinedField = (value: unknown): boolean => { if (Array.isArray(value)) { return value.some(hasUndefinedField); @@ -1534,7 +1579,17 @@ describe('ObservabilityPlugin', () => { it('records a successful loadRemote report when enabled', async () => { const observability = createObservability({ level: 'verbose' }); - emitRemoteStart(observability); + emitRemoteStart(observability, { + options: { + name: 'host', + remotes: [ + { + name: 'remote', + entry: 'http://localhost:3001/mf-manifest.json', + }, + ], + }, + }); await emitRemoteLoaded(observability); const report = observability.getLatestReport(); @@ -1569,6 +1624,466 @@ describe('ObservabilityPlugin', () => { expect(report?.events).toHaveLength(2); }); + it('syncs remote loading reports to OpenRuntime targets', async () => { + const runtime = createOpenRuntime(); + const observability = createObservability({ + level: 'verbose', + console: false, + openRuntime: { + runtime, + source: 'mf-test', + }, + }); + + emitRemoteStart(observability, { + options: { + name: 'host', + remotes: [ + { + name: 'remote', + entry: 'http://localhost:3001/mf-manifest.json', + }, + ], + }, + }); + + expect(runtime.getSnapshot().targets['mf:remote:remote']).toMatchObject({ + status: 'loading', + type: 'mf.remote', + source: 'mf-test', + data: expect.objectContaining({ + remote: expect.objectContaining({ + name: 'remote', + }), + hostName: ['host'], + exposes: [ + { + targetId: 'mf:remote:remote:expose:Button', + }, + ], + }), + }); + + await emitRemoteLoaded(observability); + + const waitResult = await runtime.waitFor({ + id: 'mf:remote:remote', + status: 'ready', + }); + expect(waitResult.success).toBe(true); + + const snapshot = runtime.getSnapshot(); + expect(snapshot.targets['mf:consumer:host']).toBeUndefined(); + expect(snapshot.targets['mf:remote:remote']).toMatchObject({ + status: 'ready', + data: expect.objectContaining({ + remote: expect.objectContaining({ + name: 'remote', + }), + hostName: ['host'], + exposes: [ + { + targetId: 'mf:remote:remote:expose:Button', + }, + ], + }), + }); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'state', + ); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'latestReport', + ); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'currentPhase', + ); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'exposeCount', + ); + expect(snapshot.targets['mf:manifest:remote']).toBeUndefined(); + expect(snapshot.targets['mf:remote-entry:remote']).toBeUndefined(); + expect(snapshot.targets['mf:remote:remote:expose:Button']).toMatchObject({ + status: 'ready', + dependsOn: ['mf:remote:remote'], + type: 'mf.remote.expose', + data: expect.objectContaining({ + requestId: 'remote/Button', + hostName: ['host'], + consumers: ['host'], + lastPhase: 'loadRemote', + phases: expect.objectContaining({ + loadRemote: expect.any(Object), + }), + }), + }); + expect( + snapshot.targets['mf:remote:remote:expose:Button'].data, + ).not.toHaveProperty('remote'); + expect( + snapshot.targets['mf:remote:remote:expose:Button'].data, + ).not.toHaveProperty('expose'); + expect( + snapshot.targets['mf:remote:remote:expose:Button'].data, + ).not.toHaveProperty('outcome'); + expect( + snapshot.targets['mf:remote:remote:expose:Button'].data, + ).not.toHaveProperty('currentPhase'); + expect( + snapshot.targets['mf:remote:remote:expose:Button'].data, + ).not.toHaveProperty('status'); + expect( + snapshot.targets['mf:remote:remote:expose:Button'].data, + ).not.toHaveProperty('state'); + + expect( + runtime.getActions({ source: 'mf-test' }).map(({ name }) => name), + ).toEqual( + expect.arrayContaining([ + 'mf:list-reports', + 'mf:get-latest-report', + 'mf:get-report', + 'mf:export-report', + 'mf:get-federation-global', + 'mf:get-federation-module-info', + 'mf:list-federation-instances', + 'mf:get-federation-instance-config', + ]), + ); + + const listReports = await runtime.runAction('mf:list-reports', { + remote: 'remote', + }); + expect(listReports.success).toBe(true); + expect(listReports.result).toMatchObject({ + count: 1, + reports: [ + expect.objectContaining({ + requestId: 'remote/Button', + remote: expect.objectContaining({ + name: 'remote', + }), + outcome: 'runtime-loaded', + }), + ], + }); + + const latestReport = await runtime.runAction('mf:get-latest-report'); + expect(latestReport.success).toBe(true); + const latestReportResult = latestReport.result as { + report?: { + traceId?: string; + remote?: { + name?: string; + }; + }; + }; + expect(latestReportResult.report?.remote?.name).toBe('remote'); + const traceId = latestReportResult.report?.traceId; + if (!traceId) { + throw new Error('Expected latest report traceId.'); + } + await expect( + runtime.getInputOptions('mf:get-report', 'traceId'), + ).resolves.toEqual([ + expect.objectContaining({ + value: traceId, + description: 'remote', + }), + ]); + + const reportByTraceId = await runtime.runAction('mf:get-report', { + traceId, + }); + expect(reportByTraceId.success).toBe(true); + expect(reportByTraceId.result).toMatchObject({ + found: true, + report: expect.objectContaining({ + traceId, + }), + }); + + const exportedReport = await runtime.runAction('mf:export-report', { + traceId, + }); + expect(exportedReport.success).toBe(true); + expect(exportedReport.result).toMatchObject({ + found: true, + report: expect.objectContaining({ + traceId, + }), + }); + }); + + it('keeps remote target data aggregated when a remote loads multiple exposes', async () => { + const runtime = createOpenRuntime(); + const observability = createObservability({ + level: 'verbose', + console: false, + openRuntime: { + runtime, + source: 'mf-test', + }, + }); + + emitRemoteStart(observability, { + id: 'remote/Button', + origin: { + version: '2.5.0', + options: { + name: 'consumer_a', + }, + }, + }); + await emitRemoteLoaded(observability, { + id: 'remote/Button', + expose: './Button', + origin: { + version: '2.5.0', + options: { + name: 'consumer_a', + }, + }, + }); + emitRemoteStart(observability, { + id: 'remote/Panel', + origin: { + version: '2.5.0', + options: { + name: 'consumer_b', + }, + }, + }); + await emitRemoteLoaded(observability, { + id: 'remote/Panel', + expose: './Panel', + origin: { + version: '2.5.0', + options: { + name: 'consumer_b', + }, + }, + }); + + const snapshot = runtime.getSnapshot(); + expect(snapshot.targets['mf:remote:remote']).toMatchObject({ + status: 'ready', + data: expect.objectContaining({ + remote: expect.objectContaining({ + name: 'remote', + }), + hostName: expect.arrayContaining(['consumer_a', 'consumer_b']), + exposes: [ + { + targetId: 'mf:remote:remote:expose:Button', + }, + { + targetId: 'mf:remote:remote:expose:Panel', + }, + ], + }), + }); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'requestId', + ); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'expose', + ); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'state', + ); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'exposeCount', + ); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'latestReport', + ); + expect(snapshot.targets['mf:remote:remote'].data).not.toHaveProperty( + 'currentPhase', + ); + expect(snapshot.targets['mf:manifest:remote']).toBeUndefined(); + expect(snapshot.targets['mf:remote-entry:remote']).toBeUndefined(); + expect(snapshot.targets['mf:remote:remote:expose:Button']).toMatchObject({ + status: 'ready', + data: expect.objectContaining({ + hostName: ['consumer_a'], + consumers: ['consumer_a'], + }), + }); + expect(snapshot.targets['mf:remote:remote:expose:Panel']).toMatchObject({ + status: 'ready', + data: expect.objectContaining({ + hostName: ['consumer_b'], + consumers: ['consumer_b'], + }), + }); + expect( + snapshot.targets['mf:remote:remote:expose:Button'].data, + ).not.toHaveProperty('expose'); + expect( + snapshot.targets['mf:remote:remote:expose:Panel'].data, + ).not.toHaveProperty('expose'); + }); + + it('exposes federation global queries as OpenRuntime actions', async () => { + const globalObject = globalThis as typeof globalThis & { + __FEDERATION__?: unknown; + }; + const originalFederation = globalObject.__FEDERATION__; + globalObject.__FEDERATION__ = { + __GLOBAL_PLUGIN__: [], + __DEBUG_CONSTRUCTOR_VERSION__: '2.5.0', + moduleInfo: { + remote: { + name: 'remote', + remoteEntry: 'http://localhost:3001/remoteEntry.js', + }, + }, + __INSTANCES__: [ + { + version: '2.5.0', + options: { + name: 'host', + remotes: [ + { + name: 'remote', + entry: 'http://localhost:3001/mf-manifest.json', + }, + ], + shared: { + react: { + singleton: true, + }, + }, + plugins: [() => 'runtime-plugin'], + }, + }, + ], + __SHARE__: { + default: {}, + }, + __MANIFEST_LOADING__: {}, + __PRELOADED_MAP__: new Map([['remote', true]]), + }; + try { + const runtime = createOpenRuntime(); + const observability = createObservability({ + level: 'verbose', + console: false, + openRuntime: { + runtime, + source: 'mf-test', + }, + }); + + emitRemoteStart(observability); + + const globalSummary = await runtime.runAction('mf:get-federation-global'); + expect(globalSummary.success).toBe(true); + expect(globalSummary.result).toMatchObject({ + available: true, + moduleInfoKeys: ['remote'], + instanceCount: 1, + }); + + const moduleInfo = await runtime.runAction( + 'mf:get-federation-module-info', + { + key: 'remote', + }, + ); + expect(moduleInfo.success).toBe(true); + expect(moduleInfo.result).toMatchObject({ + found: true, + moduleInfo: expect.objectContaining({ + name: 'remote', + remoteEntry: 'http://localhost:3001/remoteEntry.js', + }), + }); + + const instanceList = await runtime.runAction( + 'mf:list-federation-instances', + ); + expect(instanceList.success).toBe(true); + expect(instanceList.result).toMatchObject({ + count: 1, + instances: [ + expect.objectContaining({ + index: 0, + name: 'host', + remoteCount: 1, + }), + ], + }); + await expect( + runtime.getInputOptions('mf:get-federation-instance-config', 'name'), + ).resolves.toEqual([ + expect.objectContaining({ + value: 'host', + description: 'host', + }), + ]); + + const instanceConfig = await runtime.runAction( + 'mf:get-federation-instance-config', + { + name: 'host', + }, + ); + expect(instanceConfig.success).toBe(true); + expect(instanceConfig.result).toMatchObject({ + found: true, + instance: expect.objectContaining({ + name: 'host', + config: expect.objectContaining({ + remotes: [ + expect.objectContaining({ + name: 'remote', + }), + ], + plugins: ['[function anonymous]'], + }), + }), + }); + } finally { + globalObject.__FEDERATION__ = originalFederation; + } + }); + + it('creates an OpenRuntime instance when syncing is enabled without a runtime', async () => { + const host: OpenRuntimeWindowHost = {}; + const observability = createObservability({ + level: 'verbose', + console: false, + openRuntime: { + host, + source: 'mf-test', + }, + }); + + expect(host.__OPEN_RUNTIME__).toBeUndefined(); + + emitRemoteStart(observability, { + options: { + name: 'host', + remotes: [ + { + name: 'remote', + entry: 'http://localhost:3001/mf-manifest.json', + }, + ], + }, + }); + + expect(host.__OPEN_RUNTIME__).toBeDefined(); + expect( + host.__OPEN_RUNTIME__?.getSnapshot().targets['mf:remote:remote'], + ).toMatchObject({ + status: 'loading', + type: 'mf.remote', + source: 'mf-test', + }); + }); + it('posts events to the local collector outside debug mode', () => { const originalFetch = globalThis.fetch; const originalDebug = process.env['FEDERATION_DEBUG']; @@ -3595,6 +4110,477 @@ describe('ObservabilityPlugin', () => { }); }); + it('syncs shared reports to OpenRuntime targets', async () => { + const runtime = createOpenRuntime(); + const sharedTargetId = 'mf:shared:react:18.3.1:default'; + const observability = createObservability({ + level: 'verbose', + console: false, + openRuntime: { + runtime, + source: 'mf-test', + }, + }); + const sharedArgs = { + pkgName: 'react', + shareInfo: createShared(), + shared: {}, + origin: enabledOrigin, + }; + const plugin = observability.plugin as SharedHookFixturePlugin; + + plugin.beforeLoadShare?.(sharedArgs); + + expect(runtime.getSnapshot().targets[sharedTargetId]).toMatchObject({ + status: 'loading', + type: 'mf.shared', + }); + + plugin.afterLoadShare?.({ + ...sharedArgs, + selectedShared: createShared({ + loaded: true, + loading: true, + }), + lifecycle: 'loadShare', + }); + + const waitResult = await runtime.waitFor({ + id: sharedTargetId, + status: 'loaded', + }); + expect(waitResult.success).toBe(true); + expect(runtime.getSnapshot().targets[sharedTargetId]).toMatchObject({ + status: 'loaded', + data: expect.objectContaining({ + shared: expect.objectContaining({ + name: 'react', + version: '18.3.1', + provider: 'host', + loaded: true, + }), + }), + }); + expect( + runtime.getSnapshot().targets[sharedTargetId].data, + ).not.toHaveProperty('loadState'); + expect( + runtime.getSnapshot().targets[sharedTargetId].data, + ).not.toHaveProperty('state'); + expect( + runtime.getSnapshot().targets[sharedTargetId].data, + ).not.toHaveProperty('status'); + expect( + runtime.getSnapshot().targets[sharedTargetId].data, + ).not.toHaveProperty('outcome'); + expect( + ( + runtime.getSnapshot().targets[sharedTargetId].data?.[ + 'shared' + ] as Record + )['from'], + ).toBeUndefined(); + const sharedSnapshot = runtime.getSnapshot().targets[sharedTargetId].data?.[ + 'shared' + ] as Record; + expect(sharedSnapshot).not.toHaveProperty('selectedVersion'); + expect(sharedSnapshot).not.toHaveProperty('availableVersions'); + expect(sharedSnapshot).not.toHaveProperty('useIn'); + expect(sharedSnapshot).not.toHaveProperty('get'); + expect(sharedSnapshot).not.toHaveProperty('loading'); + }); + + it('reports singleton shared version conflicts to OpenRuntime', async () => { + const runtime = createOpenRuntime(); + const conflictTargetId = 'mf:shared-conflict:react:default'; + const observability = createObservability({ + level: 'verbose', + console: false, + openRuntime: { + runtime, + source: 'mf-test', + }, + }); + const hostReact = createShared({ + version: '17.0.2', + from: 'host', + shareConfig: { + requiredVersion: '^17.0.0', + singleton: true, + strictVersion: false, + eager: false, + }, + }); + const remoteReact = createShared({ + version: '18.3.1', + from: 'remote', + shareConfig: { + requiredVersion: '^18.0.0', + singleton: true, + strictVersion: false, + eager: false, + }, + }); + const plugin = observability.plugin as SharedHookFixturePlugin; + + plugin.beforeRegisterShare?.({ + pkgName: 'react', + shared: remoteReact, + origin: { + ...enabledOrigin, + shareScopeMap: { + default: { + react: { + '17.0.2': hostReact, + }, + }, + }, + }, + }); + + const report = observability.getLatestReport(); + + expect(report?.events.at(-1)).toMatchObject({ + phase: 'shared-conflict', + status: 'complete', + message: 'shared:singleton-multiple-versions', + }); + expect(report?.shared).toMatchObject({ + name: 'react', + reason: 'singleton-multiple-versions', + availableVersions: ['17.0.2', '18.3.1'], + conflict: { + scope: 'default', + currentVersion: '18.3.1', + currentFrom: 'remote', + versions: ['17.0.2', '18.3.1'], + existingVersions: [ + expect.objectContaining({ + version: '17.0.2', + from: 'host', + singleton: true, + }), + ], + }, + }); + expect(report?.diagnosis).toMatchObject({ + title: 'Singleton shared dependency version conflict detected', + ownerHint: 'shared', + facts: expect.objectContaining({ + shareName: 'react', + availableVersions: '17.0.2,18.3.1', + sharedReason: 'singleton-multiple-versions', + singleton: true, + }), + actions: [ + expect.objectContaining({ + id: 'check-shared-version', + ownerHint: 'shared', + }), + expect.objectContaining({ + id: 'check-shared-provider', + ownerHint: 'shared', + }), + ], + }); + expect(report?.diagnosis?.warnings).toContain( + 'Singleton shared dependency has multiple versions in the same share scope', + ); + + const waitResult = await runtime.waitFor({ + id: conflictTargetId, + status: 'warning', + }); + expect(waitResult.success).toBe(true); + expect(runtime.getSnapshot().targets[conflictTargetId]).toMatchObject({ + status: 'warning', + type: 'mf.shared.conflict', + data: expect.objectContaining({ + reason: 'singleton-multiple-versions', + sharedName: 'react', + scope: 'default', + singleton: true, + currentVersion: '18.3.1', + currentFrom: 'remote', + versions: ['17.0.2', '18.3.1'], + existingVersions: [ + expect.objectContaining({ + version: '17.0.2', + from: 'host', + singleton: true, + }), + ], + }), + }); + }); + + it('reports singleton shared version conflicts when the existing version is singleton', () => { + const observability = createObservability({ + level: 'verbose', + console: false, + }); + const plugin = observability.plugin as SharedHookFixturePlugin; + + plugin.beforeRegisterShare?.({ + pkgName: 'react', + shared: createShared({ + version: '18.3.1', + from: 'remote', + shareConfig: { + requiredVersion: '^18.0.0', + singleton: false, + strictVersion: false, + eager: false, + }, + }), + origin: { + ...enabledOrigin, + shareScopeMap: { + default: { + react: { + '17.0.2': createShared({ + version: '17.0.2', + from: 'host', + shareConfig: { + requiredVersion: '^17.0.0', + singleton: true, + strictVersion: false, + eager: false, + }, + }), + }, + }, + }, + }, + }); + + expect(observability.getLatestReport()?.shared).toMatchObject({ + name: 'react', + reason: 'singleton-multiple-versions', + availableVersions: ['17.0.2', '18.3.1'], + }); + }); + + it('does not report shared version conflicts for safe registrations', () => { + const cases = [ + { + name: 'same version', + shared: createShared({ + version: '18.3.1', + shareConfig: { + requiredVersion: '^18.0.0', + singleton: true, + strictVersion: false, + eager: false, + }, + }), + shareScopeMap: { + default: { + react: { + '18.3.1': createShared({ + version: '18.3.1', + shareConfig: { + requiredVersion: '^18.0.0', + singleton: true, + strictVersion: false, + eager: false, + }, + }), + }, + }, + }, + }, + { + name: 'different scope', + shared: createShared({ + version: '18.3.1', + scope: ['custom'], + shareConfig: { + requiredVersion: '^18.0.0', + singleton: true, + strictVersion: false, + eager: false, + }, + }), + shareScopeMap: { + default: { + react: { + '17.0.2': createShared({ + version: '17.0.2', + shareConfig: { + requiredVersion: '^17.0.0', + singleton: true, + strictVersion: false, + eager: false, + }, + }), + }, + }, + }, + }, + { + name: 'non-singleton versions', + shared: createShared({ + version: '18.3.1', + shareConfig: { + requiredVersion: '^18.0.0', + singleton: false, + strictVersion: false, + eager: false, + }, + }), + shareScopeMap: { + default: { + react: { + '17.0.2': createShared({ + version: '17.0.2', + shareConfig: { + requiredVersion: '^17.0.0', + singleton: false, + strictVersion: false, + eager: false, + }, + }), + }, + }, + }, + }, + ]; + + cases.forEach((item) => { + const observability = createObservability({ + level: 'verbose', + console: false, + }); + const plugin = observability.plugin as SharedHookFixturePlugin; + + plugin.beforeRegisterShare?.({ + pkgName: 'react', + shared: item.shared, + origin: { + ...enabledOrigin, + shareScopeMap: item.shareScopeMap, + }, + }); + + expect(observability.getLatestReport(), item.name).toBeUndefined(); + }); + }); + + it('marks recovered shared reports as recovered OpenRuntime targets', async () => { + const runtime = createOpenRuntime(); + const sharedTargetId = 'mf:shared:react:99.0.0:default'; + const observability = createObservability({ + level: 'verbose', + console: false, + openRuntime: { + runtime, + source: 'mf-test', + }, + }); + const requestedShared = createShared({ + version: '99.0.0', + from: 'remote', + shareConfig: { + requiredVersion: '^99.0.0', + singleton: false, + strictVersion: true, + eager: false, + }, + }); + const plugin = observability.plugin as SharedHookFixturePlugin; + + plugin.errorLoadShare?.({ + pkgName: 'react', + shareInfo: requestedShared, + shared: {}, + shareScopeMap: { + default: { + react: { + '18.3.1': createShared(), + }, + }, + }, + lifecycle: 'loadShare', + origin: enabledOrigin, + recovered: true, + }); + + const waitResult = await runtime.waitFor({ + id: sharedTargetId, + status: 'recovered', + }); + + expect(waitResult.success).toBe(true); + expect(runtime.getSnapshot().targets[sharedTargetId]).toMatchObject({ + status: 'recovered', + type: 'mf.shared', + data: expect.objectContaining({ + shared: expect.objectContaining({ + name: 'react', + version: '99.0.0', + reason: 'custom-share-info-unmatched', + definedBy: 'bundler-runtime', + }), + }), + }); + }); + + it('marks failed shared reports as error OpenRuntime targets', async () => { + const runtime = createOpenRuntime(); + const sharedTargetId = 'mf:shared:observability-async-shared:1.0.0:default'; + const observability = createObservability({ + level: 'verbose', + console: false, + openRuntime: { + runtime, + source: 'mf-test', + }, + }); + const plugin = observability.plugin as SharedHookFixturePlugin; + + plugin.errorLoadShare?.({ + pkgName: 'observability-async-shared', + shareInfo: createShared({ + version: '1.0.0', + from: 'remote', + shareConfig: { + requiredVersion: '^1.0.0', + singleton: false, + strictVersion: false, + eager: false, + }, + get: () => Promise.resolve(() => ({ value: 'async' })), + }), + shared: {}, + shareScopeMap: {}, + lifecycle: 'loadShareSync', + origin: enabledOrigin, + error: new Error('[ Federation Runtime ]: RUNTIME-005 shared failed'), + }); + + const waitResult = await runtime.waitFor({ + id: sharedTargetId, + status: 'error', + }); + + expect(waitResult.success).toBe(true); + expect(runtime.getSnapshot().targets[sharedTargetId]).toMatchObject({ + status: 'error', + type: 'mf.shared', + data: expect.objectContaining({ + shared: expect.objectContaining({ + name: 'observability-async-shared', + version: '1.0.0', + reason: 'sync-async-boundary', + }), + }), + error: expect.objectContaining({ + message: expect.stringContaining('RUNTIME-005'), + }), + }); + }); + it('derives shared success details from loadShare hooks', () => { const observability = createObservability({ level: 'verbose', @@ -3634,10 +4620,14 @@ describe('ObservabilityPlugin', () => { ); expect(report?.shared).toMatchObject({ name: 'react', + version: '18.3.1', selectedVersion: '18.3.1', provider: 'host', + useIn: ['host'], availableVersions: ['18.3.1'], }); + expect(report?.shared).not.toHaveProperty('from'); + expect(report?.shared).not.toHaveProperty('get'); expect(report?.summary.shared).toMatchObject({ name: 'react', selectedVersion: '18.3.1', @@ -3697,9 +4687,15 @@ describe('ObservabilityPlugin', () => { }); expect(report?.shared).toMatchObject({ name: 'react', + version: '99.0.0', requiredVersion: '^99.0.0', availableVersions: ['18.3.1'], reason: 'custom-share-info-unmatched', + definedBy: 'bundler-runtime', + }); + expect(report?.diagnosis?.facts).toMatchObject({ + sharedDefinedBy: 'bundler-runtime', + useIn: 'host', }); expect(report?.events.at(-1)).toMatchObject({ phase: 'shared', diff --git a/packages/observability-plugin/package.json b/packages/observability-plugin/package.json index 3123ecff703..fea25f318d6 100644 --- a/packages/observability-plugin/package.json +++ b/packages/observability-plugin/package.json @@ -68,7 +68,8 @@ "@module-federation/runtime": "workspace:*" }, "dependencies": { - "@module-federation/sdk": "workspace:*" + "@module-federation/sdk": "workspace:*", + "@openruntime/core": "https://pkg.pr.new/2heal1/openruntime/@openruntime/core@a13b382" }, "scripts": { "build": "tsdown --config tsdown.config.ts && cp *.md dist", diff --git a/packages/observability-plugin/src/core.ts b/packages/observability-plugin/src/core.ts index 27c6f85ae24..18983d484d7 100644 --- a/packages/observability-plugin/src/core.ts +++ b/packages/observability-plugin/src/core.ts @@ -4,6 +4,11 @@ import type { } from '@module-federation/runtime'; import { createLogger, isDebugMode } from '@module-federation/sdk'; +import { + createOpenRuntimeObservabilityAdapter, + type OpenRuntimeObservabilityOptions, +} from './openruntime'; + export type ObservabilityLevel = 'error' | 'summary' | 'verbose'; export type ObservabilityEventStatus = | 'start' @@ -147,11 +152,12 @@ export interface ObservabilityRemoteInfo { export interface ObservabilitySharedInfo { name: string; shareScope?: string[]; + version?: string; requiredVersion?: string | false; selectedVersion?: string; availableVersions?: string[]; provider?: string; - from?: string; + useIn?: string[]; singleton?: boolean; strictVersion?: boolean; eager?: boolean; @@ -159,6 +165,24 @@ export interface ObservabilitySharedInfo { loaded?: boolean; loading?: boolean; reason?: string; + definedBy?: 'bundler-runtime'; + conflict?: ObservabilitySharedConflictInfo; +} + +export interface ObservabilitySharedConflictVersion { + version: string; + from?: string; + singleton?: boolean; + loaded?: boolean; +} + +export interface ObservabilitySharedConflictInfo { + reason: 'singleton-multiple-versions'; + scope: string; + currentVersion?: string; + currentFrom?: string; + versions: string[]; + existingVersions: ObservabilitySharedConflictVersion[]; } export interface ObservabilityEvent { @@ -282,6 +306,7 @@ export interface ObservabilityPluginOptions { report: ObservabilityReport, context?: ObservabilityEventContext, ) => void; + openRuntime?: boolean | OpenRuntimeObservabilityOptions; onRawError?: (error: unknown, context: ObservabilityRawErrorContext) => void; } @@ -345,13 +370,7 @@ export interface ObservabilityRuntimeAdapterOptions { forceDevelopmentChannels?: boolean; } -declare module '@module-federation/runtime-core' { - interface ModuleFederation { - markComponentLoaded( - options?: MarkComponentLoadedOptions, - ): ObservabilityEvent | undefined; - } -} +type ObservableModuleFederation = ModuleFederation & ObservabilityInstanceAPI; export interface ObservabilityRuntimeEventInput { phase: string; @@ -386,6 +405,10 @@ export interface ObservabilityRuntimeOrigin { id?: string; name?: string; }; + shareScopeMap?: ObservabilityRuntimeShareScopeMap; + sharedHandler?: { + shareScopeMap?: ObservabilityRuntimeShareScopeMap; + }; loadShare?: (pkgName: string) => Promise unknown)>; loadShareSync?: (pkgName: string) => false | (() => unknown); } @@ -410,6 +433,7 @@ interface ObservabilityRuntimeSharedSource { version?: string; scope?: string | string[]; from?: string; + useIn?: string[]; loaded?: boolean; loading?: unknown; strategy?: string; @@ -604,6 +628,9 @@ interface ObservabilitySharedLifecycleArgs { } export type ObservabilityRuntimePlugin = ModuleFederationRuntimePlugin; +type GeneratePreloadAssetsResult = Awaited< + ReturnType> +>; export interface ObservabilityBrowserReader { getEvents(): ObservabilityEvent[]; @@ -627,6 +654,10 @@ interface ObservabilityRuntimeModuleLike { inited?: boolean; } +function continuePreloadAssetsGeneration(): GeneratePreloadAssetsResult { + return undefined as unknown as GeneratePreloadAssetsResult; +} + interface ObservabilityRuntimeRemoteHandlerLike { idToRemoteMap?: Record; } @@ -679,6 +710,8 @@ const logger = createLogger('[ Module Federation Observability Plugin ]'); const DEFAULT_DEVTOOLS_SOURCE = 'module-federation/observability'; const COMPONENT_BUSINESS_LOADED_EVENT = 'component:business-loaded'; const ON_MF_REMOTE_LOADED_PROP = 'onMFRemoteLoaded'; +const SHARED_SINGLETON_MULTIPLE_VERSIONS_REASON = + 'singleton-multiple-versions' as const; const SENSITIVE_PAIR_PATTERN = /\b(token|authorization|cookie|secret|password|session|access_token|refresh_token|api_key|apikey|key)\s*[:=]\s*([^&\s'",;<>]+)/gi; const ERROR_CODE_PATTERN = /\b(?:RUNTIME|TYPE|BUILD)-\d{3}\b/; @@ -736,7 +769,7 @@ function normalizeCollectorOptions( }; } - if (!value || value === false || value.enabled === false) { + if (!value || value.enabled === false) { return undefined; } @@ -756,7 +789,7 @@ function normalizeDevtoolsOptions( }; } - if (!value || value === false || value.enabled === false) { + if (!value || value.enabled === false) { return undefined; } @@ -1003,6 +1036,139 @@ function getAvailableSharedVersions(args: ObservabilitySharedLifecycleArgs) { return Array.from(versions); } +function getOriginShareScopeMap( + origin: ObservabilityRuntimeOrigin, +): ObservabilityRuntimeShareScopeMap { + return origin.shareScopeMap || origin.sharedHandler?.shareScopeMap || {}; +} + +function getSharedVersion(value: ObservabilityRuntimeSharedSource | undefined) { + return sanitizeText(value?.version, 120); +} + +function isSingletonShared( + value: ObservabilityRuntimeSharedSource | undefined, +) { + return value?.shareConfig?.singleton === true; +} + +function createSharedConflictVersion( + version: string, + shared: ObservabilityRuntimeSharedSource | undefined, +): ObservabilitySharedConflictVersion { + return { + version, + from: sanitizeText(shared?.from, 160), + singleton: isSingletonShared(shared) || undefined, + loaded: shared?.loaded === true || undefined, + }; +} + +function createSharedSingletonConflict(args: { + pkgName: string; + shared: ObservabilityRuntimeSharedSource; + scope: string; + shareScopeMap: ObservabilityRuntimeShareScopeMap; +}): ObservabilitySharedConflictInfo | undefined { + const currentVersion = getSharedVersion(args.shared); + if (!currentVersion) { + return undefined; + } + + const existingVersionMap = + args.shareScopeMap[args.scope]?.[args.pkgName] || {}; + const existingVersions = Object.entries(existingVersionMap) + .map(([version, shared]) => + createSharedConflictVersion( + sanitizeText(version, 120) || version, + shared, + ), + ) + .filter((item) => item.version && item.version !== currentVersion); + + if (!existingVersions.length) { + return undefined; + } + + const hasSingleton = + isSingletonShared(args.shared) || + existingVersions.some((item) => item.singleton === true); + + if (!hasSingleton) { + return undefined; + } + + const versions = Array.from( + new Set([currentVersion, ...existingVersions.map((item) => item.version)]), + ).sort(); + + if (versions.length <= 1) { + return undefined; + } + + return { + reason: SHARED_SINGLETON_MULTIPLE_VERSIONS_REASON, + scope: args.scope, + currentVersion, + currentFrom: sanitizeText(args.shared.from, 160), + versions, + existingVersions, + }; +} + +function createSharedConflictInfo(args: { + pkgName: string; + shared: ObservabilityRuntimeSharedSource; + conflict: ObservabilitySharedConflictInfo; +}): ObservabilitySharedInfo { + const shareConfig = args.shared.shareConfig; + + return { + name: args.pkgName, + shareScope: [args.conflict.scope], + version: args.conflict.currentVersion || args.shared.version, + requiredVersion: shareConfig?.requiredVersion, + availableVersions: args.conflict.versions, + provider: args.conflict.currentFrom, + useIn: args.shared.useIn, + singleton: true, + strictVersion: shareConfig?.strictVersion, + eager: shareConfig?.eager, + strategy: args.shared.strategy, + loaded: args.shared.loaded, + loading: args.shared.loaded + ? undefined + : Boolean(args.shared.loading) || undefined, + reason: SHARED_SINGLETON_MULTIPLE_VERSIONS_REASON, + conflict: args.conflict, + }; +} + +function getSharedConflictKey(args: { + hostName?: string; + pkgName: string; + conflict: ObservabilitySharedConflictInfo; +}) { + return [ + args.hostName || 'unknown', + args.pkgName, + args.conflict.scope, + args.conflict.versions.join(','), + ].join('|'); +} + +function getSharedUseIn(args: ObservabilitySharedLifecycleArgs) { + const useIn = [ + ...(args.selectedShared?.useIn || []), + ...(args.shareInfo?.useIn || []), + args.origin.options?.name || args.origin.name, + ] + .map((consumer) => sanitizeText(consumer, 160)) + .filter((consumer): consumer is string => Boolean(consumer)); + + return Array.from(new Set(useIn)); +} + function getSharedMissReason(args: ObservabilitySharedLifecycleArgs) { if (!args.shareInfo) { return 'missing-config'; @@ -1096,22 +1262,28 @@ function createSharedInfo( reason?: string, ): ObservabilitySharedInfo { const shareConfig = args.shareInfo?.shareConfig; + const handledBundlerRuntimeShared = reason === 'custom-share-info-unmatched'; + const loaded = args.selectedShared?.loaded; return { name: args.pkgName, shareScope: getSharedScopes(args.shareInfo), + version: args.selectedShared?.version || args.shareInfo?.version, requiredVersion: shareConfig?.requiredVersion, selectedVersion: args.selectedShared?.version, availableVersions: getAvailableSharedVersions(args), provider: args.selectedShared?.from, - from: args.shareInfo?.from, + useIn: getSharedUseIn(args), singleton: shareConfig?.singleton, strictVersion: shareConfig?.strictVersion, eager: shareConfig?.eager, strategy: args.shareInfo?.strategy, - loaded: args.selectedShared?.loaded, - loading: Boolean(args.selectedShared?.loading) || undefined, + loaded, + loading: loaded + ? undefined + : Boolean(args.selectedShared?.loading) || undefined, reason, + definedBy: handledBundlerRuntimeShared ? 'bundler-runtime' : undefined, }; } @@ -1125,6 +1297,7 @@ function sanitizeShared( return { name: sanitizeText(shared.name, 160) || 'unknown', shareScope: normalizeSharedScope(shared.shareScope), + version: sanitizeText(shared.version, 120), requiredVersion: shared.requiredVersion === false ? false @@ -1135,7 +1308,9 @@ function sanitizeShared( .filter((version): version is string => Boolean(version)) .slice(0, 20), provider: sanitizeText(shared.provider, 160), - from: sanitizeText(shared.from, 160), + useIn: (shared.useIn || []) + .map((consumer) => sanitizeText(consumer, 160)) + .filter((consumer): consumer is string => Boolean(consumer)), singleton: shared.singleton, strictVersion: shared.strictVersion, eager: shared.eager, @@ -1143,6 +1318,44 @@ function sanitizeShared( loaded: shared.loaded, loading: shared.loading, reason: sanitizeText(shared.reason, 120), + definedBy: + shared.definedBy === 'bundler-runtime' ? 'bundler-runtime' : undefined, + conflict: sanitizeSharedConflict(shared.conflict), + }; +} + +function sanitizeSharedConflict( + conflict: ObservabilitySharedConflictInfo | undefined, +): ObservabilitySharedConflictInfo | undefined { + if (!conflict) { + return undefined; + } + + const scope = sanitizeText(conflict.scope, 120) || 'default'; + const versions = (conflict.versions || []) + .map((version) => sanitizeText(version, 120)) + .filter((version): version is string => Boolean(version)) + .slice(0, 20); + const existingVersions = (conflict.existingVersions || []) + .map((item) => ({ + version: sanitizeText(item.version, 120), + from: sanitizeText(item.from, 160), + singleton: item.singleton === true || undefined, + loaded: item.loaded === true || undefined, + })) + .filter( + (item): item is ObservabilitySharedConflictVersion => + typeof item.version === 'string' && item.version.length > 0, + ) + .slice(0, 20); + + return { + reason: SHARED_SINGLETON_MULTIPLE_VERSIONS_REASON, + scope, + currentVersion: sanitizeText(conflict.currentVersion, 120), + currentFrom: sanitizeText(conflict.currentFrom, 160), + versions, + existingVersions, }; } @@ -1190,7 +1403,8 @@ function getReactComponentName(component: unknown, fallback: string) { const render = getObjectValue(component, 'render'); if (typeof render === 'function') { - return render.displayName || render.name || fallback; + const renderFunction = render as { displayName?: string; name?: string }; + return renderFunction.displayName || renderFunction.name || fallback; } return fallback; @@ -1257,9 +1471,9 @@ function cloneModuleWithDefaultExport( defaultExport: unknown, ) { const descriptors = Object.getOwnPropertyDescriptors(moduleExports); - const defaultDescriptor = descriptors.default; + const defaultDescriptor = descriptors['default']; - descriptors.default = { + descriptors['default'] = { configurable: true, enumerable: defaultDescriptor?.enumerable ?? true, writable: true, @@ -1306,7 +1520,7 @@ function resolveReactComponentTarget( try { if (!descriptor || descriptor.writable || descriptor.set) { - component.default = wrappedComponent; + component['default'] = wrappedComponent; defaultExportReplaced = true; } else if (descriptor.configurable) { Object.defineProperty(component, 'default', { @@ -1410,6 +1624,7 @@ function copyEvent(event: ObservabilityEvent): ObservabilityEvent { availableVersions: event.shared.availableVersions ? [...event.shared.availableVersions] : undefined, + conflict: copySharedConflict(event.shared.conflict), } : undefined, errorContext: event.errorContext ? { ...event.errorContext } : undefined, @@ -1418,6 +1633,20 @@ function copyEvent(event: ObservabilityEvent): ObservabilityEvent { }); } +function copySharedConflict( + conflict: ObservabilitySharedConflictInfo | undefined, +): ObservabilitySharedConflictInfo | undefined { + if (!conflict) { + return undefined; + } + + return { + ...conflict, + versions: [...conflict.versions], + existingVersions: conflict.existingVersions.map((item) => ({ ...item })), + }; +} + function copySummary( summary: ObservabilityReport['summary'], ): ObservabilityReport['summary'] { @@ -1512,6 +1741,7 @@ function copyReport(report: ObservabilityReport): ObservabilityReport { availableVersions: report.shared.availableVersions ? [...report.shared.availableVersions] : undefined, + conflict: copySharedConflict(report.shared.conflict), } : undefined, errorContext: report.errorContext ? { ...report.errorContext } : undefined, @@ -1553,7 +1783,9 @@ function getModuleCacheEntries( const entries = typeof moduleCache.entries === 'function' - ? Array.from(moduleCache.entries()) + ? Array.from( + moduleCache.entries.call(moduleCache) as Iterable<[unknown, unknown]>, + ) : undefined; if (entries) { @@ -1609,9 +1841,7 @@ function collectLoadedBeforeInfo( const matchedModule = getModuleCacheEntries(instance.moduleCache).find( (item): item is ObservabilityRuntimeModuleLike => - isRecord(item) && - isRecord(item.remoteInfo) && - item.remoteInfo.entryGlobalName === entryGlobalName, + isRuntimeModuleWithEntryGlobalName(item, entryGlobalName), ); if (!matchedModule) { @@ -1653,6 +1883,21 @@ function collectLoadedBeforeInfo( }; } +function isRuntimeModuleWithEntryGlobalName( + value: unknown, + entryGlobalName: string, +): value is ObservabilityRuntimeModuleLike { + if (!isRecord(value)) { + return false; + } + + const remoteInfo = getObjectValue(value, 'remoteInfo'); + return ( + isRecord(remoteInfo) && + getObjectValue(remoteInfo, 'entryGlobalName') === entryGlobalName + ); +} + function normalizeScope(value: unknown) { const sanitized = sanitizeText(value, 120); const normalized = sanitized?.replace(/[^\w:@.-]+/g, '-'); @@ -2069,48 +2314,48 @@ function createErrorContext( }; if (event.lifecycle) { - context.lifecycle = event.lifecycle; + context['lifecycle'] = event.lifecycle; } if (event.requestId) { - context.requestId = event.requestId; + context['requestId'] = event.requestId; } if (event.requestAlias) { - context.requestAlias = event.requestAlias; + context['requestAlias'] = event.requestAlias; } if (event.remote?.name) { - context.remoteName = event.remote.name; + context['remoteName'] = event.remote.name; } if (event.remote?.alias) { - context.remoteAlias = event.remote.alias; + context['remoteAlias'] = event.remote.alias; } if (event.remote?.type) { - context.remoteType = event.remote.type; + context['remoteType'] = event.remote.type; } if (event.remote?.entryGlobalName) { - context.entryGlobalName = event.remote.entryGlobalName; + context['entryGlobalName'] = event.remote.entryGlobalName; } if (event.sanitizedUrl) { - context.url = event.sanitizedUrl; + context['url'] = event.sanitizedUrl; } if (event.expose) { - context.expose = event.expose; + context['expose'] = event.expose; } if (event.shared?.name) { - context.shareName = event.shared.name; + context['shareName'] = event.shared.name; } if (event.shared?.requiredVersion) { - context.requiredVersion = event.shared.requiredVersion; + context['requiredVersion'] = event.shared.requiredVersion; } if (event.shared?.selectedVersion) { - context.selectedVersion = event.shared.selectedVersion; + context['selectedVersion'] = event.shared.selectedVersion; } if (event.shared?.provider) { - context.provider = event.shared.provider; + context['provider'] = event.shared.provider; } const resourceErrorType = getResourceErrorType(event); if (resourceErrorType) { - context.resourceErrorType = resourceErrorType; + context['resourceErrorType'] = resourceErrorType; } return clipObservabilityMetadata(context); @@ -2158,6 +2403,7 @@ export function createObservability( const traceByRequest = new Map(); const traceByRemote = new Map(); const phaseStartTimes = new Map(); + const reportedSharedConflictKeys = new Set(); const collectorOptions = normalizeCollectorOptions(options.collector); const devtoolsOptions = normalizeDevtoolsOptions(options.devtools); const seenManifestUrls = new Set(); @@ -2601,6 +2847,11 @@ export function createObservability( const getDiagnosisTitle = (report: ObservabilityReport) => { if (report.status !== 'error') { if (report.shared) { + if ( + report.shared.reason === SHARED_SINGLETON_MULTIPLE_VERSIONS_REASON + ) { + return 'Singleton shared dependency version conflict detected'; + } if (report.summary.sharedResolved) { return 'Shared dependency resolved successfully'; } @@ -2729,11 +2980,13 @@ export function createObservability( addFact('resourceErrorType', getDiagnosisResourceErrorType(report)); addFact('shareName', report.shared?.name); addFact('shareScope', report.shared?.shareScope); + addFact('shareVersion', report.shared?.version); addFact('requiredVersion', report.shared?.requiredVersion); addFact('selectedVersion', report.shared?.selectedVersion); addFact('availableVersions', report.shared?.availableVersions); addFact('provider', report.shared?.provider); - addFact('sharedFrom', report.shared?.from); + addFact('useIn', report.shared?.useIn); + addFact('sharedDefinedBy', report.shared?.definedBy); addFact('singleton', report.shared?.singleton); addFact('strictVersion', report.shared?.strictVersion); addFact('eager', report.shared?.eager); @@ -2778,6 +3031,11 @@ export function createObservability( 'No matching clipped moduleInfo entry was found for the failed remote', ); } + if (report.shared?.reason === SHARED_SINGLETON_MULTIPLE_VERSIONS_REASON) { + warnings.push( + 'Singleton shared dependency has multiple versions in the same share scope', + ); + } return warnings; }; @@ -2801,6 +3059,20 @@ export function createObservability( }); }; + if (report.shared?.reason === SHARED_SINGLETON_MULTIPLE_VERSIONS_REASON) { + pushAction( + 'check-shared-version', + 'Align singleton shared dependency versions in the same share scope', + 'shared', + ); + pushAction( + 'check-shared-provider', + 'Check which host or remote registered each shared version', + 'shared', + ); + return actions; + } + if (report.status !== 'error' && !report.summary.error) { return actions; } @@ -3382,6 +3654,17 @@ export function createObservability( const exportReportSnapshot = (traceId?: string) => traceId ? getReportSnapshot(traceId) : getLatestReportSnapshot(); + const openRuntimeAdapter = createOpenRuntimeObservabilityAdapter( + options.openRuntime, + { + getReports: getReportsSnapshot, + findReports: findReportsSnapshot, + getLatestReport: getLatestReportSnapshot, + getReport: getReportSnapshot, + exportReport: exportReportSnapshot, + }, + ); + const createBrowserReader = (): ObservabilityBrowserReader => ({ getEvents: getEventsSnapshot, getTraceIds: getTraceIdsSnapshot, @@ -3439,7 +3722,7 @@ export function createObservability( return true; } - return process.env.NODE_ENV !== 'production'; + return process.env['NODE_ENV'] !== 'production'; }; const shouldNotifyCollector = () => Boolean(collectorOptions); @@ -3640,6 +3923,7 @@ export function createObservability( events.push(event); const report = updateReport(event); + openRuntimeAdapter?.syncReport(report, { origin }); emitStartConsoleHint(event, report); emitConsoleHint(event, report, input.error); if (shouldNotifyCollector()) { @@ -3896,7 +4180,8 @@ export function createObservability( appliedRuntimeVersion = sanitizeText(instance.version, 80) || appliedRuntimeVersion; if (shouldAttachInstanceApi) { - instance.markComponentLoaded = markComponentLoaded; + (instance as ObservableModuleFederation).markComponentLoaded = + markComponentLoaded; } }, beforeRequest(args) { @@ -4113,6 +4398,7 @@ export function createObservability( if (wrappedComponent) { return wrappedComponent; } + return undefined; }, errorLoadRemote(args) { const errorArgs = args as ObservabilityRemoteErrorArgs; @@ -4403,6 +4689,72 @@ export function createObservability( factoryArgs.origin, ); }, + beforeRegisterShare(args) { + if ( + shouldGuardSharedHooksByRuntimeVersion && + !supportsRuntimeHookObservability(args.origin) + ) { + return returnHookArgs(args); + } + + if (!prepareRuntimeOrigin(args.origin)) { + return returnHookArgs(args); + } + + const shareScopeMap = getOriginShareScopeMap(args.origin); + const hostName = + sanitizeText(args.origin.options?.name, 120) || + sanitizeText(args.origin.name, 120); + + getSharedScopes(args.shared).forEach((scope) => { + const conflict = createSharedSingletonConflict({ + pkgName: args.pkgName, + shared: args.shared, + scope, + shareScopeMap, + }); + + if (!conflict) { + return; + } + + const conflictKey = getSharedConflictKey({ + hostName, + pkgName: args.pkgName, + conflict, + }); + if (reportedSharedConflictKeys.has(conflictKey)) { + return; + } + reportedSharedConflictKeys.add(conflictKey); + + recordEvent( + { + phase: 'shared-conflict', + status: 'complete', + requestId: `shared:${args.pkgName}`, + lifecycle: 'beforeRegisterShare', + shared: createSharedConflictInfo({ + pkgName: args.pkgName, + shared: args.shared, + conflict, + }), + message: `shared:${SHARED_SINGLETON_MULTIPLE_VERSIONS_REASON}`, + metadata: { + scope, + currentVersion: conflict.currentVersion || '', + versions: conflict.versions.join(','), + existingVersions: conflict.existingVersions + .map((item) => item.version) + .join(','), + }, + }, + args.origin, + ); + }); + + return returnHookArgs(args); + }, beforeLoadShare(args) { if ( shouldGuardSharedHooksByRuntimeVersion && @@ -4494,10 +4846,10 @@ export function createObservability( } as ObservabilityRuntimePlugin; if (!shouldDisablePreloadHooks) { - plugin.generatePreloadAssets = (args) => { + plugin.generatePreloadAssets = async (args) => { const preloadArgs = args as ObservabilityPreloadAssetsArgs; if (!prepareRuntimeOrigin(preloadArgs.origin)) { - return returnHookArgs(args); + return continuePreloadAssetsGeneration(); } const remote = createRemoteInfo( @@ -4526,13 +4878,13 @@ export function createObservability( preloadArgs.origin, ); - return returnHookArgs(args); + return continuePreloadAssetsGeneration(); }; plugin.afterPreloadRemote = (args) => { const preloadArgs = args as ObservabilityAfterPreloadRemoteArgs; if (!prepareRuntimeOrigin(preloadArgs.origin)) { - return returnHookArgs(args); + return undefined; } const results = preloadArgs.results || []; @@ -4548,7 +4900,7 @@ export function createObservability( }, preloadArgs.origin, ); - return returnHookArgs(args); + return undefined; } results.forEach((preloadResult) => { @@ -4595,7 +4947,7 @@ export function createObservability( }); }); - return returnHookArgs(args); + return undefined; }; } diff --git a/packages/observability-plugin/src/index.ts b/packages/observability-plugin/src/index.ts index d8abc52b205..a423f8c836a 100644 --- a/packages/observability-plugin/src/index.ts +++ b/packages/observability-plugin/src/index.ts @@ -2,3 +2,4 @@ export * from './core'; export { ObservabilityPlugin } from './browser'; export { ChromeObservabilityPlugin } from './chrome-devtool'; export { default } from './browser'; +export type { OpenRuntimeObservabilityOptions } from './openruntime'; diff --git a/packages/observability-plugin/src/openruntime-actions.ts b/packages/observability-plugin/src/openruntime-actions.ts new file mode 100644 index 00000000000..93436787781 --- /dev/null +++ b/packages/observability-plugin/src/openruntime-actions.ts @@ -0,0 +1,724 @@ +import type { OpenRuntimeCore, RuntimeInputOption } from '@openruntime/core'; + +import type { + ObservabilityReport, + ObservabilityReportListOptions, + ObservabilityReportOutcome, + ObservabilityReportQuery, + ObservabilityReportStatus, +} from './core'; + +export interface OpenRuntimeReportReader { + getReports(options?: ObservabilityReportListOptions): ObservabilityReport[]; + findReports(query?: ObservabilityReportQuery): ObservabilityReport[]; + getLatestReport(): ObservabilityReport | undefined; + getReport(traceId: string): ObservabilityReport | undefined; + exportReport(traceId?: string): ObservabilityReport | undefined; +} + +type FederationGlobalLike = { + __GLOBAL_PLUGIN__?: unknown[]; + __DEBUG_CONSTRUCTOR_VERSION__?: string; + moduleInfo?: Record; + __INSTANCES__?: unknown[]; + __SHARE__?: Record; + __MANIFEST_LOADING__?: Record; + __PRELOADED_MAP__?: Map; +}; + +const reportStatuses: ObservabilityReportStatus[] = [ + 'pending', + 'success', + 'error', +]; +const reportOutcomes: ObservabilityReportOutcome[] = [ + 'pending', + 'runtime-loaded', + 'shared-resolved', + 'preloaded', + 'component-loaded', + 'failed', + 'recovered', +]; + +export function registerOpenRuntimeActions( + runtime: OpenRuntimeCore, + source: string, + reportReader: OpenRuntimeReportReader | undefined, + registeredActionRuntimes: WeakSet, +): void { + if (registeredActionRuntimes.has(runtime)) { + return; + } + + if (reportReader) { + runtime.registerAction({ + name: 'mf:list-reports', + source, + risk: 'safe', + description: 'List Module Federation loading report summaries.', + inputSchema: { + type: 'object', + additionalProperties: false, + properties: { + limit: { + type: 'number', + description: 'Maximum report count to return.', + }, + traceId: { + type: 'string', + description: 'Exact report trace id.', + }, + remote: { + type: 'string', + description: 'Remote name or alias to match.', + }, + expose: { + type: 'string', + description: 'Exposed module to match.', + }, + shared: { + type: 'string', + description: 'Shared dependency name to match.', + }, + status: { + type: 'string', + enum: reportStatuses, + description: 'Report status to match.', + }, + outcome: { + type: 'string', + enum: reportOutcomes, + description: 'Report outcome to match.', + }, + }, + }, + getInputOptions: (inputName) => + getReportInputOptions(inputName, reportReader), + handler: (payload) => listReports(reportReader, payload), + }); + runtime.registerAction({ + name: 'mf:get-latest-report', + source, + risk: 'safe', + description: 'Get the latest Module Federation loading report.', + handler: () => { + const report = reportReader.getLatestReport(); + return { + found: report !== undefined, + report, + }; + }, + }); + runtime.registerAction({ + name: 'mf:get-report', + source, + risk: 'safe', + description: 'Get a Module Federation loading report by trace id.', + inputSchema: { + type: 'object', + additionalProperties: false, + required: ['traceId'], + properties: { + traceId: { + type: 'string', + description: 'Report trace id.', + }, + }, + }, + getInputOptions: (inputName) => + getReportInputOptions(inputName, reportReader), + handler: (payload) => { + const traceId = getPayloadString(payload, 'traceId'); + const report = traceId ? reportReader.getReport(traceId) : undefined; + return { + found: report !== undefined, + traceId, + report, + }; + }, + }); + runtime.registerAction({ + name: 'mf:export-report', + source, + risk: 'safe', + description: 'Export a Module Federation loading report.', + inputSchema: { + type: 'object', + additionalProperties: false, + properties: { + traceId: { + type: 'string', + description: + 'Report trace id. When omitted, exports latest report.', + }, + }, + }, + getInputOptions: (inputName) => + getReportInputOptions(inputName, reportReader), + handler: (payload) => { + const traceId = getPayloadString(payload, 'traceId'); + const report = reportReader.exportReport(traceId); + return { + found: report !== undefined, + traceId: report?.traceId || traceId, + report, + }; + }, + }); + } + + runtime.registerAction({ + name: 'mf:get-federation-global', + source, + risk: 'safe', + description: 'Get a summary of the current global MF runtime state.', + handler: () => getFederationGlobalSummary(), + }); + runtime.registerAction({ + name: 'mf:get-federation-module-info', + source, + risk: 'safe', + description: 'Get __FEDERATION__.moduleInfo or one moduleInfo entry.', + inputSchema: { + type: 'object', + additionalProperties: false, + properties: { + key: { + type: 'string', + description: 'moduleInfo key.', + }, + name: { + type: 'string', + description: 'moduleInfo name. Used when key is omitted.', + }, + }, + }, + getInputOptions: getFederationModuleInfoInputOptions, + handler: getFederationModuleInfoActionResult, + }); + runtime.registerAction({ + name: 'mf:list-federation-instances', + source, + risk: 'safe', + description: 'List current __FEDERATION__.__INSTANCES__ entries.', + handler: () => ({ + count: getFederationInstances().length, + instances: getFederationInstanceSummaries(), + }), + }); + runtime.registerAction({ + name: 'mf:get-federation-instance-config', + source, + risk: 'safe', + description: 'Get one __FEDERATION__.__INSTANCES__ config.', + inputSchema: { + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string', + description: 'Instance name.', + }, + index: { + type: 'number', + description: 'Instance index in __INSTANCES__.', + }, + }, + }, + getInputOptions: getFederationInstanceInputOptions, + handler: getFederationInstanceConfigActionResult, + }); + + registeredActionRuntimes.add(runtime); +} + +function listReports( + reportReader: OpenRuntimeReportReader, + payload: unknown, +): Record { + const query = getReportQuery(payload); + const reports = hasReportQueryFilter(query) + ? reportReader.findReports(query) + : reportReader.getReports({ limit: query.limit }); + + return { + count: reports.length, + reports: reports.map(createReportSummary), + }; +} + +function getReportQuery(payload: unknown): ObservabilityReportQuery { + const query: ObservabilityReportQuery = {}; + const limit = getPayloadNumber(payload, 'limit'); + const traceId = getPayloadString(payload, 'traceId'); + const remote = getPayloadString(payload, 'remote'); + const expose = getPayloadString(payload, 'expose'); + const shared = getPayloadString(payload, 'shared'); + const status = getPayloadReportStatus(payload, 'status'); + const outcome = getPayloadReportOutcome(payload, 'outcome'); + + if (limit !== undefined) { + query.limit = limit; + } + if (traceId !== undefined) { + query.traceId = traceId; + } + if (remote !== undefined) { + query.remote = remote; + } + if (expose !== undefined) { + query.expose = expose; + } + if (shared !== undefined) { + query.shared = shared; + } + if (status !== undefined) { + query.status = status; + } + if (outcome !== undefined) { + query.outcome = outcome; + } + + return query; +} + +function hasReportQueryFilter(query: ObservabilityReportQuery): boolean { + return ( + query.traceId !== undefined || + query.remote !== undefined || + query.expose !== undefined || + query.shared !== undefined || + query.status !== undefined || + query.outcome !== undefined + ); +} + +function createReportSummary( + report: ObservabilityReport, +): Record { + return compactObject({ + traceId: report.traceId, + status: report.status, + requestId: report.requestId, + requestAlias: report.requestAlias, + hostName: report.hostName, + runtimeVersion: report.runtimeVersion, + remote: report.remote, + expose: report.expose, + shared: report.shared, + startedAt: report.startedAt, + updatedAt: report.updatedAt, + duration: report.duration, + outcome: report.summary.outcome, + lastPhase: report.summary.lastPhase, + eventCount: report.summary.eventCount, + failedPhase: report.failedPhase, + errorCode: report.errorCode, + errorMessage: report.errorMessage, + }); +} + +function getReportInputOptions( + inputName: string, + reportReader: OpenRuntimeReportReader, +): RuntimeInputOption[] { + if (inputName !== 'traceId') { + return []; + } + + return reportReader.getReports({ limit: 20 }).map((report) => ({ + value: report.traceId, + description: + report.remote?.name || + report.shared?.name || + report.requestAlias || + report.requestId || + report.summary.outcome, + })); +} + +function getFederationGlobalSummary(): Record { + const federation = getFederationGlobal(); + if (!federation) { + return { + available: false, + }; + } + + const moduleInfoKeys = Object.keys(federation.moduleInfo || {}); + const shareScopeKeys = Object.keys(federation.__SHARE__ || {}); + const manifestLoadingKeys = Object.keys( + federation.__MANIFEST_LOADING__ || {}, + ); + const preloadedMap = federation.__PRELOADED_MAP__; + + return compactObject({ + available: true, + debugConstructorVersion: federation.__DEBUG_CONSTRUCTOR_VERSION__, + globalPluginCount: federation.__GLOBAL_PLUGIN__?.length || 0, + moduleInfoCount: moduleInfoKeys.length, + moduleInfoKeys, + instanceCount: federation.__INSTANCES__?.length || 0, + instances: getFederationInstanceSummaries(), + shareScopeKeys, + manifestLoadingKeys, + preloadedKeys: preloadedMap + ? toJsonSafeValue(Array.from(preloadedMap.keys())) + : undefined, + }); +} + +function getFederationModuleInfoActionResult( + payload: unknown, +): Record { + const moduleInfo = getFederationGlobal()?.moduleInfo; + if (!moduleInfo) { + return { + available: false, + }; + } + + const key = + getPayloadString(payload, 'key') || getPayloadString(payload, 'name'); + if (key) { + return { + available: true, + found: Object.hasOwnProperty.call(moduleInfo, key), + key, + moduleInfo: toJsonSafeValue(moduleInfo[key], { + depth: 5, + maxArrayLength: 50, + maxObjectKeys: 80, + }), + }; + } + + return { + available: true, + keys: Object.keys(moduleInfo), + moduleInfo: toJsonSafeValue(moduleInfo, { + depth: 5, + maxArrayLength: 50, + maxObjectKeys: 80, + }), + }; +} + +function getFederationModuleInfoInputOptions( + inputName: string, +): RuntimeInputOption[] { + if (inputName !== 'key' && inputName !== 'name') { + return []; + } + + return Object.keys(getFederationGlobal()?.moduleInfo || {}).map((key) => ({ + value: key, + })); +} + +function getFederationInstanceConfigActionResult( + payload: unknown, +): Record { + const instances = getFederationInstances(); + const index = getPayloadNumber(payload, 'index'); + const name = getPayloadString(payload, 'name'); + const matchedIndex = + index !== undefined + ? index + : instances.findIndex( + (instance, instanceIndex) => + getFederationInstanceName(instance, instanceIndex) === name, + ); + const instance = + matchedIndex >= 0 && matchedIndex < instances.length + ? instances[matchedIndex] + : undefined; + + if (!instance) { + return { + found: false, + name, + index, + instances: getFederationInstanceSummaries(), + }; + } + + return { + found: true, + instance: getFederationInstanceDetail(instance, matchedIndex), + }; +} + +function getFederationInstanceInputOptions( + inputName: string, +): RuntimeInputOption[] { + if (inputName !== 'name' && inputName !== 'index') { + return []; + } + + return getFederationInstanceSummaries().map((summary) => { + const value = inputName === 'index' ? summary.index : summary.name; + return { + value, + description: String(summary.name), + }; + }); +} + +function getFederationInstanceSummaries(): Array<{ + index: number; + name: string; + remoteCount?: number; + sharedCount?: number; + pluginCount?: number; +}> { + return getFederationInstances().map((instance, index) => { + const options = asRecord(getRecordProperty(asRecord(instance), 'options')); + const remotes = getRecordProperty(options, 'remotes'); + const shared = getRecordProperty(options, 'shared'); + const plugins = getRecordProperty(options, 'plugins'); + + return compactObject({ + index, + name: getFederationInstanceName(instance, index), + remoteCount: getCollectionSize(remotes), + sharedCount: getCollectionSize(shared), + pluginCount: getCollectionSize(plugins), + }) as { + index: number; + name: string; + remoteCount?: number; + sharedCount?: number; + pluginCount?: number; + }; + }); +} + +function getFederationInstanceDetail( + instance: unknown, + index: number, +): Record { + const instanceRecord = asRecord(instance); + const options = asRecord(getRecordProperty(instanceRecord, 'options')); + + return compactObject({ + index, + name: getFederationInstanceName(instance, index), + version: getRecordString(instanceRecord, 'version'), + config: toJsonSafeValue(options, { + depth: 6, + maxArrayLength: 80, + maxObjectKeys: 120, + }), + }); +} + +function getFederationInstanceName(instance: unknown, index: number): string { + const instanceRecord = asRecord(instance); + const options = asRecord(getRecordProperty(instanceRecord, 'options')); + + return ( + getRecordString(instanceRecord, 'name') || + getRecordString(options, 'name') || + `#${index}` + ); +} + +function getFederationInstances(): unknown[] { + return getFederationGlobal()?.__INSTANCES__ || []; +} + +function getFederationGlobal(): FederationGlobalLike | undefined { + const currentGlobal = globalThis as typeof globalThis & { + __FEDERATION__?: FederationGlobalLike; + __VMOK__?: FederationGlobalLike; + }; + + return currentGlobal.__FEDERATION__ || currentGlobal.__VMOK__; +} + +function getPayloadString(payload: unknown, key: string): string | undefined { + const value = getRecordProperty(asRecord(payload), key); + return typeof value === 'string' && value ? value : undefined; +} + +function getPayloadNumber(payload: unknown, key: string): number | undefined { + const value = getRecordProperty(asRecord(payload), key); + return typeof value === 'number' && Number.isFinite(value) + ? value + : undefined; +} + +function getPayloadReportStatus( + payload: unknown, + key: string, +): ObservabilityReportStatus | undefined { + const value = getPayloadString(payload, key); + return value && isReportStatus(value) ? value : undefined; +} + +function getPayloadReportOutcome( + payload: unknown, + key: string, +): ObservabilityReportOutcome | undefined { + const value = getPayloadString(payload, key); + return value && isReportOutcome(value) ? value : undefined; +} + +function isReportStatus(value: string): value is ObservabilityReportStatus { + return reportStatuses.includes(value as ObservabilityReportStatus); +} + +function isReportOutcome(value: string): value is ObservabilityReportOutcome { + return reportOutcomes.includes(value as ObservabilityReportOutcome); +} + +function asRecord(value: unknown): Record | undefined { + if (!value || typeof value !== 'object' || Array.isArray(value)) { + return undefined; + } + + return value as Record; +} + +function getRecordProperty( + record: Record | undefined, + key: string, +): unknown { + return record ? record[key] : undefined; +} + +function getRecordString( + record: Record | undefined, + key: string, +): string | undefined { + const value = getRecordProperty(record, key); + return typeof value === 'string' && value ? value : undefined; +} + +function getCollectionSize(value: unknown): number | undefined { + if (Array.isArray(value)) { + return value.length; + } + if (value instanceof Map || value instanceof Set) { + return value.size; + } + if (value && typeof value === 'object') { + return Object.keys(value).length; + } + + return undefined; +} + +function toJsonSafeValue( + value: unknown, + options: { + depth?: number; + maxArrayLength?: number; + maxObjectKeys?: number; + seen?: WeakSet; + } = {}, +): unknown { + const depth = options.depth ?? 4; + const maxArrayLength = options.maxArrayLength ?? 40; + const maxObjectKeys = options.maxObjectKeys ?? 60; + const seen = options.seen || new WeakSet(); + + if ( + value === null || + typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' + ) { + return value; + } + if (typeof value === 'bigint') { + return value.toString(); + } + if (typeof value === 'undefined') { + return undefined; + } + if (typeof value === 'function') { + return `[function ${value.name || 'anonymous'}]`; + } + if (typeof value === 'symbol') { + return value.toString(); + } + if (typeof value !== 'object') { + return String(value); + } + if (depth <= 0) { + return '[max-depth]'; + } + if (seen.has(value)) { + return '[circular]'; + } + + seen.add(value); + const nextOptions = { + depth: depth - 1, + maxArrayLength, + maxObjectKeys, + seen, + }; + + if (Array.isArray(value)) { + const items = value + .slice(0, maxArrayLength) + .map((item) => toJsonSafeValue(item, nextOptions)); + if (value.length > maxArrayLength) { + items.push(`[truncated ${value.length - maxArrayLength} items]`); + } + return items; + } + + if (value instanceof Map) { + const entries = Array.from(value.entries()).slice(0, maxArrayLength); + return { + type: 'Map', + size: value.size, + entries: entries.map(([entryKey, entryValue]) => [ + toJsonSafeValue(entryKey, nextOptions), + toJsonSafeValue(entryValue, nextOptions), + ]), + }; + } + + if (value instanceof Set) { + return { + type: 'Set', + size: value.size, + values: Array.from(value.values()) + .slice(0, maxArrayLength) + .map((item) => toJsonSafeValue(item, nextOptions)), + }; + } + + const record = value as Record; + const keys = Object.keys(record); + const output: Record = {}; + keys.slice(0, maxObjectKeys).forEach((key) => { + const nextValue = toJsonSafeValue(record[key], nextOptions); + if (nextValue !== undefined) { + output[key] = nextValue; + } + }); + if (keys.length > maxObjectKeys) { + output['__truncatedKeys'] = keys.length - maxObjectKeys; + } + + return output; +} + +function compactObject( + input: Record, +): Record { + const output: Record = {}; + Object.entries(input).forEach(([key, value]) => { + if (value !== undefined) { + output[key] = value; + } + }); + return output; +} diff --git a/packages/observability-plugin/src/openruntime.ts b/packages/observability-plugin/src/openruntime.ts new file mode 100644 index 00000000000..552aca5ef93 --- /dev/null +++ b/packages/observability-plugin/src/openruntime.ts @@ -0,0 +1,843 @@ +import type { + BridgeConnectOptions, + OpenRuntimeCore, + OpenRuntimeWindowHost, + RuntimeError, + RuntimeStatus, +} from '@openruntime/core'; +import { + createOpenRuntime, + getOpenRuntimeFromWindow, + installOpenRuntimeOnWindow, +} from '@openruntime/core'; + +import type { + ObservabilityEvent, + ObservabilityEventContext, + ObservabilityPhaseSummary, + ObservabilityRemoteInfo, + ObservabilityReport, + ObservabilitySharedInfo, +} from './core'; +import { + registerOpenRuntimeActions, + type OpenRuntimeReportReader, +} from './openruntime-actions'; + +export interface OpenRuntimeObservabilityOptions { + enabled?: boolean; + runtime?: OpenRuntimeCore; + host?: OpenRuntimeWindowHost; + bridge?: false | BridgeConnectOptions; + source?: string; +} + +interface OpenRuntimeObservabilityAdapter { + syncReport( + report: ObservabilityReport, + context?: ObservabilityEventContext, + ): void; +} + +type LoadingTargetStatus = + | 'registered' + | 'loading' + | 'ready' + | 'error' + | 'recovered'; +type SharedTargetStatus = + | 'unloaded' + | 'loading' + | 'loaded' + | 'recovered' + | 'error'; +type SharedConflictTargetStatus = 'warning'; + +const openRuntimeSource = 'module-federation'; +const loadingStatuses: LoadingTargetStatus[] = [ + 'registered', + 'loading', + 'ready', + 'error', + 'recovered', +]; +const sharedStatuses: SharedTargetStatus[] = [ + 'unloaded', + 'loading', + 'loaded', + 'recovered', + 'error', +]; +const sharedConflictStatuses: SharedConflictTargetStatus[] = ['warning']; +const remoteLifecyclePhases = new Set([ + 'matchRemote', + 'manifest', + 'remoteEntry', + 'remoteEntryInit', + 'loadRemote', + 'preload', +]); +const remoteFailurePhases = new Set([ + 'matchRemote', + 'manifest', + 'remoteEntry', + 'remoteEntryInit', + 'loadRemote', +]); + +export function createOpenRuntimeObservabilityAdapter( + input: boolean | OpenRuntimeObservabilityOptions | undefined, + reportReader?: OpenRuntimeReportReader, +): OpenRuntimeObservabilityAdapter | undefined { + if (!input) { + return undefined; + } + + const options: OpenRuntimeObservabilityOptions = input === true ? {} : input; + if (options.enabled === false) { + return undefined; + } + + const connectedRuntimes = new WeakSet(); + const registeredActionRuntimes = new WeakSet(); + let createdRuntime: OpenRuntimeCore | undefined; + + const getRuntime = () => { + if (options.runtime) { + return options.runtime; + } + + const host = options.host || getDefaultHost(); + const runtime = getOpenRuntimeFromWindow(host); + if (runtime) { + return runtime; + } + + if (!createdRuntime) { + const nextRuntime = createOpenRuntime(); + createdRuntime = host + ? installOpenRuntimeOnWindow(nextRuntime, host) + : nextRuntime; + } + + return createdRuntime; + }; + + return { + syncReport(report) { + try { + const runtime = getRuntime(); + const source = options.source || openRuntimeSource; + registerOpenRuntimeActions( + runtime, + source, + reportReader, + registeredActionRuntimes, + ); + connectRuntimeBridge(runtime, options.bridge, connectedRuntimes); + syncReportToOpenRuntime(runtime, source, report, reportReader); + } catch { + // OpenRuntime output is diagnostic-only and must not affect MF loading. + } + }, + }; +} + +function connectRuntimeBridge( + runtime: OpenRuntimeCore, + bridge: false | BridgeConnectOptions | undefined, + connectedRuntimes: WeakSet, +): void { + if ( + bridge === undefined || + bridge === false || + connectedRuntimes.has(runtime) + ) { + return; + } + + runtime.connectBridge(bridge); + connectedRuntimes.add(runtime); +} + +function syncReportToOpenRuntime( + runtime: OpenRuntimeCore, + source: string, + report: ObservabilityReport, + reportReader: OpenRuntimeReportReader | undefined, +): void { + if (report.remote) { + syncRemote(runtime, source, report, reportReader); + syncRemoteModule(runtime, source, report, reportReader); + } + + if (report.shared) { + syncShared(runtime, source, report); + syncSharedConflict(runtime, source, report); + } +} + +function syncRemote( + runtime: OpenRuntimeCore, + source: string, + report: ObservabilityReport, + reportReader: OpenRuntimeReportReader | undefined, +): void { + const remote = report.remote; + if (!remote?.name) { + return; + } + + const targetId = targetIds.remote(remote.name); + const remoteReports = getRemoteReports(report, remote, reportReader); + const remoteStatus = getRemoteStatus(remoteReports); + const remoteData = getRemoteTargetData(remote, remoteReports); + runtime.registerTarget({ + id: targetId, + type: targetTypes.remote, + source, + label: `MF remote ${remote.name}`, + description: 'Module Federation remote loading state.', + statuses: loadingStatuses, + data: remoteData, + }); + runtime.updateSnapshot({ + id: targetId, + status: remoteStatus, + source, + data: remoteData, + error: getRemoteError(remoteReports, remoteStatus), + }); +} + +function syncRemoteModule( + runtime: OpenRuntimeCore, + source: string, + report: ObservabilityReport, + reportReader: OpenRuntimeReportReader | undefined, +): void { + const remote = report.remote; + if (!remote?.name || !report.expose) { + return; + } + + const targetId = targetIds.remoteModule(remote.name, report.expose); + const remoteModuleReports = getRemoteModuleReports( + report, + remote, + report.expose, + reportReader, + ); + const latestReport = remoteModuleReports[0] || report; + const remoteModuleData = getRemoteModuleTargetData( + latestReport, + remoteModuleReports, + ); + runtime.registerTarget({ + id: targetId, + type: targetTypes.remoteModule, + source, + label: `MF remote module ${remote.name}/${normalizeExpose(report.expose)}`, + description: 'Module Federation exposed module loading state.', + statuses: loadingStatuses, + data: remoteModuleData, + }); + runtime.updateSnapshot({ + id: targetId, + status: getRemoteModuleStatus(latestReport), + source, + data: remoteModuleData, + error: getReportError(latestReport), + dependsOn: getRemoteModuleDependsOn(remote.name), + }); +} + +function syncShared( + runtime: OpenRuntimeCore, + source: string, + report: ObservabilityReport, +): void { + const shared = report.shared; + if (!shared?.name) { + return; + } + + const targetId = targetIds.shared(shared); + runtime.registerTarget({ + id: targetId, + type: targetTypes.shared, + source, + label: `MF shared ${shared.name}`, + description: 'Module Federation shared dependency loading state.', + statuses: sharedStatuses, + data: getSharedTargetData(report, shared), + }); + runtime.updateSnapshot({ + id: targetId, + status: getSharedStatus(report), + source, + data: getSharedTargetData(report, shared), + error: getReportError(report), + }); +} + +function syncSharedConflict( + runtime: OpenRuntimeCore, + source: string, + report: ObservabilityReport, +): void { + const shared = report.shared; + if (!shared?.name || shared.reason !== 'singleton-multiple-versions') { + return; + } + + const targetId = targetIds.sharedConflict(shared); + const data = getSharedConflictTargetData(report, shared); + runtime.registerTarget({ + id: targetId, + type: targetTypes.sharedConflict, + source, + label: `MF shared conflict ${shared.name}`, + description: + 'Module Federation singleton shared dependency version conflict.', + statuses: sharedConflictStatuses, + data, + }); + runtime.updateSnapshot({ + id: targetId, + status: 'warning', + source, + data, + }); +} + +function getRemoteTargetData( + remote: ObservabilityRemoteInfo, + reports: ObservabilityReport[], +): Record { + const latestReport = reports[0]; + const exposes = getRemoteExposeData(remote.name, reports); + return compactObject({ + hostName: getReportHostNames(reports), + runtimeVersion: latestReport?.runtimeVersion, + remote: getLatestRemoteInfo(remote, reports), + exposes: exposes.length > 0 ? exposes : undefined, + reportCount: reports.length, + }); +} + +function getRemoteModuleTargetData( + report: ObservabilityReport, + reports: ObservabilityReport[], +): Record { + const hostNames = getReportHostNames(reports, report.expose); + return compactObject({ + traceId: report.traceId, + requestId: report.requestId, + requestAlias: report.requestAlias, + hostName: hostNames, + runtimeVersion: report.runtimeVersion, + consumers: hostNames, + lastPhase: report.summary.lastPhase, + phases: report.summary.phases, + loadedBefore: report.loadedBefore, + }); +} + +function getSharedTargetData( + report: ObservabilityReport, + shared: ObservabilitySharedInfo, +): Record { + return compactObject({ + traceId: report.traceId, + requestId: report.requestId, + hostName: report.hostName, + runtimeVersion: report.runtimeVersion, + shared: getSharedSnapshotData(shared), + lastPhase: report.summary.lastPhase, + phases: report.summary.phases, + }); +} + +function getSharedConflictTargetData( + report: ObservabilityReport, + shared: ObservabilitySharedInfo, +): Record { + const conflict = shared.conflict; + + return compactObject({ + traceId: report.traceId, + requestId: report.requestId, + hostName: report.hostName, + runtimeVersion: report.runtimeVersion, + reason: shared.reason, + sharedName: shared.name, + scope: conflict?.scope || getSharedTargetScope(shared), + singleton: shared.singleton, + currentVersion: conflict?.currentVersion || getSharedTargetVersion(shared), + currentFrom: conflict?.currentFrom || shared.provider, + versions: conflict?.versions || shared.availableVersions, + existingVersions: conflict?.existingVersions, + shared: getSharedSnapshotData(shared), + }); +} + +function getSharedSnapshotData( + shared: ObservabilitySharedInfo, +): Record { + return compactObject({ + name: shared.name, + shareScope: shared.shareScope, + version: getSharedTargetVersion(shared), + requiredVersion: shared.requiredVersion, + provider: shared.provider, + singleton: shared.singleton, + strictVersion: shared.strictVersion, + eager: shared.eager, + strategy: shared.strategy, + loaded: shared.loaded, + loading: shared.loaded ? undefined : shared.loading, + reason: shared.reason, + definedBy: shared.definedBy, + conflict: shared.conflict, + }); +} + +function getRemoteStatus(reports: ObservabilityReport[]): LoadingTargetStatus { + const phaseRecord = getLatestRemotePhaseRecord(reports); + if (!phaseRecord) { + return 'loading'; + } + + const failedPhase = getFailedPhase(phaseRecord.report); + if ( + failedPhase && + remoteFailurePhases.has(failedPhase) && + failedPhase === phaseRecord.phaseName + ) { + return phaseRecord.report.summary.recovered ? 'recovered' : 'error'; + } + + const phase = phaseRecord.report.summary.phases[phaseRecord.phaseName]; + if (phase) { + return mapPhaseStatus(phase); + } + + return mapEventStatus(phaseRecord.event.status); +} + +function getRemoteExposeData( + remoteName: string, + reports: ObservabilityReport[], +): Array> { + const reportsByExpose = new Map(); + + reports.forEach((report) => { + const expose = getReportExpose(report); + const exposeKey = expose ? normalizeExpose(expose) : ''; + if (!expose || reportsByExpose.has(exposeKey)) { + return; + } + + reportsByExpose.set(exposeKey, report); + }); + + return Array.from(reportsByExpose.values()) + .map((report) => + compactObject({ + targetId: targetIds.remoteModule( + remoteName, + getReportExpose(report) || '', + ), + }), + ) + .filter((item) => item['targetId'] !== undefined) + .sort((left, right) => + String(left['targetId'] || '').localeCompare( + String(right['targetId'] || ''), + ), + ); +} + +function getRemoteModuleStatus( + report: ObservabilityReport, +): LoadingTargetStatus { + if (report.status === 'error') { + return 'error'; + } + if (report.summary.recovered) { + return 'recovered'; + } + if (report.summary.componentLoaded || report.summary.runtimeLoaded) { + return 'ready'; + } + + const exposePhaseStatus = + getPhaseTargetStatus(report, 'moduleFactory') || + getPhaseTargetStatus(report, 'expose'); + return exposePhaseStatus || 'loading'; +} + +function getSharedStatus(report: ObservabilityReport): SharedTargetStatus { + const sharedPhaseStatus = report.summary.phases['shared']?.status; + if (report.status === 'error' || sharedPhaseStatus === 'error') { + return 'error'; + } + if (report.summary.recovered) { + return 'recovered'; + } + if (report.shared?.loaded || report.summary.sharedResolved) { + return 'loaded'; + } + if (report.shared?.loading) { + return 'loading'; + } + if (sharedPhaseStatus === 'start') { + return 'loading'; + } + + return 'unloaded'; +} + +function getPhaseTargetStatus( + report: ObservabilityReport, + phase: string, +): LoadingTargetStatus | undefined { + const summary = report.summary.phases[phase]; + if (!summary) { + return undefined; + } + if (summary.recovered) { + return 'recovered'; + } + + return mapPhaseStatus(summary); +} + +function mapPhaseStatus( + summary: ObservabilityPhaseSummary, +): LoadingTargetStatus { + if (summary.status === 'start') { + return 'loading'; + } + if (summary.status === 'error') { + return 'error'; + } + if (summary.status === 'success' || summary.status === 'complete') { + return 'ready'; + } + + return 'registered'; +} + +function mapEventStatus( + status: ObservabilityEvent['status'] | undefined, +): LoadingTargetStatus { + if (status === 'start') { + return 'loading'; + } + if (status === 'error') { + return 'error'; + } + if (status === 'success' || status === 'complete') { + return 'ready'; + } + + return 'registered'; +} + +function getReportError(report: ObservabilityReport): RuntimeError | undefined { + const error = report.summary.error; + if (!error && report.status !== 'error') { + return undefined; + } + + const runtimeError: RuntimeError = { + message: error?.errorMessage || report.errorMessage || 'MF loading failed.', + }; + const code = error?.errorCode || report.errorCode; + const data = compactObject({ + traceId: report.traceId, + failedPhase: error?.failedPhase || report.failedPhase, + lifecycle: error?.lifecycle, + ownerHint: error?.ownerHint, + retryable: error?.retryable, + context: error?.context || report.errorContext, + }); + + if (code) { + runtimeError.code = code; + } + if (report.errorStack) { + runtimeError.stack = report.errorStack; + } + if (Object.keys(data).length > 0) { + runtimeError.data = data; + } + + return runtimeError; +} + +function getRemoteError( + reports: ObservabilityReport[], + status: LoadingTargetStatus, +): RuntimeError | undefined { + if (status !== 'error') { + return undefined; + } + + const failedReport = reports.find((report) => isRemoteFailureReport(report)); + return failedReport ? getReportError(failedReport) : undefined; +} + +function getRemoteModuleDependsOn(remoteName: string): string[] { + return [targetIds.remote(remoteName)]; +} + +function getRemoteReports( + currentReport: ObservabilityReport, + remote: ObservabilityRemoteInfo, + reportReader: OpenRuntimeReportReader | undefined, +): ObservabilityReport[] { + const reports = reportReader + ? reportReader + .getReports() + .filter((report) => isSameRemoteReport(report, remote)) + : []; + + if (!reports.some((report) => report.traceId === currentReport.traceId)) { + reports.unshift(currentReport); + } + + return Array.from( + new Map(reports.map((report) => [report.traceId, report])).values(), + ).sort(compareReportsByTime); +} + +function getRemoteModuleReports( + currentReport: ObservabilityReport, + remote: ObservabilityRemoteInfo, + expose: string, + reportReader: OpenRuntimeReportReader | undefined, +): ObservabilityReport[] { + const reports = getRemoteReports(currentReport, remote, reportReader).filter( + (report) => isSameExposeReport(report, expose), + ); + + if (!reports.some((report) => report.traceId === currentReport.traceId)) { + reports.unshift(currentReport); + } + + return Array.from( + new Map(reports.map((report) => [report.traceId, report])).values(), + ).sort(compareReportsByTime); +} + +function getLatestRemoteInfo( + fallback: ObservabilityRemoteInfo, + reports: ObservabilityReport[], +): ObservabilityRemoteInfo { + return reports.find((report) => report.remote)?.remote || fallback; +} + +function isSameRemoteReport( + report: ObservabilityReport, + remote: ObservabilityRemoteInfo, +): boolean { + if (!report.remote) { + return false; + } + + const expected = new Set( + [remote.name, remote.alias, remote.entry].filter( + (value): value is string => value !== undefined, + ), + ); + const actual = [report.remote.name, report.remote.alias, report.remote.entry]; + return actual.some((value) => value !== undefined && expected.has(value)); +} + +function isSameExposeReport( + report: ObservabilityReport, + expose: string, +): boolean { + const reportExpose = getReportExpose(report); + if (!reportExpose) { + return false; + } + + return normalizeExpose(reportExpose) === normalizeExpose(expose); +} + +function getReportHostNames( + reports: ObservabilityReport[], + expose?: string, +): string[] | undefined { + const hostNames: string[] = []; + const seen = new Set(); + const addHostName = (hostName: string | undefined) => { + if (!isNonEmptyString(hostName) || seen.has(hostName)) { + return; + } + + seen.add(hostName); + hostNames.push(hostName); + }; + + reports.forEach((report) => { + addHostName(report.hostName); + report.loadedBefore?.consumers.forEach((consumer) => { + if (expose && !hasLoadedExpose(consumer.exposes, expose)) { + return; + } + + addHostName(consumer.name); + }); + }); + + return hostNames.length > 0 ? hostNames : undefined; +} + +function hasLoadedExpose( + loadedExposes: string[] | undefined, + expose: string, +): boolean { + return Boolean( + loadedExposes?.some( + (loadedExpose) => + normalizeExpose(loadedExpose) === normalizeExpose(expose), + ), + ); +} + +function compareReportsByTime( + left: ObservabilityReport, + right: ObservabilityReport, +): number { + if (right.updatedAt !== left.updatedAt) { + return right.updatedAt - left.updatedAt; + } + + return right.startedAt - left.startedAt; +} + +function getLatestRemotePhaseRecord(reports: ObservabilityReport[]): + | { + report: ObservabilityReport; + event: ObservabilityEvent; + phaseName: string; + } + | undefined { + return reports + .flatMap((report) => + report.events + .filter((event) => remoteLifecyclePhases.has(event.phase)) + .map((event) => ({ + report, + event, + phaseName: event.phase, + })), + ) + .sort((left, right) => right.event.timestamp - left.event.timestamp)[0]; +} + +function isRemoteFailureReport(report: ObservabilityReport): boolean { + const failedPhase = getFailedPhase(report); + return failedPhase !== undefined && remoteFailurePhases.has(failedPhase); +} + +function getFailedPhase(report: ObservabilityReport): string | undefined { + return report.summary.error?.failedPhase || report.failedPhase; +} + +function getExposeFromRequestId( + requestId: string | undefined, +): string | undefined { + if (!requestId) { + return undefined; + } + + const separatorIndex = requestId.indexOf('/'); + if (separatorIndex < 0 || separatorIndex === requestId.length - 1) { + return undefined; + } + + return requestId.slice(separatorIndex + 1); +} + +function getReportExpose(report: ObservabilityReport): string | undefined { + return report.expose || getExposeFromRequestId(report.requestId); +} + +function compactObject( + input: Record, +): Record { + const output: Record = {}; + Object.entries(input).forEach(([key, value]) => { + if (value !== undefined) { + output[key] = value; + } + }); + return output; +} + +function isNonEmptyString(value: unknown): value is string { + return typeof value === 'string' && value.trim().length > 0; +} + +function getDefaultHost(): OpenRuntimeWindowHost | undefined { + if (typeof window === 'undefined') { + return undefined; + } + + return window; +} + +function normalizeSegment(value: string): string { + const normalized = value.trim().replace(/\s+/g, '_'); + return normalized || 'unknown'; +} + +function normalizeExpose(value: string): string { + return normalizeSegment(value.replace(/^\.\//, '')); +} + +const targetTypes = { + remote: 'mf.remote', + remoteModule: 'mf.remote.expose', + shared: 'mf.shared', + sharedConflict: 'mf.shared.conflict', +} as const; + +const targetIds = { + remote(remoteName: string): string { + return `mf:remote:${normalizeSegment(remoteName)}`; + }, + remoteModule(remoteName: string, expose: string): string { + return `mf:remote:${normalizeSegment(remoteName)}:expose:${normalizeExpose( + expose, + )}`; + }, + shared(shared: ObservabilitySharedInfo): string { + return `mf:shared:${normalizeSegment(shared.name)}:${normalizeSegment( + getSharedTargetVersion(shared), + )}:${normalizeSegment(getSharedTargetScope(shared))}`; + }, + sharedConflict(shared: ObservabilitySharedInfo): string { + return `mf:shared-conflict:${normalizeSegment( + shared.name, + )}:${normalizeSegment(getSharedTargetScope(shared))}`; + }, +}; + +function getSharedTargetVersion(shared: ObservabilitySharedInfo): string { + const requiredVersion = + typeof shared.requiredVersion === 'string' ? shared.requiredVersion : ''; + return ( + shared.selectedVersion || shared.version || requiredVersion || 'unknown' + ); +} + +function getSharedTargetScope(shared: ObservabilitySharedInfo): string { + return shared.shareScope?.length ? shared.shareScope.join('_') : 'default'; +} diff --git a/packages/observability-plugin/tsconfig.json b/packages/observability-plugin/tsconfig.json index 90b8d931e39..5d454e7ec15 100644 --- a/packages/observability-plugin/tsconfig.json +++ b/packages/observability-plugin/tsconfig.json @@ -11,5 +11,10 @@ }, "files": [], "include": [], - "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts"] + "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts"], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] } diff --git a/packages/observability-plugin/tsconfig.lib.json b/packages/observability-plugin/tsconfig.lib.json new file mode 100644 index 00000000000..faa09cc1862 --- /dev/null +++ b/packages/observability-plugin/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/packages/observability-plugin/tsdown.config.ts b/packages/observability-plugin/tsdown.config.ts index 2ad0d32cff6..3fe5ffbc4b8 100644 --- a/packages/observability-plugin/tsdown.config.ts +++ b/packages/observability-plugin/tsdown.config.ts @@ -1,5 +1,3 @@ -import { defineConfig } from 'tsdown'; - const entry = { index: 'src/index.ts', browser: 'src/browser.ts', @@ -10,7 +8,7 @@ const entry = { const baseConfig = { cwd: import.meta.dirname, - tsconfig: 'tsconfig.json', + tsconfig: 'tsconfig.lib.json', clean: true, entry, external: [ @@ -21,7 +19,7 @@ const baseConfig = { ], }; -export default defineConfig([ +export default [ { ...baseConfig, name: 'observability-plugin-cjs', @@ -45,4 +43,4 @@ export default defineConfig([ js: '.js', }), }, -]); +]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de1534b7d5b..be37e4d381b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1109,7 +1109,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../packages/modernjs-v3 @@ -1128,7 +1128,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1167,7 +1167,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../packages/modernjs-v3 @@ -1186,7 +1186,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1234,7 +1234,7 @@ importers: version: link:../../../packages/storybook-addon '@rsbuild/plugin-react': specifier: ^1.4.5 - version: 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + version: 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) '@rslib/core': specifier: ^0.9.0 version: 0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3) @@ -1261,7 +1261,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../packages/modernjs-v3 @@ -1280,7 +1280,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1332,7 +1332,7 @@ importers: version: link:../../../packages/rsbuild-plugin '@rsbuild/plugin-react': specifier: ^1.4.5 - version: 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + version: 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) '@rslib/core': specifier: ^0.9.0 version: 0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3) @@ -1350,7 +1350,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../packages/modernjs-v3 @@ -1369,7 +1369,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1408,7 +1408,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../packages/modernjs-v3 @@ -1427,7 +1427,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1466,7 +1466,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../packages/modernjs-v3 @@ -1485,7 +1485,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1524,7 +1524,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../packages/modernjs-v3 @@ -1543,7 +1543,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -1582,7 +1582,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../packages/modernjs-v3 @@ -1601,7 +1601,7 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) @@ -2128,7 +2128,7 @@ importers: version: 1.7.3 '@rsbuild/plugin-vue': specifier: ^1.2.6 - version: 1.2.7(@rsbuild/core@1.7.3)(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3)) + version: 1.2.7(@rsbuild/core@1.7.3)(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3)) tailwindcss: specifier: ^3.4.3 version: 3.4.13(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@25.9.1)(typescript@5.9.3)) @@ -2245,7 +2245,7 @@ importers: version: 1.7.3 '@rsbuild/plugin-vue': specifier: ^1.2.6 - version: 1.2.7(@rsbuild/core@1.7.3)(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3)) + version: 1.2.7(@rsbuild/core@1.7.3)(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3)) '@vue/tsconfig': specifier: ^0.5.1 version: 0.5.1 @@ -2395,7 +2395,7 @@ importers: version: link:../../packages/storybook-addon '@rsbuild/plugin-react': specifier: ^1.4.5 - version: 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + version: 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) '@rslib/core': specifier: ^0.9.0 version: 0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3) @@ -2416,10 +2416,10 @@ importers: version: 8.6.17(prettier@3.8.1) storybook-addon-rslib: specifier: ^1.0.1 - version: 1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rslib/core@0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3))(storybook-builder-rsbuild@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3))(typescript@5.9.3) + version: 1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rslib/core@0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3))(storybook-builder-rsbuild@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3))(typescript@5.9.3) storybook-react-rsbuild: specifier: ^1.0.1 - version: 1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.25.0)(webpack-cli@5.1.4)) + version: 1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.25.0)(webpack-cli@5.1.4)) apps/runtime-demo/3005-runtime-host: dependencies: @@ -2561,7 +2561,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/enhanced': specifier: workspace:* version: link:../../../../packages/enhanced @@ -2580,13 +2580,13 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/plugin-server': specifier: 2.68.0 - version: 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/server-runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/tsconfig': specifier: 3.0.1 version: 3.0.1 @@ -2631,7 +2631,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/enhanced': specifier: workspace:* version: link:../../../../packages/enhanced @@ -2650,13 +2650,13 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) '@modern-js/plugin-server': specifier: 2.68.0 - version: 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/tsconfig': specifier: 3.0.1 version: 3.0.1 @@ -2695,7 +2695,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../../packages/modernjs-v3 @@ -2714,16 +2714,16 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) '@modern-js/plugin-server': specifier: 2.68.0 - version: 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/server-runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/tsconfig': specifier: 3.0.1 version: 3.0.1 @@ -2771,7 +2771,7 @@ importers: version: 7.28.2 '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@module-federation/modern-js-v3': specifier: workspace:* version: link:../../../../packages/modernjs-v3 @@ -2790,13 +2790,13 @@ importers: version: 2.59.0(typescript@5.0.4) '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/eslint-config': specifier: 2.59.0 version: 2.59.0(typescript@5.0.4) '@modern-js/plugin-server': specifier: 2.68.0 - version: 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/tsconfig': specifier: 3.0.1 version: 3.0.1 @@ -2835,13 +2835,13 @@ importers: version: link:../../packages/rspress-plugin '@rsbuild/plugin-sass': specifier: ^1.5.0 - version: 1.5.1(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) + version: 1.5.1(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) '@rspress/core': specifier: 2.0.3 - version: 2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1) + version: 2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1) '@rspress/plugin-llms': specifier: 2.0.1 - version: 2.0.1(@rspress/core@2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1)) + version: 2.0.1(@rspress/core@2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1)) framer-motion: specifier: ^10.0.0 version: 10.18.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -3708,16 +3708,16 @@ importers: devDependencies: '@modern-js/app-tools': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.9.1)(typescript@5.9.3))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.9.1)(typescript@5.9.3))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)) '@modern-js/module-tools': specifier: 2.70.5 version: 2.70.5(@types/node@25.9.1)(typescript@5.9.3) '@modern-js/runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)))(react@18.3.1) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)))(react@18.3.1) '@modern-js/server-runtime': specifier: 3.0.1 - version: 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/tsconfig': specifier: 3.0.1 version: 3.0.1 @@ -3726,16 +3726,16 @@ importers: version: link:../manifest '@rsbuild/core': specifier: 2.0.0-beta.2 - version: 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + version: 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) '@rsbuild/plugin-react': specifier: 1.4.5 - version: 1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + version: 1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) '@rslib/core': specifier: 0.18.5 version: 0.18.5(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3) '@rspack/core': specifier: 2.0.6 - version: 2.0.6(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17) + version: 2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17) '@types/react': specifier: ^18.3.11 version: 18.3.28 @@ -3895,6 +3895,9 @@ importers: '@module-federation/sdk': specifier: workspace:* version: link:../sdk + '@openruntime/core': + specifier: https://pkg.pr.new/2heal1/openruntime/@openruntime/core@a13b382 + version: https://pkg.pr.new/2heal1/openruntime/@openruntime/core@a13b382 devDependencies: '@module-federation/runtime': specifier: workspace:* @@ -3924,7 +3927,7 @@ importers: devDependencies: '@rsbuild/core': specifier: 2.0.0-beta.2 - version: 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + version: 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@rslib/core': specifier: ^0.12.4 version: 0.12.4(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3) @@ -3982,7 +3985,7 @@ importers: version: link:../sdk '@rspress/shared': specifier: 2.0.3 - version: 2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + version: 2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) cheerio: specifier: 1.0.0-rc.12 version: 1.0.0-rc.12 @@ -3998,7 +4001,7 @@ importers: version: 0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3) '@rspress/core': specifier: 2.0.3 - version: 2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@types/react@18.3.28)(core-js@3.49.0)(webpack-hot-middleware@2.26.1) + version: 2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@types/react@18.3.28)(core-js@3.49.0)(webpack-hot-middleware@2.26.1) '@types/html-to-text': specifier: ^9.0.4 version: 9.0.4 @@ -4084,7 +4087,7 @@ importers: version: 22.5.4(@babel/traverse@7.29.7)(@swc-node/register@1.10.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.25)(typescript@5.9.3))(@swc/core@1.15.10(@swc/helpers@0.5.19))(@swc/helpers@0.5.19)(esbuild@0.25.0)(nx@22.5.4(@swc-node/register@1.10.10(@swc/core@1.7.26(@swc/helpers@0.5.13))(@swc/types@0.1.25)(typescript@5.9.3))(@swc/core@1.15.10(@swc/helpers@0.5.19)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(vue-tsc@2.2.12(typescript@5.9.3))(webpack-cli@5.1.4) '@rsbuild/core': specifier: 2.0.0-beta.2 - version: 2.0.0-beta.2(@module-federation/runtime-tools@2.2.2(node-fetch@2.7.0(encoding@0.1.13)))(core-js@3.49.0) + version: 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) '@storybook/core': specifier: ^8.4.6 version: 8.6.14(prettier@3.8.1)(storybook@8.6.17(prettier@3.8.1)) @@ -8257,8 +8260,8 @@ packages: '@module-federation/error-codes@2.2.2': resolution: {integrity: sha512-e+dxUrqrdRbhfvg8TyG0UQBQAjYZ8pI2b3HWfESLXqWi3xCiivZSnqsPN+zychrQ1hDZAdCheZ9zT91zhMrkxw==} - '@module-federation/error-codes@2.5.0': - resolution: {integrity: sha512-sq05/8Gp3csy1nr2/f76K3vLy0/xRqVtP71ibGy8BiLg7h1UxWN7G4EwAKSrPZ4FnsERGeFlIszg5Z+MqlwhFg==} + '@module-federation/error-codes@2.5.1': + resolution: {integrity: sha512-3KIR8XbEW0Y+Fn8IAnxzDWMvXQWiS40Z1TE/Fft9aTeXP9dDAM7AiVhjTh5yF2csAwHSt/1LJVZbiCmS13mE8A==} '@module-federation/inject-external-runtime-core-plugin@0.21.6': resolution: {integrity: sha512-DJQne7NQ988AVi3QB8byn12FkNb+C2lBeU1NRf8/WbL0gmHsr6kW8hiEJCm8LYaURwtsQqtsEV7i+8+51qjSmQ==} @@ -8338,8 +8341,8 @@ packages: '@module-federation/runtime-core@2.2.2': resolution: {integrity: sha512-JL+W6Yol1+CPJ662H1SEQLwxfBU2kCKhUcYrMr/X6j0qFWB8x5PBSpQbwAIcJiKfflHgBaJZypmCKmq8qRv3Aw==} - '@module-federation/runtime-core@2.5.0': - resolution: {integrity: sha512-STmhQ3c6/hunba2FMP6GrHazXU/8GuN7Gk4dOkWNRpnqYIoD8Wx4MNl76j3HdCzBESC7uSMXTniksVaM1+xxyA==} + '@module-federation/runtime-core@2.5.1': + resolution: {integrity: sha512-UMuMsWHXeMrm8Isl8YD6/s1jmTVau3SQhp9RO4Ln+eD2lrjM4hQSwOX2xPtfT1C1I4/E6hgyZQV1K1Q/3Zpr0Q==} '@module-federation/runtime-tools@0.1.6': resolution: {integrity: sha512-7ILVnzMIa0Dlc0Blck5tVZG1tnk1MmLnuZpLOMpbdW+zl+N6wdMjjHMjEZFCUAJh2E5XJ3BREwfX8Ets0nIkLg==} @@ -8371,8 +8374,8 @@ packages: '@module-federation/runtime-tools@2.2.2': resolution: {integrity: sha512-UnlKvy/zrbLTLItrI1tORiS6wdp5pYOCrR2LtDEbjJ2r+avzANSf2vJ7lAIT4SX5Pi9WwY5RhE4Y/BOwhAj4DA==} - '@module-federation/runtime-tools@2.5.0': - resolution: {integrity: sha512-fR3Na6V78ov3/O17Mev+1vydfmqlYWP4ZNxD/bBkmqKhCO7jMdthNTT02yDljlCyhYl6+X90UJlFhwFle6rIsw==} + '@module-federation/runtime-tools@2.5.1': + resolution: {integrity: sha512-pYUNvaQQBEwP66TLrjmmfkDIrTmPnX0kK86HgClkWLQKkX/oCgnqDxEgNbjeCc75dwUvZP6fW2d0pZ5++XILTw==} '@module-federation/runtime@0.1.6': resolution: {integrity: sha512-nj6a+yJ+QxmcE89qmrTl4lphBIoAds0PFPVGnqLRWflwAP88jrCcrrTqRhARegkFDL+wE9AE04+h6jzlbIfMKg==} @@ -8404,8 +8407,8 @@ packages: '@module-federation/runtime@2.2.2': resolution: {integrity: sha512-zV6kbAUU1tQZr4KrZXQhzQP3WTb7oMRlIFw4UBhbh2JhAKGYS5CNc/n7+RV+mDxIs//qVmVzdSpJtTOMBLeFCw==} - '@module-federation/runtime@2.5.0': - resolution: {integrity: sha512-dOc7pFEf8aruHBk5hoJLnvwkCa5ELT78q3o9dqcdaa/TT74X5z0FT0BsaGaRBPcse/iP6czK3fWd7RLv5ZKP5g==} + '@module-federation/runtime@2.5.1': + resolution: {integrity: sha512-Tf33FIpnQMn8FjIUAQMtSTYQgGibfh5vEvJihFO3q/hG9LiWwLMErZvOz/+wcPsE81gzHjYPxQgMKGSP3BuG8g==} '@module-federation/sdk@0.1.6': resolution: {integrity: sha512-qifXpyYLM7abUeEOIfv0oTkguZgRZuwh89YOAYIZJlkP6QbRG7DJMQvtM8X2yHXm9PTk0IYNnOJH0vNQCo6auQ==} @@ -8442,8 +8445,8 @@ packages: node-fetch: optional: true - '@module-federation/sdk@2.5.0': - resolution: {integrity: sha512-ScU22XDyV77l50njjzewMpMlNN1CYo0tHS1D6iy+vNKWrHGq8DWVB0vwG8dmvx/WZ4uq+sXgUsQet17MoKsfZw==} + '@module-federation/sdk@2.5.1': + resolution: {integrity: sha512-FDhCx81ZCxX1oT/fyt/bW+gpPt287GR156E/Thv1yhb9XyNHGNkqe8zqJOipOMfb07E22OMzSzOulCBvAOgn3g==} peerDependencies: node-fetch: ^2.7.0 || ^3.3.2 peerDependenciesMeta: @@ -8486,8 +8489,8 @@ packages: '@module-federation/webpack-bundler-runtime@2.2.2': resolution: {integrity: sha512-g5UEn5APnNYvajwWQ0oc3Um+HO1z/jBcBkLSKAoSOCI6XxQk5eAV1PNDuDehAgJEtJw5yFD25kZPW3X7m39y7g==} - '@module-federation/webpack-bundler-runtime@2.5.0': - resolution: {integrity: sha512-UxVad+tNZYkBnZzqJQsZa0pB5gO5cJoCjMumOo3bhzXBJVqHsFupfeHa8Nk7WrRVbJE6zRT9ZHK0s0NDWBMyJw==} + '@module-federation/webpack-bundler-runtime@2.5.1': + resolution: {integrity: sha512-0pUsP9aaWIUcfWUXqax/iSwozngORwf4RK0R1qTOYYC13qx+p4p1Ck28Rz6Tzj/6zpzJgcMQXR7nW4sL+ztaww==} '@mswjs/cookies@0.2.2': resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} @@ -8868,6 +8871,10 @@ packages: '@open-draft/until@1.0.3': resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + '@openruntime/core@https://pkg.pr.new/2heal1/openruntime/@openruntime/core@a13b382': + resolution: {integrity: sha512-vXItIt69IUrBMd5ZY2ZW8VfqR1kMo0cg+hgmCys8UFr3BPWopEKXa7w93lECpxPvFVGPs4eaRTFJPJOOl+9BAg==, tarball: https://pkg.pr.new/2heal1/openruntime/@openruntime/core@a13b382} + version: 0.0.0 + '@oxc-project/types@0.112.0': resolution: {integrity: sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ==} @@ -27171,7 +27178,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 '@babel/helper-compilation-targets@7.28.6': dependencies: @@ -27265,14 +27272,14 @@ snapshots: '@babel/helper-module-imports@7.28.6': dependencies: '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.28.6(supports-color@5.5.0)': dependencies: '@babel/traverse': 7.29.0(supports-color@5.5.0) - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color @@ -27366,7 +27373,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color @@ -31211,22 +31218,22 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@modern-js/app-tools@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.9.1)(typescript@5.9.3))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4))': + '@modern-js/app-tools@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.9.1)(typescript@5.9.3))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4))': dependencies: '@babel/parser': 7.29.2 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@modern-js/builder': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)) + '@modern-js/builder': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)) '@modern-js/i18n-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/plugin-data-loader': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/prod-server': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.9.1)(typescript@5.9.3))(tsconfig-paths@4.2.0) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/prod-server': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.9.1)(typescript@5.9.3))(tsconfig-paths@4.2.0) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/server-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) '@swc/helpers': 0.5.17 es-module-lexer: 1.7.0 esbuild: 0.25.5 @@ -31262,22 +31269,22 @@ snapshots: - webpack - webpack-hot-middleware - '@modern-js/app-tools@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': + '@modern-js/app-tools@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': dependencies: '@babel/parser': 7.29.2 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@modern-js/builder': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + '@modern-js/builder': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/i18n-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/plugin-data-loader': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/prod-server': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/prod-server': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/server-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@swc/helpers': 0.5.17 es-module-lexer: 1.7.0 esbuild: 0.25.5 @@ -31313,22 +31320,73 @@ snapshots: - webpack - webpack-hot-middleware - '@modern-js/app-tools@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': + '@modern-js/app-tools@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': dependencies: '@babel/parser': 7.29.2 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@modern-js/builder': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + '@modern-js/builder': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) '@modern-js/i18n-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/plugin-data-loader': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/prod-server': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/prod-server': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/server-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + '@swc/helpers': 0.5.17 + es-module-lexer: 1.7.0 + esbuild: 0.25.5 + esbuild-register: 3.6.0(esbuild@0.25.5) + flatted: 3.4.2 + mlly: 1.8.1 + ndepe: 0.1.13(encoding@0.1.13)(rollup@4.59.0) + pkg-types: 1.3.1 + std-env: 3.10.0 + optionalDependencies: + ts-node: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4) + tsconfig-paths: 4.2.0 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - '@parcel/css' + - '@rspack/core' + - '@swc/css' + - bufferutil + - clean-css + - core-js + - csso + - debug + - devcert + - encoding + - lightningcss + - react + - react-dom + - rollup + - supports-color + - tslib + - typescript + - utf-8-validate + - webpack + - webpack-hot-middleware + + '@modern-js/app-tools@3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(core-js@3.49.0)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': + dependencies: + '@babel/parser': 7.29.2 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@modern-js/builder': 3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + '@modern-js/i18n-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin-data-loader': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/prod-server': 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server': 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0) + '@modern-js/server-core': 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/types': 3.0.1 + '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) '@swc/helpers': 0.5.17 es-module-lexer: 1.7.0 esbuild: 0.25.5 @@ -31433,7 +31491,7 @@ snapshots: - '@rsbuild/core' - supports-color - '@modern-js/babel-preset@2.68.0(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@modern-js/babel-preset@2.68.0(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) @@ -31445,7 +31503,7 @@ snapshots: '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.28.2 '@babel/types': 7.29.7 - '@rsbuild/plugin-babel': 1.0.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) + '@rsbuild/plugin-babel': 1.0.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) '@swc/helpers': 0.5.17 '@types/babel__core': 7.20.5 babel-plugin-dynamic-import-node: 2.3.3 @@ -31486,7 +31544,7 @@ snapshots: '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.28.2 - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 '@rsbuild/plugin-babel': 1.1.0(@rsbuild/core@1.7.3) '@swc/helpers': 0.5.17 '@types/babel__core': 7.20.5 @@ -31496,22 +31554,73 @@ snapshots: - '@rsbuild/core' - supports-color - '@modern-js/builder@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4))': + '@modern-js/builder@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.9.3)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4))': + dependencies: + '@modern-js/flight-server-transform-plugin': 3.0.1 + '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/plugin-assets-retry': 1.5.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)) + '@rsbuild/plugin-check-syntax': 1.6.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)) + '@rsbuild/plugin-css-minimizer': 1.1.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)) + '@rsbuild/plugin-less': 1.6.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)) + '@rsbuild/plugin-react': 1.4.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + '@rsbuild/plugin-rem': 1.0.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)) + '@rsbuild/plugin-sass': 1.5.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)) + '@rsbuild/plugin-source-build': 1.0.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)) + '@rsbuild/plugin-svgr': 1.3.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(typescript@5.9.3)(webpack-hot-middleware@2.26.1) + '@rsbuild/plugin-type-check': 1.3.3(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3) + '@rsbuild/plugin-typed-css-modules': 1.2.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)) + '@swc/core': 1.15.10(@swc/helpers@0.5.17) + '@swc/helpers': 0.5.17 + autoprefixer: 10.4.24(postcss@8.5.10) + browserslist: 4.28.1 + core-js: 3.49.0 + cssnano: 6.1.2(postcss@8.5.10) + html-minifier-terser: 7.2.0 + lodash: 4.17.23 + postcss: 8.5.10 + postcss-custom-properties: 13.3.12(postcss@8.5.10) + postcss-flexbugs-fixes: 5.0.2(postcss@8.5.10) + postcss-font-variant: 5.0.0(postcss@8.5.10) + postcss-initial: 4.0.1(postcss@8.5.10) + postcss-media-minmax: 5.0.0(postcss@8.5.10) + postcss-nesting: 12.1.5(postcss@8.5.10) + postcss-page-break: 3.0.4(postcss@8.5.10) + rspack-manifest-plugin: 5.2.1(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17)) + ts-deepmerge: 7.0.3 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - '@parcel/css' + - '@rspack/core' + - '@swc/css' + - clean-css + - csso + - esbuild + - lightningcss + - react + - react-dom + - supports-color + - tslib + - typescript + - webpack + - webpack-hot-middleware + + '@modern-js/builder@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': dependencies: '@modern-js/flight-server-transform-plugin': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) - '@rsbuild/plugin-assets-retry': 1.5.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)) - '@rsbuild/plugin-check-syntax': 1.6.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)) - '@rsbuild/plugin-css-minimizer': 1.1.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)) - '@rsbuild/plugin-less': 1.6.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)) - '@rsbuild/plugin-react': 1.4.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) - '@rsbuild/plugin-rem': 1.0.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)) - '@rsbuild/plugin-sass': 1.5.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)) - '@rsbuild/plugin-source-build': 1.0.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)) - '@rsbuild/plugin-svgr': 1.3.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(typescript@5.9.3)(webpack-hot-middleware@2.26.1) - '@rsbuild/plugin-type-check': 1.3.3(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3) - '@rsbuild/plugin-typed-css-modules': 1.2.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/plugin-assets-retry': 1.5.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) + '@rsbuild/plugin-check-syntax': 1.6.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) + '@rsbuild/plugin-css-minimizer': 1.1.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + '@rsbuild/plugin-less': 1.6.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) + '@rsbuild/plugin-react': 1.4.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + '@rsbuild/plugin-rem': 1.0.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) + '@rsbuild/plugin-sass': 1.5.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) + '@rsbuild/plugin-source-build': 1.0.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) + '@rsbuild/plugin-svgr': 1.3.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(typescript@5.0.4)(webpack-hot-middleware@2.26.1) + '@rsbuild/plugin-type-check': 1.3.3(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.0.4) + '@rsbuild/plugin-typed-css-modules': 1.2.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) '@swc/core': 1.15.10(@swc/helpers@0.5.17) '@swc/helpers': 0.5.17 autoprefixer: 10.4.24(postcss@8.5.10) @@ -31528,7 +31637,7 @@ snapshots: postcss-media-minmax: 5.0.0(postcss@8.5.10) postcss-nesting: 12.1.5(postcss@8.5.10) postcss-page-break: 3.0.4(postcss@8.5.10) - rspack-manifest-plugin: 5.2.1(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17)) + rspack-manifest-plugin: 5.2.1(@rspack/core@1.3.9(@swc/helpers@0.5.13)) ts-deepmerge: 7.0.3 transitivePeerDependencies: - '@module-federation/runtime-tools' @@ -31547,22 +31656,22 @@ snapshots: - webpack - webpack-hot-middleware - '@modern-js/builder@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': + '@modern-js/builder@3.0.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(esbuild@0.25.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.8.1)(typescript@5.0.4)(webpack-hot-middleware@2.26.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': dependencies: '@modern-js/flight-server-transform-plugin': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) - '@rsbuild/plugin-assets-retry': 1.5.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) - '@rsbuild/plugin-check-syntax': 1.6.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) - '@rsbuild/plugin-css-minimizer': 1.1.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) - '@rsbuild/plugin-less': 1.6.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) - '@rsbuild/plugin-react': 1.4.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) - '@rsbuild/plugin-rem': 1.0.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) - '@rsbuild/plugin-sass': 1.5.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) - '@rsbuild/plugin-source-build': 1.0.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) - '@rsbuild/plugin-svgr': 1.3.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(typescript@5.0.4)(webpack-hot-middleware@2.26.1) - '@rsbuild/plugin-type-check': 1.3.3(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.0.4) - '@rsbuild/plugin-typed-css-modules': 1.2.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) + '@rsbuild/plugin-assets-retry': 1.5.1(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0)) + '@rsbuild/plugin-check-syntax': 1.6.1(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0)) + '@rsbuild/plugin-css-minimizer': 1.1.1(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + '@rsbuild/plugin-less': 1.6.0(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0)) + '@rsbuild/plugin-react': 1.4.4(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + '@rsbuild/plugin-rem': 1.0.5(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0)) + '@rsbuild/plugin-sass': 1.5.0(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0)) + '@rsbuild/plugin-source-build': 1.0.4(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0)) + '@rsbuild/plugin-svgr': 1.3.0(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(typescript@5.0.4)(webpack-hot-middleware@2.26.1) + '@rsbuild/plugin-type-check': 1.3.3(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.0.4) + '@rsbuild/plugin-typed-css-modules': 1.2.1(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0)) '@swc/core': 1.15.10(@swc/helpers@0.5.17) '@swc/helpers': 0.5.17 autoprefixer: 10.4.24(postcss@8.5.10) @@ -31579,7 +31688,7 @@ snapshots: postcss-media-minmax: 5.0.0(postcss@8.5.10) postcss-nesting: 12.1.5(postcss@8.5.10) postcss-page-break: 3.0.4(postcss@8.5.10) - rspack-manifest-plugin: 5.2.1(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19)) + rspack-manifest-plugin: 5.2.1(@rspack/core@1.3.9(@swc/helpers@0.5.13)) ts-deepmerge: 7.0.3 transitivePeerDependencies: - '@module-federation/runtime-tools' @@ -31800,10 +31909,10 @@ snapshots: '@modern-js/utils': 2.70.8 '@swc/helpers': 0.5.17 - '@modern-js/plugin-server@2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/plugin-server@2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@modern-js/runtime-utils': 2.68.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server-utils': 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) + '@modern-js/server-utils': 2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) '@modern-js/utils': 2.68.0 '@swc/helpers': 0.5.17 transitivePeerDependencies: @@ -31866,12 +31975,26 @@ snapshots: '@modern-js/utils': 2.70.8 '@swc/helpers': 0.5.17 - '@modern-js/plugin@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/plugin@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/types': 3.0.1 + '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) + '@swc/helpers': 0.5.17 + jiti: 2.6.1 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js + - react + - react-dom + + '@modern-js/plugin@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@swc/helpers': 0.5.17 jiti: 2.6.1 transitivePeerDependencies: @@ -31880,12 +32003,12 @@ snapshots: - react - react-dom - '@modern-js/plugin@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/plugin@3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) '@swc/helpers': 0.5.17 jiti: 2.6.1 transitivePeerDependencies: @@ -31914,10 +32037,10 @@ snapshots: - react - react-dom - '@modern-js/prod-server@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/prod-server@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@swc/helpers': 0.5.17 transitivePeerDependencies: @@ -31926,10 +32049,22 @@ snapshots: - react - react-dom - '@modern-js/prod-server@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/prod-server@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@swc/helpers': 0.5.17 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js + - react + - react-dom + + '@modern-js/prod-server@3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@swc/helpers': 0.5.17 transitivePeerDependencies: @@ -32109,11 +32244,11 @@ snapshots: - react-server-dom-webpack - supports-color - '@modern-js/runtime@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)))(react@18.3.1)': + '@modern-js/runtime@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)))(react@18.3.1)': dependencies: '@loadable/component': 5.16.7(react@18.3.1) '@loadable/server': 5.16.7(@loadable/component@5.16.7(react@18.3.1))(react@18.3.1) - '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/plugin-data-loader': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/render': 3.0.1(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)))(react@18.3.1) '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -32138,11 +32273,40 @@ snapshots: - core-js - react-server-dom-webpack - '@modern-js/runtime@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1)': + '@modern-js/runtime@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1)': dependencies: '@loadable/component': 5.16.7(react@18.3.1) '@loadable/server': 5.16.7(@loadable/component@5.16.7(react@18.3.1))(react@18.3.1) - '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin-data-loader': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/render': 3.0.1(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) + '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/types': 3.0.1 + '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@swc/helpers': 0.5.17 + '@swc/plugin-loadable-components': 11.7.0 + '@types/loadable__component': 5.13.10 + '@types/react-helmet': 6.1.11 + cookie: 0.7.2 + entities: 7.0.1 + es-module-lexer: 1.7.0 + esbuild: 0.25.5 + invariant: 2.2.4 + isbot: 3.8.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-helmet: 6.1.0(react@18.3.1) + react-is: 18.3.1 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js + - react-server-dom-webpack + + '@modern-js/runtime@3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1)': + dependencies: + '@loadable/component': 5.16.7(react@18.3.1) + '@loadable/server': 5.16.7(@loadable/component@5.16.7(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/plugin-data-loader': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/render': 3.0.1(react-dom@18.3.1(react@18.3.1))(react-server-dom-webpack@19.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))))(react@18.3.1) '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -32203,9 +32367,28 @@ snapshots: - react - react-dom - '@modern-js/server-core@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/server-core@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@swc/helpers': 0.5.17 + '@web-std/fetch': 4.2.1 + '@web-std/file': 3.0.3 + '@web-std/stream': 1.0.3 + cloneable-readable: 3.0.0 + flatted: 3.4.2 + hono: 4.12.7 + ts-deepmerge: 7.0.3 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - core-js + - react + - react-dom + + '@modern-js/server-core@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@swc/helpers': 0.5.17 @@ -32222,9 +32405,9 @@ snapshots: - react - react-dom - '@modern-js/server-core@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/server-core@3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@modern-js/plugin': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/plugin': 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@swc/helpers': 0.5.17 @@ -32250,10 +32433,10 @@ snapshots: - react - react-dom - '@modern-js/server-runtime@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/server-runtime@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@swc/helpers': 0.5.17 transitivePeerDependencies: @@ -32262,10 +32445,10 @@ snapshots: - react - react-dom - '@modern-js/server-runtime@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@modern-js/server-runtime@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@swc/helpers': 0.5.17 transitivePeerDependencies: @@ -32274,7 +32457,7 @@ snapshots: - react - react-dom - '@modern-js/server-utils@2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@modern-js/server-utils@2.68.0(@babel/traverse@7.29.7)(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) @@ -32283,7 +32466,7 @@ snapshots: '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@modern-js/babel-compiler': 2.68.0 '@modern-js/babel-plugin-module-resolver': 2.68.0 - '@modern-js/babel-preset': 2.68.0(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) + '@modern-js/babel-preset': 2.68.0(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) '@modern-js/utils': 2.68.0 '@swc/helpers': 0.5.17 babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.29.0)(@babel/traverse@7.29.7) @@ -32394,10 +32577,10 @@ snapshots: - supports-color - utf-8-validate - '@modern-js/server@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.9.1)(typescript@5.9.3))(tsconfig-paths@4.2.0)': + '@modern-js/server@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.17))(@types/node@25.9.1)(typescript@5.9.3))(tsconfig-paths@4.2.0)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/server-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -32421,10 +32604,10 @@ snapshots: - supports-color - utf-8-validate - '@modern-js/server@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2)': + '@modern-js/server@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.8.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@3.14.2)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/server-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -32448,10 +32631,37 @@ snapshots: - supports-color - utf-8-validate - '@modern-js/server@3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)': + '@modern-js/server@3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)': dependencies: '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/types': 3.0.1 + '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@swc/helpers': 0.5.17 + axios: 1.16.1 + connect-history-api-fallback: 2.0.0 + http-compression: 1.0.6 + minimatch: 3.1.5 + path-to-regexp: 6.3.0 + ws: 8.21.0 + optionalDependencies: + ts-node: 10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4) + tsconfig-paths: 4.2.0 + transitivePeerDependencies: + - '@module-federation/runtime-tools' + - bufferutil + - core-js + - debug + - react + - react-dom + - supports-color + - utf-8-validate + + '@modern-js/server@3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.2(@swc/core@1.15.10(@swc/helpers@0.5.19))(@types/node@20.19.5)(typescript@5.0.4))(tsconfig-paths@4.2.0)': + dependencies: + '@modern-js/runtime-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@modern-js/server-core': 3.0.1(core-js@3.49.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/server-utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@modern-js/types': 3.0.1 '@modern-js/utils': 3.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -33095,7 +33305,7 @@ snapshots: '@module-federation/error-codes@2.2.2': {} - '@module-federation/error-codes@2.5.0': + '@module-federation/error-codes@2.5.1': optional: true '@module-federation/inject-external-runtime-core-plugin@0.21.6(@module-federation/runtime-tools@0.21.6)': @@ -33256,18 +33466,18 @@ snapshots: transitivePeerDependencies: - node-fetch - '@module-federation/runtime-core@2.5.0(node-fetch@3.3.0)': + '@module-federation/runtime-core@2.5.1(node-fetch@3.3.0)': dependencies: - '@module-federation/error-codes': 2.5.0 - '@module-federation/sdk': 2.5.0(node-fetch@3.3.0) + '@module-federation/error-codes': 2.5.1 + '@module-federation/sdk': 2.5.1(node-fetch@3.3.0) transitivePeerDependencies: - node-fetch optional: true - '@module-federation/runtime-core@2.5.0(node-fetch@3.3.2)': + '@module-federation/runtime-core@2.5.1(node-fetch@3.3.2)': dependencies: - '@module-federation/error-codes': 2.5.0 - '@module-federation/sdk': 2.5.0(node-fetch@3.3.2) + '@module-federation/error-codes': 2.5.1 + '@module-federation/sdk': 2.5.1(node-fetch@3.3.2) transitivePeerDependencies: - node-fetch optional: true @@ -33324,18 +33534,18 @@ snapshots: transitivePeerDependencies: - node-fetch - '@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0)': + '@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0)': dependencies: - '@module-federation/runtime': 2.5.0(node-fetch@3.3.0) - '@module-federation/webpack-bundler-runtime': 2.5.0(node-fetch@3.3.0) + '@module-federation/runtime': 2.5.1(node-fetch@3.3.0) + '@module-federation/webpack-bundler-runtime': 2.5.1(node-fetch@3.3.0) transitivePeerDependencies: - node-fetch optional: true - '@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2)': + '@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2)': dependencies: - '@module-federation/runtime': 2.5.0(node-fetch@3.3.2) - '@module-federation/webpack-bundler-runtime': 2.5.0(node-fetch@3.3.2) + '@module-federation/runtime': 2.5.1(node-fetch@3.3.2) + '@module-federation/webpack-bundler-runtime': 2.5.1(node-fetch@3.3.2) transitivePeerDependencies: - node-fetch optional: true @@ -33398,20 +33608,20 @@ snapshots: transitivePeerDependencies: - node-fetch - '@module-federation/runtime@2.5.0(node-fetch@3.3.0)': + '@module-federation/runtime@2.5.1(node-fetch@3.3.0)': dependencies: - '@module-federation/error-codes': 2.5.0 - '@module-federation/runtime-core': 2.5.0(node-fetch@3.3.0) - '@module-federation/sdk': 2.5.0(node-fetch@3.3.0) + '@module-federation/error-codes': 2.5.1 + '@module-federation/runtime-core': 2.5.1(node-fetch@3.3.0) + '@module-federation/sdk': 2.5.1(node-fetch@3.3.0) transitivePeerDependencies: - node-fetch optional: true - '@module-federation/runtime@2.5.0(node-fetch@3.3.2)': + '@module-federation/runtime@2.5.1(node-fetch@3.3.2)': dependencies: - '@module-federation/error-codes': 2.5.0 - '@module-federation/runtime-core': 2.5.0(node-fetch@3.3.2) - '@module-federation/sdk': 2.5.0(node-fetch@3.3.2) + '@module-federation/error-codes': 2.5.1 + '@module-federation/runtime-core': 2.5.1(node-fetch@3.3.2) + '@module-federation/sdk': 2.5.1(node-fetch@3.3.2) transitivePeerDependencies: - node-fetch optional: true @@ -33438,12 +33648,12 @@ snapshots: optionalDependencies: node-fetch: 2.7.0(encoding@0.1.13) - '@module-federation/sdk@2.5.0(node-fetch@3.3.0)': + '@module-federation/sdk@2.5.1(node-fetch@3.3.0)': optionalDependencies: node-fetch: 3.3.0 optional: true - '@module-federation/sdk@2.5.0(node-fetch@3.3.2)': + '@module-federation/sdk@2.5.1(node-fetch@3.3.2)': optionalDependencies: node-fetch: 3.3.2 optional: true @@ -33512,20 +33722,20 @@ snapshots: transitivePeerDependencies: - node-fetch - '@module-federation/webpack-bundler-runtime@2.5.0(node-fetch@3.3.0)': + '@module-federation/webpack-bundler-runtime@2.5.1(node-fetch@3.3.0)': dependencies: - '@module-federation/error-codes': 2.5.0 - '@module-federation/runtime': 2.5.0(node-fetch@3.3.0) - '@module-federation/sdk': 2.5.0(node-fetch@3.3.0) + '@module-federation/error-codes': 2.5.1 + '@module-federation/runtime': 2.5.1(node-fetch@3.3.0) + '@module-federation/sdk': 2.5.1(node-fetch@3.3.0) transitivePeerDependencies: - node-fetch optional: true - '@module-federation/webpack-bundler-runtime@2.5.0(node-fetch@3.3.2)': + '@module-federation/webpack-bundler-runtime@2.5.1(node-fetch@3.3.2)': dependencies: - '@module-federation/error-codes': 2.5.0 - '@module-federation/runtime': 2.5.0(node-fetch@3.3.2) - '@module-federation/sdk': 2.5.0(node-fetch@3.3.2) + '@module-federation/error-codes': 2.5.1 + '@module-federation/runtime': 2.5.1(node-fetch@3.3.2) + '@module-federation/sdk': 2.5.1(node-fetch@3.3.2) transitivePeerDependencies: - node-fetch optional: true @@ -34086,6 +34296,8 @@ snapshots: '@open-draft/until@1.0.3': {} + '@openruntime/core@https://pkg.pr.new/2heal1/openruntime/@openruntime/core@a13b382': {} + '@oxc-project/types@0.112.0': {} '@oxc-project/types@0.115.0': {} @@ -37025,9 +37237,9 @@ snapshots: core-js: 3.47.0 jiti: 2.6.1 - '@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.2.2(node-fetch@2.7.0(encoding@0.1.13)))(core-js@3.49.0)': + '@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0)': dependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.2.2(node-fetch@2.7.0(encoding@0.1.13)))(@swc/helpers@0.5.19) + '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@0.21.6)(@swc/helpers@0.5.19) '@swc/helpers': 0.5.19 jiti: 2.6.1 optionalDependencies: @@ -37035,9 +37247,9 @@ snapshots: transitivePeerDependencies: - '@module-federation/runtime-tools' - '@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0)': + '@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0)': dependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.19) + '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.19) '@swc/helpers': 0.5.19 jiti: 2.6.1 optionalDependencies: @@ -37045,9 +37257,9 @@ snapshots: transitivePeerDependencies: - '@module-federation/runtime-tools' - '@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)': + '@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)': dependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19) + '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19) '@swc/helpers': 0.5.19 jiti: 2.6.1 optionalDependencies: @@ -37055,9 +37267,9 @@ snapshots: transitivePeerDependencies: - '@module-federation/runtime-tools' - '@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)': + '@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)': dependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19) + '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19) '@swc/helpers': 0.5.19 jiti: 2.6.1 optionalDependencies: @@ -37065,13 +37277,17 @@ snapshots: transitivePeerDependencies: - '@module-federation/runtime-tools' - '@rsbuild/plugin-assets-retry@1.5.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))': + '@rsbuild/plugin-assets-retry@1.5.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))': optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) - '@rsbuild/plugin-assets-retry@1.5.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-assets-retry@1.5.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + + '@rsbuild/plugin-assets-retry@1.5.1(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))': + optionalDependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) '@rsbuild/plugin-assets-retry@1.5.2(@rsbuild/core@1.7.3)': optionalDependencies: @@ -37091,13 +37307,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@rsbuild/plugin-babel@1.0.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-babel@1.0.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.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': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@types/babel__core': 7.20.5 deepmerge: 4.3.1 reduce-configs: 1.1.1 @@ -37129,7 +37345,7 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 - '@rsbuild/plugin-check-syntax@1.6.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))': + '@rsbuild/plugin-check-syntax@1.6.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))': dependencies: acorn: 8.16.0 browserslist-to-es-version: 1.4.1 @@ -37137,9 +37353,9 @@ snapshots: picocolors: 1.1.1 source-map: 0.7.6 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) - '@rsbuild/plugin-check-syntax@1.6.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-check-syntax@1.6.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': dependencies: acorn: 8.16.0 browserslist-to-es-version: 1.4.1 @@ -37147,7 +37363,17 @@ snapshots: picocolors: 1.1.1 source-map: 0.7.6 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + + '@rsbuild/plugin-check-syntax@1.6.1(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))': + dependencies: + acorn: 8.16.0 + browserslist-to-es-version: 1.4.1 + htmlparser2: 10.0.0 + picocolors: 1.1.1 + source-map: 0.7.6 + optionalDependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) '@rsbuild/plugin-css-minimizer@1.1.1(@rsbuild/core@1.7.3)(esbuild@0.18.20)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.18.20)(webpack-cli@5.1.4))': dependencies: @@ -37194,12 +37420,12 @@ snapshots: - lightningcss - webpack - '@rsbuild/plugin-css-minimizer@1.1.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4))': + '@rsbuild/plugin-css-minimizer@1.1.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4))': dependencies: css-minimizer-webpack-plugin: 7.0.2(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.17))(esbuild@0.25.5)(webpack-cli@5.1.4)) reduce-configs: 1.1.1 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) transitivePeerDependencies: - '@parcel/css' - '@swc/css' @@ -37209,12 +37435,27 @@ snapshots: - lightningcss - webpack - '@rsbuild/plugin-css-minimizer@1.1.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': + '@rsbuild/plugin-css-minimizer@1.1.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': dependencies: css-minimizer-webpack-plugin: 7.0.2(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) reduce-configs: 1.1.1 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + transitivePeerDependencies: + - '@parcel/css' + - '@swc/css' + - clean-css + - csso + - esbuild + - lightningcss + - webpack + + '@rsbuild/plugin-css-minimizer@1.1.1(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1)))': + dependencies: + css-minimizer-webpack-plugin: 7.0.2(esbuild@0.25.5)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.27.3)(webpack-cli@5.1.4(webpack-dev-server@5.2.3)(webpack@5.104.1))) + reduce-configs: 1.1.1 + optionalDependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) transitivePeerDependencies: - '@parcel/css' - '@swc/css' @@ -37230,15 +37471,21 @@ snapshots: deepmerge: 4.3.1 reduce-configs: 1.1.1 - '@rsbuild/plugin-less@1.6.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))': + '@rsbuild/plugin-less@1.6.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))': + dependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) + deepmerge: 4.3.1 + reduce-configs: 1.1.1 + + '@rsbuild/plugin-less@1.6.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) deepmerge: 4.3.1 reduce-configs: 1.1.1 - '@rsbuild/plugin-less@1.6.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-less@1.6.0(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) deepmerge: 4.3.1 reduce-configs: 1.1.1 @@ -37307,17 +37554,25 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 - '@rsbuild/plugin-react@1.4.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': + '@rsbuild/plugin-react@1.4.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) react-refresh: 0.18.0 transitivePeerDependencies: - webpack-hot-middleware - '@rsbuild/plugin-react@1.4.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': + '@rsbuild/plugin-react@1.4.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) + react-refresh: 0.18.0 + transitivePeerDependencies: + - webpack-hot-middleware + + '@rsbuild/plugin-react@1.4.4(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': + dependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) react-refresh: 0.18.0 transitivePeerDependencies: @@ -37339,25 +37594,33 @@ snapshots: transitivePeerDependencies: - webpack-hot-middleware - '@rsbuild/plugin-react@1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': + '@rsbuild/plugin-react@1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) react-refresh: 0.18.0 transitivePeerDependencies: - webpack-hot-middleware - '@rsbuild/plugin-react@1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': + '@rsbuild/plugin-react@1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) react-refresh: 0.18.0 transitivePeerDependencies: - webpack-hot-middleware - '@rsbuild/plugin-react@1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': + '@rsbuild/plugin-react@1.4.5(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': dependencies: - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) + '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) + react-refresh: 0.18.0 + transitivePeerDependencies: + - webpack-hot-middleware + + '@rsbuild/plugin-react@1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1)': + dependencies: + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@rspack/plugin-react-refresh': 1.6.1(react-refresh@0.18.0)(webpack-hot-middleware@2.26.1) react-refresh: 0.18.0 transitivePeerDependencies: @@ -37370,19 +37633,26 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 - '@rsbuild/plugin-rem@1.0.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))': + '@rsbuild/plugin-rem@1.0.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))': dependencies: deepmerge: 4.3.1 terser: 5.46.1 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) - '@rsbuild/plugin-rem@1.0.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-rem@1.0.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': dependencies: deepmerge: 4.3.1 terser: 5.46.1 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + + '@rsbuild/plugin-rem@1.0.5(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))': + dependencies: + deepmerge: 4.3.1 + terser: 5.46.1 + optionalDependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) '@rsbuild/plugin-sass@1.5.0(@rsbuild/core@1.7.3)': dependencies: @@ -37393,25 +37663,34 @@ snapshots: reduce-configs: 1.1.1 sass-embedded: 1.98.0 - '@rsbuild/plugin-sass@1.5.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))': + '@rsbuild/plugin-sass@1.5.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))': + dependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) + deepmerge: 4.3.1 + loader-utils: 2.0.4 + postcss: 8.5.10 + reduce-configs: 1.1.1 + sass-embedded: 1.98.0 + + '@rsbuild/plugin-sass@1.5.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) deepmerge: 4.3.1 loader-utils: 2.0.4 postcss: 8.5.10 reduce-configs: 1.1.1 sass-embedded: 1.98.0 - '@rsbuild/plugin-sass@1.5.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-sass@1.5.0(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) deepmerge: 4.3.1 loader-utils: 2.0.4 postcss: 8.5.10 reduce-configs: 1.1.1 sass-embedded: 1.98.0 - '@rsbuild/plugin-sass@1.5.1(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-sass@1.5.1(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': dependencies: deepmerge: 4.3.1 loader-utils: 2.0.4 @@ -37419,7 +37698,7 @@ snapshots: reduce-configs: 1.1.1 sass-embedded: 1.98.0 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@rsbuild/plugin-source-build@1.0.4(@rsbuild/core@1.7.3)': dependencies: @@ -37429,21 +37708,29 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 - '@rsbuild/plugin-source-build@1.0.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))': + '@rsbuild/plugin-source-build@1.0.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))': dependencies: fast-glob: 3.3.3 json5: 2.2.3 yaml: 2.8.2 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) - '@rsbuild/plugin-source-build@1.0.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-source-build@1.0.4(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': dependencies: fast-glob: 3.3.3 json5: 2.2.3 yaml: 2.8.2 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + + '@rsbuild/plugin-source-build@1.0.4(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))': + dependencies: + fast-glob: 3.3.3 + json5: 2.2.3 + yaml: 2.8.2 + optionalDependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) '@rsbuild/plugin-styled-components@1.6.0(@rsbuild/core@1.7.3)': dependencies: @@ -37466,10 +37753,10 @@ snapshots: - typescript - webpack-hot-middleware - '@rsbuild/plugin-svgr@1.3.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(typescript@5.9.3)(webpack-hot-middleware@2.26.1)': + '@rsbuild/plugin-svgr@1.3.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(typescript@5.9.3)(webpack-hot-middleware@2.26.1)': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) - '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3))(typescript@5.9.3) @@ -37480,10 +37767,24 @@ snapshots: - typescript - webpack-hot-middleware - '@rsbuild/plugin-svgr@1.3.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(typescript@5.0.4)(webpack-hot-middleware@2.26.1)': + '@rsbuild/plugin-svgr@1.3.0(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(typescript@5.0.4)(webpack-hot-middleware@2.26.1)': dependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) - '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + '@svgr/core': 8.1.0(typescript@5.0.4) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3))(typescript@5.0.4) + deepmerge: 4.3.1 + loader-utils: 3.3.1 + transitivePeerDependencies: + - supports-color + - typescript + - webpack-hot-middleware + + '@rsbuild/plugin-svgr@1.3.0(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(typescript@5.0.4)(webpack-hot-middleware@2.26.1)': + dependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) + '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(webpack-hot-middleware@2.26.1) '@svgr/core': 8.1.0(typescript@5.0.4) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3))(typescript@5.0.4) @@ -37513,27 +37814,40 @@ snapshots: - tslib - typescript - '@rsbuild/plugin-type-check@1.3.3(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3)': + '@rsbuild/plugin-type-check@1.3.3(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17))(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@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3) + ts-checker-rspack-plugin: 1.3.0(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3) optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) transitivePeerDependencies: - '@rspack/core' - tslib - typescript - '@rsbuild/plugin-type-check@1.3.3(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.0.4)': + '@rsbuild/plugin-type-check@1.3.3(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.0.4)': dependencies: deepmerge: 4.3.1 json5: 2.2.3 reduce-configs: 1.1.1 - ts-checker-rspack-plugin: 1.3.0(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.0.4) + ts-checker-rspack-plugin: 1.3.0(@rspack/core@1.3.9(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.0.4) optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + transitivePeerDependencies: + - '@rspack/core' + - tslib + - typescript + + '@rsbuild/plugin-type-check@1.3.3(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))(@rspack/core@1.3.9(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.0.4)': + dependencies: + deepmerge: 4.3.1 + json5: 2.2.3 + reduce-configs: 1.1.1 + ts-checker-rspack-plugin: 1.3.0(@rspack/core@1.3.9(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.0.4) + optionalDependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) transitivePeerDependencies: - '@rspack/core' - tslib @@ -37552,14 +37866,14 @@ snapshots: - tslib - typescript - '@rsbuild/plugin-type-check@1.3.4(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.9.3)': + '@rsbuild/plugin-type-check@1.3.4(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(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@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.9.3) + ts-checker-rspack-plugin: 1.3.0(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.9.3) optionalDependencies: - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) transitivePeerDependencies: - '@rspack/core' - tslib @@ -37569,17 +37883,21 @@ snapshots: optionalDependencies: '@rsbuild/core': 1.7.3 - '@rsbuild/plugin-typed-css-modules@1.2.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0))': + '@rsbuild/plugin-typed-css-modules@1.2.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0))': + optionalDependencies: + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(core-js@3.49.0) + + '@rsbuild/plugin-typed-css-modules@1.2.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))': optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) - '@rsbuild/plugin-typed-css-modules@1.2.1(@rsbuild/core@2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))': + '@rsbuild/plugin-typed-css-modules@1.2.1(@rsbuild/core@2.0.0-beta.2(core-js@3.49.0))': optionalDependencies: - '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.2(@module-federation/runtime-tools@0.21.6)(core-js@3.49.0) - '@rsbuild/plugin-vue@1.2.7(@rsbuild/core@1.7.3)(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3))': + '@rsbuild/plugin-vue@1.2.7(@rsbuild/core@1.7.3)(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3))': dependencies: - rspack-vue-loader: 17.5.0(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3)) + rspack-vue-loader: 17.5.0(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3)) optionalDependencies: '@rsbuild/core': 1.7.3 transitivePeerDependencies: @@ -38334,45 +38652,52 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.19 - '@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.2.2(node-fetch@2.7.0(encoding@0.1.13)))(@swc/helpers@0.5.19)': + '@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@0.21.6)(@swc/helpers@0.5.19)': dependencies: '@rspack/binding': 2.0.0-beta.0 '@rspack/lite-tapable': 1.1.0 optionalDependencies: - '@module-federation/runtime-tools': 2.2.2(node-fetch@2.7.0(encoding@0.1.13)) + '@module-federation/runtime-tools': 0.21.6 '@swc/helpers': 0.5.19 - '@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17)': + '@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.19)': dependencies: '@rspack/binding': 2.0.0-beta.0 '@rspack/lite-tapable': 1.1.0 optionalDependencies: - '@module-federation/runtime-tools': 2.5.0(node-fetch@3.3.0) - '@swc/helpers': 0.5.17 - optional: true + '@module-federation/runtime-tools': 2.5.1(node-fetch@3.3.0) + '@swc/helpers': 0.5.19 - '@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.19)': + '@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19)': dependencies: '@rspack/binding': 2.0.0-beta.0 '@rspack/lite-tapable': 1.1.0 optionalDependencies: - '@module-federation/runtime-tools': 2.5.0(node-fetch@3.3.0) + '@module-federation/runtime-tools': 2.5.1(node-fetch@3.3.2) '@swc/helpers': 0.5.19 - '@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19)': + '@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17)': dependencies: - '@rspack/binding': 2.0.0-beta.0 - '@rspack/lite-tapable': 1.1.0 + '@rspack/binding': 2.0.6 optionalDependencies: - '@module-federation/runtime-tools': 2.5.0(node-fetch@3.3.2) - '@swc/helpers': 0.5.19 + '@module-federation/runtime-tools': 2.5.1(node-fetch@3.3.0) + '@swc/helpers': 0.5.17 - '@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17)': + '@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13)': dependencies: '@rspack/binding': 2.0.6 optionalDependencies: - '@module-federation/runtime-tools': 2.5.0(node-fetch@3.3.0) - '@swc/helpers': 0.5.17 + '@module-federation/runtime-tools': 2.5.1(node-fetch@3.3.2) + '@swc/helpers': 0.5.13 + optional: true + + '@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19)': + dependencies: + '@rspack/binding': 2.0.6 + optionalDependencies: + '@module-federation/runtime-tools': 2.5.1(node-fetch@3.3.2) + '@swc/helpers': 0.5.19 + optional: true '@rspack/dev-server@1.1.1(@rspack/core@1.3.9(@swc/helpers@0.5.13))(@types/express@4.17.21)(webpack-cli@5.1.4)(webpack@5.104.1)': dependencies: @@ -38410,13 +38735,13 @@ snapshots: optionalDependencies: webpack-hot-middleware: 2.26.1 - '@rspress/core@2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@types/react@18.3.28)(core-js@3.49.0)(webpack-hot-middleware@2.26.1)': + '@rspress/core@2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@types/react@18.3.28)(core-js@3.49.0)(webpack-hot-middleware@2.26.1)': dependencies: '@mdx-js/mdx': 3.1.1 '@mdx-js/react': 3.1.1(@types/react@18.3.28)(react@19.2.4) - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) - '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) - '@rspress/shared': 2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + '@rspress/shared': 2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@shikijs/rehype': 3.23.0 '@types/unist': 3.0.3 '@unhead/react': 2.1.12(react@19.2.4) @@ -38461,13 +38786,13 @@ snapshots: - supports-color - webpack-hot-middleware - '@rspress/core@2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1)': + '@rspress/core@2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1)': dependencies: '@mdx-js/mdx': 3.1.1 '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4) - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) - '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) - '@rspress/shared': 2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/plugin-react': 1.4.5(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(webpack-hot-middleware@2.26.1) + '@rspress/shared': 2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@shikijs/rehype': 3.23.0 '@types/unist': 3.0.3 '@unhead/react': 2.1.12(react@19.2.4) @@ -38512,9 +38837,9 @@ snapshots: - supports-color - webpack-hot-middleware - '@rspress/plugin-llms@2.0.1(@rspress/core@2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1))': + '@rspress/plugin-llms@2.0.1(@rspress/core@2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1))': dependencies: - '@rspress/core': 2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1) + '@rspress/core': 2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@types/react@19.2.14)(core-js@3.49.0)(webpack-hot-middleware@2.26.1) remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-stringify: 11.0.0 @@ -38523,9 +38848,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@rspress/shared@2.0.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)': + '@rspress/shared@2.0.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)': dependencies: - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@shikijs/rehype': 3.23.0 gray-matter: 4.0.3 lodash-es: 4.17.23 @@ -38834,7 +39159,7 @@ snapshots: dependencies: '@babel/core': 7.29.0 '@babel/preset-env': 7.29.2(@babel/core@7.29.7) - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 7.6.24 '@storybook/core-common': 7.6.24(encoding@0.1.13) @@ -39901,16 +40226,16 @@ snapshots: '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 '@types/body-parser@1.19.6': dependencies: @@ -41634,18 +41959,18 @@ snapshots: '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.0)': dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@babel/core': 7.29.0 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.7 '@vue/compiler-sfc': 3.5.30 transitivePeerDependencies: - supports-color '@vue/compiler-core@3.5.30': dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.7 '@vue/shared': 3.5.30 entities: 7.0.1 estree-walker: 2.0.2 @@ -46102,7 +46427,7 @@ snapshots: eslint-plugin-react-hooks@7.0.1(eslint@9.26.0(jiti@2.6.1)): dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.7 eslint: 9.26.0(jiti@2.6.1) hermes-parser: 0.25.1 zod: 4.1.12 @@ -47019,7 +47344,7 @@ snapshots: fork-ts-checker-webpack-plugin@7.2.13(typescript@5.9.3)(vue-template-compiler@2.7.16)(webpack@5.104.1(@swc/core@1.15.10(@swc/helpers@0.5.19))(esbuild@0.25.0)(webpack-cli@5.1.4)): dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 chalk: 4.1.2 chokidar: 3.6.0 cosmiconfig: 7.1.0 @@ -48663,7 +48988,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.29.0 - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -49021,7 +49346,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.29.0 + '@babel/code-frame': 7.29.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -49809,8 +50134,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 source-map-js: 1.2.1 make-dir@2.1.0: @@ -50288,7 +50613,7 @@ snapshots: metro-source-map@0.83.5: dependencies: '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/types': 7.29.7 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.83.5 @@ -50335,8 +50660,8 @@ snapshots: metro-transform-plugins@0.83.5: dependencies: '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/template': 7.28.6 + '@babel/generator': 7.29.7 + '@babel/template': 7.29.7 '@babel/traverse': 7.29.0 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 @@ -50366,9 +50691,9 @@ snapshots: metro-transform-worker@0.83.5: dependencies: '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 + '@babel/generator': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 flow-enums-runtime: 0.0.6 metro: 0.83.5 metro-babel-transformer: 0.83.5 @@ -54272,7 +54597,7 @@ snapshots: react-docgen@6.0.0-alpha.3: dependencies: '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 + '@babel/generator': 7.29.7 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 @@ -55554,12 +55879,12 @@ snapshots: '@microsoft/api-extractor': 7.57.7(@types/node@25.9.1) typescript: 5.9.3 - rsbuild-plugin-html-minifier-terser@1.1.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)): + rsbuild-plugin-html-minifier-terser@1.1.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)): dependencies: '@types/html-minifier-terser': 7.0.2 html-minifier-terser: 7.2.0 optionalDependencies: - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) rsbuild-plugin-publint@0.2.1(@rsbuild/core@1.7.3): dependencies: @@ -55584,24 +55909,24 @@ snapshots: optionalDependencies: '@rspack/core': 1.7.9(@swc/helpers@0.5.19) - rspack-manifest-plugin@5.2.1(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17)): + rspack-manifest-plugin@5.2.1(@rspack/core@1.3.9(@swc/helpers@0.5.13)): dependencies: '@rspack/lite-tapable': 1.1.0 optionalDependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17) + '@rspack/core': 1.3.9(@swc/helpers@0.5.13) - rspack-manifest-plugin@5.2.1(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19)): + rspack-manifest-plugin@5.2.1(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17)): dependencies: '@rspack/lite-tapable': 1.1.0 optionalDependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19) + '@rspack/core': 2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17) - rspack-vue-loader@17.5.0(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3)): + rspack-vue-loader@17.5.0(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19))(vue@3.5.30(typescript@5.9.3)): dependencies: '@rspack/lite-tapable': 1.1.0 chalk: 4.1.2 optionalDependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19) + '@rspack/core': 2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.19) vue: 3.5.30(typescript@5.9.3) run-applescript@7.1.0: {} @@ -56370,18 +56695,18 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook-addon-rslib@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rslib/core@0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3))(storybook-builder-rsbuild@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3))(typescript@5.9.3): + storybook-addon-rslib@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rslib/core@0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3))(storybook-builder-rsbuild@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3))(typescript@5.9.3): dependencies: - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@rslib/core': 0.9.2(@microsoft/api-extractor@7.57.7(@types/node@25.9.1))(typescript@5.9.3) - storybook-builder-rsbuild: 1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3) + storybook-builder-rsbuild: 1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 - storybook-builder-rsbuild@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3): + storybook-builder-rsbuild@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3): dependencies: - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) - '@rsbuild/plugin-type-check': 1.3.4(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.9.3) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/plugin-type-check': 1.3.4(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.9.3) '@storybook/addon-docs': 8.6.18(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1)) '@storybook/core-webpack': 8.6.18(storybook@8.6.17(prettier@3.8.1)) browser-assert: 1.2.1 @@ -56393,7 +56718,7 @@ snapshots: magic-string: 0.30.21 path-browserify: 1.0.1 process: 0.11.10 - rsbuild-plugin-html-minifier-terser: 1.1.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0)) + rsbuild-plugin-html-minifier-terser: 1.1.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0)) sirv: 2.0.4 storybook: 8.6.17(prettier@3.8.1) ts-dedent: 2.2.0 @@ -56407,10 +56732,10 @@ snapshots: - '@types/react' - tslib - storybook-react-rsbuild@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.25.0)(webpack-cli@5.1.4)): + storybook-react-rsbuild@1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.25.0)(webpack-cli@5.1.4)): dependencies: '@rollup/pluginutils': 5.3.0(rollup@4.59.0) - '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0) + '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0) '@storybook/react': 8.6.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.17(prettier@3.8.1))(typescript@5.9.3) '@storybook/react-docgen-typescript-plugin': 1.0.1(typescript@5.9.3)(webpack@5.104.1(@swc/core@1.7.26(@swc/helpers@0.5.13))(esbuild@0.25.0)(webpack-cli@5.1.4)) '@types/node': 18.19.130 @@ -56422,7 +56747,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) resolve: 1.22.11 storybook: 8.6.17(prettier@3.8.1) - storybook-builder-rsbuild: 1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3) + storybook-builder-rsbuild: 1.0.3(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(core-js@3.49.0))(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(@types/react@18.3.28)(storybook@8.6.17(prettier@3.8.1))(tslib@2.8.1)(typescript@5.9.3) tsconfig-paths: 4.2.0 optionalDependencies: typescript: 5.9.3 @@ -57444,19 +57769,19 @@ snapshots: dependencies: typescript: 5.9.3 - ts-checker-rspack-plugin@1.3.0(@rspack/core@1.7.9(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3): + ts-checker-rspack-plugin@1.3.0(@rspack/core@1.3.9(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.0.4): dependencies: '@rspack/lite-tapable': 1.1.0 chokidar: 3.6.0 memfs: 4.56.11(tslib@2.8.1) picocolors: 1.1.1 - typescript: 5.9.3 + typescript: 5.0.4 optionalDependencies: - '@rspack/core': 1.7.9(@swc/helpers@0.5.17) + '@rspack/core': 1.3.9(@swc/helpers@0.5.13) transitivePeerDependencies: - tslib - ts-checker-rspack-plugin@1.3.0(@rspack/core@1.7.9(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.9.3): + ts-checker-rspack-plugin@1.3.0(@rspack/core@1.7.9(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@rspack/lite-tapable': 1.1.0 chokidar: 3.6.0 @@ -57464,11 +57789,11 @@ snapshots: picocolors: 1.1.1 typescript: 5.9.3 optionalDependencies: - '@rspack/core': 1.7.9(@swc/helpers@0.5.19) + '@rspack/core': 1.7.9(@swc/helpers@0.5.17) transitivePeerDependencies: - tslib - ts-checker-rspack-plugin@1.3.0(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3): + ts-checker-rspack-plugin@1.3.0(@rspack/core@1.7.9(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@rspack/lite-tapable': 1.1.0 chokidar: 3.6.0 @@ -57476,23 +57801,23 @@ snapshots: picocolors: 1.1.1 typescript: 5.9.3 optionalDependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.0))(@swc/helpers@0.5.17) + '@rspack/core': 1.7.9(@swc/helpers@0.5.19) transitivePeerDependencies: - tslib - ts-checker-rspack-plugin@1.3.0(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.0.4): + ts-checker-rspack-plugin@1.3.0(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@rspack/lite-tapable': 1.1.0 chokidar: 3.6.0 memfs: 4.56.11(tslib@2.8.1) picocolors: 1.1.1 - typescript: 5.0.4 + typescript: 5.9.3 optionalDependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19) + '@rspack/core': 2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.0))(@swc/helpers@0.5.17) transitivePeerDependencies: - tslib - ts-checker-rspack-plugin@1.3.0(@rspack/core@2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19))(tslib@2.8.1)(typescript@5.9.3): + ts-checker-rspack-plugin@1.3.0(@rspack/core@2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@rspack/lite-tapable': 1.1.0 chokidar: 3.6.0 @@ -57500,7 +57825,7 @@ snapshots: picocolors: 1.1.1 typescript: 5.9.3 optionalDependencies: - '@rspack/core': 2.0.0-beta.0(@module-federation/runtime-tools@2.5.0(node-fetch@3.3.2))(@swc/helpers@0.5.19) + '@rspack/core': 2.0.6(@module-federation/runtime-tools@2.5.1(node-fetch@3.3.2))(@swc/helpers@0.5.13) transitivePeerDependencies: - tslib