From cab475a81bdfb19e5b9ece228eb7566947950dec Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 8 Feb 2026 04:30:49 +0000 Subject: [PATCH 001/102] Add rsbuild Start plugin implementation Co-authored-by: Zack Jackson --- packages/react-start/package.json | 12 + packages/react-start/src/plugin/rsbuild.ts | 35 ++ packages/react-start/vite.config.ts | 1 + packages/router-plugin/src/rspack.ts | 13 + packages/solid-start/package.json | 12 + packages/solid-start/src/plugin/rsbuild.ts | 35 ++ packages/solid-start/vite.config.ts | 1 + packages/start-plugin-core/package.json | 13 + packages/start-plugin-core/src/index.ts | 1 + .../start-plugin-core/src/rsbuild/index.ts | 3 + .../rsbuild/injected-head-scripts-plugin.ts | 18 + .../start-plugin-core/src/rsbuild/plugin.ts | 563 ++++++++++++++++++ .../src/rsbuild/post-server-build.ts | 68 +++ .../src/rsbuild/prerender.ts | 277 +++++++++ .../src/rsbuild/route-tree-loader.ts | 8 + .../src/rsbuild/route-tree-state.ts | 34 ++ .../src/rsbuild/start-compiler-loader.ts | 214 +++++++ .../src/rsbuild/start-compiler-plugin.ts | 90 +++ .../src/rsbuild/start-manifest-plugin.ts | 226 +++++++ .../src/rsbuild/start-router-plugin.ts | 179 ++++++ packages/start-plugin-core/vite.config.ts | 7 +- packages/vue-start/package.json | 12 + packages/vue-start/src/plugin/rsbuild.ts | 35 ++ packages/vue-start/vite.config.ts | 1 + pnpm-lock.yaml | 292 +++++++-- 25 files changed, 2083 insertions(+), 67 deletions(-) create mode 100644 packages/react-start/src/plugin/rsbuild.ts create mode 100644 packages/solid-start/src/plugin/rsbuild.ts create mode 100644 packages/start-plugin-core/src/rsbuild/index.ts create mode 100644 packages/start-plugin-core/src/rsbuild/injected-head-scripts-plugin.ts create mode 100644 packages/start-plugin-core/src/rsbuild/plugin.ts create mode 100644 packages/start-plugin-core/src/rsbuild/post-server-build.ts create mode 100644 packages/start-plugin-core/src/rsbuild/prerender.ts create mode 100644 packages/start-plugin-core/src/rsbuild/route-tree-loader.ts create mode 100644 packages/start-plugin-core/src/rsbuild/route-tree-state.ts create mode 100644 packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts create mode 100644 packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts create mode 100644 packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts create mode 100644 packages/start-plugin-core/src/rsbuild/start-router-plugin.ts create mode 100644 packages/vue-start/src/plugin/rsbuild.ts diff --git a/packages/react-start/package.json b/packages/react-start/package.json index 24bc307f3fa..0b658714f81 100644 --- a/packages/react-start/package.json +++ b/packages/react-start/package.json @@ -74,6 +74,12 @@ "default": "./dist/esm/plugin/vite.js" } }, + "./plugin/rsbuild": { + "import": { + "types": "./dist/esm/plugin/rsbuild.d.ts", + "default": "./dist/esm/plugin/rsbuild.js" + } + }, "./server-entry": { "import": { "types": "./dist/default-entry/esm/server.d.ts", @@ -101,8 +107,14 @@ "pathe": "^2.0.3" }, "peerDependencies": { + "@rsbuild/core": ">=1.0.0", "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0", "vite": ">=7.0.0" + }, + "peerDependenciesMeta": { + "@rsbuild/core": { + "optional": true + } } } diff --git a/packages/react-start/src/plugin/rsbuild.ts b/packages/react-start/src/plugin/rsbuild.ts new file mode 100644 index 00000000000..f02e273765a --- /dev/null +++ b/packages/react-start/src/plugin/rsbuild.ts @@ -0,0 +1,35 @@ +import { fileURLToPath } from 'node:url' +import path from 'pathe' +import { TanStackStartRsbuildPluginCore } from '@tanstack/start-plugin-core/rsbuild' +import type { TanStackStartInputConfig } from '@tanstack/start-plugin-core' + +type RsbuildPlugin = { + name: string + setup: (api: any) => void +} + +const currentDir = path.dirname(fileURLToPath(import.meta.url)) +const defaultEntryDir = path.resolve( + currentDir, + '..', + '..', + 'plugin', + 'default-entry', +) +const defaultEntryPaths = { + client: path.resolve(defaultEntryDir, 'client.tsx'), + server: path.resolve(defaultEntryDir, 'server.ts'), + start: path.resolve(defaultEntryDir, 'start.ts'), +} + +export function tanstackStart( + options?: TanStackStartInputConfig, +): Array { + return TanStackStartRsbuildPluginCore( + { + framework: 'react', + defaultEntryPaths, + }, + options, + ) +} diff --git a/packages/react-start/vite.config.ts b/packages/react-start/vite.config.ts index d7ab699a07b..129669ced14 100644 --- a/packages/react-start/vite.config.ts +++ b/packages/react-start/vite.config.ts @@ -31,6 +31,7 @@ export default mergeConfig( './src/server-rpc.ts', './src/ssr-rpc.ts', './src/plugin/vite.ts', + './src/plugin/rsbuild.ts', ], externalDeps: [ '@tanstack/react-start-client', diff --git a/packages/router-plugin/src/rspack.ts b/packages/router-plugin/src/rspack.ts index 9eef9f2221c..ab31067d68c 100644 --- a/packages/router-plugin/src/rspack.ts +++ b/packages/router-plugin/src/rspack.ts @@ -4,6 +4,7 @@ import { configSchema } from './core/config' import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin' import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin' import { unpluginRouterComposedFactory } from './core/router-composed-plugin' +import { unpluginRouteAutoImportFactory } from './core/route-autoimport-plugin' import type { CodeSplittingOptions, Config } from './core/config' /** @@ -40,6 +41,13 @@ const TanStackRouterCodeSplitterRspack = /* #__PURE__ */ createRspackPlugin( unpluginRouterCodeSplitterFactory, ) +const tanstackRouterGenerator = TanStackRouterGeneratorRspack +const tanstackRouterCodeSplitter = TanStackRouterCodeSplitterRspack + +const TanStackRouterAutoImportRspack = /* #__PURE__ */ createRspackPlugin( + unpluginRouteAutoImportFactory, +) + /** * @example * ```ts @@ -57,12 +65,17 @@ const TanStackRouterRspack = /* #__PURE__ */ createRspackPlugin( unpluginRouterComposedFactory, ) const tanstackRouter = TanStackRouterRspack +const tanstackRouterAutoImport = TanStackRouterAutoImportRspack export default TanStackRouterRspack export { configSchema, TanStackRouterRspack, TanStackRouterGeneratorRspack, TanStackRouterCodeSplitterRspack, + TanStackRouterAutoImportRspack, + tanstackRouterGenerator, + tanstackRouterCodeSplitter, + tanstackRouterAutoImport, tanstackRouter, } export type { Config, CodeSplittingOptions } diff --git a/packages/solid-start/package.json b/packages/solid-start/package.json index 375fa862804..8712b09c40f 100644 --- a/packages/solid-start/package.json +++ b/packages/solid-start/package.json @@ -74,6 +74,12 @@ "default": "./dist/esm/plugin/vite.js" } }, + "./plugin/rsbuild": { + "import": { + "types": "./dist/esm/plugin/rsbuild.d.ts", + "default": "./dist/esm/plugin/rsbuild.js" + } + }, "./server-entry": { "import": { "types": "./dist/default-entry/esm/server.d.ts", @@ -104,7 +110,13 @@ "vite": "^7.3.1" }, "peerDependencies": { + "@rsbuild/core": ">=1.0.0", "solid-js": ">=1.0.0", "vite": ">=7.0.0" + }, + "peerDependenciesMeta": { + "@rsbuild/core": { + "optional": true + } } } diff --git a/packages/solid-start/src/plugin/rsbuild.ts b/packages/solid-start/src/plugin/rsbuild.ts new file mode 100644 index 00000000000..34bbc6542d5 --- /dev/null +++ b/packages/solid-start/src/plugin/rsbuild.ts @@ -0,0 +1,35 @@ +import { fileURLToPath } from 'node:url' +import path from 'pathe' +import { TanStackStartRsbuildPluginCore } from '@tanstack/start-plugin-core/rsbuild' +import type { TanStackStartInputConfig } from '@tanstack/start-plugin-core' + +type RsbuildPlugin = { + name: string + setup: (api: any) => void +} + +const currentDir = path.dirname(fileURLToPath(import.meta.url)) +const defaultEntryDir = path.resolve( + currentDir, + '..', + '..', + 'plugin', + 'default-entry', +) +const defaultEntryPaths = { + client: path.resolve(defaultEntryDir, 'client.tsx'), + server: path.resolve(defaultEntryDir, 'server.ts'), + start: path.resolve(defaultEntryDir, 'start.ts'), +} + +export function tanstackStart( + options?: TanStackStartInputConfig, +): Array { + return TanStackStartRsbuildPluginCore( + { + framework: 'solid', + defaultEntryPaths, + }, + options, + ) +} diff --git a/packages/solid-start/vite.config.ts b/packages/solid-start/vite.config.ts index 4004316d919..519844c729d 100644 --- a/packages/solid-start/vite.config.ts +++ b/packages/solid-start/vite.config.ts @@ -31,6 +31,7 @@ export default mergeConfig( './src/server-rpc.ts', './src/server.tsx', './src/plugin/vite.ts', + './src/plugin/rsbuild.ts', ], externalDeps: [ '@tanstack/solid-start-client', diff --git a/packages/start-plugin-core/package.json b/packages/start-plugin-core/package.json index fa51a8b842e..89761e9567e 100644 --- a/packages/start-plugin-core/package.json +++ b/packages/start-plugin-core/package.json @@ -50,6 +50,12 @@ "default": "./dist/esm/index.js" } }, + "./rsbuild": { + "import": { + "types": "./dist/esm/rsbuild/index.d.ts", + "default": "./dist/esm/rsbuild/index.js" + } + }, "./package.json": "./package.json" }, "sideEffects": false, @@ -77,6 +83,7 @@ "srvx": "^0.11.2", "tinyglobby": "^0.2.15", "ufo": "^1.5.4", + "unplugin": "^2.3.11", "vitefu": "^1.1.1", "xmlbuilder2": "^4.0.3", "zod": "^3.24.2" @@ -87,6 +94,12 @@ "vite": "^7.3.1" }, "peerDependencies": { + "@rsbuild/core": ">=1.0.0", "vite": ">=7.0.0" + }, + "peerDependenciesMeta": { + "@rsbuild/core": { + "optional": true + } } } diff --git a/packages/start-plugin-core/src/index.ts b/packages/start-plugin-core/src/index.ts index df946192ae1..777c7efeb11 100644 --- a/packages/start-plugin-core/src/index.ts +++ b/packages/start-plugin-core/src/index.ts @@ -1,6 +1,7 @@ export type { TanStackStartInputConfig } from './schema' export { TanStackStartVitePluginCore } from './plugin' +export { TanStackStartRsbuildPluginCore } from './rsbuild/plugin' export { resolveViteId } from './utils' export { VITE_ENVIRONMENT_NAMES } from './constants' diff --git a/packages/start-plugin-core/src/rsbuild/index.ts b/packages/start-plugin-core/src/rsbuild/index.ts new file mode 100644 index 00000000000..0bf18566976 --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/index.ts @@ -0,0 +1,3 @@ +export { TanStackStartRsbuildPluginCore } from './plugin' +export { VITE_ENVIRONMENT_NAMES } from '../constants' +export { resolveViteId } from '../utils' diff --git a/packages/start-plugin-core/src/rsbuild/injected-head-scripts-plugin.ts b/packages/start-plugin-core/src/rsbuild/injected-head-scripts-plugin.ts new file mode 100644 index 00000000000..576882600ce --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/injected-head-scripts-plugin.ts @@ -0,0 +1,18 @@ +import { createRspackPlugin } from 'unplugin' +import { VIRTUAL_MODULES } from '@tanstack/start-server-core' + +export function createInjectedHeadScriptsPlugin() { + return createRspackPlugin(() => ({ + name: 'tanstack-start:injected-head-scripts', + resolveId(id) { + if (id === VIRTUAL_MODULES.injectedHeadScripts) { + return id + } + return null + }, + load(id) { + if (id !== VIRTUAL_MODULES.injectedHeadScripts) return null + return `export const injectedHeadScripts = undefined` + }, + })) +} diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts new file mode 100644 index 00000000000..ef151dae44f --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -0,0 +1,563 @@ +import fs from 'node:fs' +import { fileURLToPath, pathToFileURL } from 'node:url' + +import { joinPaths } from '@tanstack/router-core' +import { NodeRequest, sendNodeResponse } from 'srvx/node' +import path from 'pathe' +import { joinURL } from 'ufo' +import { ENTRY_POINTS, VITE_ENVIRONMENT_NAMES } from '../constants' +import { resolveEntry } from '../resolve-entries' +import { parseStartConfig } from '../schema' +import { createInjectedHeadScriptsPlugin } from './injected-head-scripts-plugin' +import { createServerFnResolverPlugin } from './start-compiler-plugin' +import { + createStartManifestRspackPlugin, + createStartManifestVirtualModulePlugin, +} from './start-manifest-plugin' +import { postServerBuildRsbuild } from './post-server-build' +import { tanStackStartRouterRsbuild } from './start-router-plugin' +import type { ViteEnvironmentNames } from '../constants' +import type { TanStackStartInputConfig } from '../schema' +import type { + GetConfigFn, + ResolvedStartConfig, + TanStackStartVitePluginCoreOptions, +} from '../types' + +type RsbuildPlugin = { + name: string + setup: (api: any) => void +} + +function isFullUrl(str: string): boolean { + try { + new URL(str) + return true + } catch { + return false + } +} + +function defineReplaceEnv( + key: TKey, + value: TValue, +): { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue } { + return { + [`process.env.${key}`]: JSON.stringify(value), + [`import.meta.env.${key}`]: JSON.stringify(value), + } as { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue } +} + +function mergeRspackConfig(base: any, next: any) { + return { + ...base, + ...next, + plugins: [...(base?.plugins ?? []), ...(next?.plugins ?? [])], + module: { + ...base?.module, + ...next?.module, + rules: [...(base?.module?.rules ?? []), ...(next?.module?.rules ?? [])], + }, + resolve: { + ...base?.resolve, + ...next?.resolve, + alias: { + ...(base?.resolve?.alias ?? {}), + ...(next?.resolve?.alias ?? {}), + }, + }, + } +} + +function mergeEnvConfig(base: any, next: any) { + return { + ...base, + ...next, + source: { + ...base?.source, + ...next?.source, + alias: { + ...(base?.source?.alias ?? {}), + ...(next?.source?.alias ?? {}), + }, + define: { + ...(base?.source?.define ?? {}), + ...(next?.source?.define ?? {}), + }, + }, + output: { + ...base?.output, + ...next?.output, + distPath: { + ...(base?.output?.distPath ?? {}), + ...(next?.output?.distPath ?? {}), + }, + }, + tools: { + ...base?.tools, + ...next?.tools, + rspack: mergeRspackConfig(base?.tools?.rspack, next?.tools?.rspack), + }, + } +} + +function getOutputDirectory( + root: string, + config: any, + environmentName: ViteEnvironmentNames, + directoryName: string, +) { + const envDistPath = + config.environments?.[environmentName]?.output?.distPath?.root + if (envDistPath) { + return path.resolve(root, envDistPath) + } + const rootDistPath = config.output?.distPath?.root ?? 'dist' + return path.resolve(root, rootDistPath, directoryName) +} + +function toPluginArray(plugin: any) { + if (!plugin) return [] + return Array.isArray(plugin) ? plugin : [plugin] +} + +function resolveLoaderPath(relativePath: string) { + const currentDir = path.dirname(fileURLToPath(import.meta.url)) + const basePath = path.resolve(currentDir, relativePath) + const jsPath = `${basePath}.js` + const tsPath = `${basePath}.ts` + if (fs.existsSync(jsPath)) return jsPath + if (fs.existsSync(tsPath)) return tsPath + return jsPath +} + +export function TanStackStartRsbuildPluginCore( + corePluginOpts: TanStackStartVitePluginCoreOptions, + startPluginOpts: TanStackStartInputConfig, +): Array { + const serverFnProviderEnv = + corePluginOpts.serverFn?.providerEnv || VITE_ENVIRONMENT_NAMES.server + const ssrIsProvider = serverFnProviderEnv === VITE_ENVIRONMENT_NAMES.server + + const resolvedStartConfig: ResolvedStartConfig = { + root: '', + startFilePath: undefined, + routerFilePath: '', + srcDirectory: '', + viteAppBase: '', + serverFnProviderEnv, + } + + let startConfig: ReturnType | null = null + const getConfig: GetConfigFn = () => { + if (!resolvedStartConfig.root) { + throw new Error(`Cannot get config before root is resolved`) + } + if (!startConfig) { + startConfig = parseStartConfig( + startPluginOpts, + corePluginOpts, + resolvedStartConfig.root, + ) + } + return { startConfig, resolvedStartConfig, corePluginOpts } + } + + let resolvedServerEntryPath: string | undefined + let resolvedServerOutputDir: string | undefined + let resolvedClientOutputDir: string | undefined + + return [ + { + name: 'tanstack-start-core:rsbuild-config', + setup(api) { + api.modifyRsbuildConfig((config: any) => { + const root = config.root || process.cwd() + resolvedStartConfig.root = root + + const { startConfig } = getConfig() + const assetPrefix = config.output?.assetPrefix ?? '/' + resolvedStartConfig.viteAppBase = assetPrefix + if (!isFullUrl(resolvedStartConfig.viteAppBase)) { + resolvedStartConfig.viteAppBase = joinPaths([ + '/', + resolvedStartConfig.viteAppBase, + '/', + ]) + } + + if (startConfig.router.basepath === undefined) { + if (!isFullUrl(resolvedStartConfig.viteAppBase)) { + startConfig.router.basepath = + resolvedStartConfig.viteAppBase.replace(/^\/|\/$/g, '') + } else { + startConfig.router.basepath = '/' + } + } + + const TSS_SERVER_FN_BASE = joinPaths([ + '/', + startConfig.router.basepath, + startConfig.serverFns.base, + '/', + ]) + + const resolvedSrcDirectory = path.join(root, startConfig.srcDirectory) + resolvedStartConfig.srcDirectory = resolvedSrcDirectory + + const startFilePath = resolveEntry({ + type: 'start entry', + configuredEntry: startConfig.start.entry, + defaultEntry: 'start', + resolvedSrcDirectory, + required: false, + }) + resolvedStartConfig.startFilePath = startFilePath + + const routerFilePath = resolveEntry({ + type: 'router entry', + configuredEntry: startConfig.router.entry, + defaultEntry: 'router', + resolvedSrcDirectory, + required: true, + }) + resolvedStartConfig.routerFilePath = routerFilePath + + const clientEntryPath = resolveEntry({ + type: 'client entry', + configuredEntry: startConfig.client.entry, + defaultEntry: 'client', + resolvedSrcDirectory, + required: false, + }) + + const serverEntryPath = resolveEntry({ + type: 'server entry', + configuredEntry: startConfig.server.entry, + defaultEntry: 'server', + resolvedSrcDirectory, + required: false, + }) + resolvedServerEntryPath = + serverEntryPath ?? corePluginOpts.defaultEntryPaths.server + + const entryAliasConfiguration: Record< + (typeof ENTRY_POINTS)[keyof typeof ENTRY_POINTS], + string + > = { + [ENTRY_POINTS.client]: + clientEntryPath ?? corePluginOpts.defaultEntryPaths.client, + [ENTRY_POINTS.server]: + serverEntryPath ?? corePluginOpts.defaultEntryPaths.server, + [ENTRY_POINTS.start]: + startFilePath ?? corePluginOpts.defaultEntryPaths.start, + [ENTRY_POINTS.router]: routerFilePath, + } + + const clientOutputDir = getOutputDirectory( + root, + config, + VITE_ENVIRONMENT_NAMES.client, + 'client', + ) + resolvedClientOutputDir = clientOutputDir + const serverOutputDir = getOutputDirectory( + root, + config, + VITE_ENVIRONMENT_NAMES.server, + 'server', + ) + resolvedServerOutputDir = serverOutputDir + + const isDev = api.context?.command === 'serve' + const defineValues = { + ...defineReplaceEnv('TSS_SERVER_FN_BASE', TSS_SERVER_FN_BASE), + ...defineReplaceEnv('TSS_CLIENT_OUTPUT_DIR', clientOutputDir), + ...defineReplaceEnv( + 'TSS_ROUTER_BASEPATH', + startConfig.router.basepath, + ), + ...defineReplaceEnv('TSS_DEV_SERVER', isDev ? 'true' : 'false'), + ...(isDev + ? defineReplaceEnv( + 'TSS_SHELL', + startConfig.spa?.enabled ? 'true' : 'false', + ) + : {}), + } + + const routerPlugins = tanStackStartRouterRsbuild( + startPluginOpts, + getConfig, + corePluginOpts, + ) + + const startCompilerLoaderPath = resolveLoaderPath( + './start-compiler-loader', + ) + + const loaderRule = (env: 'client' | 'server', envName: string) => ({ + test: /\.[cm]?[jt]sx?$/, + exclude: /node_modules/, + enforce: 'pre', + use: [ + { + loader: startCompilerLoaderPath, + options: { + env, + envName, + root, + framework: corePluginOpts.framework, + providerEnvName: serverFnProviderEnv, + generateFunctionId: startPluginOpts?.serverFns?.generateFunctionId, + }, + }, + ], + }) + + const autoImportPlugins = toPluginArray(routerPlugins.autoImport) + + const clientEnvConfig = { + source: { + entry: { index: ENTRY_POINTS.client }, + alias: entryAliasConfiguration, + define: defineValues, + }, + output: { + target: 'web', + distPath: { + root: path.relative(root, clientOutputDir), + }, + }, + tools: { + rspack: { + plugins: [ + routerPlugins.generatorPlugin, + routerPlugins.clientCodeSplitter, + ...autoImportPlugins, + createStartManifestRspackPlugin({ + basePath: resolvedStartConfig.viteAppBase, + clientOutputDir, + }), + ], + module: { + rules: [ + loaderRule('client', VITE_ENVIRONMENT_NAMES.client), + { + include: [routerPlugins.getGeneratedRouteTreePath()], + use: [{ loader: routerPlugins.routeTreeLoaderPath }], + }, + ], + }, + resolve: { + alias: entryAliasConfiguration, + }, + }, + }, + } + + const serverEnvConfig = { + source: { + entry: { server: ENTRY_POINTS.server }, + alias: entryAliasConfiguration, + define: defineValues, + }, + output: { + target: 'node', + distPath: { + root: path.relative(root, serverOutputDir), + }, + }, + tools: { + rspack: { + plugins: [ + routerPlugins.generatorPlugin, + routerPlugins.serverCodeSplitter, + ...autoImportPlugins, + createServerFnResolverPlugin({ + environmentName: VITE_ENVIRONMENT_NAMES.server, + providerEnvName: serverFnProviderEnv, + }), + createInjectedHeadScriptsPlugin(), + createStartManifestVirtualModulePlugin({ + clientOutputDir, + }), + ], + module: { + rules: [loaderRule('server', VITE_ENVIRONMENT_NAMES.server)], + }, + resolve: { + alias: entryAliasConfiguration, + }, + }, + }, + } + + const setupMiddlewares = ( + middlewares: Array, + context: { environments?: Record }, + ) => { + if (startConfig.vite?.installDevServerMiddleware === false) { + return + } + const serverEnv = context.environments?.[ + VITE_ENVIRONMENT_NAMES.server + ] + middlewares.push(async (req: any, res: any, next: any) => { + if (res.headersSent || res.writableEnded) { + return next() + } + if (!serverEnv?.loadBundle) { + return next() + } + try { + const serverBundle = await serverEnv.loadBundle() + const serverBuild = serverBundle?.default ?? serverBundle + if (!serverBuild?.fetch) { + return next() + } + req.url = joinURL(resolvedStartConfig.viteAppBase, req.url ?? '/') + const webReq = new NodeRequest({ req, res }) + const webRes = await serverBuild.fetch(webReq) + return sendNodeResponse(res, webRes) + } catch (error) { + return next(error) + } + }) + } + + const existingSetupMiddlewares = config.dev?.setupMiddlewares + const mergedSetupMiddlewares = ( + middlewares: Array, + context: { environments?: Record }, + ) => { + if (typeof existingSetupMiddlewares === 'function') { + existingSetupMiddlewares(middlewares, context) + } else if (Array.isArray(existingSetupMiddlewares)) { + existingSetupMiddlewares.forEach((fn: any) => + fn(middlewares, context), + ) + } + setupMiddlewares(middlewares, context) + } + + const nextConfig = { + ...config, + environments: { + ...config.environments, + [VITE_ENVIRONMENT_NAMES.client]: mergeEnvConfig( + config.environments?.[VITE_ENVIRONMENT_NAMES.client], + clientEnvConfig, + ), + [VITE_ENVIRONMENT_NAMES.server]: mergeEnvConfig( + config.environments?.[VITE_ENVIRONMENT_NAMES.server], + serverEnvConfig, + ), + }, + dev: { + ...config.dev, + setupMiddlewares: mergedSetupMiddlewares, + }, + } + + if (!ssrIsProvider) { + nextConfig.environments = { + ...nextConfig.environments, + [serverFnProviderEnv]: mergeEnvConfig( + config.environments?.[serverFnProviderEnv], + { + source: { + entry: { provider: ENTRY_POINTS.server }, + alias: entryAliasConfiguration, + define: defineValues, + }, + output: { + target: 'node', + }, + tools: { + rspack: { + plugins: [ + createServerFnResolverPlugin({ + environmentName: serverFnProviderEnv, + providerEnvName: serverFnProviderEnv, + }), + createInjectedHeadScriptsPlugin(), + ], + module: { + rules: [ + loaderRule('server', serverFnProviderEnv), + ], + }, + resolve: { + alias: entryAliasConfiguration, + }, + }, + }, + }, + ), + } + } + + return nextConfig + }) + + api.onAfterStartProdServer?.(({ server }: { server: any }) => { + const serverOutputDir = resolvedServerOutputDir + if (!server?.middlewares?.use || !serverOutputDir) { + return + } + + let serverBuild: any = null + server.middlewares.use(async (req: any, res: any, next: any) => { + try { + if (res.headersSent || res.writableEnded) { + return next() + } + if (!resolvedServerEntryPath) { + return next() + } + + if (!serverBuild) { + const outputFilename = 'server.js' + const serverEntryPath = path.join( + serverOutputDir, + outputFilename, + ) + const imported = await import( + pathToFileURL(serverEntryPath).toString() + ) + serverBuild = imported.default ?? imported + } + + if (!serverBuild?.fetch) { + return next() + } + + req.url = joinURL(resolvedStartConfig.viteAppBase, req.url ?? '/') + + const webReq = new NodeRequest({ req, res }) + const webRes: Response = await serverBuild.fetch(webReq) + return sendNodeResponse(res, webRes) + } catch (error) { + next(error) + } + }) + }) + + api.onAfterBuild?.(async () => { + const { startConfig } = getConfig() + const clientOutputDir = resolvedClientOutputDir + const serverOutputDir = resolvedServerOutputDir + if (!clientOutputDir || !serverOutputDir) { + return + } + await postServerBuildRsbuild({ + startConfig, + clientOutputDir, + serverOutputDir, + }) + }) + }, + }, + ] +} diff --git a/packages/start-plugin-core/src/rsbuild/post-server-build.ts b/packages/start-plugin-core/src/rsbuild/post-server-build.ts new file mode 100644 index 00000000000..5aa1844a296 --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/post-server-build.ts @@ -0,0 +1,68 @@ +import { HEADERS } from '@tanstack/start-server-core' +import path from 'pathe' +import { buildSitemap } from '../build-sitemap' +import { prerender } from './prerender' +import type { TanStackStartOutputConfig } from '../schema' + +export async function postServerBuildRsbuild({ + startConfig, + clientOutputDir, + serverOutputDir, +}: { + startConfig: TanStackStartOutputConfig + clientOutputDir: string + serverOutputDir: string +}) { + if (startConfig.prerender?.enabled !== false) { + startConfig.prerender = { + ...startConfig.prerender, + enabled: + startConfig.prerender?.enabled ?? + startConfig.pages.some((d) => + typeof d === 'string' ? false : !!d.prerender?.enabled, + ), + } + } + + if (startConfig.spa?.enabled) { + startConfig.prerender = { + ...startConfig.prerender, + enabled: true, + } + + const maskUrl = new URL(startConfig.spa.maskPath, 'http://localhost') + if (maskUrl.origin !== 'http://localhost') { + throw new Error('spa.maskPath must be a path (no protocol/host)') + } + + startConfig.pages.push({ + path: maskUrl.toString().replace('http://localhost', ''), + prerender: { + ...startConfig.spa.prerender, + headers: { + ...startConfig.spa.prerender.headers, + [HEADERS.TSS_SHELL]: 'true', + }, + }, + sitemap: { + exclude: true, + }, + }) + } + + if (startConfig.prerender.enabled) { + const serverEntryPath = path.join(serverOutputDir, 'server.js') + await prerender({ + startConfig, + clientOutputDir, + serverEntryPath, + }) + } + + if (startConfig.sitemap?.enabled) { + buildSitemap({ + startConfig, + publicDir: clientOutputDir, + }) + } +} diff --git a/packages/start-plugin-core/src/rsbuild/prerender.ts b/packages/start-plugin-core/src/rsbuild/prerender.ts new file mode 100644 index 00000000000..0669c90e9db --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/prerender.ts @@ -0,0 +1,277 @@ +import { pathToFileURL } from 'node:url' +import { promises as fsp } from 'node:fs' +import os from 'node:os' + +import path from 'pathe' +import { joinURL, withBase, withTrailingSlash, withoutBase } from 'ufo' +import { Queue } from '../queue' +import { createLogger } from '../utils' +import type { Page, TanStackStartOutputConfig } from '../schema' + +export async function prerender({ + startConfig, + clientOutputDir, + serverEntryPath, +}: { + startConfig: TanStackStartOutputConfig + clientOutputDir: string + serverEntryPath: string +}) { + const logger = createLogger('prerender') + logger.info('Prerendering pages...') + + if (startConfig.prerender?.enabled) { + let pages = startConfig.pages.length ? startConfig.pages : [{ path: '/' }] + + if (startConfig.prerender.autoStaticPathsDiscovery ?? true) { + const pagesMap = new Map(pages.map((item) => [item.path, item])) + const discoveredPages = globalThis.TSS_PRERENDABLE_PATHS || [] + + for (const page of discoveredPages) { + if (!pagesMap.has(page.path)) { + pagesMap.set(page.path, page) + } + } + + pages = Array.from(pagesMap.values()) + } + + startConfig.pages = pages + } + + const routerBasePath = joinURL('/', startConfig.router.basepath ?? '') + const routerBaseUrl = new URL(routerBasePath, 'http://localhost') + + startConfig.pages = validateAndNormalizePrerenderPages( + startConfig.pages, + routerBaseUrl, + ) + + process.env.TSS_PRERENDERING = 'true' + + const serverBuild = await import(pathToFileURL(serverEntryPath).toString()) + const fetchHandler = serverBuild.default?.fetch ?? serverBuild.fetch + if (!fetchHandler) { + throw new Error('Server build does not export a fetch handler') + } + + const baseUrl = new URL('http://localhost') + + const isRedirectResponse = (res: Response) => { + return res.status >= 300 && res.status < 400 && res.headers.get('location') + } + + async function localFetch( + path: string, + options?: RequestInit, + maxRedirects: number = 5, + ): Promise { + const url = new URL(path, baseUrl) + const request = new Request(url, options) + const response = await fetchHandler(request) + + if (isRedirectResponse(response) && maxRedirects > 0) { + const location = response.headers.get('location')! + if (location.startsWith('http://localhost') || location.startsWith('/')) { + const newUrl = location.replace('http://localhost', '') + return localFetch(newUrl, options, maxRedirects - 1) + } else { + logger.warn(`Skipping redirect to external location: ${location}`) + } + } + + return response + } + + try { + const pages = await prerenderPages({ outputDir: clientOutputDir }) + + logger.info(`Prerendered ${pages.length} pages:`) + pages.forEach((page) => { + logger.info(`- ${page}`) + }) + } catch (error) { + logger.error(error) + } + + function extractLinks(html: string): Array { + const linkRegex = /]+href=["']([^"']+)["'][^>]*>/g + const links: Array = [] + let match + + while ((match = linkRegex.exec(html)) !== null) { + const href = match[1] + if (href && (href.startsWith('/') || href.startsWith('./'))) { + links.push(href) + } + } + + return links + } + + async function prerenderPages({ outputDir }: { outputDir: string }) { + const seen = new Set() + const prerendered = new Set() + const retriesByPath = new Map() + const concurrency = startConfig.prerender?.concurrency ?? os.cpus().length + logger.info(`Concurrency: ${concurrency}`) + const queue = new Queue({ concurrency }) + const routerBasePath = joinURL('/', startConfig.router.basepath ?? '') + + const routerBaseUrl = new URL(routerBasePath, 'http://localhost') + startConfig.pages = validateAndNormalizePrerenderPages( + startConfig.pages, + routerBaseUrl, + ) + + startConfig.pages.forEach((page) => addCrawlPageTask(page)) + + await queue.start() + + return Array.from(prerendered) + + function addCrawlPageTask(page: Page) { + if (seen.has(page.path)) return + + seen.add(page.path) + + if (page.fromCrawl) { + startConfig.pages.push(page) + } + + if (!(page.prerender?.enabled ?? true)) return + + if (startConfig.prerender?.filter && !startConfig.prerender.filter(page)) + return + + const prerenderOptions = { + ...startConfig.prerender, + ...page.prerender, + } + + queue.add(async () => { + logger.info(`Crawling: ${page.path}`) + const retries = retriesByPath.get(page.path) || 0 + try { + const res = await localFetch( + withTrailingSlash(withBase(page.path, routerBasePath)), + { + headers: { + ...(prerenderOptions.headers ?? {}), + }, + }, + prerenderOptions.maxRedirects, + ) + + if (!res.ok) { + if (isRedirectResponse(res)) { + logger.warn(`Max redirects reached for ${page.path}`) + } + throw new Error(`Failed to fetch ${page.path}: ${res.statusText}`, { + cause: res, + }) + } + + const cleanPagePath = ( + prerenderOptions.outputPath || page.path + ).split(/[?#]/)[0]! + + const contentType = res.headers.get('content-type') || '' + const isImplicitHTML = + !cleanPagePath.endsWith('.html') && contentType.includes('html') + + const routeWithIndex = cleanPagePath.endsWith('/') + ? cleanPagePath + 'index' + : cleanPagePath + + const isSpaShell = + startConfig.spa?.prerender.outputPath === cleanPagePath + + let htmlPath: string + if (isSpaShell) { + htmlPath = cleanPagePath + '.html' + } else { + if ( + cleanPagePath.endsWith('/') || + (prerenderOptions.autoSubfolderIndex ?? true) + ) { + htmlPath = joinURL(cleanPagePath, 'index.html') + } else { + htmlPath = cleanPagePath + '.html' + } + } + + const filename = withoutBase( + isImplicitHTML ? htmlPath : routeWithIndex, + routerBasePath, + ) + + const html = await res.text() + + const filepath = path.join(outputDir, filename) + + await fsp.mkdir(path.dirname(filepath), { + recursive: true, + }) + + await fsp.writeFile(filepath, html) + + prerendered.add(page.path) + + const newPage = await prerenderOptions.onSuccess?.({ page, html }) + + if (newPage) { + Object.assign(page, newPage) + } + + if (prerenderOptions.crawlLinks ?? true) { + const links = extractLinks(html) + for (const link of links) { + addCrawlPageTask({ path: link, fromCrawl: true }) + } + } + } catch (error) { + if (retries < (prerenderOptions.retryCount ?? 0)) { + logger.warn(`Encountered error, retrying: ${page.path} in 500ms`) + await new Promise((resolve) => + setTimeout(resolve, prerenderOptions.retryDelay), + ) + retriesByPath.set(page.path, retries + 1) + addCrawlPageTask(page) + } else { + if (prerenderOptions.failOnError ?? true) { + throw error + } + } + } + }) + } + } +} + +function validateAndNormalizePrerenderPages( + pages: Array, + routerBaseUrl: URL, +): Array { + return pages.map((page) => { + let url: URL + try { + url = new URL(page.path, routerBaseUrl) + } catch (err) { + throw new Error(`prerender page path must be relative: ${page.path}`, { + cause: err, + }) + } + + if (url.origin !== 'http://localhost') { + throw new Error(`prerender page path must be relative: ${page.path}`) + } + + const decodedPathname = decodeURIComponent(url.pathname) + + return { + ...page, + path: decodedPathname + url.search + url.hash, + } + }) +} diff --git a/packages/start-plugin-core/src/rsbuild/route-tree-loader.ts b/packages/start-plugin-core/src/rsbuild/route-tree-loader.ts new file mode 100644 index 00000000000..d37cae68ded --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/route-tree-loader.ts @@ -0,0 +1,8 @@ +import { getClientRouteTreeContent } from './route-tree-state' + +export default function routeTreeLoader(this: any) { + const callback = this.async() + getClientRouteTreeContent() + .then((code) => callback(null, code)) + .catch((error) => callback(error)) +} diff --git a/packages/start-plugin-core/src/rsbuild/route-tree-state.ts b/packages/start-plugin-core/src/rsbuild/route-tree-state.ts new file mode 100644 index 00000000000..5809b8d765c --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/route-tree-state.ts @@ -0,0 +1,34 @@ +import { pruneServerOnlySubtrees } from '../start-router-plugin/pruneServerOnlySubtrees' +import type { Generator } from '@tanstack/router-generator' + +let generatorInstance: Generator | null = null + +export function setGeneratorInstance(generator: Generator) { + generatorInstance = generator +} + +export async function getClientRouteTreeContent() { + if (!generatorInstance) { + throw new Error('Generator instance not initialized for route tree loader') + } + const crawlingResult = await generatorInstance.getCrawlingResult() + if (!crawlingResult) { + throw new Error('Crawling result not available') + } + const prunedAcc = pruneServerOnlySubtrees(crawlingResult) + const acc = { + ...crawlingResult.acc, + ...prunedAcc, + } + const buildResult = generatorInstance.buildRouteTree({ + ...crawlingResult, + acc, + config: { + disableTypes: true, + enableRouteTreeFormatting: false, + routeTreeFileHeader: [], + routeTreeFileFooter: [], + }, + }) + return buildResult.routeTreeContent +} diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts new file mode 100644 index 00000000000..76dc6e81d1f --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts @@ -0,0 +1,214 @@ +import { promises as fsp } from 'node:fs' +import path from 'node:path' +import { + KindDetectionPatterns, + LookupKindsPerEnv, + StartCompiler, + detectKindsInCode, +} from '../start-compiler-plugin/compiler' +import { cleanId } from '../start-compiler-plugin/utils' +import type { LookupConfig } from '../start-compiler-plugin/compiler' +import type { CompileStartFrameworkOptions } from '../types' +import type { + GenerateFunctionIdFnOptional, + ServerFn, +} from '../start-compiler-plugin/types' + +type LoaderOptions = { + env: 'client' | 'server' + envName: string + root: string + framework: CompileStartFrameworkOptions + providerEnvName: string + generateFunctionId?: GenerateFunctionIdFnOptional +} + +const compilers = new Map() +const serverFnsById: Record = {} + +export const getServerFnsById = () => serverFnsById + +const onServerFnsById = (d: Record) => { + Object.assign(serverFnsById, d) +} + +// Derive transform code filter from KindDetectionPatterns (single source of truth) +function getTransformCodeFilterForEnv(env: 'client' | 'server'): Array { + const validKinds = LookupKindsPerEnv[env] + const patterns: Array = [] + for (const [kind, pattern] of Object.entries(KindDetectionPatterns) as Array< + [keyof typeof KindDetectionPatterns, RegExp] + >) { + if (validKinds.has(kind)) { + patterns.push(pattern) + } + } + return patterns +} + +const getLookupConfigurationsForEnv = ( + env: 'client' | 'server', + framework: CompileStartFrameworkOptions, +): Array => { + const commonConfigs: Array = [ + { + libName: `@tanstack/${framework}-start`, + rootExport: 'createServerFn', + kind: 'Root', + }, + { + libName: `@tanstack/${framework}-start`, + rootExport: 'createIsomorphicFn', + kind: 'Root', + }, + { + libName: `@tanstack/${framework}-start`, + rootExport: 'createServerOnlyFn', + kind: 'Root', + }, + { + libName: `@tanstack/${framework}-start`, + rootExport: 'createClientOnlyFn', + kind: 'Root', + }, + ] + + if (env === 'client') { + return [ + { + libName: `@tanstack/${framework}-start`, + rootExport: 'createMiddleware', + kind: 'Root', + }, + { + libName: `@tanstack/${framework}-start`, + rootExport: 'createStart', + kind: 'Root', + }, + ...commonConfigs, + ] + } + + return [ + ...commonConfigs, + { + libName: `@tanstack/${framework}-router`, + rootExport: 'ClientOnly', + kind: 'ClientOnlyJSX', + }, + ] +} + +function shouldTransformCode(code: string, env: 'client' | 'server') { + const patterns = getTransformCodeFilterForEnv(env) + return patterns.some((pattern) => pattern.test(code)) +} + +async function resolveId( + loaderContext: any, + source: string, + importer?: string, +): Promise { + const baseContext = importer + ? path.dirname(cleanId(importer)) + : loaderContext.context + + return new Promise((resolve) => { + loaderContext.resolve( + baseContext, + source, + (err: Error | null, result?: string) => { + if (err || !result) { + resolve(null) + return + } + resolve(cleanId(result)) + }, + ) + }) +} + +async function loadModule( + compiler: StartCompiler, + loaderContext: any, + id: string, +) { + const cleaned = cleanId(id) + const resolvedPath = + cleaned.startsWith('.') || cleaned.startsWith('/') + ? cleaned + : (await resolveId(loaderContext, cleaned)) ?? cleaned + + if (resolvedPath.includes('\0')) return + + try { + const code = await fsp.readFile(resolvedPath, 'utf-8') + compiler.ingestModule({ code, id: resolvedPath }) + } catch { + // ignore missing files + } +} + +export default function startCompilerLoader( + this: any, + code: string, + map: any, +) { + const callback = this.async() + const options = this.getOptions() as LoaderOptions + + const env = options.env + const envName = options.envName + const root = options.root || process.cwd() + const framework = options.framework + const providerEnvName = options.providerEnvName + + if (!shouldTransformCode(code, env)) { + callback(null, code, map) + return + } + + let compiler = compilers.get(envName) + if (!compiler) { + const mode = + this.mode === 'production' || this._compiler?.options?.mode === 'production' + ? 'build' + : 'dev' + compiler = new StartCompiler({ + env, + envName, + root, + lookupKinds: LookupKindsPerEnv[env], + lookupConfigurations: getLookupConfigurationsForEnv(env, framework), + mode, + framework, + providerEnvName, + generateFunctionId: options.generateFunctionId, + onServerFnsById, + getKnownServerFns: () => serverFnsById, + loadModule: async (id: string) => loadModule(compiler!, this, id), + resolveId: async (source: string, importer?: string) => + resolveId(this, source, importer), + }) + compilers.set(envName, compiler) + } + + const detectedKinds = detectKindsInCode(code, env) + + compiler + .compile({ + id: cleanId(this.resourcePath), + code, + detectedKinds, + }) + .then((result) => { + if (!result) { + callback(null, code, map) + return + } + callback(null, result.code, result.map ?? map) + }) + .catch((error) => { + callback(error) + }) +} diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts new file mode 100644 index 00000000000..a4b5aa43907 --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts @@ -0,0 +1,90 @@ +import { createRspackPlugin } from 'unplugin' +import { VIRTUAL_MODULES } from '@tanstack/start-server-core' +import { VITE_ENVIRONMENT_NAMES } from '../constants' +import { getServerFnsById } from './start-compiler-loader' +import type { ServerFn } from '../start-compiler-plugin/types' + +function generateManifestModule( + serverFnsById: Record, + includeClientReferencedCheck: boolean, +): string { + const manifestEntries = Object.entries(serverFnsById) + .map(([id, fn]) => { + const baseEntry = `'${id}': { + functionName: '${fn.functionName}', + importer: () => import(${JSON.stringify(fn.extractedFilename)})${ + includeClientReferencedCheck + ? `, + isClientReferenced: ${fn.isClientReferenced ?? true}` + : '' + } + }` + return baseEntry + }) + .join(',') + + const getServerFnByIdParams = includeClientReferencedCheck ? 'id, opts' : 'id' + const clientReferencedCheck = includeClientReferencedCheck + ? ` + if (opts?.fromClient && !serverFnInfo.isClientReferenced) { + throw new Error('Server function not accessible from client: ' + id) + } +` + : '' + + return ` + const manifest = {${manifestEntries}} + + export async function getServerFnById(${getServerFnByIdParams}) { + const serverFnInfo = manifest[id] + if (!serverFnInfo) { + throw new Error('Server function info not found for ' + id) + } +${clientReferencedCheck} + const fnModule = await serverFnInfo.importer() + + if (!fnModule) { + console.info('serverFnInfo', serverFnInfo) + throw new Error('Server function module not resolved for ' + id) + } + + const action = fnModule[serverFnInfo.functionName] + + if (!action) { + console.info('serverFnInfo', serverFnInfo) + console.info('fnModule', fnModule) + + throw new Error( + \`Server function module export not resolved for serverFn ID: \${id}\`, + ) + } + return action + } + ` +} + +export function createServerFnResolverPlugin(opts: { + environmentName: string + providerEnvName: string +}) { + const ssrIsProvider = opts.providerEnvName === VITE_ENVIRONMENT_NAMES.server + const includeClientReferencedCheck = !ssrIsProvider + + return createRspackPlugin(() => ({ + name: `tanstack-start-core:server-fn-resolver:${opts.environmentName}`, + resolveId(id) { + if (id === VIRTUAL_MODULES.serverFnResolver) { + return id + } + return null + }, + load(id) { + if (id !== VIRTUAL_MODULES.serverFnResolver) return null + if (opts.environmentName !== opts.providerEnvName) { + return `export { getServerFnById } from '@tanstack/start-server-core/server-fn-ssr-caller'` + } + const serverFnsById = getServerFnsById() + return generateManifestModule(serverFnsById, includeClientReferencedCheck) + }, + })) +} diff --git a/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts new file mode 100644 index 00000000000..15bf0246de0 --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts @@ -0,0 +1,226 @@ +import { promises as fsp } from 'node:fs' +import path from 'node:path' +import { joinURL } from 'ufo' +import { rootRouteId } from '@tanstack/router-core' +import { VIRTUAL_MODULES } from '@tanstack/start-server-core' +import { tsrSplit } from '@tanstack/router-plugin' +import { createRspackPlugin } from 'unplugin' +import type { Manifest, RouterManagedTag } from '@tanstack/router-core' + +const START_MANIFEST_FILE = 'tanstack-start-manifest.json' + +type StatsAsset = string | { name?: string } + +type StatsChunk = { + files?: Array + auxiliaryFiles?: Array + modules?: Array<{ name?: string; identifier?: string }> +} + +type StatsJson = { + entrypoints?: Record< + string, + { + assets?: Array + } + > + chunks?: Array +} + +function getAssetName(asset: StatsAsset): string | undefined { + if (!asset) return undefined + if (typeof asset === 'string') return asset + return asset.name +} + +function isJsAsset(asset: string) { + return asset.endsWith('.js') || asset.endsWith('.mjs') +} + +function isCssAsset(asset: string) { + return asset.endsWith('.css') +} + +function createCssTags( + basePath: string, + assets: Array, +): Array { + return assets.map((asset) => ({ + tag: 'link', + attrs: { + rel: 'stylesheet', + href: joinURL(basePath, asset), + type: 'text/css', + }, + })) +} + +function unique(items: Array) { + return Array.from(new Set(items)) +} + +function getStatsEntryAssets(statsJson: StatsJson): Array { + const entrypoints = statsJson.entrypoints ?? {} + const entrypoint = + entrypoints['index'] ?? + entrypoints['main'] ?? + entrypoints[Object.keys(entrypoints)[0] ?? ''] + + if (!entrypoint?.assets) return [] + + return unique( + entrypoint.assets + .map(getAssetName) + .filter((asset): asset is string => Boolean(asset)), + ) +} + +function buildStartManifest({ + statsJson, + basePath, +}: { + statsJson: StatsJson + basePath: string +}): Manifest & { clientEntry: string } { + const entryAssets = getStatsEntryAssets(statsJson) + const entryJsAssets = unique(entryAssets.filter(isJsAsset)) + const entryCssAssets = unique(entryAssets.filter(isCssAsset)) + + const entryFile = entryJsAssets[0] + if (!entryFile) { + throw new Error('No client entry file found in rsbuild stats') + } + + const routeTreeRoutes: Record = + globalThis.TSS_ROUTES_MANIFEST + + const routeChunks: Record> = {} + for (const chunk of statsJson.chunks ?? []) { + const modules = chunk.modules ?? [] + for (const mod of modules) { + const id = mod.identifier ?? mod.name ?? '' + if (!id.includes(tsrSplit)) continue + const [fileId, query] = id.split('?') + if (!fileId || !query) continue + const searchParams = new URLSearchParams(query) + if (!searchParams.has(tsrSplit)) continue + const existingChunks = routeChunks[fileId] + if (existingChunks) { + existingChunks.push(chunk) + } else { + routeChunks[fileId] = [chunk] + } + } + } + + const manifest: Manifest = { routes: {} } + + Object.entries(routeTreeRoutes).forEach(([routeId, route]) => { + const chunks = routeChunks[route.filePath] + if (!chunks?.length) { + manifest.routes[routeId] = {} + return + } + + const preloadAssets = unique( + chunks.flatMap((chunk) => chunk.files ?? []).filter(isJsAsset), + ) + const cssAssets = unique( + chunks + .flatMap((chunk) => [ + ...(chunk.files ?? []), + ...(chunk.auxiliaryFiles ?? []), + ]) + .filter(isCssAsset), + ) + + manifest.routes[routeId] = { + preloads: preloadAssets.map((asset) => joinURL(basePath, asset)), + assets: createCssTags(basePath, cssAssets), + } + }) + + manifest.routes[rootRouteId] = { + ...(manifest.routes[rootRouteId] ?? {}), + preloads: entryJsAssets.map((asset) => joinURL(basePath, asset)), + assets: [ + ...createCssTags(basePath, entryCssAssets), + ...(manifest.routes[rootRouteId]?.assets ?? []), + ], + } + + return { + routes: manifest.routes, + clientEntry: joinURL(basePath, entryFile), + } +} + +export function createStartManifestRspackPlugin(opts: { + basePath: string + clientOutputDir: string +}) { + return { + apply(compiler: any) { + compiler.hooks.done.tapPromise( + 'tanstack-start:manifest', + async (stats: any) => { + const statsJson: StatsJson = stats.toJson({ + all: false, + entrypoints: true, + chunks: true, + modules: true, + }) + + const manifest = buildStartManifest({ + statsJson, + basePath: opts.basePath, + }) + + const manifestPath = path.join( + opts.clientOutputDir, + START_MANIFEST_FILE, + ) + await fsp.mkdir(path.dirname(manifestPath), { recursive: true }) + await fsp.writeFile( + manifestPath, + JSON.stringify(manifest), + 'utf-8', + ) + }, + ) + }, + } +} + +export function createStartManifestVirtualModulePlugin(opts: { + clientOutputDir: string +}) { + const manifestPath = path.join(opts.clientOutputDir, START_MANIFEST_FILE) + return createRspackPlugin(() => ({ + name: 'tanstack-start:manifest:virtual', + resolveId(id) { + if (id === VIRTUAL_MODULES.startManifest) { + return id + } + return null + }, + load(id) { + if (id !== VIRTUAL_MODULES.startManifest) return null + return ` +import fs from 'node:fs' + +let cached +export const tsrStartManifest = () => { + if (cached) return cached + try { + const raw = fs.readFileSync(${JSON.stringify(manifestPath)}, 'utf-8') + cached = JSON.parse(raw) + return cached + } catch (error) { + return { routes: {}, clientEntry: '' } + } +} +` + }, + })) +} diff --git a/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts new file mode 100644 index 00000000000..6aae1d1415a --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts @@ -0,0 +1,179 @@ +import { fileURLToPath } from 'node:url' +import fs from 'node:fs' +import path from 'pathe' +import { + tanstackRouterAutoImport, + tanstackRouterCodeSplitter, + tanstackRouterGenerator, +} from '@tanstack/router-plugin/rspack' +import { routesManifestPlugin } from '../start-router-plugin/generator-plugins/routes-manifest-plugin' +import { prerenderRoutesPlugin } from '../start-router-plugin/generator-plugins/prerender-routes-plugin' +import { VITE_ENVIRONMENT_NAMES } from '../constants' +import { setGeneratorInstance } from './route-tree-state' +import type { GetConfigFn, TanStackStartVitePluginCoreOptions } from '../types' +import type { GeneratorPlugin } from '@tanstack/router-generator' +import type { TanStackStartInputConfig } from '../schema' + +function moduleDeclaration({ + startFilePath, + routerFilePath, + corePluginOpts, + generatedRouteTreePath, +}: { + startFilePath: string | undefined + routerFilePath: string + corePluginOpts: TanStackStartVitePluginCoreOptions + generatedRouteTreePath: string +}): string { + function getImportPath(absolutePath: string) { + let relativePath = path.relative( + path.dirname(generatedRouteTreePath), + absolutePath, + ) + + if (!relativePath.startsWith('.')) { + relativePath = './' + relativePath + } + + relativePath = relativePath.split(path.sep).join('/') + return relativePath + } + + const result: Array = [ + `import type { getRouter } from '${getImportPath(routerFilePath)}'`, + ] + if (startFilePath) { + result.push( + `import type { startInstance } from '${getImportPath(startFilePath)}'`, + ) + } else { + result.push( + `import type { createStart } from '@tanstack/${corePluginOpts.framework}-start'`, + ) + } + result.push( + `declare module '@tanstack/${corePluginOpts.framework}-start' { + interface Register { + ssr: true + router: Awaited>`, + ) + if (startFilePath) { + result.push( + ` config: Awaited>`, + ) + } + result.push(` } +}`) + + return result.join('\n') +} + +function resolveLoaderPath(relativePath: string) { + const currentDir = path.dirname(fileURLToPath(import.meta.url)) + const basePath = path.resolve(currentDir, relativePath) + const jsPath = `${basePath}.js` + const tsPath = `${basePath}.ts` + if (fs.existsSync(jsPath)) return jsPath + if (fs.existsSync(tsPath)) return tsPath + return jsPath +} + +export function tanStackStartRouterRsbuild( + startPluginOpts: TanStackStartInputConfig, + getConfig: GetConfigFn, + corePluginOpts: TanStackStartVitePluginCoreOptions, +) { + const getGeneratedRouteTreePath = () => { + const { startConfig } = getConfig() + return path.resolve(startConfig.router.generatedRouteTree) + } + + const clientTreeGeneratorPlugin: GeneratorPlugin = { + name: 'start-client-tree-plugin', + init({ generator }) { + setGeneratorInstance(generator) + }, + } + + let routeTreeFileFooter: Array | null = null + function getRouteTreeFileFooter() { + if (routeTreeFileFooter) { + return routeTreeFileFooter + } + const { startConfig, resolvedStartConfig } = getConfig() + const ogRouteTreeFileFooter = startConfig.router.routeTreeFileFooter + if (ogRouteTreeFileFooter) { + if (Array.isArray(ogRouteTreeFileFooter)) { + routeTreeFileFooter = ogRouteTreeFileFooter + } else { + routeTreeFileFooter = ogRouteTreeFileFooter() + } + } + routeTreeFileFooter = [ + moduleDeclaration({ + generatedRouteTreePath: getGeneratedRouteTreePath(), + corePluginOpts, + startFilePath: resolvedStartConfig.startFilePath, + routerFilePath: resolvedStartConfig.routerFilePath, + }), + ...(routeTreeFileFooter ?? []), + ] + return routeTreeFileFooter + } + + const routeTreeLoaderPath = resolveLoaderPath('./route-tree-loader') + + const generatorPlugin = tanstackRouterGenerator(() => { + const routerConfig = getConfig().startConfig.router + const plugins = [clientTreeGeneratorPlugin, routesManifestPlugin()] + if (startPluginOpts?.prerender?.enabled === true) { + plugins.push(prerenderRoutesPlugin()) + } + return { + ...routerConfig, + target: corePluginOpts.framework, + routeTreeFileFooter: getRouteTreeFileFooter, + plugins, + } + }) + + const clientCodeSplitter = tanstackRouterCodeSplitter(() => { + const routerConfig = getConfig().startConfig.router + return { + ...routerConfig, + codeSplittingOptions: { + ...routerConfig.codeSplittingOptions, + deleteNodes: ['ssr', 'server', 'headers'], + addHmr: true, + }, + plugin: { + vite: { environmentName: VITE_ENVIRONMENT_NAMES.client }, + }, + } + }) + + const serverCodeSplitter = tanstackRouterCodeSplitter(() => { + const routerConfig = getConfig().startConfig.router + return { + ...routerConfig, + codeSplittingOptions: { + ...routerConfig.codeSplittingOptions, + addHmr: false, + }, + plugin: { + vite: { environmentName: VITE_ENVIRONMENT_NAMES.server }, + }, + } + }) + + const autoImport = tanstackRouterAutoImport(startPluginOpts?.router) + + return { + generatorPlugin, + clientCodeSplitter, + serverCodeSplitter, + autoImport, + routeTreeLoaderPath, + getGeneratedRouteTreePath, + } +} diff --git a/packages/start-plugin-core/vite.config.ts b/packages/start-plugin-core/vite.config.ts index d6650eebf65..6f84b1c040a 100644 --- a/packages/start-plugin-core/vite.config.ts +++ b/packages/start-plugin-core/vite.config.ts @@ -14,7 +14,12 @@ const config = defineConfig({ export default mergeConfig( config, tanstackViteConfig({ - entry: './src/index.ts', + entry: [ + './src/index.ts', + './src/rsbuild/index.ts', + './src/rsbuild/start-compiler-loader.ts', + './src/rsbuild/route-tree-loader.ts', + ], srcDir: './src', outDir: './dist', cjs: false, diff --git a/packages/vue-start/package.json b/packages/vue-start/package.json index d515d54c85f..d732b138200 100644 --- a/packages/vue-start/package.json +++ b/packages/vue-start/package.json @@ -74,6 +74,12 @@ "default": "./dist/esm/plugin/vite.js" } }, + "./plugin/rsbuild": { + "import": { + "types": "./dist/esm/plugin/rsbuild.d.ts", + "default": "./dist/esm/plugin/rsbuild.js" + } + }, "./server-entry": { "import": { "types": "./dist/default-entry/esm/server.d.ts", @@ -106,7 +112,13 @@ "vue": "^3.5.25" }, "peerDependencies": { + "@rsbuild/core": ">=1.0.0", "vue": "^3.3.0", "vite": ">=7.0.0" + }, + "peerDependenciesMeta": { + "@rsbuild/core": { + "optional": true + } } } diff --git a/packages/vue-start/src/plugin/rsbuild.ts b/packages/vue-start/src/plugin/rsbuild.ts new file mode 100644 index 00000000000..55b4b13323d --- /dev/null +++ b/packages/vue-start/src/plugin/rsbuild.ts @@ -0,0 +1,35 @@ +import { fileURLToPath } from 'node:url' +import path from 'pathe' +import { TanStackStartRsbuildPluginCore } from '@tanstack/start-plugin-core/rsbuild' +import type { TanStackStartInputConfig } from '@tanstack/start-plugin-core' + +type RsbuildPlugin = { + name: string + setup: (api: any) => void +} + +const currentDir = path.dirname(fileURLToPath(import.meta.url)) +const defaultEntryDir = path.resolve( + currentDir, + '..', + '..', + 'plugin', + 'default-entry', +) +const defaultEntryPaths = { + client: path.resolve(defaultEntryDir, 'client.tsx'), + server: path.resolve(defaultEntryDir, 'server.ts'), + start: path.resolve(defaultEntryDir, 'start.ts'), +} + +export function tanstackStart( + options?: TanStackStartInputConfig, +): Array { + return TanStackStartRsbuildPluginCore( + { + framework: 'vue', + defaultEntryPaths, + }, + options, + ) +} diff --git a/packages/vue-start/vite.config.ts b/packages/vue-start/vite.config.ts index 3e1088b3ef3..b9c0ec1e262 100644 --- a/packages/vue-start/vite.config.ts +++ b/packages/vue-start/vite.config.ts @@ -33,6 +33,7 @@ export default mergeConfig( './src/server-rpc.ts', './src/server.tsx', './src/plugin/vite.ts', + './src/plugin/rsbuild.ts', ], externalDeps: ['@tanstack/vue-start-client', '@tanstack/vue-start-server'], cjs: false, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9453614209..28e773e224c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1594,7 +1594,7 @@ importers: version: 4.7.0(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) nitro: specifier: 3.0.1-alpha.2 - version: 3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rolldown@1.0.0-rc.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) sass: specifier: ^1.97.2 version: 1.97.2 @@ -1716,7 +1716,7 @@ importers: version: 9.2.1 nitro: specifier: npm:nitro-nightly@latest - version: nitro-nightly@3.0.1-20260123-195236-c6b834cd(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: nitro-nightly@3.0.1-20260206-171553-bc737c0c(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) typescript: specifier: ^5.7.2 version: 5.9.3 @@ -7955,7 +7955,7 @@ importers: version: 4.6.0(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) nitro: specifier: 3.0.1-alpha.2 - version: 3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rolldown@1.0.0-rc.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) tailwindcss: specifier: ^4.1.18 version: 4.1.18 @@ -10494,7 +10494,7 @@ importers: version: 25.0.9 nitro: specifier: 3.0.1-alpha.2 - version: 3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rolldown@1.0.0-rc.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) tailwindcss: specifier: ^4.1.18 version: 4.1.18 @@ -10675,7 +10675,7 @@ importers: devDependencies: '@netlify/vite-plugin-tanstack-start': specifier: ^1.1.4 - version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) '@tailwindcss/vite': specifier: ^4.1.18 version: 4.1.18(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) @@ -10721,7 +10721,7 @@ importers: version: 25.0.9 nitro: specifier: 3.0.1-alpha.2 - version: 3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rolldown@1.0.0-rc.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) tailwindcss: specifier: ^4.1.18 version: 4.1.18 @@ -11538,7 +11538,7 @@ importers: dependencies: nitropack: specifier: ^2.13.1 - version: 2.13.1(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(encoding@0.1.13)(mysql2@3.15.3) + version: 2.13.1(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(encoding@0.1.13)(mysql2@3.15.3)(rolldown@1.0.0-rc.3) pathe: specifier: ^2.0.3 version: 2.0.3 @@ -11644,6 +11644,9 @@ importers: packages/react-start: dependencies: + '@rsbuild/core': + specifier: '>=1.0.0' + version: 1.2.4 '@tanstack/react-router': specifier: workspace:* version: link:../react-router @@ -12097,6 +12100,9 @@ importers: packages/solid-start: dependencies: + '@rsbuild/core': + specifier: '>=1.0.0' + version: 1.2.4 '@tanstack/solid-router': specifier: workspace:* version: link:../solid-router @@ -12228,6 +12234,9 @@ importers: '@rolldown/pluginutils': specifier: 1.0.0-beta.40 version: 1.0.0-beta.40 + '@rsbuild/core': + specifier: '>=1.0.0' + version: 1.2.4 '@tanstack/router-core': specifier: workspace:* version: link:../router-core @@ -12264,6 +12273,9 @@ importers: ufo: specifier: ^1.5.4 version: 1.6.1 + unplugin: + specifier: ^2.3.11 + version: 2.3.11 vitefu: specifier: ^1.1.1 version: 1.1.1(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) @@ -12300,7 +12312,7 @@ importers: version: link:../start-storage-context h3-v2: specifier: npm:h3@2.0.1-rc.14 - version: h3@2.0.1-rc.14(crossws@0.4.3(srvx@0.11.2)) + version: h3@2.0.1-rc.14(crossws@0.4.4(srvx@0.11.2)) seroval: specifier: ^1.4.2 version: 1.4.2 @@ -12460,6 +12472,9 @@ importers: packages/vue-start: dependencies: + '@rsbuild/core': + specifier: '>=1.0.0' + version: 1.2.4 '@tanstack/start-client-core': specifier: workspace:* version: link:../start-client-core @@ -15350,6 +15365,9 @@ packages: cpu: [x64] os: [win32] + '@oxc-project/types@0.112.0': + resolution: {integrity: sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ==} + '@oxc-transform/binding-android-arm-eabi@0.110.0': resolution: {integrity: sha512-sE9dxvqqAax1YYJ3t7j+h5ZSI9jl6dYuDfngl6ieZUrIy5P89/8JKVgAzgp8o3wQSo7ndpJvYsi1K4ZqrmbP7w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -16388,6 +16406,83 @@ packages: '@remix-run/node-fetch-server@0.8.1': resolution: {integrity: sha512-J1dev372wtJqmqn9U/qbpbZxbJSQrogNN2+Qv1lKlpATpe/WQ9aCZfl/xSb9d2Rgh1IyLSvNxZAXPZxruO6Xig==} + '@rolldown/binding-android-arm64@1.0.0-rc.3': + resolution: {integrity: sha512-0T1k9FinuBZ/t7rZ8jN6OpUKPnUjNdYHoj/cESWrQ3ZraAJ4OMm6z7QjSfCxqj8mOp9kTKc1zHK3kGz5vMu+nQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.3': + resolution: {integrity: sha512-JWWLzvcmc/3pe7qdJqPpuPk91SoE/N+f3PcWx/6ZwuyDVyungAEJPvKm/eEldiDdwTmaEzWfIR+HORxYWrCi1A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.3': + resolution: {integrity: sha512-MTakBxfx3tde5WSmbHxuqlDsIW0EzQym+PJYGF4P6lG2NmKzi128OGynoFUqoD5ryCySEY85dug4v+LWGBElIw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.3': + resolution: {integrity: sha512-jje3oopyOLs7IwfvXoS6Lxnmie5JJO7vW29fdGFu5YGY1EDbVDhD+P9vDihqS5X6fFiqL3ZQZCMBg6jyHkSVww==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.3': + resolution: {integrity: sha512-A0n8P3hdLAaqzSFrQoA42p23ZKBYQOw+8EH5r15Sa9X1kD9/JXe0YT2gph2QTWvdr0CVK2BOXiK6ENfy6DXOag==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.3': + resolution: {integrity: sha512-kWXkoxxarYISBJ4bLNf5vFkEbb4JvccOwxWDxuK9yee8lg5XA7OpvlTptfRuwEvYcOZf+7VS69Uenpmpyo5Bjw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.3': + resolution: {integrity: sha512-Z03/wrqau9Bicfgb3Dbs6SYTHliELk2PM2LpG2nFd+cGupTMF5kanLEcj2vuuJLLhptNyS61rtk7SOZ+lPsTUA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.3': + resolution: {integrity: sha512-iSXXZsQp08CSilff/DCTFZHSVEpEwdicV3W8idHyrByrcsRDVh9sGC3sev6d8BygSGj3vt8GvUKBPCoyMA4tgQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.3': + resolution: {integrity: sha512-qaj+MFudtdCv9xZo9znFvkgoajLdc+vwf0Kz5N44g+LU5XMe+IsACgn3UG7uTRlCCvhMAGXm1XlpEA5bZBrOcw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.3': + resolution: {integrity: sha512-U662UnMETyjT65gFmG9ma+XziENrs7BBnENi/27swZPYagubfHRirXHG2oMl+pEax2WvO7Kb9gHZmMakpYqBHQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.3': + resolution: {integrity: sha512-gekrQ3Q2HiC1T5njGyuUJoGpK/l6B/TNXKed3fZXNf9YRTJn3L5MOZsFBn4bN2+UX+8+7hgdlTcEsexX988G4g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.3': + resolution: {integrity: sha512-85y5JifyMgs8m5K2XzR/VDsapKbiFiohl7s5lEj7nmNGO0pkTXE7q6TQScei96BNAsoK7JC3pA7ukA8WRHVJpg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.3': + resolution: {integrity: sha512-a4VUQZH7LxGbUJ3qJ/TzQG8HxdHvf+jOnqf7B7oFx1TEBm+j2KNL2zr5SQ7wHkNAcaPevF6gf9tQnVBnC4mD+A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-beta.19': resolution: {integrity: sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==} @@ -16409,6 +16504,9 @@ packages: '@rolldown/pluginutils@1.0.0-beta.54': resolution: {integrity: sha512-AHgcZ+w7RIRZ65ihSQL8YuoKcpD9Scew4sEeP1BBUT9QdTo6KjwHrZZXjID6nL10fhKessCH6OPany2QKwAwTQ==} + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} engines: {node: '>=20.19.0'} @@ -17399,6 +17497,7 @@ packages: '@tanstack/config@0.22.0': resolution: {integrity: sha512-7Wwfw6wBv2Kc+OBNIJQzBSJ6q7GABtwVT+VOQ/7/Gl7z8z1rtEYUZrxUrNvbbrHY+J5/WNZNZjJjTWDf8nTUBw==} engines: {node: '>=18'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@tanstack/devtools-client@0.0.4': resolution: {integrity: sha512-LefnH9KE9uRDEWifc3QDcooskA8ikfs41bybDTgpYQpyTUspZnaEdUdya9Hry0KYxZ8nos0S3nNbsP79KHqr6Q==} @@ -19364,6 +19463,14 @@ packages: srvx: optional: true + crossws@0.4.4: + resolution: {integrity: sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg==} + peerDependencies: + srvx: '>=0.7.1' + peerDependenciesMeta: + srvx: + optional: true + css-loader@7.1.2: resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} engines: {node: '>= 18.12.0'} @@ -20517,6 +20624,7 @@ packages: glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@13.0.0: @@ -21885,24 +21993,21 @@ packages: netlify-redirector@0.5.0: resolution: {integrity: sha512-4zdzIP+6muqPCuE8avnrgDJ6KW/2+UpHTRcTbMXCIRxiRmyrX+IZ4WSJGZdHPWF3WmQpXpy603XxecZ9iygN7w==} + nf3@0.3.10: + resolution: {integrity: sha512-UlqmHkZiHGgSkRj17yrOXEsSu5ECvtlJ3Xm1W5WsWrTKgu9m7OjrMZh9H/ME2LcWrTlMD0/vmmNVpyBG4yRdGg==} + nf3@0.3.5: resolution: {integrity: sha512-1VozaVz0lVfGL3c2wZ4c6bmQCm340gDiIYUU3lcg8vVGL/WeuTdrd6OhJiUHZWofc7fFdquhS8Gm+13c3Tumcw==} - nf3@0.3.6: - resolution: {integrity: sha512-/XRUUILTAyuy1XunyVQuqGp8aEmZ2TfRTn8Rji+FA4xqv20qzL4jV7Reqbuey2XucKgPeRVcEYGScmJM0UnB6Q==} - - nitro-nightly@3.0.1-20260123-195236-c6b834cd: - resolution: {integrity: sha512-TjFlflqrAwl+jJcUwgXAq9qVSBRan3o6O4jR4SIt9J/8ipuoud8H+ERhvzUEZhunOJwjdbkp8B9X2Ik6cC1Yww==} + nitro-nightly@3.0.1-20260206-171553-bc737c0c: + resolution: {integrity: sha512-fqne2eTFStLkCODKJ2PWuN6mWv0HNL8mb0xYH/W14cNqbFPiwWQQPWPG9BWARfXm8q/QjN93kTyIYMwRgE5tag==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - rolldown: '>=1.0.0-beta.0' - rollup: ^4 + rollup: ^4.57.0 vite: ^7.3.1 xml2js: ^0.6.2 peerDependenciesMeta: - rolldown: - optional: true rollup: optional: true vite: @@ -22929,6 +23034,11 @@ packages: engines: {node: 20 || >=22} hasBin: true + rolldown@1.0.0-rc.3: + resolution: {integrity: sha512-Po/YZECDOqVXjIXrtC5h++a5NLvKAQNrd9ggrIG3sbDfGO5BqTUsrI6l8zdniKRp3r5Tp/2JTrXqx4GIguFCMw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup-plugin-preserve-directives@0.4.0: resolution: {integrity: sha512-gx4nBxYm5BysmEQS+e2tAMrtFxrGvk+Pe5ppafRibQi0zlW7VYAbEGk6IKDw9sJGPdFWgVTE0o4BU4cdG0Fylg==} peerDependencies: @@ -23627,6 +23737,7 @@ packages: tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me terser-webpack-plugin@5.3.11: resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} @@ -24069,10 +24180,6 @@ packages: unplugin@1.0.1: resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} - unplugin@2.3.10: - resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} - engines: {node: '>=18.12.0'} - unplugin@2.3.11: resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} @@ -24681,6 +24788,7 @@ packages: whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} @@ -26815,7 +26923,7 @@ snapshots: commander: 11.1.0 consola: 3.4.0 json5: 2.2.3 - unplugin: 2.3.10 + unplugin: 2.3.11 urlpattern-polyfill: 10.1.0 transitivePeerDependencies: - babel-plugin-macros @@ -27357,13 +27465,13 @@ snapshots: uuid: 11.1.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)': + '@netlify/dev@4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)': dependencies: '@netlify/blobs': 10.1.0 '@netlify/config': 23.2.0 '@netlify/dev-utils': 4.3.0 '@netlify/edge-functions-dev': 1.0.0 - '@netlify/functions-dev': 1.0.0(rollup@4.55.3) + '@netlify/functions-dev': 1.0.0(encoding@0.1.13)(rollup@4.55.3) '@netlify/headers': 2.1.0 '@netlify/images': 1.3.0(@netlify/blobs@10.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2) '@netlify/redirects': 3.1.0 @@ -27431,12 +27539,12 @@ snapshots: dependencies: '@netlify/types': 2.1.0 - '@netlify/functions-dev@1.0.0(rollup@4.55.3)': + '@netlify/functions-dev@1.0.0(encoding@0.1.13)(rollup@4.55.3)': dependencies: '@netlify/blobs': 10.1.0 '@netlify/dev-utils': 4.3.0 '@netlify/functions': 5.0.0 - '@netlify/zip-it-and-ship-it': 14.1.11(rollup@4.55.3) + '@netlify/zip-it-and-ship-it': 14.1.11(encoding@0.1.13)(rollup@4.55.3) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -27526,9 +27634,9 @@ snapshots: '@netlify/types@2.1.0': {} - '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': + '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) optionalDependencies: '@tanstack/solid-start': link:packages/solid-start @@ -27556,9 +27664,9 @@ snapshots: - supports-color - uploadthing - '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': + '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@netlify/dev': 4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3) + '@netlify/dev': 4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3) '@netlify/dev-utils': 4.3.0 dedent: 1.7.0(babel-plugin-macros@3.1.0) vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) @@ -27586,13 +27694,13 @@ snapshots: - supports-color - uploadthing - '@netlify/zip-it-and-ship-it@14.1.11(rollup@4.55.3)': + '@netlify/zip-it-and-ship-it@14.1.11(encoding@0.1.13)(rollup@4.55.3)': dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.4 '@netlify/binary-info': 1.0.0 '@netlify/serverless-functions-api': 2.7.1 - '@vercel/nft': 0.29.4(rollup@4.55.3) + '@vercel/nft': 0.29.4(encoding@0.1.13)(rollup@4.55.3) archiver: 7.0.1 common-path-prefix: 3.0.0 copy-file: 11.1.0 @@ -27763,6 +27871,8 @@ snapshots: '@oxc-minify/binding-win32-x64-msvc@0.110.0': optional: true + '@oxc-project/types@0.112.0': {} + '@oxc-transform/binding-android-arm-eabi@0.110.0': optional: true @@ -28880,6 +28990,47 @@ snapshots: '@remix-run/node-fetch-server@0.8.1': {} + '@rolldown/binding-android-arm64@1.0.0-rc.3': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.3': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.3': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.3': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.3': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.3': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.3': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.3': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.3': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.3': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.3': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.3': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.3': + optional: true + '@rolldown/pluginutils@1.0.0-beta.19': {} '@rolldown/pluginutils@1.0.0-beta.27': {} @@ -28894,6 +29045,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.54': {} + '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rollup/plugin-alias@6.0.0(rollup@4.55.3)': optionalDependencies: rollup: 4.55.3 @@ -29220,7 +29373,7 @@ snapshots: '@module-federation/runtime-tools': 0.8.4 '@rspack/binding': 1.2.2 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001696 + caniuse-lite: 1.0.30001760 optionalDependencies: '@swc/helpers': 0.5.15 @@ -30797,7 +30950,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vercel/nft@0.29.4(rollup@4.55.3)': + '@vercel/nft@0.29.4(encoding@0.1.13)(rollup@4.55.3)': dependencies: '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) '@rollup/pluginutils': 5.1.4(rollup@4.55.3) @@ -31522,10 +31675,6 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-jsx@5.3.2(acorn@8.14.1): - dependencies: - acorn: 8.14.1 - acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -32472,10 +32621,9 @@ snapshots: optionalDependencies: srvx: 0.10.1 - crossws@0.4.3(srvx@0.11.2): + crossws@0.4.4(srvx@0.11.2): optionalDependencies: srvx: 0.11.2 - optional: true css-loader@7.1.2(@rspack/core@1.2.2(@swc/helpers@0.5.15))(webpack@5.97.1): dependencies: @@ -33439,8 +33587,8 @@ snapshots: espree@10.3.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 espree@10.4.0: @@ -34016,12 +34164,12 @@ snapshots: optionalDependencies: crossws: 0.4.3(srvx@0.10.1) - h3@2.0.1-rc.14(crossws@0.4.3(srvx@0.11.2)): + h3@2.0.1-rc.14(crossws@0.4.4(srvx@0.11.2)): dependencies: rou3: 0.7.12 srvx: 0.11.2 optionalDependencies: - crossws: 0.4.3(srvx@0.11.2) + crossws: 0.4.4(srvx@0.11.2) handle-thing@2.0.1: {} @@ -35369,24 +35517,22 @@ snapshots: netlify-redirector@0.5.0: {} - nf3@0.3.5: {} + nf3@0.3.10: {} - nf3@0.3.6: {} + nf3@0.3.5: {} - nitro-nightly@3.0.1-20260123-195236-c6b834cd(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)): + nitro-nightly@3.0.1-20260206-171553-bc737c0c(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)): dependencies: consola: 3.4.2 - crossws: 0.4.3(srvx@0.10.1) + crossws: 0.4.4(srvx@0.11.2) db0: 0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3) - h3: 2.0.1-rc.11(crossws@0.4.3(srvx@0.10.1)) + h3: 2.0.1-rc.14(crossws@0.4.4(srvx@0.11.2)) jiti: 2.6.1 - nf3: 0.3.6 + nf3: 0.3.10 ofetch: 2.0.0-alpha.3 ohash: 2.0.11 - oxc-minify: 0.110.0 - oxc-transform: 0.110.0 - srvx: 0.10.1 - undici: 7.18.2 + rolldown: 1.0.0-rc.3 + srvx: 0.11.2 unenv: 2.0.0-rc.24 unstorage: 2.0.0-alpha.5(@netlify/blobs@10.1.0)(chokidar@5.0.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(lru-cache@11.2.2)(ofetch@2.0.0-alpha.3) optionalDependencies: @@ -35421,7 +35567,7 @@ snapshots: - sqlite3 - uploadthing - nitro@3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)): + nitro@3.0.1-alpha.2(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(chokidar@5.0.0)(ioredis@5.9.2)(lru-cache@11.2.2)(mysql2@3.15.3)(rolldown@1.0.0-rc.3)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)): dependencies: consola: 3.4.2 crossws: 0.4.3(srvx@0.10.1) @@ -35438,6 +35584,7 @@ snapshots: unenv: 2.0.0-rc.24 unstorage: 2.0.0-alpha.5(@netlify/blobs@10.1.0)(chokidar@5.0.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(lru-cache@11.2.2)(ofetch@2.0.0-alpha.3) optionalDependencies: + rolldown: 1.0.0-rc.3 rollup: 4.55.3 vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) transitivePeerDependencies: @@ -35469,7 +35616,7 @@ snapshots: - sqlite3 - uploadthing - nitropack@2.13.1(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(encoding@0.1.13)(mysql2@3.15.3): + nitropack@2.13.1(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(@netlify/blobs@10.1.0)(encoding@0.1.13)(mysql2@3.15.3)(rolldown@1.0.0-rc.3): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 '@rollup/plugin-alias': 6.0.0(rollup@4.55.3) @@ -35522,7 +35669,7 @@ snapshots: pretty-bytes: 7.1.0 radix3: 1.1.2 rollup: 4.55.3 - rollup-plugin-visualizer: 6.0.5(rollup@4.55.3) + rollup-plugin-visualizer: 6.0.5(rolldown@1.0.0-rc.3)(rollup@4.55.3) scule: 1.3.0 semver: 7.7.3 serve-placeholder: 2.0.2 @@ -36686,19 +36833,39 @@ snapshots: glob: 13.0.0 package-json-from-dist: 1.0.1 + rolldown@1.0.0-rc.3: + dependencies: + '@oxc-project/types': 0.112.0 + '@rolldown/pluginutils': 1.0.0-rc.3 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.3 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.3 + '@rolldown/binding-darwin-x64': 1.0.0-rc.3 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.3 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.3 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.3 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.3 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.3 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.3 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.3 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.3 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.3 + rollup-plugin-preserve-directives@0.4.0(rollup@4.55.3): dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.55.3) magic-string: 0.30.21 rollup: 4.55.3 - rollup-plugin-visualizer@6.0.5(rollup@4.55.3): + rollup-plugin-visualizer@6.0.5(rolldown@1.0.0-rc.3)(rollup@4.55.3): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: + rolldown: 1.0.0-rc.3 rollup: 4.55.3 rollup@4.52.5: @@ -37909,18 +38076,11 @@ snapshots: unplugin@1.0.1: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 - unplugin@2.3.10: - dependencies: - '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 - picomatch: 4.0.3 - webpack-virtual-modules: 0.6.2 - unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 From 0f73fe3eb9b68648d248b1ae295b2e30f461c16b Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 8 Feb 2026 17:04:14 +0000 Subject: [PATCH 002/102] Implement rsbuild Start plugin parity Co-authored-by: Zack Jackson --- e2e/react-start/basic/package.json | 14 +- e2e/react-start/basic/rsbuild.config.ts | 60 ++ e2e/react-start/basic/scripts/run-bundler.mjs | 38 ++ e2e/react-start/basic/src/routeTree.gen.ts | 7 +- packages/router-core/src/router.ts | 6 +- .../src/client-rpc/serverFnFetcher.ts | 56 +- .../src/dev-server-plugin/plugin.ts | 2 +- .../rsbuild/injected-head-scripts-plugin.ts | 3 +- .../start-plugin-core/src/rsbuild/plugin.ts | 221 ++++++- .../src/rsbuild/route-tree-loader.ts | 9 +- .../src/rsbuild/route-tree-state.ts | 24 +- .../src/rsbuild/start-compiler-loader.ts | 73 ++- .../src/rsbuild/start-compiler-plugin.ts | 599 +++++++++++++++++- .../src/rsbuild/start-manifest-plugin.ts | 150 ++++- .../src/rsbuild/start-router-plugin.ts | 2 +- .../src/rsbuild/start-storage-context-stub.ts | 12 + .../src/start-compiler-plugin/compiler.ts | 2 +- .../handleCreateServerFn.ts | 76 ++- .../src/start-compiler-plugin/plugin.ts | 3 - .../src/start-compiler-plugin/types.ts | 6 + .../createServerFn/createServerFn.test.ts | 6 + .../createServerFnDestructured.tsx | 3 + .../createServerFnDestructuredRename.tsx | 3 + .../createServerFnStarImport.tsx | 3 + .../server-caller/createServerFnValidator.tsx | 3 + .../snapshots/server-caller/factory.tsx | 3 + .../server-caller/isomorphic-fns.tsx | 3 + packages/start-plugin-core/vite.config.ts | 1 + .../start-server-core/src/router-manifest.ts | 4 +- .../src/server-functions-handler.ts | 79 ++- .../start-server-core/src/tanstack-start.d.ts | 4 +- .../start-server-core/src/virtual-modules.ts | 4 +- pnpm-lock.yaml | 30 +- 33 files changed, 1388 insertions(+), 121 deletions(-) create mode 100644 e2e/react-start/basic/rsbuild.config.ts create mode 100644 e2e/react-start/basic/scripts/run-bundler.mjs create mode 100644 packages/start-plugin-core/src/rsbuild/start-storage-context-stub.ts diff --git a/e2e/react-start/basic/package.json b/e2e/react-start/basic/package.json index 883627bb4f7..2e4d63558e2 100644 --- a/e2e/react-start/basic/package.json +++ b/e2e/react-start/basic/package.json @@ -4,12 +4,12 @@ "sideEffects": false, "type": "module", "scripts": { - "dev": "vite dev --port 3000", - "dev:e2e": "vite dev", - "build": "vite build && tsc --noEmit", - "build:spa": "MODE=spa vite build && tsc --noEmit", - "build:prerender": "MODE=prerender vite build && tsc --noEmit", - "preview": "vite preview", + "dev": "node scripts/run-bundler.mjs dev --port 3000", + "dev:e2e": "node scripts/run-bundler.mjs dev", + "build": "node scripts/run-bundler.mjs build", + "build:spa": "MODE=spa node scripts/run-bundler.mjs build", + "build:prerender": "MODE=prerender node scripts/run-bundler.mjs build", + "preview": "node scripts/run-bundler.mjs preview", "start": "node server.js", "test:e2e:startDummyServer": "node -e 'import(\"./tests/setup/global.setup.ts\").then(m => m.default())' &", "test:e2e:stopDummyServer": "node -e 'import(\"./tests/setup/global.teardown.ts\").then(m => m.default())'", @@ -33,6 +33,8 @@ }, "devDependencies": { "@playwright/test": "^1.50.1", + "@rsbuild/core": "^1.2.4", + "@rsbuild/plugin-react": "^1.1.0", "@tailwindcss/vite": "^4.1.18", "@tanstack/router-e2e-utils": "workspace:^", "@types/js-cookie": "^3.0.6", diff --git a/e2e/react-start/basic/rsbuild.config.ts b/e2e/react-start/basic/rsbuild.config.ts new file mode 100644 index 00000000000..dd173dfd7dd --- /dev/null +++ b/e2e/react-start/basic/rsbuild.config.ts @@ -0,0 +1,60 @@ +import { defineConfig } from '@rsbuild/core' +import { pluginReact } from '@rsbuild/plugin-react' +import path from 'node:path' +import { fileURLToPath } from 'node:url' +import { tanstackStart } from '@tanstack/react-start/plugin/rsbuild' +import { isSpaMode } from './tests/utils/isSpaMode' +import { isPrerender } from './tests/utils/isPrerender' + +const currentDir = path.dirname(fileURLToPath(import.meta.url)) + +const spaModeConfiguration = { + enabled: true, + prerender: { + outputPath: 'index.html', + }, +} + +const prerenderConfiguration = { + enabled: true, + filter: (page: { path: string }) => + ![ + '/this-route-does-not-exist', + '/redirect', + '/i-do-not-exist', + '/not-found/via-beforeLoad', + '/not-found/via-loader', + '/specialChars/search', + '/specialChars/hash', + '/specialChars/malformed', + '/users', + ].some((p) => page.path.includes(p)), + maxRedirects: 100, +} + +export default defineConfig({ + plugins: [ + pluginReact(), + ...tanstackStart({ + spa: isSpaMode ? spaModeConfiguration : undefined, + prerender: isPrerender ? prerenderConfiguration : undefined, + }), + ], + tools: { + rspack: { + module: { + rules: [ + { + resourceQuery: /url/, + type: 'asset/resource', + }, + ], + }, + }, + }, + source: { + alias: { + '~': path.resolve(currentDir, 'src'), + }, + }, +}) diff --git a/e2e/react-start/basic/scripts/run-bundler.mjs b/e2e/react-start/basic/scripts/run-bundler.mjs new file mode 100644 index 00000000000..a7971a27f69 --- /dev/null +++ b/e2e/react-start/basic/scripts/run-bundler.mjs @@ -0,0 +1,38 @@ +import { spawn } from 'node:child_process' + +const command = process.argv[2] +const args = process.argv.slice(3) + +if (!command) { + console.error('Missing bundler command') + process.exit(1) +} + +const bundler = process.env.BUNDLER === 'rsbuild' ? 'rsbuild' : 'vite' + +const run = (cmd, cmdArgs) => + new Promise((resolve, reject) => { + const child = spawn(cmd, cmdArgs, { + stdio: 'inherit', + env: process.env, + shell: process.platform === 'win32', + }) + child.on('close', (code) => { + if (code === 0) { + resolve() + } else { + reject(new Error(`${cmd} exited with code ${code}`)) + } + }) + }) + +try { + await run(bundler, [command, ...args]) + + if (command === 'build') { + await run('tsc', ['--noEmit']) + } +} catch (error) { + console.error(error) + process.exit(1) +} diff --git a/e2e/react-start/basic/src/routeTree.gen.ts b/e2e/react-start/basic/src/routeTree.gen.ts index b5ecc4a50ff..48eaf8d7ca5 100644 --- a/e2e/react-start/basic/src/routeTree.gen.ts +++ b/e2e/react-start/basic/src/routeTree.gen.ts @@ -1,9 +1,3 @@ -/* eslint-disable */ - -// @ts-nocheck - -// noinspection JSUnusedGlobalSymbols - // This file was automatically generated by TanStack Router. // You should NOT make any changes in this file as it will be overwritten. // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. @@ -1365,6 +1359,7 @@ export const routeTree = rootRouteImport ._addFileChildren(rootRouteChildren) ._addFileTypes() + import type { getRouter } from './router.tsx' import type { createStart } from '@tanstack/react-start' declare module '@tanstack/react-start' { diff --git a/packages/router-core/src/router.ts b/packages/router-core/src/router.ts index d677f5530ea..6e6a8297d88 100644 --- a/packages/router-core/src/router.ts +++ b/packages/router-core/src/router.ts @@ -2048,7 +2048,7 @@ export class RouterCore< * Commit a previously built location to history (push/replace), optionally * using view transitions and scroll restoration options. */ - commitLocation: CommitLocationFn = async ({ + commitLocation: CommitLocationFn = ({ viewTransition, ignoreBlocker, ...next @@ -2379,7 +2379,7 @@ export class RouterCore< onReady: async () => { // Wrap batch in framework-specific transition wrapper (e.g., Solid's startTransition) this.startTransition(() => { - this.startViewTransition(async () => { + this.startViewTransition(() => { // this.viewTransitionPromise = createControlledPromise() // Commit the pending matches. If a previous match was @@ -2442,6 +2442,8 @@ export class RouterCore< ) }) }) + + return Promise.resolve() }) }) }, diff --git a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts index 7d543b1df07..fc7133b3bcf 100644 --- a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts +++ b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts @@ -3,6 +3,7 @@ import { encode, isNotFound, parseRedirect, + redirect, } from '@tanstack/router-core' import { fromCrossJSON, toJSONAsync } from 'seroval' import invariant from 'tiny-invariant' @@ -33,6 +34,44 @@ function hasOwnProperties(obj: object): boolean { } return false } + +function isResponseLike(value: unknown): value is Response { + if (value instanceof Response) { + return true + } + if (value === null || typeof value !== 'object') { + return false + } + if (!('status' in value) || !('headers' in value)) { + return false + } + const headers = (value as { headers?: { get?: unknown } }).headers + return typeof headers?.get === 'function' +} + +function parseRedirectFallback(payload: unknown) { + if (!payload || typeof payload !== 'object') { + return undefined + } + const candidate = payload as { + statusCode?: unknown + code?: unknown + to?: unknown + href?: unknown + } + const statusCode = + typeof candidate.statusCode === 'number' + ? candidate.statusCode + : typeof candidate.code === 'number' + ? candidate.code + : undefined + const hasLocation = + typeof candidate.to === 'string' || typeof candidate.href === 'string' + if (statusCode === undefined || !hasLocation) { + return undefined + } + return redirect(candidate as any) +} // caller => // serverFnFetcher => // client => @@ -172,7 +211,7 @@ async function getResponse(fn: () => Promise) { try { response = await fn() // client => server => fn => server => client } catch (error) { - if (error instanceof Response) { + if (isResponseLike(error)) { response = error } else { console.log(error) @@ -240,6 +279,14 @@ async function getResponse(fn: () => Promise) { } invariant(result, 'expected result to be resolved') + const serializedRedirect = + parseRedirect(result) ?? parseRedirectFallback(result) + if (serializedRedirect) { + throw serializedRedirect + } + if (isNotFound(result)) { + throw result + } if (result instanceof Error) { throw result } @@ -251,9 +298,10 @@ async function getResponse(fn: () => Promise) { // if it's JSON if (contentType.includes('application/json')) { const jsonPayload = await response.json() - const redirect = parseRedirect(jsonPayload) - if (redirect) { - throw redirect + const redirectResult = + parseRedirect(jsonPayload) ?? parseRedirectFallback(jsonPayload) + if (redirectResult) { + throw redirectResult } if (isNotFound(jsonPayload)) { throw jsonPayload diff --git a/packages/start-plugin-core/src/dev-server-plugin/plugin.ts b/packages/start-plugin-core/src/dev-server-plugin/plugin.ts index 533e4f634a2..9a72472da79 100644 --- a/packages/start-plugin-core/src/dev-server-plugin/plugin.ts +++ b/packages/start-plugin-core/src/dev-server-plugin/plugin.ts @@ -181,7 +181,7 @@ export function devServerPlugin({ console.error(e) try { viteDevServer.ssrFixStacktrace(e as Error) - } catch (_e) {} + } catch {} if ( webReq.headers.get('content-type')?.includes('application/json') diff --git a/packages/start-plugin-core/src/rsbuild/injected-head-scripts-plugin.ts b/packages/start-plugin-core/src/rsbuild/injected-head-scripts-plugin.ts index 576882600ce..777f171edb1 100644 --- a/packages/start-plugin-core/src/rsbuild/injected-head-scripts-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/injected-head-scripts-plugin.ts @@ -2,7 +2,7 @@ import { createRspackPlugin } from 'unplugin' import { VIRTUAL_MODULES } from '@tanstack/start-server-core' export function createInjectedHeadScriptsPlugin() { - return createRspackPlugin(() => ({ + const pluginFactory = createRspackPlugin(() => ({ name: 'tanstack-start:injected-head-scripts', resolveId(id) { if (id === VIRTUAL_MODULES.injectedHeadScripts) { @@ -15,4 +15,5 @@ export function createInjectedHeadScriptsPlugin() { return `export const injectedHeadScripts = undefined` }, })) + return pluginFactory() } diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts index ef151dae44f..79ab11ed90a 100644 --- a/packages/start-plugin-core/src/rsbuild/plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -9,14 +9,17 @@ import { ENTRY_POINTS, VITE_ENVIRONMENT_NAMES } from '../constants' import { resolveEntry } from '../resolve-entries' import { parseStartConfig } from '../schema' import { createInjectedHeadScriptsPlugin } from './injected-head-scripts-plugin' -import { createServerFnResolverPlugin } from './start-compiler-plugin' +import { + SERVER_FN_MANIFEST_TEMP_FILE, + createServerFnManifestRspackPlugin, + createServerFnResolverPlugin, +} from './start-compiler-plugin' import { createStartManifestRspackPlugin, createStartManifestVirtualModulePlugin, } from './start-manifest-plugin' import { postServerBuildRsbuild } from './post-server-build' import { tanStackStartRouterRsbuild } from './start-router-plugin' -import type { ViteEnvironmentNames } from '../constants' import type { TanStackStartInputConfig } from '../schema' import type { GetConfigFn, @@ -38,6 +41,52 @@ function isFullUrl(str: string): boolean { } } +function buildRouteTreeModuleDeclaration(opts: { + generatedRouteTreePath: string + routerFilePath: string + startFilePath?: string + framework: string +}) { + const getImportPath = (absolutePath: string) => { + let relativePath = path.relative( + path.dirname(opts.generatedRouteTreePath), + absolutePath, + ) + if (!relativePath.startsWith('.')) { + relativePath = `./${relativePath}` + } + return relativePath.split(path.sep).join('/') + } + + const result: Array = [ + `import type { getRouter } from '${getImportPath(opts.routerFilePath)}'`, + ] + if (opts.startFilePath) { + result.push( + `import type { startInstance } from '${getImportPath(opts.startFilePath)}'`, + ) + } else { + result.push( + `import type { createStart } from '@tanstack/${opts.framework}-start'`, + ) + } + result.push( + `declare module '@tanstack/${opts.framework}-start' { + interface Register { + ssr: true + router: Awaited>`, + ) + if (opts.startFilePath) { + result.push( + ` config: Awaited>`, + ) + } + result.push(` } +}`) + + return result.join('\n') +} + function defineReplaceEnv( key: TKey, value: TValue, @@ -104,7 +153,7 @@ function mergeEnvConfig(base: any, next: any) { function getOutputDirectory( root: string, config: any, - environmentName: ViteEnvironmentNames, + environmentName: string, directoryName: string, ) { const envDistPath = @@ -166,6 +215,8 @@ export function TanStackStartRsbuildPluginCore( let resolvedServerEntryPath: string | undefined let resolvedServerOutputDir: string | undefined let resolvedClientOutputDir: string | undefined + let routeTreeModuleDeclaration: string | null = null + let routeTreeGeneratedPath: string | null = null return [ { @@ -253,6 +304,8 @@ export function TanStackStartRsbuildPluginCore( startFilePath ?? corePluginOpts.defaultEntryPaths.start, [ENTRY_POINTS.router]: routerFilePath, } + const resolvedClientEntry = entryAliasConfiguration[ENTRY_POINTS.client] + const resolvedServerEntry = entryAliasConfiguration[ENTRY_POINTS.server] const clientOutputDir = getOutputDirectory( root, @@ -268,8 +321,16 @@ export function TanStackStartRsbuildPluginCore( 'server', ) resolvedServerOutputDir = serverOutputDir + const serverFnManifestTempPath = path.join( + serverOutputDir, + SERVER_FN_MANIFEST_TEMP_FILE, + ) const isDev = api.context?.command === 'serve' + const defineViteEnv = (key: string, fallback = '') => { + const value = process.env[key] ?? fallback + return defineReplaceEnv(key, value) + } const defineValues = { ...defineReplaceEnv('TSS_SERVER_FN_BASE', TSS_SERVER_FN_BASE), ...defineReplaceEnv('TSS_CLIENT_OUTPUT_DIR', clientOutputDir), @@ -277,6 +338,7 @@ export function TanStackStartRsbuildPluginCore( 'TSS_ROUTER_BASEPATH', startConfig.router.basepath, ), + ...defineReplaceEnv('TSS_BUNDLER', 'rsbuild'), ...defineReplaceEnv('TSS_DEV_SERVER', isDev ? 'true' : 'false'), ...(isDev ? defineReplaceEnv( @@ -284,6 +346,8 @@ export function TanStackStartRsbuildPluginCore( startConfig.spa?.enabled ? 'true' : 'false', ) : {}), + ...defineViteEnv('VITE_NODE_ENV', 'production'), + ...defineViteEnv('VITE_EXTERNAL_PORT', ''), } const routerPlugins = tanStackStartRouterRsbuild( @@ -291,14 +355,63 @@ export function TanStackStartRsbuildPluginCore( getConfig, corePluginOpts, ) + const clientRouterConfig = { + ...startConfig.router, + routeTreeFileHeader: [], + routeTreeFileFooter: [], + plugins: [], + } + const generatedRouteTreePath = routerPlugins.getGeneratedRouteTreePath() + const routeTreeModuleDeclarationValue = buildRouteTreeModuleDeclaration({ + generatedRouteTreePath, + routerFilePath: resolvedStartConfig.routerFilePath, + startFilePath: resolvedStartConfig.startFilePath, + framework: corePluginOpts.framework, + }) + routeTreeModuleDeclaration = routeTreeModuleDeclarationValue + routeTreeGeneratedPath = generatedRouteTreePath + const registerDeclaration = `declare module '@tanstack/${corePluginOpts.framework}-start'` + if (fs.existsSync(generatedRouteTreePath)) { + const existingTree = fs.readFileSync( + generatedRouteTreePath, + 'utf-8', + ) + if (!existingTree.includes(registerDeclaration)) { + fs.rmSync(generatedRouteTreePath) + } + } const startCompilerLoaderPath = resolveLoaderPath( './start-compiler-loader', ) + const startStorageContextStubPath = resolveLoaderPath( + './start-storage-context-stub', + ) + const clientAliasOverrides = { + '@tanstack/start-storage-context': startStorageContextStubPath, + } + + const startClientCoreDistPath = path.resolve( + root, + 'packages/start-client-core/dist/esm', + ) + const startClientCoreDistPattern = + /[\\/]start-client-core[\\/]dist[\\/]esm[\\/]/ + const loaderIncludePaths: Array = [ + resolvedStartConfig.srcDirectory, + ] + if (fs.existsSync(startClientCoreDistPath)) { + loaderIncludePaths.push(startClientCoreDistPath) + } + loaderIncludePaths.push(startClientCoreDistPattern) - const loaderRule = (env: 'client' | 'server', envName: string) => ({ + const loaderRule = ( + env: 'client' | 'server', + envName: string, + manifestPath?: string, + ) => ({ test: /\.[cm]?[jt]sx?$/, - exclude: /node_modules/, + include: loaderIncludePaths, enforce: 'pre', use: [ { @@ -310,6 +423,7 @@ export function TanStackStartRsbuildPluginCore( framework: corePluginOpts.framework, providerEnvName: serverFnProviderEnv, generateFunctionId: startPluginOpts?.serverFns?.generateFunctionId, + manifestPath, }, }, ], @@ -319,8 +433,11 @@ export function TanStackStartRsbuildPluginCore( const clientEnvConfig = { source: { - entry: { index: ENTRY_POINTS.client }, - alias: entryAliasConfiguration, + entry: { index: resolvedClientEntry }, + alias: { + ...entryAliasConfiguration, + ...clientAliasOverrides, + }, define: defineValues, }, output: { @@ -345,12 +462,23 @@ export function TanStackStartRsbuildPluginCore( loaderRule('client', VITE_ENVIRONMENT_NAMES.client), { include: [routerPlugins.getGeneratedRouteTreePath()], - use: [{ loader: routerPlugins.routeTreeLoaderPath }], + use: [ + { + loader: routerPlugins.routeTreeLoaderPath, + options: { + routerConfig: clientRouterConfig, + root, + }, + }, + ], }, ], }, resolve: { - alias: entryAliasConfiguration, + alias: { + ...entryAliasConfiguration, + ...clientAliasOverrides, + }, }, }, }, @@ -358,7 +486,7 @@ export function TanStackStartRsbuildPluginCore( const serverEnvConfig = { source: { - entry: { server: ENTRY_POINTS.server }, + entry: { server: resolvedServerEntry }, alias: entryAliasConfiguration, define: defineValues, }, @@ -370,6 +498,17 @@ export function TanStackStartRsbuildPluginCore( }, tools: { rspack: { + experiments: { + outputModule: true, + }, + output: { + module: true, + chunkFormat: 'module', + chunkLoading: 'import', + library: { + type: 'module', + }, + }, plugins: [ routerPlugins.generatorPlugin, routerPlugins.serverCodeSplitter, @@ -377,6 +516,10 @@ export function TanStackStartRsbuildPluginCore( createServerFnResolverPlugin({ environmentName: VITE_ENVIRONMENT_NAMES.server, providerEnvName: serverFnProviderEnv, + serverOutputDir, + }), + createServerFnManifestRspackPlugin({ + serverOutputDir, }), createInjectedHeadScriptsPlugin(), createStartManifestVirtualModulePlugin({ @@ -384,7 +527,13 @@ export function TanStackStartRsbuildPluginCore( }), ], module: { - rules: [loaderRule('server', VITE_ENVIRONMENT_NAMES.server)], + rules: [ + loaderRule( + 'server', + VITE_ENVIRONMENT_NAMES.server, + serverFnManifestTempPath, + ), + ], }, resolve: { alias: entryAliasConfiguration, @@ -461,31 +610,63 @@ export function TanStackStartRsbuildPluginCore( } if (!ssrIsProvider) { + const providerOutputDir = getOutputDirectory( + root, + config, + serverFnProviderEnv, + serverFnProviderEnv, + ) + const providerManifestTempPath = path.join( + providerOutputDir, + SERVER_FN_MANIFEST_TEMP_FILE, + ) nextConfig.environments = { ...nextConfig.environments, [serverFnProviderEnv]: mergeEnvConfig( config.environments?.[serverFnProviderEnv], { source: { - entry: { provider: ENTRY_POINTS.server }, + entry: { provider: resolvedServerEntry }, alias: entryAliasConfiguration, define: defineValues, }, output: { target: 'node', + distPath: { + root: path.relative(root, providerOutputDir), + }, }, tools: { rspack: { + experiments: { + outputModule: true, + }, + output: { + module: true, + chunkFormat: 'module', + chunkLoading: 'import', + library: { + type: 'module', + }, + }, plugins: [ createServerFnResolverPlugin({ environmentName: serverFnProviderEnv, providerEnvName: serverFnProviderEnv, + serverOutputDir: providerOutputDir, + }), + createServerFnManifestRspackPlugin({ + serverOutputDir: providerOutputDir, }), createInjectedHeadScriptsPlugin(), ], module: { rules: [ - loaderRule('server', serverFnProviderEnv), + loaderRule( + 'server', + serverFnProviderEnv, + providerManifestTempPath, + ), ], }, resolve: { @@ -556,6 +737,20 @@ export function TanStackStartRsbuildPluginCore( clientOutputDir, serverOutputDir, }) + if (routeTreeGeneratedPath && routeTreeModuleDeclaration) { + if (fs.existsSync(routeTreeGeneratedPath)) { + const existingTree = fs.readFileSync( + routeTreeGeneratedPath, + 'utf-8', + ) + if (!existingTree.includes(routeTreeModuleDeclaration)) { + fs.appendFileSync( + routeTreeGeneratedPath, + `\n\n${routeTreeModuleDeclaration}\n`, + ) + } + } + } }) }, }, diff --git a/packages/start-plugin-core/src/rsbuild/route-tree-loader.ts b/packages/start-plugin-core/src/rsbuild/route-tree-loader.ts index d37cae68ded..36ad41d2682 100644 --- a/packages/start-plugin-core/src/rsbuild/route-tree-loader.ts +++ b/packages/start-plugin-core/src/rsbuild/route-tree-loader.ts @@ -2,7 +2,14 @@ import { getClientRouteTreeContent } from './route-tree-state' export default function routeTreeLoader(this: any) { const callback = this.async() - getClientRouteTreeContent() + const options = this.getOptions() as { + routerConfig?: any + root?: string + } + getClientRouteTreeContent({ + routerConfig: options.routerConfig, + root: options.root, + }) .then((code) => callback(null, code)) .catch((error) => callback(error)) } diff --git a/packages/start-plugin-core/src/rsbuild/route-tree-state.ts b/packages/start-plugin-core/src/rsbuild/route-tree-state.ts index 5809b8d765c..18a09e5042e 100644 --- a/packages/start-plugin-core/src/rsbuild/route-tree-state.ts +++ b/packages/start-plugin-core/src/rsbuild/route-tree-state.ts @@ -1,5 +1,6 @@ +import { Generator } from '@tanstack/router-generator' import { pruneServerOnlySubtrees } from '../start-router-plugin/pruneServerOnlySubtrees' -import type { Generator } from '@tanstack/router-generator' +import type { Config } from '@tanstack/router-generator' let generatorInstance: Generator | null = null @@ -7,11 +8,22 @@ export function setGeneratorInstance(generator: Generator) { generatorInstance = generator } -export async function getClientRouteTreeContent() { - if (!generatorInstance) { - throw new Error('Generator instance not initialized for route tree loader') +export async function getClientRouteTreeContent(options?: { + routerConfig?: Config + root?: string +}) { + let generator = generatorInstance + if (!generator) { + if (!options?.routerConfig || !options.root) { + throw new Error('Generator instance not initialized for route tree loader') + } + generator = new Generator({ + config: options.routerConfig, + root: options.root, + }) + await generator.run() } - const crawlingResult = await generatorInstance.getCrawlingResult() + const crawlingResult = await generator.getCrawlingResult() if (!crawlingResult) { throw new Error('Crawling result not available') } @@ -20,7 +32,7 @@ export async function getClientRouteTreeContent() { ...crawlingResult.acc, ...prunedAcc, } - const buildResult = generatorInstance.buildRouteTree({ + const buildResult = generator.buildRouteTree({ ...crawlingResult, acc, config: { diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts index 76dc6e81d1f..f2c442755ec 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts @@ -1,4 +1,5 @@ -import { promises as fsp } from 'node:fs' +import fs, { promises as fsp } from 'node:fs' +import { createRequire } from 'node:module' import path from 'node:path' import { KindDetectionPatterns, @@ -21,17 +22,23 @@ type LoaderOptions = { framework: CompileStartFrameworkOptions providerEnvName: string generateFunctionId?: GenerateFunctionIdFnOptional + manifestPath?: string } const compilers = new Map() const serverFnsById: Record = {} +const require = createRequire(import.meta.url) +const appendServerFnsToManifest = ( + manifestPath: string, + data: Record, +) => { + if (!manifestPath || Object.keys(data).length === 0) return + fs.mkdirSync(path.dirname(manifestPath), { recursive: true }) + fs.appendFileSync(manifestPath, `${JSON.stringify(data)}\n`) +} export const getServerFnsById = () => serverFnsById -const onServerFnsById = (d: Record) => { - Object.assign(serverFnsById, d) -} - // Derive transform code filter from KindDetectionPatterns (single source of truth) function getTransformCodeFilterForEnv(env: 'client' | 'server'): Array { const validKinds = LookupKindsPerEnv[env] @@ -112,17 +119,36 @@ async function resolveId( const baseContext = importer ? path.dirname(cleanId(importer)) : loaderContext.context + const resolveContext = + source.startsWith('.') || source.startsWith('/') + ? baseContext + : loaderContext.rootContext || baseContext return new Promise((resolve) => { - loaderContext.resolve( - baseContext, + const resolver = + loaderContext.getResolve?.({ + conditionNames: ['import', 'module', 'default'], + }) ?? loaderContext.resolve + + resolver( + resolveContext, source, (err: Error | null, result?: string) => { - if (err || !result) { - resolve(null) - return - } - resolve(cleanId(result)) + if (!err && result) { + resolve(cleanId(result)) + return + } + try { + const resolved = require.resolve(source, { + paths: [ + baseContext, + loaderContext.rootContext || loaderContext.context, + ].filter(Boolean), + }) + resolve(cleanId(resolved)) + } catch { + resolve(null) + } }, ) }) @@ -162,8 +188,10 @@ export default function startCompilerLoader( const root = options.root || process.cwd() const framework = options.framework const providerEnvName = options.providerEnvName + const manifestPath = options.manifestPath - if (!shouldTransformCode(code, env)) { + const shouldTransform = shouldTransformCode(code, env) + if (!shouldTransform) { callback(null, code, map) return } @@ -174,6 +202,14 @@ export default function startCompilerLoader( this.mode === 'production' || this._compiler?.options?.mode === 'production' ? 'build' : 'dev' + const shouldPersistManifest = Boolean(manifestPath) && mode === 'build' + const onServerFnsById = (d: Record) => { + Object.assign(serverFnsById, d) + if (shouldPersistManifest && manifestPath) { + appendServerFnsToManifest(manifestPath, d) + } + } + compiler = new StartCompiler({ env, envName, @@ -194,10 +230,17 @@ export default function startCompilerLoader( } const detectedKinds = detectKindsInCode(code, env) - + const resourceQuery = + typeof this.resourceQuery === 'string' ? this.resourceQuery : '' + const baseResource = + typeof this.resource === 'string' ? this.resource : this.resourcePath + const resourceId = + resourceQuery && !baseResource.includes(resourceQuery) + ? `${baseResource}${resourceQuery}` + : baseResource compiler .compile({ - id: cleanId(this.resourcePath), + id: resourceId, code, detectedKinds, }) diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts index a4b5aa43907..20d773acb06 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts @@ -1,9 +1,76 @@ +import { promises as fsp } from 'node:fs' +import path from 'node:path' import { createRspackPlugin } from 'unplugin' import { VIRTUAL_MODULES } from '@tanstack/start-server-core' import { VITE_ENVIRONMENT_NAMES } from '../constants' import { getServerFnsById } from './start-compiler-loader' import type { ServerFn } from '../start-compiler-plugin/types' +const SERVER_FN_MANIFEST_FILE = 'tanstack-start-server-fn-manifest.json' +export const SERVER_FN_MANIFEST_TEMP_FILE = + 'tanstack-start-server-fn-manifest.temp.jsonl' + +const readTempManifest = async (manifestPath: string) => { + try { + const raw = await fsp.readFile(manifestPath, 'utf-8') + return raw + .split('\n') + .filter(Boolean) + .reduce>((acc, line) => { + try { + const parsed = JSON.parse(line) as Record + Object.assign(acc, parsed) + } catch { + return acc + } + return acc + }, {}) + } catch { + return {} + } +} + +const normalizeIdentifier = (value: unknown) => + `${value ?? ''}`.replace(/\\/g, '/') + +const isJsFile = (file: unknown): file is string => + typeof file === 'string' && file.endsWith('.js') + +type CompilationModule = { + id?: string | number + [key: string]: any +} + +const getChunkFiles = (chunk: any) => { + const files = [ + ...Array.from(chunk?.files ?? []), + ...Array.from(chunk?.auxiliaryFiles ?? []), + ] + return files.filter((file) => typeof file === 'string') +} + +const getModuleIdentifiers = (module: any) => + [ + module.identifier, + module.name, + module.nameForCondition, + module.resource, + module.moduleIdentifier, + ] + .filter(Boolean) + .map((value) => normalizeIdentifier(value)) + +const getCompilationModuleIdentifiers = (module: any) => + [ + module.resource, + module.userRequest, + module.request, + typeof module.identifier === 'function' ? module.identifier() : module.identifier, + module.debugId, + ] + .filter(Boolean) + .map((value) => normalizeIdentifier(value)) + function generateManifestModule( serverFnsById: Record, includeClientReferencedCheck: boolean, @@ -48,11 +115,128 @@ ${clientReferencedCheck} throw new Error('Server function module not resolved for ' + id) } - const action = fnModule[serverFnInfo.functionName] + let action = fnModule[serverFnInfo.functionName] + if (action?.serverFnMeta?.id && action.serverFnMeta.id !== id) { + action = undefined + } + if (!action) { + const fallbackAction = Object.values(fnModule).find( + (candidate) => + candidate?.serverFnMeta?.id && + candidate.serverFnMeta.id === id, + ) + if (fallbackAction) { + action = fallbackAction + } + } + if (Array.isArray(globalThis.__tssServerFnHandlers)) { + const globalMatch = globalThis.__tssServerFnHandlers.find( + (candidate) => + candidate?.serverFnMeta?.id && + candidate.serverFnMeta.id === id, + ) + if (globalMatch && (!action || action.__executeServer)) { + action = globalMatch + } + } + + if (!action) { + console.info('serverFnInfo', serverFnInfo) + console.info('fnModule', fnModule) + + throw new Error( + \`Server function module export not resolved for serverFn ID: \${id}\`, + ) + } + return action + } + ` +} + +function generateManifestModuleFromFile( + manifestPath: string, + includeClientReferencedCheck: boolean, +): string { + const getServerFnByIdParams = includeClientReferencedCheck ? 'id, opts' : 'id' + const clientReferencedCheck = includeClientReferencedCheck + ? ` + if (opts?.fromClient && !serverFnInfo.isClientReferenced) { + throw new Error('Server function not accessible from client: ' + id) + } +` + : '' + + return ` + import fs from 'node:fs' + import { pathToFileURL } from 'node:url' + + let cached + const getManifest = () => { + if (cached) return cached + try { + const raw = fs.readFileSync(${JSON.stringify(manifestPath)}, 'utf-8') + cached = JSON.parse(raw) + return cached + } catch (error) { + cached = {} + return cached + } + } + + export async function getServerFnById(${getServerFnByIdParams}) { + const manifest = getManifest() + const serverFnInfo = manifest[id] + if (!serverFnInfo) { + throw new Error('Server function info not found for ' + id) + } +${clientReferencedCheck} + let fnModule + if (typeof __webpack_require__ === 'function' && serverFnInfo.importerModuleId != null) { + const chunkIds = Array.isArray(serverFnInfo.importerChunkIds) + ? serverFnInfo.importerChunkIds + : [] + if (chunkIds.length > 0 && typeof __webpack_require__.e === 'function') { + await Promise.all(chunkIds.map((chunkId) => __webpack_require__.e(chunkId))) + } + fnModule = __webpack_require__(serverFnInfo.importerModuleId) + } else { + const importerPath = serverFnInfo.importerPath ?? serverFnInfo.extractedFilename + fnModule = await import(/* webpackIgnore: true */ pathToFileURL(importerPath).href) + } + + if (!fnModule) { + console.info('serverFnInfo', serverFnInfo) + throw new Error('Server function module not resolved for ' + id) + } + + let action = fnModule[serverFnInfo.functionName] + if (action?.serverFnMeta?.id && action.serverFnMeta.id !== id) { + action = undefined + } + if (!action) { + const fallbackAction = Object.values(fnModule).find( + (candidate) => + candidate?.serverFnMeta?.id && + candidate.serverFnMeta.id === id, + ) + if (fallbackAction) { + action = fallbackAction + } + } + if (Array.isArray(globalThis.__tssServerFnHandlers)) { + const globalMatch = globalThis.__tssServerFnHandlers.find( + (candidate) => + candidate?.serverFnMeta?.id && + candidate.serverFnMeta.id === id, + ) + if (globalMatch && (!action || action.__executeServer)) { + action = globalMatch + } + } if (!action) { - console.info('serverFnInfo', serverFnInfo) - console.info('fnModule', fnModule) + console.info('serverFnInfo', serverFnInfo) + console.info('fnModule', fnModule) throw new Error( \`Server function module export not resolved for serverFn ID: \${id}\`, @@ -63,14 +247,399 @@ ${clientReferencedCheck} ` } +export function createServerFnManifestRspackPlugin(opts: { + serverOutputDir: string +}) { + const tempManifestPath = path.join( + opts.serverOutputDir, + SERVER_FN_MANIFEST_TEMP_FILE, + ) + + return { + apply(compiler: any) { + compiler.hooks.beforeRun.tapPromise( + 'tanstack-start:server-fn-manifest', + async () => { + await fsp.rm(tempManifestPath, { force: true }) + }, + ) + compiler.hooks.afterEmit.tapPromise( + 'tanstack-start:server-fn-manifest', + async (compilation: any) => { + const serverFnsById = getServerFnsById() + const fileServerFnsById = await readTempManifest(tempManifestPath) + const mergedServerFnsById = { + ...serverFnsById, + ...fileServerFnsById, + } + const stats = compilation?.getStats?.() + const statsJson = stats?.toJson?.({ + all: false, + assets: true, + chunks: true, + chunkModules: true, + moduleAssets: true, + modules: true, + }) + const chunks = statsJson?.chunks ?? [] + const chunksById = new Map( + chunks.map((chunk: any) => [chunk.id, getChunkFiles(chunk)]), + ) + const chunkModuleEntries = chunks.flatMap((chunk: any) => { + const chunkFiles = getChunkFiles(chunk) + const chunkModules = chunk.modules ?? [] + return chunkModules.flatMap((module: any) => + getModuleIdentifiers(module).map((identifier) => ({ + identifier, + files: chunkFiles, + })), + ) + }) + const modules = statsJson?.modules ?? [] + const compilationModules: Array = Array.from( + compilation?.modules ?? [], + ) + const chunkGraph = compilation?.chunkGraph + const moduleGraph = compilation?.moduleGraph + const compilationEntries = compilationModules.flatMap((module: any) => { + const identifiers = getCompilationModuleIdentifiers(module) + if (identifiers.length === 0) return [] + const chunkFiles = chunkGraph + ? Array.from(chunkGraph.getModuleChunksIterable(module) ?? []).flatMap( + (chunk: any) => getChunkFiles(chunk), + ) + : [] + return identifiers.map((identifier) => ({ + identifier, + files: chunkFiles, + })) + }) + const assetFiles = (statsJson?.assets ?? []) + .map((asset: any) => asset.name ?? asset) + .filter((name: string) => typeof name === 'string') + .filter((name: string) => name.endsWith('.js')) + const getAssetContent = async (assetName: string) => { + const assetFromCompilation = + (typeof compilation?.getAsset === 'function' + ? compilation.getAsset(assetName)?.source + : undefined) ?? + compilation?.assets?.[assetName] ?? + (typeof compilation?.assets?.get === 'function' + ? compilation.assets.get(assetName) + : undefined) + const sourceValue = + assetFromCompilation && typeof assetFromCompilation.source === 'function' + ? assetFromCompilation.source() + : assetFromCompilation + if (typeof sourceValue === 'string') return sourceValue + if (Buffer.isBuffer(sourceValue)) { + return sourceValue.toString('utf-8') + } + if (sourceValue && typeof sourceValue.toString === 'function') { + return sourceValue.toString() + } + try { + const assetPath = path.join(opts.serverOutputDir, assetName) + return await fsp.readFile(assetPath, 'utf-8') + } catch { + return undefined + } + } + const findAssetMatch = async (searchTokens: Array) => { + for (const assetName of assetFiles) { + const content = await getAssetContent(assetName) + if (!content) continue + if (searchTokens.some((token) => content.includes(token))) { + return assetName + } + } + return undefined + } + const manifestWithImporters: Record = {} + for (const [id, info] of Object.entries(mergedServerFnsById)) { + const normalizedExtracted = info.extractedFilename.replace(/\\/g, '/') + const normalizedFilename = info.filename.replace(/\\/g, '/') + const searchTokens = [ + normalizedExtracted, + normalizedFilename, + path.basename(normalizedExtracted), + path.basename(normalizedFilename), + id, + info.functionName, + ].filter(Boolean) + const matchedModuleByExtracted = modules.find((module: any) => + getModuleIdentifiers(module).some((identifier) => + identifier.includes(normalizedExtracted), + ), + ) + const matchedModuleByFilename = modules.find((module: any) => + getModuleIdentifiers(module).some((identifier) => + identifier.includes(normalizedFilename), + ), + ) + const matchedModule = matchedModuleByExtracted ?? matchedModuleByFilename + const chunkIds = matchedModule?.chunks ?? matchedModule?.chunkIds ?? [] + const statsModuleId = matchedModule?.id ?? matchedModule?.moduleId + const chunkFiles = chunkIds.flatMap((chunkId: any) => { + return chunksById.get(chunkId) ?? [] + }) + const moduleAssets = Array.isArray(matchedModule?.assets) + ? matchedModule.assets + : matchedModule?.assets + ? Object.keys(matchedModule.assets) + : [] + const matchedCompilationModuleByExtracted = compilationModules.find( + (module) => + getCompilationModuleIdentifiers(module).some((identifier) => + identifier.includes(normalizedExtracted), + ), + ) + const matchedCompilationModuleByFilename = compilationModules.find( + (module) => + getCompilationModuleIdentifiers(module).some((identifier) => + identifier.includes(normalizedFilename), + ), + ) + const matchedCompilationModule = + matchedCompilationModuleByExtracted ?? matchedCompilationModuleByFilename + const exportsInfo = matchedCompilationModule + ? moduleGraph?.getExportsInfo?.(matchedCompilationModule) + : null + const providedExports = + exportsInfo?.getProvidedExports?.() ?? + (Array.isArray(exportsInfo?.exports) + ? exportsInfo.exports + .map((exportInfo: any) => exportInfo.name) + .filter(Boolean) + : []) + const resolvedFunctionName = + Array.isArray(providedExports) && providedExports.length === 1 + ? providedExports[0] + : undefined + const compilationChunkIds = + matchedCompilationModule && chunkGraph + ? Array.from(chunkGraph.getModuleChunksIterable(matchedCompilationModule)) + .map((chunk: any) => chunk.id) + .filter((chunkId: any) => chunkId !== undefined && chunkId !== null) + : [] + const compilationModuleId = + matchedCompilationModule?.id ?? + (matchedCompilationModule && chunkGraph?.getModuleId + ? chunkGraph.getModuleId(matchedCompilationModule) + : undefined) + const compilationFiles = + compilationEntries.find((entry) => { + return entry.identifier.includes(normalizedExtracted) + })?.files ?? + compilationEntries.find((entry) => { + return entry.identifier.includes(normalizedFilename) + })?.files ?? + [] + const chunkModuleFiles = + chunkFiles.length > 0 + ? chunkFiles + : (chunkModuleEntries.find((entry: any) => { + return ( + entry.identifier.includes(normalizedExtracted) || + entry.identifier.includes(normalizedFilename) + ) + })?.files ?? []) + const jsFile = chunkFiles.find(isJsFile) + const fallbackJsFile = + jsFile ?? + chunkModuleFiles.find(isJsFile) ?? + compilationFiles.find(isJsFile) ?? + moduleAssets.find(isJsFile) + let importerPath = jsFile + ? path.join(opts.serverOutputDir, jsFile) + : fallbackJsFile + ? path.join(opts.serverOutputDir, fallbackJsFile) + : undefined + if (!importerPath) { + const assetMatch = await findAssetMatch(searchTokens) + importerPath = assetMatch + ? path.join(opts.serverOutputDir, assetMatch) + : undefined + } + + manifestWithImporters[id] = { + ...info, + functionName: resolvedFunctionName ?? info.functionName, + importerPath, + importerChunkIds: + chunkIds.length > 0 + ? chunkIds + : compilationChunkIds.length > 0 + ? compilationChunkIds + : undefined, + importerModuleId: statsModuleId ?? (compilationModuleId ?? undefined), + } + } + const extractExportName = ( + content: string, + moduleId: string | number, + functionId: string, + ) => { + const marker = `${moduleId}:function` + const startIndex = content.indexOf(marker) + const scope = + startIndex === -1 + ? content + : content.slice(startIndex, startIndex + 4000) + const idIndex = scope.indexOf(functionId) + if (idIndex === -1) return undefined + const beforeId = scope.slice(Math.max(0, idIndex - 300), idIndex) + const assignmentMatches = Array.from( + beforeId.matchAll(/([A-Za-z_$][\w$]*)=(?!>)/g), + ) + const handlerVar = + assignmentMatches[assignmentMatches.length - 1]?.[1] + if (!handlerVar) return undefined + const exportMatch = scope.match( + new RegExp(`([A-Za-z_$][\\\\w$]*):\\\\(\\\\)=>${handlerVar}`), + ) + return exportMatch?.[1] + } + const findExportName = async ( + moduleId: string | number, + functionId: string, + preferredAssetName?: string, + ) => { + if (preferredAssetName) { + const content = await getAssetContent(preferredAssetName) + const resolved = content + ? extractExportName(content, moduleId, functionId) + : undefined + if (resolved) return resolved + } + for (const assetName of assetFiles) { + if (assetName === preferredAssetName) continue + const content = await getAssetContent(assetName) + if (!content) continue + const resolved = extractExportName(content, moduleId, functionId) + if (resolved) return resolved + } + return undefined + } + const extractModuleIdFromContent = ( + content: string, + functionId: string, + ) => { + const idIndex = content.indexOf(functionId) + if (idIndex === -1) return undefined + const beforeId = content.slice(Math.max(0, idIndex - 1500), idIndex) + const matches = Array.from( + beforeId.matchAll( + /(?:^|[,{])\s*([0-9]+)\s*:\s*(?:function|\()/g, + ), + ) + const moduleId = matches[matches.length - 1]?.[1] + if (!moduleId) return undefined + return Number.isNaN(Number(moduleId)) ? moduleId : Number(moduleId) + } + const parseChunkIdFromAssetName = (assetName: string) => { + const base = path.basename(assetName, path.extname(assetName)) + if (!base) return undefined + return /^\d+$/.test(base) ? Number(base) : undefined + } + const findModuleIdByFunctionId = async ( + functionId: string, + preferredAssetName?: string, + ) => { + if (preferredAssetName) { + const content = await getAssetContent(preferredAssetName) + if (content) { + const moduleId = extractModuleIdFromContent(content, functionId) + if (moduleId !== undefined) { + return { + moduleId, + assetName: preferredAssetName, + } + } + } + } + for (const assetName of assetFiles) { + if (assetName === preferredAssetName) continue + const content = await getAssetContent(assetName) + if (!content) continue + const moduleId = extractModuleIdFromContent(content, functionId) + if (moduleId !== undefined) { + return { moduleId, assetName } + } + } + return undefined + } + for (const info of Object.values(manifestWithImporters)) { + const importerAssetName = info.importerPath + ? path + .relative(opts.serverOutputDir, info.importerPath) + .replace(/\\/g, '/') + : undefined + if (info.importerModuleId == null) { + const moduleMatch = await findModuleIdByFunctionId( + info.functionId, + importerAssetName, + ) + if (moduleMatch) { + info.importerModuleId = moduleMatch.moduleId + if (!info.importerPath) { + info.importerPath = path.join( + opts.serverOutputDir, + moduleMatch.assetName, + ) + } + if (!info.importerChunkIds) { + const chunkId = parseChunkIdFromAssetName( + moduleMatch.assetName, + ) + if (chunkId !== undefined) { + info.importerChunkIds = [chunkId] + } + } + } + } + if (info.importerModuleId == null) continue + const resolvedName = await findExportName( + info.importerModuleId, + info.functionId, + importerAssetName, + ) + if (resolvedName) { + info.functionName = resolvedName + } + } + const manifestPath = path.join( + opts.serverOutputDir, + SERVER_FN_MANIFEST_FILE, + ) + await fsp.mkdir(path.dirname(manifestPath), { recursive: true }) + await fsp.writeFile( + manifestPath, + JSON.stringify(manifestWithImporters), + 'utf-8', + ) + await fsp.rm(tempManifestPath, { force: true }) + }, + ) + }, + } +} + export function createServerFnResolverPlugin(opts: { environmentName: string providerEnvName: string + serverOutputDir?: string }) { const ssrIsProvider = opts.providerEnvName === VITE_ENVIRONMENT_NAMES.server const includeClientReferencedCheck = !ssrIsProvider + const manifestPath = opts.serverOutputDir + ? path.join(opts.serverOutputDir, SERVER_FN_MANIFEST_FILE) + : null + const tempManifestPath = opts.serverOutputDir + ? path.join(opts.serverOutputDir, SERVER_FN_MANIFEST_TEMP_FILE) + : null - return createRspackPlugin(() => ({ + const pluginFactory = createRspackPlugin(() => ({ name: `tanstack-start-core:server-fn-resolver:${opts.environmentName}`, resolveId(id) { if (id === VIRTUAL_MODULES.serverFnResolver) { @@ -78,13 +647,33 @@ export function createServerFnResolverPlugin(opts: { } return null }, - load(id) { + async load(id) { if (id !== VIRTUAL_MODULES.serverFnResolver) return null if (opts.environmentName !== opts.providerEnvName) { return `export { getServerFnById } from '@tanstack/start-server-core/server-fn-ssr-caller'` } const serverFnsById = getServerFnsById() + const fileServerFnsById = tempManifestPath + ? await readTempManifest(tempManifestPath) + : {} + const mergedServerFnsById = { + ...serverFnsById, + ...fileServerFnsById, + } + if (Object.keys(mergedServerFnsById).length > 0) { + return generateManifestModule( + mergedServerFnsById, + includeClientReferencedCheck, + ) + } + if (manifestPath) { + return generateManifestModuleFromFile( + manifestPath, + includeClientReferencedCheck, + ) + } return generateManifestModule(serverFnsById, includeClientReferencedCheck) }, })) + return pluginFactory() } diff --git a/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts index 15bf0246de0..74eff928c99 100644 --- a/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts @@ -14,16 +14,20 @@ type StatsAsset = string | { name?: string } type StatsChunk = { files?: Array auxiliaryFiles?: Array - modules?: Array<{ name?: string; identifier?: string }> + modules?: Array + names?: Array + entry?: boolean + initial?: boolean +} + +type StatsModule = { + name?: string + identifier?: string + nameForCondition?: string } type StatsJson = { - entrypoints?: Record< - string, - { - assets?: Array - } - > + entrypoints?: Record }> chunks?: Array } @@ -55,26 +59,105 @@ function createCssTags( })) } +function createEntryScriptTags( + basePath: string, + assets: Array, +): Array { + return assets.map((asset) => ({ + tag: 'script', + attrs: { + type: 'module', + async: true, + src: joinURL(basePath, asset), + }, + })) +} + function unique(items: Array) { return Array.from(new Set(items)) } -function getStatsEntryAssets(statsJson: StatsJson): Array { +function getRouteModuleFilePath(module: StatsModule): string | undefined { + const moduleId = module.identifier ?? module.name ?? '' + if (!moduleId.includes(tsrSplit)) return undefined + + if (module.nameForCondition) { + return module.nameForCondition + } + + const resource = moduleId.split('!').pop() ?? moduleId + const cleanedResource = resource.startsWith('module|') + ? resource.slice('module|'.length) + : resource + const [resourcePath, queryString] = cleanedResource.split('?') + if (!queryString?.includes(tsrSplit)) return undefined + + return resourcePath +} + +function getStatsEntryPointName(statsJson: StatsJson): string | undefined { const entrypoints = statsJson.entrypoints ?? {} - const entrypoint = - entrypoints['index'] ?? - entrypoints['main'] ?? - entrypoints[Object.keys(entrypoints)[0] ?? ''] + if (entrypoints['index']) return 'index' + if (entrypoints['main']) return 'main' + return Object.keys(entrypoints)[0] +} - if (!entrypoint?.assets) return [] +function getStatsEntryAssets(statsJson: StatsJson): { + entrypointName?: string + assets: Array +} { + const entrypoints = statsJson.entrypoints ?? {} + const entrypointName = getStatsEntryPointName(statsJson) + const entrypoint = entrypointName ? entrypoints[entrypointName] : undefined + if (!entrypoint?.assets) { + return { entrypointName, assets: [] } + } + + return { + entrypointName, + assets: unique( + entrypoint.assets + .map(getAssetName) + .filter((asset): asset is string => Boolean(asset)), + ), + } +} + +function getEntryChunkAssets( + statsJson: StatsJson, + entrypointName?: string, +): Array { + if (!entrypointName) return [] + const chunks = statsJson.chunks ?? [] + const entryChunks = chunks.filter((chunk) => { + if (chunk.entry) return true + const names = chunk.names ?? [] + return names.includes(entrypointName) + }) return unique( - entrypoint.assets - .map(getAssetName) - .filter((asset): asset is string => Boolean(asset)), + entryChunks.flatMap((chunk) => chunk.files ?? []).filter(isJsAsset), ) } +function pickEntryAsset( + assets: Array, + entrypointName?: string, +): string | undefined { + if (assets.length === 0) return undefined + if (entrypointName) { + const match = assets.find((asset) => { + const baseName = path.posix.basename(asset) + return ( + baseName === `${entrypointName}.js` || + baseName.startsWith(`${entrypointName}.`) + ) + }) + if (match) return match + } + return assets[assets.length - 1] +} + function buildStartManifest({ statsJson, basePath, @@ -82,11 +165,17 @@ function buildStartManifest({ statsJson: StatsJson basePath: string }): Manifest & { clientEntry: string } { - const entryAssets = getStatsEntryAssets(statsJson) + const { entrypointName, assets: entryAssets } = + getStatsEntryAssets(statsJson) const entryJsAssets = unique(entryAssets.filter(isJsAsset)) const entryCssAssets = unique(entryAssets.filter(isCssAsset)) - const entryFile = entryJsAssets[0] + const entryFile = + pickEntryAsset(entryJsAssets, entrypointName) ?? + pickEntryAsset( + getEntryChunkAssets(statsJson, entrypointName), + entrypointName, + ) if (!entryFile) { throw new Error('No client entry file found in rsbuild stats') } @@ -98,17 +187,14 @@ function buildStartManifest({ for (const chunk of statsJson.chunks ?? []) { const modules = chunk.modules ?? [] for (const mod of modules) { - const id = mod.identifier ?? mod.name ?? '' - if (!id.includes(tsrSplit)) continue - const [fileId, query] = id.split('?') - if (!fileId || !query) continue - const searchParams = new URLSearchParams(query) - if (!searchParams.has(tsrSplit)) continue - const existingChunks = routeChunks[fileId] + const filePath = getRouteModuleFilePath(mod) + if (!filePath) continue + const normalizedPath = path.normalize(filePath) + const existingChunks = routeChunks[normalizedPath] if (existingChunks) { existingChunks.push(chunk) } else { - routeChunks[fileId] = [chunk] + routeChunks[normalizedPath] = [chunk] } } } @@ -116,7 +202,7 @@ function buildStartManifest({ const manifest: Manifest = { routes: {} } Object.entries(routeTreeRoutes).forEach(([routeId, route]) => { - const chunks = routeChunks[route.filePath] + const chunks = routeChunks[path.normalize(route.filePath)] if (!chunks?.length) { manifest.routes[routeId] = {} return @@ -140,11 +226,16 @@ function buildStartManifest({ } }) + const entryScriptAssets = entryJsAssets.filter( + (asset) => asset !== entryFile, + ) + manifest.routes[rootRouteId] = { ...(manifest.routes[rootRouteId] ?? {}), preloads: entryJsAssets.map((asset) => joinURL(basePath, asset)), assets: [ ...createCssTags(basePath, entryCssAssets), + ...createEntryScriptTags(basePath, entryScriptAssets), ...(manifest.routes[rootRouteId]?.assets ?? []), ], } @@ -168,9 +259,9 @@ export function createStartManifestRspackPlugin(opts: { all: false, entrypoints: true, chunks: true, + chunkModules: true, modules: true, }) - const manifest = buildStartManifest({ statsJson, basePath: opts.basePath, @@ -196,7 +287,7 @@ export function createStartManifestVirtualModulePlugin(opts: { clientOutputDir: string }) { const manifestPath = path.join(opts.clientOutputDir, START_MANIFEST_FILE) - return createRspackPlugin(() => ({ + const pluginFactory = createRspackPlugin(() => ({ name: 'tanstack-start:manifest:virtual', resolveId(id) { if (id === VIRTUAL_MODULES.startManifest) { @@ -223,4 +314,5 @@ export const tsrStartManifest = () => { ` }, })) + return pluginFactory() } diff --git a/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts index 6aae1d1415a..fff31f162e7 100644 --- a/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts @@ -132,7 +132,7 @@ export function tanStackStartRouterRsbuild( return { ...routerConfig, target: corePluginOpts.framework, - routeTreeFileFooter: getRouteTreeFileFooter, + routeTreeFileFooter: getRouteTreeFileFooter(), plugins, } }) diff --git a/packages/start-plugin-core/src/rsbuild/start-storage-context-stub.ts b/packages/start-plugin-core/src/rsbuild/start-storage-context-stub.ts new file mode 100644 index 00000000000..a1662a4364e --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/start-storage-context-stub.ts @@ -0,0 +1,12 @@ +export function getStartContext() { + return { + startOptions: undefined, + } +} + +export async function runWithStartContext( + _context: unknown, + fn: () => T | Promise, +) { + return fn() +} diff --git a/packages/start-plugin-core/src/start-compiler-plugin/compiler.ts b/packages/start-plugin-core/src/start-compiler-plugin/compiler.ts index 36b9f429fba..cb1a257eaa1 100644 --- a/packages/start-plugin-core/src/start-compiler-plugin/compiler.ts +++ b/packages/start-plugin-core/src/start-compiler-plugin/compiler.ts @@ -7,7 +7,7 @@ import { generateFromAst, parseAst, } from '@tanstack/router-utils' -import babel from '@babel/core' +import * as babel from '@babel/core' import { handleCreateServerFn } from './handleCreateServerFn' import { handleCreateMiddleware } from './handleCreateMiddleware' import { handleCreateIsomorphicFn } from './handleCreateIsomorphicFn' diff --git a/packages/start-plugin-core/src/start-compiler-plugin/handleCreateServerFn.ts b/packages/start-plugin-core/src/start-compiler-plugin/handleCreateServerFn.ts index ddad1cf0611..284a3d32f32 100644 --- a/packages/start-plugin-core/src/start-compiler-plugin/handleCreateServerFn.ts +++ b/packages/start-plugin-core/src/start-compiler-plugin/handleCreateServerFn.ts @@ -1,5 +1,5 @@ import * as t from '@babel/types' -import babel from '@babel/core' +import * as babel from '@babel/core' import path from 'pathe' import { VITE_ENVIRONMENT_NAMES } from '../constants' import { cleanId, codeFrameError, stripMethodCall } from './utils' @@ -218,8 +218,11 @@ export function handleCreateServerFn( const exportNames = new Set() const serverFnsById: Record = {} + let providerImportPath: string | null = null + const providerImportNames = new Set() const [baseFilename] = context.id.split('?') as [string] + const baseDir = path.dirname(baseFilename) const extractedFilename = `${baseFilename}?${TSS_SERVERFN_SPLIT_PARAM}` const relativeFilename = path.relative(context.root, baseFilename) const knownFns = context.getKnownServerFns() @@ -309,6 +312,20 @@ export function handleCreateServerFn( // to avoid duplicates - provider files process the same functions if (!isProviderFile) { + if (!envConfig.isClientEnvironment && envConfig.ssrIsProvider) { + const [canonicalBase] = canonicalExtractedFilename.split('?') as [ + string, + ] + let relativeImportPath = path.relative(baseDir, canonicalBase) + if (!relativeImportPath.startsWith('.')) { + relativeImportPath = `./${relativeImportPath}` + } + relativeImportPath = relativeImportPath.split(path.sep).join('/') + providerImportPath = `${relativeImportPath}?${TSS_SERVERFN_SPLIT_PARAM}` + } + if (providerImportPath) { + providerImportNames.add(functionName) + } serverFnsById[functionId] = { functionName, functionId, @@ -452,12 +469,65 @@ export function handleCreateServerFn( context.onServerFnsById(serverFnsById) } - // Add runtime import using cached AST node const runtimeCode = getCachedRuntimeCode( context.framework, envConfig.runtimeCodeType, ) - context.ast.program.body.unshift(t.cloneNode(runtimeCode)) + + const importStatements: Array = [t.cloneNode(runtimeCode)] + if (providerImportPath && providerImportNames.size > 0) { + importStatements.push( + t.importDeclaration( + Array.from(providerImportNames).map((name) => + t.importSpecifier(t.identifier(name), t.identifier(name)), + ), + t.stringLiteral(providerImportPath), + ), + ) + } + + context.ast.program.body.unshift(...importStatements) + + if (providerImportPath && providerImportNames.size > 0) { + const globalHandlers = t.memberExpression( + t.identifier('globalThis'), + t.identifier('__tssServerFnHandlers'), + ) + const initHandlers = t.expressionStatement( + t.assignmentExpression( + '=', + t.memberExpression( + t.identifier('globalThis'), + t.identifier('__tssServerFnHandlers'), + ), + t.logicalExpression( + '||', + t.memberExpression( + t.identifier('globalThis'), + t.identifier('__tssServerFnHandlers'), + ), + t.arrayExpression([]), + ), + ), + ) + const pushHandlers = t.expressionStatement( + t.callExpression( + t.memberExpression(globalHandlers, t.identifier('push')), + Array.from(providerImportNames).map((name) => t.identifier(name)), + ), + ) + const lastImportIndex = context.ast.program.body.reduce( + (lastIndex, node, index) => + t.isImportDeclaration(node) ? index : lastIndex, + -1, + ) + context.ast.program.body.splice( + lastImportIndex + 1, + 0, + initHandlers, + pushHandlers, + ) + } } /** diff --git a/packages/start-plugin-core/src/start-compiler-plugin/plugin.ts b/packages/start-plugin-core/src/start-compiler-plugin/plugin.ts index 973b2b192b6..dc86f545dd2 100644 --- a/packages/start-plugin-core/src/start-compiler-plugin/plugin.ts +++ b/packages/start-plugin-core/src/start-compiler-plugin/plugin.ts @@ -193,7 +193,6 @@ export function startCompilerPlugin( } let root = process.cwd() - let command: 'build' | 'serve' = 'build' const resolvedResolverVirtualImportId = resolveViteId( VIRTUAL_MODULES.serverFnResolver, @@ -227,7 +226,6 @@ export function startCompilerPlugin( }, configResolved(config) { root = config.root - command = config.command }, transform: { filter: { @@ -373,7 +371,6 @@ export function startCompilerPlugin( }, configResolved(config) { root = config.root - command = config.command }, resolveId: { filter: { id: new RegExp(VIRTUAL_MODULES.serverFnResolver) }, diff --git a/packages/start-plugin-core/src/start-compiler-plugin/types.ts b/packages/start-plugin-core/src/start-compiler-plugin/types.ts index 141cb4e28fb..19d4517ab8a 100644 --- a/packages/start-plugin-core/src/start-compiler-plugin/types.ts +++ b/packages/start-plugin-core/src/start-compiler-plugin/types.ts @@ -85,6 +85,12 @@ export interface ServerFn { extractedFilename: string /** The original source filename */ filename: string + /** The emitted chunk IDs for this function (rspack build) */ + importerChunkIds?: Array + /** The emitted module ID for this function (rspack build) */ + importerModuleId?: string | number + /** The emitted importer path for this function (rspack build fallback) */ + importerPath?: string /** * True when this function was discovered by the client build. * Used to restrict HTTP access to only client-referenced functions. diff --git a/packages/start-plugin-core/tests/createServerFn/createServerFn.test.ts b/packages/start-plugin-core/tests/createServerFn/createServerFn.test.ts index a99eed371ff..4ab0dbabd6d 100644 --- a/packages/start-plugin-core/tests/createServerFn/createServerFn.test.ts +++ b/packages/start-plugin-core/tests/createServerFn/createServerFn.test.ts @@ -128,7 +128,10 @@ describe('createServerFn compiles correctly', async () => { // Server caller: no second argument (implementation from extracted chunk) expect(compiledResultServerCaller!.code).toMatchInlineSnapshot(` "import { createSsrRpc } from '@tanstack/react-start/ssr-rpc'; + import { myServerFn_createServerFn_handler } from "./test.ts?tss-serverfn-split"; import { createServerFn } from '@tanstack/react-start'; + globalThis.__tssServerFnHandlers = globalThis.__tssServerFnHandlers || []; + globalThis.__tssServerFnHandlers.push(myServerFn_createServerFn_handler); const myServerFn = createServerFn().handler(createSsrRpc("eyJmaWxlIjoiL0BpZC9zcmMvdGVzdC50cz90c3Mtc2VydmVyZm4tc3BsaXQiLCJleHBvcnQiOiJteVNlcnZlckZuX2NyZWF0ZVNlcnZlckZuX2hhbmRsZXIifQ", () => import("/test/src/test.ts?tss-serverfn-split").then(m => m["myServerFn_createServerFn_handler"])));" `) @@ -184,7 +187,10 @@ describe('createServerFn compiles correctly', async () => { expect(compiledResultServerCaller!.code).toMatchInlineSnapshot(` "import { createSsrRpc } from '@tanstack/react-start/ssr-rpc'; + import { exportedFn_createServerFn_handler, nonExportedFn_createServerFn_handler } from "./test.ts?tss-serverfn-split"; import { createServerFn } from '@tanstack/react-start'; + globalThis.__tssServerFnHandlers = globalThis.__tssServerFnHandlers || []; + globalThis.__tssServerFnHandlers.push(exportedFn_createServerFn_handler, nonExportedFn_createServerFn_handler); export const exportedFn = createServerFn().handler(createSsrRpc("eyJmaWxlIjoiL0BpZC9zcmMvdGVzdC50cz90c3Mtc2VydmVyZm4tc3BsaXQiLCJleHBvcnQiOiJleHBvcnRlZEZuX2NyZWF0ZVNlcnZlckZuX2hhbmRsZXIifQ", () => import("/test/src/test.ts?tss-serverfn-split").then(m => m["exportedFn_createServerFn_handler"]))); const nonExportedFn = createServerFn().handler(createSsrRpc("eyJmaWxlIjoiL0BpZC9zcmMvdGVzdC50cz90c3Mtc2VydmVyZm4tc3BsaXQiLCJleHBvcnQiOiJub25FeHBvcnRlZEZuX2NyZWF0ZVNlcnZlckZuX2hhbmRsZXIifQ", () => import("/test/src/test.ts?tss-serverfn-split").then(m => m["nonExportedFn_createServerFn_handler"])));" `) diff --git a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnDestructured.tsx b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnDestructured.tsx index b8dbdcaae58..626d0f3ae7a 100644 --- a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnDestructured.tsx +++ b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnDestructured.tsx @@ -1,6 +1,9 @@ import { createSsrRpc } from '@tanstack/react-start/ssr-rpc'; +import { withUseServer_createServerFn_handler, withArrowFunction_createServerFn_handler, withArrowFunctionAndFunction_createServerFn_handler, withoutUseServer_createServerFn_handler, withVariable_createServerFn_handler, withZodValidator_createServerFn_handler, withValidatorFn_createServerFn_handler } from "./test.ts?tss-serverfn-split"; import { createServerFn } from '@tanstack/react-start'; import { z } from 'zod'; +globalThis.__tssServerFnHandlers = globalThis.__tssServerFnHandlers || []; +globalThis.__tssServerFnHandlers.push(withUseServer_createServerFn_handler, withArrowFunction_createServerFn_handler, withArrowFunctionAndFunction_createServerFn_handler, withoutUseServer_createServerFn_handler, withVariable_createServerFn_handler, withZodValidator_createServerFn_handler, withValidatorFn_createServerFn_handler); export const withUseServer = createServerFn({ method: 'GET' }).handler(createSsrRpc("eyJmaWxlIjoiL0BpZC9zcmMvdGVzdC50cz90c3Mtc2VydmVyZm4tc3BsaXQiLCJleHBvcnQiOiJ3aXRoVXNlU2VydmVyX2NyZWF0ZVNlcnZlckZuX2hhbmRsZXIifQ", () => import("/test/src/test.ts?tss-serverfn-split").then(m => m["withUseServer_createServerFn_handler"]))); diff --git a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnDestructuredRename.tsx b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnDestructuredRename.tsx index 815702d5d8f..cadb811cf37 100644 --- a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnDestructuredRename.tsx +++ b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnDestructuredRename.tsx @@ -1,5 +1,8 @@ import { createSsrRpc } from '@tanstack/react-start/ssr-rpc'; +import { withUseServer_createServerFn_handler, withoutUseServer_createServerFn_handler, withVariable_createServerFn_handler, withZodValidator_createServerFn_handler } from "./test.ts?tss-serverfn-split"; import { createServerFn as serverFn } from '@tanstack/react-start'; +globalThis.__tssServerFnHandlers = globalThis.__tssServerFnHandlers || []; +globalThis.__tssServerFnHandlers.push(withUseServer_createServerFn_handler, withoutUseServer_createServerFn_handler, withVariable_createServerFn_handler, withZodValidator_createServerFn_handler); export const withUseServer = serverFn({ method: 'GET' }).handler(createSsrRpc("eyJmaWxlIjoiL0BpZC9zcmMvdGVzdC50cz90c3Mtc2VydmVyZm4tc3BsaXQiLCJleHBvcnQiOiJ3aXRoVXNlU2VydmVyX2NyZWF0ZVNlcnZlckZuX2hhbmRsZXIifQ", () => import("/test/src/test.ts?tss-serverfn-split").then(m => m["withUseServer_createServerFn_handler"]))); diff --git a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnStarImport.tsx b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnStarImport.tsx index 2f68c8c276d..6452aa604d2 100644 --- a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnStarImport.tsx +++ b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnStarImport.tsx @@ -1,5 +1,8 @@ import { createSsrRpc } from '@tanstack/react-start/ssr-rpc'; +import { withUseServer_createServerFn_handler, withoutUseServer_createServerFn_handler, withVariable_createServerFn_handler, withZodValidator_createServerFn_handler } from "./test.ts?tss-serverfn-split"; import * as TanStackStart from '@tanstack/react-start'; +globalThis.__tssServerFnHandlers = globalThis.__tssServerFnHandlers || []; +globalThis.__tssServerFnHandlers.push(withUseServer_createServerFn_handler, withoutUseServer_createServerFn_handler, withVariable_createServerFn_handler, withZodValidator_createServerFn_handler); export const withUseServer = TanStackStart.createServerFn({ method: 'GET' }).handler(createSsrRpc("eyJmaWxlIjoiL0BpZC9zcmMvdGVzdC50cz90c3Mtc2VydmVyZm4tc3BsaXQiLCJleHBvcnQiOiJ3aXRoVXNlU2VydmVyX2NyZWF0ZVNlcnZlckZuX2hhbmRsZXIifQ", () => import("/test/src/test.ts?tss-serverfn-split").then(m => m["withUseServer_createServerFn_handler"]))); diff --git a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnValidator.tsx b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnValidator.tsx index ba0b4b577e2..b6a5abb5eb4 100644 --- a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnValidator.tsx +++ b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/createServerFnValidator.tsx @@ -1,6 +1,9 @@ import { createSsrRpc } from '@tanstack/react-start/ssr-rpc'; +import { withUseServer_createServerFn_handler } from "./test.ts?tss-serverfn-split"; import { createServerFn } from '@tanstack/react-start'; import { z } from 'zod'; +globalThis.__tssServerFnHandlers = globalThis.__tssServerFnHandlers || []; +globalThis.__tssServerFnHandlers.push(withUseServer_createServerFn_handler); export const withUseServer = createServerFn({ method: 'GET' }).inputValidator(z.number()).handler(createSsrRpc("eyJmaWxlIjoiL0BpZC9zcmMvdGVzdC50cz90c3Mtc2VydmVyZm4tc3BsaXQiLCJleHBvcnQiOiJ3aXRoVXNlU2VydmVyX2NyZWF0ZVNlcnZlckZuX2hhbmRsZXIifQ", () => import("/test/src/test.ts?tss-serverfn-split").then(m => m["withUseServer_createServerFn_handler"]))); \ No newline at end of file diff --git a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/factory.tsx b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/factory.tsx index dbc4e764d9a..874d4c8fd90 100644 --- a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/factory.tsx +++ b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/factory.tsx @@ -1,5 +1,8 @@ import { createSsrRpc } from '@tanstack/react-start/ssr-rpc'; +import { myAuthedFn_createServerFn_handler, deleteUserFn_createServerFn_handler } from "./test.ts?tss-serverfn-split"; import { createServerFn, createMiddleware } from '@tanstack/react-start'; +globalThis.__tssServerFnHandlers = globalThis.__tssServerFnHandlers || []; +globalThis.__tssServerFnHandlers.push(myAuthedFn_createServerFn_handler, deleteUserFn_createServerFn_handler); const authMiddleware = createMiddleware({ type: 'function' }).server(({ diff --git a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/isomorphic-fns.tsx b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/isomorphic-fns.tsx index 02675e9e956..aa574d6ff56 100644 --- a/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/isomorphic-fns.tsx +++ b/packages/start-plugin-core/tests/createServerFn/snapshots/server-caller/isomorphic-fns.tsx @@ -1,7 +1,10 @@ import { createSsrRpc } from '@tanstack/react-start/ssr-rpc'; +import { getServerEnv_createServerFn_handler, getServerEcho_createServerFn_handler } from "./test.ts?tss-serverfn-split"; import { createFileRoute } from '@tanstack/react-router'; import { createIsomorphicFn, createServerFn } from '@tanstack/react-start'; import { useState } from 'react'; +globalThis.__tssServerFnHandlers = globalThis.__tssServerFnHandlers || []; +globalThis.__tssServerFnHandlers.push(getServerEnv_createServerFn_handler, getServerEcho_createServerFn_handler); const getEnv = createIsomorphicFn().server(() => 'server').client(() => 'client'); const getServerEnv = createServerFn().handler(createSsrRpc("eyJmaWxlIjoiL0BpZC9zcmMvdGVzdC50cz90c3Mtc2VydmVyZm4tc3BsaXQiLCJleHBvcnQiOiJnZXRTZXJ2ZXJFbnZfY3JlYXRlU2VydmVyRm5faGFuZGxlciJ9", () => import("/test/src/test.ts?tss-serverfn-split").then(m => m["getServerEnv_createServerFn_handler"]))); const getEcho = createIsomorphicFn().server((input: string) => 'server received ' + input).client(input => 'client received ' + input); diff --git a/packages/start-plugin-core/vite.config.ts b/packages/start-plugin-core/vite.config.ts index 6f84b1c040a..dad7d4279ff 100644 --- a/packages/start-plugin-core/vite.config.ts +++ b/packages/start-plugin-core/vite.config.ts @@ -19,6 +19,7 @@ export default mergeConfig( './src/rsbuild/index.ts', './src/rsbuild/start-compiler-loader.ts', './src/rsbuild/route-tree-loader.ts', + './src/rsbuild/start-storage-context-stub.ts', ], srcDir: './src', outDir: './dist', diff --git a/packages/start-server-core/src/router-manifest.ts b/packages/start-server-core/src/router-manifest.ts index ceec7eaf4e8..925ae7893bf 100644 --- a/packages/start-server-core/src/router-manifest.ts +++ b/packages/start-server-core/src/router-manifest.ts @@ -20,7 +20,7 @@ const ROUTER_BASEPATH = process.env.TSS_ROUTER_BASEPATH || '/' export async function getStartManifest( matchedRoutes?: ReadonlyArray, ): Promise { - const { tsrStartManifest } = await import('tanstack-start-manifest:v') + const { tsrStartManifest } = await import('tanstack-start-manifest') const startManifest = tsrStartManifest() const rootRoute = (startManifest.routes[rootRouteId] = @@ -45,7 +45,7 @@ export async function getStartManifest( // build the client entry script tag after URL transforms are applied) let injectedHeadScripts: string | undefined if (process.env.TSS_DEV_SERVER === 'true') { - const mod = await import('tanstack-start-injected-head-scripts:v') + const mod = await import('tanstack-start-injected-head-scripts') if (mod.injectedHeadScripts) { injectedHeadScripts = mod.injectedHeadScripts } diff --git a/packages/start-server-core/src/server-functions-handler.ts b/packages/start-server-core/src/server-functions-handler.ts index fdc6fb06723..4f2a15f278b 100644 --- a/packages/start-server-core/src/server-functions-handler.ts +++ b/packages/start-server-core/src/server-functions-handler.ts @@ -50,6 +50,10 @@ export const handleServerAction = async ({ const url = new URL(request.url) const action = await getServerFnById(serverFnId, { fromClient: true }) + const executableAction = + typeof (action as any)?.__executeServer === 'function' + ? (action as any).__executeServer.bind(action) + : action const isServerFn = request.headers.get('x-tsr-serverFn') === 'true' @@ -111,7 +115,8 @@ export const handleServerAction = async ({ } } - return await action(params) + const result = await executableAction(params) + return result } // Get requests use the query string @@ -129,7 +134,8 @@ export const handleServerAction = async ({ payload.context = safeObjectMerge(context, payload.context) payload.method = methodUpper // Send it through! - return await action(payload) + const result = await executableAction(payload) + return result } if (methodLower !== 'post') { @@ -144,7 +150,8 @@ export const handleServerAction = async ({ const payload = jsonPayload ? parsePayload(jsonPayload) : {} payload.context = safeObjectMerge(payload.context, context) payload.method = methodUpper - return await action(payload) + const result = await executableAction(payload) + return result })() const unwrapped = res.result || res.error @@ -157,8 +164,18 @@ export const handleServerAction = async ({ return unwrapped } - if (unwrapped instanceof Response) { - if (isRedirect(unwrapped)) { + const redirectOptions = getRedirectOptions(unwrapped) + if (redirectOptions) { + return Response.json( + { ...redirectOptions, isSerializedRedirect: true }, + { headers: getResponseHeaders(unwrapped) }, + ) + } + + if (isResponseLike(unwrapped)) { + const isRedirectResponse = + isRedirect(unwrapped) || Boolean(getRedirectOptions(unwrapped)) + if (isRedirectResponse) { return unwrapped } unwrapped.headers.set(X_TSS_RAW_RESPONSE, 'true') @@ -305,7 +322,20 @@ export const handleServerAction = async ({ }) } } catch (error: any) { - if (error instanceof Response) { + if (isResponseLike(error)) { + const redirectOptions = getRedirectOptions(error) + if (redirectOptions && isServerFn) { + return Response.json( + { ...redirectOptions, isSerializedRedirect: true }, + { headers: getResponseHeaders(error) }, + ) + } + const isRedirectResponse = + isRedirect(error) || Boolean(getRedirectOptions(error)) + if (isRedirectResponse) { + return error + } + error.headers.set(X_TSS_RAW_RESPONSE, 'true') return error } // else if ( @@ -365,3 +395,40 @@ function isNotFoundResponse(error: any) { }, }) } + +function isResponseLike(value: unknown): value is Response { + if (value instanceof Response) { + return true + } + if (value === null || typeof value !== 'object') { + return false + } + if (!('status' in value) || !('headers' in value)) { + return false + } + const headers = (value as { headers?: { get?: unknown } }).headers + return typeof headers?.get === 'function' +} + +function getRedirectOptions( + value: unknown, +): Record | undefined { + if (value === null || typeof value !== 'object') { + return undefined + } + if (!('options' in value)) { + return undefined + } + return (value as { options?: Record }).options +} + +function getResponseHeaders(value: unknown): Headers | undefined { + if (value === null || typeof value !== 'object') { + return undefined + } + if (!('headers' in value)) { + return undefined + } + const headers = (value as { headers?: Headers }).headers + return headers +} diff --git a/packages/start-server-core/src/tanstack-start.d.ts b/packages/start-server-core/src/tanstack-start.d.ts index 106375b4da9..49fb61c849a 100644 --- a/packages/start-server-core/src/tanstack-start.d.ts +++ b/packages/start-server-core/src/tanstack-start.d.ts @@ -1,4 +1,4 @@ -declare module 'tanstack-start-manifest:v' { +declare module 'tanstack-start-manifest' { import type { Manifest } from '@tanstack/router-core' export const tsrStartManifest: () => Manifest & { clientEntry: string } @@ -18,6 +18,6 @@ declare module '#tanstack-start-server-fn-resolver' { ): Promise } -declare module 'tanstack-start-injected-head-scripts:v' { +declare module 'tanstack-start-injected-head-scripts' { export const injectedHeadScripts: string | undefined } diff --git a/packages/start-server-core/src/virtual-modules.ts b/packages/start-server-core/src/virtual-modules.ts index 7280feacf26..3fd43ba4e9d 100644 --- a/packages/start-server-core/src/virtual-modules.ts +++ b/packages/start-server-core/src/virtual-modules.ts @@ -1,5 +1,5 @@ export const VIRTUAL_MODULES = { - startManifest: 'tanstack-start-manifest:v', - injectedHeadScripts: 'tanstack-start-injected-head-scripts:v', + startManifest: 'tanstack-start-manifest', + injectedHeadScripts: 'tanstack-start-injected-head-scripts', serverFnResolver: '#tanstack-start-server-fn-resolver', } as const diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28e773e224c..b13062c3c4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1119,6 +1119,12 @@ importers: '@playwright/test': specifier: ^1.57.0 version: 1.57.0 + '@rsbuild/core': + specifier: ^1.2.4 + version: 1.2.4 + '@rsbuild/plugin-react': + specifier: ^1.1.0 + version: 1.1.0(@rsbuild/core@1.2.4) '@tailwindcss/vite': specifier: ^4.1.18 version: 4.1.18(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) @@ -10675,7 +10681,7 @@ importers: devDependencies: '@netlify/vite-plugin-tanstack-start': specifier: ^1.1.4 - version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) '@tailwindcss/vite': specifier: ^4.1.18 version: 4.1.18(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) @@ -27465,13 +27471,13 @@ snapshots: uuid: 11.1.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)': + '@netlify/dev@4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)': dependencies: '@netlify/blobs': 10.1.0 '@netlify/config': 23.2.0 '@netlify/dev-utils': 4.3.0 '@netlify/edge-functions-dev': 1.0.0 - '@netlify/functions-dev': 1.0.0(encoding@0.1.13)(rollup@4.55.3) + '@netlify/functions-dev': 1.0.0(rollup@4.55.3) '@netlify/headers': 2.1.0 '@netlify/images': 1.3.0(@netlify/blobs@10.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2) '@netlify/redirects': 3.1.0 @@ -27539,12 +27545,12 @@ snapshots: dependencies: '@netlify/types': 2.1.0 - '@netlify/functions-dev@1.0.0(encoding@0.1.13)(rollup@4.55.3)': + '@netlify/functions-dev@1.0.0(rollup@4.55.3)': dependencies: '@netlify/blobs': 10.1.0 '@netlify/dev-utils': 4.3.0 '@netlify/functions': 5.0.0 - '@netlify/zip-it-and-ship-it': 14.1.11(encoding@0.1.13)(rollup@4.55.3) + '@netlify/zip-it-and-ship-it': 14.1.11(rollup@4.55.3) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -27634,9 +27640,9 @@ snapshots: '@netlify/types@2.1.0': {} - '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': + '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) optionalDependencies: '@tanstack/solid-start': link:packages/solid-start @@ -27664,9 +27670,9 @@ snapshots: - supports-color - uploadthing - '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': + '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@netlify/dev': 4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3) + '@netlify/dev': 4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3) '@netlify/dev-utils': 4.3.0 dedent: 1.7.0(babel-plugin-macros@3.1.0) vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) @@ -27694,13 +27700,13 @@ snapshots: - supports-color - uploadthing - '@netlify/zip-it-and-ship-it@14.1.11(encoding@0.1.13)(rollup@4.55.3)': + '@netlify/zip-it-and-ship-it@14.1.11(rollup@4.55.3)': dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.4 '@netlify/binary-info': 1.0.0 '@netlify/serverless-functions-api': 2.7.1 - '@vercel/nft': 0.29.4(encoding@0.1.13)(rollup@4.55.3) + '@vercel/nft': 0.29.4(rollup@4.55.3) archiver: 7.0.1 common-path-prefix: 3.0.0 copy-file: 11.1.0 @@ -30950,7 +30956,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vercel/nft@0.29.4(encoding@0.1.13)(rollup@4.55.3)': + '@vercel/nft@0.29.4(rollup@4.55.3)': dependencies: '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) '@rollup/pluginutils': 5.1.4(rollup@4.55.3) From bbd2c2d487064dccdc67af47217c8410d524cf34 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 8 Feb 2026 17:28:43 +0000 Subject: [PATCH 003/102] Fix SSR server static index handling Co-authored-by: Zack Jackson --- e2e/react-start/basic/server.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/e2e/react-start/basic/server.js b/e2e/react-start/basic/server.js index 83f5ff0079c..3c0a6668935 100644 --- a/e2e/react-start/basic/server.js +++ b/e2e/react-start/basic/server.js @@ -18,7 +18,12 @@ export async function createStartServer() { // to keep testing uniform stop express from redirecting /posts to /posts/ // when serving pre-rendered pages - app.use(express.static('./dist/client', { redirect: !isPrerender })) + app.use( + express.static('./dist/client', { + redirect: !isPrerender, + ...(isPrerender ? {} : { index: false }), + }), + ) app.use(async (req, res, next) => { try { From d0ade15776f1c2743181123dbc3eab00450bcb3e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sun, 8 Feb 2026 18:47:03 +0000 Subject: [PATCH 004/102] Fix rsbuild preview and css handling Co-authored-by: Zack Jackson --- e2e/react-start/basic/rsbuild.config.ts | 13 +-- e2e/react-start/basic/scripts/run-bundler.mjs | 22 ++++- e2e/react-start/basic/src/routes/__root.tsx | 3 +- e2e/react-start/basic/src/styles/app.css | 80 ++++++++++++------- 4 files changed, 72 insertions(+), 46 deletions(-) diff --git a/e2e/react-start/basic/rsbuild.config.ts b/e2e/react-start/basic/rsbuild.config.ts index dd173dfd7dd..bd9be5efbd0 100644 --- a/e2e/react-start/basic/rsbuild.config.ts +++ b/e2e/react-start/basic/rsbuild.config.ts @@ -40,18 +40,7 @@ export default defineConfig({ prerender: isPrerender ? prerenderConfiguration : undefined, }), ], - tools: { - rspack: { - module: { - rules: [ - { - resourceQuery: /url/, - type: 'asset/resource', - }, - ], - }, - }, - }, + tools: {}, source: { alias: { '~': path.resolve(currentDir, 'src'), diff --git a/e2e/react-start/basic/scripts/run-bundler.mjs b/e2e/react-start/basic/scripts/run-bundler.mjs index a7971a27f69..eae38814959 100644 --- a/e2e/react-start/basic/scripts/run-bundler.mjs +++ b/e2e/react-start/basic/scripts/run-bundler.mjs @@ -10,6 +10,14 @@ if (!command) { const bundler = process.env.BUNDLER === 'rsbuild' ? 'rsbuild' : 'vite' +const extractPort = (args) => { + const portIndex = args.indexOf('--port') + if (portIndex >= 0 && args[portIndex + 1]) { + return args[portIndex + 1] + } + return null +} + const run = (cmd, cmdArgs) => new Promise((resolve, reject) => { const child = spawn(cmd, cmdArgs, { @@ -27,10 +35,18 @@ const run = (cmd, cmdArgs) => }) try { - await run(bundler, [command, ...args]) + if (bundler === 'rsbuild' && command === 'preview') { + const port = extractPort(args) + if (port) { + process.env.PORT = port + } + await run('node', ['server.js']) + } else { + await run(bundler, [command, ...args]) - if (command === 'build') { - await run('tsc', ['--noEmit']) + if (command === 'build') { + await run('tsc', ['--noEmit']) + } } } catch (error) { console.error(error) diff --git a/e2e/react-start/basic/src/routes/__root.tsx b/e2e/react-start/basic/src/routes/__root.tsx index e1862b499c6..7bf17f27c93 100644 --- a/e2e/react-start/basic/src/routes/__root.tsx +++ b/e2e/react-start/basic/src/routes/__root.tsx @@ -10,7 +10,7 @@ import { import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary' import { NotFound } from '~/components/NotFound' -import appCss from '~/styles/app.css?url' +import '~/styles/app.css' import { seo } from '~/utils/seo' export const Route = createRootRoute({ @@ -30,7 +30,6 @@ export const Route = createRootRoute({ }), ], links: [ - { rel: 'stylesheet', href: appCss }, { rel: 'apple-touch-icon', sizes: '180x180', diff --git a/e2e/react-start/basic/src/styles/app.css b/e2e/react-start/basic/src/styles/app.css index 37c1f5a6e2d..126fd9a937c 100644 --- a/e2e/react-start/basic/src/styles/app.css +++ b/e2e/react-start/basic/src/styles/app.css @@ -1,30 +1,52 @@ -@import 'tailwindcss' source('../'); - -@layer base { - *, - ::after, - ::before, - ::backdrop, - ::file-selector-button { - border-color: var(--color-gray-200, currentcolor); - } -} - -@layer base { - html { - color-scheme: light dark; - } - - * { - @apply border-gray-200 dark:border-gray-800; - } - - html, - body { - @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200; - } - - .using-mouse * { - outline: none !important; - } +*, +*::before, +*::after, +::backdrop, +::file-selector-button { + box-sizing: border-box; + border-color: #e5e7eb; +} + +html { + color-scheme: light dark; +} + +body { + margin: 0; + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + background-color: #f9fafb; + color: #111827; +} + +.using-mouse * { + outline: none !important; +} + +.p-2 { + padding: 0.5rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.flex { + display: flex; +} + +.gap-2 { + gap: 0.5rem; +} + +.text-lg { + font-size: 1.125rem; +} + +.font-bold { + font-weight: 700; +} + +.italic { + font-style: italic; } From 20fe2f24c2148bce3a761e6f81b497a207614a1c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 9 Feb 2026 03:41:53 +0000 Subject: [PATCH 005/102] Fix redirect serialization heuristics Co-authored-by: Zack Jackson --- .../src/client-rpc/serverFnFetcher.ts | 22 ++++++------------- .../src/server-functions-handler.ts | 7 ++---- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts index fc7133b3bcf..304427cc3d0 100644 --- a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts +++ b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts @@ -53,24 +53,16 @@ function parseRedirectFallback(payload: unknown) { if (!payload || typeof payload !== 'object') { return undefined } - const candidate = payload as { - statusCode?: unknown - code?: unknown - to?: unknown - href?: unknown + if (!('isSerializedRedirect' in payload)) { + return undefined } - const statusCode = - typeof candidate.statusCode === 'number' - ? candidate.statusCode - : typeof candidate.code === 'number' - ? candidate.code - : undefined - const hasLocation = - typeof candidate.to === 'string' || typeof candidate.href === 'string' - if (statusCode === undefined || !hasLocation) { + if ( + (payload as { isSerializedRedirect?: boolean }).isSerializedRedirect !== + true + ) { return undefined } - return redirect(candidate as any) + return redirect(payload as any) } // caller => // serverFnFetcher => diff --git a/packages/start-server-core/src/server-functions-handler.ts b/packages/start-server-core/src/server-functions-handler.ts index 4f2a15f278b..e5774627bfb 100644 --- a/packages/start-server-core/src/server-functions-handler.ts +++ b/packages/start-server-core/src/server-functions-handler.ts @@ -413,13 +413,10 @@ function isResponseLike(value: unknown): value is Response { function getRedirectOptions( value: unknown, ): Record | undefined { - if (value === null || typeof value !== 'object') { - return undefined - } - if (!('options' in value)) { + if (!isRedirect(value)) { return undefined } - return (value as { options?: Record }).options + return value.options as Record } function getResponseHeaders(value: unknown): Headers | undefined { From 87f6ea4a2a0281f13e815b269746d503cb5b48ad Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 9 Feb 2026 20:07:55 +0000 Subject: [PATCH 006/102] Harden PR CI and refine rsbuild build env handling Co-authored-by: Zack Jackson --- .github/workflows/autofix.yml | 3 +- .github/workflows/pr.yml | 6 +++- packages/react-router/eslint.config.ts | 6 ++++ .../start-plugin-core/src/rsbuild/plugin.ts | 34 ++++++++++++------- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index 4ab8d059936..f4925c53145 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -10,7 +10,8 @@ concurrency: cancel-in-progress: true permissions: - contents: read + contents: write + pull-requests: write jobs: autofix: diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 27afd72710c..821940e8887 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -27,9 +27,12 @@ jobs: with: fetch-depth: 0 - name: Start Nx Agents + if: ${{ env.NX_CLOUD_ACCESS_TOKEN != '' }} run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" - name: Setup Tools uses: tanstack/config/.github/setup@main + - name: Install Playwright browsers + run: pnpm exec playwright install - name: Get base and head commits for `nx affected` uses: nrwl/nx-set-shas@v4.4.0 with: @@ -37,7 +40,7 @@ jobs: - name: Run Checks run: pnpm run test:pr --parallel=3 - name: Stop Nx Agents - if: ${{ always() }} + if: ${{ always() && env.NX_CLOUD_ACCESS_TOKEN != '' }} run: npx nx-cloud stop-all-agents preview: name: Preview @@ -52,4 +55,5 @@ jobs: - name: Build Packages run: pnpm run build:all - name: Publish Previews + if: ${{ github.repository_owner == 'TanStack' }} run: pnpx pkg-pr-new publish --pnpm './packages/*' --template './examples/*/*' diff --git a/packages/react-router/eslint.config.ts b/packages/react-router/eslint.config.ts index 5d879181f79..d5fcd3aec86 100644 --- a/packages/react-router/eslint.config.ts +++ b/packages/react-router/eslint.config.ts @@ -8,6 +8,12 @@ export default [ { files: ['src/**/*.{ts,tsx}', 'tests/**/*.{ts,tsx}'], }, + { + files: ['llms/rules/**/*.ts'], + rules: { + 'no-useless-escape': 'off', + }, + }, { plugins: { 'react-hooks': pluginReactHooks, diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts index 79ab11ed90a..e0d9214dadf 100644 --- a/packages/start-plugin-core/src/rsbuild/plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -327,6 +327,7 @@ export function TanStackStartRsbuildPluginCore( ) const isDev = api.context?.command === 'serve' + const isBuild = api.context?.command === 'build' const defineViteEnv = (key: string, fallback = '') => { const value = process.env[key] ?? fallback return defineReplaceEnv(key, value) @@ -348,6 +349,13 @@ export function TanStackStartRsbuildPluginCore( : {}), ...defineViteEnv('VITE_NODE_ENV', 'production'), ...defineViteEnv('VITE_EXTERNAL_PORT', ''), + ...(isBuild && startConfig.server.build.staticNodeEnv + ? { + 'process.env.NODE_ENV': JSON.stringify( + process.env.NODE_ENV ?? 'production', + ), + } + : {}), } const routerPlugins = tanStackStartRouterRsbuild( @@ -737,20 +745,20 @@ export function TanStackStartRsbuildPluginCore( clientOutputDir, serverOutputDir, }) - if (routeTreeGeneratedPath && routeTreeModuleDeclaration) { - if (fs.existsSync(routeTreeGeneratedPath)) { - const existingTree = fs.readFileSync( - routeTreeGeneratedPath, - 'utf-8', - ) - if (!existingTree.includes(routeTreeModuleDeclaration)) { - fs.appendFileSync( - routeTreeGeneratedPath, - `\n\n${routeTreeModuleDeclaration}\n`, - ) - } - } + if (routeTreeGeneratedPath && routeTreeModuleDeclaration) { + if (fs.existsSync(routeTreeGeneratedPath)) { + const existingTree = fs.readFileSync( + routeTreeGeneratedPath, + 'utf-8', + ) + if (!existingTree.includes(routeTreeModuleDeclaration)) { + fs.appendFileSync( + routeTreeGeneratedPath, + `\n\n${routeTreeModuleDeclaration}\n`, + ) } + } + } }) }, }, From 8d0e57d02db5c109d4121ef3d62f490e69b2d580 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 9 Feb 2026 12:42:42 -0800 Subject: [PATCH 007/102] Revert PR workflow audit changes Restore the PR GitHub Actions workflow to the main-branch behavior because the quality-audit PR changes were not needed for feat/rsbuild. Co-authored-by: Cursor --- .github/workflows/pr.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 821940e8887..27afd72710c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -27,12 +27,9 @@ jobs: with: fetch-depth: 0 - name: Start Nx Agents - if: ${{ env.NX_CLOUD_ACCESS_TOKEN != '' }} run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" - name: Setup Tools uses: tanstack/config/.github/setup@main - - name: Install Playwright browsers - run: pnpm exec playwright install - name: Get base and head commits for `nx affected` uses: nrwl/nx-set-shas@v4.4.0 with: @@ -40,7 +37,7 @@ jobs: - name: Run Checks run: pnpm run test:pr --parallel=3 - name: Stop Nx Agents - if: ${{ always() && env.NX_CLOUD_ACCESS_TOKEN != '' }} + if: ${{ always() }} run: npx nx-cloud stop-all-agents preview: name: Preview @@ -55,5 +52,4 @@ jobs: - name: Build Packages run: pnpm run build:all - name: Publish Previews - if: ${{ github.repository_owner == 'TanStack' }} run: pnpx pkg-pr-new publish --pnpm './packages/*' --template './examples/*/*' From fbde76bec6b3425032011e98cb1bf45bdd5d0972 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 20:44:36 +0000 Subject: [PATCH 008/102] ci: apply automated fixes --- e2e/react-start/basic/src/styles/app.css | 7 +- .../start-plugin-core/src/rsbuild/plugin.ts | 35 ++++++---- .../src/rsbuild/route-tree-state.ts | 4 +- .../src/rsbuild/start-compiler-loader.ts | 49 ++++++-------- .../src/rsbuild/start-compiler-plugin.ts | 67 ++++++++++++------- .../src/rsbuild/start-manifest-plugin.ts | 13 +--- 6 files changed, 96 insertions(+), 79 deletions(-) diff --git a/e2e/react-start/basic/src/styles/app.css b/e2e/react-start/basic/src/styles/app.css index 126fd9a937c..0a5d2c761a8 100644 --- a/e2e/react-start/basic/src/styles/app.css +++ b/e2e/react-start/basic/src/styles/app.css @@ -13,7 +13,12 @@ html { body { margin: 0; - font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + font-family: + system-ui, + -apple-system, + BlinkMacSystemFont, + 'Segoe UI', + sans-serif; background-color: #f9fafb; color: #111827; } diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts index e0d9214dadf..33efc030beb 100644 --- a/packages/start-plugin-core/src/rsbuild/plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -304,8 +304,10 @@ export function TanStackStartRsbuildPluginCore( startFilePath ?? corePluginOpts.defaultEntryPaths.start, [ENTRY_POINTS.router]: routerFilePath, } - const resolvedClientEntry = entryAliasConfiguration[ENTRY_POINTS.client] - const resolvedServerEntry = entryAliasConfiguration[ENTRY_POINTS.server] + const resolvedClientEntry = + entryAliasConfiguration[ENTRY_POINTS.client] + const resolvedServerEntry = + entryAliasConfiguration[ENTRY_POINTS.server] const clientOutputDir = getOutputDirectory( root, @@ -369,13 +371,15 @@ export function TanStackStartRsbuildPluginCore( routeTreeFileFooter: [], plugins: [], } - const generatedRouteTreePath = routerPlugins.getGeneratedRouteTreePath() - const routeTreeModuleDeclarationValue = buildRouteTreeModuleDeclaration({ - generatedRouteTreePath, - routerFilePath: resolvedStartConfig.routerFilePath, - startFilePath: resolvedStartConfig.startFilePath, - framework: corePluginOpts.framework, - }) + const generatedRouteTreePath = + routerPlugins.getGeneratedRouteTreePath() + const routeTreeModuleDeclarationValue = + buildRouteTreeModuleDeclaration({ + generatedRouteTreePath, + routerFilePath: resolvedStartConfig.routerFilePath, + startFilePath: resolvedStartConfig.startFilePath, + framework: corePluginOpts.framework, + }) routeTreeModuleDeclaration = routeTreeModuleDeclarationValue routeTreeGeneratedPath = generatedRouteTreePath const registerDeclaration = `declare module '@tanstack/${corePluginOpts.framework}-start'` @@ -430,7 +434,8 @@ export function TanStackStartRsbuildPluginCore( root, framework: corePluginOpts.framework, providerEnvName: serverFnProviderEnv, - generateFunctionId: startPluginOpts?.serverFns?.generateFunctionId, + generateFunctionId: + startPluginOpts?.serverFns?.generateFunctionId, manifestPath, }, }, @@ -557,9 +562,8 @@ export function TanStackStartRsbuildPluginCore( if (startConfig.vite?.installDevServerMiddleware === false) { return } - const serverEnv = context.environments?.[ - VITE_ENVIRONMENT_NAMES.server - ] + const serverEnv = + context.environments?.[VITE_ENVIRONMENT_NAMES.server] middlewares.push(async (req: any, res: any, next: any) => { if (res.headersSent || res.writableEnded) { return next() @@ -573,7 +577,10 @@ export function TanStackStartRsbuildPluginCore( if (!serverBuild?.fetch) { return next() } - req.url = joinURL(resolvedStartConfig.viteAppBase, req.url ?? '/') + req.url = joinURL( + resolvedStartConfig.viteAppBase, + req.url ?? '/', + ) const webReq = new NodeRequest({ req, res }) const webRes = await serverBuild.fetch(webReq) return sendNodeResponse(res, webRes) diff --git a/packages/start-plugin-core/src/rsbuild/route-tree-state.ts b/packages/start-plugin-core/src/rsbuild/route-tree-state.ts index 18a09e5042e..35756a64bdd 100644 --- a/packages/start-plugin-core/src/rsbuild/route-tree-state.ts +++ b/packages/start-plugin-core/src/rsbuild/route-tree-state.ts @@ -15,7 +15,9 @@ export async function getClientRouteTreeContent(options?: { let generator = generatorInstance if (!generator) { if (!options?.routerConfig || !options.root) { - throw new Error('Generator instance not initialized for route tree loader') + throw new Error( + 'Generator instance not initialized for route tree loader', + ) } generator = new Generator({ config: options.routerConfig, diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts index f2c442755ec..57ea209eada 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts @@ -130,27 +130,23 @@ async function resolveId( conditionNames: ['import', 'module', 'default'], }) ?? loaderContext.resolve - resolver( - resolveContext, - source, - (err: Error | null, result?: string) => { - if (!err && result) { - resolve(cleanId(result)) - return - } - try { - const resolved = require.resolve(source, { - paths: [ - baseContext, - loaderContext.rootContext || loaderContext.context, - ].filter(Boolean), - }) - resolve(cleanId(resolved)) - } catch { - resolve(null) - } - }, - ) + resolver(resolveContext, source, (err: Error | null, result?: string) => { + if (!err && result) { + resolve(cleanId(result)) + return + } + try { + const resolved = require.resolve(source, { + paths: [ + baseContext, + loaderContext.rootContext || loaderContext.context, + ].filter(Boolean), + }) + resolve(cleanId(resolved)) + } catch { + resolve(null) + } + }) }) } @@ -163,7 +159,7 @@ async function loadModule( const resolvedPath = cleaned.startsWith('.') || cleaned.startsWith('/') ? cleaned - : (await resolveId(loaderContext, cleaned)) ?? cleaned + : ((await resolveId(loaderContext, cleaned)) ?? cleaned) if (resolvedPath.includes('\0')) return @@ -175,11 +171,7 @@ async function loadModule( } } -export default function startCompilerLoader( - this: any, - code: string, - map: any, -) { +export default function startCompilerLoader(this: any, code: string, map: any) { const callback = this.async() const options = this.getOptions() as LoaderOptions @@ -199,7 +191,8 @@ export default function startCompilerLoader( let compiler = compilers.get(envName) if (!compiler) { const mode = - this.mode === 'production' || this._compiler?.options?.mode === 'production' + this.mode === 'production' || + this._compiler?.options?.mode === 'production' ? 'build' : 'dev' const shouldPersistManifest = Boolean(manifestPath) && mode === 'build' diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts index 20d773acb06..d1b8b800f74 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts @@ -65,7 +65,9 @@ const getCompilationModuleIdentifiers = (module: any) => module.resource, module.userRequest, module.request, - typeof module.identifier === 'function' ? module.identifier() : module.identifier, + typeof module.identifier === 'function' + ? module.identifier() + : module.identifier, module.debugId, ] .filter(Boolean) @@ -301,19 +303,21 @@ export function createServerFnManifestRspackPlugin(opts: { ) const chunkGraph = compilation?.chunkGraph const moduleGraph = compilation?.moduleGraph - const compilationEntries = compilationModules.flatMap((module: any) => { - const identifiers = getCompilationModuleIdentifiers(module) - if (identifiers.length === 0) return [] - const chunkFiles = chunkGraph - ? Array.from(chunkGraph.getModuleChunksIterable(module) ?? []).flatMap( - (chunk: any) => getChunkFiles(chunk), - ) - : [] - return identifiers.map((identifier) => ({ - identifier, - files: chunkFiles, - })) - }) + const compilationEntries = compilationModules.flatMap( + (module: any) => { + const identifiers = getCompilationModuleIdentifiers(module) + if (identifiers.length === 0) return [] + const chunkFiles = chunkGraph + ? Array.from( + chunkGraph.getModuleChunksIterable(module) ?? [], + ).flatMap((chunk: any) => getChunkFiles(chunk)) + : [] + return identifiers.map((identifier) => ({ + identifier, + files: chunkFiles, + })) + }, + ) const assetFiles = (statsJson?.assets ?? []) .map((asset: any) => asset.name ?? asset) .filter((name: string) => typeof name === 'string') @@ -328,7 +332,8 @@ export function createServerFnManifestRspackPlugin(opts: { ? compilation.assets.get(assetName) : undefined) const sourceValue = - assetFromCompilation && typeof assetFromCompilation.source === 'function' + assetFromCompilation && + typeof assetFromCompilation.source === 'function' ? assetFromCompilation.source() : assetFromCompilation if (typeof sourceValue === 'string') return sourceValue @@ -357,7 +362,10 @@ export function createServerFnManifestRspackPlugin(opts: { } const manifestWithImporters: Record = {} for (const [id, info] of Object.entries(mergedServerFnsById)) { - const normalizedExtracted = info.extractedFilename.replace(/\\/g, '/') + const normalizedExtracted = info.extractedFilename.replace( + /\\/g, + '/', + ) const normalizedFilename = info.filename.replace(/\\/g, '/') const searchTokens = [ normalizedExtracted, @@ -377,8 +385,10 @@ export function createServerFnManifestRspackPlugin(opts: { identifier.includes(normalizedFilename), ), ) - const matchedModule = matchedModuleByExtracted ?? matchedModuleByFilename - const chunkIds = matchedModule?.chunks ?? matchedModule?.chunkIds ?? [] + const matchedModule = + matchedModuleByExtracted ?? matchedModuleByFilename + const chunkIds = + matchedModule?.chunks ?? matchedModule?.chunkIds ?? [] const statsModuleId = matchedModule?.id ?? matchedModule?.moduleId const chunkFiles = chunkIds.flatMap((chunkId: any) => { return chunksById.get(chunkId) ?? [] @@ -401,7 +411,8 @@ export function createServerFnManifestRspackPlugin(opts: { ), ) const matchedCompilationModule = - matchedCompilationModuleByExtracted ?? matchedCompilationModuleByFilename + matchedCompilationModuleByExtracted ?? + matchedCompilationModuleByFilename const exportsInfo = matchedCompilationModule ? moduleGraph?.getExportsInfo?.(matchedCompilationModule) : null @@ -418,9 +429,16 @@ export function createServerFnManifestRspackPlugin(opts: { : undefined const compilationChunkIds = matchedCompilationModule && chunkGraph - ? Array.from(chunkGraph.getModuleChunksIterable(matchedCompilationModule)) + ? Array.from( + chunkGraph.getModuleChunksIterable( + matchedCompilationModule, + ), + ) .map((chunk: any) => chunk.id) - .filter((chunkId: any) => chunkId !== undefined && chunkId !== null) + .filter( + (chunkId: any) => + chunkId !== undefined && chunkId !== null, + ) : [] const compilationModuleId = matchedCompilationModule?.id ?? @@ -472,7 +490,8 @@ export function createServerFnManifestRspackPlugin(opts: { : compilationChunkIds.length > 0 ? compilationChunkIds : undefined, - importerModuleId: statsModuleId ?? (compilationModuleId ?? undefined), + importerModuleId: + statsModuleId ?? compilationModuleId ?? undefined, } } const extractExportName = ( @@ -529,9 +548,7 @@ export function createServerFnManifestRspackPlugin(opts: { if (idIndex === -1) return undefined const beforeId = content.slice(Math.max(0, idIndex - 1500), idIndex) const matches = Array.from( - beforeId.matchAll( - /(?:^|[,{])\s*([0-9]+)\s*:\s*(?:function|\()/g, - ), + beforeId.matchAll(/(?:^|[,{])\s*([0-9]+)\s*:\s*(?:function|\()/g), ) const moduleId = matches[matches.length - 1]?.[1] if (!moduleId) return undefined diff --git a/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts index 74eff928c99..14b8e2e1106 100644 --- a/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-manifest-plugin.ts @@ -165,8 +165,7 @@ function buildStartManifest({ statsJson: StatsJson basePath: string }): Manifest & { clientEntry: string } { - const { entrypointName, assets: entryAssets } = - getStatsEntryAssets(statsJson) + const { entrypointName, assets: entryAssets } = getStatsEntryAssets(statsJson) const entryJsAssets = unique(entryAssets.filter(isJsAsset)) const entryCssAssets = unique(entryAssets.filter(isCssAsset)) @@ -226,9 +225,7 @@ function buildStartManifest({ } }) - const entryScriptAssets = entryJsAssets.filter( - (asset) => asset !== entryFile, - ) + const entryScriptAssets = entryJsAssets.filter((asset) => asset !== entryFile) manifest.routes[rootRouteId] = { ...(manifest.routes[rootRouteId] ?? {}), @@ -272,11 +269,7 @@ export function createStartManifestRspackPlugin(opts: { START_MANIFEST_FILE, ) await fsp.mkdir(path.dirname(manifestPath), { recursive: true }) - await fsp.writeFile( - manifestPath, - JSON.stringify(manifest), - 'utf-8', - ) + await fsp.writeFile(manifestPath, JSON.stringify(manifest), 'utf-8') }, ) }, From ffc2b97ca63c0dd86b4df4799289954d263c2d8a Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 9 Feb 2026 12:57:57 -0800 Subject: [PATCH 009/102] ci: retrigger PR checks after preview service failure Re-run CI after an external pkg.pr.new Cloudflare worker error in the Preview publish step. Co-authored-by: Cursor From 1d4155bd627834f7695ac50b8f6bb45d996ab94c Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 9 Feb 2026 13:27:33 -0800 Subject: [PATCH 010/102] fix: address PR review issues in rsbuild integration Resolve branch-introduced review findings by hardening response/redirect handling, fixing prerender retry behavior, tightening workflow and peer dependency metadata, and improving rsbuild/webpack/vite plugin consistency. Co-authored-by: Cursor --- .github/workflows/autofix.yml | 3 +- e2e/react-start/basic/rsbuild.config.ts | 4 +- e2e/react-start/basic/scripts/run-bundler.mjs | 3 ++ packages/react-start/package.json | 3 ++ packages/router-plugin/src/vite.ts | 2 + packages/router-plugin/src/webpack.ts | 12 +++++ .../src/client-rpc/serverFnFetcher.ts | 27 ++++++++++-- packages/start-plugin-core/package.json | 3 ++ .../src/post-server-build.ts | 2 +- .../start-plugin-core/src/rsbuild/plugin.ts | 17 +++---- .../src/rsbuild/post-server-build.ts | 2 +- .../src/rsbuild/prerender.ts | 8 +++- .../src/rsbuild/start-compiler-loader.ts | 44 ++++++++++++------- .../src/rsbuild/start-compiler-plugin.ts | 21 ++++++--- .../src/server-functions-handler.ts | 11 +++-- 15 files changed, 115 insertions(+), 47 deletions(-) diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index f4925c53145..4ab8d059936 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -10,8 +10,7 @@ concurrency: cancel-in-progress: true permissions: - contents: write - pull-requests: write + contents: read jobs: autofix: diff --git a/e2e/react-start/basic/rsbuild.config.ts b/e2e/react-start/basic/rsbuild.config.ts index bd9be5efbd0..e82c1c30367 100644 --- a/e2e/react-start/basic/rsbuild.config.ts +++ b/e2e/react-start/basic/rsbuild.config.ts @@ -1,7 +1,7 @@ -import { defineConfig } from '@rsbuild/core' -import { pluginReact } from '@rsbuild/plugin-react' import path from 'node:path' import { fileURLToPath } from 'node:url' +import { defineConfig } from '@rsbuild/core' +import { pluginReact } from '@rsbuild/plugin-react' import { tanstackStart } from '@tanstack/react-start/plugin/rsbuild' import { isSpaMode } from './tests/utils/isSpaMode' import { isPrerender } from './tests/utils/isPrerender' diff --git a/e2e/react-start/basic/scripts/run-bundler.mjs b/e2e/react-start/basic/scripts/run-bundler.mjs index eae38814959..edfc8fcabbf 100644 --- a/e2e/react-start/basic/scripts/run-bundler.mjs +++ b/e2e/react-start/basic/scripts/run-bundler.mjs @@ -25,6 +25,9 @@ const run = (cmd, cmdArgs) => env: process.env, shell: process.platform === 'win32', }) + child.on('error', (error) => { + reject(error) + }) child.on('close', (code) => { if (code === 0) { resolve() diff --git a/packages/react-start/package.json b/packages/react-start/package.json index 0b658714f81..727792d4139 100644 --- a/packages/react-start/package.json +++ b/packages/react-start/package.json @@ -115,6 +115,9 @@ "peerDependenciesMeta": { "@rsbuild/core": { "optional": true + }, + "vite": { + "optional": true } } } diff --git a/packages/router-plugin/src/vite.ts b/packages/router-plugin/src/vite.ts index 75b66f31aa2..c7bd6a5dcea 100644 --- a/packages/router-plugin/src/vite.ts +++ b/packages/router-plugin/src/vite.ts @@ -34,6 +34,7 @@ const tanstackRouterGenerator = createVitePlugin(unpluginRouterGeneratorFactory) const tanStackRouterCodeSplitter = createVitePlugin( unpluginRouterCodeSplitterFactory, ) +const tanstackRouterCodeSplitter = tanStackRouterCodeSplitter /** * @example @@ -57,6 +58,7 @@ export { getConfig, tanstackRouterAutoImport, tanStackRouterCodeSplitter, + tanstackRouterCodeSplitter, tanstackRouterGenerator, TanStackRouterVite, tanstackRouter, diff --git a/packages/router-plugin/src/webpack.ts b/packages/router-plugin/src/webpack.ts index a718e6056af..d3b19d730eb 100644 --- a/packages/router-plugin/src/webpack.ts +++ b/packages/router-plugin/src/webpack.ts @@ -4,6 +4,7 @@ import { configSchema } from './core/config' import { unpluginRouterCodeSplitterFactory } from './core/router-code-splitter-plugin' import { unpluginRouterGeneratorFactory } from './core/router-generator-plugin' import { unpluginRouterComposedFactory } from './core/router-composed-plugin' +import { unpluginRouteAutoImportFactory } from './core/route-autoimport-plugin' import type { CodeSplittingOptions, Config } from './core/config' /** @@ -32,6 +33,10 @@ const TanStackRouterCodeSplitterWebpack = /* #__PURE__ */ createWebpackPlugin( unpluginRouterCodeSplitterFactory, ) +const TanStackRouterAutoImportWebpack = /* #__PURE__ */ createWebpackPlugin( + unpluginRouteAutoImportFactory, +) + /** * @example * ```ts @@ -45,6 +50,9 @@ const TanStackRouterWebpack = /* #__PURE__ */ createWebpackPlugin( unpluginRouterComposedFactory, ) +const tanstackRouterGenerator = TanStackRouterGeneratorWebpack +const tanstackRouterCodeSplitter = TanStackRouterCodeSplitterWebpack +const tanstackRouterAutoImport = TanStackRouterAutoImportWebpack const tanstackRouter = TanStackRouterWebpack export default TanStackRouterWebpack export { @@ -52,6 +60,10 @@ export { TanStackRouterWebpack, TanStackRouterGeneratorWebpack, TanStackRouterCodeSplitterWebpack, + TanStackRouterAutoImportWebpack, + tanstackRouterGenerator, + tanstackRouterCodeSplitter, + tanstackRouterAutoImport, tanstackRouter, } export type { Config, CodeSplittingOptions } diff --git a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts index 304427cc3d0..7d74a487301 100644 --- a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts +++ b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts @@ -21,6 +21,11 @@ import type { Plugin as SerovalPlugin } from 'seroval' let serovalPlugins: Array> | null = null +type ResponseLike = Pick< + Response, + 'status' | 'ok' | 'headers' | 'body' | 'json' | 'text' +> + /** * Checks if an object has at least one own enumerable property. * More efficient than Object.keys(obj).length > 0 as it short-circuits on first property. @@ -35,7 +40,7 @@ function hasOwnProperties(obj: object): boolean { return false } -function isResponseLike(value: unknown): value is Response { +function isResponseLike(value: unknown): value is ResponseLike { if (value instanceof Response) { return true } @@ -45,8 +50,22 @@ function isResponseLike(value: unknown): value is Response { if (!('status' in value) || !('headers' in value)) { return false } - const headers = (value as { headers?: { get?: unknown } }).headers - return typeof headers?.get === 'function' + const candidate = value as { + headers?: { get?: unknown; set?: unknown } + json?: unknown + text?: unknown + body?: unknown + ok?: unknown + } + const headers = candidate.headers + return ( + typeof headers?.get === 'function' && + typeof headers?.set === 'function' && + typeof candidate.json === 'function' && + typeof candidate.text === 'function' && + 'body' in candidate && + typeof candidate.ok === 'boolean' + ) } function parseRedirectFallback(payload: unknown) { @@ -199,7 +218,7 @@ async function getFetchBody( * @throws If the response is invalid or an error occurs during processing. */ async function getResponse(fn: () => Promise) { - let response: Response + let response: ResponseLike try { response = await fn() // client => server => fn => server => client } catch (error) { diff --git a/packages/start-plugin-core/package.json b/packages/start-plugin-core/package.json index 89761e9567e..5207a058c19 100644 --- a/packages/start-plugin-core/package.json +++ b/packages/start-plugin-core/package.json @@ -100,6 +100,9 @@ "peerDependenciesMeta": { "@rsbuild/core": { "optional": true + }, + "vite": { + "optional": true } } } diff --git a/packages/start-plugin-core/src/post-server-build.ts b/packages/start-plugin-core/src/post-server-build.ts index 478b2ef2104..036465b50af 100644 --- a/packages/start-plugin-core/src/post-server-build.ts +++ b/packages/start-plugin-core/src/post-server-build.ts @@ -43,7 +43,7 @@ export async function postServerBuild({ prerender: { ...startConfig.spa.prerender, headers: { - ...startConfig.spa.prerender.headers, + ...(startConfig.spa.prerender.headers ?? {}), [HEADERS.TSS_SHELL]: 'true', }, }, diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts index 33efc030beb..716b8bbe0cb 100644 --- a/packages/start-plugin-core/src/rsbuild/plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -598,9 +598,9 @@ export function TanStackStartRsbuildPluginCore( if (typeof existingSetupMiddlewares === 'function') { existingSetupMiddlewares(middlewares, context) } else if (Array.isArray(existingSetupMiddlewares)) { - existingSetupMiddlewares.forEach((fn: any) => - fn(middlewares, context), - ) + existingSetupMiddlewares.forEach((fn: any) => { + fn(middlewares, context) + }) } setupMiddlewares(middlewares, context) } @@ -714,11 +714,12 @@ export function TanStackStartRsbuildPluginCore( } if (!serverBuild) { - const outputFilename = 'server.js' - const serverEntryPath = path.join( - serverOutputDir, - outputFilename, - ) + const outputCandidates = ['server.js', 'server.mjs', 'index.js'] + const outputFilename = + outputCandidates.find((candidate) => + fs.existsSync(path.join(serverOutputDir, candidate)), + ) ?? 'server.js' + const serverEntryPath = path.join(serverOutputDir, outputFilename) const imported = await import( pathToFileURL(serverEntryPath).toString() ) diff --git a/packages/start-plugin-core/src/rsbuild/post-server-build.ts b/packages/start-plugin-core/src/rsbuild/post-server-build.ts index 5aa1844a296..c8ccbbd0ac2 100644 --- a/packages/start-plugin-core/src/rsbuild/post-server-build.ts +++ b/packages/start-plugin-core/src/rsbuild/post-server-build.ts @@ -40,7 +40,7 @@ export async function postServerBuildRsbuild({ prerender: { ...startConfig.spa.prerender, headers: { - ...startConfig.spa.prerender.headers, + ...(startConfig.spa.prerender.headers ?? {}), [HEADERS.TSS_SHELL]: 'true', }, }, diff --git a/packages/start-plugin-core/src/rsbuild/prerender.ts b/packages/start-plugin-core/src/rsbuild/prerender.ts index 0669c90e9db..a86278dfeb9 100644 --- a/packages/start-plugin-core/src/rsbuild/prerender.ts +++ b/packages/start-plugin-core/src/rsbuild/prerender.ts @@ -232,11 +232,15 @@ export async function prerender({ } } catch (error) { if (retries < (prerenderOptions.retryCount ?? 0)) { - logger.warn(`Encountered error, retrying: ${page.path} in 500ms`) + const resolvedDelay = prerenderOptions.retryDelay ?? 500 + logger.warn( + `Encountered error, retrying: ${page.path} in ${resolvedDelay}ms`, + ) await new Promise((resolve) => - setTimeout(resolve, prerenderOptions.retryDelay), + setTimeout(resolve, resolvedDelay), ) retriesByPath.set(page.path, retries + 1) + seen.delete(page.path) addCrawlPageTask(page) } else { if (prerenderOptions.failOnError ?? true) { diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts index 57ea209eada..b2da2da9736 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts @@ -38,6 +38,12 @@ const appendServerFnsToManifest = ( } export const getServerFnsById = () => serverFnsById +export const resetServerFnCompilerState = () => { + compilers.clear() + for (const key of Object.keys(serverFnsById)) { + delete serverFnsById[key] + } +} // Derive transform code filter from KindDetectionPatterns (single source of truth) function getTransformCodeFilterForEnv(env: 'client' | 'server'): Array { @@ -130,23 +136,27 @@ async function resolveId( conditionNames: ['import', 'module', 'default'], }) ?? loaderContext.resolve - resolver(resolveContext, source, (err: Error | null, result?: string) => { - if (!err && result) { - resolve(cleanId(result)) - return - } - try { - const resolved = require.resolve(source, { - paths: [ - baseContext, - loaderContext.rootContext || loaderContext.context, - ].filter(Boolean), - }) - resolve(cleanId(resolved)) - } catch { - resolve(null) - } - }) + try { + resolver(resolveContext, source, (err: Error | null, result?: string) => { + if (!err && result) { + resolve(cleanId(result)) + return + } + try { + const resolved = require.resolve(source, { + paths: [ + baseContext, + loaderContext.rootContext || loaderContext.context, + ].filter(Boolean), + }) + resolve(cleanId(resolved)) + } catch { + resolve(null) + } + }) + } catch { + resolve(null) + } }) } diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts index d1b8b800f74..ba868f44116 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts @@ -3,7 +3,10 @@ import path from 'node:path' import { createRspackPlugin } from 'unplugin' import { VIRTUAL_MODULES } from '@tanstack/start-server-core' import { VITE_ENVIRONMENT_NAMES } from '../constants' -import { getServerFnsById } from './start-compiler-loader' +import { + getServerFnsById, + resetServerFnCompilerState, +} from './start-compiler-loader' import type { ServerFn } from '../start-compiler-plugin/types' const SERVER_FN_MANIFEST_FILE = 'tanstack-start-server-fn-manifest.json' @@ -79,8 +82,8 @@ function generateManifestModule( ): string { const manifestEntries = Object.entries(serverFnsById) .map(([id, fn]) => { - const baseEntry = `'${id}': { - functionName: '${fn.functionName}', + const baseEntry = `${JSON.stringify(id)}: { + functionName: ${JSON.stringify(fn.functionName)}, importer: () => import(${JSON.stringify(fn.extractedFilename)})${ includeClientReferencedCheck ? `, @@ -180,8 +183,7 @@ function generateManifestModuleFromFile( cached = JSON.parse(raw) return cached } catch (error) { - cached = {} - return cached + return {} } } @@ -262,6 +264,7 @@ export function createServerFnManifestRspackPlugin(opts: { compiler.hooks.beforeRun.tapPromise( 'tanstack-start:server-fn-manifest', async () => { + resetServerFnCompilerState() await fsp.rm(tempManifestPath, { force: true }) }, ) @@ -514,8 +517,14 @@ export function createServerFnManifestRspackPlugin(opts: { const handlerVar = assignmentMatches[assignmentMatches.length - 1]?.[1] if (!handlerVar) return undefined + const escapedHandlerVar = handlerVar.replace( + /[.*+?^${}()|[\]\\]/g, + '\\$&', + ) const exportMatch = scope.match( - new RegExp(`([A-Za-z_$][\\\\w$]*):\\\\(\\\\)=>${handlerVar}`), + new RegExp( + `([A-Za-z_$][\\\\w$]*):\\\\(\\\\)=>${escapedHandlerVar}`, + ), ) return exportMatch?.[1] } diff --git a/packages/start-server-core/src/server-functions-handler.ts b/packages/start-server-core/src/server-functions-handler.ts index e5774627bfb..eee12022d00 100644 --- a/packages/start-server-core/src/server-functions-handler.ts +++ b/packages/start-server-core/src/server-functions-handler.ts @@ -174,7 +174,7 @@ export const handleServerAction = async ({ if (isResponseLike(unwrapped)) { const isRedirectResponse = - isRedirect(unwrapped) || Boolean(getRedirectOptions(unwrapped)) + isRedirect(unwrapped) || Boolean(redirectOptions) if (isRedirectResponse) { return unwrapped } @@ -331,7 +331,7 @@ export const handleServerAction = async ({ ) } const isRedirectResponse = - isRedirect(error) || Boolean(getRedirectOptions(error)) + isRedirect(error) || Boolean(redirectOptions) if (isRedirectResponse) { return error } @@ -406,8 +406,11 @@ function isResponseLike(value: unknown): value is Response { if (!('status' in value) || !('headers' in value)) { return false } - const headers = (value as { headers?: { get?: unknown } }).headers - return typeof headers?.get === 'function' + const headers = (value as { headers?: { get?: unknown; set?: unknown } }) + .headers + return ( + typeof headers?.get === 'function' && typeof headers?.set === 'function' + ) } function getRedirectOptions( From 13a75306b9a4c32358d6fe211e851abb7f47b797 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 21:29:06 +0000 Subject: [PATCH 011/102] ci: apply automated fixes --- packages/start-plugin-core/src/rsbuild/plugin.ts | 5 ++++- packages/start-plugin-core/src/rsbuild/prerender.ts | 4 +--- packages/start-server-core/src/server-functions-handler.ts | 3 +-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts index 716b8bbe0cb..07773ee23ef 100644 --- a/packages/start-plugin-core/src/rsbuild/plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -719,7 +719,10 @@ export function TanStackStartRsbuildPluginCore( outputCandidates.find((candidate) => fs.existsSync(path.join(serverOutputDir, candidate)), ) ?? 'server.js' - const serverEntryPath = path.join(serverOutputDir, outputFilename) + const serverEntryPath = path.join( + serverOutputDir, + outputFilename, + ) const imported = await import( pathToFileURL(serverEntryPath).toString() ) diff --git a/packages/start-plugin-core/src/rsbuild/prerender.ts b/packages/start-plugin-core/src/rsbuild/prerender.ts index a86278dfeb9..f636a0edaae 100644 --- a/packages/start-plugin-core/src/rsbuild/prerender.ts +++ b/packages/start-plugin-core/src/rsbuild/prerender.ts @@ -236,9 +236,7 @@ export async function prerender({ logger.warn( `Encountered error, retrying: ${page.path} in ${resolvedDelay}ms`, ) - await new Promise((resolve) => - setTimeout(resolve, resolvedDelay), - ) + await new Promise((resolve) => setTimeout(resolve, resolvedDelay)) retriesByPath.set(page.path, retries + 1) seen.delete(page.path) addCrawlPageTask(page) diff --git a/packages/start-server-core/src/server-functions-handler.ts b/packages/start-server-core/src/server-functions-handler.ts index eee12022d00..fee97734fea 100644 --- a/packages/start-server-core/src/server-functions-handler.ts +++ b/packages/start-server-core/src/server-functions-handler.ts @@ -330,8 +330,7 @@ export const handleServerAction = async ({ { headers: getResponseHeaders(error) }, ) } - const isRedirectResponse = - isRedirect(error) || Boolean(redirectOptions) + const isRedirectResponse = isRedirect(error) || Boolean(redirectOptions) if (isRedirectResponse) { return error } From 448340dfefa2c837c8009d5b501c2970a9bf4bb5 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 9 Feb 2026 13:44:09 -0800 Subject: [PATCH 012/102] fix: restore response typing in server fn fetcher Use a Response type guard-compatible response variable while keeping stricter runtime checks so start-client-core type and eslint checks pass in CI. Co-authored-by: Cursor --- .../src/client-rpc/serverFnFetcher.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts index 7d74a487301..872df139c66 100644 --- a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts +++ b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts @@ -21,11 +21,6 @@ import type { Plugin as SerovalPlugin } from 'seroval' let serovalPlugins: Array> | null = null -type ResponseLike = Pick< - Response, - 'status' | 'ok' | 'headers' | 'body' | 'json' | 'text' -> - /** * Checks if an object has at least one own enumerable property. * More efficient than Object.keys(obj).length > 0 as it short-circuits on first property. @@ -40,7 +35,7 @@ function hasOwnProperties(obj: object): boolean { return false } -function isResponseLike(value: unknown): value is ResponseLike { +function isResponseLike(value: unknown): value is Response { if (value instanceof Response) { return true } @@ -59,8 +54,9 @@ function isResponseLike(value: unknown): value is ResponseLike { } const headers = candidate.headers return ( - typeof headers?.get === 'function' && - typeof headers?.set === 'function' && + !!headers && + typeof headers.get === 'function' && + typeof headers.set === 'function' && typeof candidate.json === 'function' && typeof candidate.text === 'function' && 'body' in candidate && @@ -218,7 +214,7 @@ async function getFetchBody( * @throws If the response is invalid or an error occurs during processing. */ async function getResponse(fn: () => Promise) { - let response: ResponseLike + let response: Response try { response = await fn() // client => server => fn => server => client } catch (error) { From 4ccdde42b37b1af6df0f000e78ab63200d419b77 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 9 Feb 2026 16:27:23 -0800 Subject: [PATCH 013/102] fix: satisfy response-like eslint guard in server handler Remove unnecessary optional chaining in the response-like header guard so start-server-core eslint passes in CI. Co-authored-by: Cursor --- packages/start-server-core/src/server-functions-handler.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/start-server-core/src/server-functions-handler.ts b/packages/start-server-core/src/server-functions-handler.ts index fee97734fea..54d5d4c6e96 100644 --- a/packages/start-server-core/src/server-functions-handler.ts +++ b/packages/start-server-core/src/server-functions-handler.ts @@ -408,7 +408,9 @@ function isResponseLike(value: unknown): value is Response { const headers = (value as { headers?: { get?: unknown; set?: unknown } }) .headers return ( - typeof headers?.get === 'function' && typeof headers?.set === 'function' + !!headers && + typeof headers.get === 'function' && + typeof headers.set === 'function' ) } From 21d9b1177cfa09a38583240450df27ab9e12d0f9 Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 9 Feb 2026 19:23:55 -0800 Subject: [PATCH 014/102] refactor: resolve remaining PR #6623 review suggestions Extract shared route-tree and loader helpers, harden rsbuild middleware and route tree cleanup behavior, and address prerender/loader edge cases surfaced by review feedback. Co-authored-by: Cursor --- .../src/client-rpc/serverFnFetcher.ts | 3 +- .../start-plugin-core/src/rsbuild/plugin.ts | 87 +++++-------------- .../src/rsbuild/prerender.ts | 11 ++- .../src/rsbuild/resolve-loader-path.ts | 18 ++++ .../src/rsbuild/start-compiler-loader.ts | 7 +- .../src/rsbuild/start-compiler-plugin.ts | 13 ++- .../src/rsbuild/start-router-plugin.ts | 72 +-------------- .../src/start-router-plugin/plugin.ts | 62 +------------ .../route-tree-module-declaration.ts | 64 ++++++++++++++ 9 files changed, 136 insertions(+), 201 deletions(-) create mode 100644 packages/start-plugin-core/src/rsbuild/resolve-loader-path.ts create mode 100644 packages/start-plugin-core/src/start-router-plugin/route-tree-module-declaration.ts diff --git a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts index 872df139c66..8d005a7d92e 100644 --- a/packages/start-client-core/src/client-rpc/serverFnFetcher.ts +++ b/packages/start-client-core/src/client-rpc/serverFnFetcher.ts @@ -18,6 +18,7 @@ import { import { createFrameDecoder } from './frame-decoder' import type { FunctionMiddlewareClientFnOptions } from '../createMiddleware' import type { Plugin as SerovalPlugin } from 'seroval' +import type { RedirectOptions } from '@tanstack/router-core' let serovalPlugins: Array> | null = null @@ -77,7 +78,7 @@ function parseRedirectFallback(payload: unknown) { ) { return undefined } - return redirect(payload as any) + return redirect(payload as unknown as RedirectOptions) } // caller => // serverFnFetcher => diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts index 07773ee23ef..85280514045 100644 --- a/packages/start-plugin-core/src/rsbuild/plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -1,5 +1,5 @@ import fs from 'node:fs' -import { fileURLToPath, pathToFileURL } from 'node:url' +import { pathToFileURL } from 'node:url' import { joinPaths } from '@tanstack/router-core' import { NodeRequest, sendNodeResponse } from 'srvx/node' @@ -8,7 +8,9 @@ import { joinURL } from 'ufo' import { ENTRY_POINTS, VITE_ENVIRONMENT_NAMES } from '../constants' import { resolveEntry } from '../resolve-entries' import { parseStartConfig } from '../schema' +import { createRouteTreeModuleDeclaration } from '../start-router-plugin/route-tree-module-declaration' import { createInjectedHeadScriptsPlugin } from './injected-head-scripts-plugin' +import { resolveLoaderPath } from './resolve-loader-path' import { SERVER_FN_MANIFEST_TEMP_FILE, createServerFnManifestRspackPlugin, @@ -41,52 +43,6 @@ function isFullUrl(str: string): boolean { } } -function buildRouteTreeModuleDeclaration(opts: { - generatedRouteTreePath: string - routerFilePath: string - startFilePath?: string - framework: string -}) { - const getImportPath = (absolutePath: string) => { - let relativePath = path.relative( - path.dirname(opts.generatedRouteTreePath), - absolutePath, - ) - if (!relativePath.startsWith('.')) { - relativePath = `./${relativePath}` - } - return relativePath.split(path.sep).join('/') - } - - const result: Array = [ - `import type { getRouter } from '${getImportPath(opts.routerFilePath)}'`, - ] - if (opts.startFilePath) { - result.push( - `import type { startInstance } from '${getImportPath(opts.startFilePath)}'`, - ) - } else { - result.push( - `import type { createStart } from '@tanstack/${opts.framework}-start'`, - ) - } - result.push( - `declare module '@tanstack/${opts.framework}-start' { - interface Register { - ssr: true - router: Awaited>`, - ) - if (opts.startFilePath) { - result.push( - ` config: Awaited>`, - ) - } - result.push(` } -}`) - - return result.join('\n') -} - function defineReplaceEnv( key: TKey, value: TValue, @@ -170,16 +126,6 @@ function toPluginArray(plugin: any) { return Array.isArray(plugin) ? plugin : [plugin] } -function resolveLoaderPath(relativePath: string) { - const currentDir = path.dirname(fileURLToPath(import.meta.url)) - const basePath = path.resolve(currentDir, relativePath) - const jsPath = `${basePath}.js` - const tsPath = `${basePath}.ts` - if (fs.existsSync(jsPath)) return jsPath - if (fs.existsSync(tsPath)) return tsPath - return jsPath -} - export function TanStackStartRsbuildPluginCore( corePluginOpts: TanStackStartVitePluginCoreOptions, startPluginOpts: TanStackStartInputConfig, @@ -374,7 +320,7 @@ export function TanStackStartRsbuildPluginCore( const generatedRouteTreePath = routerPlugins.getGeneratedRouteTreePath() const routeTreeModuleDeclarationValue = - buildRouteTreeModuleDeclaration({ + createRouteTreeModuleDeclaration({ generatedRouteTreePath, routerFilePath: resolvedStartConfig.routerFilePath, startFilePath: resolvedStartConfig.startFilePath, @@ -389,7 +335,16 @@ export function TanStackStartRsbuildPluginCore( 'utf-8', ) if (!existingTree.includes(registerDeclaration)) { - fs.rmSync(generatedRouteTreePath) + const staleRouteTreePath = `${generatedRouteTreePath}.stale` + try { + fs.renameSync(generatedRouteTreePath, staleRouteTreePath) + fs.rmSync(staleRouteTreePath) + } catch (error: any) { + // Ignore transient concurrent-generation races and continue. + if (!['ENOENT', 'EBUSY'].includes(error?.code)) { + throw error + } + } } } @@ -577,11 +532,12 @@ export function TanStackStartRsbuildPluginCore( if (!serverBuild?.fetch) { return next() } - req.url = joinURL( + const requestWithBaseUrl = Object.create(req) + requestWithBaseUrl.url = joinURL( resolvedStartConfig.viteAppBase, req.url ?? '/', ) - const webReq = new NodeRequest({ req, res }) + const webReq = new NodeRequest({ req: requestWithBaseUrl, res }) const webRes = await serverBuild.fetch(webReq) return sendNodeResponse(res, webRes) } catch (error) { @@ -732,10 +688,13 @@ export function TanStackStartRsbuildPluginCore( if (!serverBuild?.fetch) { return next() } + const requestWithBaseUrl = Object.create(req) + requestWithBaseUrl.url = joinURL( + resolvedStartConfig.viteAppBase, + req.url ?? '/', + ) - req.url = joinURL(resolvedStartConfig.viteAppBase, req.url ?? '/') - - const webReq = new NodeRequest({ req, res }) + const webReq = new NodeRequest({ req: requestWithBaseUrl, res }) const webRes: Response = await serverBuild.fetch(webReq) return sendNodeResponse(res, webRes) } catch (error) { diff --git a/packages/start-plugin-core/src/rsbuild/prerender.ts b/packages/start-plugin-core/src/rsbuild/prerender.ts index f636a0edaae..d94bf1837e2 100644 --- a/packages/start-plugin-core/src/rsbuild/prerender.ts +++ b/packages/start-plugin-core/src/rsbuild/prerender.ts @@ -47,6 +47,7 @@ export async function prerender({ routerBaseUrl, ) + const previousPrerenderingEnv = process.env.TSS_PRERENDERING process.env.TSS_PRERENDERING = 'true' const serverBuild = await import(pathToFileURL(serverEntryPath).toString()) @@ -92,6 +93,13 @@ export async function prerender({ }) } catch (error) { logger.error(error) + throw error + } finally { + if (previousPrerenderingEnv === undefined) { + delete process.env.TSS_PRERENDERING + } else { + process.env.TSS_PRERENDERING = previousPrerenderingEnv + } } function extractLinks(html: string): Array { @@ -184,8 +192,9 @@ export async function prerender({ ? cleanPagePath + 'index' : cleanPagePath + const spaPrerender = startConfig.spa?.prerender const isSpaShell = - startConfig.spa?.prerender.outputPath === cleanPagePath + !!spaPrerender && spaPrerender.outputPath === cleanPagePath let htmlPath: string if (isSpaShell) { diff --git a/packages/start-plugin-core/src/rsbuild/resolve-loader-path.ts b/packages/start-plugin-core/src/rsbuild/resolve-loader-path.ts new file mode 100644 index 00000000000..097150c687a --- /dev/null +++ b/packages/start-plugin-core/src/rsbuild/resolve-loader-path.ts @@ -0,0 +1,18 @@ +import { fileURLToPath } from 'node:url' +import fs from 'node:fs' +import path from 'pathe' + +/** + * Resolve a local loader path to emitted JS when present, otherwise TS source. + */ +export function resolveLoaderPath(relativePath: string): string { + const currentDir = path.dirname(fileURLToPath(import.meta.url)) + const basePath = path.resolve(currentDir, relativePath) + const jsPath = `${basePath}.js` + const tsPath = `${basePath}.ts` + + if (fs.existsSync(jsPath)) return jsPath + if (fs.existsSync(tsPath)) return tsPath + + return jsPath +} diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts index b2da2da9736..a77b99ae852 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts @@ -167,11 +167,10 @@ async function loadModule( ) { const cleaned = cleanId(id) const resolvedPath = - cleaned.startsWith('.') || cleaned.startsWith('/') - ? cleaned - : ((await resolveId(loaderContext, cleaned)) ?? cleaned) + (await resolveId(loaderContext, cleaned)) ?? + (path.isAbsolute(cleaned) ? cleaned : null) - if (resolvedPath.includes('\0')) return + if (!resolvedPath || resolvedPath.includes('\0')) return try { const code = await fsp.readFile(resolvedPath, 'utf-8') diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts index ba868f44116..bf7261a7536 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts @@ -261,12 +261,17 @@ export function createServerFnManifestRspackPlugin(opts: { return { apply(compiler: any) { + const resetManifestState = async () => { + resetServerFnCompilerState() + await fsp.rm(tempManifestPath, { force: true }) + } compiler.hooks.beforeRun.tapPromise( 'tanstack-start:server-fn-manifest', - async () => { - resetServerFnCompilerState() - await fsp.rm(tempManifestPath, { force: true }) - }, + resetManifestState, + ) + compiler.hooks.watchRun.tapPromise( + 'tanstack-start:server-fn-manifest', + resetManifestState, ) compiler.hooks.afterEmit.tapPromise( 'tanstack-start:server-fn-manifest', diff --git a/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts index fff31f162e7..7cf530d7146 100644 --- a/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-router-plugin.ts @@ -1,5 +1,3 @@ -import { fileURLToPath } from 'node:url' -import fs from 'node:fs' import path from 'pathe' import { tanstackRouterAutoImport, @@ -8,76 +6,14 @@ import { } from '@tanstack/router-plugin/rspack' import { routesManifestPlugin } from '../start-router-plugin/generator-plugins/routes-manifest-plugin' import { prerenderRoutesPlugin } from '../start-router-plugin/generator-plugins/prerender-routes-plugin' +import { createRouteTreeModuleDeclaration } from '../start-router-plugin/route-tree-module-declaration' import { VITE_ENVIRONMENT_NAMES } from '../constants' import { setGeneratorInstance } from './route-tree-state' +import { resolveLoaderPath } from './resolve-loader-path' import type { GetConfigFn, TanStackStartVitePluginCoreOptions } from '../types' import type { GeneratorPlugin } from '@tanstack/router-generator' import type { TanStackStartInputConfig } from '../schema' -function moduleDeclaration({ - startFilePath, - routerFilePath, - corePluginOpts, - generatedRouteTreePath, -}: { - startFilePath: string | undefined - routerFilePath: string - corePluginOpts: TanStackStartVitePluginCoreOptions - generatedRouteTreePath: string -}): string { - function getImportPath(absolutePath: string) { - let relativePath = path.relative( - path.dirname(generatedRouteTreePath), - absolutePath, - ) - - if (!relativePath.startsWith('.')) { - relativePath = './' + relativePath - } - - relativePath = relativePath.split(path.sep).join('/') - return relativePath - } - - const result: Array = [ - `import type { getRouter } from '${getImportPath(routerFilePath)}'`, - ] - if (startFilePath) { - result.push( - `import type { startInstance } from '${getImportPath(startFilePath)}'`, - ) - } else { - result.push( - `import type { createStart } from '@tanstack/${corePluginOpts.framework}-start'`, - ) - } - result.push( - `declare module '@tanstack/${corePluginOpts.framework}-start' { - interface Register { - ssr: true - router: Awaited>`, - ) - if (startFilePath) { - result.push( - ` config: Awaited>`, - ) - } - result.push(` } -}`) - - return result.join('\n') -} - -function resolveLoaderPath(relativePath: string) { - const currentDir = path.dirname(fileURLToPath(import.meta.url)) - const basePath = path.resolve(currentDir, relativePath) - const jsPath = `${basePath}.js` - const tsPath = `${basePath}.ts` - if (fs.existsSync(jsPath)) return jsPath - if (fs.existsSync(tsPath)) return tsPath - return jsPath -} - export function tanStackStartRouterRsbuild( startPluginOpts: TanStackStartInputConfig, getConfig: GetConfigFn, @@ -110,9 +46,9 @@ export function tanStackStartRouterRsbuild( } } routeTreeFileFooter = [ - moduleDeclaration({ + createRouteTreeModuleDeclaration({ generatedRouteTreePath: getGeneratedRouteTreePath(), - corePluginOpts, + framework: corePluginOpts.framework, startFilePath: resolvedStartConfig.startFilePath, routerFilePath: resolvedStartConfig.routerFilePath, }), diff --git a/packages/start-plugin-core/src/start-router-plugin/plugin.ts b/packages/start-plugin-core/src/start-router-plugin/plugin.ts index 1536d19c91e..a0e0ba6130f 100644 --- a/packages/start-plugin-core/src/start-router-plugin/plugin.ts +++ b/packages/start-plugin-core/src/start-router-plugin/plugin.ts @@ -9,6 +9,7 @@ import { VITE_ENVIRONMENT_NAMES } from '../constants' import { routesManifestPlugin } from './generator-plugins/routes-manifest-plugin' import { prerenderRoutesPlugin } from './generator-plugins/prerender-routes-plugin' import { pruneServerOnlySubtrees } from './pruneServerOnlySubtrees' +import { createRouteTreeModuleDeclaration } from './route-tree-module-declaration' import { SERVER_PROP } from './constants' import type { GetConfigFn, TanStackStartVitePluginCoreOptions } from '../types' import type { @@ -29,63 +30,6 @@ function isServerOnlyNode(node: RouteNode | undefined) { ) } -function moduleDeclaration({ - startFilePath, - routerFilePath, - corePluginOpts, - generatedRouteTreePath, -}: { - startFilePath: string | undefined - routerFilePath: string - corePluginOpts: TanStackStartVitePluginCoreOptions - generatedRouteTreePath: string -}): string { - function getImportPath(absolutePath: string) { - let relativePath = path.relative( - path.dirname(generatedRouteTreePath), - absolutePath, - ) - - if (!relativePath.startsWith('.')) { - relativePath = './' + relativePath - } - - // convert to POSIX-style for ESM imports (important on Windows) - relativePath = relativePath.split(path.sep).join('/') - return relativePath - } - - const result: Array = [ - `import type { getRouter } from '${getImportPath(routerFilePath)}'`, - ] - if (startFilePath) { - result.push( - `import type { startInstance } from '${getImportPath(startFilePath)}'`, - ) - } - // make sure we import something from start to get the server route declaration merge - else { - result.push( - `import type { createStart } from '@tanstack/${corePluginOpts.framework}-start'`, - ) - } - result.push( - `declare module '@tanstack/${corePluginOpts.framework}-start' { - interface Register { - ssr: true - router: Awaited>`, - ) - if (startFilePath) { - result.push( - ` config: Awaited>`, - ) - } - result.push(` } -}`) - - return result.join('\n') -} - export function tanStackStartRouter( startPluginOpts: TanStackStartInputConfig, getConfig: GetConfigFn, @@ -141,9 +85,9 @@ export function tanStackStartRouter( } } routeTreeFileFooter = [ - moduleDeclaration({ + createRouteTreeModuleDeclaration({ generatedRouteTreePath: getGeneratedRouteTreePath(), - corePluginOpts, + framework: corePluginOpts.framework, startFilePath: resolvedStartConfig.startFilePath, routerFilePath: resolvedStartConfig.routerFilePath, }), diff --git a/packages/start-plugin-core/src/start-router-plugin/route-tree-module-declaration.ts b/packages/start-plugin-core/src/start-router-plugin/route-tree-module-declaration.ts new file mode 100644 index 00000000000..13a922ec92c --- /dev/null +++ b/packages/start-plugin-core/src/start-router-plugin/route-tree-module-declaration.ts @@ -0,0 +1,64 @@ +import path from 'pathe' + +type RouteTreeModuleDeclarationOptions = { + generatedRouteTreePath: string + routerFilePath: string + framework: string + startFilePath?: string +} + +/** + * Resolve an import path from the generated route tree file to an absolute file path. + */ +function getImportPath( + generatedRouteTreePath: string, + absolutePath: string, +): string { + let relativePath = path.relative(path.dirname(generatedRouteTreePath), absolutePath) + + if (!relativePath.startsWith('.')) { + relativePath = `./${relativePath}` + } + + // Use POSIX import separators for generated module declarations. + return relativePath.split(path.sep).join('/') +} + +/** + * Build the framework-specific Register module augmentation appended to route trees. + */ +export function createRouteTreeModuleDeclaration( + options: RouteTreeModuleDeclarationOptions, +): string { + const result: Array = [ + `import type { getRouter } from '${getImportPath(options.generatedRouteTreePath, options.routerFilePath)}'`, + ] + + if (options.startFilePath) { + result.push( + `import type { startInstance } from '${getImportPath(options.generatedRouteTreePath, options.startFilePath)}'`, + ) + } else { + result.push( + `import type { createStart } from '@tanstack/${options.framework}-start'`, + ) + } + + result.push( + `declare module '@tanstack/${options.framework}-start' { + interface Register { + ssr: true + router: Awaited>`, + ) + + if (options.startFilePath) { + result.push( + ` config: Awaited>`, + ) + } + + result.push(` } +}`) + + return result.join('\n') +} From 56efe06bd963c29feda068cb34e00a7a93079f60 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 03:25:16 +0000 Subject: [PATCH 015/102] ci: apply automated fixes --- .../src/start-router-plugin/route-tree-module-declaration.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/start-plugin-core/src/start-router-plugin/route-tree-module-declaration.ts b/packages/start-plugin-core/src/start-router-plugin/route-tree-module-declaration.ts index 13a922ec92c..22c665be7be 100644 --- a/packages/start-plugin-core/src/start-router-plugin/route-tree-module-declaration.ts +++ b/packages/start-plugin-core/src/start-router-plugin/route-tree-module-declaration.ts @@ -14,7 +14,10 @@ function getImportPath( generatedRouteTreePath: string, absolutePath: string, ): string { - let relativePath = path.relative(path.dirname(generatedRouteTreePath), absolutePath) + let relativePath = path.relative( + path.dirname(generatedRouteTreePath), + absolutePath, + ) if (!relativePath.startsWith('.')) { relativePath = `./${relativePath}` From ef21285f2aeed10c95a7a0a7c8d89be3025c593b Mon Sep 17 00:00:00 2001 From: ScriptedAlchemy Date: Mon, 9 Feb 2026 19:51:34 -0800 Subject: [PATCH 016/102] fix: address remaining unresolved PR review threads Remove redundant monorepo-only loader include path, avoid double prerender normalization, and ensure cached compilers always resolve modules with the current loader context. Co-authored-by: Cursor --- packages/start-plugin-core/src/rsbuild/plugin.ts | 7 ------- packages/start-plugin-core/src/rsbuild/prerender.ts | 12 +++--------- .../src/rsbuild/start-compiler-loader.ts | 9 +++++++-- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts index 85280514045..e61ecb5fad9 100644 --- a/packages/start-plugin-core/src/rsbuild/plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -358,18 +358,11 @@ export function TanStackStartRsbuildPluginCore( '@tanstack/start-storage-context': startStorageContextStubPath, } - const startClientCoreDistPath = path.resolve( - root, - 'packages/start-client-core/dist/esm', - ) const startClientCoreDistPattern = /[\\/]start-client-core[\\/]dist[\\/]esm[\\/]/ const loaderIncludePaths: Array = [ resolvedStartConfig.srcDirectory, ] - if (fs.existsSync(startClientCoreDistPath)) { - loaderIncludePaths.push(startClientCoreDistPath) - } loaderIncludePaths.push(startClientCoreDistPattern) const loaderRule = ( diff --git a/packages/start-plugin-core/src/rsbuild/prerender.ts b/packages/start-plugin-core/src/rsbuild/prerender.ts index d94bf1837e2..88891c9b1a6 100644 --- a/packages/start-plugin-core/src/rsbuild/prerender.ts +++ b/packages/start-plugin-core/src/rsbuild/prerender.ts @@ -124,15 +124,9 @@ export async function prerender({ const concurrency = startConfig.prerender?.concurrency ?? os.cpus().length logger.info(`Concurrency: ${concurrency}`) const queue = new Queue({ concurrency }) - const routerBasePath = joinURL('/', startConfig.router.basepath ?? '') - - const routerBaseUrl = new URL(routerBasePath, 'http://localhost') - startConfig.pages = validateAndNormalizePrerenderPages( - startConfig.pages, - routerBaseUrl, - ) - - startConfig.pages.forEach((page) => addCrawlPageTask(page)) + startConfig.pages.forEach((page) => { + addCrawlPageTask(page) + }) await queue.start() diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts index a77b99ae852..0479e1b0e15 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-loader.ts @@ -26,6 +26,7 @@ type LoaderOptions = { } const compilers = new Map() +const loaderContexts = new Map() const serverFnsById: Record = {} const require = createRequire(import.meta.url) const appendServerFnsToManifest = ( @@ -40,6 +41,7 @@ const appendServerFnsToManifest = ( export const getServerFnsById = () => serverFnsById export const resetServerFnCompilerState = () => { compilers.clear() + loaderContexts.clear() for (const key of Object.keys(serverFnsById)) { delete serverFnsById[key] } @@ -197,6 +199,8 @@ export default function startCompilerLoader(this: any, code: string, map: any) { return } + loaderContexts.set(envName, this) + let compiler = compilers.get(envName) if (!compiler) { const mode = @@ -224,9 +228,10 @@ export default function startCompilerLoader(this: any, code: string, map: any) { generateFunctionId: options.generateFunctionId, onServerFnsById, getKnownServerFns: () => serverFnsById, - loadModule: async (id: string) => loadModule(compiler!, this, id), + loadModule: async (id: string) => + loadModule(compiler!, loaderContexts.get(envName), id), resolveId: async (source: string, importer?: string) => - resolveId(this, source, importer), + resolveId(loaderContexts.get(envName), source, importer), }) compilers.set(envName, compiler) } From 48a5700e8c2d4ec17d054be222a819aa807559b2 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 10 Feb 2026 20:38:19 +0000 Subject: [PATCH 017/102] add federation-aware rsbuild server runtime defaults Co-authored-by: Zack Jackson --- .../start-plugin-core/src/rsbuild/plugin.ts | 96 ++++++++++++++----- .../src/rsbuild/start-compiler-plugin.ts | 5 +- 2 files changed, 78 insertions(+), 23 deletions(-) diff --git a/packages/start-plugin-core/src/rsbuild/plugin.ts b/packages/start-plugin-core/src/rsbuild/plugin.ts index e61ecb5fad9..8bbbb80d2e3 100644 --- a/packages/start-plugin-core/src/rsbuild/plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/plugin.ts @@ -34,6 +34,23 @@ type RsbuildPlugin = { setup: (api: any) => void } +const MODULE_FEDERATION_RSBUILD_PLUGIN_NAME = + 'rsbuild:module-federation-enhanced' + +function hasModuleFederationPlugin(config: any): boolean { + if (config?.moduleFederation?.options) { + return true + } + + if (!Array.isArray(config?.plugins)) { + return false + } + + return config.plugins.some((plugin: any) => { + return plugin?.name === MODULE_FEDERATION_RSBUILD_PLUGIN_NAME + }) +} + function isFullUrl(str: string): boolean { try { new URL(str) @@ -273,6 +290,7 @@ export function TanStackStartRsbuildPluginCore( serverOutputDir, SERVER_FN_MANIFEST_TEMP_FILE, ) + const moduleFederationEnabled = hasModuleFederationPlugin(config) const isDev = api.context?.command === 'serve' const isBuild = api.context?.command === 'build' @@ -459,17 +477,34 @@ export function TanStackStartRsbuildPluginCore( }, tools: { rspack: { - experiments: { - outputModule: true, - }, - output: { - module: true, - chunkFormat: 'module', - chunkLoading: 'import', - library: { - type: 'module', - }, - }, + ...(moduleFederationEnabled + ? { + target: 'async-node', + experiments: { + outputModule: false, + }, + output: { + module: false, + chunkFormat: 'commonjs', + chunkLoading: 'async-node', + library: { + type: 'commonjs-module', + }, + }, + } + : { + experiments: { + outputModule: true, + }, + output: { + module: true, + chunkFormat: 'module', + chunkLoading: 'import', + library: { + type: 'module', + }, + }, + }), plugins: [ routerPlugins.generatorPlugin, routerPlugins.serverCodeSplitter, @@ -602,17 +637,34 @@ export function TanStackStartRsbuildPluginCore( }, tools: { rspack: { - experiments: { - outputModule: true, - }, - output: { - module: true, - chunkFormat: 'module', - chunkLoading: 'import', - library: { - type: 'module', - }, - }, + ...(moduleFederationEnabled + ? { + target: 'async-node', + experiments: { + outputModule: false, + }, + output: { + module: false, + chunkFormat: 'commonjs', + chunkLoading: 'async-node', + library: { + type: 'commonjs-module', + }, + }, + } + : { + experiments: { + outputModule: true, + }, + output: { + module: true, + chunkFormat: 'module', + chunkLoading: 'import', + library: { + type: 'module', + }, + }, + }), plugins: [ createServerFnResolverPlugin({ environmentName: serverFnProviderEnv, diff --git a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts index bf7261a7536..5859a5271a7 100644 --- a/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts +++ b/packages/start-plugin-core/src/rsbuild/start-compiler-plugin.ts @@ -205,7 +205,10 @@ ${clientReferencedCheck} fnModule = __webpack_require__(serverFnInfo.importerModuleId) } else { const importerPath = serverFnInfo.importerPath ?? serverFnInfo.extractedFilename - fnModule = await import(/* webpackIgnore: true */ pathToFileURL(importerPath).href) + const importerHref = /^https?:\\/\\//.test(importerPath) + ? importerPath + : pathToFileURL(importerPath).href + fnModule = await import(/* webpackIgnore: true */ importerHref) } if (!fnModule) { From 40fc4b0d09b648655f89f4a8d23f349a4d391b93 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 10 Feb 2026 21:27:28 +0000 Subject: [PATCH 018/102] Switch federation shared setup to async startup Co-authored-by: Zack Jackson --- .../package.json | 34 + .../playwright.config.ts | 50 + .../rsbuild.config.ts | 72 + .../module-federation-rsbuild-host/server.js | 38 + .../src/env.d.ts | 8 + .../src/routeTree.gen.ts | 68 + .../src/router.tsx | 9 + .../src/routes/__root.tsx | 25 + .../src/routes/index.tsx | 20 + .../test-results/.last-run.json | 4 + .../tests/module-federation.spec.ts | 43 + .../tsconfig.json | 18 + .../index.html | 12 + .../package.json | 23 + .../rsbuild.config.ts | 90 ++ .../src/env.d.ts | 1 + .../src/index.tsx | 22 + .../src/message.tsx | 15 + .../ssr/index.html | 1 + .../ssr/mf-manifest.json | 89 + .../ssr/mf-stats.json | 99 ++ .../ssr/remoteEntry.js | 8 + .../__federation_expose_message.4d43e736.js | 1 + .../ssr/static/js/index.03796778.js | 8 + .../ssr/static/js/index.124184c5.js | 8 + .../ssr/static/js/index.4a6f20e7.js | 8 + .../ssr/static/js/index.cf3a472e.js | 8 + .../ssr/static/js/index.f6a3b08e.js | 8 + .../ssr/static/js/lib-react.5ec9d9fd.js | 2 + .../js/lib-react.5ec9d9fd.js.LICENSE.txt | 49 + .../tsconfig.json | 18 + .../README.md | 30 + .../package.json | 31 + .../rsbuild.config.ts | 72 + .../server.js | 38 + .../src/env.d.ts | 8 + .../src/routeTree.gen.ts | 68 + .../src/router.tsx | 9 + .../src/routes/__root.tsx | 25 + .../src/routes/index.tsx | 16 + .../tsconfig.json | 18 + .../README.md | 19 + .../index.html | 12 + .../package.json | 23 + .../rsbuild.config.ts | 90 ++ .../src/env.d.ts | 1 + .../src/index.tsx | 22 + .../src/message.tsx | 11 + .../ssr/index.html | 1 + .../ssr/mf-manifest.json | 89 + .../ssr/mf-stats.json | 99 ++ .../ssr/remoteEntry.js | 8 + .../__federation_expose_message.f665fcfc.js | 1 + .../ssr/static/js/index.c17826eb.js | 8 + .../ssr/static/js/lib-react.5ec9d9fd.js | 2 + .../js/lib-react.5ec9d9fd.js.LICENSE.txt | 49 + .../tsconfig.json | 18 + pnpm-lock.yaml | 1425 ++++++++++++++++- 58 files changed, 2972 insertions(+), 80 deletions(-) create mode 100644 e2e/react-start/module-federation-rsbuild-host/package.json create mode 100644 e2e/react-start/module-federation-rsbuild-host/playwright.config.ts create mode 100644 e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts create mode 100644 e2e/react-start/module-federation-rsbuild-host/server.js create mode 100644 e2e/react-start/module-federation-rsbuild-host/src/env.d.ts create mode 100644 e2e/react-start/module-federation-rsbuild-host/src/routeTree.gen.ts create mode 100644 e2e/react-start/module-federation-rsbuild-host/src/router.tsx create mode 100644 e2e/react-start/module-federation-rsbuild-host/src/routes/__root.tsx create mode 100644 e2e/react-start/module-federation-rsbuild-host/src/routes/index.tsx create mode 100644 e2e/react-start/module-federation-rsbuild-host/test-results/.last-run.json create mode 100644 e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts create mode 100644 e2e/react-start/module-federation-rsbuild-host/tsconfig.json create mode 100644 e2e/react-start/module-federation-rsbuild-remote/index.html create mode 100644 e2e/react-start/module-federation-rsbuild-remote/package.json create mode 100644 e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts create mode 100644 e2e/react-start/module-federation-rsbuild-remote/src/env.d.ts create mode 100644 e2e/react-start/module-federation-rsbuild-remote/src/index.tsx create mode 100644 e2e/react-start/module-federation-rsbuild-remote/src/message.tsx create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/index.html create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/mf-manifest.json create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/mf-stats.json create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/remoteEntry.js create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.4d43e736.js create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.03796778.js create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.124184c5.js create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.4a6f20e7.js create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.cf3a472e.js create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.f6a3b08e.js create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js create mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt create mode 100644 e2e/react-start/module-federation-rsbuild-remote/tsconfig.json create mode 100644 examples/react/start-module-federation-rsbuild-host/README.md create mode 100644 examples/react/start-module-federation-rsbuild-host/package.json create mode 100644 examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts create mode 100644 examples/react/start-module-federation-rsbuild-host/server.js create mode 100644 examples/react/start-module-federation-rsbuild-host/src/env.d.ts create mode 100644 examples/react/start-module-federation-rsbuild-host/src/routeTree.gen.ts create mode 100644 examples/react/start-module-federation-rsbuild-host/src/router.tsx create mode 100644 examples/react/start-module-federation-rsbuild-host/src/routes/__root.tsx create mode 100644 examples/react/start-module-federation-rsbuild-host/src/routes/index.tsx create mode 100644 examples/react/start-module-federation-rsbuild-host/tsconfig.json create mode 100644 examples/react/start-module-federation-rsbuild-remote/README.md create mode 100644 examples/react/start-module-federation-rsbuild-remote/index.html create mode 100644 examples/react/start-module-federation-rsbuild-remote/package.json create mode 100644 examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts create mode 100644 examples/react/start-module-federation-rsbuild-remote/src/env.d.ts create mode 100644 examples/react/start-module-federation-rsbuild-remote/src/index.tsx create mode 100644 examples/react/start-module-federation-rsbuild-remote/src/message.tsx create mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/index.html create mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/mf-manifest.json create mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/mf-stats.json create mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/remoteEntry.js create mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.f665fcfc.js create mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/static/js/index.c17826eb.js create mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js create mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt create mode 100644 examples/react/start-module-federation-rsbuild-remote/tsconfig.json diff --git a/e2e/react-start/module-federation-rsbuild-host/package.json b/e2e/react-start/module-federation-rsbuild-host/package.json new file mode 100644 index 00000000000..d88f5be2286 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/package.json @@ -0,0 +1,34 @@ +{ + "name": "tanstack-react-start-e2e-module-federation-rsbuild-host", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "rsbuild dev --port 3000", + "build": "rsbuild build", + "preview": "rsbuild preview", + "start": "node server.js", + "test:e2e": "rm -rf dist; rm -rf port*.txt; playwright test --project=chromium" + }, + "dependencies": { + "@tanstack/react-router": "workspace:^", + "@tanstack/react-start": "workspace:^", + "express": "^5.1.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@module-federation/enhanced": "^0.24.1", + "@module-federation/node": "^2.7.31", + "@module-federation/rsbuild-plugin": "^0.24.1", + "@playwright/test": "^1.50.1", + "@rsbuild/core": "^1.3.21", + "@rsbuild/plugin-react": "^1.1.0", + "@tanstack/router-e2e-utils": "workspace:^", + "@types/node": "^22.10.2", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "srvx": "^0.11.2", + "typescript": "^5.7.2" + } +} diff --git a/e2e/react-start/module-federation-rsbuild-host/playwright.config.ts b/e2e/react-start/module-federation-rsbuild-host/playwright.config.ts new file mode 100644 index 00000000000..5c7770a45ad --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/playwright.config.ts @@ -0,0 +1,50 @@ +import { defineConfig, devices } from '@playwright/test' +import { getTestServerPort } from '@tanstack/router-e2e-utils' +import packageJson from './package.json' with { type: 'json' } + +const HOST_PORT = await getTestServerPort(packageJson.name) +const REMOTE_PORT = await getTestServerPort(`${packageJson.name}-remote`) +const baseURL = `http://localhost:${HOST_PORT}` + +export default defineConfig({ + testDir: './tests', + workers: 1, + reporter: [['line']], + + use: { + baseURL, + }, + + webServer: [ + { + command: `pnpm --dir ../module-federation-rsbuild-remote build && pnpm --dir ../module-federation-rsbuild-remote preview --port ${REMOTE_PORT}`, + url: `http://localhost:${REMOTE_PORT}`, + reuseExistingServer: !process.env.CI, + stdout: 'pipe', + env: { + REMOTE_PORT: String(REMOTE_PORT), + }, + timeout: 120_000, + }, + { + command: `pnpm build && pnpm start`, + url: baseURL, + reuseExistingServer: !process.env.CI, + stdout: 'pipe', + env: { + PORT: String(HOST_PORT), + REMOTE_PORT: String(REMOTE_PORT), + }, + timeout: 120_000, + }, + ], + + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + }, + }, + ], +}) diff --git a/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts new file mode 100644 index 00000000000..cd766058224 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts @@ -0,0 +1,72 @@ +import { defineConfig } from '@rsbuild/core' +import { createRequire } from 'node:module' +import { pluginReact } from '@rsbuild/plugin-react' +import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' +import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack' +import { tanstackStart } from '@tanstack/react-start/plugin/rsbuild' + +const require = createRequire(import.meta.url) +const remotePort = Number(process.env.REMOTE_PORT || 3001) +const remoteOrigin = `http://localhost:${remotePort}` +const shared = { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, +} + +export default defineConfig({ + plugins: [ + pluginReact(), + pluginModuleFederation( + { + name: 'mf_host', + remotes: { + mf_remote: `mf_remote@${remoteOrigin}/remoteEntry.js`, + }, + dts: false, + experiments: { + asyncStartup: true, + }, + runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], + shared, + }, + { + environment: 'client', + }, + ), + ...tanstackStart(), + ], + environments: { + ssr: { + tools: { + rspack: { + plugins: [ + new ModuleFederationPlugin({ + name: 'mf_host_ssr', + remotes: { + mf_remote: `mf_remote@${remoteOrigin}/ssr/remoteEntry.js`, + }, + dts: false, + experiments: { + asyncStartup: true, + }, + remoteType: 'script', + library: { + type: 'commonjs-module', + }, + runtimePlugins: [ + require.resolve('@module-federation/node/runtimePlugin'), + ], + shared, + }), + ], + }, + }, + }, + }, +}) diff --git a/e2e/react-start/module-federation-rsbuild-host/server.js b/e2e/react-start/module-federation-rsbuild-host/server.js new file mode 100644 index 00000000000..9fcfd2e772a --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/server.js @@ -0,0 +1,38 @@ +import fs from 'node:fs' +import path from 'node:path' +import { createRequire } from 'node:module' +import express from 'express' +import { toNodeHandler } from 'srvx/node' + +const require = createRequire(import.meta.url) +const port = process.env.PORT || 3000 + +if (!globalThis.self) { + globalThis.self = globalThis +} + +const bundledServerPath = path.resolve('./dist/server/server.js') +const commonJsServerPath = path.resolve('./dist/server/server.cjs') +fs.copyFileSync(bundledServerPath, commonJsServerPath) + +let imported = require(commonJsServerPath) +if (imported && typeof imported.then === 'function') { + imported = await imported +} +const server = imported?.default ?? imported +const nodeHandler = toNodeHandler(server.fetch) + +const app = express() + +app.use(express.static('./dist/client', { index: false })) +app.use(async (req, res, next) => { + try { + await nodeHandler(req, res) + } catch (error) { + next(error) + } +}) + +app.listen(port, () => { + console.info(`Start Server: http://localhost:${port}`) +}) diff --git a/e2e/react-start/module-federation-rsbuild-host/src/env.d.ts b/e2e/react-start/module-federation-rsbuild-host/src/env.d.ts new file mode 100644 index 00000000000..63b8f9bcb96 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/src/env.d.ts @@ -0,0 +1,8 @@ +/// +/// + +declare module 'mf_remote/message' { + import type { ReactNode } from 'react' + + export function FederatedMessage(): ReactNode +} diff --git a/e2e/react-start/module-federation-rsbuild-host/src/routeTree.gen.ts b/e2e/react-start/module-federation-rsbuild-host/src/routeTree.gen.ts new file mode 100644 index 00000000000..dceedffdc12 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/src/routeTree.gen.ts @@ -0,0 +1,68 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +import { Route as rootRouteImport } from './routes/__root' +import { Route as IndexRouteImport } from './routes/index' + +const IndexRoute = IndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRouteImport, +} as any) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute +} +export interface FileRoutesByTo { + '/': typeof IndexRoute +} +export interface FileRoutesById { + __root__: typeof rootRouteImport + '/': typeof IndexRoute +} +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '__root__' | '/' + fileRoutesById: FileRoutesById +} +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + } +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} +export const routeTree = rootRouteImport + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +import type { getRouter } from './router.tsx' +import type { createStart } from '@tanstack/react-start' +declare module '@tanstack/react-start' { + interface Register { + ssr: true + router: Awaited> + } +} diff --git a/e2e/react-start/module-federation-rsbuild-host/src/router.tsx b/e2e/react-start/module-federation-rsbuild-host/src/router.tsx new file mode 100644 index 00000000000..0f689ec2ec9 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/src/router.tsx @@ -0,0 +1,9 @@ +import { createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +export function getRouter() { + return createRouter({ + routeTree, + defaultPreload: 'intent', + }) +} diff --git a/e2e/react-start/module-federation-rsbuild-host/src/routes/__root.tsx b/e2e/react-start/module-federation-rsbuild-host/src/routes/__root.tsx new file mode 100644 index 00000000000..ef6cc68bebb --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/src/routes/__root.tsx @@ -0,0 +1,25 @@ +import * as React from 'react' +import { + HeadContent, + Outlet, + Scripts, + createRootRoute, +} from '@tanstack/react-router' + +export const Route = createRootRoute({ + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + + + + + + + ) +} diff --git a/e2e/react-start/module-federation-rsbuild-host/src/routes/index.tsx b/e2e/react-start/module-federation-rsbuild-host/src/routes/index.tsx new file mode 100644 index 00000000000..7e2b435ac6e --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/src/routes/index.tsx @@ -0,0 +1,20 @@ +import { createFileRoute } from '@tanstack/react-router' +import { FederatedMessage } from 'mf_remote/message' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Host application

+

+ This page renders a module from the remote app. +

+
+ +
+
+ ) +} diff --git a/e2e/react-start/module-federation-rsbuild-host/test-results/.last-run.json b/e2e/react-start/module-federation-rsbuild-host/test-results/.last-run.json new file mode 100644 index 00000000000..cbcc1fbac11 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/test-results/.last-run.json @@ -0,0 +1,4 @@ +{ + "status": "passed", + "failedTests": [] +} \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts new file mode 100644 index 00000000000..c235236b794 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -0,0 +1,43 @@ +import { expect } from '@playwright/test' +import { getTestServerPort, test } from '@tanstack/router-e2e-utils' +import packageJson from '../package.json' with { type: 'json' } + +const REMOTE_PORT = await getTestServerPort(`${packageJson.name}-remote`) +const REMOTE_ORIGIN = `http://localhost:${REMOTE_PORT}` + +test('renders the remote module on the SSR response', async ({ page }) => { + const response = await page.request.get('/') + expect(response.ok()).toBeTruthy() + + const html = await response.text() + expect(html).toContain('Federated message from remote') +}) + +test('loads remote entry over http at runtime', async ({ + page, +}) => { + const remoteRequests: Array = [] + + page.on('request', (request) => { + const url = request.url() + if (!url.startsWith(REMOTE_ORIGIN)) { + return + } + if (url.endsWith('.js')) { + remoteRequests.push(url) + } + }) + + await page.goto('/') + await page.waitForLoadState('networkidle') + + expect( + remoteRequests.some( + (url) => url.includes('/remoteEntry.js') || url.includes('/dist/remoteEntry.js'), + ), + ).toBeTruthy() + + await expect(page.getByTestId('federated-button')).toContainText( + 'Federated message from remote', + ) +}) diff --git a/e2e/react-start/module-federation-rsbuild-host/tsconfig.json b/e2e/react-start/module-federation-rsbuild-host/tsconfig.json new file mode 100644 index 00000000000..d95b47232e2 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/tsconfig.json @@ -0,0 +1,18 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "noEmit": true + } +} diff --git a/e2e/react-start/module-federation-rsbuild-remote/index.html b/e2e/react-start/module-federation-rsbuild-remote/index.html new file mode 100644 index 00000000000..613abec7295 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/index.html @@ -0,0 +1,12 @@ + + + + + + Module Federation Remote + + +
+ + + diff --git a/e2e/react-start/module-federation-rsbuild-remote/package.json b/e2e/react-start/module-federation-rsbuild-remote/package.json new file mode 100644 index 00000000000..57732300d18 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/package.json @@ -0,0 +1,23 @@ +{ + "name": "tanstack-react-start-e2e-module-federation-rsbuild-remote", + "private": true, + "type": "module", + "scripts": { + "dev": "rsbuild dev --port 3001", + "build": "rsbuild build", + "preview": "rsbuild preview" + }, + "dependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@module-federation/node": "^2.7.31", + "@module-federation/rsbuild-plugin": "^0.24.1", + "@rsbuild/core": "^1.3.21", + "@rsbuild/plugin-react": "^1.1.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "typescript": "^5.7.2" + } +} diff --git a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts new file mode 100644 index 00000000000..6685f8ede38 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts @@ -0,0 +1,90 @@ +import { defineConfig } from '@rsbuild/core' +import { createRequire } from 'node:module' +import { pluginReact } from '@rsbuild/plugin-react' +import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' +import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack' + +const require = createRequire(import.meta.url) +const remotePort = Number(process.env.REMOTE_PORT || 3001) +const remoteOrigin = `http://localhost:${remotePort}` + +export default defineConfig({ + plugins: [ + pluginReact(), + pluginModuleFederation({ + name: 'mf_remote', + filename: 'remoteEntry.js', + exposes: { + './message': './src/message.tsx', + }, + runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], + shared: { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, + }, + }), + ], + environments: { + web: { + output: { + assetPrefix: `${remoteOrigin}/`, + }, + }, + ssr: { + source: { + entry: {}, + }, + output: { + assetPrefix: `${remoteOrigin}/ssr/`, + cleanDistPath: false, + distPath: { + root: 'ssr', + }, + }, + tools: { + rspack: { + target: 'async-node', + output: { + chunkFormat: 'commonjs', + chunkLoading: 'async-node', + library: { + type: 'commonjs-module', + }, + }, + plugins: [ + new ModuleFederationPlugin({ + name: 'mf_remote', + filename: 'remoteEntry.js', + library: { + type: 'commonjs-module', + }, + dts: false, + exposes: { + './message': './src/message.tsx', + }, + runtimePlugins: [ + require.resolve('@module-federation/node/runtimePlugin'), + ], + shared: { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, + }, + }), + ], + }, + }, + }, + }, +}) diff --git a/e2e/react-start/module-federation-rsbuild-remote/src/env.d.ts b/e2e/react-start/module-federation-rsbuild-remote/src/env.d.ts new file mode 100644 index 00000000000..b0ac762b091 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/src/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/e2e/react-start/module-federation-rsbuild-remote/src/index.tsx b/e2e/react-start/module-federation-rsbuild-remote/src/index.tsx new file mode 100644 index 00000000000..0e778361332 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/src/index.tsx @@ -0,0 +1,22 @@ +import * as React from 'react' +import { createRoot } from 'react-dom/client' +import { FederatedMessage } from './message' + +function App() { + return ( +
+

Remote application

+ +
+ ) +} + +const container = document.getElementById('root') +if (container) { + const root = createRoot(container) + root.render( + + + , + ) +} diff --git a/e2e/react-start/module-federation-rsbuild-remote/src/message.tsx b/e2e/react-start/module-federation-rsbuild-remote/src/message.tsx new file mode 100644 index 00000000000..aabb061ed30 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/src/message.tsx @@ -0,0 +1,15 @@ +import * as React from 'react' + +export function FederatedMessage() { + const [count, setCount] = React.useState(0) + + return ( + + ) +} diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/index.html b/e2e/react-start/module-federation-rsbuild-remote/ssr/index.html new file mode 100644 index 00000000000..4cc9e835b2a --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/index.html @@ -0,0 +1 @@ +Rsbuild App
\ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-manifest.json b/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-manifest.json new file mode 100644 index 00000000000..1c4bee84f4e --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-manifest.json @@ -0,0 +1,89 @@ +{ + "id": "mf_remote", + "name": "mf_remote", + "metaData": { + "name": "mf_remote", + "type": "app", + "buildInfo": { + "buildVersion": "local", + "buildName": "tanstack-react-start-e2e-module-federation-rsbuild-remote" + }, + "remoteEntry": { + "name": "remoteEntry.js", + "path": "", + "type": "commonjs-module" + }, + "types": { + "path": "", + "name": "", + "zip": "", + "api": "" + }, + "globalName": "mf_remote", + "pluginVersion": "0.24.1", + "prefetchInterface": false, + "publicPath": "http://localhost:35213/ssr/" + }, + "shared": [ + { + "id": "mf_remote:react-dom", + "name": "react-dom", + "version": "19.2.3", + "singleton": true, + "requiredVersion": "^19.2.3", + "assets": { + "js": { + "async": [], + "sync": [ + "static/js/lib-react.5ec9d9fd.js" + ] + }, + "css": { + "async": [], + "sync": [] + } + }, + "fallback": "" + }, + { + "id": "mf_remote:react", + "name": "react", + "version": "19.2.3", + "singleton": true, + "requiredVersion": "^19.2.3", + "assets": { + "js": { + "async": [], + "sync": [ + "static/js/lib-react.5ec9d9fd.js" + ] + }, + "css": { + "async": [], + "sync": [] + } + }, + "fallback": "" + } + ], + "remotes": [], + "exposes": [ + { + "id": "mf_remote:message", + "name": "message", + "assets": { + "js": { + "sync": [ + "static/js/async/__federation_expose_message.4d43e736.js" + ], + "async": [] + }, + "css": { + "sync": [], + "async": [] + } + }, + "path": "./message" + } + ] +} \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-stats.json b/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-stats.json new file mode 100644 index 00000000000..e1bca9fada0 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-stats.json @@ -0,0 +1,99 @@ +{ + "id": "mf_remote", + "name": "mf_remote", + "metaData": { + "name": "mf_remote", + "type": "app", + "buildInfo": { + "buildVersion": "local", + "buildName": "tanstack-react-start-e2e-module-federation-rsbuild-remote" + }, + "remoteEntry": { + "name": "remoteEntry.js", + "path": "", + "type": "commonjs-module" + }, + "types": { + "path": "", + "name": "", + "zip": "", + "api": "" + }, + "globalName": "mf_remote", + "pluginVersion": "0.24.1", + "prefetchInterface": false, + "publicPath": "http://localhost:35213/ssr/" + }, + "shared": [ + { + "singleton": true, + "requiredVersion": "^19.2.3", + "shareScope": "default", + "name": "react-dom", + "version": "19.2.3", + "eager": false, + "id": "mf_remote:react-dom", + "assets": { + "js": { + "async": [], + "sync": [ + "static/js/lib-react.5ec9d9fd.js" + ] + }, + "css": { + "async": [], + "sync": [] + } + }, + "usedIn": [], + "usedExports": [], + "fallback": "" + }, + { + "singleton": true, + "requiredVersion": "^19.2.3", + "shareScope": "default", + "name": "react", + "version": "19.2.3", + "eager": false, + "id": "mf_remote:react", + "assets": { + "js": { + "async": [], + "sync": [ + "static/js/lib-react.5ec9d9fd.js" + ] + }, + "css": { + "async": [], + "sync": [] + } + }, + "usedIn": [], + "usedExports": [], + "fallback": "" + } + ], + "remotes": [], + "exposes": [ + { + "path": "./message", + "id": "mf_remote:message", + "name": "message", + "requires": [], + "file": "src/message.tsx", + "assets": { + "js": { + "sync": [ + "static/js/async/__federation_expose_message.4d43e736.js" + ], + "async": [] + }, + "css": { + "sync": [], + "async": [] + } + } + } + ] +} \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/remoteEntry.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/remoteEntry.js new file mode 100644 index 00000000000..c10e9260c59 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/remoteEntry.js @@ -0,0 +1,8 @@ +(()=>{"use strict";var __webpack_modules__={229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: + ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} +})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} +})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let b=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},v="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return v}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function M(e,t){return Object.hasOwnProperty.call(e,t)}M(v,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(v,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let $=v.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;M(e,"__VMOK__")&&!M(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),M(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){v.__FEDERATION__.__GLOBAL_PLUGIN__=[],v.__FEDERATION__.__INSTANCES__=[],v.__FEDERATION__.moduleInfo={},v.__FEDERATION__.__SHARE__={},v.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys($).forEach(e=>{delete $[e]})}function A(e){v.__FEDERATION__.__INSTANCES__.push(e)}function k(){return v.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function O(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(v.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,v.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(v),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},C=e=>F(e,R.__FEDERATION__.moduleInfo),L=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=v[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>v.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>v.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",W="global",B="[0-9A-Za-z-]+",z=`(?:\\+(${B}(?:\\.${B})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function eb(e){return!e||"x"===e.toLowerCase()||"*"===e}function ev(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=eb(r)?"":eb(n)?`>=${r}.0.0`:eb(o)?`>=${r}.${n}.0`:`>=${t}`,s=eb(l)?"":eb(u)?`<${Number(l)+1}.0.0-0`:eb(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function eM(e){return e.replace(eS(es),"$1$2$3")}function e$(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(eb(t))return"";if(eb(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(eb(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eA(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>eb(t)?"":eb(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:eb(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function ek(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=eb(r),s=a||eb(n),l=s||eb(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function eO(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eC(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eL(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eL(e,t);case">":return 0>eC(e,t);case">=":return eL(e,t)||0>eC(e,t);case"<":return eC(e,t)>0;case"<=":return eL(e,t)||eC(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return ev(eT,eA,ek,eO)(e)}function eH(e){return ev(eN,eM,e$,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eW(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eB=(e,t)=>{let r=t||function(e,t){return eW(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eW(e,t):!ez(o[e])&&eW(e,t)};if(a){if(i=eB(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eB(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eW(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eW(e,t);else return!0;return!eJ(o[e])&&eW(e,t)};if(a){if(i=eB(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eB(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eW(e,r)},n=eB(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e9(e,t){return t&&e.treeShaking?e.treeShaking:e}function e8(){return"mf_remote:local"}function e4(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e5(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e7(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e6=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e6}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e6}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!$[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;$[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:$,uniqueKey:n});if(o)return o}throw e})}return $[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||W,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e5(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:A,getGlobalFederationConstructor:k,setGlobalFederationConstructor:O,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:C,setGlobalSnapshotInfoByModuleInfo:L,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e4,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined + ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=b(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tv(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tv(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let tM=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function t$(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!tM("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!tM("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!tM("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tv(o,s),t$(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=C({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:C({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:C({name:e.name,version:"version"in e?e.version:void 0})}}class tA{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=C({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=L({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=L(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tb({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tk{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e9(i,a);if(t.lib)return e3(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e3(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e3(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e9(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e3(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e9(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e9(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e3(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e3(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tb({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tO{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e4(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=W)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(v[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(v,i))?void 0:t.configurable)?delete v[i]:v[i]=void 0}let s=ta(a.remoteInfo);$[s]&&delete $[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=v.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=v.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),v.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tb({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e7(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tb({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tb({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tb({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e8(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tA(this),this.sharedHandler=new tk(this),this.remoteHandler=new tO(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=v,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=k,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e4,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=O,t.setGlobalFederationInstance=A,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: +${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} +})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` +while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},b=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},v=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},M={},$=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>b),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(v))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(v)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:b,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:M,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:$,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:M,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}},508(e,t,r){r.d(t,{get:()=>r.getContainer,init:()=>r.initContainer})}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>__webpack_require__(508),(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:""})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"783"===e?"static/js/lib-react.5ec9d9fd.js":"static/js/async/__federation_expose_message.4d43e736.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{__webpack_require__.p="http://localhost:35213/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{36:["119"]},moduleIdToConsumeDataMapping:{119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:[]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{__webpack_require__.initializeExposesData={moduleMap:{"./message":()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36"),__webpack_require__.e("454")]).then(()=>()=>__webpack_require__(923))},shareScope:"default"},__webpack_require__.getContainer=__webpack_require__.getContainer||function(){throw Error("should have __webpack_require__.getContainer")},__webpack_require__.initContainer=__webpack_require__.initContainer||function(){throw Error("should have __webpack_require__.initContainer")}})(),(()=>{var e={908:0},t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.4d43e736.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.4d43e736.js new file mode 100644 index 00000000000..1d03ab5a1cf --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.4d43e736.js @@ -0,0 +1 @@ +"use strict";exports.ids=["454"],exports.modules={923(e,t,s){s.r(t),s.d(t,{FederatedMessage:()=>o});var r=s(742),d=s(119);function o(){let[e,t]=d.useState(0);return(0,r.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}}}; \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.03796778.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.03796778.js new file mode 100644 index 00000000000..a501a3c68ea --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.03796778.js @@ -0,0 +1,8 @@ +(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: + ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} +})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} +})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined + ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: +${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} +})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` +while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:39197/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.124184c5.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.124184c5.js new file mode 100644 index 00000000000..ca184cf520e --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.124184c5.js @@ -0,0 +1,8 @@ +(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: + ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} +})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} +})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e9(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined + ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e9(i,a);if(t.lib)return e3(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e3(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e3(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e9(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e3(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e9(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e9(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e3(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e3(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: +${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} +})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` +while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:37331/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.4a6f20e7.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.4a6f20e7.js new file mode 100644 index 00000000000..b0f5508bab8 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.4a6f20e7.js @@ -0,0 +1,8 @@ +(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: + ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} +})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} +})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined + ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: +${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} +})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` +while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:46539/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.cf3a472e.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.cf3a472e.js new file mode 100644 index 00000000000..75591857227 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.cf3a472e.js @@ -0,0 +1,8 @@ +(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: + ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} +})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} +})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e5(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e6=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e6}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e6}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined + ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e5(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: +${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} +})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` +while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:35213/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.f6a3b08e.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.f6a3b08e.js new file mode 100644 index 00000000000..b8f2f7921fe --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.f6a3b08e.js @@ -0,0 +1,8 @@ +(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: + ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} +})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} +})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined + ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: +${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} +})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` +while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:40139/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js new file mode 100644 index 00000000000..837d529a8ce --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js @@ -0,0 +1,2 @@ +/*! For license information please see lib-react.5ec9d9fd.js.LICENSE.txt */ +"use strict";exports.ids=["783"],exports.modules={523(e,t,n){var r,l=n(236),a=n(119),o=n(495);function i(e){var t="https://react.dev/errors/"+e;if(1A||(e.current=R[A],R[A]=null,A--)}function U(e,t){R[++A]=e.current,e.current=t}var $=M(null),j=M(null),H=M(null),V=M(null);function B(e,t){switch(U(H,t),U(j,e),U($,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?sy(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=sv(t=sy(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}I($),U($,e)}function Q(){I($),I(j),I(H)}function W(e){null!==e.memoizedState&&U(V,e);var t=$.current,n=sv(t,e.type);t!==n&&(U(j,e),U($,n))}function q(e){j.current===e&&(I($),I(j)),V.current===e&&(I(V),ce._currentValue=F)}function K(e){if(void 0===tA)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);tA=t&&t[1]||"",tM=-1)":-1l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{Y=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?K(n):""}function X(e){try{var t="",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return K(e.type);case 16:return K("Lazy");case 13:return e.child!==t&&null!==t?K("Suspense Fallback"):K("Suspense");case 19:return K("SuspenseList");case 0:case 15:return G(e.type,!1);case 11:return G(e.type.render,!1);case 1:return G(e.type,!0);case 31:return K("Activity");default:return""}}(e,n),n=e,e=e.return;while(e);return t}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}var Z=Object.prototype.hasOwnProperty,J=l.unstable_scheduleCallback,ee=l.unstable_cancelCallback,et=l.unstable_shouldYield,en=l.unstable_requestPaint,er=l.unstable_now,el=l.unstable_getCurrentPriorityLevel,ea=l.unstable_ImmediatePriority,eo=l.unstable_UserBlockingPriority,ei=l.unstable_NormalPriority,eu=l.unstable_LowPriority,es=l.unstable_IdlePriority,ec=l.log,ef=l.unstable_setDisableYieldValue,ed=null,ep=null;function em(e){if("function"==typeof ec&&ef(e),ep&&"function"==typeof ep.setStrictMode)try{ep.setStrictMode(ed,e)}catch(e){}}var eh=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(eg(e)/ey|0)|0},eg=Math.log,ey=Math.LN2,ev=256,eb=262144,ek=4194304;function ew(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function eS(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=0x7ffffff&r;return 0!==i?0!=(r=i&~a)?l=ew(r):0!=(o&=i)?l=ew(o):n||0!=(n=i&~e)&&(l=ew(n)):0!=(i=r&~a)?l=ew(i):0!==o?l=ew(o):n||0!=(n=r&~e)&&(l=ew(n)),0===l?0:0!==t&&t!==l&&0==(t&a)&&((a=l&-l)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:l}function ex(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function eE(){var e=ek;return 0==(0x3c00000&(ek<<=1))&&(ek=4194304),e}function eC(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ez(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function e_(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-eh(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|261930&n}function eP(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-eh(n),l=1<typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var te=/[\n"\\]/g;function tt(e){return e.replace(te,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function tn(e,t,n,r,l,a,o,i){e.name="",null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o?e.type=o:e.removeAttribute("type"),null!=t?"number"===o?(0===t&&""===e.value||e.value!=t)&&(e.value=""+e8(t)):e.value!==""+e8(t)&&(e.value=""+e8(t)):"submit"!==o&&"reset"!==o||e.removeAttribute("value"),null!=t?tl(e,o,e8(t)):null!=n?tl(e,o,e8(n)):null!=r&&e.removeAttribute("value"),null==l&&null!=a&&(e.defaultChecked=!!a),null!=l&&(e.checked=l&&"function"!=typeof l&&"symbol"!=typeof l),null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.name=""+e8(i):e.removeAttribute("name")}function tr(e,t,n,r,l,a,o,i){if(null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a&&(e.type=a),null!=t||null!=n){if(("submit"===a||"reset"===a)&&null==t)return void e5(e);n=null!=n?""+e8(n):"",t=null!=t?""+e8(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:l)&&"symbol"!=typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.name=o),e5(e)}function tl(e,t,n){"number"===t&&e7(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function ta(e,t,n,r){if(e=e.options,t){t={};for(var l=0;ltypeof window&&void 0!==window.document&&void 0!==window.document.createElement,tz=!1;if(tC)try{var t_={};Object.defineProperty(t_,"passive",{get:function(){tz=!0}}),window.addEventListener("test",t_,t_),window.removeEventListener("test",t_,t_)}catch(e){tz=!1}var tP=null,tN=null,tT=null;function tL(){if(tT)return tT;var e,t,n=tN,r=n.length,l="value"in tP?tP.value:tP.textContent,a=l.length;for(e=0;e=nt),nl=!1;function na(e,t){switch(e){case"keyup":return -1!==t7.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function no(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ni=!1,nu={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ns(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!nu[e.type]:"textarea"===t}function nc(e,t,n,r){tb?tk?tk.push(r):tk=[r]:tb=r,0<(t=sr(t,"onChange")).length&&(n=new tH("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var nf=null,nd=null;function np(e){u8(e,0)}function nm(e){if(e9(eW(e)))return e}function nh(e,t){if("change"===e)return t}var ng=!1;if(tC){if(tC){var ny="oninput"in document;if(!ny){var nv=document.createElement("div");nv.setAttribute("oninput","return;"),ny="function"==typeof nv.oninput}r=ny}else r=!1;ng=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=n_(r)}}function nN(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nT(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var nL=tC&&"documentMode"in document&&11>=document.documentMode,nO=null,nD=null,nF=null,nR=!1;function nA(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nR||null==nO||nO!==e7(r)||(r="selectionStart"in(r=nO)&&nT(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nF&&nz(nF,r)||(nF=r,0<(r=sr(nD,"onSelect")).length&&(t=new tH("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=nO)))}function nM(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var nI={animationend:nM("Animation","AnimationEnd"),animationiteration:nM("Animation","AnimationIteration"),animationstart:nM("Animation","AnimationStart"),transitionrun:nM("Transition","TransitionRun"),transitionstart:nM("Transition","TransitionStart"),transitioncancel:nM("Transition","TransitionCancel"),transitionend:nM("Transition","TransitionEnd")},nU={},n$={};function nj(e){if(nU[e])return nU[e];if(!nI[e])return e;var t,n=nI[e];for(t in n)if(n.hasOwnProperty(t)&&t in n$)return nU[e]=n[t];return e}tC&&(n$=document.createElement("div").style,"AnimationEvent"in window||(delete nI.animationend.animation,delete nI.animationiteration.animation,delete nI.animationstart.animation),"TransitionEvent"in window||delete nI.transitionend.transition);var nH=nj("animationend"),nV=nj("animationiteration"),nB=nj("animationstart"),nQ=nj("transitionrun"),nW=nj("transitionstart"),nq=nj("transitioncancel"),nK=nj("transitionend"),nY=new Map,nG="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function nX(e,t){nY.set(e,t),eX(t,[e])}nG.push("scrollEnd");var nZ="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=o,l-=o,rv=1<<32-eh(t)+l|n<typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},rZ=l.unstable_scheduleCallback,rJ=l.unstable_NormalPriority,r0={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function r1(){return{controller:new rX,data:new Map,refCount:0}}function r2(e){e.refCount--,0===e.refCount&&rZ(rJ,function(){e.controller.abort()})}var r3=null,r4=0,r8=0,r6=null;function r5(){if(0==--r4&&null!==r3){null!==r6&&(r6.status="fulfilled");var e=r3;r3=null,r8=0,r6=null;for(var t=0;tm?(h=f,f=null):h=f.sibling;var g=p(l,f,i[m],u);if(null===g){null===f&&(f=h);break}e&&f&&null===g.alternate&&t(l,f),o=a(g,o,m),null===c?s=g:c.sibling=g,c=g,f=h}if(m===i.length)return n(l,f),r_&&rk(l,m),s;if(null===f){for(;mh?(g=m,m=null):g=m.sibling;var b=p(l,m,v.value,s);if(null===b){null===m&&(m=g);break}e&&m&&null===b.alternate&&t(l,m),o=a(b,o,h),null===f?c=b:f.sibling=b,f=b,m=g}if(v.done)return n(l,m),r_&&rk(l,h),c;if(null===m){for(;!v.done;h++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,h),null===f?c=v:f.sibling=v,f=v);return r_&&rk(l,h),c}for(m=r(m);!v.done;h++,v=u.next())null!==(v=y(m,l,h,v.value,s))&&(e&&null!==v.alternate&&m.delete(null===v.key?h:v.key),o=a(v,o,h),null===f?c=v:f.sibling=v,f=v);return e&&m.forEach(function(e){return t(l,e)}),r_&&rk(l,h),c}(s,c,f=b.call(f),v)}if("function"==typeof f.then)return u(s,c,lh(f),v);if(f.$$typeof===k)return u(s,c,rY(s,f),v);ly(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(n(s,c.sibling),(v=l(c,f)).return=s):(n(s,c),(v=ro(f,s.mode,v)).return=s),o(s=v)):n(s,c)}(u,s,c,f);return lp=null,v}catch(e){if(e===lr||e===la)throw e;var b=re(29,e,null,u.mode);return b.lanes=f,b.return=u,b}finally{}}}var lb=lv(!0),lk=lv(!1),lw=!1;function lS(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function lx(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function lE(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function lC(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&iA)){var l=r.pending;return null===l?t.next=t:(t.next=l.next,l.next=t),r.pending=t,t=n5(e),n6(e,null,n),t}return n3(e,r,t,n),n5(e)}function lz(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194048&n))){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,eP(e,n)}}function l_(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var l=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?l=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?l=a=t:a=a.next=t}else l=a=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var lP=!1;function lN(){if(lP){var e=r6;if(null!==e)throw e}}function lT(e,t,n,r){lP=!1;var l=e.updateQueue;lw=!1;var a=l.firstBaseUpdate,o=l.lastBaseUpdate,i=l.shared.pending;if(null!==i){l.shared.pending=null;var u=i,s=u.next;u.next=null,null===o?a=s:o.next=s,o=u;var c=e.alternate;null!==c&&(i=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===i?c.firstBaseUpdate=s:i.next=s,c.lastBaseUpdate=u)}if(null!==a){var f=l.baseState;for(o=0,c=s=u=null,i=a;;){var p=-0x20000001&i.lane,m=p!==i.lane;if(m?(iU&p)===p:(r&p)===p){0!==p&&p===r8&&(lP=!0),null!==c&&(c=c.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});e:{var h=e,g=i;switch(p=t,g.tag){case 1:if("function"==typeof(h=g.payload)){f=h.call(n,f,p);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p="function"==typeof(h=g.payload)?h.call(n,f,p):h))break e;f=d({},f,p);break e;case 2:lw=!0}}null!==(p=i.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=l.callbacks)?l.callbacks=[p]:m.push(p))}else m={lane:p,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===c?(s=c=m,u=f):c=c.next=m,o|=p;if(null===(i=i.next))if(null===(i=l.shared.pending))break;else i=(m=i).next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}null===c&&(u=f),l.baseState=u,l.firstBaseUpdate=s,l.lastBaseUpdate=c,null===a&&(l.shared.lanes=0),iq|=o,e.lanes=o,e.memoizedState=f}}function lL(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function lO(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var o=O.T,i={};O.T=i,a5(e,!1,t,n);try{var u=l(),s=O.S;if(null!==s&&s(i,u),null!==u&&"object"==typeof u&&"function"==typeof u.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},u.then(function(){f.status="fulfilled",f.value=r;for(var e=0;e title"))),sd(a,r,n),a[eR]=e,eK(a),r=a;break e;case"link":var o=s2("link","href",l).get(r+(n.href||""));if(o){for(var u=0;ui)break;var c=u.transferSize,f=u.initiatorType;c&&sp(f)&&(o+=c*((u=u.responseEnd)s8?50:800)+h);return m.unsuspend=e,function(){m.unsuspend=null,clearTimeout(t),clearTimeout(n)}}:null)){i7=a,e.cancelPendingCommit=g(uC.bind(null,e,t,a,n,r,l,o,i,u,c,f,null,d,p)),uc(e,a,o,!s);return}}uC(e,t,a,n,r,l,o,i,u)}function uc(e,t,n,r){t&=~iY,t&=~iK,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var l=t;0<\/script>",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[eR]=t,a[eA]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(t.stateNode=a,sd(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break;case"img":r=!0;break;default:r=!1}r&&oq(t)}}return oZ(t),oK(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&oq(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=H.current,rF(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=rC))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eR]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ss(e.nodeValue,n)))||rL(t,!0)}else(e=sg(e).createTextNode(r))[eR]=t,t.stateNode=e}return oZ(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rF(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[eR]=t}else rR(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oZ(t),e=!1}else n=rA(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return lB(t),t;return lB(t),null}if(0!=(128&t.flags))throw Error(i(558))}return oZ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rF(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(i(317));l[eR]=t}else rR(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oZ(t),l=!1}else l=rA(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&t.flags)return lB(t),t;return lB(t),null}}if(lB(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),oG(t,t.updateQueue),oZ(t),null;case 4:return Q(),null===e&&u7(t.stateNode.containerInfo),oZ(t),null;case 10:return rH(t.type),oZ(t),null;case 19:if(I(lQ),null===(r=t.memoizedState))return oZ(t),null;if(l=0!=(128&t.flags),null===(a=r.rendering))if(l)oX(r,!1);else{if(0!==iW||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=lW(e))){for(t.flags|=128,oX(r,!1),t.updateQueue=e=a.updateQueue,oG(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return U(lQ,1&lQ.current|2),r_&&rk(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&er()>i3&&(t.flags|=128,l=!0,oX(r,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=lW(a))){if(t.flags|=128,l=!0,t.updateQueue=e=e.updateQueue,oG(t,e),oX(r,!0),null===r.tail&&"hidden"===r.tailMode&&!a.alternate&&!r_)return oZ(t),null}else 2*er()-r.renderingStartTime>i3&&0x20000000!==n&&(t.flags|=128,l=!0,oX(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}if(null!==r.tail)return e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=er(),e.sibling=null,n=lQ.current,U(lQ,l?1&n|2:1&n),r_&&rk(t,r.treeForkCount),e;return oZ(t),null;case 22:case 23:return lB(t),lM(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(oZ(t),6&t.subtreeFlags&&(t.flags|=8192)):oZ(t),null!==(n=t.updateQueue)&&oG(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&I(r7),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rH(r0),oZ(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}(t.alternate,t,iQ);if(null!==n){iI=n;return}if(null!==(t=t.sibling)){iI=t;return}iI=t=e}while(null!==t);0===iW&&(iW=5)}function uE(e,t){do{var n=function(e,t){switch(rx(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rH(r0),Q(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return q(t),null;case 31:if(null!==t.memoizedState){if(lB(t),null===t.alternate)throw Error(i(340));rR()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(lB(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));rR()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return I(lQ),null;case 4:return Q(),null;case 10:return rH(t.type),null;case 22:case 23:return lB(t),lM(),null!==e&&I(r7),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rH(r0),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,iI=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){iI=e;return}iI=e=n}while(null!==e);iW=6,iI=null}function uC(e,t,n,r,l,a,o,u,s){e.cancelPendingCommit=null;do uT();while(0!==i6);if(0!=(6&iA))throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(!function(e,t,n,r,l,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(n=o&~n;0g&&(o=g,g=h,h=o);var y=nP(i,h),v=nP(i,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,O.T=null,n=ut,ut=null;var a=i5,o=i7;if(i6=0,i9=i5=null,i7=0,0!=(6&iA))throw Error(i(331));var u=iA;if(iA|=4,iO(a.current),iC(a,a.current,o,n),iA=u,uW(0,!1),ep&&"function"==typeof ep.onPostCommitFiberRoot)try{ep.onPostCommitFiberRoot(ed,a)}catch(e){}return!0}finally{D.p=l,O.T=r,uN(e,t)}}function uO(e,t,n){t=rc(n,t),t=oh(e.stateNode,t,2),null!==(e=lC(e,t,2))&&(ez(e,2),uQ(e))}function uD(e,t,n){if(3===e.tag)uO(e,e,n);else for(;null!==t;){if(3===t.tag){uO(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===i8||!i8.has(r))){e=rc(n,e),null!==(r=lC(t,n=og(2),2))&&(oy(n,r,t,e),ez(r,2),uQ(r));break}}t=t.return}}function uF(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new iR;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(iB=!0,l.add(n),e=uR.bind(null,e,t,n),t.then(e,e))}function uR(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,iM===e&&(iU&n)===n&&(4===iW||3===iW&&(0x3c00000&iU)===iU&&300>er()-i1?0==(2&iA)&&up(e,0):iY|=n,iX===iU&&(iX=0)),uQ(e)}function uA(e,t){0===t&&(t=eE()),null!==(e=n8(e,t))&&(ez(e,t),uQ(e))}function uM(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),uA(e,n)}function uI(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),uA(e,n)}var uU=null,u$=null,uj=!1,uH=!1,uV=!1,uB=0;function uQ(e){e!==u$&&null===e.next&&(null===u$?uU=u$=e:u$=u$.next=e),uH=!0,uj||(uj=!0,sE(function(){0!=(6&iA)?J(ea,uq):uK()}))}function uW(e,t){if(!uV&&uH){uV=!0;do for(var n=!1,r=uU;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000095&(a=(1<<31-eh(42|e)+1)-1&(l&~(o&~i)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,uX(r,a))}else a=iU,0==(3&(a=eS(r,r===iM?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ex(r,a)||(n=!0,uX(r,a));r=r.next}while(n);uV=!1}}function uq(){uK()}function uK(){uH=uj=!1;var e,t=0;0===uB||((e=window.event)&&"popstate"===e.type?e===sk||(sk=e,0):(sk=null,1))||(t=uB);for(var n=er(),r=null,l=uU;null!==l;){var a=l.next,o=uY(l,n);0===o?(l.next=null,null===r?uU=a:r.next=a,null===a&&(u$=r)):(r=l,(0!==t||0!=(3&o))&&(uH=!0)),l=a}0!==i6&&5!==i6||uW(t,!1),0!==uB&&(uB=0)}function uY(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title"):null)}function s4(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var s8=0;function s6(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages)){if(this.stylesheets)s9(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var s5=null;function s9(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,s5=new Map,t.forEach(s7,e),s5=null,s6.call(e))}function s7(e,t){if(!(4&t.state.loading)){var n=s5.get(e);if(n)var r=n.get(null);else{n=new Map,s5.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;atypeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cM=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cM.isDisabled&&cM.supportsFiber)try{ed=cM.inject({bundleType:0,version:"19.2.3",rendererPackageName:"react-dom",currentDispatcherRef:O,reconcilerVersion:"19.2.3"}),ep=cM}catch(e){}}t.createRoot=function(e,t){if(!(n=e)||1!==n.nodeType&&9!==n.nodeType&&11!==n.nodeType)throw Error(i(299));var n,r,l,a,o,u,s,c,f=!1,d="",p=oc,m=of,h=od;return null!=t&&(!0===t.unstable_strictMode&&(f=!0),void 0!==t.identifierPrefix&&(d=t.identifierPrefix),void 0!==t.onUncaughtError&&(p=t.onUncaughtError),void 0!==t.onCaughtError&&(m=t.onCaughtError),void 0!==t.onRecoverableError&&(h=t.onRecoverableError)),r=e,l=1,a=!1,o=null,u=0,s=f,c=null,r=new ct(r,l,a,d,p,m,h,cD,null),l=1,!0===s&&(l|=24),s=re(3,null,null,l),r.current=s,s.stateNode=r,l=r1(),l.refCount++,r.pooledCache=l,l.refCount++,s.memoizedState={element:null,isDehydrated:a,cache:l},lS(s),t=r,e[eM]=t.current,u7(e),new cF(t)}},617(e,t,n){var r=n(119);function l(e){var t="https://react.dev/errors/"+e;if(1typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(523)},397(e,t,n){!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(617)},28(e,t){var n=Symbol.for("react.transitional.element");function r(e,t,r){var l=null;if(void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),"key"in t)for(var a in r={},t)"key"!==a&&(r[a]=t[a]);else r=t;return{$$typeof:n,type:e,key:l,ref:void 0!==(t=r.ref)?t:null,props:r}}Symbol.for("react.fragment"),t.jsx=r,t.jsxs=r},239(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),u=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),m=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,y={};function v(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}function b(){}function k(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=v.prototype;var w=k.prototype=new b;w.constructor=k,g(w,v.prototype),w.isPureReactComponent=!0;var S=Array.isArray;function x(){}var E={H:null,A:null,T:null,S:null},C=Object.prototype.hasOwnProperty;function z(e,t,r){var l=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==l?l:null,props:r}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var P=/\/+/g;function N(e,t){var n,r;return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36)}function T(e,t,l){if(null==e)return e;var a=[],o=0;return!function e(t,l,a,o,i){var u,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var p=!1;if(null===t)p=!0;else switch(f){case"bigint":case"string":case"number":p=!0;break;case"object":switch(t.$$typeof){case n:case r:p=!0;break;case d:return e((p=t._init)(t._payload),l,a,o,i)}}if(p)return i=i(t),p=""===o?"."+N(t,0):o,S(i)?(a="",null!=p&&(a=p.replace(P,"$&/")+"/"),e(i,l,a,"",function(e){return e})):null!=i&&(_(i)&&(u=i,s=a+(null==i.key||t&&t.key===i.key?"":(""+i.key).replace(P,"$&/")+"/")+p,i=z(u.type,s,u.props)),l.push(i)),1;p=0;var h=""===o?".":o+":";if(S(t))for(var g=0;g>>1,l=e[r];if(0>>1;ra(u,n))sa(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else if(sa(c,n))e[r]=c,e[s]=n,r=s;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,i=performance;t.unstable_now=function(){return i.now()}}else{var u=Date,s=u.now();t.unstable_now=function(){return u.now()-s}}var c=[],f=[],d=1,p=null,m=3,h=!1,g=!1,y=!1,v=!1,b="function"==typeof setTimeout?setTimeout:null,k="function"==typeof clearTimeout?clearTimeout:null,w="u">typeof setImmediate?setImmediate:null;function S(e){for(var t=r(f);null!==t;){if(null===t.callback)l(f);else if(t.startTime<=e)l(f),t.sortIndex=t.expirationTime,n(c,t);else break;t=r(f)}}function x(e){if(y=!1,S(e),!g)if(null!==r(c))g=!0,E||(E=!0,o());else{var t=r(f);null!==t&&O(x,t.startTime-e)}}var E=!1,C=-1,z=5,_=-1;function P(){return!!v||!(t.unstable_now()-_e&&P());){var i=p.callback;if("function"==typeof i){p.callback=null,m=p.priorityLevel;var u=i(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof u){p.callback=u,S(e),n=!0;break t}p===r(c)&&l(c),S(e)}else l(c);p=r(c)}if(null!==p)n=!0;else{var s=r(f);null!==s&&O(x,s.startTime-e),n=!1}}break e}finally{p=null,m=a,h=!1}}}finally{n?o():E=!1}}}if("function"==typeof w)o=function(){w(N)};else if("u">typeof MessageChannel){var T=new MessageChannel,L=T.port2;T.port1.onmessage=N,o=function(){L.postMessage(null)}}else o=function(){b(N,0)};function O(e,n){C=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125i?(e.sortIndex=a,n(f,e),null===r(c)&&e===r(f)&&(y?(k(C),C=-1):y=!0,O(x,a-i))):(e.sortIndex=u,n(c,e),g||h||(g=!0,E||(E=!0,o()))),e},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},236(e,t,n){e.exports=n(55)}}; \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt new file mode 100644 index 00000000000..20abecd8d5b --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt @@ -0,0 +1,49 @@ +/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/tsconfig.json b/e2e/react-start/module-federation-rsbuild-remote/tsconfig.json new file mode 100644 index 00000000000..d95b47232e2 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/tsconfig.json @@ -0,0 +1,18 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "noEmit": true + } +} diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md new file mode 100644 index 00000000000..2d670a3fe5a --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -0,0 +1,30 @@ +# TanStack Start - Module Federation Host (Rsbuild) + +This example demonstrates a **TanStack Start host app** consuming a remote module +using: + +- `@module-federation/rsbuild-plugin` +- `@module-federation/node/runtimePlugin` + +## Run with the remote app + +1. Start the remote app first: + +```sh +cd ../start-module-federation-rsbuild-remote +pnpm install +pnpm build +pnpm preview --port 3001 +``` + +2. In another terminal, start the host app: + +```sh +pnpm install +REMOTE_PORT=3001 pnpm build +PORT=3000 pnpm start +``` + +3. Open `http://localhost:3000`. + +The host renders the remote component during SSR and hydrates it on the client. diff --git a/examples/react/start-module-federation-rsbuild-host/package.json b/examples/react/start-module-federation-rsbuild-host/package.json new file mode 100644 index 00000000000..19b3821dd2a --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/package.json @@ -0,0 +1,31 @@ +{ + "name": "tanstack-react-example-start-module-federation-rsbuild-host", + "private": true, + "sideEffects": false, + "type": "module", + "scripts": { + "dev": "rsbuild dev --port 3000", + "build": "rsbuild build", + "preview": "rsbuild preview", + "start": "node server.js" + }, + "dependencies": { + "@tanstack/react-router": "workspace:^", + "@tanstack/react-start": "workspace:^", + "express": "^5.1.0", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@module-federation/enhanced": "^0.24.1", + "@module-federation/node": "^2.7.31", + "@module-federation/rsbuild-plugin": "^0.24.1", + "@rsbuild/core": "^1.3.21", + "@rsbuild/plugin-react": "^1.1.0", + "@types/node": "^22.10.2", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "srvx": "^0.11.2", + "typescript": "^5.7.2" + } +} diff --git a/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts new file mode 100644 index 00000000000..cd766058224 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts @@ -0,0 +1,72 @@ +import { defineConfig } from '@rsbuild/core' +import { createRequire } from 'node:module' +import { pluginReact } from '@rsbuild/plugin-react' +import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' +import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack' +import { tanstackStart } from '@tanstack/react-start/plugin/rsbuild' + +const require = createRequire(import.meta.url) +const remotePort = Number(process.env.REMOTE_PORT || 3001) +const remoteOrigin = `http://localhost:${remotePort}` +const shared = { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, +} + +export default defineConfig({ + plugins: [ + pluginReact(), + pluginModuleFederation( + { + name: 'mf_host', + remotes: { + mf_remote: `mf_remote@${remoteOrigin}/remoteEntry.js`, + }, + dts: false, + experiments: { + asyncStartup: true, + }, + runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], + shared, + }, + { + environment: 'client', + }, + ), + ...tanstackStart(), + ], + environments: { + ssr: { + tools: { + rspack: { + plugins: [ + new ModuleFederationPlugin({ + name: 'mf_host_ssr', + remotes: { + mf_remote: `mf_remote@${remoteOrigin}/ssr/remoteEntry.js`, + }, + dts: false, + experiments: { + asyncStartup: true, + }, + remoteType: 'script', + library: { + type: 'commonjs-module', + }, + runtimePlugins: [ + require.resolve('@module-federation/node/runtimePlugin'), + ], + shared, + }), + ], + }, + }, + }, + }, +}) diff --git a/examples/react/start-module-federation-rsbuild-host/server.js b/examples/react/start-module-federation-rsbuild-host/server.js new file mode 100644 index 00000000000..9fcfd2e772a --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/server.js @@ -0,0 +1,38 @@ +import fs from 'node:fs' +import path from 'node:path' +import { createRequire } from 'node:module' +import express from 'express' +import { toNodeHandler } from 'srvx/node' + +const require = createRequire(import.meta.url) +const port = process.env.PORT || 3000 + +if (!globalThis.self) { + globalThis.self = globalThis +} + +const bundledServerPath = path.resolve('./dist/server/server.js') +const commonJsServerPath = path.resolve('./dist/server/server.cjs') +fs.copyFileSync(bundledServerPath, commonJsServerPath) + +let imported = require(commonJsServerPath) +if (imported && typeof imported.then === 'function') { + imported = await imported +} +const server = imported?.default ?? imported +const nodeHandler = toNodeHandler(server.fetch) + +const app = express() + +app.use(express.static('./dist/client', { index: false })) +app.use(async (req, res, next) => { + try { + await nodeHandler(req, res) + } catch (error) { + next(error) + } +}) + +app.listen(port, () => { + console.info(`Start Server: http://localhost:${port}`) +}) diff --git a/examples/react/start-module-federation-rsbuild-host/src/env.d.ts b/examples/react/start-module-federation-rsbuild-host/src/env.d.ts new file mode 100644 index 00000000000..63b8f9bcb96 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/src/env.d.ts @@ -0,0 +1,8 @@ +/// +/// + +declare module 'mf_remote/message' { + import type { ReactNode } from 'react' + + export function FederatedMessage(): ReactNode +} diff --git a/examples/react/start-module-federation-rsbuild-host/src/routeTree.gen.ts b/examples/react/start-module-federation-rsbuild-host/src/routeTree.gen.ts new file mode 100644 index 00000000000..dceedffdc12 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/src/routeTree.gen.ts @@ -0,0 +1,68 @@ +/* eslint-disable */ + +// @ts-nocheck + +// noinspection JSUnusedGlobalSymbols + +// This file was automatically generated by TanStack Router. +// You should NOT make any changes in this file as it will be overwritten. +// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. + +import { Route as rootRouteImport } from './routes/__root' +import { Route as IndexRouteImport } from './routes/index' + +const IndexRoute = IndexRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => rootRouteImport, +} as any) + +export interface FileRoutesByFullPath { + '/': typeof IndexRoute +} +export interface FileRoutesByTo { + '/': typeof IndexRoute +} +export interface FileRoutesById { + __root__: typeof rootRouteImport + '/': typeof IndexRoute +} +export interface FileRouteTypes { + fileRoutesByFullPath: FileRoutesByFullPath + fullPaths: '/' + fileRoutesByTo: FileRoutesByTo + to: '/' + id: '__root__' | '/' + fileRoutesById: FileRoutesById +} +export interface RootRouteChildren { + IndexRoute: typeof IndexRoute +} + +declare module '@tanstack/react-router' { + interface FileRoutesByPath { + '/': { + id: '/' + path: '/' + fullPath: '/' + preLoaderRoute: typeof IndexRouteImport + parentRoute: typeof rootRouteImport + } + } +} + +const rootRouteChildren: RootRouteChildren = { + IndexRoute: IndexRoute, +} +export const routeTree = rootRouteImport + ._addFileChildren(rootRouteChildren) + ._addFileTypes() + +import type { getRouter } from './router.tsx' +import type { createStart } from '@tanstack/react-start' +declare module '@tanstack/react-start' { + interface Register { + ssr: true + router: Awaited> + } +} diff --git a/examples/react/start-module-federation-rsbuild-host/src/router.tsx b/examples/react/start-module-federation-rsbuild-host/src/router.tsx new file mode 100644 index 00000000000..0f689ec2ec9 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/src/router.tsx @@ -0,0 +1,9 @@ +import { createRouter } from '@tanstack/react-router' +import { routeTree } from './routeTree.gen' + +export function getRouter() { + return createRouter({ + routeTree, + defaultPreload: 'intent', + }) +} diff --git a/examples/react/start-module-federation-rsbuild-host/src/routes/__root.tsx b/examples/react/start-module-federation-rsbuild-host/src/routes/__root.tsx new file mode 100644 index 00000000000..ef6cc68bebb --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/src/routes/__root.tsx @@ -0,0 +1,25 @@ +import * as React from 'react' +import { + HeadContent, + Outlet, + Scripts, + createRootRoute, +} from '@tanstack/react-router' + +export const Route = createRootRoute({ + component: RootComponent, +}) + +function RootComponent() { + return ( + + + + + + + + + + ) +} diff --git a/examples/react/start-module-federation-rsbuild-host/src/routes/index.tsx b/examples/react/start-module-federation-rsbuild-host/src/routes/index.tsx new file mode 100644 index 00000000000..c326ae57d69 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/src/routes/index.tsx @@ -0,0 +1,16 @@ +import { createFileRoute } from '@tanstack/react-router' +import { FederatedMessage } from 'mf_remote/message' + +export const Route = createFileRoute('/')({ + component: Home, +}) + +function Home() { + return ( +
+

Host application

+

This page renders a module exposed by the remote application.

+ +
+ ) +} diff --git a/examples/react/start-module-federation-rsbuild-host/tsconfig.json b/examples/react/start-module-federation-rsbuild-host/tsconfig.json new file mode 100644 index 00000000000..d95b47232e2 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/tsconfig.json @@ -0,0 +1,18 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "noEmit": true + } +} diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md new file mode 100644 index 00000000000..42d225dec76 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -0,0 +1,19 @@ +# TanStack Start - Module Federation Remote (Rsbuild) + +This example is the **remote app** used by the host example: + +- `../start-module-federation-rsbuild-host` + +It exposes: + +- `mf_remote/message` + +via `@module-federation/rsbuild-plugin`, and serves chunks over HTTP. + +## Run + +```sh +pnpm install +pnpm build +pnpm preview --port 3001 +``` diff --git a/examples/react/start-module-federation-rsbuild-remote/index.html b/examples/react/start-module-federation-rsbuild-remote/index.html new file mode 100644 index 00000000000..613abec7295 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/index.html @@ -0,0 +1,12 @@ + + + + + + Module Federation Remote + + +
+ + + diff --git a/examples/react/start-module-federation-rsbuild-remote/package.json b/examples/react/start-module-federation-rsbuild-remote/package.json new file mode 100644 index 00000000000..a61cee15a2b --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/package.json @@ -0,0 +1,23 @@ +{ + "name": "tanstack-react-example-start-module-federation-rsbuild-remote", + "private": true, + "type": "module", + "scripts": { + "dev": "rsbuild dev --port 3001", + "build": "rsbuild build", + "preview": "rsbuild preview" + }, + "dependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@module-federation/node": "^2.7.31", + "@module-federation/rsbuild-plugin": "^0.24.1", + "@rsbuild/core": "^1.3.21", + "@rsbuild/plugin-react": "^1.1.0", + "@types/react": "^19.0.8", + "@types/react-dom": "^19.0.3", + "typescript": "^5.7.2" + } +} diff --git a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts new file mode 100644 index 00000000000..6685f8ede38 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts @@ -0,0 +1,90 @@ +import { defineConfig } from '@rsbuild/core' +import { createRequire } from 'node:module' +import { pluginReact } from '@rsbuild/plugin-react' +import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' +import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack' + +const require = createRequire(import.meta.url) +const remotePort = Number(process.env.REMOTE_PORT || 3001) +const remoteOrigin = `http://localhost:${remotePort}` + +export default defineConfig({ + plugins: [ + pluginReact(), + pluginModuleFederation({ + name: 'mf_remote', + filename: 'remoteEntry.js', + exposes: { + './message': './src/message.tsx', + }, + runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], + shared: { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, + }, + }), + ], + environments: { + web: { + output: { + assetPrefix: `${remoteOrigin}/`, + }, + }, + ssr: { + source: { + entry: {}, + }, + output: { + assetPrefix: `${remoteOrigin}/ssr/`, + cleanDistPath: false, + distPath: { + root: 'ssr', + }, + }, + tools: { + rspack: { + target: 'async-node', + output: { + chunkFormat: 'commonjs', + chunkLoading: 'async-node', + library: { + type: 'commonjs-module', + }, + }, + plugins: [ + new ModuleFederationPlugin({ + name: 'mf_remote', + filename: 'remoteEntry.js', + library: { + type: 'commonjs-module', + }, + dts: false, + exposes: { + './message': './src/message.tsx', + }, + runtimePlugins: [ + require.resolve('@module-federation/node/runtimePlugin'), + ], + shared: { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, + }, + }), + ], + }, + }, + }, + }, +}) diff --git a/examples/react/start-module-federation-rsbuild-remote/src/env.d.ts b/examples/react/start-module-federation-rsbuild-remote/src/env.d.ts new file mode 100644 index 00000000000..b0ac762b091 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/src/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/react/start-module-federation-rsbuild-remote/src/index.tsx b/examples/react/start-module-federation-rsbuild-remote/src/index.tsx new file mode 100644 index 00000000000..0e778361332 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/src/index.tsx @@ -0,0 +1,22 @@ +import * as React from 'react' +import { createRoot } from 'react-dom/client' +import { FederatedMessage } from './message' + +function App() { + return ( +
+

Remote application

+ +
+ ) +} + +const container = document.getElementById('root') +if (container) { + const root = createRoot(container) + root.render( + + + , + ) +} diff --git a/examples/react/start-module-federation-rsbuild-remote/src/message.tsx b/examples/react/start-module-federation-rsbuild-remote/src/message.tsx new file mode 100644 index 00000000000..91acae29847 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/src/message.tsx @@ -0,0 +1,11 @@ +import * as React from 'react' + +export function FederatedMessage() { + const [count, setCount] = React.useState(0) + + return ( + + ) +} diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/index.html b/examples/react/start-module-federation-rsbuild-remote/ssr/index.html new file mode 100644 index 00000000000..b8d89148397 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/ssr/index.html @@ -0,0 +1 @@ +Rsbuild App
\ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/mf-manifest.json b/examples/react/start-module-federation-rsbuild-remote/ssr/mf-manifest.json new file mode 100644 index 00000000000..4b5ee7b7e30 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/ssr/mf-manifest.json @@ -0,0 +1,89 @@ +{ + "id": "mf_remote", + "name": "mf_remote", + "metaData": { + "name": "mf_remote", + "type": "app", + "buildInfo": { + "buildVersion": "local", + "buildName": "tanstack-react-example-start-module-federation-rsbuild-remote" + }, + "remoteEntry": { + "name": "remoteEntry.js", + "path": "", + "type": "commonjs-module" + }, + "types": { + "path": "", + "name": "", + "zip": "", + "api": "" + }, + "globalName": "mf_remote", + "pluginVersion": "0.24.1", + "prefetchInterface": false, + "publicPath": "http://localhost:3001/ssr/" + }, + "shared": [ + { + "id": "mf_remote:react-dom", + "name": "react-dom", + "version": "19.2.3", + "singleton": true, + "requiredVersion": "^19.2.3", + "assets": { + "js": { + "async": [], + "sync": [ + "static/js/lib-react.5ec9d9fd.js" + ] + }, + "css": { + "async": [], + "sync": [] + } + }, + "fallback": "" + }, + { + "id": "mf_remote:react", + "name": "react", + "version": "19.2.3", + "singleton": true, + "requiredVersion": "^19.2.3", + "assets": { + "js": { + "async": [], + "sync": [ + "static/js/lib-react.5ec9d9fd.js" + ] + }, + "css": { + "async": [], + "sync": [] + } + }, + "fallback": "" + } + ], + "remotes": [], + "exposes": [ + { + "id": "mf_remote:message", + "name": "message", + "assets": { + "js": { + "sync": [ + "static/js/async/__federation_expose_message.f665fcfc.js" + ], + "async": [] + }, + "css": { + "sync": [], + "async": [] + } + }, + "path": "./message" + } + ] +} \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/mf-stats.json b/examples/react/start-module-federation-rsbuild-remote/ssr/mf-stats.json new file mode 100644 index 00000000000..c558729df26 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/ssr/mf-stats.json @@ -0,0 +1,99 @@ +{ + "id": "mf_remote", + "name": "mf_remote", + "metaData": { + "name": "mf_remote", + "type": "app", + "buildInfo": { + "buildVersion": "local", + "buildName": "tanstack-react-example-start-module-federation-rsbuild-remote" + }, + "remoteEntry": { + "name": "remoteEntry.js", + "path": "", + "type": "commonjs-module" + }, + "types": { + "path": "", + "name": "", + "zip": "", + "api": "" + }, + "globalName": "mf_remote", + "pluginVersion": "0.24.1", + "prefetchInterface": false, + "publicPath": "http://localhost:3001/ssr/" + }, + "shared": [ + { + "singleton": true, + "requiredVersion": "^19.2.3", + "shareScope": "default", + "name": "react-dom", + "version": "19.2.3", + "eager": false, + "id": "mf_remote:react-dom", + "assets": { + "js": { + "async": [], + "sync": [ + "static/js/lib-react.5ec9d9fd.js" + ] + }, + "css": { + "async": [], + "sync": [] + } + }, + "usedIn": [], + "usedExports": [], + "fallback": "" + }, + { + "singleton": true, + "requiredVersion": "^19.2.3", + "shareScope": "default", + "name": "react", + "version": "19.2.3", + "eager": false, + "id": "mf_remote:react", + "assets": { + "js": { + "async": [], + "sync": [ + "static/js/lib-react.5ec9d9fd.js" + ] + }, + "css": { + "async": [], + "sync": [] + } + }, + "usedIn": [], + "usedExports": [], + "fallback": "" + } + ], + "remotes": [], + "exposes": [ + { + "path": "./message", + "id": "mf_remote:message", + "name": "message", + "requires": [], + "file": "src/message.tsx", + "assets": { + "js": { + "sync": [ + "static/js/async/__federation_expose_message.f665fcfc.js" + ], + "async": [] + }, + "css": { + "sync": [], + "async": [] + } + } + } + ] +} \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/remoteEntry.js b/examples/react/start-module-federation-rsbuild-remote/ssr/remoteEntry.js new file mode 100644 index 00000000000..028f2fbc939 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/ssr/remoteEntry.js @@ -0,0 +1,8 @@ +(()=>{"use strict";var __webpack_modules__={229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: + ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} +})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} +})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let b=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},v="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return v}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function M(e,t){return Object.hasOwnProperty.call(e,t)}M(v,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(v,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let $=v.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;M(e,"__VMOK__")&&!M(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),M(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){v.__FEDERATION__.__GLOBAL_PLUGIN__=[],v.__FEDERATION__.__INSTANCES__=[],v.__FEDERATION__.moduleInfo={},v.__FEDERATION__.__SHARE__={},v.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys($).forEach(e=>{delete $[e]})}function A(e){v.__FEDERATION__.__INSTANCES__.push(e)}function k(){return v.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function O(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(v.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,v.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(v),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},C=e=>F(e,R.__FEDERATION__.moduleInfo),L=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=v[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>v.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>v.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",W="global",B="[0-9A-Za-z-]+",z=`(?:\\+(${B}(?:\\.${B})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function eb(e){return!e||"x"===e.toLowerCase()||"*"===e}function ev(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=eb(r)?"":eb(n)?`>=${r}.0.0`:eb(o)?`>=${r}.${n}.0`:`>=${t}`,s=eb(l)?"":eb(u)?`<${Number(l)+1}.0.0-0`:eb(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function eM(e){return e.replace(eS(es),"$1$2$3")}function e$(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(eb(t))return"";if(eb(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(eb(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eA(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>eb(t)?"":eb(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:eb(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function ek(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=eb(r),s=a||eb(n),l=s||eb(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function eO(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eC(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eL(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eL(e,t);case">":return 0>eC(e,t);case">=":return eL(e,t)||0>eC(e,t);case"<":return eC(e,t)>0;case"<=":return eL(e,t)||eC(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return ev(eT,eA,ek,eO)(e)}function eH(e){return ev(eN,eM,e$,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eW(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eB=(e,t)=>{let r=t||function(e,t){return eW(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eW(e,t):!ez(o[e])&&eW(e,t)};if(a){if(i=eB(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eB(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eW(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eW(e,t);else return!0;return!eJ(o[e])&&eW(e,t)};if(a){if(i=eB(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eB(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eW(e,r)},n=eB(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e9(e,t){return t&&e.treeShaking?e.treeShaking:e}function e8(){return"mf_remote:local"}function e4(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e5(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e6=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e6}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e6}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!$[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;$[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:$,uniqueKey:n});if(o)return o}throw e})}return $[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||W,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:A,getGlobalFederationConstructor:k,setGlobalFederationConstructor:O,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:C,setGlobalSnapshotInfoByModuleInfo:L,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e4,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined + ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=b(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tv(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tv(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let tM=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function t$(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!tM("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!tM("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!tM("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tv(o,s),t$(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=C({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:C({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:C({name:e.name,version:"version"in e?e.version:void 0})}}class tA{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=C({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=L({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=L(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tb({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tk{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e9(i,a);if(t.lib)return e3(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e3(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e3(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e9(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e3(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e9(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e9(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e3(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e3(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tb({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tO{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e4(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=W)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(v[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(v,i))?void 0:t.configurable)?delete v[i]:v[i]=void 0}let s=ta(a.remoteInfo);$[s]&&delete $[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=v.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=v.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),v.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tb({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e5(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tb({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tb({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tb({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e8(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tA(this),this.sharedHandler=new tk(this),this.remoteHandler=new tO(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=v,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=k,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e4,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=O,t.setGlobalFederationInstance=A,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: +${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} +})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` +while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},b=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},v=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},M={},$=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>b),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(v))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(v)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:b,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:M,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:$,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:M,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}},508(e,t,r){r.d(t,{get:()=>r.getContainer,init:()=>r.initContainer})}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>__webpack_require__(508),(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:""})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"783"===e?"static/js/lib-react.5ec9d9fd.js":"static/js/async/__federation_expose_message.f665fcfc.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{__webpack_require__.p="http://localhost:3001/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-example-start-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{36:["119"]},moduleIdToConsumeDataMapping:{119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:[]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{__webpack_require__.initializeExposesData={moduleMap:{"./message":()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36"),__webpack_require__.e("454")]).then(()=>()=>__webpack_require__(923))},shareScope:"default"},__webpack_require__.getContainer=__webpack_require__.getContainer||function(){throw Error("should have __webpack_require__.getContainer")},__webpack_require__.initContainer=__webpack_require__.initContainer||function(){throw Error("should have __webpack_require__.initContainer")}})(),(()=>{var e={908:0},t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.f665fcfc.js b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.f665fcfc.js new file mode 100644 index 00000000000..44a0372d65a --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.f665fcfc.js @@ -0,0 +1 @@ +"use strict";exports.ids=["454"],exports.modules={923(e,t,s){s.r(t),s.d(t,{FederatedMessage:()=>d});var r=s(742),o=s(119);function d(){let[e,t]=o.useState(0);return(0,r.jsxs)("button",{onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}}}; \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/index.c17826eb.js b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/index.c17826eb.js new file mode 100644 index 00000000000..20b200b5ecb --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/index.c17826eb.js @@ -0,0 +1,8 @@ +(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: + ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} +})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} +})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined + ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: +${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} +})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` +while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:3001/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-example-start-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js new file mode 100644 index 00000000000..837d529a8ce --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js @@ -0,0 +1,2 @@ +/*! For license information please see lib-react.5ec9d9fd.js.LICENSE.txt */ +"use strict";exports.ids=["783"],exports.modules={523(e,t,n){var r,l=n(236),a=n(119),o=n(495);function i(e){var t="https://react.dev/errors/"+e;if(1A||(e.current=R[A],R[A]=null,A--)}function U(e,t){R[++A]=e.current,e.current=t}var $=M(null),j=M(null),H=M(null),V=M(null);function B(e,t){switch(U(H,t),U(j,e),U($,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?sy(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=sv(t=sy(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}I($),U($,e)}function Q(){I($),I(j),I(H)}function W(e){null!==e.memoizedState&&U(V,e);var t=$.current,n=sv(t,e.type);t!==n&&(U(j,e),U($,n))}function q(e){j.current===e&&(I($),I(j)),V.current===e&&(I(V),ce._currentValue=F)}function K(e){if(void 0===tA)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);tA=t&&t[1]||"",tM=-1)":-1l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{Y=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?K(n):""}function X(e){try{var t="",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return K(e.type);case 16:return K("Lazy");case 13:return e.child!==t&&null!==t?K("Suspense Fallback"):K("Suspense");case 19:return K("SuspenseList");case 0:case 15:return G(e.type,!1);case 11:return G(e.type.render,!1);case 1:return G(e.type,!0);case 31:return K("Activity");default:return""}}(e,n),n=e,e=e.return;while(e);return t}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}var Z=Object.prototype.hasOwnProperty,J=l.unstable_scheduleCallback,ee=l.unstable_cancelCallback,et=l.unstable_shouldYield,en=l.unstable_requestPaint,er=l.unstable_now,el=l.unstable_getCurrentPriorityLevel,ea=l.unstable_ImmediatePriority,eo=l.unstable_UserBlockingPriority,ei=l.unstable_NormalPriority,eu=l.unstable_LowPriority,es=l.unstable_IdlePriority,ec=l.log,ef=l.unstable_setDisableYieldValue,ed=null,ep=null;function em(e){if("function"==typeof ec&&ef(e),ep&&"function"==typeof ep.setStrictMode)try{ep.setStrictMode(ed,e)}catch(e){}}var eh=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(eg(e)/ey|0)|0},eg=Math.log,ey=Math.LN2,ev=256,eb=262144,ek=4194304;function ew(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function eS(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=0x7ffffff&r;return 0!==i?0!=(r=i&~a)?l=ew(r):0!=(o&=i)?l=ew(o):n||0!=(n=i&~e)&&(l=ew(n)):0!=(i=r&~a)?l=ew(i):0!==o?l=ew(o):n||0!=(n=r&~e)&&(l=ew(n)),0===l?0:0!==t&&t!==l&&0==(t&a)&&((a=l&-l)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:l}function ex(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function eE(){var e=ek;return 0==(0x3c00000&(ek<<=1))&&(ek=4194304),e}function eC(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ez(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function e_(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-eh(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|261930&n}function eP(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-eh(n),l=1<typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var te=/[\n"\\]/g;function tt(e){return e.replace(te,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function tn(e,t,n,r,l,a,o,i){e.name="",null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o?e.type=o:e.removeAttribute("type"),null!=t?"number"===o?(0===t&&""===e.value||e.value!=t)&&(e.value=""+e8(t)):e.value!==""+e8(t)&&(e.value=""+e8(t)):"submit"!==o&&"reset"!==o||e.removeAttribute("value"),null!=t?tl(e,o,e8(t)):null!=n?tl(e,o,e8(n)):null!=r&&e.removeAttribute("value"),null==l&&null!=a&&(e.defaultChecked=!!a),null!=l&&(e.checked=l&&"function"!=typeof l&&"symbol"!=typeof l),null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.name=""+e8(i):e.removeAttribute("name")}function tr(e,t,n,r,l,a,o,i){if(null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a&&(e.type=a),null!=t||null!=n){if(("submit"===a||"reset"===a)&&null==t)return void e5(e);n=null!=n?""+e8(n):"",t=null!=t?""+e8(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:l)&&"symbol"!=typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.name=o),e5(e)}function tl(e,t,n){"number"===t&&e7(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function ta(e,t,n,r){if(e=e.options,t){t={};for(var l=0;ltypeof window&&void 0!==window.document&&void 0!==window.document.createElement,tz=!1;if(tC)try{var t_={};Object.defineProperty(t_,"passive",{get:function(){tz=!0}}),window.addEventListener("test",t_,t_),window.removeEventListener("test",t_,t_)}catch(e){tz=!1}var tP=null,tN=null,tT=null;function tL(){if(tT)return tT;var e,t,n=tN,r=n.length,l="value"in tP?tP.value:tP.textContent,a=l.length;for(e=0;e=nt),nl=!1;function na(e,t){switch(e){case"keyup":return -1!==t7.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function no(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ni=!1,nu={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ns(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!nu[e.type]:"textarea"===t}function nc(e,t,n,r){tb?tk?tk.push(r):tk=[r]:tb=r,0<(t=sr(t,"onChange")).length&&(n=new tH("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var nf=null,nd=null;function np(e){u8(e,0)}function nm(e){if(e9(eW(e)))return e}function nh(e,t){if("change"===e)return t}var ng=!1;if(tC){if(tC){var ny="oninput"in document;if(!ny){var nv=document.createElement("div");nv.setAttribute("oninput","return;"),ny="function"==typeof nv.oninput}r=ny}else r=!1;ng=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=n_(r)}}function nN(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nT(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var nL=tC&&"documentMode"in document&&11>=document.documentMode,nO=null,nD=null,nF=null,nR=!1;function nA(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nR||null==nO||nO!==e7(r)||(r="selectionStart"in(r=nO)&&nT(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nF&&nz(nF,r)||(nF=r,0<(r=sr(nD,"onSelect")).length&&(t=new tH("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=nO)))}function nM(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var nI={animationend:nM("Animation","AnimationEnd"),animationiteration:nM("Animation","AnimationIteration"),animationstart:nM("Animation","AnimationStart"),transitionrun:nM("Transition","TransitionRun"),transitionstart:nM("Transition","TransitionStart"),transitioncancel:nM("Transition","TransitionCancel"),transitionend:nM("Transition","TransitionEnd")},nU={},n$={};function nj(e){if(nU[e])return nU[e];if(!nI[e])return e;var t,n=nI[e];for(t in n)if(n.hasOwnProperty(t)&&t in n$)return nU[e]=n[t];return e}tC&&(n$=document.createElement("div").style,"AnimationEvent"in window||(delete nI.animationend.animation,delete nI.animationiteration.animation,delete nI.animationstart.animation),"TransitionEvent"in window||delete nI.transitionend.transition);var nH=nj("animationend"),nV=nj("animationiteration"),nB=nj("animationstart"),nQ=nj("transitionrun"),nW=nj("transitionstart"),nq=nj("transitioncancel"),nK=nj("transitionend"),nY=new Map,nG="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function nX(e,t){nY.set(e,t),eX(t,[e])}nG.push("scrollEnd");var nZ="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=o,l-=o,rv=1<<32-eh(t)+l|n<typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},rZ=l.unstable_scheduleCallback,rJ=l.unstable_NormalPriority,r0={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function r1(){return{controller:new rX,data:new Map,refCount:0}}function r2(e){e.refCount--,0===e.refCount&&rZ(rJ,function(){e.controller.abort()})}var r3=null,r4=0,r8=0,r6=null;function r5(){if(0==--r4&&null!==r3){null!==r6&&(r6.status="fulfilled");var e=r3;r3=null,r8=0,r6=null;for(var t=0;tm?(h=f,f=null):h=f.sibling;var g=p(l,f,i[m],u);if(null===g){null===f&&(f=h);break}e&&f&&null===g.alternate&&t(l,f),o=a(g,o,m),null===c?s=g:c.sibling=g,c=g,f=h}if(m===i.length)return n(l,f),r_&&rk(l,m),s;if(null===f){for(;mh?(g=m,m=null):g=m.sibling;var b=p(l,m,v.value,s);if(null===b){null===m&&(m=g);break}e&&m&&null===b.alternate&&t(l,m),o=a(b,o,h),null===f?c=b:f.sibling=b,f=b,m=g}if(v.done)return n(l,m),r_&&rk(l,h),c;if(null===m){for(;!v.done;h++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,h),null===f?c=v:f.sibling=v,f=v);return r_&&rk(l,h),c}for(m=r(m);!v.done;h++,v=u.next())null!==(v=y(m,l,h,v.value,s))&&(e&&null!==v.alternate&&m.delete(null===v.key?h:v.key),o=a(v,o,h),null===f?c=v:f.sibling=v,f=v);return e&&m.forEach(function(e){return t(l,e)}),r_&&rk(l,h),c}(s,c,f=b.call(f),v)}if("function"==typeof f.then)return u(s,c,lh(f),v);if(f.$$typeof===k)return u(s,c,rY(s,f),v);ly(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(n(s,c.sibling),(v=l(c,f)).return=s):(n(s,c),(v=ro(f,s.mode,v)).return=s),o(s=v)):n(s,c)}(u,s,c,f);return lp=null,v}catch(e){if(e===lr||e===la)throw e;var b=re(29,e,null,u.mode);return b.lanes=f,b.return=u,b}finally{}}}var lb=lv(!0),lk=lv(!1),lw=!1;function lS(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function lx(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function lE(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function lC(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&iA)){var l=r.pending;return null===l?t.next=t:(t.next=l.next,l.next=t),r.pending=t,t=n5(e),n6(e,null,n),t}return n3(e,r,t,n),n5(e)}function lz(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194048&n))){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,eP(e,n)}}function l_(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var l=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?l=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?l=a=t:a=a.next=t}else l=a=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var lP=!1;function lN(){if(lP){var e=r6;if(null!==e)throw e}}function lT(e,t,n,r){lP=!1;var l=e.updateQueue;lw=!1;var a=l.firstBaseUpdate,o=l.lastBaseUpdate,i=l.shared.pending;if(null!==i){l.shared.pending=null;var u=i,s=u.next;u.next=null,null===o?a=s:o.next=s,o=u;var c=e.alternate;null!==c&&(i=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===i?c.firstBaseUpdate=s:i.next=s,c.lastBaseUpdate=u)}if(null!==a){var f=l.baseState;for(o=0,c=s=u=null,i=a;;){var p=-0x20000001&i.lane,m=p!==i.lane;if(m?(iU&p)===p:(r&p)===p){0!==p&&p===r8&&(lP=!0),null!==c&&(c=c.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});e:{var h=e,g=i;switch(p=t,g.tag){case 1:if("function"==typeof(h=g.payload)){f=h.call(n,f,p);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p="function"==typeof(h=g.payload)?h.call(n,f,p):h))break e;f=d({},f,p);break e;case 2:lw=!0}}null!==(p=i.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=l.callbacks)?l.callbacks=[p]:m.push(p))}else m={lane:p,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===c?(s=c=m,u=f):c=c.next=m,o|=p;if(null===(i=i.next))if(null===(i=l.shared.pending))break;else i=(m=i).next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}null===c&&(u=f),l.baseState=u,l.firstBaseUpdate=s,l.lastBaseUpdate=c,null===a&&(l.shared.lanes=0),iq|=o,e.lanes=o,e.memoizedState=f}}function lL(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function lO(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var o=O.T,i={};O.T=i,a5(e,!1,t,n);try{var u=l(),s=O.S;if(null!==s&&s(i,u),null!==u&&"object"==typeof u&&"function"==typeof u.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},u.then(function(){f.status="fulfilled",f.value=r;for(var e=0;e title"))),sd(a,r,n),a[eR]=e,eK(a),r=a;break e;case"link":var o=s2("link","href",l).get(r+(n.href||""));if(o){for(var u=0;ui)break;var c=u.transferSize,f=u.initiatorType;c&&sp(f)&&(o+=c*((u=u.responseEnd)s8?50:800)+h);return m.unsuspend=e,function(){m.unsuspend=null,clearTimeout(t),clearTimeout(n)}}:null)){i7=a,e.cancelPendingCommit=g(uC.bind(null,e,t,a,n,r,l,o,i,u,c,f,null,d,p)),uc(e,a,o,!s);return}}uC(e,t,a,n,r,l,o,i,u)}function uc(e,t,n,r){t&=~iY,t&=~iK,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var l=t;0<\/script>",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[eR]=t,a[eA]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(t.stateNode=a,sd(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break;case"img":r=!0;break;default:r=!1}r&&oq(t)}}return oZ(t),oK(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&oq(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=H.current,rF(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=rC))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eR]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ss(e.nodeValue,n)))||rL(t,!0)}else(e=sg(e).createTextNode(r))[eR]=t,t.stateNode=e}return oZ(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rF(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[eR]=t}else rR(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oZ(t),e=!1}else n=rA(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return lB(t),t;return lB(t),null}if(0!=(128&t.flags))throw Error(i(558))}return oZ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rF(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(i(317));l[eR]=t}else rR(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oZ(t),l=!1}else l=rA(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&t.flags)return lB(t),t;return lB(t),null}}if(lB(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),oG(t,t.updateQueue),oZ(t),null;case 4:return Q(),null===e&&u7(t.stateNode.containerInfo),oZ(t),null;case 10:return rH(t.type),oZ(t),null;case 19:if(I(lQ),null===(r=t.memoizedState))return oZ(t),null;if(l=0!=(128&t.flags),null===(a=r.rendering))if(l)oX(r,!1);else{if(0!==iW||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=lW(e))){for(t.flags|=128,oX(r,!1),t.updateQueue=e=a.updateQueue,oG(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return U(lQ,1&lQ.current|2),r_&&rk(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&er()>i3&&(t.flags|=128,l=!0,oX(r,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=lW(a))){if(t.flags|=128,l=!0,t.updateQueue=e=e.updateQueue,oG(t,e),oX(r,!0),null===r.tail&&"hidden"===r.tailMode&&!a.alternate&&!r_)return oZ(t),null}else 2*er()-r.renderingStartTime>i3&&0x20000000!==n&&(t.flags|=128,l=!0,oX(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}if(null!==r.tail)return e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=er(),e.sibling=null,n=lQ.current,U(lQ,l?1&n|2:1&n),r_&&rk(t,r.treeForkCount),e;return oZ(t),null;case 22:case 23:return lB(t),lM(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(oZ(t),6&t.subtreeFlags&&(t.flags|=8192)):oZ(t),null!==(n=t.updateQueue)&&oG(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&I(r7),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rH(r0),oZ(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}(t.alternate,t,iQ);if(null!==n){iI=n;return}if(null!==(t=t.sibling)){iI=t;return}iI=t=e}while(null!==t);0===iW&&(iW=5)}function uE(e,t){do{var n=function(e,t){switch(rx(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rH(r0),Q(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return q(t),null;case 31:if(null!==t.memoizedState){if(lB(t),null===t.alternate)throw Error(i(340));rR()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(lB(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));rR()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return I(lQ),null;case 4:return Q(),null;case 10:return rH(t.type),null;case 22:case 23:return lB(t),lM(),null!==e&&I(r7),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rH(r0),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,iI=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){iI=e;return}iI=e=n}while(null!==e);iW=6,iI=null}function uC(e,t,n,r,l,a,o,u,s){e.cancelPendingCommit=null;do uT();while(0!==i6);if(0!=(6&iA))throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(!function(e,t,n,r,l,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(n=o&~n;0g&&(o=g,g=h,h=o);var y=nP(i,h),v=nP(i,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,O.T=null,n=ut,ut=null;var a=i5,o=i7;if(i6=0,i9=i5=null,i7=0,0!=(6&iA))throw Error(i(331));var u=iA;if(iA|=4,iO(a.current),iC(a,a.current,o,n),iA=u,uW(0,!1),ep&&"function"==typeof ep.onPostCommitFiberRoot)try{ep.onPostCommitFiberRoot(ed,a)}catch(e){}return!0}finally{D.p=l,O.T=r,uN(e,t)}}function uO(e,t,n){t=rc(n,t),t=oh(e.stateNode,t,2),null!==(e=lC(e,t,2))&&(ez(e,2),uQ(e))}function uD(e,t,n){if(3===e.tag)uO(e,e,n);else for(;null!==t;){if(3===t.tag){uO(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===i8||!i8.has(r))){e=rc(n,e),null!==(r=lC(t,n=og(2),2))&&(oy(n,r,t,e),ez(r,2),uQ(r));break}}t=t.return}}function uF(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new iR;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(iB=!0,l.add(n),e=uR.bind(null,e,t,n),t.then(e,e))}function uR(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,iM===e&&(iU&n)===n&&(4===iW||3===iW&&(0x3c00000&iU)===iU&&300>er()-i1?0==(2&iA)&&up(e,0):iY|=n,iX===iU&&(iX=0)),uQ(e)}function uA(e,t){0===t&&(t=eE()),null!==(e=n8(e,t))&&(ez(e,t),uQ(e))}function uM(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),uA(e,n)}function uI(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),uA(e,n)}var uU=null,u$=null,uj=!1,uH=!1,uV=!1,uB=0;function uQ(e){e!==u$&&null===e.next&&(null===u$?uU=u$=e:u$=u$.next=e),uH=!0,uj||(uj=!0,sE(function(){0!=(6&iA)?J(ea,uq):uK()}))}function uW(e,t){if(!uV&&uH){uV=!0;do for(var n=!1,r=uU;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000095&(a=(1<<31-eh(42|e)+1)-1&(l&~(o&~i)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,uX(r,a))}else a=iU,0==(3&(a=eS(r,r===iM?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ex(r,a)||(n=!0,uX(r,a));r=r.next}while(n);uV=!1}}function uq(){uK()}function uK(){uH=uj=!1;var e,t=0;0===uB||((e=window.event)&&"popstate"===e.type?e===sk||(sk=e,0):(sk=null,1))||(t=uB);for(var n=er(),r=null,l=uU;null!==l;){var a=l.next,o=uY(l,n);0===o?(l.next=null,null===r?uU=a:r.next=a,null===a&&(u$=r)):(r=l,(0!==t||0!=(3&o))&&(uH=!0)),l=a}0!==i6&&5!==i6||uW(t,!1),0!==uB&&(uB=0)}function uY(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title"):null)}function s4(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var s8=0;function s6(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages)){if(this.stylesheets)s9(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var s5=null;function s9(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,s5=new Map,t.forEach(s7,e),s5=null,s6.call(e))}function s7(e,t){if(!(4&t.state.loading)){var n=s5.get(e);if(n)var r=n.get(null);else{n=new Map,s5.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;atypeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cM=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cM.isDisabled&&cM.supportsFiber)try{ed=cM.inject({bundleType:0,version:"19.2.3",rendererPackageName:"react-dom",currentDispatcherRef:O,reconcilerVersion:"19.2.3"}),ep=cM}catch(e){}}t.createRoot=function(e,t){if(!(n=e)||1!==n.nodeType&&9!==n.nodeType&&11!==n.nodeType)throw Error(i(299));var n,r,l,a,o,u,s,c,f=!1,d="",p=oc,m=of,h=od;return null!=t&&(!0===t.unstable_strictMode&&(f=!0),void 0!==t.identifierPrefix&&(d=t.identifierPrefix),void 0!==t.onUncaughtError&&(p=t.onUncaughtError),void 0!==t.onCaughtError&&(m=t.onCaughtError),void 0!==t.onRecoverableError&&(h=t.onRecoverableError)),r=e,l=1,a=!1,o=null,u=0,s=f,c=null,r=new ct(r,l,a,d,p,m,h,cD,null),l=1,!0===s&&(l|=24),s=re(3,null,null,l),r.current=s,s.stateNode=r,l=r1(),l.refCount++,r.pooledCache=l,l.refCount++,s.memoizedState={element:null,isDehydrated:a,cache:l},lS(s),t=r,e[eM]=t.current,u7(e),new cF(t)}},617(e,t,n){var r=n(119);function l(e){var t="https://react.dev/errors/"+e;if(1typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(523)},397(e,t,n){!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(617)},28(e,t){var n=Symbol.for("react.transitional.element");function r(e,t,r){var l=null;if(void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),"key"in t)for(var a in r={},t)"key"!==a&&(r[a]=t[a]);else r=t;return{$$typeof:n,type:e,key:l,ref:void 0!==(t=r.ref)?t:null,props:r}}Symbol.for("react.fragment"),t.jsx=r,t.jsxs=r},239(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),u=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),m=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,y={};function v(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}function b(){}function k(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=v.prototype;var w=k.prototype=new b;w.constructor=k,g(w,v.prototype),w.isPureReactComponent=!0;var S=Array.isArray;function x(){}var E={H:null,A:null,T:null,S:null},C=Object.prototype.hasOwnProperty;function z(e,t,r){var l=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==l?l:null,props:r}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var P=/\/+/g;function N(e,t){var n,r;return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36)}function T(e,t,l){if(null==e)return e;var a=[],o=0;return!function e(t,l,a,o,i){var u,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var p=!1;if(null===t)p=!0;else switch(f){case"bigint":case"string":case"number":p=!0;break;case"object":switch(t.$$typeof){case n:case r:p=!0;break;case d:return e((p=t._init)(t._payload),l,a,o,i)}}if(p)return i=i(t),p=""===o?"."+N(t,0):o,S(i)?(a="",null!=p&&(a=p.replace(P,"$&/")+"/"),e(i,l,a,"",function(e){return e})):null!=i&&(_(i)&&(u=i,s=a+(null==i.key||t&&t.key===i.key?"":(""+i.key).replace(P,"$&/")+"/")+p,i=z(u.type,s,u.props)),l.push(i)),1;p=0;var h=""===o?".":o+":";if(S(t))for(var g=0;g>>1,l=e[r];if(0>>1;ra(u,n))sa(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else if(sa(c,n))e[r]=c,e[s]=n,r=s;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,i=performance;t.unstable_now=function(){return i.now()}}else{var u=Date,s=u.now();t.unstable_now=function(){return u.now()-s}}var c=[],f=[],d=1,p=null,m=3,h=!1,g=!1,y=!1,v=!1,b="function"==typeof setTimeout?setTimeout:null,k="function"==typeof clearTimeout?clearTimeout:null,w="u">typeof setImmediate?setImmediate:null;function S(e){for(var t=r(f);null!==t;){if(null===t.callback)l(f);else if(t.startTime<=e)l(f),t.sortIndex=t.expirationTime,n(c,t);else break;t=r(f)}}function x(e){if(y=!1,S(e),!g)if(null!==r(c))g=!0,E||(E=!0,o());else{var t=r(f);null!==t&&O(x,t.startTime-e)}}var E=!1,C=-1,z=5,_=-1;function P(){return!!v||!(t.unstable_now()-_e&&P());){var i=p.callback;if("function"==typeof i){p.callback=null,m=p.priorityLevel;var u=i(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof u){p.callback=u,S(e),n=!0;break t}p===r(c)&&l(c),S(e)}else l(c);p=r(c)}if(null!==p)n=!0;else{var s=r(f);null!==s&&O(x,s.startTime-e),n=!1}}break e}finally{p=null,m=a,h=!1}}}finally{n?o():E=!1}}}if("function"==typeof w)o=function(){w(N)};else if("u">typeof MessageChannel){var T=new MessageChannel,L=T.port2;T.port1.onmessage=N,o=function(){L.postMessage(null)}}else o=function(){b(N,0)};function O(e,n){C=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125i?(e.sortIndex=a,n(f,e),null===r(c)&&e===r(f)&&(y?(k(C),C=-1):y=!0,O(x,a-i))):(e.sortIndex=u,n(c,e),g||h||(g=!0,E||(E=!0,o()))),e},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},236(e,t,n){e.exports=n(55)}}; \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt new file mode 100644 index 00000000000..20abecd8d5b --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt @@ -0,0 +1,49 @@ +/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/tsconfig.json b/examples/react/start-module-federation-rsbuild-remote/tsconfig.json new file mode 100644 index 00000000000..d95b47232e2 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/tsconfig.json @@ -0,0 +1,18 @@ +{ + "include": ["**/*.ts", "**/*.tsx"], + "compilerOptions": { + "strict": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["DOM", "DOM.Iterable", "ES2022"], + "isolatedModules": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "target": "ES2022", + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "noEmit": true + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b13062c3c4d..df3c2ab0c06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,7 +111,7 @@ importers: version: 4.0.3 nx: specifier: 22.3.3 - version: 22.3.3(@swc/core@1.10.15(@swc/helpers@0.5.15)) + version: 22.3.3(@swc/core@1.10.15(@swc/helpers@0.5.18)) prettier: specifier: ^3.8.0 version: 3.8.0 @@ -1785,6 +1785,92 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.9.2)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + e2e/react-start/module-federation-rsbuild-host: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/react-start': + specifier: workspace:* + version: link:../../../packages/react-start + express: + specifier: ^5.1.0 + version: 5.1.0 + react: + specifier: ^19.2.3 + version: 19.2.3 + react-dom: + specifier: ^19.2.3 + version: 19.2.3(react@19.2.3) + devDependencies: + '@module-federation/enhanced': + specifier: ^0.24.1 + version: 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/node': + specifier: ^2.7.31 + version: 2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/rsbuild-plugin': + specifier: ^0.24.1 + version: 0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@playwright/test': + specifier: ^1.57.0 + version: 1.57.0 + '@rsbuild/core': + specifier: ^1.3.21 + version: 1.7.3 + '@rsbuild/plugin-react': + specifier: ^1.1.0 + version: 1.1.0(@rsbuild/core@1.7.3) + '@tanstack/router-e2e-utils': + specifier: workspace:^ + version: link:../../e2e-utils + '@types/node': + specifier: 25.0.9 + version: 25.0.9 + '@types/react': + specifier: ^19.2.8 + version: 19.2.8 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.8) + srvx: + specifier: ^0.11.2 + version: 0.11.2 + typescript: + specifier: ^5.7.2 + version: 5.9.3 + + e2e/react-start/module-federation-rsbuild-remote: + dependencies: + react: + specifier: ^19.2.3 + version: 19.2.3 + react-dom: + specifier: ^19.2.3 + version: 19.2.3(react@19.2.3) + devDependencies: + '@module-federation/node': + specifier: ^2.7.31 + version: 2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/rsbuild-plugin': + specifier: ^0.24.1 + version: 0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@rsbuild/core': + specifier: ^1.3.21 + version: 1.7.3 + '@rsbuild/plugin-react': + specifier: ^1.1.0 + version: 1.1.0(@rsbuild/core@1.7.3) + '@types/react': + specifier: ^19.2.8 + version: 19.2.8 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.8) + typescript: + specifier: ^5.7.2 + version: 5.9.3 + e2e/react-start/query-integration: dependencies: '@tanstack/react-query': @@ -4831,7 +4917,7 @@ importers: version: 1.0.6(@rsbuild/core@1.2.4) '@rsbuild/plugin-vue': specifier: ^1.2.2 - version: 1.2.2(@rsbuild/core@1.2.4)(@swc/core@1.10.15(@swc/helpers@0.5.15))(vue@3.5.25(typescript@5.9.2)) + version: 1.2.2(@rsbuild/core@1.2.4)(@swc/core@1.10.15(@swc/helpers@0.5.18))(vue@3.5.25(typescript@5.9.2)) '@rsbuild/plugin-vue-jsx': specifier: ^1.1.1 version: 1.1.1(@babel/core@7.28.5)(@rsbuild/core@1.2.4) @@ -4886,7 +4972,7 @@ importers: version: 1.0.6(@rsbuild/core@1.2.4) '@rsbuild/plugin-vue': specifier: ^1.2.2 - version: 1.2.2(@rsbuild/core@1.2.4)(@swc/core@1.10.15(@swc/helpers@0.5.15))(vue@3.5.25(typescript@5.9.2)) + version: 1.2.2(@rsbuild/core@1.2.4)(@swc/core@1.10.15(@swc/helpers@0.5.18))(vue@3.5.25(typescript@5.9.2)) '@rsbuild/plugin-vue-jsx': specifier: ^1.1.1 version: 1.1.1(@babel/core@7.28.5)(@rsbuild/core@1.2.4) @@ -7215,7 +7301,7 @@ importers: devDependencies: '@swc/core': specifier: ^1.10.15 - version: 1.10.15(@swc/helpers@0.5.15) + version: 1.10.15(@swc/helpers@0.5.18) '@tanstack/router-plugin': specifier: workspace:* version: link:../../../packages/router-plugin @@ -7227,16 +7313,16 @@ importers: version: 19.2.3(@types/react@19.2.8) html-webpack-plugin: specifier: ^5.6.3 - version: 5.6.3(@rspack/core@1.2.2(@swc/helpers@0.5.15))(webpack@5.97.1) + version: 5.6.3(@rspack/core@1.7.6(@swc/helpers@0.5.18))(webpack@5.97.1) swc-loader: specifier: ^0.2.6 - version: 0.2.6(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack@5.97.1) + version: 0.2.6(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack@5.97.1) typescript: specifier: ^5.7.2 version: 5.8.2 webpack: specifier: ^5.97.1 - version: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + version: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1) @@ -8744,6 +8830,86 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.8.2)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + examples/react/start-module-federation-rsbuild-host: + dependencies: + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/react-start': + specifier: workspace:* + version: link:../../../packages/react-start + express: + specifier: ^5.1.0 + version: 5.1.0 + react: + specifier: ^19.2.3 + version: 19.2.3 + react-dom: + specifier: ^19.2.3 + version: 19.2.3(react@19.2.3) + devDependencies: + '@module-federation/enhanced': + specifier: ^0.24.1 + version: 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/node': + specifier: ^2.7.31 + version: 2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/rsbuild-plugin': + specifier: ^0.24.1 + version: 0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@rsbuild/core': + specifier: ^1.3.21 + version: 1.7.3 + '@rsbuild/plugin-react': + specifier: ^1.1.0 + version: 1.1.0(@rsbuild/core@1.7.3) + '@types/node': + specifier: 25.0.9 + version: 25.0.9 + '@types/react': + specifier: ^19.2.8 + version: 19.2.8 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.8) + srvx: + specifier: ^0.11.2 + version: 0.11.2 + typescript: + specifier: ^5.7.2 + version: 5.9.3 + + examples/react/start-module-federation-rsbuild-remote: + dependencies: + react: + specifier: ^19.2.3 + version: 19.2.3 + react-dom: + specifier: ^19.2.3 + version: 19.2.3(react@19.2.3) + devDependencies: + '@module-federation/node': + specifier: ^2.7.31 + version: 2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/rsbuild-plugin': + specifier: ^0.24.1 + version: 0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@rsbuild/core': + specifier: ^1.3.21 + version: 1.7.3 + '@rsbuild/plugin-react': + specifier: ^1.1.0 + version: 1.1.0(@rsbuild/core@1.7.3) + '@types/react': + specifier: ^19.2.8 + version: 19.2.8 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.8) + typescript: + specifier: ^5.7.2 + version: 5.9.3 + examples/react/start-streaming-data-from-server-functions: dependencies: '@tanstack/react-router': @@ -10248,16 +10414,16 @@ importers: version: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10) css-loader: specifier: ^7.1.2 - version: 7.1.2(@rspack/core@1.2.2(@swc/helpers@0.5.15))(webpack@5.97.1) + version: 7.1.2(@rspack/core@1.7.6(@swc/helpers@0.5.18))(webpack@5.97.1) html-webpack-plugin: specifier: ^5.6.3 - version: 5.6.3(@rspack/core@1.2.2(@swc/helpers@0.5.15))(webpack@5.97.1) + version: 5.6.3(@rspack/core@1.7.6(@swc/helpers@0.5.18))(webpack@5.97.1) postcss: specifier: ^8.5.6 version: 8.5.6 postcss-loader: specifier: ^8.2.0 - version: 8.2.0(@rspack/core@1.2.2(@swc/helpers@0.5.15))(postcss@8.5.6)(typescript@5.9.2)(webpack@5.97.1) + version: 8.2.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(postcss@8.5.6)(typescript@5.9.2)(webpack@5.97.1) style-loader: specifier: ^4.0.0 version: 4.0.0(webpack@5.97.1) @@ -10266,7 +10432,7 @@ importers: version: 5.9.2 webpack: specifier: ^5.97.1 - version: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + version: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.4 version: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1) @@ -11935,7 +12101,7 @@ importers: version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.10)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) webpack: specifier: '>=5.92.0' - version: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15)) + version: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18)) zod: specifier: ^3.24.2 version: 3.25.57 @@ -14899,21 +15065,238 @@ packages: '@minimistjs/subarg@1.0.0': resolution: {integrity: sha512-Q/ONBiM2zNeYUy0mVSO44mWWKYM3UHuEK43PKIOzJCbvUnPoMH1K+gk3cf1kgnCVJFlWmddahQQCmrmBGlk9jQ==} + '@module-federation/bridge-react-webpack-plugin@0.24.1': + resolution: {integrity: sha512-4f6/Xd4PIGpStQeNTBJWiKGLJ8Dn21tTXMOupkzv6nuBuuaryiqeU/k1Zy+H9zXjCezhqYlCHzA6QIXiLMLujA==} + + '@module-federation/bridge-react-webpack-plugin@2.0.0': + resolution: {integrity: sha512-AVT/rZK6RHva6ZTYfsyQ8oP4xYNTws3OzqKW/YxWaLXwQ3oG9ZbF7fKl4jIKoMKuuy2L9MGVXS4CYPZy0s8fXg==} + + '@module-federation/cli@0.24.1': + resolution: {integrity: sha512-mylPX+mFBYoi5Mb18/2oGRWNxsGfRkhoOAnrXYqigc3Ek3vKqYkBwWS5KogRRYCPktj0Nyp6iY70VTs6AGKLHw==} + engines: {node: '>=16.0.0'} + hasBin: true + + '@module-federation/cli@2.0.0': + resolution: {integrity: sha512-IWGWbdgoeNcuA5jzqPr6pLTN1hovMQh9A1lgJp5fAvKfICfFXKq7K8nwMAQrWD6iEKApIenI0madk1Dg2PU3pw==} + engines: {node: '>=16.0.0'} + hasBin: true + + '@module-federation/data-prefetch@0.24.1': + resolution: {integrity: sha512-vkpd+RenbY5Acc8lE2cQx+5giPHRm/K5zhruqKxNInLXYKjq/+bnSK6IivbwkLVaRDOHeHcbvfs+zfHJe8IomQ==} + peerDependencies: + react: ^19.2.3 + react-dom: ^19.2.3 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@module-federation/data-prefetch@2.0.0': + resolution: {integrity: sha512-KPyZoqNrb5WgFY2owYnMaO2Mg2DYD6KXLVI7GPguj7Z/4pPKEC+SUjWU2FuSfTeyE6ZIi0iFGdwerxzlQ6nfmw==} + peerDependencies: + react: ^19.2.3 + react-dom: ^19.2.3 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@module-federation/dts-plugin@0.24.1': + resolution: {integrity: sha512-8k4PFkSXmrdX2k1XbGhOitUvfVIqJGdYx45yqQq/q3dIKok7RHiJAs8uBC1877lbHhb6+z/xlKVSFDXRjFet+Q==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + vue-tsc: + optional: true + + '@module-federation/dts-plugin@2.0.0': + resolution: {integrity: sha512-YyYMgLNARKdf3FLihnIzzUTgafHrqzR9YnKPmrfuCm2Jit+USqFT4QO58hcb0F5KSEyjB2ARPz9RM4XAVZhzMg==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + vue-tsc: + optional: true + + '@module-federation/enhanced@0.24.1': + resolution: {integrity: sha512-mDiXX+b2WwU0PYR2F5Q9ZJirdxdvWsKETfp1bLSoNs4tvo2k62VaHfi5hu5J+o5Z+rT47ucIso8ZdQeFdqGlJg==} + hasBin: true + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + + '@module-federation/enhanced@2.0.0': + resolution: {integrity: sha512-xeVrGvypYMvN8gJulbro3j1t8+aS1f9xjj4quwAAqgJF0Nz8bt7sXUYJyjUHPmC2UZsShZ0GnPHJNtI8/2GYjA==} + hasBin: true + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + + '@module-federation/error-codes@0.22.0': + resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} + + '@module-federation/error-codes@0.24.1': + resolution: {integrity: sha512-aHmtFvFJqlM6tWJtSqO6KlbM9QZfM92wK3EFYW1khak9Xrgc78UHJScBQ37w/9X9GCNOfBIpvsT29Gvp7JtWUA==} + '@module-federation/error-codes@0.8.4': resolution: {integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==} + '@module-federation/error-codes@2.0.0': + resolution: {integrity: sha512-9oE+hXuPv2zej7AxJ5hOgeRqlPs98meooV2FiutTfftLAyy2N6+Kwmmz5NR9d9t91weJj8N0cSHFoyenNHKTVg==} + + '@module-federation/inject-external-runtime-core-plugin@0.24.1': + resolution: {integrity: sha512-TxJqb95JKFFEUCgQ4P7/CtV6sgSlLjFBV0hzke6bdX+8DBiPhbFHcsAxIHGYcJKXbEVTfBAImhJv2ZnBXbErWQ==} + peerDependencies: + '@module-federation/runtime-tools': 0.24.1 + + '@module-federation/inject-external-runtime-core-plugin@2.0.0': + resolution: {integrity: sha512-aZ6f4UU7KM5zBnHf3xsb2guqsfaEd6IlmuldbpED3JPk4ITwZk0DbvxRMr4prde7cfj8RH0nKMz2kmMncp+lIQ==} + peerDependencies: + '@module-federation/runtime-tools': 2.0.0 + + '@module-federation/managers@0.24.1': + resolution: {integrity: sha512-RC0uHKRmxHJnZIs4JJsuVQSo7sQeENgxBAw/nHnN+DpG90sJkn14kexpd82qhv5At0WyKOdb2BLGiTPAoX0PWg==} + + '@module-federation/managers@2.0.0': + resolution: {integrity: sha512-ZmkRIujH+T3xvkmy04TNvviFH8xFOrNeKCLb4tlH4ifU/kLfjTu+PYO/KAEIsgtmrDnd52zTf22dg3ok85OAHA==} + + '@module-federation/manifest@0.24.1': + resolution: {integrity: sha512-QlHCNoCeqG6+x4VD96PDdDePepZ7bJb44P9d96GNwdXdT2R/QACtMIT3rMXp52U03ai3dqrLVEl8iAsutZzJGw==} + + '@module-federation/manifest@2.0.0': + resolution: {integrity: sha512-AXwYyGiDJdfP9MteKyIdJrLwG5tp4qKaq0uOPiWHilYN3/21G0DM7f30HgJqgx3WSTFSh7hcq0a3V3EZHH/9TA==} + + '@module-federation/node@2.7.30': + resolution: {integrity: sha512-9EP3t8v12S4ZYHAd+B/lOi/cCmir8mkbIpLuU/sRWk6HCZYz8Kc9YWG1ft6ej3akQnCeK6jD4J2rGhx/HmxrFA==} + peerDependencies: + webpack: ^5.40.0 + peerDependenciesMeta: + webpack: + optional: true + + '@module-federation/node@2.7.31': + resolution: {integrity: sha512-NSa0PFDKDLxmtfmCVHW9RhtfD9mcNOrp1d+cjVEoxb5x8dDI4jQTi1o3nsa9ettxs3bVtWhAUEQUNQBQ6ZA+Hw==} + peerDependencies: + webpack: ^5.40.0 + peerDependenciesMeta: + webpack: + optional: true + + '@module-federation/rsbuild-plugin@0.24.1': + resolution: {integrity: sha512-C2OKIj325vresCJBhZun3KT70280frl87MWon7eegAHnODQda4WcEEU6UaU0X8g2dLw9IPbkxbs2ofngRreq1g==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@rsbuild/core': ^1.3.21 || ^2.0.0-0 + peerDependenciesMeta: + '@rsbuild/core': + optional: true + + '@module-federation/rspack@0.24.1': + resolution: {integrity: sha512-1IFU7zwNOnPdRFiUDdvbvzITi4SxWSPl9YNiMzaGl4syaoPH5qcXR81qug76d1LFHC8i96qR/2cFyL7Ucdm+VA==} + peerDependencies: + '@rspack/core': ^0.7.0 || ^1.0.0 || ^2.0.0-0 + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + + '@module-federation/rspack@2.0.0': + resolution: {integrity: sha512-1kziarKrPRM+rJax/AaMEZTwu7ORGed2xSxfdoP9GEbAFEGyNliadvw4kB6PqAfLad3PI4lQMX2vGMLI1KoyVQ==} + peerDependencies: + '@rspack/core': ^0.7.0 || ^1.0.0 || ^2.0.0-0 + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + + '@module-federation/runtime-core@0.22.0': + resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==} + + '@module-federation/runtime-core@0.24.1': + resolution: {integrity: sha512-O0LYJ6ADJQ4fLrQNHLJc9IQGhWM3Dl613yCinR7EefmvBwUk7lmTUPWaSEOMNIbMq8oXV4ky4wFDSIEtwihAdg==} + + '@module-federation/runtime-core@2.0.0': + resolution: {integrity: sha512-UhIGUs7Mg+TwMI2lgaLnj4UehpoyXbR7HDb2+vLikgBulPmFtodeWfsxCgENEwKsIY1vS0lOun15lNOn1vo3Xg==} + + '@module-federation/runtime-tools@0.22.0': + resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==} + + '@module-federation/runtime-tools@0.24.1': + resolution: {integrity: sha512-+P6Yvyc+uaAvF7YceGxtiOg0wJDv6qfHv+AXsmzz54pC3N0PKu5azhBeKO28ILRmmsalnau8dkNPIv/JC04AmA==} + '@module-federation/runtime-tools@0.8.4': resolution: {integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==} + '@module-federation/runtime-tools@2.0.0': + resolution: {integrity: sha512-eMDQN4hYpwvUnCNMjfQdtPVzYaO2DdauemHVc4HnyibgqijRzBwJh9bI2ph4R1xfYEm18+QmTrfXrRlaK2Xizw==} + + '@module-federation/runtime@0.22.0': + resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==} + + '@module-federation/runtime@0.24.1': + resolution: {integrity: sha512-dnCnmFzC+w49tOKvh/EgqxMR7ADefA/QMtHgicc2KDF9DDcWs4v/GszEn/2PeBalQOj1+Gr5mV7JbB73MVgiVw==} + '@module-federation/runtime@0.8.4': resolution: {integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==} + '@module-federation/runtime@2.0.0': + resolution: {integrity: sha512-vPxQrmQNq3Z1T+1fkHEvFwTdJq9wuCLvdp/lpu9k2Oy7QP/Pj6QoQ/S7J5MCIAoRwj8Wj3z3ma21/DyHwLGvzA==} + + '@module-federation/sdk@0.22.0': + resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==} + + '@module-federation/sdk@0.24.1': + resolution: {integrity: sha512-BHWIMoBCyLaJud4JlBRQ5RTOz9Q/ws3aH9On1erpU38AijVkwOkXYwNG6xrJXKVIZ8WnCAGhaeKmkHB5R6vAEw==} + '@module-federation/sdk@0.8.4': resolution: {integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==} + '@module-federation/sdk@2.0.0': + resolution: {integrity: sha512-JYd1wTulsaoLT7HTk2oXL5y5797Z+H4mzxuUEKnSJo7R34RZSqehsqPSND7n0HT/1nf7uyn0Rb4qBfR3BVvdHQ==} + + '@module-federation/third-party-dts-extractor@0.24.1': + resolution: {integrity: sha512-SfcAlY5G5P8mjhJsTyg6nKF1LeJDgeukCw7M0uUPsaEWAipHfkFr51jpy+X4xEKbY2N/Wzb6Y2x2CdnveX9j5g==} + + '@module-federation/third-party-dts-extractor@2.0.0': + resolution: {integrity: sha512-B99+Wkbd2xIodVTjNCeFtFC89Uh2/AtYkSESlz4+6Cec42wyqrGxyfYm4qRY0LhJI+YmZXLk/RTm85m15eBKKg==} + + '@module-federation/webpack-bundler-runtime@0.22.0': + resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==} + + '@module-federation/webpack-bundler-runtime@0.24.1': + resolution: {integrity: sha512-HydbmybyGhsriUltT02HBW73cNSX70s8XNku5g4GV+YVP1bu+jm0ADDGP86t84rhKH2Zm1gW8S57/ocPpmRsEQ==} + '@module-federation/webpack-bundler-runtime@0.8.4': resolution: {integrity: sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==} + '@module-federation/webpack-bundler-runtime@2.0.0': + resolution: {integrity: sha512-XxiFR/A1G1fa9hTyylWNbs6yEU2hC7FqHAArFptD4U9qp/xyoLgqbK4M8LwltOAyAM8hRofcMdSyiRKVlWqAfQ==} + '@motionone/animation@10.18.0': resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} @@ -15026,6 +15409,9 @@ packages: '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} + '@napi-rs/wasm-runtime@1.0.7': + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} + '@napi-rs/wasm-runtime@1.1.1': resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} @@ -16825,6 +17211,11 @@ packages: engines: {node: '>=16.7.0'} hasBin: true + '@rsbuild/core@1.7.3': + resolution: {integrity: sha512-kI1oQvCXbQYxUvQPnDLdjSX4gFsbrFNpuUj6jXEJ7IcJ74Q+n4oeFj74/8tKerhxhe0L90m/ZQfzLeN5ORGA9w==} + engines: {node: '>=18.12.0'} + hasBin: true + '@rsbuild/plugin-babel@1.0.3': resolution: {integrity: sha512-3S/ykXv7KRo0FxVpkjoHFUwB04nKINIET1kuv4xiRaDmeww1Tp0wl9h4u8a7d7gU/4FllyoUflY8TVhci/o05g==} peerDependencies: @@ -16863,49 +17254,101 @@ packages: cpu: [arm64] os: [darwin] + '@rspack/binding-darwin-arm64@1.7.6': + resolution: {integrity: sha512-NZ9AWtB1COLUX1tA9HQQvWpTy07NSFfKBU8A6ylWd5KH8AePZztpNgLLAVPTuNO4CZXYpwcoclf8jG/luJcQdQ==} + cpu: [arm64] + os: [darwin] + '@rspack/binding-darwin-x64@1.2.2': resolution: {integrity: sha512-vG5s7FkEvwrGLfksyDRHwKAHUkhZt1zHZZXJQn4gZKjTBonje8ezdc7IFlDiWpC4S+oBYp73nDWkUzkGRbSdcQ==} cpu: [x64] os: [darwin] + '@rspack/binding-darwin-x64@1.7.6': + resolution: {integrity: sha512-J2g6xk8ZS7uc024dNTGTHxoFzFovAZIRixUG7PiciLKTMP78svbSSWrmW6N8oAsAkzYfJWwQpVgWfFNRHvYxSw==} + cpu: [x64] + os: [darwin] + '@rspack/binding-linux-arm64-gnu@1.2.2': resolution: {integrity: sha512-VykY/kiYOzO8E1nYzfJ9+gQEHxb5B6lt5wa8M6xFi5B6jEGU+OsaGskmAZB9/GFImeFDHxDPvhUalI4R9p8O2Q==} cpu: [arm64] os: [linux] + '@rspack/binding-linux-arm64-gnu@1.7.6': + resolution: {integrity: sha512-eQfcsaxhFrv5FmtaA7+O1F9/2yFDNIoPZzV/ZvqvFz5bBXVc4FAm/1fVpBg8Po/kX1h0chBc7Xkpry3cabFW8w==} + cpu: [arm64] + os: [linux] + '@rspack/binding-linux-arm64-musl@1.2.2': resolution: {integrity: sha512-Z5vAC4wGfXi8XXZ6hs8Q06TYjr3zHf819HB4DI5i4C1eQTeKdZSyoFD0NHFG23bP4NWJffp8KhmoObcy9jBT5Q==} cpu: [arm64] os: [linux] + '@rspack/binding-linux-arm64-musl@1.7.6': + resolution: {integrity: sha512-DfQXKiyPIl7i1yECHy4eAkSmlUzzsSAbOjgMuKn7pudsWf483jg0UUYutNgXSlBjc/QSUp7906Cg8oty9OfwPA==} + cpu: [arm64] + os: [linux] + '@rspack/binding-linux-x64-gnu@1.2.2': resolution: {integrity: sha512-o3pDaL+cH5EeRbDE9gZcdZpBgp5iXvYZBBhe8vZQllYgI4zN5MJEuleV7WplG3UwTXlgZg3Kht4RORSOPn96vg==} cpu: [x64] os: [linux] + '@rspack/binding-linux-x64-gnu@1.7.6': + resolution: {integrity: sha512-NdA+2X3lk2GGrMMnTGyYTzM3pn+zNjaqXqlgKmFBXvjfZqzSsKq3pdD1KHZCd5QHN+Fwvoszj0JFsquEVhE1og==} + cpu: [x64] + os: [linux] + '@rspack/binding-linux-x64-musl@1.2.2': resolution: {integrity: sha512-RE3e0xe4DdchHssttKzryDwjLkbrNk/4H59TkkWeGYJcLw41tmcOZVFQUOwKLUvXWVyif/vjvV/w1SMlqB4wQg==} cpu: [x64] os: [linux] + '@rspack/binding-linux-x64-musl@1.7.6': + resolution: {integrity: sha512-rEy6MHKob02t/77YNgr6dREyJ0e0tv1X6Xsg8Z5E7rPXead06zefUbfazj4RELYySWnM38ovZyJAkPx/gOn3VA==} + cpu: [x64] + os: [linux] + + '@rspack/binding-wasm32-wasi@1.7.6': + resolution: {integrity: sha512-YupOrz0daSG+YBbCIgpDgzfMM38YpChv+afZpaxx5Ml7xPeAZIIdgWmLHnQ2rts73N2M1NspAiBwV00Xx0N4Vg==} + cpu: [wasm32] + '@rspack/binding-win32-arm64-msvc@1.2.2': resolution: {integrity: sha512-R+PKBYn6uzTaDdVqTHvjqiJPBr5ZHg1wg5UmFDLNH9OklzVFyQh1JInSdJRb7lzfzTRz6bEkkwUFBPQK/CGScw==} cpu: [arm64] os: [win32] + '@rspack/binding-win32-arm64-msvc@1.7.6': + resolution: {integrity: sha512-INj7aVXjBvlZ84kEhSK4kJ484ub0i+BzgnjDWOWM1K+eFYDZjLdAsQSS3fGGXwVc3qKbPIssFfnftATDMTEJHQ==} + cpu: [arm64] + os: [win32] + '@rspack/binding-win32-ia32-msvc@1.2.2': resolution: {integrity: sha512-dBqz3sRAGZ2f31FgzKLDvIRfq2haRP3X3XVCT0PsiMcvt7QJng+26aYYMy2THatd/nM8IwExYeitHWeiMBoruw==} cpu: [ia32] os: [win32] + '@rspack/binding-win32-ia32-msvc@1.7.6': + resolution: {integrity: sha512-lXGvC+z67UMcw58In12h8zCa9IyYRmuptUBMItQJzu+M278aMuD1nETyGLL7e4+OZ2lvrnnBIcjXN1hfw2yRzw==} + cpu: [ia32] + os: [win32] + '@rspack/binding-win32-x64-msvc@1.2.2': resolution: {integrity: sha512-eeAvaN831KG553cMSHkVldyk6YQn4ujgRHov6r1wtREq7CD3/ka9LMkJUepCN85K7XtwYT0N4KpFIQyf5GTGoA==} cpu: [x64] os: [win32] + '@rspack/binding-win32-x64-msvc@1.7.6': + resolution: {integrity: sha512-zeUxEc0ZaPpmaYlCeWcjSJUPuRRySiSHN23oJ2Xyw0jsQ01Qm4OScPdr0RhEOFuK/UE+ANyRtDo4zJsY52Hadw==} + cpu: [x64] + os: [win32] + '@rspack/binding@1.2.2': resolution: {integrity: sha512-GCZwpGFYlLTdJ2soPLwjw9z4LSZ+GdpbHNfBt3Cm/f/bAF8n6mZc7dHUqN893RFh7MPU17HNEL3fMw7XR+6pHg==} + '@rspack/binding@1.7.6': + resolution: {integrity: sha512-/NrEcfo8Gx22hLGysanrV6gHMuqZSxToSci/3M4kzEQtF5cPjfOv5pqeLK/+B6cr56ul/OmE96cCdWcXeVnFjQ==} + '@rspack/core@1.2.2': resolution: {integrity: sha512-EeHAmY65Uj62hSbUKesbrcWGE7jfUI887RD03G++Gj8jS4WPHEu1TFODXNOXg6pa7zyIvs2BK0Bm16Kwz8AEaQ==} engines: {node: '>=16.0.0'} @@ -16918,10 +17361,22 @@ packages: '@swc/helpers': optional: true + '@rspack/core@1.7.6': + resolution: {integrity: sha512-Iax6UhrfZqJajA778c1d5DBFbSIqPOSrI34kpNIiNpWd8Jq7mFIa+Z60SQb5ZQDZuUxcCZikjz5BxinFjTkg7Q==} + engines: {node: '>=18.12.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + '@rspack/lite-tapable@1.0.1': resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} engines: {node: '>=16.0.0'} + '@rspack/lite-tapable@1.1.0': + resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==} + '@rspack/plugin-react-refresh@1.0.1': resolution: {integrity: sha512-KSBc3bsr3mrAPViv7w9MpE9KEWm6q87EyRXyHlRfJ9PpQ56NbX9KZ7AXo7jPeECb0q5sfpM2PSEf+syBiMgLSw==} peerDependencies: @@ -17404,6 +17859,9 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/helpers@0.5.18': + resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==} + '@swc/types@0.1.17': resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} @@ -17919,6 +18377,9 @@ packages: '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/send@0.17.4': resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} @@ -18599,6 +19060,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -18781,6 +19246,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} @@ -18944,6 +19413,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + btoa@1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true + buffer-builder@0.2.0: resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} @@ -19406,6 +19880,10 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} + cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} + copy-file@11.1.0: resolution: {integrity: sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==} engines: {node: '>=18'} @@ -19413,6 +19891,9 @@ packages: core-js@3.40.0: resolution: {integrity: sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==} + core-js@3.47.0: + resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -19552,6 +20033,10 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} + date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + db0@0.3.4: resolution: {integrity: sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==} peerDependencies: @@ -19638,6 +20123,9 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + deep-equal@2.2.3: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} @@ -19691,6 +20179,9 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} @@ -20300,6 +20791,10 @@ packages: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + expect-type@1.2.2: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} @@ -20431,10 +20926,18 @@ packages: resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} + find-file-up@2.0.1: + resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==} + engines: {node: '>=8'} + find-my-way@9.4.0: resolution: {integrity: sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==} engines: {node: '>=20'} + find-pkg@2.0.0: + resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==} + engines: {node: '>=8'} + find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} @@ -20465,9 +20968,6 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} @@ -20543,6 +21043,14 @@ packages: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -20637,6 +21145,14 @@ packages: resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -20769,6 +21285,10 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + hono@4.7.10: resolution: {integrity: sha512-QkACju9MiN59CKSY5JsGZCYmPZkA6sIW6OFCUp7qDjZu6S6KHtJHhAc9Uy9mV9F8PJ1/HQ3ybZF2yjCa/73fvQ==} engines: {node: '>=16.9.0'} @@ -20823,6 +21343,10 @@ packages: htmlparser2@9.1.0: resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} + http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} @@ -20830,6 +21354,10 @@ packages: resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -21215,6 +21743,10 @@ packages: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -21248,6 +21780,11 @@ packages: resolution: {integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==} engines: {node: '>=14.17.6'} + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -21259,6 +21796,10 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -21363,9 +21904,6 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} @@ -21401,6 +21939,10 @@ packages: kebab-case@1.0.2: resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} + keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -21422,6 +21964,13 @@ packages: known-css-properties@0.30.0: resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} + koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + + koa@3.0.3: + resolution: {integrity: sha512-MeuwbCoN1daWS32/Ni5qkzmrOtQO2qrnfdxDHjrm6s4b59yG4nexAJ0pTEFyzjLp0pBVO80CZp0vW8Ze30Ebow==} + engines: {node: '>= 18'} + kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -21598,6 +22147,9 @@ packages: lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + lodash.clonedeepwith@4.5.0: + resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} + lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} @@ -21638,10 +22190,17 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + logform@2.7.0: resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} engines: {node: '>= 12.0.0'} + long-timeout@0.1.1: + resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} + long@5.3.1: resolution: {integrity: sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==} @@ -22105,6 +22664,10 @@ packages: node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + node-schedule@2.1.1: + resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} + engines: {node: '>=6'} + node-source-walk@7.0.1: resolution: {integrity: sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg==} engines: {node: '>=18'} @@ -22344,6 +22907,10 @@ packages: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + parse5-htmlparser2-tree-adapter@6.0.1: resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} @@ -22750,6 +23317,9 @@ packages: radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + rambda@9.4.2: + resolution: {integrity: sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -22976,6 +23546,10 @@ packages: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -23001,6 +23575,10 @@ packages: engines: {node: '>= 0.4'} hasBin: true + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true @@ -23296,6 +23874,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -23477,6 +24060,9 @@ packages: sonic-boom@4.2.0: resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + sorted-array-functions@1.3.0: + resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -23595,6 +24181,10 @@ packages: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} + streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + streamx@2.22.0: resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} @@ -23974,6 +24564,10 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + tsx@4.19.2: resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} engines: {node: '>=18.0.0'} @@ -24823,6 +25417,10 @@ packages: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -27231,7 +27829,7 @@ snapshots: '@microsoft/tsdoc': 0.15.1 ajv: 8.12.0 jju: 1.4.0 - resolve: 1.22.10 + resolve: 1.22.11 '@microsoft/tsdoc@0.15.1': {} @@ -27239,27 +27837,438 @@ snapshots: dependencies: minimist: 1.2.8 + '@module-federation/bridge-react-webpack-plugin@0.24.1': + dependencies: + '@module-federation/sdk': 0.24.1 + '@types/semver': 7.5.8 + semver: 7.6.3 + + '@module-federation/bridge-react-webpack-plugin@2.0.0': + dependencies: + '@module-federation/sdk': 2.0.0 + '@types/semver': 7.5.8 + semver: 7.6.3 + + '@module-federation/cli@0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/dts-plugin': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/sdk': 0.24.1 + chalk: 3.0.0 + commander: 11.1.0 + jiti: 2.4.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/cli@2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/dts-plugin': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/sdk': 2.0.0 + chalk: 3.0.0 + commander: 11.1.0 + jiti: 2.4.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/data-prefetch@0.24.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@module-federation/runtime': 0.24.1 + '@module-federation/sdk': 0.24.1 + fs-extra: 9.1.0 + optionalDependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@module-federation/data-prefetch@2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@module-federation/runtime': 2.0.0 + '@module-federation/sdk': 2.0.0 + fs-extra: 9.1.0 + optionalDependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@module-federation/dts-plugin@0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/error-codes': 0.24.1 + '@module-federation/managers': 0.24.1 + '@module-federation/sdk': 0.24.1 + '@module-federation/third-party-dts-extractor': 0.24.1 + adm-zip: 0.5.16 + ansi-colors: 4.1.3 + axios: 1.13.2 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + koa: 3.0.3 + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: 9.4.2 + typescript: 5.9.3 + ws: 8.18.0 + optionalDependencies: + vue-tsc: 3.1.8(typescript@5.9.3) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + '@module-federation/dts-plugin@2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/error-codes': 2.0.0 + '@module-federation/managers': 2.0.0 + '@module-federation/sdk': 2.0.0 + '@module-federation/third-party-dts-extractor': 2.0.0 + adm-zip: 0.5.16 + ansi-colors: 4.1.3 + axios: 1.13.2 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + koa: 3.0.3 + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: 9.4.2 + typescript: 5.9.3 + ws: 8.18.0 + optionalDependencies: + vue-tsc: 3.1.8(typescript@5.9.3) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + '@module-federation/enhanced@0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.24.1 + '@module-federation/cli': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/data-prefetch': 0.24.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@module-federation/dts-plugin': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/error-codes': 0.24.1 + '@module-federation/inject-external-runtime-core-plugin': 0.24.1(@module-federation/runtime-tools@0.24.1) + '@module-federation/managers': 0.24.1 + '@module-federation/manifest': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/rspack': 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': 0.24.1 + '@module-federation/sdk': 0.24.1 + btoa: 1.2.1 + schema-utils: 4.3.3 + upath: 2.0.1 + optionalDependencies: + typescript: 5.9.3 + vue-tsc: 3.1.8(typescript@5.9.3) + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + + '@module-federation/enhanced@2.0.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 2.0.0 + '@module-federation/cli': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/data-prefetch': 2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@module-federation/dts-plugin': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/error-codes': 2.0.0 + '@module-federation/inject-external-runtime-core-plugin': 2.0.0(@module-federation/runtime-tools@2.0.0) + '@module-federation/managers': 2.0.0 + '@module-federation/manifest': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/rspack': 2.0.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': 2.0.0 + '@module-federation/sdk': 2.0.0 + btoa: 1.2.1 + schema-utils: 4.3.3 + upath: 2.0.1 + optionalDependencies: + typescript: 5.9.3 + vue-tsc: 3.1.8(typescript@5.9.3) + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + + '@module-federation/error-codes@0.22.0': {} + + '@module-federation/error-codes@0.24.1': {} + '@module-federation/error-codes@0.8.4': {} + '@module-federation/error-codes@2.0.0': {} + + '@module-federation/inject-external-runtime-core-plugin@0.24.1(@module-federation/runtime-tools@0.24.1)': + dependencies: + '@module-federation/runtime-tools': 0.24.1 + + '@module-federation/inject-external-runtime-core-plugin@2.0.0(@module-federation/runtime-tools@2.0.0)': + dependencies: + '@module-federation/runtime-tools': 2.0.0 + + '@module-federation/managers@0.24.1': + dependencies: + '@module-federation/sdk': 0.24.1 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + + '@module-federation/managers@2.0.0': + dependencies: + '@module-federation/sdk': 2.0.0 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + + '@module-federation/manifest@0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/dts-plugin': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/managers': 0.24.1 + '@module-federation/sdk': 0.24.1 + chalk: 3.0.0 + find-pkg: 2.0.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/manifest@2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/dts-plugin': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/managers': 2.0.0 + '@module-federation/sdk': 2.0.0 + chalk: 3.0.0 + find-pkg: 2.0.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/node@2.7.30(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/enhanced': 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/runtime': 0.24.1 + '@module-federation/sdk': 0.24.1 + btoa: 1.2.1 + encoding: 0.1.13 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/node@2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/enhanced': 2.0.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/runtime': 2.0.0 + '@module-federation/sdk': 2.0.0 + btoa: 1.2.1 + encoding: 0.1.13 + node-fetch: 2.7.0(encoding@0.1.13) + optionalDependencies: + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - typescript + - utf-8-validate + - vue-tsc + + '@module-federation/rsbuild-plugin@0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/enhanced': 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/node': 2.7.30(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/sdk': 0.24.1 + fs-extra: 11.3.0 + optionalDependencies: + '@rsbuild/core': 1.7.3 + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - typescript + - utf-8-validate + - vue-tsc + - webpack + + '@module-federation/rspack@0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 0.24.1 + '@module-federation/dts-plugin': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/inject-external-runtime-core-plugin': 0.24.1(@module-federation/runtime-tools@0.24.1) + '@module-federation/managers': 0.24.1 + '@module-federation/manifest': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': 0.24.1 + '@module-federation/sdk': 0.24.1 + '@rspack/core': 1.7.6(@swc/helpers@0.5.18) + btoa: 1.2.1 + optionalDependencies: + typescript: 5.9.3 + vue-tsc: 3.1.8(typescript@5.9.3) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + '@module-federation/rspack@2.0.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 2.0.0 + '@module-federation/dts-plugin': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/inject-external-runtime-core-plugin': 2.0.0(@module-federation/runtime-tools@2.0.0) + '@module-federation/managers': 2.0.0 + '@module-federation/manifest': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': 2.0.0 + '@module-federation/sdk': 2.0.0 + '@rspack/core': 1.7.6(@swc/helpers@0.5.18) + btoa: 1.2.1 + optionalDependencies: + typescript: 5.9.3 + vue-tsc: 3.1.8(typescript@5.9.3) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + '@module-federation/runtime-core@0.22.0': + dependencies: + '@module-federation/error-codes': 0.22.0 + '@module-federation/sdk': 0.22.0 + + '@module-federation/runtime-core@0.24.1': + dependencies: + '@module-federation/error-codes': 0.24.1 + '@module-federation/sdk': 0.24.1 + + '@module-federation/runtime-core@2.0.0': + dependencies: + '@module-federation/error-codes': 2.0.0 + '@module-federation/sdk': 2.0.0 + + '@module-federation/runtime-tools@0.22.0': + dependencies: + '@module-federation/runtime': 0.22.0 + '@module-federation/webpack-bundler-runtime': 0.22.0 + + '@module-federation/runtime-tools@0.24.1': + dependencies: + '@module-federation/runtime': 0.24.1 + '@module-federation/webpack-bundler-runtime': 0.24.1 + '@module-federation/runtime-tools@0.8.4': dependencies: '@module-federation/runtime': 0.8.4 '@module-federation/webpack-bundler-runtime': 0.8.4 + '@module-federation/runtime-tools@2.0.0': + dependencies: + '@module-federation/runtime': 2.0.0 + '@module-federation/webpack-bundler-runtime': 2.0.0 + + '@module-federation/runtime@0.22.0': + dependencies: + '@module-federation/error-codes': 0.22.0 + '@module-federation/runtime-core': 0.22.0 + '@module-federation/sdk': 0.22.0 + + '@module-federation/runtime@0.24.1': + dependencies: + '@module-federation/error-codes': 0.24.1 + '@module-federation/runtime-core': 0.24.1 + '@module-federation/sdk': 0.24.1 + '@module-federation/runtime@0.8.4': dependencies: '@module-federation/error-codes': 0.8.4 '@module-federation/sdk': 0.8.4 + '@module-federation/runtime@2.0.0': + dependencies: + '@module-federation/error-codes': 2.0.0 + '@module-federation/runtime-core': 2.0.0 + '@module-federation/sdk': 2.0.0 + + '@module-federation/sdk@0.22.0': {} + + '@module-federation/sdk@0.24.1': {} + '@module-federation/sdk@0.8.4': dependencies: isomorphic-rslog: 0.0.6 + '@module-federation/sdk@2.0.0': {} + + '@module-federation/third-party-dts-extractor@0.24.1': + dependencies: + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 + + '@module-federation/third-party-dts-extractor@2.0.0': + dependencies: + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 + + '@module-federation/webpack-bundler-runtime@0.22.0': + dependencies: + '@module-federation/runtime': 0.22.0 + '@module-federation/sdk': 0.22.0 + + '@module-federation/webpack-bundler-runtime@0.24.1': + dependencies: + '@module-federation/runtime': 0.24.1 + '@module-federation/sdk': 0.24.1 + '@module-federation/webpack-bundler-runtime@0.8.4': dependencies: '@module-federation/runtime': 0.8.4 '@module-federation/sdk': 0.8.4 + '@module-federation/webpack-bundler-runtime@2.0.0': + dependencies: + '@module-federation/runtime': 2.0.0 + '@module-federation/sdk': 2.0.0 + '@motionone/animation@10.18.0': dependencies: '@motionone/easing': 10.18.0 @@ -27399,6 +28408,13 @@ snapshots: '@emnapi/runtime': 1.7.1 '@tybys/wasm-util': 0.9.0 + '@napi-rs/wasm-runtime@1.0.7': + dependencies: + '@emnapi/core': 1.7.1 + '@emnapi/runtime': 1.7.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@napi-rs/wasm-runtime@1.1.1': dependencies: '@emnapi/core': 1.7.1 @@ -29266,6 +30282,14 @@ snapshots: transitivePeerDependencies: - '@rspack/tracing' + '@rsbuild/core@1.7.3': + dependencies: + '@rspack/core': 1.7.6(@swc/helpers@0.5.18) + '@rspack/lite-tapable': 1.1.0 + '@swc/helpers': 0.5.18 + core-js: 3.47.0 + jiti: 2.6.1 + '@rsbuild/plugin-babel@1.0.3(@rsbuild/core@1.2.4)': dependencies: '@babel/core': 7.28.5 @@ -29300,6 +30324,12 @@ snapshots: '@rspack/plugin-react-refresh': 1.0.1(react-refresh@0.16.0) react-refresh: 0.16.0 + '@rsbuild/plugin-react@1.1.0(@rsbuild/core@1.7.3)': + dependencies: + '@rsbuild/core': 1.7.3 + '@rspack/plugin-react-refresh': 1.0.1(react-refresh@0.16.0) + react-refresh: 0.16.0 + '@rsbuild/plugin-solid@1.0.6(@babel/core@7.28.5)(@rsbuild/core@1.2.4)(solid-js@1.9.10)': dependencies: '@rsbuild/core': 1.2.4 @@ -29322,11 +30352,11 @@ snapshots: - '@babel/core' - supports-color - '@rsbuild/plugin-vue@1.2.2(@rsbuild/core@1.2.4)(@swc/core@1.10.15(@swc/helpers@0.5.15))(vue@3.5.25(typescript@5.9.2))': + '@rsbuild/plugin-vue@1.2.2(@rsbuild/core@1.2.4)(@swc/core@1.10.15(@swc/helpers@0.5.18))(vue@3.5.25(typescript@5.9.2))': dependencies: '@rsbuild/core': 1.2.4 - rspack-vue-loader: 17.4.4(vue@3.5.25(typescript@5.9.2))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.15))) - webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.15)) + rspack-vue-loader: 17.4.4(vue@3.5.25(typescript@5.9.2))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) transitivePeerDependencies: - '@swc/core' - '@vue/compiler-sfc' @@ -29338,30 +30368,62 @@ snapshots: '@rspack/binding-darwin-arm64@1.2.2': optional: true + '@rspack/binding-darwin-arm64@1.7.6': + optional: true + '@rspack/binding-darwin-x64@1.2.2': optional: true + '@rspack/binding-darwin-x64@1.7.6': + optional: true + '@rspack/binding-linux-arm64-gnu@1.2.2': optional: true + '@rspack/binding-linux-arm64-gnu@1.7.6': + optional: true + '@rspack/binding-linux-arm64-musl@1.2.2': optional: true + '@rspack/binding-linux-arm64-musl@1.7.6': + optional: true + '@rspack/binding-linux-x64-gnu@1.2.2': optional: true + '@rspack/binding-linux-x64-gnu@1.7.6': + optional: true + '@rspack/binding-linux-x64-musl@1.2.2': optional: true + '@rspack/binding-linux-x64-musl@1.7.6': + optional: true + + '@rspack/binding-wasm32-wasi@1.7.6': + dependencies: + '@napi-rs/wasm-runtime': 1.0.7 + optional: true + '@rspack/binding-win32-arm64-msvc@1.2.2': optional: true + '@rspack/binding-win32-arm64-msvc@1.7.6': + optional: true + '@rspack/binding-win32-ia32-msvc@1.2.2': optional: true + '@rspack/binding-win32-ia32-msvc@1.7.6': + optional: true + '@rspack/binding-win32-x64-msvc@1.2.2': optional: true + '@rspack/binding-win32-x64-msvc@1.7.6': + optional: true + '@rspack/binding@1.2.2': optionalDependencies: '@rspack/binding-darwin-arm64': 1.2.2 @@ -29374,6 +30436,19 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.2.2 '@rspack/binding-win32-x64-msvc': 1.2.2 + '@rspack/binding@1.7.6': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.7.6 + '@rspack/binding-darwin-x64': 1.7.6 + '@rspack/binding-linux-arm64-gnu': 1.7.6 + '@rspack/binding-linux-arm64-musl': 1.7.6 + '@rspack/binding-linux-x64-gnu': 1.7.6 + '@rspack/binding-linux-x64-musl': 1.7.6 + '@rspack/binding-wasm32-wasi': 1.7.6 + '@rspack/binding-win32-arm64-msvc': 1.7.6 + '@rspack/binding-win32-ia32-msvc': 1.7.6 + '@rspack/binding-win32-x64-msvc': 1.7.6 + '@rspack/core@1.2.2(@swc/helpers@0.5.15)': dependencies: '@module-federation/runtime-tools': 0.8.4 @@ -29383,8 +30458,18 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.15 + '@rspack/core@1.7.6(@swc/helpers@0.5.18)': + dependencies: + '@module-federation/runtime-tools': 0.22.0 + '@rspack/binding': 1.7.6 + '@rspack/lite-tapable': 1.1.0 + optionalDependencies: + '@swc/helpers': 0.5.18 + '@rspack/lite-tapable@1.0.1': {} + '@rspack/lite-tapable@1.1.0': {} + '@rspack/plugin-react-refresh@1.0.1(react-refresh@0.16.0)': dependencies: error-stack-parser: 2.1.4 @@ -29400,14 +30485,14 @@ snapshots: fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.10 + resolve: 1.22.11 semver: 7.5.4 optionalDependencies: '@types/node': 25.0.9 '@rushstack/rig-package@0.5.3': dependencies: - resolve: 1.22.10 + resolve: 1.22.11 strip-json-comments: 3.1.1 '@rushstack/terminal@0.13.3(@types/node@25.0.9)': @@ -29883,7 +30968,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.10.15': optional: true - '@swc/core@1.10.15(@swc/helpers@0.5.15)': + '@swc/core@1.10.15(@swc/helpers@0.5.18)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 @@ -29898,7 +30983,7 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.10.15 '@swc/core-win32-ia32-msvc': 1.10.15 '@swc/core-win32-x64-msvc': 1.10.15 - '@swc/helpers': 0.5.15 + '@swc/helpers': 0.5.18 '@swc/counter@0.1.3': {} @@ -29906,6 +30991,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@swc/helpers@0.5.18': + dependencies: + tslib: 2.8.1 + '@swc/types@0.1.17': dependencies: '@swc/counter': 0.1.3 @@ -30539,6 +31628,8 @@ snapshots: '@types/retry@0.12.2': {} + '@types/semver@7.5.8': {} + '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 @@ -31449,6 +32540,19 @@ snapshots: optionalDependencies: typescript: 5.9.2 + '@vue/language-core@3.1.8(typescript@5.9.3)': + dependencies: + '@volar/language-core': 2.4.26 + '@vue/compiler-dom': 3.5.25 + '@vue/shared': 3.5.25 + alien-signals: 3.1.1 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + picomatch: 4.0.3 + optionalDependencies: + typescript: 5.9.3 + optional: true + '@vue/reactivity@3.5.25': dependencies: '@vue/shared': 3.5.25 @@ -31570,17 +32674,17 @@ snapshots: '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1) '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1) '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@5.2.0)(webpack@5.97.1)': dependencies: - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1) optionalDependencies: webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1) @@ -31693,6 +32797,8 @@ snapshots: acorn@8.15.0: {} + adm-zip@0.5.16: {} + agent-base@6.0.2: dependencies: debug: 4.4.3 @@ -31873,6 +32979,8 @@ snapshots: asynckit@0.4.0: {} + at-least-node@1.0.0: {} + atomic-sleep@1.0.0: {} autocannon@8.0.0: @@ -31935,7 +33043,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 find-up: 5.0.0 - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.28.5): dependencies: @@ -31950,7 +33058,7 @@ snapshots: dependencies: '@babel/runtime': 7.26.7 cosmiconfig: 7.1.0 - resolve: 1.22.10 + resolve: 1.22.11 babel-plugin-vue-jsx-hmr@1.0.0: dependencies: @@ -32100,6 +33208,8 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) + btoa@1.2.1: {} + buffer-builder@0.2.0: optional: true @@ -32567,6 +33677,11 @@ snapshots: cookie@1.0.2: {} + cookies@0.9.1: + dependencies: + depd: 2.0.0 + keygrip: 1.1.0 + copy-file@11.1.0: dependencies: graceful-fs: 4.2.11 @@ -32574,6 +33689,8 @@ snapshots: core-js@3.40.0: {} + core-js@3.47.0: {} + core-util-is@1.0.3: {} cosmiconfig@7.1.0: @@ -32631,7 +33748,7 @@ snapshots: optionalDependencies: srvx: 0.11.2 - css-loader@7.1.2(@rspack/core@1.2.2(@swc/helpers@0.5.15))(webpack@5.97.1): + css-loader@7.1.2(@rspack/core@1.7.6(@swc/helpers@0.5.18))(webpack@5.97.1): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -32642,8 +33759,8 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - '@rspack/core': 1.2.2(@swc/helpers@0.5.15) - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + '@rspack/core': 1.7.6(@swc/helpers@0.5.18) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) css-select@4.3.0: dependencies: @@ -32716,6 +33833,8 @@ snapshots: dependencies: '@babel/runtime': 7.26.7 + date-format@4.0.14: {} + db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3): optionalDependencies: '@electric-sql/pglite': 0.3.2 @@ -32757,6 +33876,8 @@ snapshots: deep-eql@5.0.2: {} + deep-equal@1.0.1: {} + deep-equal@2.2.3: dependencies: array-buffer-byte-length: 1.0.2 @@ -32817,6 +33938,8 @@ snapshots: delayed-stream@1.0.0: {} + delegates@1.0.0: {} + denque@2.1.0: {} depd@1.1.2: {} @@ -33031,7 +34154,6 @@ snapshots: encoding@0.1.13: dependencies: iconv-lite: 0.6.3 - optional: true end-of-stream@1.4.4: dependencies: @@ -33653,6 +34775,10 @@ snapshots: exit-hook@2.2.1: {} + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + expect-type@1.2.2: {} express@4.21.2: @@ -33868,12 +34994,20 @@ snapshots: transitivePeerDependencies: - supports-color + find-file-up@2.0.1: + dependencies: + resolve-dir: 1.0.1 + find-my-way@9.4.0: dependencies: fast-deep-equal: 3.1.3 fast-querystring: 1.1.2 safe-regex2: 5.0.0 + find-pkg@2.0.0: + dependencies: + find-file-up: 2.0.1 + find-root@1.1.0: {} find-up-simple@1.0.1: {} @@ -33929,13 +35063,11 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.2 + flatted: 3.3.3 keyv: 4.5.4 flat@5.0.2: {} - flatted@3.3.2: {} - flatted@3.3.3: {} fn.name@1.1.0: {} @@ -33996,7 +35128,7 @@ snapshots: fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@7.0.1: @@ -34005,6 +35137,19 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + fsevents@2.3.2: optional: true @@ -34104,6 +35249,20 @@ snapshots: minipass: 7.1.2 path-scurry: 2.0.0 + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -34221,6 +35380,10 @@ snapshots: dependencies: react-is: 16.13.1 + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + hono@4.7.10: {} hookable@5.5.3: {} @@ -34260,7 +35423,7 @@ snapshots: html-tags@3.3.1: {} - html-webpack-plugin@5.6.3(@rspack/core@1.2.2(@swc/helpers@0.5.15))(webpack@5.97.1): + html-webpack-plugin@5.6.3(@rspack/core@1.7.6(@swc/helpers@0.5.18))(webpack@5.97.1): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -34268,8 +35431,8 @@ snapshots: pretty-error: 4.0.0 tapable: 2.2.1 optionalDependencies: - '@rspack/core': 1.2.2(@swc/helpers@0.5.15) - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + '@rspack/core': 1.7.6(@swc/helpers@0.5.18) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) htmlparser2@6.1.0: dependencies: @@ -34285,6 +35448,11 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 + http-assert@1.5.0: + dependencies: + deep-equal: 1.0.1 + http-errors: 1.8.1 + http-deceiver@1.2.7: {} http-errors@1.6.3: @@ -34294,6 +35462,14 @@ snapshots: setprototypeof: 1.1.0 statuses: 1.5.0 + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -34670,6 +35846,8 @@ snapshots: is-what@4.1.16: {} + is-windows@1.0.2: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -34694,6 +35872,10 @@ snapshots: isomorphic-rslog@0.0.6: {} + isomorphic-ws@5.0.0(ws@8.18.0): + dependencies: + ws: 8.18.0 + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -34713,6 +35895,8 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 + jiti@2.4.2: {} + jiti@2.6.1: {} jju@1.4.0: {} @@ -34838,12 +36022,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - jsonfile@6.2.0: dependencies: universalify: 2.0.1 @@ -34886,6 +36064,10 @@ snapshots: kebab-case@1.0.2: {} + keygrip@1.1.0: + dependencies: + tsscmp: 1.0.6 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -34900,6 +36082,29 @@ snapshots: known-css-properties@0.30.0: {} + koa-compose@4.1.0: {} + + koa@3.0.3: + dependencies: + accepts: 1.3.8 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.9.1 + delegates: 1.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 2.0.0 + koa-compose: 4.1.0 + mime-types: 3.0.1 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + type-is: 2.0.1 + vary: 1.1.2 + kolorist@1.8.0: {} kuler@2.0.0: {} @@ -35079,6 +36284,8 @@ snapshots: lodash.clonedeep@4.5.0: {} + lodash.clonedeepwith@4.5.0: {} + lodash.defaults@4.2.0: {} lodash.flatten@4.4.0: {} @@ -35108,6 +36315,16 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + log4js@6.9.1: + dependencies: + date-format: 4.0.14 + debug: 4.4.3 + flatted: 3.3.3 + rfdc: 1.4.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + logform@2.7.0: dependencies: '@colors/colors': 1.6.0 @@ -35117,6 +36334,8 @@ snapshots: safe-stable-stringify: 2.5.0 triple-beam: 1.4.1 + long-timeout@0.1.1: {} + long@5.3.1: {} loose-envify@1.4.0: @@ -35766,6 +36985,12 @@ snapshots: node-releases@2.0.27: {} + node-schedule@2.1.1: + dependencies: + cron-parser: 4.9.0 + long-timeout: 0.1.1 + sorted-array-functions: 1.3.0 + node-source-walk@7.0.1: dependencies: '@babel/parser': 7.28.5 @@ -35806,7 +37031,7 @@ snapshots: nwsapi@2.2.16: {} - nx@22.3.3(@swc/core@1.10.15(@swc/helpers@0.5.15)): + nx@22.3.3(@swc/core@1.10.15(@swc/helpers@0.5.18)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -35854,7 +37079,7 @@ snapshots: '@nx/nx-linux-x64-musl': 22.3.3 '@nx/nx-win32-arm64-msvc': 22.3.3 '@nx/nx-win32-x64-msvc': 22.3.3 - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@swc/core': 1.10.15(@swc/helpers@0.5.18) transitivePeerDependencies: - debug @@ -36090,6 +37315,8 @@ snapshots: index-to-position: 1.2.0 type-fest: 4.41.0 + parse-passwd@1.0.0: {} + parse5-htmlparser2-tree-adapter@6.0.1: dependencies: parse5: 6.0.1 @@ -36224,15 +37451,15 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-loader@8.2.0(@rspack/core@1.2.2(@swc/helpers@0.5.15))(postcss@8.5.6)(typescript@5.9.2)(webpack@5.97.1): + postcss-loader@8.2.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(postcss@8.5.6)(typescript@5.9.2)(webpack@5.97.1): dependencies: cosmiconfig: 9.0.0(typescript@5.9.2) jiti: 2.6.1 postcss: 8.5.6 semver: 7.7.3 optionalDependencies: - '@rspack/core': 1.2.2(@swc/helpers@0.5.15) - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + '@rspack/core': 1.7.6(@swc/helpers@0.5.18) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) transitivePeerDependencies: - typescript @@ -36554,6 +37781,8 @@ snapshots: radix3@1.1.2: {} + rambda@9.4.2: {} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -36787,6 +38016,11 @@ snapshots: dependencies: resolve-from: 5.0.0 + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -36807,6 +38041,12 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@1.22.8: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.5: dependencies: is-core-module: 2.16.1 @@ -36951,11 +38191,11 @@ snapshots: rrweb-cssom@0.8.0: {} - rspack-vue-loader@17.4.4(vue@3.5.25(typescript@5.9.2))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.15))): + rspack-vue-loader@17.4.4(vue@3.5.25(typescript@5.9.2))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))): dependencies: chalk: 4.1.2 watchpack: 2.4.2 - webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.15)) + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) optionalDependencies: vue: 3.5.25(typescript@5.9.2) @@ -37137,6 +38377,8 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.6.3: {} + semver@7.7.2: {} semver@7.7.3: {} @@ -37426,6 +38668,8 @@ snapshots: dependencies: atomic-sleep: 1.0.0 + sorted-array-functions@1.3.0: {} + source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -37528,6 +38772,14 @@ snapshots: stoppable@1.1.0: {} + streamroller@3.1.5: + dependencies: + date-format: 4.0.14 + debug: 4.4.3 + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + streamx@2.22.0: dependencies: fast-fifo: 1.3.2 @@ -37589,7 +38841,7 @@ snapshots: style-loader@4.0.0(webpack@5.97.1): dependencies: - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) style-to-object@1.0.8: dependencies: @@ -37624,11 +38876,11 @@ snapshots: picocolors: 1.1.1 sax: 1.4.1 - swc-loader@0.2.6(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack@5.97.1): + swc-loader@0.2.6(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack@5.97.1): dependencies: - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@swc/core': 1.10.15(@swc/helpers@0.5.18) '@swc/counter': 0.1.3 - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) swr@2.3.4(react@19.2.3): dependencies: @@ -37681,38 +38933,38 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 - terser-webpack-plugin@5.3.11(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))): + terser-webpack-plugin@5.3.11(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack@5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.0 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.37.0 - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15)) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18)) optionalDependencies: - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@swc/core': 1.10.15(@swc/helpers@0.5.18) - terser-webpack-plugin@5.3.11(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack@5.97.1): + terser-webpack-plugin@5.3.11(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack@5.97.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.0 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.37.0 - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) optionalDependencies: - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@swc/core': 1.10.15(@swc/helpers@0.5.18) - terser-webpack-plugin@5.3.16(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.15))): + terser-webpack-plugin@5.3.16(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.37.0 - webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.15)) + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) optionalDependencies: - '@swc/core': 1.10.15(@swc/helpers@0.5.15) + '@swc/core': 1.10.15(@swc/helpers@0.5.18) terser@5.37.0: dependencies: @@ -37894,6 +39146,8 @@ snapshots: tslib@2.8.1: {} + tsscmp@1.0.6: {} + tsx@4.19.2: dependencies: esbuild: 0.23.1 @@ -38607,6 +39861,13 @@ snapshots: '@vue/language-core': 3.1.8(typescript@5.9.2) typescript: 5.9.2 + vue-tsc@3.1.8(typescript@5.9.3): + dependencies: + '@volar/typescript': 2.4.26 + '@vue/language-core': 3.1.8(typescript@5.9.3) + typescript: 5.9.3 + optional: true + vue@3.5.25(typescript@5.8.3): dependencies: '@vue/compiler-dom': 3.5.25 @@ -38685,7 +39946,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) webpack-merge: 5.10.0 optionalDependencies: webpack-dev-server: 5.2.0(webpack-cli@5.1.4)(webpack@5.97.1) @@ -38697,9 +39958,9 @@ snapshots: mime-types: 2.1.35 on-finished: 2.4.1 range-parser: 1.2.1 - schema-utils: 4.3.0 + schema-utils: 4.3.3 optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) webpack-dev-server@5.2.0(webpack-cli@5.1.4)(webpack@5.97.1): dependencies: @@ -38731,7 +39992,7 @@ snapshots: webpack-dev-middleware: 7.4.2(webpack@5.97.1) ws: 8.18.0 optionalDependencies: - webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4) + webpack: 5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack-dev-server@5.2.0)(webpack@5.97.1) transitivePeerDependencies: - bufferutil @@ -38753,7 +40014,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.15)): + webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -38777,7 +40038,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.15))) + terser-webpack-plugin: 5.3.16(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -38785,7 +40046,7 @@ snapshots: - esbuild - uglify-js - webpack@5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15)): + webpack@5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -38807,7 +40068,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))) + terser-webpack-plugin: 5.3.11(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack@5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -38815,7 +40076,7 @@ snapshots: - esbuild - uglify-js - webpack@5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack-cli@5.1.4): + webpack@5.97.1(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -38837,7 +40098,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(@swc/core@1.10.15(@swc/helpers@0.5.15))(webpack@5.97.1) + terser-webpack-plugin: 5.3.11(@swc/core@1.10.15(@swc/helpers@0.5.18))(webpack@5.97.1) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: @@ -38901,6 +40162,10 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 From 272d671a88ed2b479840de0af3ddcbbb9ca5146c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 10 Feb 2026 21:28:07 +0000 Subject: [PATCH 019/102] Remove generated build artifacts from fixtures Co-authored-by: Zack Jackson --- .../test-results/.last-run.json | 4 - .../ssr/index.html | 1 - .../ssr/mf-manifest.json | 89 ----------------- .../ssr/mf-stats.json | 99 ------------------- .../ssr/remoteEntry.js | 8 -- .../__federation_expose_message.4d43e736.js | 1 - .../ssr/static/js/index.03796778.js | 8 -- .../ssr/static/js/index.124184c5.js | 8 -- .../ssr/static/js/index.4a6f20e7.js | 8 -- .../ssr/static/js/index.cf3a472e.js | 8 -- .../ssr/static/js/index.f6a3b08e.js | 8 -- .../ssr/static/js/lib-react.5ec9d9fd.js | 2 - .../js/lib-react.5ec9d9fd.js.LICENSE.txt | 49 --------- .../ssr/index.html | 1 - .../ssr/mf-manifest.json | 89 ----------------- .../ssr/mf-stats.json | 99 ------------------- .../ssr/remoteEntry.js | 8 -- .../__federation_expose_message.f665fcfc.js | 1 - .../ssr/static/js/index.c17826eb.js | 8 -- .../ssr/static/js/lib-react.5ec9d9fd.js | 2 - .../js/lib-react.5ec9d9fd.js.LICENSE.txt | 49 --------- 21 files changed, 550 deletions(-) delete mode 100644 e2e/react-start/module-federation-rsbuild-host/test-results/.last-run.json delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/index.html delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/mf-manifest.json delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/mf-stats.json delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/remoteEntry.js delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.4d43e736.js delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.03796778.js delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.124184c5.js delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.4a6f20e7.js delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.cf3a472e.js delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.f6a3b08e.js delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js delete mode 100644 e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt delete mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/index.html delete mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/mf-manifest.json delete mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/mf-stats.json delete mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/remoteEntry.js delete mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.f665fcfc.js delete mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/static/js/index.c17826eb.js delete mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js delete mode 100644 examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt diff --git a/e2e/react-start/module-federation-rsbuild-host/test-results/.last-run.json b/e2e/react-start/module-federation-rsbuild-host/test-results/.last-run.json deleted file mode 100644 index cbcc1fbac11..00000000000 --- a/e2e/react-start/module-federation-rsbuild-host/test-results/.last-run.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "status": "passed", - "failedTests": [] -} \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/index.html b/e2e/react-start/module-federation-rsbuild-remote/ssr/index.html deleted file mode 100644 index 4cc9e835b2a..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/index.html +++ /dev/null @@ -1 +0,0 @@ -Rsbuild App
\ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-manifest.json b/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-manifest.json deleted file mode 100644 index 1c4bee84f4e..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-manifest.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "id": "mf_remote", - "name": "mf_remote", - "metaData": { - "name": "mf_remote", - "type": "app", - "buildInfo": { - "buildVersion": "local", - "buildName": "tanstack-react-start-e2e-module-federation-rsbuild-remote" - }, - "remoteEntry": { - "name": "remoteEntry.js", - "path": "", - "type": "commonjs-module" - }, - "types": { - "path": "", - "name": "", - "zip": "", - "api": "" - }, - "globalName": "mf_remote", - "pluginVersion": "0.24.1", - "prefetchInterface": false, - "publicPath": "http://localhost:35213/ssr/" - }, - "shared": [ - { - "id": "mf_remote:react-dom", - "name": "react-dom", - "version": "19.2.3", - "singleton": true, - "requiredVersion": "^19.2.3", - "assets": { - "js": { - "async": [], - "sync": [ - "static/js/lib-react.5ec9d9fd.js" - ] - }, - "css": { - "async": [], - "sync": [] - } - }, - "fallback": "" - }, - { - "id": "mf_remote:react", - "name": "react", - "version": "19.2.3", - "singleton": true, - "requiredVersion": "^19.2.3", - "assets": { - "js": { - "async": [], - "sync": [ - "static/js/lib-react.5ec9d9fd.js" - ] - }, - "css": { - "async": [], - "sync": [] - } - }, - "fallback": "" - } - ], - "remotes": [], - "exposes": [ - { - "id": "mf_remote:message", - "name": "message", - "assets": { - "js": { - "sync": [ - "static/js/async/__federation_expose_message.4d43e736.js" - ], - "async": [] - }, - "css": { - "sync": [], - "async": [] - } - }, - "path": "./message" - } - ] -} \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-stats.json b/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-stats.json deleted file mode 100644 index e1bca9fada0..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/mf-stats.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "id": "mf_remote", - "name": "mf_remote", - "metaData": { - "name": "mf_remote", - "type": "app", - "buildInfo": { - "buildVersion": "local", - "buildName": "tanstack-react-start-e2e-module-federation-rsbuild-remote" - }, - "remoteEntry": { - "name": "remoteEntry.js", - "path": "", - "type": "commonjs-module" - }, - "types": { - "path": "", - "name": "", - "zip": "", - "api": "" - }, - "globalName": "mf_remote", - "pluginVersion": "0.24.1", - "prefetchInterface": false, - "publicPath": "http://localhost:35213/ssr/" - }, - "shared": [ - { - "singleton": true, - "requiredVersion": "^19.2.3", - "shareScope": "default", - "name": "react-dom", - "version": "19.2.3", - "eager": false, - "id": "mf_remote:react-dom", - "assets": { - "js": { - "async": [], - "sync": [ - "static/js/lib-react.5ec9d9fd.js" - ] - }, - "css": { - "async": [], - "sync": [] - } - }, - "usedIn": [], - "usedExports": [], - "fallback": "" - }, - { - "singleton": true, - "requiredVersion": "^19.2.3", - "shareScope": "default", - "name": "react", - "version": "19.2.3", - "eager": false, - "id": "mf_remote:react", - "assets": { - "js": { - "async": [], - "sync": [ - "static/js/lib-react.5ec9d9fd.js" - ] - }, - "css": { - "async": [], - "sync": [] - } - }, - "usedIn": [], - "usedExports": [], - "fallback": "" - } - ], - "remotes": [], - "exposes": [ - { - "path": "./message", - "id": "mf_remote:message", - "name": "message", - "requires": [], - "file": "src/message.tsx", - "assets": { - "js": { - "sync": [ - "static/js/async/__federation_expose_message.4d43e736.js" - ], - "async": [] - }, - "css": { - "sync": [], - "async": [] - } - } - } - ] -} \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/remoteEntry.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/remoteEntry.js deleted file mode 100644 index c10e9260c59..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/remoteEntry.js +++ /dev/null @@ -1,8 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: - ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} -})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} -})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let b=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},v="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return v}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function M(e,t){return Object.hasOwnProperty.call(e,t)}M(v,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(v,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let $=v.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;M(e,"__VMOK__")&&!M(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),M(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){v.__FEDERATION__.__GLOBAL_PLUGIN__=[],v.__FEDERATION__.__INSTANCES__=[],v.__FEDERATION__.moduleInfo={},v.__FEDERATION__.__SHARE__={},v.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys($).forEach(e=>{delete $[e]})}function A(e){v.__FEDERATION__.__INSTANCES__.push(e)}function k(){return v.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function O(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(v.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,v.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(v),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},C=e=>F(e,R.__FEDERATION__.moduleInfo),L=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=v[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>v.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>v.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",W="global",B="[0-9A-Za-z-]+",z=`(?:\\+(${B}(?:\\.${B})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function eb(e){return!e||"x"===e.toLowerCase()||"*"===e}function ev(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=eb(r)?"":eb(n)?`>=${r}.0.0`:eb(o)?`>=${r}.${n}.0`:`>=${t}`,s=eb(l)?"":eb(u)?`<${Number(l)+1}.0.0-0`:eb(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function eM(e){return e.replace(eS(es),"$1$2$3")}function e$(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(eb(t))return"";if(eb(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(eb(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eA(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>eb(t)?"":eb(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:eb(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function ek(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=eb(r),s=a||eb(n),l=s||eb(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function eO(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eC(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eL(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eL(e,t);case">":return 0>eC(e,t);case">=":return eL(e,t)||0>eC(e,t);case"<":return eC(e,t)>0;case"<=":return eL(e,t)||eC(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return ev(eT,eA,ek,eO)(e)}function eH(e){return ev(eN,eM,e$,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eW(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eB=(e,t)=>{let r=t||function(e,t){return eW(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eW(e,t):!ez(o[e])&&eW(e,t)};if(a){if(i=eB(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eB(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eW(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eW(e,t);else return!0;return!eJ(o[e])&&eW(e,t)};if(a){if(i=eB(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eB(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eW(e,r)},n=eB(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e9(e,t){return t&&e.treeShaking?e.treeShaking:e}function e8(){return"mf_remote:local"}function e4(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e5(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e7(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e6=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e6}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e6}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!$[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;$[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:$,uniqueKey:n});if(o)return o}throw e})}return $[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||W,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e5(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:A,getGlobalFederationConstructor:k,setGlobalFederationConstructor:O,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:C,setGlobalSnapshotInfoByModuleInfo:L,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e4,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined - ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=b(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tv(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tv(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let tM=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function t$(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!tM("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!tM("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!tM("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tv(o,s),t$(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=C({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:C({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:C({name:e.name,version:"version"in e?e.version:void 0})}}class tA{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=C({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=L({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=L(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tb({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tk{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e9(i,a);if(t.lib)return e3(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e3(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e3(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e9(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e3(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e9(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e9(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e3(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e3(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tb({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tO{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e4(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=W)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(v[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(v,i))?void 0:t.configurable)?delete v[i]:v[i]=void 0}let s=ta(a.remoteInfo);$[s]&&delete $[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=v.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=v.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),v.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tb({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e7(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tb({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tb({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tb({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e8(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tA(this),this.sharedHandler=new tk(this),this.remoteHandler=new tO(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=v,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=k,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e4,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=O,t.setGlobalFederationInstance=A,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: -${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} -})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` -while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},b=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},v=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},M={},$=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>b),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(v))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(v)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:b,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:M,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:$,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:M,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}},508(e,t,r){r.d(t,{get:()=>r.getContainer,init:()=>r.initContainer})}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>__webpack_require__(508),(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:""})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"783"===e?"static/js/lib-react.5ec9d9fd.js":"static/js/async/__federation_expose_message.4d43e736.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{__webpack_require__.p="http://localhost:35213/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{36:["119"]},moduleIdToConsumeDataMapping:{119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:[]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{__webpack_require__.initializeExposesData={moduleMap:{"./message":()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36"),__webpack_require__.e("454")]).then(()=>()=>__webpack_require__(923))},shareScope:"default"},__webpack_require__.getContainer=__webpack_require__.getContainer||function(){throw Error("should have __webpack_require__.getContainer")},__webpack_require__.initContainer=__webpack_require__.initContainer||function(){throw Error("should have __webpack_require__.initContainer")}})(),(()=>{var e={908:0},t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.4d43e736.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.4d43e736.js deleted file mode 100644 index 1d03ab5a1cf..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.4d43e736.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";exports.ids=["454"],exports.modules={923(e,t,s){s.r(t),s.d(t,{FederatedMessage:()=>o});var r=s(742),d=s(119);function o(){let[e,t]=d.useState(0);return(0,r.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}}}; \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.03796778.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.03796778.js deleted file mode 100644 index a501a3c68ea..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.03796778.js +++ /dev/null @@ -1,8 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: - ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} -})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} -})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined - ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: -${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} -})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` -while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:39197/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.124184c5.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.124184c5.js deleted file mode 100644 index ca184cf520e..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.124184c5.js +++ /dev/null @@ -1,8 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: - ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} -})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} -})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e9(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined - ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e9(i,a);if(t.lib)return e3(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e3(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e3(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e9(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e3(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e9(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e9(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e3(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e3(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: -${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} -})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` -while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:37331/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.4a6f20e7.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.4a6f20e7.js deleted file mode 100644 index b0f5508bab8..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.4a6f20e7.js +++ /dev/null @@ -1,8 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: - ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} -})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} -})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined - ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: -${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} -})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` -while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:46539/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.cf3a472e.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.cf3a472e.js deleted file mode 100644 index 75591857227..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.cf3a472e.js +++ /dev/null @@ -1,8 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: - ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} -})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} -})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e5(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e6=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e6}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e6}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined - ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e5(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: -${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} -})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` -while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:35213/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.f6a3b08e.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.f6a3b08e.js deleted file mode 100644 index b8f2f7921fe..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/index.f6a3b08e.js +++ /dev/null @@ -1,8 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{"data-testid":"federated-button",onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: - ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} -})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} -})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined - ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: -${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} -})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` -while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:40139/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-start-e2e-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js deleted file mode 100644 index 837d529a8ce..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see lib-react.5ec9d9fd.js.LICENSE.txt */ -"use strict";exports.ids=["783"],exports.modules={523(e,t,n){var r,l=n(236),a=n(119),o=n(495);function i(e){var t="https://react.dev/errors/"+e;if(1A||(e.current=R[A],R[A]=null,A--)}function U(e,t){R[++A]=e.current,e.current=t}var $=M(null),j=M(null),H=M(null),V=M(null);function B(e,t){switch(U(H,t),U(j,e),U($,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?sy(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=sv(t=sy(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}I($),U($,e)}function Q(){I($),I(j),I(H)}function W(e){null!==e.memoizedState&&U(V,e);var t=$.current,n=sv(t,e.type);t!==n&&(U(j,e),U($,n))}function q(e){j.current===e&&(I($),I(j)),V.current===e&&(I(V),ce._currentValue=F)}function K(e){if(void 0===tA)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);tA=t&&t[1]||"",tM=-1)":-1l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{Y=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?K(n):""}function X(e){try{var t="",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return K(e.type);case 16:return K("Lazy");case 13:return e.child!==t&&null!==t?K("Suspense Fallback"):K("Suspense");case 19:return K("SuspenseList");case 0:case 15:return G(e.type,!1);case 11:return G(e.type.render,!1);case 1:return G(e.type,!0);case 31:return K("Activity");default:return""}}(e,n),n=e,e=e.return;while(e);return t}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}var Z=Object.prototype.hasOwnProperty,J=l.unstable_scheduleCallback,ee=l.unstable_cancelCallback,et=l.unstable_shouldYield,en=l.unstable_requestPaint,er=l.unstable_now,el=l.unstable_getCurrentPriorityLevel,ea=l.unstable_ImmediatePriority,eo=l.unstable_UserBlockingPriority,ei=l.unstable_NormalPriority,eu=l.unstable_LowPriority,es=l.unstable_IdlePriority,ec=l.log,ef=l.unstable_setDisableYieldValue,ed=null,ep=null;function em(e){if("function"==typeof ec&&ef(e),ep&&"function"==typeof ep.setStrictMode)try{ep.setStrictMode(ed,e)}catch(e){}}var eh=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(eg(e)/ey|0)|0},eg=Math.log,ey=Math.LN2,ev=256,eb=262144,ek=4194304;function ew(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function eS(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=0x7ffffff&r;return 0!==i?0!=(r=i&~a)?l=ew(r):0!=(o&=i)?l=ew(o):n||0!=(n=i&~e)&&(l=ew(n)):0!=(i=r&~a)?l=ew(i):0!==o?l=ew(o):n||0!=(n=r&~e)&&(l=ew(n)),0===l?0:0!==t&&t!==l&&0==(t&a)&&((a=l&-l)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:l}function ex(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function eE(){var e=ek;return 0==(0x3c00000&(ek<<=1))&&(ek=4194304),e}function eC(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ez(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function e_(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-eh(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|261930&n}function eP(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-eh(n),l=1<typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var te=/[\n"\\]/g;function tt(e){return e.replace(te,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function tn(e,t,n,r,l,a,o,i){e.name="",null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o?e.type=o:e.removeAttribute("type"),null!=t?"number"===o?(0===t&&""===e.value||e.value!=t)&&(e.value=""+e8(t)):e.value!==""+e8(t)&&(e.value=""+e8(t)):"submit"!==o&&"reset"!==o||e.removeAttribute("value"),null!=t?tl(e,o,e8(t)):null!=n?tl(e,o,e8(n)):null!=r&&e.removeAttribute("value"),null==l&&null!=a&&(e.defaultChecked=!!a),null!=l&&(e.checked=l&&"function"!=typeof l&&"symbol"!=typeof l),null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.name=""+e8(i):e.removeAttribute("name")}function tr(e,t,n,r,l,a,o,i){if(null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a&&(e.type=a),null!=t||null!=n){if(("submit"===a||"reset"===a)&&null==t)return void e5(e);n=null!=n?""+e8(n):"",t=null!=t?""+e8(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:l)&&"symbol"!=typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.name=o),e5(e)}function tl(e,t,n){"number"===t&&e7(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function ta(e,t,n,r){if(e=e.options,t){t={};for(var l=0;ltypeof window&&void 0!==window.document&&void 0!==window.document.createElement,tz=!1;if(tC)try{var t_={};Object.defineProperty(t_,"passive",{get:function(){tz=!0}}),window.addEventListener("test",t_,t_),window.removeEventListener("test",t_,t_)}catch(e){tz=!1}var tP=null,tN=null,tT=null;function tL(){if(tT)return tT;var e,t,n=tN,r=n.length,l="value"in tP?tP.value:tP.textContent,a=l.length;for(e=0;e=nt),nl=!1;function na(e,t){switch(e){case"keyup":return -1!==t7.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function no(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ni=!1,nu={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ns(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!nu[e.type]:"textarea"===t}function nc(e,t,n,r){tb?tk?tk.push(r):tk=[r]:tb=r,0<(t=sr(t,"onChange")).length&&(n=new tH("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var nf=null,nd=null;function np(e){u8(e,0)}function nm(e){if(e9(eW(e)))return e}function nh(e,t){if("change"===e)return t}var ng=!1;if(tC){if(tC){var ny="oninput"in document;if(!ny){var nv=document.createElement("div");nv.setAttribute("oninput","return;"),ny="function"==typeof nv.oninput}r=ny}else r=!1;ng=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=n_(r)}}function nN(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nT(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var nL=tC&&"documentMode"in document&&11>=document.documentMode,nO=null,nD=null,nF=null,nR=!1;function nA(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nR||null==nO||nO!==e7(r)||(r="selectionStart"in(r=nO)&&nT(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nF&&nz(nF,r)||(nF=r,0<(r=sr(nD,"onSelect")).length&&(t=new tH("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=nO)))}function nM(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var nI={animationend:nM("Animation","AnimationEnd"),animationiteration:nM("Animation","AnimationIteration"),animationstart:nM("Animation","AnimationStart"),transitionrun:nM("Transition","TransitionRun"),transitionstart:nM("Transition","TransitionStart"),transitioncancel:nM("Transition","TransitionCancel"),transitionend:nM("Transition","TransitionEnd")},nU={},n$={};function nj(e){if(nU[e])return nU[e];if(!nI[e])return e;var t,n=nI[e];for(t in n)if(n.hasOwnProperty(t)&&t in n$)return nU[e]=n[t];return e}tC&&(n$=document.createElement("div").style,"AnimationEvent"in window||(delete nI.animationend.animation,delete nI.animationiteration.animation,delete nI.animationstart.animation),"TransitionEvent"in window||delete nI.transitionend.transition);var nH=nj("animationend"),nV=nj("animationiteration"),nB=nj("animationstart"),nQ=nj("transitionrun"),nW=nj("transitionstart"),nq=nj("transitioncancel"),nK=nj("transitionend"),nY=new Map,nG="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function nX(e,t){nY.set(e,t),eX(t,[e])}nG.push("scrollEnd");var nZ="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=o,l-=o,rv=1<<32-eh(t)+l|n<typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},rZ=l.unstable_scheduleCallback,rJ=l.unstable_NormalPriority,r0={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function r1(){return{controller:new rX,data:new Map,refCount:0}}function r2(e){e.refCount--,0===e.refCount&&rZ(rJ,function(){e.controller.abort()})}var r3=null,r4=0,r8=0,r6=null;function r5(){if(0==--r4&&null!==r3){null!==r6&&(r6.status="fulfilled");var e=r3;r3=null,r8=0,r6=null;for(var t=0;tm?(h=f,f=null):h=f.sibling;var g=p(l,f,i[m],u);if(null===g){null===f&&(f=h);break}e&&f&&null===g.alternate&&t(l,f),o=a(g,o,m),null===c?s=g:c.sibling=g,c=g,f=h}if(m===i.length)return n(l,f),r_&&rk(l,m),s;if(null===f){for(;mh?(g=m,m=null):g=m.sibling;var b=p(l,m,v.value,s);if(null===b){null===m&&(m=g);break}e&&m&&null===b.alternate&&t(l,m),o=a(b,o,h),null===f?c=b:f.sibling=b,f=b,m=g}if(v.done)return n(l,m),r_&&rk(l,h),c;if(null===m){for(;!v.done;h++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,h),null===f?c=v:f.sibling=v,f=v);return r_&&rk(l,h),c}for(m=r(m);!v.done;h++,v=u.next())null!==(v=y(m,l,h,v.value,s))&&(e&&null!==v.alternate&&m.delete(null===v.key?h:v.key),o=a(v,o,h),null===f?c=v:f.sibling=v,f=v);return e&&m.forEach(function(e){return t(l,e)}),r_&&rk(l,h),c}(s,c,f=b.call(f),v)}if("function"==typeof f.then)return u(s,c,lh(f),v);if(f.$$typeof===k)return u(s,c,rY(s,f),v);ly(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(n(s,c.sibling),(v=l(c,f)).return=s):(n(s,c),(v=ro(f,s.mode,v)).return=s),o(s=v)):n(s,c)}(u,s,c,f);return lp=null,v}catch(e){if(e===lr||e===la)throw e;var b=re(29,e,null,u.mode);return b.lanes=f,b.return=u,b}finally{}}}var lb=lv(!0),lk=lv(!1),lw=!1;function lS(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function lx(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function lE(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function lC(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&iA)){var l=r.pending;return null===l?t.next=t:(t.next=l.next,l.next=t),r.pending=t,t=n5(e),n6(e,null,n),t}return n3(e,r,t,n),n5(e)}function lz(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194048&n))){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,eP(e,n)}}function l_(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var l=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?l=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?l=a=t:a=a.next=t}else l=a=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var lP=!1;function lN(){if(lP){var e=r6;if(null!==e)throw e}}function lT(e,t,n,r){lP=!1;var l=e.updateQueue;lw=!1;var a=l.firstBaseUpdate,o=l.lastBaseUpdate,i=l.shared.pending;if(null!==i){l.shared.pending=null;var u=i,s=u.next;u.next=null,null===o?a=s:o.next=s,o=u;var c=e.alternate;null!==c&&(i=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===i?c.firstBaseUpdate=s:i.next=s,c.lastBaseUpdate=u)}if(null!==a){var f=l.baseState;for(o=0,c=s=u=null,i=a;;){var p=-0x20000001&i.lane,m=p!==i.lane;if(m?(iU&p)===p:(r&p)===p){0!==p&&p===r8&&(lP=!0),null!==c&&(c=c.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});e:{var h=e,g=i;switch(p=t,g.tag){case 1:if("function"==typeof(h=g.payload)){f=h.call(n,f,p);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p="function"==typeof(h=g.payload)?h.call(n,f,p):h))break e;f=d({},f,p);break e;case 2:lw=!0}}null!==(p=i.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=l.callbacks)?l.callbacks=[p]:m.push(p))}else m={lane:p,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===c?(s=c=m,u=f):c=c.next=m,o|=p;if(null===(i=i.next))if(null===(i=l.shared.pending))break;else i=(m=i).next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}null===c&&(u=f),l.baseState=u,l.firstBaseUpdate=s,l.lastBaseUpdate=c,null===a&&(l.shared.lanes=0),iq|=o,e.lanes=o,e.memoizedState=f}}function lL(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function lO(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var o=O.T,i={};O.T=i,a5(e,!1,t,n);try{var u=l(),s=O.S;if(null!==s&&s(i,u),null!==u&&"object"==typeof u&&"function"==typeof u.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},u.then(function(){f.status="fulfilled",f.value=r;for(var e=0;e title"))),sd(a,r,n),a[eR]=e,eK(a),r=a;break e;case"link":var o=s2("link","href",l).get(r+(n.href||""));if(o){for(var u=0;ui)break;var c=u.transferSize,f=u.initiatorType;c&&sp(f)&&(o+=c*((u=u.responseEnd)s8?50:800)+h);return m.unsuspend=e,function(){m.unsuspend=null,clearTimeout(t),clearTimeout(n)}}:null)){i7=a,e.cancelPendingCommit=g(uC.bind(null,e,t,a,n,r,l,o,i,u,c,f,null,d,p)),uc(e,a,o,!s);return}}uC(e,t,a,n,r,l,o,i,u)}function uc(e,t,n,r){t&=~iY,t&=~iK,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var l=t;0<\/script>",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[eR]=t,a[eA]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(t.stateNode=a,sd(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break;case"img":r=!0;break;default:r=!1}r&&oq(t)}}return oZ(t),oK(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&oq(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=H.current,rF(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=rC))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eR]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ss(e.nodeValue,n)))||rL(t,!0)}else(e=sg(e).createTextNode(r))[eR]=t,t.stateNode=e}return oZ(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rF(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[eR]=t}else rR(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oZ(t),e=!1}else n=rA(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return lB(t),t;return lB(t),null}if(0!=(128&t.flags))throw Error(i(558))}return oZ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rF(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(i(317));l[eR]=t}else rR(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oZ(t),l=!1}else l=rA(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&t.flags)return lB(t),t;return lB(t),null}}if(lB(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),oG(t,t.updateQueue),oZ(t),null;case 4:return Q(),null===e&&u7(t.stateNode.containerInfo),oZ(t),null;case 10:return rH(t.type),oZ(t),null;case 19:if(I(lQ),null===(r=t.memoizedState))return oZ(t),null;if(l=0!=(128&t.flags),null===(a=r.rendering))if(l)oX(r,!1);else{if(0!==iW||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=lW(e))){for(t.flags|=128,oX(r,!1),t.updateQueue=e=a.updateQueue,oG(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return U(lQ,1&lQ.current|2),r_&&rk(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&er()>i3&&(t.flags|=128,l=!0,oX(r,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=lW(a))){if(t.flags|=128,l=!0,t.updateQueue=e=e.updateQueue,oG(t,e),oX(r,!0),null===r.tail&&"hidden"===r.tailMode&&!a.alternate&&!r_)return oZ(t),null}else 2*er()-r.renderingStartTime>i3&&0x20000000!==n&&(t.flags|=128,l=!0,oX(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}if(null!==r.tail)return e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=er(),e.sibling=null,n=lQ.current,U(lQ,l?1&n|2:1&n),r_&&rk(t,r.treeForkCount),e;return oZ(t),null;case 22:case 23:return lB(t),lM(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(oZ(t),6&t.subtreeFlags&&(t.flags|=8192)):oZ(t),null!==(n=t.updateQueue)&&oG(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&I(r7),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rH(r0),oZ(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}(t.alternate,t,iQ);if(null!==n){iI=n;return}if(null!==(t=t.sibling)){iI=t;return}iI=t=e}while(null!==t);0===iW&&(iW=5)}function uE(e,t){do{var n=function(e,t){switch(rx(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rH(r0),Q(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return q(t),null;case 31:if(null!==t.memoizedState){if(lB(t),null===t.alternate)throw Error(i(340));rR()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(lB(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));rR()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return I(lQ),null;case 4:return Q(),null;case 10:return rH(t.type),null;case 22:case 23:return lB(t),lM(),null!==e&&I(r7),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rH(r0),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,iI=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){iI=e;return}iI=e=n}while(null!==e);iW=6,iI=null}function uC(e,t,n,r,l,a,o,u,s){e.cancelPendingCommit=null;do uT();while(0!==i6);if(0!=(6&iA))throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(!function(e,t,n,r,l,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(n=o&~n;0g&&(o=g,g=h,h=o);var y=nP(i,h),v=nP(i,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,O.T=null,n=ut,ut=null;var a=i5,o=i7;if(i6=0,i9=i5=null,i7=0,0!=(6&iA))throw Error(i(331));var u=iA;if(iA|=4,iO(a.current),iC(a,a.current,o,n),iA=u,uW(0,!1),ep&&"function"==typeof ep.onPostCommitFiberRoot)try{ep.onPostCommitFiberRoot(ed,a)}catch(e){}return!0}finally{D.p=l,O.T=r,uN(e,t)}}function uO(e,t,n){t=rc(n,t),t=oh(e.stateNode,t,2),null!==(e=lC(e,t,2))&&(ez(e,2),uQ(e))}function uD(e,t,n){if(3===e.tag)uO(e,e,n);else for(;null!==t;){if(3===t.tag){uO(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===i8||!i8.has(r))){e=rc(n,e),null!==(r=lC(t,n=og(2),2))&&(oy(n,r,t,e),ez(r,2),uQ(r));break}}t=t.return}}function uF(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new iR;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(iB=!0,l.add(n),e=uR.bind(null,e,t,n),t.then(e,e))}function uR(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,iM===e&&(iU&n)===n&&(4===iW||3===iW&&(0x3c00000&iU)===iU&&300>er()-i1?0==(2&iA)&&up(e,0):iY|=n,iX===iU&&(iX=0)),uQ(e)}function uA(e,t){0===t&&(t=eE()),null!==(e=n8(e,t))&&(ez(e,t),uQ(e))}function uM(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),uA(e,n)}function uI(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),uA(e,n)}var uU=null,u$=null,uj=!1,uH=!1,uV=!1,uB=0;function uQ(e){e!==u$&&null===e.next&&(null===u$?uU=u$=e:u$=u$.next=e),uH=!0,uj||(uj=!0,sE(function(){0!=(6&iA)?J(ea,uq):uK()}))}function uW(e,t){if(!uV&&uH){uV=!0;do for(var n=!1,r=uU;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000095&(a=(1<<31-eh(42|e)+1)-1&(l&~(o&~i)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,uX(r,a))}else a=iU,0==(3&(a=eS(r,r===iM?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ex(r,a)||(n=!0,uX(r,a));r=r.next}while(n);uV=!1}}function uq(){uK()}function uK(){uH=uj=!1;var e,t=0;0===uB||((e=window.event)&&"popstate"===e.type?e===sk||(sk=e,0):(sk=null,1))||(t=uB);for(var n=er(),r=null,l=uU;null!==l;){var a=l.next,o=uY(l,n);0===o?(l.next=null,null===r?uU=a:r.next=a,null===a&&(u$=r)):(r=l,(0!==t||0!=(3&o))&&(uH=!0)),l=a}0!==i6&&5!==i6||uW(t,!1),0!==uB&&(uB=0)}function uY(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title"):null)}function s4(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var s8=0;function s6(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages)){if(this.stylesheets)s9(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var s5=null;function s9(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,s5=new Map,t.forEach(s7,e),s5=null,s6.call(e))}function s7(e,t){if(!(4&t.state.loading)){var n=s5.get(e);if(n)var r=n.get(null);else{n=new Map,s5.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;atypeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cM=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cM.isDisabled&&cM.supportsFiber)try{ed=cM.inject({bundleType:0,version:"19.2.3",rendererPackageName:"react-dom",currentDispatcherRef:O,reconcilerVersion:"19.2.3"}),ep=cM}catch(e){}}t.createRoot=function(e,t){if(!(n=e)||1!==n.nodeType&&9!==n.nodeType&&11!==n.nodeType)throw Error(i(299));var n,r,l,a,o,u,s,c,f=!1,d="",p=oc,m=of,h=od;return null!=t&&(!0===t.unstable_strictMode&&(f=!0),void 0!==t.identifierPrefix&&(d=t.identifierPrefix),void 0!==t.onUncaughtError&&(p=t.onUncaughtError),void 0!==t.onCaughtError&&(m=t.onCaughtError),void 0!==t.onRecoverableError&&(h=t.onRecoverableError)),r=e,l=1,a=!1,o=null,u=0,s=f,c=null,r=new ct(r,l,a,d,p,m,h,cD,null),l=1,!0===s&&(l|=24),s=re(3,null,null,l),r.current=s,s.stateNode=r,l=r1(),l.refCount++,r.pooledCache=l,l.refCount++,s.memoizedState={element:null,isDehydrated:a,cache:l},lS(s),t=r,e[eM]=t.current,u7(e),new cF(t)}},617(e,t,n){var r=n(119);function l(e){var t="https://react.dev/errors/"+e;if(1typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(523)},397(e,t,n){!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(617)},28(e,t){var n=Symbol.for("react.transitional.element");function r(e,t,r){var l=null;if(void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),"key"in t)for(var a in r={},t)"key"!==a&&(r[a]=t[a]);else r=t;return{$$typeof:n,type:e,key:l,ref:void 0!==(t=r.ref)?t:null,props:r}}Symbol.for("react.fragment"),t.jsx=r,t.jsxs=r},239(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),u=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),m=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,y={};function v(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}function b(){}function k(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=v.prototype;var w=k.prototype=new b;w.constructor=k,g(w,v.prototype),w.isPureReactComponent=!0;var S=Array.isArray;function x(){}var E={H:null,A:null,T:null,S:null},C=Object.prototype.hasOwnProperty;function z(e,t,r){var l=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==l?l:null,props:r}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var P=/\/+/g;function N(e,t){var n,r;return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36)}function T(e,t,l){if(null==e)return e;var a=[],o=0;return!function e(t,l,a,o,i){var u,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var p=!1;if(null===t)p=!0;else switch(f){case"bigint":case"string":case"number":p=!0;break;case"object":switch(t.$$typeof){case n:case r:p=!0;break;case d:return e((p=t._init)(t._payload),l,a,o,i)}}if(p)return i=i(t),p=""===o?"."+N(t,0):o,S(i)?(a="",null!=p&&(a=p.replace(P,"$&/")+"/"),e(i,l,a,"",function(e){return e})):null!=i&&(_(i)&&(u=i,s=a+(null==i.key||t&&t.key===i.key?"":(""+i.key).replace(P,"$&/")+"/")+p,i=z(u.type,s,u.props)),l.push(i)),1;p=0;var h=""===o?".":o+":";if(S(t))for(var g=0;g>>1,l=e[r];if(0>>1;ra(u,n))sa(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else if(sa(c,n))e[r]=c,e[s]=n,r=s;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,i=performance;t.unstable_now=function(){return i.now()}}else{var u=Date,s=u.now();t.unstable_now=function(){return u.now()-s}}var c=[],f=[],d=1,p=null,m=3,h=!1,g=!1,y=!1,v=!1,b="function"==typeof setTimeout?setTimeout:null,k="function"==typeof clearTimeout?clearTimeout:null,w="u">typeof setImmediate?setImmediate:null;function S(e){for(var t=r(f);null!==t;){if(null===t.callback)l(f);else if(t.startTime<=e)l(f),t.sortIndex=t.expirationTime,n(c,t);else break;t=r(f)}}function x(e){if(y=!1,S(e),!g)if(null!==r(c))g=!0,E||(E=!0,o());else{var t=r(f);null!==t&&O(x,t.startTime-e)}}var E=!1,C=-1,z=5,_=-1;function P(){return!!v||!(t.unstable_now()-_e&&P());){var i=p.callback;if("function"==typeof i){p.callback=null,m=p.priorityLevel;var u=i(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof u){p.callback=u,S(e),n=!0;break t}p===r(c)&&l(c),S(e)}else l(c);p=r(c)}if(null!==p)n=!0;else{var s=r(f);null!==s&&O(x,s.startTime-e),n=!1}}break e}finally{p=null,m=a,h=!1}}}finally{n?o():E=!1}}}if("function"==typeof w)o=function(){w(N)};else if("u">typeof MessageChannel){var T=new MessageChannel,L=T.port2;T.port1.onmessage=N,o=function(){L.postMessage(null)}}else o=function(){b(N,0)};function O(e,n){C=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125i?(e.sortIndex=a,n(f,e),null===r(c)&&e===r(f)&&(y?(k(C),C=-1):y=!0,O(x,a-i))):(e.sortIndex=u,n(c,e),g||h||(g=!0,E||(E=!0,o()))),e},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},236(e,t,n){e.exports=n(55)}}; \ No newline at end of file diff --git a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt b/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt deleted file mode 100644 index 20abecd8d5b..00000000000 --- a/e2e/react-start/module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * scheduler.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/index.html b/examples/react/start-module-federation-rsbuild-remote/ssr/index.html deleted file mode 100644 index b8d89148397..00000000000 --- a/examples/react/start-module-federation-rsbuild-remote/ssr/index.html +++ /dev/null @@ -1 +0,0 @@ -Rsbuild App
\ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/mf-manifest.json b/examples/react/start-module-federation-rsbuild-remote/ssr/mf-manifest.json deleted file mode 100644 index 4b5ee7b7e30..00000000000 --- a/examples/react/start-module-federation-rsbuild-remote/ssr/mf-manifest.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "id": "mf_remote", - "name": "mf_remote", - "metaData": { - "name": "mf_remote", - "type": "app", - "buildInfo": { - "buildVersion": "local", - "buildName": "tanstack-react-example-start-module-federation-rsbuild-remote" - }, - "remoteEntry": { - "name": "remoteEntry.js", - "path": "", - "type": "commonjs-module" - }, - "types": { - "path": "", - "name": "", - "zip": "", - "api": "" - }, - "globalName": "mf_remote", - "pluginVersion": "0.24.1", - "prefetchInterface": false, - "publicPath": "http://localhost:3001/ssr/" - }, - "shared": [ - { - "id": "mf_remote:react-dom", - "name": "react-dom", - "version": "19.2.3", - "singleton": true, - "requiredVersion": "^19.2.3", - "assets": { - "js": { - "async": [], - "sync": [ - "static/js/lib-react.5ec9d9fd.js" - ] - }, - "css": { - "async": [], - "sync": [] - } - }, - "fallback": "" - }, - { - "id": "mf_remote:react", - "name": "react", - "version": "19.2.3", - "singleton": true, - "requiredVersion": "^19.2.3", - "assets": { - "js": { - "async": [], - "sync": [ - "static/js/lib-react.5ec9d9fd.js" - ] - }, - "css": { - "async": [], - "sync": [] - } - }, - "fallback": "" - } - ], - "remotes": [], - "exposes": [ - { - "id": "mf_remote:message", - "name": "message", - "assets": { - "js": { - "sync": [ - "static/js/async/__federation_expose_message.f665fcfc.js" - ], - "async": [] - }, - "css": { - "sync": [], - "async": [] - } - }, - "path": "./message" - } - ] -} \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/mf-stats.json b/examples/react/start-module-federation-rsbuild-remote/ssr/mf-stats.json deleted file mode 100644 index c558729df26..00000000000 --- a/examples/react/start-module-federation-rsbuild-remote/ssr/mf-stats.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "id": "mf_remote", - "name": "mf_remote", - "metaData": { - "name": "mf_remote", - "type": "app", - "buildInfo": { - "buildVersion": "local", - "buildName": "tanstack-react-example-start-module-federation-rsbuild-remote" - }, - "remoteEntry": { - "name": "remoteEntry.js", - "path": "", - "type": "commonjs-module" - }, - "types": { - "path": "", - "name": "", - "zip": "", - "api": "" - }, - "globalName": "mf_remote", - "pluginVersion": "0.24.1", - "prefetchInterface": false, - "publicPath": "http://localhost:3001/ssr/" - }, - "shared": [ - { - "singleton": true, - "requiredVersion": "^19.2.3", - "shareScope": "default", - "name": "react-dom", - "version": "19.2.3", - "eager": false, - "id": "mf_remote:react-dom", - "assets": { - "js": { - "async": [], - "sync": [ - "static/js/lib-react.5ec9d9fd.js" - ] - }, - "css": { - "async": [], - "sync": [] - } - }, - "usedIn": [], - "usedExports": [], - "fallback": "" - }, - { - "singleton": true, - "requiredVersion": "^19.2.3", - "shareScope": "default", - "name": "react", - "version": "19.2.3", - "eager": false, - "id": "mf_remote:react", - "assets": { - "js": { - "async": [], - "sync": [ - "static/js/lib-react.5ec9d9fd.js" - ] - }, - "css": { - "async": [], - "sync": [] - } - }, - "usedIn": [], - "usedExports": [], - "fallback": "" - } - ], - "remotes": [], - "exposes": [ - { - "path": "./message", - "id": "mf_remote:message", - "name": "message", - "requires": [], - "file": "src/message.tsx", - "assets": { - "js": { - "sync": [ - "static/js/async/__federation_expose_message.f665fcfc.js" - ], - "async": [] - }, - "css": { - "sync": [], - "async": [] - } - } - } - ] -} \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/remoteEntry.js b/examples/react/start-module-federation-rsbuild-remote/ssr/remoteEntry.js deleted file mode 100644 index 028f2fbc939..00000000000 --- a/examples/react/start-module-federation-rsbuild-remote/ssr/remoteEntry.js +++ /dev/null @@ -1,8 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: - ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} -})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} -})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let b=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},v="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return v}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function M(e,t){return Object.hasOwnProperty.call(e,t)}M(v,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(v,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let $=v.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;M(e,"__VMOK__")&&!M(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),M(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){v.__FEDERATION__.__GLOBAL_PLUGIN__=[],v.__FEDERATION__.__INSTANCES__=[],v.__FEDERATION__.moduleInfo={},v.__FEDERATION__.__SHARE__={},v.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys($).forEach(e=>{delete $[e]})}function A(e){v.__FEDERATION__.__INSTANCES__.push(e)}function k(){return v.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function O(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(v.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,v.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(v),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},C=e=>F(e,R.__FEDERATION__.moduleInfo),L=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=v[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>v.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>v.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",W="global",B="[0-9A-Za-z-]+",z=`(?:\\+(${B}(?:\\.${B})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function eb(e){return!e||"x"===e.toLowerCase()||"*"===e}function ev(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=eb(r)?"":eb(n)?`>=${r}.0.0`:eb(o)?`>=${r}.${n}.0`:`>=${t}`,s=eb(l)?"":eb(u)?`<${Number(l)+1}.0.0-0`:eb(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function eM(e){return e.replace(eS(es),"$1$2$3")}function e$(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(eb(t))return"";if(eb(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(eb(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eA(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>eb(t)?"":eb(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:eb(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function ek(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=eb(r),s=a||eb(n),l=s||eb(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function eO(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eC(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eL(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eL(e,t);case">":return 0>eC(e,t);case">=":return eL(e,t)||0>eC(e,t);case"<":return eC(e,t)>0;case"<=":return eL(e,t)||eC(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return ev(eT,eA,ek,eO)(e)}function eH(e){return ev(eN,eM,e$,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eW(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eB=(e,t)=>{let r=t||function(e,t){return eW(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eW(e,t):!ez(o[e])&&eW(e,t)};if(a){if(i=eB(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eB(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eW(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eW(e,t);else return!0;return!eJ(o[e])&&eW(e,t)};if(a){if(i=eB(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eB(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eW(e,r)},n=eB(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e9(e,t){return t&&e.treeShaking?e.treeShaking:e}function e8(){return"mf_remote:local"}function e4(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e5(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e6=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e6}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e6}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!$[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;$[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:$,uniqueKey:n});if(o)return o}throw e})}return $[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||W,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:A,getGlobalFederationConstructor:k,setGlobalFederationConstructor:O,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:C,setGlobalSnapshotInfoByModuleInfo:L,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e4,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined - ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=b(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tv(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tv(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let tM=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function t$(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!tM("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!tM("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!tM("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tv(o,s),t$(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=C({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:C({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:C({name:e.name,version:"version"in e?e.version:void 0})}}class tA{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=C({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=L({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=L(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tb({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tk{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e9(i,a);if(t.lib)return e3(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e3(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e3(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e9(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e3(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e9(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e9(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e3(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e3(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tb({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tO{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e4(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=W)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(v[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(v,i))?void 0:t.configurable)?delete v[i]:v[i]=void 0}let s=ta(a.remoteInfo);$[s]&&delete $[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=v.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=v.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),v.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tb({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e5(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tb({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tb({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tb({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e8(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tA(this),this.sharedHandler=new tk(this),this.remoteHandler=new tO(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=v,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=k,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e4,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=O,t.setGlobalFederationInstance=A,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: -${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} -})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` -while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},b=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},v=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},M={},$=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>b),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(v))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(v)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:b,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:M,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:$,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:M,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}},508(e,t,r){r.d(t,{get:()=>r.getContainer,init:()=>r.initContainer})}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>__webpack_require__(508),(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:""})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"783"===e?"static/js/lib-react.5ec9d9fd.js":"static/js/async/__federation_expose_message.f665fcfc.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{__webpack_require__.p="http://localhost:3001/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-example-start-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{36:["119"]},moduleIdToConsumeDataMapping:{119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:[]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{__webpack_require__.initializeExposesData={moduleMap:{"./message":()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36"),__webpack_require__.e("454")]).then(()=>()=>__webpack_require__(923))},shareScope:"default"},__webpack_require__.getContainer=__webpack_require__.getContainer||function(){throw Error("should have __webpack_require__.getContainer")},__webpack_require__.initContainer=__webpack_require__.initContainer||function(){throw Error("should have __webpack_require__.initContainer")}})(),(()=>{var e={908:0},t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.f665fcfc.js b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.f665fcfc.js deleted file mode 100644 index 44a0372d65a..00000000000 --- a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/async/__federation_expose_message.f665fcfc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";exports.ids=["454"],exports.modules={923(e,t,s){s.r(t),s.d(t,{FederatedMessage:()=>d});var r=s(742),o=s(119);function d(){let[e,t]=o.useState(0);return(0,r.jsxs)("button",{onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}}}; \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/index.c17826eb.js b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/index.c17826eb.js deleted file mode 100644 index 20b200b5ecb..00000000000 --- a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/index.c17826eb.js +++ /dev/null @@ -1,8 +0,0 @@ -(()=>{"use strict";var __webpack_modules__={697(e,t,r){var n=r(742),o=r(119),i=r(230);function a(){let[e,t]=o.useState(0);return(0,n.jsxs)("button",{onClick:()=>t(e=>e+1),type:"button",children:["Federated message from remote (count: ",e,")"]})}function s(){return(0,n.jsxs)("main",{style:{fontFamily:"sans-serif",padding:"1rem"},children:[(0,n.jsx)("h1",{children:"Remote application"}),(0,n.jsx)(a,{})]})}let l=document.getElementById("root");l&&(0,i.createRoot)(l).render((0,n.jsx)(o.StrictMode,{children:(0,n.jsx)(s,{})}))},229(e,t){let r="RUNTIME-001",n="RUNTIME-002",o="RUNTIME-003",i="RUNTIME-004",a="RUNTIME-005",s="RUNTIME-006",l="RUNTIME-007",u="RUNTIME-008",c="RUNTIME-009",f="TYPE-001",h="BUILD-001",d="BUILD-002",p=e=>{let t=e.split("-")[0].toLowerCase();return`View the docs to see how to solve: https://module-federation.io/guide/troubleshooting/${t}#${e.toLowerCase()}`},m=(e,t,r,n)=>{let o=[`${[t[e]]} #${e}`];return r&&o.push(`args: ${JSON.stringify(r)}`),o.push(p(e)),n&&o.push(`Original Error Message: - ${n}`),o.join("\n")},g={[r]:"Failed to get remoteEntry exports.",[n]:'The remote entry interface does not contain "init"',[o]:"Failed to get manifest.",[i]:"Failed to locate remote.",[a]:"Invalid loadShareSync function call from bundler runtime",[s]:"Invalid loadShareSync function call from runtime",[l]:"Failed to get remote snapshot.",[u]:"Failed to load script resources.",[c]:"Please call createInstance first."},y={[f]:"Failed to generate type declaration. Execute the below cmd to reproduce and fix the error."},_={[h]:"Failed to find expose module.",[d]:"PublicPath is required in prod mode."},E={...g,...y,..._};t.BUILD_001=h,t.BUILD_002=d,t.RUNTIME_001=r,t.RUNTIME_002=n,t.RUNTIME_003=o,t.RUNTIME_004=i,t.RUNTIME_005=a,t.RUNTIME_006=s,t.RUNTIME_007=l,t.RUNTIME_008=u,t.RUNTIME_009=c,t.TYPE_001=f,t.buildDescMap=_,t.errorDescMap=E,t.getShortErrorMsg=m,t.runtimeDescMap=g,t.typeDescMap=y},728(__unused_rspack_module,exports,__webpack_require__){function importNodeModule(e){if(!e)throw Error("import specifier is required");if(exports.nodeRuntimeImportCache.has(e))return exports.nodeRuntimeImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e.default).catch(t=>{throw console.error(`Error importing module ${e}:`,t),exports.nodeRuntimeImportCache.delete(e),t});return exports.nodeRuntimeImportCache.set(e,t),t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupWebpackRequirePatching=exports.setupChunkHandler=exports.setupScriptLoader=exports.deleteChunk=exports.installChunk=exports.loadChunk=exports.resolveUrl=exports.fetchAndRun=exports.loadFromFs=exports.returnFromGlobalInstances=exports.returnFromCache=exports.resolveFile=exports.nodeRuntimeImportCache=void 0,exports.importNodeModule=importNodeModule,exports.default=default_1,exports.nodeRuntimeImportCache=new Map;let resolveFile=(e,t)=>require("path").join(__dirname,e+__webpack_require__.u(t));exports.resolveFile=resolveFile;let returnFromCache=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__){let r=t.moduleCache.get(e);if(null==r?void 0:r.remoteInfo)return r.remoteInfo.entry}return null};exports.returnFromCache=returnFromCache;let returnFromGlobalInstances=e=>{for(let t of Function("return globalThis")().__FEDERATION__.__INSTANCES__)for(let r of t.options.remotes)if(r.name===e||r.alias===e)return console.log("Backup remote entry found:",r.entry),r.entry;return null};exports.returnFromGlobalInstances=returnFromGlobalInstances;let loadFromFs=(e,t)=>{let r=require("fs"),n=require("path"),o=require("vm");r.existsSync(e)?r.readFile(e,"utf-8",(r,i)=>{if(r)return t(r,null);let a={};try{var s;new o.Script(`(function(exports, require, __dirname, __filename) {${i} -})`,{filename:e,importModuleDynamically:(null==(s=o.constants)?void 0:s.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule}).runInThisContext()(a,require,n.dirname(e),e),t(null,a)}catch(e){console.log("'runInThisContext threw'",e),t(e,null)}}):t(Error(`File ${e} does not exist`),null)};exports.loadFromFs=loadFromFs;let fetchAndRun=(url,chunkName,callback,args)=>{("u"e.default):Promise.resolve(fetch)).then(e=>args.origin.loaderHook.lifecycle.fetch.emit(url.href,{}).then(t=>t&&t instanceof Response?t.text():e(url.href).then(e=>e.text()))).then(data=>{let chunk={};try{eval(`(function(exports, require, __dirname, __filename) {${data} -})`)(chunk,require,url.pathname.split("/").slice(0,-1).join("/"),chunkName),callback(null,chunk)}catch(e){callback(e,null)}}).catch(e=>callback(e,null))};exports.fetchAndRun=fetchAndRun;let resolveUrl=(e,t)=>{try{return new URL(t,__webpack_require__.p)}catch{let r=(0,exports.returnFromCache)(e)||(0,exports.returnFromGlobalInstances)(e);if(!r)return null;let n=new URL(r),o=require("path"),i=n.pathname,a=i.lastIndexOf("/"),s=a>=0?i.substring(0,a+1):"/",l=__webpack_require__.federation.rootOutputDir||"";return new URL(o.join(s,l,t).replace(/\\/g,"/"),n.origin)}};exports.resolveUrl=resolveUrl;let loadChunk=(e,t,r,n,o)=>{if("filesystem"===e)return(0,exports.loadFromFs)((0,exports.resolveFile)(r,t),n);let i=(0,exports.resolveUrl)(r,t);if(!i)return n(null,{modules:{},ids:[],runtime:null});(0,exports.fetchAndRun)(i,t,n,o)};exports.loadChunk=loadChunk;let installChunk=(e,t)=>{for(let t in e.modules)__webpack_require__.m[t]=e.modules[t];for(let r of(e.runtime&&e.runtime(__webpack_require__),e.ids))t[r]&&t[r][0](),t[r]=0};exports.installChunk=installChunk;let deleteChunk=(e,t)=>(delete t[e],!0);exports.deleteChunk=deleteChunk;let setupScriptLoader=()=>{__webpack_require__.l=(e,t,r,n)=>{if(!r||n)throw Error(`__webpack_require__.l name is required for ${e}`);__webpack_require__.federation.runtime.loadScriptNode(e,{attrs:{globalName:r}}).then(n=>{let o=__webpack_require__.federation.instance.initRawContainer(r,e,n);Function("return globalThis")()[r]=o,t(o)}).catch(t)}};exports.setupScriptLoader=setupScriptLoader;let setupChunkHandler=(e,t)=>(r,n)=>{let o=e[r];if(0!==o)if(o)n.push(o[2]);else if(!__webpack_require__.federation.chunkMatcher||__webpack_require__.federation.chunkMatcher(r)){let i=new Promise((n,i)=>{o=e[r]=[n,i];let a="u">typeof process&&require("fs"),s="u">typeof process&&(0,exports.resolveFile)(__webpack_require__.federation.rootOutputDir||"",r);if(a&&a.existsSync(s))(0,exports.loadChunk)("filesystem",r,__webpack_require__.federation.rootOutputDir||"",(t,o)=>{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t);else{let o=__webpack_require__.u(r),a="u"{if(t)return(0,exports.deleteChunk)(r,e)&&i(t);o&&(0,exports.installChunk)(o,e),n(o)},t)}});n.push(o[2]=i)}else e[r]=0};exports.setupChunkHandler=setupChunkHandler;let setupWebpackRequirePatching=e=>{__webpack_require__.f&&(__webpack_require__.f.require&&(console.warn("\x1b[33m%s\x1b[0m",'CAUTION: build target is not set to "async-node", attempting to patch additional chunk handlers. This may not work'),__webpack_require__.f.require=e),__webpack_require__.f.readFileVm&&(__webpack_require__.f.readFileVm=e))};function default_1(){return{name:"node-federation-plugin",beforeInit:e=>((()=>{let t={};(0,exports.setupScriptLoader)();let r=(0,exports.setupChunkHandler)(t,e);(0,exports.setupWebpackRequirePatching)(r)})(),e)}}exports.setupWebpackRequirePatching=setupWebpackRequirePatching},224(e,t,r){var n=r(720),o=r(229);let i="[ Federation Runtime ]",a=n.createLogger(i);function s(e,t){e||l(t)}function l(e){if(e instanceof Error)throw e.message.startsWith(i)||(e.message=`${i}: ${e.message}`),e;throw Error(`${i}: ${e}`)}function u(e){e instanceof Error&&(e.message.startsWith(i)||(e.message=`${i}: ${e.message}`)),a.warn(e)}function c(e,t){return -1===e.findIndex(e=>e===t)&&e.push(t),e}function f(e){return"version"in e&&e.version?`${e.name}:${e.version}`:"entry"in e&&e.entry?`${e.name}:${e.entry}`:`${e.name}`}function h(e){return void 0!==e.entry}function d(e){return!e.entry.includes(".json")}async function p(e,t){try{return await e()}catch(e){t||u(e);return}}function m(e){return e&&"object"==typeof e}let g=Object.prototype.toString;function y(e){return"[object Object]"===g.call(e)}function _(e,t){let r=/^(https?:)?\/\//i;return e.replace(r,"").replace(/\/$/,"")===t.replace(r,"").replace(/\/$/,"")}function E(e){return Array.isArray(e)?e:[e]}function S(e){let t={url:"",type:"global",globalName:""};return n.isBrowserEnv()||n.isReactNativeEnv()||!("ssrRemoteEntry"in e)?"remoteEntry"in e?{url:e.remoteEntry,type:e.remoteEntryType,globalName:e.globalName}:t:"ssrRemoteEntry"in e?{url:e.ssrRemoteEntry||t.url,type:e.ssrRemoteEntryType||t.type,globalName:e.globalName}:t}let v=(e,t)=>{let r;return r=e.endsWith("/")?e.slice(0,-1):e,t.startsWith(".")&&(t=t.slice(1)),r+=t},b="object"==typeof globalThis?globalThis:window,R=(()=>{try{return document.defaultView}catch{return b}})(),I=R;function N(e,t,r){Object.defineProperty(e,t,{value:r,configurable:!1,writable:!0})}function $(e,t){return Object.hasOwnProperty.call(e,t)}$(b,"__GLOBAL_LOADING_REMOTE_ENTRY__")||N(b,"__GLOBAL_LOADING_REMOTE_ENTRY__",{});let M=b.__GLOBAL_LOADING_REMOTE_ENTRY__;function w(e){var t,r,n,o,i,a;$(e,"__VMOK__")&&!$(e,"__FEDERATION__")&&N(e,"__FEDERATION__",e.__VMOK__),$(e,"__FEDERATION__")||(N(e,"__FEDERATION__",{__GLOBAL_PLUGIN__:[],__INSTANCES__:[],moduleInfo:{},__SHARE__:{},__MANIFEST_LOADING__:{},__PRELOADED_MAP__:new Map}),N(e,"__VMOK__",e.__FEDERATION__)),(t=e.__FEDERATION__).__GLOBAL_PLUGIN__??(t.__GLOBAL_PLUGIN__=[]),(r=e.__FEDERATION__).__INSTANCES__??(r.__INSTANCES__=[]),(n=e.__FEDERATION__).moduleInfo??(n.moduleInfo={}),(o=e.__FEDERATION__).__SHARE__??(o.__SHARE__={}),(i=e.__FEDERATION__).__MANIFEST_LOADING__??(i.__MANIFEST_LOADING__={}),(a=e.__FEDERATION__).__PRELOADED_MAP__??(a.__PRELOADED_MAP__=new Map)}function T(){b.__FEDERATION__.__GLOBAL_PLUGIN__=[],b.__FEDERATION__.__INSTANCES__=[],b.__FEDERATION__.moduleInfo={},b.__FEDERATION__.__SHARE__={},b.__FEDERATION__.__MANIFEST_LOADING__={},Object.keys(M).forEach(e=>{delete M[e]})}function O(e){b.__FEDERATION__.__INSTANCES__.push(e)}function A(){return b.__FEDERATION__.__DEBUG_CONSTRUCTOR__}function k(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.isDebugMode();t&&(b.__FEDERATION__.__DEBUG_CONSTRUCTOR__=e,b.__FEDERATION__.__DEBUG_CONSTRUCTOR_VERSION__="0.24.1")}function D(e,t){if("string"==typeof t){if(e[t])return{value:e[t],key:t};for(let r of Object.keys(e)){let[n,o]=r.split(":"),i=`${n}:${t}`,a=e[i];if(a)return{value:a,key:i}}return{value:void 0,key:t}}throw Error("key must be string")}w(b),w(R);let P=()=>R.__FEDERATION__.moduleInfo,F=(e,t)=>{let r=D(t,f(e)).value;if(r&&!r.version&&"version"in e&&e.version&&(r.version=e.version),r)return r;if("version"in e&&e.version){let{version:t,...r}=e,n=f(r),o=D(R.__FEDERATION__.moduleInfo,n).value;if((null==o?void 0:o.version)===t)return o}},L=e=>F(e,R.__FEDERATION__.moduleInfo),C=(e,t)=>{let r=f(e);return R.__FEDERATION__.moduleInfo[r]=t,R.__FEDERATION__.moduleInfo},x=e=>(R.__FEDERATION__.moduleInfo={...R.__FEDERATION__.moduleInfo,...e},()=>{for(let t of Object.keys(e))delete R.__FEDERATION__.moduleInfo[t]}),j=(e,t)=>{let r=t||`__FEDERATION_${e}:custom__`,n=b[r];return{remoteEntryKey:r,entryExports:n}},H=e=>{let{__GLOBAL_PLUGIN__:t}=R.__FEDERATION__;e.forEach(e=>{-1===t.findIndex(t=>t.name===e.name)?t.push(e):u(`The plugin ${e.name} has been registered.`)})},U=()=>R.__FEDERATION__.__GLOBAL_PLUGIN__,G=e=>b.__FEDERATION__.__PRELOADED_MAP__.get(e),q=e=>b.__FEDERATION__.__PRELOADED_MAP__.set(e,!0),V="default",B="global",W="[0-9A-Za-z-]+",z=`(?:\\+(${W}(?:\\.${W})*))`,K="0|[1-9]\\d*",Y="[0-9]+",X="\\d*[a-zA-Z-][a-zA-Z0-9-]*",J=`(?:${Y}|${X})`,Z=`(?:-?(${J}(?:\\.${J})*))`,Q=`(?:${K}|${X})`,ee=`(?:-(${Q}(?:\\.${Q})*))`,et=`${K}|x|X|\\*`,er=`[v=\\s]*(${et})(?:\\.(${et})(?:\\.(${et})(?:${ee})?${z}?)?)?`,en=`^\\s*(${er})\\s+-\\s+(${er})\\s*$`,eo=`(${Y})\\.(${Y})\\.(${Y})`,ei=`[v=\\s]*${eo}${Z}?${z}?`,ea="((?:<|>)?=?)",es=`(\\s*)${ea}\\s*(${ei}|${er})`,el="(?:~>?)",eu=`(\\s*)${el}\\s+`,ec="(?:\\^)",ef=`(\\s*)${ec}\\s+`,eh="(<|>)?=?\\s*\\*",ed=`^${ec}${er}$`,ep=`(${K})\\.(${K})\\.(${K})`,em=`v?${ep}${ee}?${z}?`,eg=`^${el}${er}$`,ey=`^${ea}\\s*${er}$`,e_=`^${ea}\\s*(${em})$|^$`,eE="^\\s*>=\\s*0.0.0\\s*$";function eS(e){return new RegExp(e)}function ev(e){return!e||"x"===e.toLowerCase()||"*"===e}function eb(){for(var e=arguments.length,t=Array(e),r=0;rt.reduce((e,t)=>t(e),e)}function eR(e){return e.match(eS(e_))}function eI(e,t,r,n){let o=`${e}.${t}.${r}`;return n?`${o}-${n}`:o}function eN(e){return e.replace(eS(en),(e,t,r,n,o,i,a,s,l,u,c,f)=>(t=ev(r)?"":ev(n)?`>=${r}.0.0`:ev(o)?`>=${r}.${n}.0`:`>=${t}`,s=ev(l)?"":ev(u)?`<${Number(l)+1}.0.0-0`:ev(c)?`<${l}.${Number(u)+1}.0-0`:f?`<=${l}.${u}.${c}-${f}`:`<=${s}`,`${t} ${s}`.trim()))}function e$(e){return e.replace(eS(es),"$1$2$3")}function eM(e){return e.replace(eS(eu),"$1~")}function ew(e){return e.replace(eS(ef),"$1^")}function eT(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(ed),(e,t,r,n,o)=>{if(ev(t))return"";if(ev(r))return`>=${t}.0.0 <${Number(t)+1}.0.0-0`;if(ev(n))if("0"===t)return`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`;else return`>=${t}.${r}.0 <${Number(t)+1}.0.0-0`;if(o)if("0"!==t)return`>=${t}.${r}.${n}-${o} <${Number(t)+1}.0.0-0`;else if("0"===r)return`>=${t}.${r}.${n}-${o} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`;if("0"===t)if("0"===r)return`>=${t}.${r}.${n} <${t}.${r}.${Number(n)+1}-0`;else return`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`;return`>=${t}.${r}.${n} <${Number(t)+1}.0.0-0`})).join(" ")}function eO(e){return e.trim().split(/\s+/).map(e=>e.replace(eS(eg),(e,t,r,n,o)=>ev(t)?"":ev(r)?`>=${t}.0.0 <${Number(t)+1}.0.0-0`:ev(n)?`>=${t}.${r}.0 <${t}.${Number(r)+1}.0-0`:o?`>=${t}.${r}.${n}-${o} <${t}.${Number(r)+1}.0-0`:`>=${t}.${r}.${n} <${t}.${Number(r)+1}.0-0`)).join(" ")}function eA(e){return e.split(/\s+/).map(e=>e.trim().replace(eS(ey),(e,t,r,n,o,i)=>{let a=ev(r),s=a||ev(n),l=s||ev(o);if("="===t&&l&&(t=""),i="",a)if(">"===t||"<"===t)return"<0.0.0-0";else return"*";return t&&l?(s&&(n=0),o=0,">"===t?(t=">=",s?(r=Number(r)+1,n=0):n=Number(n)+1,o=0):"<="===t&&(t="<",s?r=Number(r)+1:n=Number(n)+1),"<"===t&&(i="-0"),`${t+r}.${n}.${o}${i}`):s?`>=${r}.0.0${i} <${Number(r)+1}.0.0-0`:l?`>=${r}.${n}.0${i} <${r}.${Number(n)+1}.0-0`:e})).join(" ")}function ek(e){return e.trim().replace(eS(eh),"")}function eD(e){return e.trim().replace(eS(eE),"")}function eP(e,t){return(e=Number(e)||e)>(t=Number(t)||t)?1:e===t?0:-1}function eF(e,t){let{preRelease:r}=e,{preRelease:n}=t;if(void 0===r&&n)return 1;if(r&&void 0===n)return -1;if(void 0===r&&void 0===n)return 0;for(let e=0,t=r.length;e<=t;e++){let t=r[e],o=n[e];if(t!==o){if(void 0===t&&void 0===o)return 0;if(!t)return 1;if(!o)return -1;return eP(t,o)}}return 0}function eL(e,t){return eP(e.major,t.major)||eP(e.minor,t.minor)||eP(e.patch,t.patch)||eF(e,t)}function eC(e,t){return e.version===t.version}function ex(e,t){switch(e.operator){case"":case"=":return eC(e,t);case">":return 0>eL(e,t);case">=":return eC(e,t)||0>eL(e,t);case"<":return eL(e,t)>0;case"<=":return eC(e,t)||eL(e,t)>0;case void 0:return!0;default:return!1}}function ej(e){return eb(eT,eO,eA,ek)(e)}function eH(e){return eb(eN,e$,eM,ew)(e.trim()).split(/\s+/).join(" ")}function eU(e,t){if(!e)return!1;let r=eR(e);if(!r)return!1;let[,n,,o,i,a,s]=r,l={operator:n,version:eI(o,i,a,s),major:o,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};for(let e of t.split("||")){let t=e.trim();if(!t||"*"===t||"x"===t)return!0;try{let e=eH(t);if(!e.trim())return!0;let r=e.split(" ").map(e=>ej(e)).join(" ");if(!r.trim())return!0;let n=r.split(/\s+/).map(e=>eD(e)).filter(Boolean);if(0===n.length)continue;let o=!0;for(let e of n){let t=eR(e);if(!t){o=!1;break}let[,r,,n,i,a,s]=t,u={operator:r,version:eI(n,i,a,s),major:n,minor:i,patch:a,preRelease:null==s?void 0:s.split(".")};if(!ex(u,l)){o=!1;break}}if(o)return!0}catch(e){console.error(`[semver] Error processing range part "${t}":`,e);continue}}return!1}function eG(e,t,r,n){var o;let i;if(i="get"in e?e.get:"lib"in e?()=>Promise.resolve(e.lib):()=>Promise.resolve(()=>{throw Error(`Can not get shared '${r}'!`)}),(null==(o=e.shareConfig)?void 0:o.eager)&&e.treeShaking)throw Error('Can not set "eager:true" and "treeShaking" at the same time!');return{deps:[],useIn:[],from:t,loading:null,...e,shareConfig:{requiredVersion:`^${e.version}`,singleton:!1,eager:!1,strictVersion:!1,...e.shareConfig},get:i,loaded:null!=e&&!!e.loaded||"lib"in e||void 0,version:e.version??"0",scope:Array.isArray(e.scope)?e.scope:[e.scope??"default"],strategy:(e.strategy??n)||"version-first",treeShaking:e.treeShaking?{...e.treeShaking,mode:e.treeShaking.mode??"server-calc",status:e.treeShaking.status??1,useIn:[]}:void 0}}function eq(e,t){let r=t.shared||{},n=t.name,o=Object.keys(r).reduce((e,o)=>{let i=E(r[o]);return e[o]=e[o]||[],i.forEach(r=>{e[o].push(eG(r,n,o,t.shareStrategy))}),e},{}),i={...e.shared};return Object.keys(o).forEach(e=>{i[e]?o[e].forEach(t=>{i[e].find(e=>e.version===t.version)||i[e].push(t)}):i[e]=o[e]}),{allShareInfos:i,newShareInfos:o}}function eV(e,t){if(!e)return!1;let{status:r,mode:n}=e;return 0!==r&&(2===r||"runtime-infer"===n&&(!t||eY(e,t)))}function eB(e,t){let r=e=>{if(!Number.isNaN(Number(e))){let t=e.split("."),r=e;for(let e=0;e<3-t.length;e++)r+=".0";return r}return e};return!!eU(r(e),`<=${r(t)}`)}let eW=(e,t)=>{let r=t||function(e,t){return eB(e,t)};return Object.keys(e).reduce((e,t)=>!e||r(e,t)||"0"===e?t:e,0)},ez=e=>!!e.loaded||"function"==typeof e.lib,eK=e=>!!e.loading,eY=(e,t)=>{if(!e||!t)return!1;let{usedExports:r}=e;return!!r&&!!t.every(e=>r.includes(e))};function eX(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){return a?!o[e].treeShaking||!!o[t].treeShaking&&!ez(o[e].treeShaking)&&eB(e,t):!ez(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}let eJ=e=>ez(e)||eK(e);function eZ(e,t,r,n){let o=e[t][r],i="",a=eV(n),s=function(e,t){if(a){if(!o[e].treeShaking)return!0;if(!o[t].treeShaking)return!1;if(eJ(o[t].treeShaking))if(eJ(o[e].treeShaking))return!!eB(e,t);else return!0;if(eJ(o[e].treeShaking))return!1}if(eJ(o[t]))if(eJ(o[e]))return!!eB(e,t);else return!0;return!eJ(o[e])&&eB(e,t)};if(a){if(i=eW(e[t][r],s))return{version:i,useTreesShaking:a};a=!1}return{version:eW(e[t][r],s),useTreesShaking:a}}function eQ(e){return"loaded-first"===e?eZ:eX}function e0(e,t,r,n){if(!e)return;let{shareConfig:o,scope:i=V,strategy:a,treeShaking:s}=r;for(let c of Array.isArray(i)?i:[i])if(o&&e[c]&&e[c][t]){let{requiredVersion:i}=o,{version:f,useTreesShaking:h}=eQ(a)(e,c,t,s),d=()=>{let n=e[c][t][f];if(o.singleton){if("string"==typeof i&&!eU(f,i)){let e=`Version ${f} from ${f&&n.from} of shared singleton module ${t} does not satisfy the requirement of ${r.from} which needs ${i})`;o.strictVersion?l(e):u(e)}return{shared:n,useTreesShaking:h}}{if(!1===i||"*"===i||eU(f,i))return{shared:n,useTreesShaking:h};let r=eV(s);if(r){for(let[n,o]of Object.entries(e[c][t]))if(eV(o.treeShaking,null==s?void 0:s.usedExports)&&eU(n,i))return{shared:o,useTreesShaking:r}}for(let[r,n]of Object.entries(e[c][t]))if(eU(r,i))return{shared:n,useTreesShaking:!1}}},p={shareScopeMap:e,scope:c,pkgName:t,version:f,GlobalFederation:I.__FEDERATION__,shareInfo:r,resolver:d};return(n.emit(p)||p).resolver()}}function e1(){return I.__FEDERATION__.__SHARE__}function e2(e){let{pkgName:t,extraOptions:r,shareInfos:n}=e,o=e=>{if(!e)return;let t={};e.forEach(e=>{t[e.version]=e});let r=function(e,r){return!ez(t[e])&&eB(e,r)},n=eW(t,r);return t[n]},i=(null==r?void 0:r.resolver)??o,a=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),s=function(){for(var e=arguments.length,t=Array(e),r=0;r{e.useIn||(e.useIn=[]),c(e.useIn,t)};function e3(e,t){return t&&e.treeShaking?e.treeShaking:e}function e4(){return"mf_remote:local"}function e8(e,t){for(let r of e){let e=t.startsWith(r.name),n=t.replace(r.name,"");if(e){if(n.startsWith("/"))return{pkgNameOrAlias:r.name,expose:n=`.${n}`,remote:r};else if(""===n)return{pkgNameOrAlias:r.name,expose:".",remote:r}}let o=r.alias&&t.startsWith(r.alias),i=r.alias&&t.replace(r.alias,"");if(r.alias&&o){if(i&&i.startsWith("/"))return{pkgNameOrAlias:r.alias,expose:i=`.${i}`,remote:r};else if(""===i)return{pkgNameOrAlias:r.alias,expose:".",remote:r}}}}function e7(e,t){for(let r of e)if(t===r.name||r.alias&&t===r.alias)return r}function e6(e,t){let r=U(),n=[t.hooks,t.remoteHandler.hooks,t.sharedHandler.hooks,t.snapshotHandler.hooks,t.loaderHook,t.bridgeHook];return r.length>0&&r.forEach(t=>{(null==e?void 0:e.find(e=>e.name!==t.name))&&e.push(t)}),e&&e.length>0&&e.forEach(e=>{n.forEach(r=>{r.applyPlugin(e,t)})}),e}let e5=".then(callbacks[0]).catch(callbacks[1])";async function te(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):"u">typeof FEDERATION_ALLOW_NEW_FUNCTION?Function("callbacks",`import("${t}")${e5}`)([e,n]):import(t).then(e).catch(n)}catch(e){n(e)}})}async function tt(e){let{entry:t,remoteEntryExports:r}=e;return new Promise((e,n)=>{try{r?e(r):Function("callbacks",`System.import("${t}")${e5}`)([e,n])}catch(e){n(e)}})}function tr(e,t,r){let{remoteEntryKey:n,entryExports:i}=j(e,t);return s(i,o.getShortErrorMsg(o.RUNTIME_001,o.runtimeDescMap,{remoteName:e,remoteEntryUrl:r,remoteEntryKey:n})),i}async function tn(e){let{name:t,globalName:r,entry:i,loaderHook:a,getEntryUrl:l}=e,{entryExports:u}=j(t,r);if(u)return u;let c=l?l(i):i;return n.loadScript(c,{attrs:{},createScriptHook:(e,t)=>{let r=a.lifecycle.createScript.emit({url:e,attrs:t});if(r&&(r instanceof HTMLScriptElement||"script"in r||"timeout"in r))return r}}).then(()=>tr(t,r,i)).catch(e=>{throw s(void 0,o.getShortErrorMsg(o.RUNTIME_008,o.runtimeDescMap,{remoteName:t,resourceUrl:i})),e})}async function to(e){let{remoteInfo:t,remoteEntryExports:r,loaderHook:n,getEntryUrl:o}=e,{entry:i,entryGlobalName:a,name:s,type:l}=t;switch(l){case"esm":case"module":return te({entry:i,remoteEntryExports:r});case"system":return tt({entry:i,remoteEntryExports:r});default:return tn({entry:i,globalName:a,name:s,loaderHook:n,getEntryUrl:o})}}async function ti(e){let{remoteInfo:t,loaderHook:r}=e,{entry:o,entryGlobalName:i,name:a,type:s}=t,{entryExports:l}=j(a,i);return l||n.loadScriptNode(o,{attrs:{name:a,globalName:i,type:s},loaderHook:{createScriptHook:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.lifecycle.createScript.emit({url:e,attrs:t});if(n&&"url"in n)return n}}}).then(()=>tr(a,i,o)).catch(e=>{throw e})}function ta(e){let{entry:t,name:r}=e;return n.composeKeyWithSeparator(r,t)}async function ts(e){let{origin:t,remoteEntryExports:r,remoteInfo:i,getEntryUrl:a,_inErrorHandling:s=!1}=e,l=ta(i);if(r)return r;if(!M[l]){let e=t.remoteHandler.hooks.lifecycle.loadEntry,u=t.loaderHook;M[l]=e.emit({loaderHook:u,remoteInfo:i,remoteEntryExports:r}).then(e=>e||(("u">typeof ENV_TARGET?"web"===ENV_TARGET:n.isBrowserEnv())?to({remoteInfo:i,remoteEntryExports:r,loaderHook:u,getEntryUrl:a}):ti({remoteInfo:i,loaderHook:u}))).catch(async e=>{let n=ta(i);if(e instanceof Error&&e.message.includes(o.RUNTIME_008)&&!s){let e=e=>ts({...e,_inErrorHandling:!0}),o=await t.loaderHook.lifecycle.loadEntryError.emit({getRemoteEntry:e,origin:t,remoteInfo:i,remoteEntryExports:r,globalLoading:M,uniqueKey:n});if(o)return o}throw e})}return M[l]}function tl(e){return{...e,entry:"entry"in e?e.entry:"",type:e.type||B,entryGlobalName:e.entryGlobalName||e.name,shareScope:e.shareScope||V}}function tu(e){return{resourceCategory:"sync",share:!0,depsRemote:!0,prefetchInterface:!1,...e}}function tc(e,t){return t.map(t=>{let r=e7(e,t.nameOrAlias);return s(r,`Unable to preload ${t.nameOrAlias} as it is not included in ${!r&&n.safeToString({remoteInfo:r,remotes:e})}`),{remote:r,preloadConfig:tu(t)}})}function tf(e){return e?e.map(e=>"."===e?e:e.startsWith("./")?e.replace("./",""):e):[]}function th(e,t,r){let o=!(arguments.length>3)||void 0===arguments[3]||arguments[3],{cssAssets:i,jsAssetsWithoutEntry:a,entryAssets:s}=r;if(t.options.inBrowser){if(s.forEach(r=>{let{moduleInfo:n}=r,o=t.moduleCache.get(e.name);o?ts({origin:t,remoteInfo:n,remoteEntryExports:o.remoteEntryExports}):ts({origin:t,remoteInfo:n,remoteEntryExports:void 0})}),o){let e={rel:"preload",as:"style"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let e={rel:"stylesheet",type:"text/css"};i.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n},needDeleteLink:!1});i&&document.head.appendChild(o)})}if(o){let e={rel:"preload",as:"script"};a.forEach(r=>{let{link:o,needAttach:i}=n.createLink({url:r,cb:()=>{},attrs:e,createLinkHook:(e,r)=>{let n=t.loaderHook.lifecycle.createLink.emit({url:e,attrs:r});if(n instanceof HTMLLinkElement)return n}});i&&document.head.appendChild(o)})}else{let r={fetchpriority:"high",type:(null==e?void 0:e.type)==="module"?"module":"text/javascript"};a.forEach(e=>{let{script:o,needAttach:i}=n.createScript({url:e,cb:()=>{},attrs:r,createScriptHook:(e,r)=>{let n=t.loaderHook.lifecycle.createScript.emit({url:e,attrs:r});if(n instanceof HTMLScriptElement)return n},needDeleteScript:!0});i&&document.head.appendChild(o)})}}}var td={global:{Global:I,nativeGlobal:R,resetFederationGlobalInfo:T,setGlobalFederationInstance:O,getGlobalFederationConstructor:A,setGlobalFederationConstructor:k,getInfoWithoutType:D,getGlobalSnapshot:P,getTargetSnapshotInfoByModuleInfo:F,getGlobalSnapshotInfoByModuleInfo:L,setGlobalSnapshotInfoByModuleInfo:C,addGlobalSnapshot:x,getRemoteEntryExports:j,registerGlobalPlugins:H,getGlobalHostPlugins:U,getPreloaded:G,setPreloaded:q},share:{getRegisteredShare:e0,getGlobalShareScope:e1},utils:{matchRemoteWithNameAndExpose:e8,preloadAssets:th,getRemoteInfo:tl}};function tp(e,t){let r=t,n=Array.isArray(e.shareScope)?e.shareScope:[e.shareScope];n.length||n.push("default"),n.forEach(e=>{r[e]||(r[e]={})});let o={version:e.version||"",shareScopeKeys:Array.isArray(e.shareScope)?n:e.shareScope||"default"};return Object.defineProperty(o,"shareScopeMap",{value:r,enumerable:!1}),{remoteEntryInitOptions:o,shareScope:r[n[0]],initScope:[]}}class tm{async getEntry(){if(this.remoteEntryExports)return this.remoteEntryExports;let e=await ts({origin:this.host,remoteInfo:this.remoteInfo,remoteEntryExports:this.remoteEntryExports});return s(e,`remoteEntryExports is undefined - ${n.safeToString(this.remoteInfo)}`),this.remoteEntryExports=e,this.remoteEntryExports}async init(e,t){let r=await this.getEntry();if(!this.inited&&!this.initing){this.initing=!0;let{remoteEntryInitOptions:n,shareScope:i,initScope:a}=tp(this.remoteInfo,this.host.shareScopeMap),s=await this.host.hooks.lifecycle.beforeInitContainer.emit({shareScope:i,remoteEntryInitOptions:n,initScope:a,remoteInfo:this.remoteInfo,origin:this.host});void 0===(null==r?void 0:r.init)&&l(o.getShortErrorMsg(o.RUNTIME_002,o.runtimeDescMap,{hostName:this.host.name,remoteName:this.remoteInfo.name,remoteEntryUrl:this.remoteInfo.entry,remoteEntryKey:this.remoteInfo.entryGlobalName})),await r.init(s.shareScope,s.initScope,s.remoteEntryInitOptions),await this.host.hooks.lifecycle.initContainer.emit({...s,id:e,remoteSnapshot:t,remoteEntryExports:r}),this.inited=!0}return r}async get(e,t,r,n){let o,{loadFactory:i=!0}=r||{loadFactory:!0},a=await this.init(e,n);this.lib=a,(o=await this.host.loaderHook.lifecycle.getModuleFactory.emit({remoteEntryExports:a,expose:t,moduleInfo:this.remoteInfo}))||(o=await a.get(t)),s(o,`${f(this.remoteInfo)} remote don't export ${t}.`);let l=v(this.remoteInfo.name,t),u=this.wraperFactory(o,l);return i?await u():u}wraperFactory(e,t){function r(e,t){e&&"object"==typeof e&&Object.isExtensible(e)&&!Object.getOwnPropertyDescriptor(e,Symbol.for("mf_module_id"))&&Object.defineProperty(e,Symbol.for("mf_module_id"),{value:t,enumerable:!1})}return e instanceof Promise?async()=>{let n=await e();return r(n,t),n}:()=>{let n=e();return r(n,t),n}}constructor({remoteInfo:e,host:t}){this.inited=!1,this.initing=!1,this.lib=void 0,this.remoteInfo=e,this.host=t}}class tg{on(e){"function"==typeof e&&this.listeners.add(e)}once(e){let t=this;this.on(function r(){for(var n=arguments.length,o=Array(n),i=0;i0&&this.listeners.forEach(t=>{e=t(...r)}),e}remove(e){this.listeners.delete(e)}removeAll(){this.listeners.clear()}constructor(e){this.type="",this.listeners=new Set,e&&(this.type=e)}}class ty extends tg{emit(){let e;for(var t=arguments.length,r=Array(t),n=0;n0){let t=0,n=e=>!1!==e&&(t0){let r=0,n=t=>(u(t),this.onerror(t),e),o=i=>{if(t_(e,i)){if(e=i,r{let r=e[t];r&&this.lifecycle[t].on(r)})}}removePlugin(e){s(e,"A name is required.");let t=this.registerPlugins[e];s(t,`The plugin "${e}" is not registered.`),Object.keys(t).forEach(e=>{"name"!==e&&this.lifecycle[e].remove(t[e])})}constructor(e){this.registerPlugins={},this.lifecycle=e,this.lifecycleKeys=Object.keys(e)}}function tb(e,t){let r=S(t);r.url||l(`The attribute remoteEntry of ${e.name} must not be undefined.`);let o=n.getResourceUrl(t,r.url);n.isBrowserEnv()||o.startsWith("http")||(o=`https:${o}`),e.type=r.type,e.entryGlobalName=r.globalName,e.entry=o,e.version=t.version,e.buildVersion=t.buildVersion}function tR(){return{name:"snapshot-plugin",async afterResolve(e){let{remote:t,pkgNameOrAlias:r,expose:n,origin:o,remoteInfo:i,id:a}=e;if(!h(t)||!d(t)){let{remoteSnapshot:s,globalSnapshot:l}=await o.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:t,id:a});tb(i,s);let u={remote:t,preloadConfig:{nameOrAlias:r,exposes:[n],resourceCategory:"sync",share:!1,depsRemote:!1}},c=await o.remoteHandler.hooks.lifecycle.generatePreloadAssets.emit({origin:o,preloadOptions:u,remoteInfo:i,remote:t,remoteSnapshot:s,globalSnapshot:l});return c&&th(i,o,c,!1),{...e,remoteSnapshot:s}}return e}}}function tI(e){let t=e.split(":");return 1===t.length?{name:t[0],version:void 0}:2===t.length?{name:t[0],version:t[1]}:{name:t[1],version:t[2]}}function tN(e,t,r,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5?arguments[5]:void 0,{value:s}=D(e,f(t)),l=a||s;if(l&&!n.isManifestProvider(l)&&(r(l,t,o),l.remotesInfo))for(let t of Object.keys(l.remotesInfo)){if(i[t])continue;i[t]=!0;let n=tI(t),o=l.remotesInfo[t];tN(e,{name:n.name,version:o.matchedVersion},r,!1,i,void 0)}}let t$=(e,t)=>document.querySelector(`${e}[${"link"===e?"href":"src"}="${t}"]`);function tM(e,t,r,o,i){let a=[],s=[],l=[],u=new Set,c=new Set,{options:f}=e,{preloadConfig:h}=t,{depsRemote:d}=h;if(tN(o,r,(t,r,o)=>{let i;if(o)i=h;else if(Array.isArray(d)){let e=d.find(e=>e.nameOrAlias===r.name||e.nameOrAlias===r.alias);if(!e)return;i=tu(e)}else{if(!0!==d)return;i=h}let u=n.getResourceUrl(t,S(t).url);u&&l.push({name:r.name,moduleInfo:{name:r.name,entry:u,type:"remoteEntryType"in t?t.remoteEntryType:"global",entryGlobalName:"globalName"in t?t.globalName:r.name,shareScope:"",version:"version"in t?t.version:void 0},url:u});let c="modules"in t?t.modules:[],f=tf(i.exposes);if(f.length&&"modules"in t){var p;c=null==t||null==(p=t.modules)?void 0:p.reduce((e,t)=>((null==f?void 0:f.indexOf(t.moduleName))!==-1&&e.push(t),e),[])}function m(e){let r=e.map(e=>n.getResourceUrl(t,e));return i.filter?r.filter(i.filter):r}if(c){let n=c.length;for(let o=0;o0){let t=(t,r)=>{let{shared:n}=e0(e.shareScopeMap,r.sharedName,t,e.sharedHandler.hooks.lifecycle.resolveShare)||{};n&&"function"==typeof n.lib&&(r.assets.js.sync.forEach(e=>{u.add(e)}),r.assets.css.sync.forEach(e=>{c.add(e)}))};i.shared.forEach(e=>{var r;let n=null==(r=f.shared)?void 0:r[e.sharedName];if(!n)return;let o=e.version?n.find(t=>t.version===e.version):n;o&&E(o).forEach(r=>{t(r,e)})})}let p=s.filter(e=>!u.has(e)&&!t$("script",e));return{cssAssets:a.filter(e=>!c.has(e)&&!t$("link",e)),jsAssetsWithoutEntry:p,entryAssets:l.filter(e=>!t$("script",e.url))}}let tw=function(){return{name:"generate-preload-assets-plugin",async generatePreloadAssets(e){let{origin:t,preloadOptions:r,remoteInfo:o,remote:i,globalSnapshot:a,remoteSnapshot:s}=e;return n.isBrowserEnv()?h(i)&&d(i)?{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[{name:i.name,url:i.entry,moduleInfo:{name:o.name,entry:i.entry,type:o.type||"global",entryGlobalName:"",shareScope:""}}]}:(tb(o,s),tM(t,r,o,a,s)):{cssAssets:[],jsAssetsWithoutEntry:[],entryAssets:[]}}}};function tT(e,t){let r=L({name:t.name,version:t.options.version}),n=r&&"remotesInfo"in r&&r.remotesInfo&&D(r.remotesInfo,e.name).value;return n&&n.matchedVersion?{hostGlobalSnapshot:r,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:n.matchedVersion})}:{hostGlobalSnapshot:void 0,globalSnapshot:P(),remoteSnapshot:L({name:e.name,version:"version"in e?e.version:void 0})}}class tO{async loadRemoteSnapshotInfo(e){let t,r,{moduleInfo:i,id:a,expose:s}=e,{options:u}=this.HostInstance;await this.hooks.lifecycle.beforeLoadRemoteSnapshot.emit({options:u,moduleInfo:i});let c=L({name:this.HostInstance.options.name,version:this.HostInstance.options.version});c||(c={version:this.HostInstance.options.version||"",remoteEntry:"",remotesInfo:{}},x({[this.HostInstance.options.name]:c})),c&&"remotesInfo"in c&&!D(c.remotesInfo,i.name).value&&("version"in i||"entry"in i)&&(c.remotesInfo={...null==c?void 0:c.remotesInfo,[i.name]:{matchedVersion:"version"in i?i.version:i.entry}});let{hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p}=this.getGlobalRemoteInfo(i),{remoteSnapshot:m,globalSnapshot:g}=await this.hooks.lifecycle.loadSnapshot.emit({options:u,moduleInfo:i,hostGlobalSnapshot:f,remoteSnapshot:d,globalSnapshot:p});if(m)if(n.isManifestProvider(m)){let e=n.isBrowserEnv()?m.remoteEntry:m.ssrRemoteEntry||m.remoteEntry||"",o=await this.getManifestJson(e,i,{}),a=C({...i,entry:e},o);t=o,r=a}else{let{remoteSnapshot:e}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:m,from:"global"});t=e,r=g}else if(h(i)){let e=await this.getManifestJson(i.entry,i,{}),n=C(i,e),{remoteSnapshot:o}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:i,remoteSnapshot:e,from:"global"});t=o,r=n}else l(o.getShortErrorMsg(o.RUNTIME_007,o.runtimeDescMap,{hostName:i.name,hostVersion:i.version,globalSnapshot:JSON.stringify(g)}));return await this.hooks.lifecycle.afterLoadSnapshot.emit({id:a,host:this.HostInstance,options:u,moduleInfo:i,remoteSnapshot:t}),{remoteSnapshot:t,globalSnapshot:r}}getGlobalRemoteInfo(e){return tT(e,this.HostInstance)}async getManifestJson(e,t,r){let i=async()=>{let r=this.manifestCache.get(e);if(r)return r;try{let t=await this.loaderHook.lifecycle.fetch.emit(e,{});t&&t instanceof Response||(t=await fetch(e,{})),r=await t.json()}catch(n){(r=await this.HostInstance.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"afterResolve",origin:this.HostInstance}))||(delete this.manifestLoading[e],l(o.getShortErrorMsg(o.RUNTIME_003,o.runtimeDescMap,{manifestUrl:e,moduleName:t.name,hostName:this.HostInstance.options.name},`${n}`)))}return s(r.metaData&&r.exposes&&r.shared,`${e} is not a federation manifest`),this.manifestCache.set(e,r),r},a=async()=>{let r=await i(),o=n.generateSnapshotFromManifest(r,{version:e}),{remoteSnapshot:a}=await this.hooks.lifecycle.loadRemoteSnapshot.emit({options:this.HostInstance.options,moduleInfo:t,manifestJson:r,remoteSnapshot:o,manifestUrl:e,from:"manifest"});return a};return this.manifestLoading[e]||(this.manifestLoading[e]=a().then(e=>e)),this.manifestLoading[e]}constructor(e){this.loadingHostSnapshot=null,this.manifestCache=new Map,this.hooks=new tv({beforeLoadRemoteSnapshot:new ty("beforeLoadRemoteSnapshot"),loadSnapshot:new tS("loadGlobalSnapshot"),loadRemoteSnapshot:new tS("loadRemoteSnapshot"),afterLoadSnapshot:new tS("afterLoadSnapshot")}),this.manifestLoading=I.__FEDERATION__.__MANIFEST_LOADING__,this.HostInstance=e,this.loaderHook=e.loaderHook}}class tA{registerShared(e,t){let{newShareInfos:r,allShareInfos:n}=eq(e,t);return Object.keys(r).forEach(e=>{r[e].forEach(r=>{r.scope.forEach(n=>{var o;this.hooks.lifecycle.beforeRegisterShare.emit({origin:this.host,pkgName:e,shared:r}),(null==(o=this.shareScopeMap[n])?void 0:o[e])||this.setShared({pkgName:e,lib:r.lib,get:r.get,loaded:r.loaded||!!r.lib,shared:r,from:t.name})})})}),{newShareInfos:r,allShareInfos:n}}async loadShare(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&await Promise.all(n.scope.map(async e=>{await Promise.all(this.initializeSharing(e,{strategy:n.strategy}))}));let{shareInfo:o}=await this.hooks.lifecycle.beforeLoadShare.emit({pkgName:e,shareInfo:n,shared:r.options.shared,origin:r});s(o,`Cannot find ${e} Share in the ${r.options.name}. Please ensure that the ${e} Share parameters have been injected`);let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(i){let t=e3(i,a);if(t.lib)return e9(t,r.options.name),t.lib;if(t.loading&&!t.loaded){let e=await t.loading;return t.loaded=!0,t.lib||(t.lib=e),e9(t,r.options.name),e}{let n=(async()=>{let e=await t.get();return e9(t,r.options.name),t.loaded=!0,t.lib=e,e})();return this.setShared({pkgName:e,loaded:!1,shared:i,from:r.options.name,lib:null,loading:n,treeShaking:a?t:void 0}),n}}{if(null==t?void 0:t.customShareInfo)return!1;let n=eV(o.treeShaking),i=e3(o,n),a=(async()=>{let t=await i.get();i.lib=t,i.loaded=!0,e9(i,r.options.name);let{shared:n,useTreesShaking:a}=e0(this.shareScopeMap,e,o,this.hooks.lifecycle.resolveShare)||{};if(n){let e=e3(n,a);e.lib=t,e.loaded=!0,n.from=o.from}return t})();return this.setShared({pkgName:e,loaded:!1,shared:o,from:r.options.name,lib:null,loading:a,treeShaking:n?i:void 0}),a}}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0,{host:r}=this,n=null==t?void 0:t.from,o=null==t?void 0:t.strategy,i=null==t?void 0:t.initScope,a=[];if("build"!==n){let{initTokens:t}=this;i||(i=[]);let r=t[e];if(r||(r=t[e]={from:this.host.name}),i.indexOf(r)>=0)return a;i.push(r)}let s=this.shareScopeMap,l=r.options.name;s[e]||(s[e]={});let u=s[e],c=(e,t)=>{var r;let{version:n,eager:o}=t;u[e]=u[e]||{};let i=u[e],a=i[n]&&e3(i[n]),s=!!(a&&("eager"in a&&a.eager||"shareConfig"in a&&(null==(r=a.shareConfig)?void 0:r.eager)));(!a||"loaded-first"!==a.strategy&&!a.loaded&&(!o!=!s?o:l>i[n].from))&&(i[n]=t)},f=async e=>{let t,{module:n}=await r.remoteHandler.getRemoteModuleAndOptions({id:e});try{t=await n.getEntry()}catch(n){t=await r.remoteHandler.hooks.lifecycle.errorLoadRemote.emit({id:e,error:n,from:"runtime",lifecycle:"beforeLoadShare",origin:r})}finally{(null==t?void 0:t.init)&&(n.remoteEntryExports=t,await n.init())}};return Object.keys(r.options.shared).forEach(t=>{r.options.shared[t].forEach(r=>{r.scope.includes(e)&&c(t,r)})}),("version-first"===r.options.shareStrategy||"version-first"===o)&&r.options.remotes.forEach(t=>{t.shareScope===e&&a.push(f(t.name))}),a}loadShareSync(e,t){let{host:r}=this,n=e2({pkgName:e,extraOptions:t,shareInfos:r.options.shared});(null==n?void 0:n.scope)&&n.scope.forEach(e=>{this.initializeSharing(e,{strategy:n.strategy})});let{shared:i,useTreesShaking:a}=e0(this.shareScopeMap,e,n,this.hooks.lifecycle.resolveShare)||{};if(i){if("function"==typeof i.lib)return e9(i,r.options.name),i.loaded||(i.loaded=!0,i.from===r.options.name&&(n.loaded=!0)),i.lib;if("function"==typeof i.get){let t=i.get();if(!(t instanceof Promise))return e9(i,r.options.name),this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:t,shared:i}),t}}if(n.lib)return n.loaded||(n.loaded=!0),n.lib;if(n.get){let i=n.get();if(i instanceof Promise){let n=(null==t?void 0:t.from)==="build"?o.RUNTIME_005:o.RUNTIME_006;throw Error(o.getShortErrorMsg(n,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}return n.lib=i,this.setShared({pkgName:e,loaded:!0,from:r.options.name,lib:n.lib,shared:n}),n.lib}throw Error(o.getShortErrorMsg(o.RUNTIME_006,o.runtimeDescMap,{hostName:r.options.name,sharedPkgName:e}))}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{host:n}=this;this.shareScopeMap[e]=t,this.hooks.lifecycle.initContainerShareScopeMap.emit({shareScope:t,options:n.options,origin:n,scopeName:e,hostShareScopeMap:r.hostShareScopeMap})}setShared(e){let{pkgName:t,shared:r,from:n,lib:o,loading:i,loaded:a,get:s,treeShaking:l}=e,{version:u,scope:c="default",...f}=r,h=Array.isArray(c)?c:[c],d=e=>{let t=(e,t,r)=>{r&&!e[t]&&(e[t]=r)},r=l?e.treeShaking:e;t(r,"loaded",a),t(r,"loading",i),t(r,"get",s)};h.forEach(e=>{this.shareScopeMap[e]||(this.shareScopeMap[e]={}),this.shareScopeMap[e][t]||(this.shareScopeMap[e][t]={}),this.shareScopeMap[e][t][u]||(this.shareScopeMap[e][t][u]={version:u,scope:[e],...f,lib:o});let r=this.shareScopeMap[e][t][u];d(r),n&&r.from!==n&&(r.from=n)})}_setGlobalShareScopeMap(e){let t=e1(),r=e.id||e.name;r&&!t[r]&&(t[r]=this.shareScopeMap)}constructor(e){this.hooks=new tv({beforeRegisterShare:new tE("beforeRegisterShare"),afterResolve:new tS("afterResolve"),beforeLoadShare:new tS("beforeLoadShare"),loadShare:new ty,resolveShare:new tE("resolveShare"),initContainerShareScopeMap:new tE("initContainerShareScopeMap")}),this.host=e,this.shareScopeMap={},this.initTokens={},this._setGlobalShareScopeMap(e.options)}}class tk{formatAndRegisterRemote(e,t){return(t.remotes||[]).reduce((e,t)=>(this.registerRemote(t,e,{force:!1}),e),e.remotes)}setIdToRemoteMap(e,t){let{remote:r,expose:n}=t,{name:o,alias:i}=r;if(this.idToRemoteMap[e]={name:r.name,expose:n},i&&e.startsWith(o)){let t=e.replace(o,i);this.idToRemoteMap[t]={name:r.name,expose:n};return}if(i&&e.startsWith(i)){let t=e.replace(i,o);this.idToRemoteMap[t]={name:r.name,expose:n}}}async loadRemote(e,t){let{host:r}=this;try{let{loadFactory:n=!0}=t||{loadFactory:!0},{module:o,moduleOptions:i,remoteMatchInfo:a}=await this.getRemoteModuleAndOptions({id:e}),{pkgNameOrAlias:s,remote:l,expose:u,id:c,remoteSnapshot:f}=a,h=await o.get(c,u,t,f),d=await this.hooks.lifecycle.onLoad.emit({id:c,pkgNameOrAlias:s,expose:u,exposeModule:n?h:void 0,exposeModuleFactory:n?void 0:h,remote:l,options:i,moduleInstance:o,origin:r});if(this.setIdToRemoteMap(e,a),"function"==typeof d)return d;return h}catch(i){let{from:n="runtime"}=t||{from:"runtime"},o=await this.hooks.lifecycle.errorLoadRemote.emit({id:e,error:i,from:n,lifecycle:"onLoad",origin:r});if(!o)throw i;return o}}async preloadRemote(e){let{host:t}=this;await this.hooks.lifecycle.beforePreloadRemote.emit({preloadOps:e,options:t.options,origin:t});let r=tc(t.options.remotes,e);await Promise.all(r.map(async e=>{let{remote:r}=e,n=tl(r),{globalSnapshot:o,remoteSnapshot:i}=await t.snapshotHandler.loadRemoteSnapshotInfo({moduleInfo:r}),a=await this.hooks.lifecycle.generatePreloadAssets.emit({origin:t,preloadOptions:e,remote:r,remoteInfo:n,globalSnapshot:o,remoteSnapshot:i});a&&th(n,t,a)}))}registerRemotes(e,t){let{host:r}=this;e.forEach(e=>{this.registerRemote(e,r.options.remotes,{force:null==t?void 0:t.force})})}async getRemoteModuleAndOptions(e){let t,{host:r}=this,{id:n}=e;try{t=await this.hooks.lifecycle.beforeRequest.emit({id:n,options:r.options,origin:r})}catch(e){if(!(t=await this.hooks.lifecycle.errorLoadRemote.emit({id:n,options:r.options,origin:r,from:"runtime",error:e,lifecycle:"beforeRequest"})))throw e}let{id:i}=t,a=e8(r.options.remotes,i);s(a,o.getShortErrorMsg(o.RUNTIME_004,o.runtimeDescMap,{hostName:r.options.name,requestId:i}));let{remote:l}=a,u=tl(l),c=await r.sharedHandler.hooks.lifecycle.afterResolve.emit({id:i,...a,options:r.options,origin:r,remoteInfo:u}),{remote:f,expose:h}=c;s(f&&h,`The 'beforeRequest' hook was executed, but it failed to return the correct 'remote' and 'expose' values while loading ${i}.`);let d=r.moduleCache.get(f.name),p={host:r,remoteInfo:u};return d||(d=new tm(p),r.moduleCache.set(f.name,d)),{module:d,moduleOptions:p,remoteMatchInfo:c}}registerRemote(e,t,r){let{host:o}=this,i=()=>{if(e.alias){let r=t.find(t=>{var r;return e.alias&&(t.name.startsWith(e.alias)||(null==(r=t.alias)?void 0:r.startsWith(e.alias)))});s(!r,`The alias ${e.alias} of remote ${e.name} is not allowed to be the prefix of ${r&&r.name} name or alias`)}"entry"in e&&n.isBrowserEnv()&&!e.entry.startsWith("http")&&(e.entry=new URL(e.entry,window.location.origin).href),e.shareScope||(e.shareScope=V),e.type||(e.type=B)};this.hooks.lifecycle.beforeRegisterRemote.emit({remote:e,origin:o});let a=t.find(t=>t.name===e.name);if(a){let s=[`The remote "${e.name}" is already registered.`,"Please note that overriding it may cause unexpected errors."];(null==r?void 0:r.force)&&(this.removeRemote(a),i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o}),n.warn(s.join(" ")))}else i(),t.push(e),this.hooks.lifecycle.registerRemote.emit({remote:e,origin:o})}removeRemote(e){try{let{host:r}=this,{name:o}=e,i=r.options.remotes.findIndex(e=>e.name===o);-1!==i&&r.options.remotes.splice(i,1);let a=r.moduleCache.get(e.name);if(a){let o=a.remoteInfo,i=o.entryGlobalName;if(b[i]){var t;(null==(t=Object.getOwnPropertyDescriptor(b,i))?void 0:t.configurable)?delete b[i]:b[i]=void 0}let s=ta(a.remoteInfo);M[s]&&delete M[s],r.snapshotHandler.manifestCache.delete(o.entry);let l=o.buildVersion?n.composeKeyWithSeparator(o.name,o.buildVersion):o.name,u=b.__FEDERATION__.__INSTANCES__.findIndex(e=>o.buildVersion?e.options.id===l:e.name===l);if(-1!==u){let e=b.__FEDERATION__.__INSTANCES__[u];l=e.options.id||l;let t=e1(),r=!0,n=[];Object.keys(t).forEach(e=>{let i=t[e];i&&Object.keys(i).forEach(t=>{let a=i[t];a&&Object.keys(a).forEach(i=>{let s=a[i];s&&Object.keys(s).forEach(a=>{let l=s[a];l&&"object"==typeof l&&l.from===o.name&&(l.loaded||l.loading?(l.useIn=l.useIn.filter(e=>e!==o.name),l.useIn.length?r=!1:n.push([e,t,i,a])):n.push([e,t,i,a]))})})})}),r&&(e.shareScopeMap={},delete t[l]),n.forEach(e=>{var r,n,o;let[i,a,s,l]=e;null==(o=t[i])||null==(n=o[a])||null==(r=n[s])||delete r[l]}),b.__FEDERATION__.__INSTANCES__.splice(u,1)}let{hostGlobalSnapshot:c}=tT(e,r);if(c){let t=c&&"remotesInfo"in c&&c.remotesInfo&&D(c.remotesInfo,e.name).key;t&&(delete c.remotesInfo[t],I.__FEDERATION__.__MANIFEST_LOADING__[t]&&delete I.__FEDERATION__.__MANIFEST_LOADING__[t])}r.moduleCache.delete(e.name)}}catch(e){a.log("removeRemote fail: ",e)}}constructor(e){this.hooks=new tv({beforeRegisterRemote:new tE("beforeRegisterRemote"),registerRemote:new tE("registerRemote"),beforeRequest:new tS("beforeRequest"),onLoad:new ty("onLoad"),handlePreloadModule:new tg("handlePreloadModule"),errorLoadRemote:new ty("errorLoadRemote"),beforePreloadRemote:new ty("beforePreloadRemote"),generatePreloadAssets:new ty("generatePreloadAssets"),afterPreloadRemote:new ty,loadEntry:new ty}),this.host=e,this.idToRemoteMap={}}}class tD{initOptions(e){this.registerPlugins(e.plugins);let t=this.formatOptions(this.options,e);return this.options=t,t}async loadShare(e,t){return this.sharedHandler.loadShare(e,t)}loadShareSync(e,t){return this.sharedHandler.loadShareSync(e,t)}initializeSharing(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V,t=arguments.length>1?arguments[1]:void 0;return this.sharedHandler.initializeSharing(e,t)}initRawContainer(e,t,r){let n=new tm({host:this,remoteInfo:tl({name:e,entry:t})});return n.remoteEntryExports=r,this.moduleCache.set(e,n),n}async loadRemote(e,t){return this.remoteHandler.loadRemote(e,t)}async preloadRemote(e){return this.remoteHandler.preloadRemote(e)}initShareScopeMap(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sharedHandler.initShareScopeMap(e,t,r)}formatOptions(e,t){let{allShareInfos:r}=eq(e,t),{userOptions:n,options:o}=this.hooks.lifecycle.beforeInit.emit({origin:this,userOptions:t,options:e,shareInfo:r}),i=this.remoteHandler.formatAndRegisterRemote(o,n),{allShareInfos:a}=this.sharedHandler.registerShared(o,n),s=[...o.plugins];n.plugins&&n.plugins.forEach(e=>{s.includes(e)||s.push(e)});let l={...e,...t,plugins:s,remotes:i,shared:a};return this.hooks.lifecycle.init.emit({origin:this,options:l}),l}registerPlugins(e){let t=e6(e,this);this.options.plugins=this.options.plugins.reduce((e,t)=>(t&&e&&!e.find(e=>e.name===t.name)&&e.push(t),e),t||[])}registerRemotes(e,t){return this.remoteHandler.registerRemotes(e,t)}registerShared(e){this.sharedHandler.registerShared(this.options,{...this.options,shared:e})}constructor(e){this.hooks=new tv({beforeInit:new tE("beforeInit"),init:new tg,beforeInitContainer:new tS("beforeInitContainer"),initContainer:new tS("initContainer")}),this.version="0.24.1",this.moduleCache=new Map,this.loaderHook=new tv({getModuleInfo:new tg,createScript:new tg,createLink:new tg,fetch:new ty,loadEntryError:new ty,getModuleFactory:new ty}),this.bridgeHook=new tv({beforeBridgeRender:new tg,afterBridgeRender:new tg,beforeBridgeDestroy:new tg,afterBridgeDestroy:new tg});const t=[tR(),tw()],r={id:e4(),name:e.name,plugins:t,remotes:[],shared:{},inBrowser:n.isBrowserEnv()};this.name=e.name,this.options=r,this.snapshotHandler=new tO(this),this.sharedHandler=new tA(this),this.remoteHandler=new tk(this),this.shareScopeMap=this.sharedHandler.shareScopeMap,this.registerPlugins([...r.plugins,...e.plugins||[]]),this.options=this.formatOptions(r,e)}}var tP=Object.freeze({__proto__:null});t.loadScript=n.loadScript,t.loadScriptNode=n.loadScriptNode,t.CurrentGlobal=b,t.Global=I,t.Module=tm,t.ModuleFederation=tD,t.addGlobalSnapshot=x,t.assert=s,t.getGlobalFederationConstructor=A,t.getGlobalSnapshot=P,t.getInfoWithoutType=D,t.getRegisteredShare=e0,t.getRemoteEntry=ts,t.getRemoteInfo=tl,t.helpers=td,t.isStaticResourcesEqual=_,t.matchRemoteWithNameAndExpose=e8,t.registerGlobalPlugins=H,t.resetFederationGlobalInfo=T,t.safeWrapper=p,t.satisfy=eU,t.setGlobalFederationConstructor=k,t.setGlobalFederationInstance=O,t.types=tP},583(e,t,r){var n=r(224),o=r(299);e.exports={...n.helpers,global:{...n.helpers.global,getGlobalFederationInstance:o.getGlobalFederationInstance}}},448(e,t,r){var n=r(224),o=r(229),i=r(299);function a(e){let t=new(n.getGlobalFederationConstructor()||n.ModuleFederation)(e);return n.setGlobalFederationInstance(t),t}let s=null;function l(e){let t=i.getGlobalFederationInstance(e.name,e.version);return t?(t.initOptions(e),s||(s=t),t):s=a(e)}function u(){for(var e=arguments.length,t=Array(e),r=0;r!!r&&n.options.id===r||n.options.name===e&&!n.options.version&&!t||n.options.name===e&&!!t&&n.options.version===t)}},720(__unused_rspack_module,exports){let FederationModuleManifest="federation-manifest.json",MANIFEST_EXT=".json",BROWSER_LOG_KEY="FEDERATION_DEBUG",NameTransformSymbol={AT:"@",HYPHEN:"-",SLASH:"/"},NameTransformMap={[NameTransformSymbol.AT]:"scope_",[NameTransformSymbol.HYPHEN]:"_",[NameTransformSymbol.SLASH]:"__"},EncodedNameTransformMap={[NameTransformMap[NameTransformSymbol.AT]]:NameTransformSymbol.AT,[NameTransformMap[NameTransformSymbol.HYPHEN]]:NameTransformSymbol.HYPHEN,[NameTransformMap[NameTransformSymbol.SLASH]]:NameTransformSymbol.SLASH},SEPARATOR=":",ManifestFileName="mf-manifest.json",StatsFileName="mf-stats.json",MFModuleType={NPM:"npm",APP:"app"},MODULE_DEVTOOL_IDENTIFIER="__MF_DEVTOOLS_MODULE_INFO__",ENCODE_NAME_PREFIX="ENCODE_NAME_PREFIX",TEMP_DIR=".federation",MFPrefetchCommon={identifier:"MFDataPrefetch",globalKey:"__PREFETCH__",library:"mf-data-prefetch",exportsKey:"__PREFETCH_EXPORTS__",fileName:"bootstrap.js"};var ContainerPlugin=Object.freeze({__proto__:null}),ContainerReferencePlugin=Object.freeze({__proto__:null}),ModuleFederationPlugin=Object.freeze({__proto__:null}),SharePlugin=Object.freeze({__proto__:null});function isBrowserEnv(){return"u">typeof window&&void 0!==window.document}function isReactNativeEnv(){var e;return"u">typeof navigator&&(null==(e=navigator)?void 0:e.product)==="ReactNative"}function isBrowserDebug(){try{if(isBrowserEnv()&&window.localStorage)return!!localStorage.getItem(BROWSER_LOG_KEY)}catch(e){}return!1}function isDebugMode(){return"u">typeof process&&process.env&&process.env.FEDERATION_DEBUG?!!process.env.FEDERATION_DEBUG:!!("u">typeof FEDERATION_DEBUG&&FEDERATION_DEBUG)||isBrowserDebug()}let getProcessEnv=function(){return"u">typeof process&&process.env?process.env:{}},LOG_CATEGORY="[ Federation Runtime ]",parseEntry=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SEPARATOR,n=e.split(r),o="development"===getProcessEnv().NODE_ENV&&t,i="*",a=e=>e.startsWith("http")||e.includes(MANIFEST_EXT);if(n.length>=2){let[t,...s]=n;e.startsWith(r)&&(t=n.slice(0,2).join(r),s=[o||n.slice(2).join(r)]);let l=o||s.join(r);return a(l)?{name:t,entry:l}:{name:t,version:l||i}}if(1===n.length){let[e]=n;return o&&a(o)?{name:e,entry:o}:{name:e,version:o||i}}throw`Invalid entry value: ${e}`},composeKeyWithSeparator=function(){for(var e=arguments.length,t=Array(e),r=0;rt?e?`${e}${SEPARATOR}${t}`:t:e,""):""},encodeName=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{let n=r?".js":"";return`${t}${e.replace(RegExp(`${NameTransformSymbol.AT}`,"g"),NameTransformMap[NameTransformSymbol.AT]).replace(RegExp(`${NameTransformSymbol.HYPHEN}`,"g"),NameTransformMap[NameTransformSymbol.HYPHEN]).replace(RegExp(`${NameTransformSymbol.SLASH}`,"g"),NameTransformMap[NameTransformSymbol.SLASH])}${n}`}catch(e){throw e}},decodeName=function(e,t,r){try{let n=e;if(t){if(!n.startsWith(t))return n;n=n.replace(RegExp(t,"g"),"")}return n=n.replace(RegExp(`${NameTransformMap[NameTransformSymbol.AT]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.AT]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.SLASH]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.SLASH]]).replace(RegExp(`${NameTransformMap[NameTransformSymbol.HYPHEN]}`,"g"),EncodedNameTransformMap[NameTransformMap[NameTransformSymbol.HYPHEN]]),r&&(n=n.replace(".js","")),n}catch(e){throw e}},generateExposeFilename=(e,t)=>{if(!e)return"";let r=e;return"."===r&&(r="default_export"),r.startsWith("./")&&(r=r.replace("./","")),encodeName(r,"__federation_expose_",t)},generateShareFilename=(e,t)=>e?encodeName(e,"__federation_shared_",t):"",getResourceUrl=(e,t)=>{if("getPublicPath"in e){let r;return r=e.getPublicPath.startsWith("function")?Function("return "+e.getPublicPath)()():Function(e.getPublicPath)(),`${r}${t}`}return"publicPath"in e?!isBrowserEnv()&&!isReactNativeEnv()&&"ssrPublicPath"in e?`${e.ssrPublicPath}${t}`:`${e.publicPath}${t}`:(console.warn("Cannot get resource URL. If in debug mode, please ignore.",e,t),"")},assert=(e,t)=>{e||error(t)},error=e=>{throw Error(`${LOG_CATEGORY}: ${e}`)},warn=e=>{console.warn(`${LOG_CATEGORY}: ${e}`)};function safeToString(e){try{return JSON.stringify(e,null,2)}catch(e){return""}}let VERSION_PATTERN_REGEXP=/^([\d^=v<>~]|[*xX]$)/;function isRequiredVersion(e){return VERSION_PATTERN_REGEXP.test(e)}let simpleJoinRemoteEntry=(e,t)=>{if(!e)return t;let r=(e=>{if("."===e)return"";if(e.startsWith("./"))return e.replace("./","");if(e.startsWith("/")){let t=e.slice(1);return t.endsWith("/")?t.slice(0,-1):t}return e})(e);return r?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:t};function inferAutoPublicPath(e){return e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")}function generateSnapshotFromManifest(e){var t,r,n;let o,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{remotes:a={},overrides:s={},version:l}=i,u=()=>"publicPath"in e.metaData?"auto"===e.metaData.publicPath&&l?inferAutoPublicPath(l):e.metaData.publicPath:e.metaData.getPublicPath,c=Object.keys(s),f={};Object.keys(a).length||(f=(null==(n=e.remotes)?void 0:n.reduce((e,t)=>{let r,n=t.federationContainerName;return r=c.includes(n)?s[n]:"version"in t?t.version:t.entry,e[n]={matchedVersion:r},e},{}))||{}),Object.keys(a).forEach(e=>f[e]={matchedVersion:c.includes(e)?s[e]:a[e]});let{remoteEntry:{path:h,name:d,type:p},types:m={path:"",name:"",zip:"",api:""},buildInfo:{buildVersion:g},globalName:y,ssrRemoteEntry:_}=e.metaData,{exposes:E}=e,S={version:l||"",buildVersion:g,globalName:y,remoteEntry:simpleJoinRemoteEntry(h,d),remoteEntryType:p,remoteTypes:simpleJoinRemoteEntry(m.path,m.name),remoteTypesZip:m.zip||"",remoteTypesAPI:m.api||"",remotesInfo:f,shared:null==e?void 0:e.shared.map(e=>({assets:e.assets,sharedName:e.name,version:e.version,usedExports:e.referenceExports||[]})),modules:null==E?void 0:E.map(e=>({moduleName:e.name,modulePath:e.path,assets:e.assets}))};if(null==(t=e.metaData)?void 0:t.prefetchInterface){let t=e.metaData.prefetchInterface;S={...S,prefetchInterface:t}}if(null==(r=e.metaData)?void 0:r.prefetchEntry){let{path:t,name:r,type:n}=e.metaData.prefetchEntry;S={...S,prefetchEntry:simpleJoinRemoteEntry(t,r),prefetchEntryType:n}}return o="publicPath"in e.metaData?{...S,publicPath:u(),ssrPublicPath:e.metaData.ssrPublicPath}:{...S,getPublicPath:u()},_&&(o.ssrRemoteEntry=simpleJoinRemoteEntry(_.path,_.name),o.ssrRemoteEntryType=_.type||"commonjs-module"),o}function isManifestProvider(e){return!!("remoteEntry"in e&&e.remoteEntry.includes(MANIFEST_EXT))}function getManifestFileName(e){if(!e)return{statsFileName:StatsFileName,manifestFileName:ManifestFileName};let t="boolean"==typeof e?"":e.filePath||"",r="boolean"==typeof e?"":e.fileName||"",n=".json",o=e=>e.endsWith(n)?e:`${e}${n}`,i=(e,t)=>e.replace(n,`${t}${n}`),a=r?o(r):ManifestFileName;return{statsFileName:simpleJoinRemoteEntry(t,r?i(a,"-stats"):StatsFileName),manifestFileName:simpleJoinRemoteEntry(t,a)}}let PREFIX="[ Module Federation ]",DEFAULT_DELEGATE=console,LOGGER_STACK_SKIP_TOKENS=["logger.ts","logger.js","captureStackTrace","Logger.emit","Logger.log","Logger.info","Logger.warn","Logger.error","Logger.debug"];function captureStackTrace(){try{let e=Error().stack;if(!e)return;let[,...t]=e.split("\n"),r=t.filter(e=>!LOGGER_STACK_SKIP_TOKENS.some(t=>e.includes(t)));if(!r.length)return;let n=r.slice(0,5).join("\n");return`Stack trace: -${n}`}catch{return}}class Logger{setPrefix(e){this.prefix=e}setDelegate(e){this.delegate=e??DEFAULT_DELEGATE}emit(e,t){let r=this.delegate,n=isDebugMode()?captureStackTrace():void 0,o=n?[...t,n]:t,i=(()=>{switch(e){case"log":return["log","info"];case"info":return["info","log"];case"warn":return["warn","info","log"];case"error":return["error","warn","log"];default:return["debug","log"]}})();for(let e of i){let t=r[e];if("function"==typeof t)return void t.call(r,this.prefix,...o)}for(let e of i){let t=DEFAULT_DELEGATE[e];if("function"==typeof t)return void t.call(DEFAULT_DELEGATE,this.prefix,...o)}}log(){for(var e=arguments.length,t=Array(e),r=0;r{r&&("async"===e||"defer"===e?r[e]=n[e]:r.getAttribute(e)||r.setAttribute(e,n[e]))})}let a=async(n,o)=>{clearTimeout(t);let i=()=>{(null==o?void 0:o.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(o)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(r&&(r.onerror=null,r.onload=null,safeWrapper(()=>{let{needDeleteScript:t=!0}=e;t&&(null==r?void 0:r.parentNode)&&r.parentNode.removeChild(r)}),n&&"function"==typeof n)){let e=n(o);if(e instanceof Promise){let t=await e;return i(),t}return i(),e}i()};return r.onerror=a.bind(null,r.onerror),r.onload=a.bind(null,r.onload),t=setTimeout(()=>{a(null,Error(`Remote script "${e.url}" time-outed.`))},o),{script:r,needAttach:n}}function createLink(e){let t=null,r=!0,n=document.getElementsByTagName("link");for(let o=0;o{t&&!t.getAttribute(e)&&t.setAttribute(e,n[e])})}let o=(r,n)=>{let o=()=>{(null==n?void 0:n.type)==="error"?(null==e?void 0:e.onErrorCallback)&&(null==e||e.onErrorCallback(n)):(null==e?void 0:e.cb)&&(null==e||e.cb())};if(t&&(t.onerror=null,t.onload=null,safeWrapper(()=>{let{needDeleteLink:r=!0}=e;r&&(null==t?void 0:t.parentNode)&&t.parentNode.removeChild(t)}),r)){let e=r(n);return o(),e}o()};return t.onerror=o.bind(null,t.onerror),t.onload=o.bind(null,t.onload),{link:t,needAttach:r}}function loadScript(e,t){let{attrs:r={},createScriptHook:n}=t;return new Promise((t,o)=>{let{script:i,needAttach:a}=createScript({url:e,cb:t,onErrorCallback:o,attrs:{fetchpriority:"high",...r},createScriptHook:n,needDeleteScript:!0});a&&document.head.appendChild(i)})}let sdkImportCache=new Map;function importNodeModule(e){if(!e)throw Error("import specifier is required");if(sdkImportCache.has(e))return sdkImportCache.get(e);let t=Function("name","return import(name)")(e).then(e=>e).catch(t=>{throw console.error(`Error importing module ${e}:`,t),sdkImportCache.delete(e),t});return sdkImportCache.set(e,t),t}let loadNodeFetch=async()=>{let e=await importNodeModule("node-fetch");return e.default||e},lazyLoaderHookFetch=async(e,t,r)=>{let n=(e,t)=>r.lifecycle.fetch.emit(e,t),o=await n(e,t||{});return o&&o instanceof Response?o:("u"{let urlObj;if(null==loaderHook?void 0:loaderHook.createScriptHook){let hookResult=loaderHook.createScriptHook(url);hookResult&&"object"==typeof hookResult&&"url"in hookResult&&(url=hookResult.url)}try{urlObj=new URL(url)}catch(e){console.error("Error constructing URL:",e),cb(Error(`Invalid URL: ${e}`));return}let getFetch=async()=>(null==loaderHook?void 0:loaderHook.fetch)?(e,t)=>lazyLoaderHookFetch(e,t,loaderHook):"u"{try{var _vm_constants;let res=await f(urlObj.href),data=await res.text(),[path,vm]=await Promise.all([importNodeModule("path"),importNodeModule("vm")]),scriptContext={exports:{},module:{exports:{}}},urlDirname=urlObj.pathname.split("/").slice(0,-1).join("/"),filename=path.basename(urlObj.pathname),script=new vm.Script(`(function(exports, module, require, __dirname, __filename) {${data} -})`,{filename,importModuleDynamically:(null==(_vm_constants=vm.constants)?void 0:_vm_constants.USE_MAIN_CONTEXT_DEFAULT_LOADER)??importNodeModule});script.runInThisContext()(scriptContext.exports,scriptContext.module,eval("require"),urlDirname,filename);let exportedInterface=scriptContext.module.exports||scriptContext.exports;if(attrs&&exportedInterface&&attrs.globalName){let container=exportedInterface[attrs.globalName]||exportedInterface;cb(void 0,container);return}cb(void 0,exportedInterface)}catch(e){cb(e instanceof Error?e:Error(`Script execution error: ${e}`))}};getFetch().then(async e=>{if((null==attrs?void 0:attrs.type)==="esm"||(null==attrs?void 0:attrs.type)==="module")return loadModule(urlObj.href,{fetch:e,vm:await importNodeModule("vm")}).then(async e=>{await e.evaluate(),cb(void 0,e.namespace)}).catch(e=>{cb(e instanceof Error?e:Error(`Script execution error: ${e}`))});handleScriptFetch(e,urlObj)}).catch(e=>{cb(e)})}:(e,t,r,n)=>{t(Error("createScriptNode is disabled in non-Node.js environment"))},loadScriptNode="u"new Promise((r,n)=>{createScriptNode(e,(e,o)=>{if(e)n(e);else{var i,a;let e=(null==t||null==(i=t.attrs)?void 0:i.globalName)||`__FEDERATION_${null==t||null==(a=t.attrs)?void 0:a.name}:custom__`;r(globalThis[e]=o)}},t.attrs,t.loaderHook)}):(e,t)=>{throw Error("loadScriptNode is disabled in non-Node.js environment")},esmModuleCache=new Map;async function loadModule(e,t){if(esmModuleCache.has(e))return esmModuleCache.get(e);let{fetch:r,vm:n}=t,o=await r(e),i=await o.text(),a=new n.SourceTextModule(i,{importModuleDynamically:async(r,n)=>loadModule(new URL(r,e).href,t)});return esmModuleCache.set(e,a),await a.link(async r=>{let n=new URL(r,e).href;return await loadModule(n,t)}),a}function normalizeOptions(e,t,r){return function(n){if(!1===n)return!1;if(void 0===n)if(e)return t;else return!1;if(!0===n)return t;if(n&&"object"==typeof n)return{...t,...n};throw Error(`Unexpected type for \`${r}\`, expect boolean/undefined/object, got: ${typeof n}`)}}let createModuleFederationConfig=e=>e;exports.BROWSER_LOG_KEY=BROWSER_LOG_KEY,exports.ENCODE_NAME_PREFIX=ENCODE_NAME_PREFIX,exports.EncodedNameTransformMap=EncodedNameTransformMap,exports.FederationModuleManifest=FederationModuleManifest,exports.MANIFEST_EXT=MANIFEST_EXT,exports.MFModuleType=MFModuleType,exports.MFPrefetchCommon=MFPrefetchCommon,exports.MODULE_DEVTOOL_IDENTIFIER=MODULE_DEVTOOL_IDENTIFIER,exports.ManifestFileName=ManifestFileName,exports.NameTransformMap=NameTransformMap,exports.NameTransformSymbol=NameTransformSymbol,exports.SEPARATOR=SEPARATOR,exports.StatsFileName=StatsFileName,exports.TEMP_DIR=TEMP_DIR,exports.assert=assert,exports.bindLoggerToCompiler=bindLoggerToCompiler,exports.composeKeyWithSeparator=composeKeyWithSeparator,exports.containerPlugin=ContainerPlugin,exports.containerReferencePlugin=ContainerReferencePlugin,exports.createInfrastructureLogger=createInfrastructureLogger,exports.createLink=createLink,exports.createLogger=createLogger,exports.createModuleFederationConfig=createModuleFederationConfig,exports.createScript=createScript,exports.createScriptNode=createScriptNode,exports.decodeName=decodeName,exports.encodeName=encodeName,exports.error=error,exports.generateExposeFilename=generateExposeFilename,exports.generateShareFilename=generateShareFilename,exports.generateSnapshotFromManifest=generateSnapshotFromManifest,exports.getManifestFileName=getManifestFileName,exports.getProcessEnv=getProcessEnv,exports.getResourceUrl=getResourceUrl,exports.inferAutoPublicPath=inferAutoPublicPath,exports.infrastructureLogger=infrastructureLogger,exports.isBrowserEnv=isBrowserEnv,exports.isDebugMode=isDebugMode,exports.isManifestProvider=isManifestProvider,exports.isReactNativeEnv=isReactNativeEnv,exports.isRequiredVersion=isRequiredVersion,exports.isStaticResourcesEqual=isStaticResourcesEqual,exports.loadScript=loadScript,exports.loadScriptNode=loadScriptNode,exports.logger=logger,exports.moduleFederationPlugin=ModuleFederationPlugin,exports.normalizeOptions=normalizeOptions,exports.parseEntry=parseEntry,exports.safeToString=safeToString,exports.safeWrapper=safeWrapper,exports.sharePlugin=SharePlugin,exports.simpleJoinRemoteEntry=simpleJoinRemoteEntry,exports.warn=warn},478(e,t){t.FEDERATION_SUPPORTED_TYPES=["script"]},834(e,t,r){var n=r(448),o=r(478),i=r(720),a=r(583);function s(e){e.S&&!e.federation.hasAttachShareScopeMap&&e.federation.instance&&e.federation.instance.shareScopeMap&&(e.S=e.federation.instance.shareScopeMap,e.federation.hasAttachShareScopeMap=!0)}function l(e){let{webpackRequire:t,moduleToHandlerMapping:r}=e,{consumesLoadingData:n,initializeSharingData:o}=t,{sharedFallback:i,bundlerRuntime:a,libraryType:s}=t.federation;if(n&&!n._updated){let{moduleIdToConsumeDataMapping:o={},initialConsumes:l=[],chunkMapping:u={}}=n;if(Object.entries(o).forEach(e=>{let[n,o]=e;r[n]||(r[n]={getter:i?null==a?void 0:a.getSharedFallbackGetter({shareKey:o.shareKey,factory:o.fallback,webpackRequire:t,libraryType:s}):o.fallback,treeShakingGetter:i?o.fallback:void 0,shareInfo:{shareConfig:{requiredVersion:o.requiredVersion,strictVersion:o.strictVersion,singleton:o.singleton,eager:o.eager,layer:o.layer},scope:Array.isArray(o.shareScope)?o.shareScope:[o.shareScope||"default"],treeShaking:i?{get:o.fallback,mode:o.treeShakingMode}:void 0},shareKey:o.shareKey})}),"initialConsumes"in e){let{initialConsumes:t=[]}=e;l.forEach(e=>{t.includes(e)||t.push(e)})}if("chunkMapping"in e){let{chunkMapping:t={}}=e;Object.entries(u).forEach(e=>{let[r,n]=e;t[r]||(t[r]=[]),n.forEach(e=>{t[r].includes(e)||t[r].push(e)})})}n._updated=1}if(o&&!o._updated){let{federation:e}=t;if(!e.instance||!o.scopeToSharingDataMapping)return;let r={};for(let[e,t]of Object.entries(o.scopeToSharingDataMapping))for(let n of t)if("object"==typeof n&&null!==n){let{name:t,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={requiredVersion:`^${o}`},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[e],shareConfig:c,get:i};r[t]?r[t].push(h):r[t]=[h]}e.instance.registerShared(r),o._updated=1}}function u(e){var t,r,n,o,i;let{webpackRequire:a,idToExternalAndNameMapping:s={},idToRemoteMap:l={},chunkMapping:u={}}=e,{remotesLoadingData:c}=a,f=null==(n=a.federation)||null==(r=n.bundlerRuntimeOptions)||null==(t=r.remotes)?void 0:t.remoteInfos;if(!c||c._updated||!f)return;let{chunkMapping:h,moduleIdToRemoteDataMapping:d}=c;if(h&&d){for(let[e,t]of Object.entries(d))if(s[e]||(s[e]=[t.shareScope,t.name,t.externalModuleId]),!l[e]&&f[t.remoteName]){let r=f[t.remoteName];(o=l)[i=e]||(o[i]=[]),r.forEach(t=>{l[e].includes(t)||l[e].push(t)})}u&&Object.entries(h).forEach(e=>{let[t,r]=e;u[t]||(u[t]=[]),r.forEach(e=>{u[t].includes(e)||u[t].push(e)})}),c._updated=1}}function c(e,t){let r=e.federation.usedExports;if(r)return r[t]}function f(e){let{moduleId:t,moduleToHandlerMapping:r,webpackRequire:n,asyncLoad:o}=e,i=n.federation.instance;if(!i)throw Error("Federation instance not found!");let{shareKey:a,shareInfo:s}=r[t];try{let e=c(n,a),t={...s};if(e&&(t.treeShaking={usedExports:e,useIn:[i.options.name]}),o)return i.loadShare(a,{customShareInfo:t});return i.loadShareSync(a,{customShareInfo:t})}catch(e){throw console.error('loadShareSync failed! The function should not be called unless you set "eager:true". If you do not set it, and encounter this issue, you can check whether an async boundary is implemented.'),console.error("The original error message is as follows: "),e}}e.exports={runtime:function(e){var t=Object.create(null);if(e)for(var r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}(n),instance:void 0,initOptions:void 0,bundlerRuntime:{remotes:function(e){u(e);let{chunkId:t,promises:r,webpackRequire:n,chunkMapping:a,idToExternalAndNameMapping:l,idToRemoteMap:c}=e;s(n),n.o(a,t)&&a[t].forEach(e=>{let t=n.R;t||(t=[]);let a=l[e],s=c[e]||[];if(t.indexOf(a)>=0)return;if(t.push(a),a.p)return r.push(a.p);let u=t=>{t||(t=Error("Container missing")),"string"==typeof t.message&&(t.message+=` -while loading "${a[1]}" from ${a[2]}`),n.m[e]=()=>{throw t},a.p=0},f=(e,t,n,o,i,s)=>{try{let l=e(t,n);if(!l||!l.then)return i(l,o,s);{let e=l.then(e=>i(e,o),u);if(!s)return e;r.push(a.p=e)}}catch(e){u(e)}},h=(e,t,r)=>e?f(n.I,a[0],0,e,d,r):u();var d=(e,r,n)=>f(r.get,a[1],t,0,p,n),p=t=>{a.p=1,n.m[e]=e=>{e.exports=t()}};let m=()=>{try{let e=i.decodeName(s[0].name,i.ENCODE_NAME_PREFIX)+a[1].slice(1),t=n.federation.instance,r=()=>n.federation.instance.loadRemote(e,{loadFactory:!1,from:"build"});if("version-first"===t.options.shareStrategy)return Promise.all(t.sharedHandler.initializeSharing(a[0])).then(()=>r());return r()}catch(e){u(e)}};1===s.length&&o.FEDERATION_SUPPORTED_TYPES.includes(s[0].externalType)&&s[0].name?f(m,a[2],0,0,p,1):f(n,a[2],0,0,h,1)})},consumes:function(e){l(e);let{chunkId:t,promises:r,installedModules:n,webpackRequire:o,chunkMapping:i,moduleToHandlerMapping:a}=e;s(o),o.o(i,t)&&i[t].forEach(e=>{if(o.o(n,e))return r.push(n[e]);let t=t=>{n[e]=0,o.m[e]=r=>{var n;delete o.c[e];let i=t(),{shareInfo:s}=a[e];if((null==s||null==(n=s.shareConfig)?void 0:n.layer)&&i&&"object"==typeof i)try{i.hasOwnProperty("layer")&&void 0!==i.layer||(i.layer=s.shareConfig.layer)}catch(e){}r.exports=i}},i=t=>{delete n[e],o.m[e]=r=>{throw delete o.c[e],t}};try{let s=o.federation.instance;if(!s)throw Error("Federation instance not found!");let{shareKey:l,getter:u,shareInfo:f,treeShakingGetter:h}=a[e],d=c(o,l),p={...f};d&&(p.treeShaking={usedExports:d,useIn:[s.options.name]});let m=s.loadShare(l,{customShareInfo:p}).then(e=>!1===e?(null==h?void 0:h())||u():e);m.then?r.push(n[e]=m.then(t).catch(i)):t(m)}catch(e){i(e)}})},I:function(e){let{shareScopeName:t,webpackRequire:r,initPromises:n,initTokens:i,initScope:a}=e,l=Array.isArray(t)?t:[t];var u=[],c=function(e){a||(a=[]);let l=r.federation.instance;var u=i[e];if(u||(u=i[e]={from:l.name}),a.indexOf(u)>=0)return;a.push(u);let c=n[e];if(c)return c;var f=e=>"u">typeof console&&console.warn&&console.warn(e),h=n=>{var o=e=>f("Initialization of sharing external failed: "+e);try{var i=r(n);if(!i)return;var s=n=>n&&n.init&&n.init(r.S[e],a,{shareScopeMap:r.S||{},shareScopeKeys:t});if(i.then)return d.push(i.then(s,o));var l=s(i);if(l&&"boolean"!=typeof l&&l.then)return d.push(l.catch(o))}catch(e){o(e)}};let d=l.initializeSharing(e,{strategy:l.options.shareStrategy,initScope:a,from:"build"});s(r);let p=r.federation.bundlerRuntimeOptions.remotes;return(p&&Object.keys(p.idToRemoteMap).forEach(e=>{let t=p.idToRemoteMap[e],r=p.idToExternalAndNameMapping[e][2];if(t.length>1)h(r);else if(1===t.length){let e=t[0];o.FEDERATION_SUPPORTED_TYPES.includes(e.externalType)||h(r)}}),d.length)?n[e]=Promise.all(d).then(()=>n[e]=!0):n[e]=!0};return l.forEach(e=>{u.push(c(e))}),Promise.all(u).then(()=>!0)},S:{},installInitialConsumes:function(e){l(e);let{moduleToHandlerMapping:t,webpackRequire:r,installedModules:n,initialConsumes:o,asyncLoad:i}=e,a=[];o.forEach(e=>{let n=()=>f({moduleId:e,moduleToHandlerMapping:t,webpackRequire:r,asyncLoad:i});a.push([e,n])});let s=(e,o)=>{r.m[e]=i=>{var a;n[e]=0,delete r.c[e];let s=o();if("function"!=typeof s)throw Error(`Shared module is not available for eager consumption: ${e}`);let l=s(),{shareInfo:u}=t[e];if((null==u||null==(a=u.shareConfig)?void 0:a.layer)&&l&&"object"==typeof l)try{l.hasOwnProperty("layer")&&void 0!==l.layer||(l.layer=u.shareConfig.layer)}catch(e){}i.exports=l}};if(i)return Promise.all(a.map(async e=>{let[t,r]=e,n=await r();s(t,()=>n)}));a.forEach(e=>{let[t,r]=e;s(t,r)})},initContainerEntry:function(e){let{webpackRequire:t,shareScope:r,initScope:n,shareScopeKey:o,remoteEntryInitOptions:i}=e;if(!t.S||!t.federation||!t.federation.instance||!t.federation.initOptions)return;let a=t.federation.instance;a.initOptions({name:t.federation.initOptions.name,remotes:[],...i});let s=null==i?void 0:i.shareScopeKeys,l=null==i?void 0:i.shareScopeMap;if(o&&"string"!=typeof o)o.forEach(e=>{if(!s||!l)return void a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}});l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})});else{let e=o||"default";Array.isArray(s)?s.forEach(e=>{l[e]||(l[e]={});let t=l[e];a.initShareScopeMap(e,t,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}):a.initShareScopeMap(e,r,{hostShareScopeMap:(null==i?void 0:i.shareScopeMap)||{}})}return(t.federation.attachShareScopeMap&&t.federation.attachShareScopeMap(t),"function"==typeof t.federation.prefetch&&t.federation.prefetch(),Array.isArray(o))?t.federation.initOptions.shared?t.I(o,n):Promise.all(o.map(e=>t.I(e,n))).then(()=>!0):t.I(o||"default",n)},init:function(e){var t;let{webpackRequire:o}=e,{initOptions:i,runtime:s,sharedFallback:l,bundlerRuntime:u,libraryType:c}=o.federation;if(!i)throw Error("initOptions is required!");let f=function(){return{name:"tree-shake-plugin",beforeInit(e){let{userOptions:t,origin:i,options:s}=e,f=t.version||s.version;if(!l)return e;let h=t.shared||{},d=[];Object.keys(h).forEach(e=>{(Array.isArray(h[e])?h[e]:[h[e]]).forEach(t=>{if(d.push([e,t]),"get"in t){var r;(r=t).treeShaking||(r.treeShaking={}),t.treeShaking.get=t.get,t.get=u.getSharedFallbackGetter({shareKey:e,factory:t.get,webpackRequire:o,libraryType:c,version:t.version})}})});let p=a.global.getGlobalSnapshotInfoByModuleInfo({name:i.name,version:f});if(!p||!("shared"in p))return e;Object.keys(s.shared||{}).forEach(e=>{s.shared[e].forEach(t=>{d.push([e,t])})});let m=(e,t)=>{let o=p.shared.find(t=>t.sharedName===e);if(!o)return;let{treeShaking:a}=t;if(!a)return;let{secondarySharedTreeShakingName:s,secondarySharedTreeShakingEntry:l,treeShakingStatus:u}=o;a.status!==u&&(a.status=u,l&&c&&s&&(a.get=async()=>{let e=await n.getRemoteEntry({origin:i,remoteInfo:{name:s,entry:l,type:c,entryGlobalName:s,shareScope:"default"}});return await e.init(i,r.federation.bundlerRuntime),e.get()}))};return d.forEach(e=>{let[t,r]=e;m(t,r)}),e}}};return(t=i).plugins||(t.plugins=[]),i.plugins.push(f()),s.init(i)},getSharedFallbackGetter:e=>{let{shareKey:t,factory:r,version:n,webpackRequire:o,libraryType:i="global"}=e,{runtime:a,instance:s,bundlerRuntime:l,sharedFallback:u}=o.federation;if(!u)return r;let c=u[t];if(!c)return r;let f=n?c.find(e=>e[1]===n):c[0];if(!f)throw Error(`No fallback item found for shareKey: ${t} and version: ${n}`);return()=>a.getRemoteEntry({origin:o.federation.instance,remoteInfo:{name:f[2],entry:`${o.p}${f[0]}`,type:i,entryGlobalName:f[2],shareScope:"default"}}).then(e=>{if(!e)throw Error(`Failed to load fallback entry for shareKey: ${t} and version: ${n}`);return e.init(o.federation.instance,l).then(()=>e.get())})}},attachShareScopeMap:s,bundlerRuntimeOptions:{}}},395(e,t,r){var n,o,i,a,s,l,u,c,f,h,d,p,m=r(834),g=r.n(m);let y=[{plugin:r(728).default,params:void 0}].filter(e=>{let{plugin:t}=e;return t}).map(e=>{let{plugin:t,params:r}=e;return t(r)}),_={},E="mf_remote",S="version-first";if((r.initializeSharingData||r.initializeExposesData)&&r.federation){let e=(e,t,r)=>{e&&e[t]&&(e[t]=r)},t=(e,t,r)=>{var n,o,i,a,s,l;let u=r();Array.isArray(u)?(null!=(i=(n=e)[o=t])||(n[o]=[]),e[t].push(...u)):"object"==typeof u&&null!==u&&(null!=(l=(a=e)[s=t])||(a[s]={}),Object.assign(e[t],u))},m=(e,t,r)=>{var n,o,i;null!=(i=(n=e)[o=t])||(n[o]=r())},v=null!=(n=null==(l=r.remotesLoadingData)?void 0:l.chunkMapping)?n:{},b=null!=(o=null==(u=r.remotesLoadingData)?void 0:u.moduleIdToRemoteDataMapping)?o:{},R=null!=(i=null==(c=r.initializeSharingData)?void 0:c.scopeToSharingDataMapping)?i:{},I=null!=(a=null==(f=r.consumesLoadingData)?void 0:f.chunkMapping)?a:{},N=null!=(s=null==(h=r.consumesLoadingData)?void 0:h.moduleIdToConsumeDataMapping)?s:{},$={},M=[],w={},T=null==(d=r.initializeExposesData)?void 0:d.shareScope;for(let e in g())r.federation[e]=g()[e];m(r.federation,"consumesLoadingModuleToHandlerMapping",()=>{let e={};for(let[t,r]of Object.entries(N))e[t]={getter:r.fallback,shareInfo:{shareConfig:{fixedDependencies:!1,requiredVersion:r.requiredVersion,strictVersion:r.strictVersion,singleton:r.singleton,eager:r.eager},scope:[r.shareScope]},shareKey:r.shareKey};return e}),m(r.federation,"initOptions",()=>({})),m(r.federation.initOptions,"name",()=>E),m(r.federation.initOptions,"shareStrategy",()=>S),m(r.federation.initOptions,"shared",()=>{let e={};for(let[t,r]of Object.entries(R))for(let n of r)if("object"==typeof n&&null!==n){let{name:r,version:o,factory:i,eager:a,singleton:s,requiredVersion:l,strictVersion:u}=n,c={},f=function(e){return void 0!==e};f(s)&&(c.singleton=s),f(l)&&(c.requiredVersion=l),f(a)&&(c.eager=a),f(u)&&(c.strictVersion=u);let h={version:o,scope:[t],shareConfig:c,get:i};e[r]?e[r].push(h):e[r]=[h]}return e}),t(r.federation.initOptions,"remotes",()=>Object.values(_).flat().filter(e=>"script"===e.externalType)),t(r.federation.initOptions,"plugins",()=>y),m(r.federation,"bundlerRuntimeOptions",()=>({})),m(r.federation.bundlerRuntimeOptions,"remotes",()=>({})),m(r.federation.bundlerRuntimeOptions.remotes,"chunkMapping",()=>v),m(r.federation.bundlerRuntimeOptions.remotes,"remoteInfos",()=>_),m(r.federation.bundlerRuntimeOptions.remotes,"idToExternalAndNameMapping",()=>{let e={};for(let[t,r]of Object.entries(b))e[t]=[r.shareScope,r.name,r.externalModuleId,r.remoteName];return e}),m(r.federation.bundlerRuntimeOptions.remotes,"webpackRequire",()=>r),t(r.federation.bundlerRuntimeOptions.remotes,"idToRemoteMap",()=>{let e={};for(let[t,r]of Object.entries(b)){let n=_[r.remoteName];n&&(e[t]=n)}return e}),e(r,"S",r.federation.bundlerRuntime.S),r.federation.attachShareScopeMap&&r.federation.attachShareScopeMap(r),e(r.f,"remotes",(e,t)=>r.federation.bundlerRuntime.remotes({chunkId:e,promises:t,chunkMapping:v,idToExternalAndNameMapping:r.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:r.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:r})),e(r.f,"consumes",(e,t)=>r.federation.bundlerRuntime.consumes({chunkId:e,promises:t,chunkMapping:I,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping,installedModules:$,webpackRequire:r})),e(r,"I",(e,t)=>r.federation.bundlerRuntime.I({shareScopeName:e,initScope:t,initPromises:M,initTokens:w,webpackRequire:r})),e(r,"initContainer",(e,t,n)=>r.federation.bundlerRuntime.initContainerEntry({shareScope:e,initScope:t,remoteEntryInitOptions:n,shareScopeKey:T,webpackRequire:r})),e(r,"getContainer",(e,t)=>{var n=r.initializeExposesData.moduleMap;return r.R=t,t=Object.prototype.hasOwnProperty.call(n,e)?n[e]():Promise.resolve().then(()=>{throw Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t}),r.federation.instance=r.federation.runtime.init(r.federation.initOptions),(null==(p=r.consumesLoadingData)?void 0:p.initialConsumes)&&r.federation.bundlerRuntime.installInitialConsumes({webpackRequire:r,installedModules:$,initialConsumes:r.consumesLoadingData.initialConsumes,moduleToHandlerMapping:r.federation.consumesLoadingModuleToHandlerMapping})}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.c=__webpack_module_cache__,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,["783","36"],()=>__webpack_require__(697));return __webpack_require__.O(e)},(()=>{__webpack_require__.federation||(__webpack_require__.federation={chunkMatcher:function(e){return 36!=e},rootOutputDir:"../../"})})(),(()=>{__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t}})(),(()=>{__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,r)=>(__webpack_require__.f[r](e,t),t),[]))})(),(()=>{__webpack_require__.u=e=>"static/js/lib-react.5ec9d9fd.js"})(),(()=>{__webpack_require__.miniCssF=e=>""+e+".css"})(),(()=>{__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e=[];__webpack_require__.O=(t,r,n,o)=>{if(r){o=o||0;for(var i=e.length;i>0&&e[i-1][2]>o;i--)e[i]=e[i-1];e[i]=[r,n,o];return}for(var a=1/0,i=0;i=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](r[l]))?r.splice(l--,1):(s=!1,o{__webpack_require__.p="http://localhost:3001/ssr/"})(),(()=>{__webpack_require__.S={},__webpack_require__.initializeSharingData={scopeToSharingDataMapping:{default:[{name:"react-dom",version:"19.2.3",factory:()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(()=>()=>__webpack_require__(397)),eager:0,singleton:1,requiredVersion:"*"},{name:"react",version:"19.2.3",factory:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822)),eager:0,singleton:1,requiredVersion:"*"}]},uniqueName:"tanstack-react-example-start-module-federation-rsbuild-remote"},__webpack_require__.I=__webpack_require__.I||function(){throw Error("should have __webpack_require__.I")}})(),(()=>{var e=__webpack_require__.x;__webpack_require__.x=()=>Promise.all([__webpack_require__.e("783"),__webpack_require__.e("36")]).then(e)})(),(()=>{__webpack_require__.consumesLoadingData={chunkMapping:{410:["495"],36:["119"]},moduleIdToConsumeDataMapping:{495:{shareScope:"default",shareKey:"react-dom",import:"react-dom",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(397))},119:{shareScope:"default",shareKey:"react",import:"react",requiredVersion:"*",strictVersion:!1,singleton:!0,eager:!1,fallback:()=>__webpack_require__.e("783").then(()=>()=>__webpack_require__(822))}},initialConsumes:["119","495"]},__webpack_require__.f.consumes=__webpack_require__.f.consumes||function(){throw Error("should have __webpack_require__.f.consumes")}})(),(()=>{var e={36:0,410:0};__webpack_require__.O.readFileVm=t=>0===e[t];var t=t=>{var r=t.modules,n=t.ids,o=t.runtime;for(var i in r)__webpack_require__.o(r,i)&&(__webpack_require__.m[i]=r[i]);o&&o(__webpack_require__);for(var a=0;a{var e=__webpack_require__.x,t=!1;__webpack_require__.x=function(){if(t||(t=!0,__webpack_require__(395)),"function"==typeof e)return e();console.warn("[MF] Invalid prevStartup")}})();var __webpack_exports__=__webpack_require__.x();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js deleted file mode 100644 index 837d529a8ce..00000000000 --- a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see lib-react.5ec9d9fd.js.LICENSE.txt */ -"use strict";exports.ids=["783"],exports.modules={523(e,t,n){var r,l=n(236),a=n(119),o=n(495);function i(e){var t="https://react.dev/errors/"+e;if(1A||(e.current=R[A],R[A]=null,A--)}function U(e,t){R[++A]=e.current,e.current=t}var $=M(null),j=M(null),H=M(null),V=M(null);function B(e,t){switch(U(H,t),U(j,e),U($,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?sy(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=sv(t=sy(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}I($),U($,e)}function Q(){I($),I(j),I(H)}function W(e){null!==e.memoizedState&&U(V,e);var t=$.current,n=sv(t,e.type);t!==n&&(U(j,e),U($,n))}function q(e){j.current===e&&(I($),I(j)),V.current===e&&(I(V),ce._currentValue=F)}function K(e){if(void 0===tA)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);tA=t&&t[1]||"",tM=-1)":-1l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{Y=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?K(n):""}function X(e){try{var t="",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return K(e.type);case 16:return K("Lazy");case 13:return e.child!==t&&null!==t?K("Suspense Fallback"):K("Suspense");case 19:return K("SuspenseList");case 0:case 15:return G(e.type,!1);case 11:return G(e.type.render,!1);case 1:return G(e.type,!0);case 31:return K("Activity");default:return""}}(e,n),n=e,e=e.return;while(e);return t}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}var Z=Object.prototype.hasOwnProperty,J=l.unstable_scheduleCallback,ee=l.unstable_cancelCallback,et=l.unstable_shouldYield,en=l.unstable_requestPaint,er=l.unstable_now,el=l.unstable_getCurrentPriorityLevel,ea=l.unstable_ImmediatePriority,eo=l.unstable_UserBlockingPriority,ei=l.unstable_NormalPriority,eu=l.unstable_LowPriority,es=l.unstable_IdlePriority,ec=l.log,ef=l.unstable_setDisableYieldValue,ed=null,ep=null;function em(e){if("function"==typeof ec&&ef(e),ep&&"function"==typeof ep.setStrictMode)try{ep.setStrictMode(ed,e)}catch(e){}}var eh=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(eg(e)/ey|0)|0},eg=Math.log,ey=Math.LN2,ev=256,eb=262144,ek=4194304;function ew(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function eS(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=0x7ffffff&r;return 0!==i?0!=(r=i&~a)?l=ew(r):0!=(o&=i)?l=ew(o):n||0!=(n=i&~e)&&(l=ew(n)):0!=(i=r&~a)?l=ew(i):0!==o?l=ew(o):n||0!=(n=r&~e)&&(l=ew(n)),0===l?0:0!==t&&t!==l&&0==(t&a)&&((a=l&-l)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:l}function ex(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function eE(){var e=ek;return 0==(0x3c00000&(ek<<=1))&&(ek=4194304),e}function eC(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ez(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function e_(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-eh(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|261930&n}function eP(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-eh(n),l=1<typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var te=/[\n"\\]/g;function tt(e){return e.replace(te,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function tn(e,t,n,r,l,a,o,i){e.name="",null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o?e.type=o:e.removeAttribute("type"),null!=t?"number"===o?(0===t&&""===e.value||e.value!=t)&&(e.value=""+e8(t)):e.value!==""+e8(t)&&(e.value=""+e8(t)):"submit"!==o&&"reset"!==o||e.removeAttribute("value"),null!=t?tl(e,o,e8(t)):null!=n?tl(e,o,e8(n)):null!=r&&e.removeAttribute("value"),null==l&&null!=a&&(e.defaultChecked=!!a),null!=l&&(e.checked=l&&"function"!=typeof l&&"symbol"!=typeof l),null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.name=""+e8(i):e.removeAttribute("name")}function tr(e,t,n,r,l,a,o,i){if(null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a&&(e.type=a),null!=t||null!=n){if(("submit"===a||"reset"===a)&&null==t)return void e5(e);n=null!=n?""+e8(n):"",t=null!=t?""+e8(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:l)&&"symbol"!=typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.name=o),e5(e)}function tl(e,t,n){"number"===t&&e7(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function ta(e,t,n,r){if(e=e.options,t){t={};for(var l=0;ltypeof window&&void 0!==window.document&&void 0!==window.document.createElement,tz=!1;if(tC)try{var t_={};Object.defineProperty(t_,"passive",{get:function(){tz=!0}}),window.addEventListener("test",t_,t_),window.removeEventListener("test",t_,t_)}catch(e){tz=!1}var tP=null,tN=null,tT=null;function tL(){if(tT)return tT;var e,t,n=tN,r=n.length,l="value"in tP?tP.value:tP.textContent,a=l.length;for(e=0;e=nt),nl=!1;function na(e,t){switch(e){case"keyup":return -1!==t7.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function no(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var ni=!1,nu={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ns(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!nu[e.type]:"textarea"===t}function nc(e,t,n,r){tb?tk?tk.push(r):tk=[r]:tb=r,0<(t=sr(t,"onChange")).length&&(n=new tH("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var nf=null,nd=null;function np(e){u8(e,0)}function nm(e){if(e9(eW(e)))return e}function nh(e,t){if("change"===e)return t}var ng=!1;if(tC){if(tC){var ny="oninput"in document;if(!ny){var nv=document.createElement("div");nv.setAttribute("oninput","return;"),ny="function"==typeof nv.oninput}r=ny}else r=!1;ng=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=n_(r)}}function nN(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nT(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var nL=tC&&"documentMode"in document&&11>=document.documentMode,nO=null,nD=null,nF=null,nR=!1;function nA(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nR||null==nO||nO!==e7(r)||(r="selectionStart"in(r=nO)&&nT(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nF&&nz(nF,r)||(nF=r,0<(r=sr(nD,"onSelect")).length&&(t=new tH("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=nO)))}function nM(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var nI={animationend:nM("Animation","AnimationEnd"),animationiteration:nM("Animation","AnimationIteration"),animationstart:nM("Animation","AnimationStart"),transitionrun:nM("Transition","TransitionRun"),transitionstart:nM("Transition","TransitionStart"),transitioncancel:nM("Transition","TransitionCancel"),transitionend:nM("Transition","TransitionEnd")},nU={},n$={};function nj(e){if(nU[e])return nU[e];if(!nI[e])return e;var t,n=nI[e];for(t in n)if(n.hasOwnProperty(t)&&t in n$)return nU[e]=n[t];return e}tC&&(n$=document.createElement("div").style,"AnimationEvent"in window||(delete nI.animationend.animation,delete nI.animationiteration.animation,delete nI.animationstart.animation),"TransitionEvent"in window||delete nI.transitionend.transition);var nH=nj("animationend"),nV=nj("animationiteration"),nB=nj("animationstart"),nQ=nj("transitionrun"),nW=nj("transitionstart"),nq=nj("transitioncancel"),nK=nj("transitionend"),nY=new Map,nG="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function nX(e,t){nY.set(e,t),eX(t,[e])}nG.push("scrollEnd");var nZ="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=o,l-=o,rv=1<<32-eh(t)+l|n<typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},rZ=l.unstable_scheduleCallback,rJ=l.unstable_NormalPriority,r0={$$typeof:k,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function r1(){return{controller:new rX,data:new Map,refCount:0}}function r2(e){e.refCount--,0===e.refCount&&rZ(rJ,function(){e.controller.abort()})}var r3=null,r4=0,r8=0,r6=null;function r5(){if(0==--r4&&null!==r3){null!==r6&&(r6.status="fulfilled");var e=r3;r3=null,r8=0,r6=null;for(var t=0;tm?(h=f,f=null):h=f.sibling;var g=p(l,f,i[m],u);if(null===g){null===f&&(f=h);break}e&&f&&null===g.alternate&&t(l,f),o=a(g,o,m),null===c?s=g:c.sibling=g,c=g,f=h}if(m===i.length)return n(l,f),r_&&rk(l,m),s;if(null===f){for(;mh?(g=m,m=null):g=m.sibling;var b=p(l,m,v.value,s);if(null===b){null===m&&(m=g);break}e&&m&&null===b.alternate&&t(l,m),o=a(b,o,h),null===f?c=b:f.sibling=b,f=b,m=g}if(v.done)return n(l,m),r_&&rk(l,h),c;if(null===m){for(;!v.done;h++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,h),null===f?c=v:f.sibling=v,f=v);return r_&&rk(l,h),c}for(m=r(m);!v.done;h++,v=u.next())null!==(v=y(m,l,h,v.value,s))&&(e&&null!==v.alternate&&m.delete(null===v.key?h:v.key),o=a(v,o,h),null===f?c=v:f.sibling=v,f=v);return e&&m.forEach(function(e){return t(l,e)}),r_&&rk(l,h),c}(s,c,f=b.call(f),v)}if("function"==typeof f.then)return u(s,c,lh(f),v);if(f.$$typeof===k)return u(s,c,rY(s,f),v);ly(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(n(s,c.sibling),(v=l(c,f)).return=s):(n(s,c),(v=ro(f,s.mode,v)).return=s),o(s=v)):n(s,c)}(u,s,c,f);return lp=null,v}catch(e){if(e===lr||e===la)throw e;var b=re(29,e,null,u.mode);return b.lanes=f,b.return=u,b}finally{}}}var lb=lv(!0),lk=lv(!1),lw=!1;function lS(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function lx(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function lE(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function lC(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&iA)){var l=r.pending;return null===l?t.next=t:(t.next=l.next,l.next=t),r.pending=t,t=n5(e),n6(e,null,n),t}return n3(e,r,t,n),n5(e)}function lz(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194048&n))){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,eP(e,n)}}function l_(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var l=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?l=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?l=a=t:a=a.next=t}else l=a=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var lP=!1;function lN(){if(lP){var e=r6;if(null!==e)throw e}}function lT(e,t,n,r){lP=!1;var l=e.updateQueue;lw=!1;var a=l.firstBaseUpdate,o=l.lastBaseUpdate,i=l.shared.pending;if(null!==i){l.shared.pending=null;var u=i,s=u.next;u.next=null,null===o?a=s:o.next=s,o=u;var c=e.alternate;null!==c&&(i=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===i?c.firstBaseUpdate=s:i.next=s,c.lastBaseUpdate=u)}if(null!==a){var f=l.baseState;for(o=0,c=s=u=null,i=a;;){var p=-0x20000001&i.lane,m=p!==i.lane;if(m?(iU&p)===p:(r&p)===p){0!==p&&p===r8&&(lP=!0),null!==c&&(c=c.next={lane:0,tag:i.tag,payload:i.payload,callback:null,next:null});e:{var h=e,g=i;switch(p=t,g.tag){case 1:if("function"==typeof(h=g.payload)){f=h.call(n,f,p);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p="function"==typeof(h=g.payload)?h.call(n,f,p):h))break e;f=d({},f,p);break e;case 2:lw=!0}}null!==(p=i.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=l.callbacks)?l.callbacks=[p]:m.push(p))}else m={lane:p,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===c?(s=c=m,u=f):c=c.next=m,o|=p;if(null===(i=i.next))if(null===(i=l.shared.pending))break;else i=(m=i).next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}null===c&&(u=f),l.baseState=u,l.firstBaseUpdate=s,l.lastBaseUpdate=c,null===a&&(l.shared.lanes=0),iq|=o,e.lanes=o,e.memoizedState=f}}function lL(e,t){if("function"!=typeof e)throw Error(i(191,e));e.call(t)}function lO(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var o=O.T,i={};O.T=i,a5(e,!1,t,n);try{var u=l(),s=O.S;if(null!==s&&s(i,u),null!==u&&"object"==typeof u&&"function"==typeof u.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},u.then(function(){f.status="fulfilled",f.value=r;for(var e=0;e title"))),sd(a,r,n),a[eR]=e,eK(a),r=a;break e;case"link":var o=s2("link","href",l).get(r+(n.href||""));if(o){for(var u=0;ui)break;var c=u.transferSize,f=u.initiatorType;c&&sp(f)&&(o+=c*((u=u.responseEnd)s8?50:800)+h);return m.unsuspend=e,function(){m.unsuspend=null,clearTimeout(t),clearTimeout(n)}}:null)){i7=a,e.cancelPendingCommit=g(uC.bind(null,e,t,a,n,r,l,o,i,u,c,f,null,d,p)),uc(e,a,o,!s);return}}uC(e,t,a,n,r,l,o,i,u)}function uc(e,t,n,r){t&=~iY,t&=~iK,e.suspendedLanes|=t,e.pingedLanes&=~t,r&&(e.warmLanes|=t),r=e.expirationTimes;for(var l=t;0<\/script>",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[eR]=t,a[eA]=r;e:for(o=t.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(t.stateNode=a,sd(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break;case"img":r=!0;break;default:r=!1}r&&oq(t)}}return oZ(t),oK(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&oq(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(e=H.current,rF(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=rC))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eR]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||ss(e.nodeValue,n)))||rL(t,!0)}else(e=sg(e).createTextNode(r))[eR]=t,t.stateNode=e}return oZ(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rF(t),null!==n){if(null===e){if(!r)throw Error(i(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(i(557));e[eR]=t}else rR(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oZ(t),e=!1}else n=rA(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return lB(t),t;return lB(t),null}if(0!=(128&t.flags))throw Error(i(558))}return oZ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rF(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(i(317));l[eR]=t}else rR(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oZ(t),l=!1}else l=rA(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&t.flags)return lB(t),t;return lB(t),null}}if(lB(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),oG(t,t.updateQueue),oZ(t),null;case 4:return Q(),null===e&&u7(t.stateNode.containerInfo),oZ(t),null;case 10:return rH(t.type),oZ(t),null;case 19:if(I(lQ),null===(r=t.memoizedState))return oZ(t),null;if(l=0!=(128&t.flags),null===(a=r.rendering))if(l)oX(r,!1);else{if(0!==iW||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=lW(e))){for(t.flags|=128,oX(r,!1),t.updateQueue=e=a.updateQueue,oG(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return U(lQ,1&lQ.current|2),r_&&rk(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&er()>i3&&(t.flags|=128,l=!0,oX(r,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=lW(a))){if(t.flags|=128,l=!0,t.updateQueue=e=e.updateQueue,oG(t,e),oX(r,!0),null===r.tail&&"hidden"===r.tailMode&&!a.alternate&&!r_)return oZ(t),null}else 2*er()-r.renderingStartTime>i3&&0x20000000!==n&&(t.flags|=128,l=!0,oX(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}if(null!==r.tail)return e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=er(),e.sibling=null,n=lQ.current,U(lQ,l?1&n|2:1&n),r_&&rk(t,r.treeForkCount),e;return oZ(t),null;case 22:case 23:return lB(t),lM(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(oZ(t),6&t.subtreeFlags&&(t.flags|=8192)):oZ(t),null!==(n=t.updateQueue)&&oG(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&I(r7),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rH(r0),oZ(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}(t.alternate,t,iQ);if(null!==n){iI=n;return}if(null!==(t=t.sibling)){iI=t;return}iI=t=e}while(null!==t);0===iW&&(iW=5)}function uE(e,t){do{var n=function(e,t){switch(rx(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rH(r0),Q(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return q(t),null;case 31:if(null!==t.memoizedState){if(lB(t),null===t.alternate)throw Error(i(340));rR()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(lB(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));rR()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return I(lQ),null;case 4:return Q(),null;case 10:return rH(t.type),null;case 22:case 23:return lB(t),lM(),null!==e&&I(r7),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rH(r0),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,iI=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){iI=e;return}iI=e=n}while(null!==e);iW=6,iI=null}function uC(e,t,n,r,l,a,o,u,s){e.cancelPendingCommit=null;do uT();while(0!==i6);if(0!=(6&iA))throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(!function(e,t,n,r,l,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(n=o&~n;0g&&(o=g,g=h,h=o);var y=nP(i,h),v=nP(i,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,O.T=null,n=ut,ut=null;var a=i5,o=i7;if(i6=0,i9=i5=null,i7=0,0!=(6&iA))throw Error(i(331));var u=iA;if(iA|=4,iO(a.current),iC(a,a.current,o,n),iA=u,uW(0,!1),ep&&"function"==typeof ep.onPostCommitFiberRoot)try{ep.onPostCommitFiberRoot(ed,a)}catch(e){}return!0}finally{D.p=l,O.T=r,uN(e,t)}}function uO(e,t,n){t=rc(n,t),t=oh(e.stateNode,t,2),null!==(e=lC(e,t,2))&&(ez(e,2),uQ(e))}function uD(e,t,n){if(3===e.tag)uO(e,e,n);else for(;null!==t;){if(3===t.tag){uO(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===i8||!i8.has(r))){e=rc(n,e),null!==(r=lC(t,n=og(2),2))&&(oy(n,r,t,e),ez(r,2),uQ(r));break}}t=t.return}}function uF(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new iR;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(iB=!0,l.add(n),e=uR.bind(null,e,t,n),t.then(e,e))}function uR(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,iM===e&&(iU&n)===n&&(4===iW||3===iW&&(0x3c00000&iU)===iU&&300>er()-i1?0==(2&iA)&&up(e,0):iY|=n,iX===iU&&(iX=0)),uQ(e)}function uA(e,t){0===t&&(t=eE()),null!==(e=n8(e,t))&&(ez(e,t),uQ(e))}function uM(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),uA(e,n)}function uI(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),uA(e,n)}var uU=null,u$=null,uj=!1,uH=!1,uV=!1,uB=0;function uQ(e){e!==u$&&null===e.next&&(null===u$?uU=u$=e:u$=u$.next=e),uH=!0,uj||(uj=!0,sE(function(){0!=(6&iA)?J(ea,uq):uK()}))}function uW(e,t){if(!uV&&uH){uV=!0;do for(var n=!1,r=uU;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000095&(a=(1<<31-eh(42|e)+1)-1&(l&~(o&~i)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,uX(r,a))}else a=iU,0==(3&(a=eS(r,r===iM?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ex(r,a)||(n=!0,uX(r,a));r=r.next}while(n);uV=!1}}function uq(){uK()}function uK(){uH=uj=!1;var e,t=0;0===uB||((e=window.event)&&"popstate"===e.type?e===sk||(sk=e,0):(sk=null,1))||(t=uB);for(var n=er(),r=null,l=uU;null!==l;){var a=l.next,o=uY(l,n);0===o?(l.next=null,null===r?uU=a:r.next=a,null===a&&(u$=r)):(r=l,(0!==t||0!=(3&o))&&(uH=!0)),l=a}0!==i6&&5!==i6||uW(t,!1),0!==uB&&(uB=0)}function uY(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title"):null)}function s4(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var s8=0;function s6(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages)){if(this.stylesheets)s9(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var s5=null;function s9(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,s5=new Map,t.forEach(s7,e),s5=null,s6.call(e))}function s7(e,t){if(!(4&t.state.loading)){var n=s5.get(e);if(n)var r=n.get(null);else{n=new Map,s5.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;atypeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cM=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cM.isDisabled&&cM.supportsFiber)try{ed=cM.inject({bundleType:0,version:"19.2.3",rendererPackageName:"react-dom",currentDispatcherRef:O,reconcilerVersion:"19.2.3"}),ep=cM}catch(e){}}t.createRoot=function(e,t){if(!(n=e)||1!==n.nodeType&&9!==n.nodeType&&11!==n.nodeType)throw Error(i(299));var n,r,l,a,o,u,s,c,f=!1,d="",p=oc,m=of,h=od;return null!=t&&(!0===t.unstable_strictMode&&(f=!0),void 0!==t.identifierPrefix&&(d=t.identifierPrefix),void 0!==t.onUncaughtError&&(p=t.onUncaughtError),void 0!==t.onCaughtError&&(m=t.onCaughtError),void 0!==t.onRecoverableError&&(h=t.onRecoverableError)),r=e,l=1,a=!1,o=null,u=0,s=f,c=null,r=new ct(r,l,a,d,p,m,h,cD,null),l=1,!0===s&&(l|=24),s=re(3,null,null,l),r.current=s,s.stateNode=r,l=r1(),l.refCount++,r.pooledCache=l,l.refCount++,s.memoizedState={element:null,isDehydrated:a,cache:l},lS(s),t=r,e[eM]=t.current,u7(e),new cF(t)}},617(e,t,n){var r=n(119);function l(e){var t="https://react.dev/errors/"+e;if(1typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(523)},397(e,t,n){!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(617)},28(e,t){var n=Symbol.for("react.transitional.element");function r(e,t,r){var l=null;if(void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),"key"in t)for(var a in r={},t)"key"!==a&&(r[a]=t[a]);else r=t;return{$$typeof:n,type:e,key:l,ref:void 0!==(t=r.ref)?t:null,props:r}}Symbol.for("react.fragment"),t.jsx=r,t.jsxs=r},239(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),u=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),m=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,y={};function v(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}function b(){}function k(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=v.prototype;var w=k.prototype=new b;w.constructor=k,g(w,v.prototype),w.isPureReactComponent=!0;var S=Array.isArray;function x(){}var E={H:null,A:null,T:null,S:null},C=Object.prototype.hasOwnProperty;function z(e,t,r){var l=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==l?l:null,props:r}}function _(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var P=/\/+/g;function N(e,t){var n,r;return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36)}function T(e,t,l){if(null==e)return e;var a=[],o=0;return!function e(t,l,a,o,i){var u,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var p=!1;if(null===t)p=!0;else switch(f){case"bigint":case"string":case"number":p=!0;break;case"object":switch(t.$$typeof){case n:case r:p=!0;break;case d:return e((p=t._init)(t._payload),l,a,o,i)}}if(p)return i=i(t),p=""===o?"."+N(t,0):o,S(i)?(a="",null!=p&&(a=p.replace(P,"$&/")+"/"),e(i,l,a,"",function(e){return e})):null!=i&&(_(i)&&(u=i,s=a+(null==i.key||t&&t.key===i.key?"":(""+i.key).replace(P,"$&/")+"/")+p,i=z(u.type,s,u.props)),l.push(i)),1;p=0;var h=""===o?".":o+":";if(S(t))for(var g=0;g>>1,l=e[r];if(0>>1;ra(u,n))sa(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else if(sa(c,n))e[r]=c,e[s]=n,r=s;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,i=performance;t.unstable_now=function(){return i.now()}}else{var u=Date,s=u.now();t.unstable_now=function(){return u.now()-s}}var c=[],f=[],d=1,p=null,m=3,h=!1,g=!1,y=!1,v=!1,b="function"==typeof setTimeout?setTimeout:null,k="function"==typeof clearTimeout?clearTimeout:null,w="u">typeof setImmediate?setImmediate:null;function S(e){for(var t=r(f);null!==t;){if(null===t.callback)l(f);else if(t.startTime<=e)l(f),t.sortIndex=t.expirationTime,n(c,t);else break;t=r(f)}}function x(e){if(y=!1,S(e),!g)if(null!==r(c))g=!0,E||(E=!0,o());else{var t=r(f);null!==t&&O(x,t.startTime-e)}}var E=!1,C=-1,z=5,_=-1;function P(){return!!v||!(t.unstable_now()-_e&&P());){var i=p.callback;if("function"==typeof i){p.callback=null,m=p.priorityLevel;var u=i(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof u){p.callback=u,S(e),n=!0;break t}p===r(c)&&l(c),S(e)}else l(c);p=r(c)}if(null!==p)n=!0;else{var s=r(f);null!==s&&O(x,s.startTime-e),n=!1}}break e}finally{p=null,m=a,h=!1}}}finally{n?o():E=!1}}}if("function"==typeof w)o=function(){w(N)};else if("u">typeof MessageChannel){var T=new MessageChannel,L=T.port2;T.port1.onmessage=N,o=function(){L.postMessage(null)}}else o=function(){b(N,0)};function O(e,n){C=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125i?(e.sortIndex=a,n(f,e),null===r(c)&&e===r(f)&&(y?(k(C),C=-1):y=!0,O(x,a-i))):(e.sortIndex=u,n(c,e),g||h||(g=!0,E||(E=!0,o()))),e},t.unstable_shouldYield=P,t.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},236(e,t,n){e.exports=n(55)}}; \ No newline at end of file diff --git a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt b/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt deleted file mode 100644 index 20abecd8d5b..00000000000 --- a/examples/react/start-module-federation-rsbuild-remote/ssr/static/js/lib-react.5ec9d9fd.js.LICENSE.txt +++ /dev/null @@ -1,49 +0,0 @@ -/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @license React - * scheduler.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ \ No newline at end of file From 92a0c88327ed4ceb4d3c13a297cf7c25589634ea Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 10 Feb 2026 23:06:07 +0000 Subject: [PATCH 020/102] Add MF mode matrix coverage and dynamic route registration Co-authored-by: Zack Jackson --- .../package.json | 5 +- .../playwright.config.ts | 2 + .../rsbuild.config.ts | 34 ++++++-- .../src/env.d.ts | 19 +++++ .../src/routeTree.gen.ts | 69 ++++++++++++++++- .../src/router.tsx | 23 +++++- .../src/routes/api/federated-data.ts | 12 +++ .../src/routes/index.tsx | 25 +++++- .../src/routes/selective-client-only.tsx | 14 ++++ .../src/routes/server-fn-mf.tsx | 25 ++++++ .../tests/module-federation.spec.ts | 77 ++++++++++++++++++- .../rsbuild.config.ts | 4 + .../src/routes.tsx | 27 +++++++ .../src/server-data.ts | 6 ++ .../README.md | 21 ++++- .../rsbuild.config.ts | 34 ++++++-- .../src/env.d.ts | 19 +++++ .../src/routeTree.gen.ts | 69 ++++++++++++++++- .../src/router.tsx | 23 +++++- .../src/routes/api/federated-data.ts | 12 +++ .../src/routes/index.tsx | 21 ++++- .../src/routes/selective-client-only.tsx | 14 ++++ .../src/routes/server-fn-mf.tsx | 25 ++++++ .../README.md | 2 + .../rsbuild.config.ts | 4 + .../src/routes.tsx | 25 ++++++ .../src/server-data.ts | 6 ++ .../src/rsbuild/prerender.ts | 15 +++- 28 files changed, 600 insertions(+), 32 deletions(-) create mode 100644 e2e/react-start/module-federation-rsbuild-host/src/routes/api/federated-data.ts create mode 100644 e2e/react-start/module-federation-rsbuild-host/src/routes/selective-client-only.tsx create mode 100644 e2e/react-start/module-federation-rsbuild-host/src/routes/server-fn-mf.tsx create mode 100644 e2e/react-start/module-federation-rsbuild-remote/src/routes.tsx create mode 100644 e2e/react-start/module-federation-rsbuild-remote/src/server-data.ts create mode 100644 examples/react/start-module-federation-rsbuild-host/src/routes/api/federated-data.ts create mode 100644 examples/react/start-module-federation-rsbuild-host/src/routes/selective-client-only.tsx create mode 100644 examples/react/start-module-federation-rsbuild-host/src/routes/server-fn-mf.tsx create mode 100644 examples/react/start-module-federation-rsbuild-remote/src/routes.tsx create mode 100644 examples/react/start-module-federation-rsbuild-remote/src/server-data.ts diff --git a/e2e/react-start/module-federation-rsbuild-host/package.json b/e2e/react-start/module-federation-rsbuild-host/package.json index d88f5be2286..15e8f8138d0 100644 --- a/e2e/react-start/module-federation-rsbuild-host/package.json +++ b/e2e/react-start/module-federation-rsbuild-host/package.json @@ -8,7 +8,10 @@ "build": "rsbuild build", "preview": "rsbuild preview", "start": "node server.js", - "test:e2e": "rm -rf dist; rm -rf port*.txt; playwright test --project=chromium" + "test:e2e:ssr": "rm -rf dist; rm -rf port*.txt; HOST_MODE=ssr playwright test --project=chromium", + "test:e2e:spa": "rm -rf dist; rm -rf port*.txt; HOST_MODE=spa playwright test --project=chromium", + "test:e2e:prerender": "rm -rf dist; rm -rf port*.txt; HOST_MODE=prerender playwright test --project=chromium", + "test:e2e": "pnpm test:e2e:ssr && pnpm test:e2e:spa && pnpm test:e2e:prerender" }, "dependencies": { "@tanstack/react-router": "workspace:^", diff --git a/e2e/react-start/module-federation-rsbuild-host/playwright.config.ts b/e2e/react-start/module-federation-rsbuild-host/playwright.config.ts index 5c7770a45ad..e24fdf3577a 100644 --- a/e2e/react-start/module-federation-rsbuild-host/playwright.config.ts +++ b/e2e/react-start/module-federation-rsbuild-host/playwright.config.ts @@ -4,6 +4,7 @@ import packageJson from './package.json' with { type: 'json' } const HOST_PORT = await getTestServerPort(packageJson.name) const REMOTE_PORT = await getTestServerPort(`${packageJson.name}-remote`) +const HOST_MODE = process.env.HOST_MODE || 'ssr' const baseURL = `http://localhost:${HOST_PORT}` export default defineConfig({ @@ -34,6 +35,7 @@ export default defineConfig({ env: { PORT: String(HOST_PORT), REMOTE_PORT: String(REMOTE_PORT), + HOST_MODE, }, timeout: 120_000, }, diff --git a/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts index cd766058224..74d35f63f91 100644 --- a/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts @@ -8,6 +8,10 @@ import { tanstackStart } from '@tanstack/react-start/plugin/rsbuild' const require = createRequire(import.meta.url) const remotePort = Number(process.env.REMOTE_PORT || 3001) const remoteOrigin = `http://localhost:${remotePort}` +const hostMode = process.env.HOST_MODE || 'ssr' +const isSpaMode = hostMode === 'spa' +const isPrerenderMode = hostMode === 'prerender' +const enableServerFederationRuntime = hostMode === 'ssr' const shared = { react: { singleton: true, @@ -18,6 +22,25 @@ const shared = { requiredVersion: false, }, } +const startConfig = isSpaMode + ? { + spa: { + enabled: true, + }, + } + : isPrerenderMode + ? { + prerender: { + enabled: true, + crawlLinks: false, + autoStaticPathsDiscovery: false, + }, + pages: [ + { path: '/' }, + { path: '/selective-client-only' }, + ], + } + : undefined export default defineConfig({ plugins: [ @@ -39,7 +62,7 @@ export default defineConfig({ environment: 'client', }, ), - ...tanstackStart(), + ...tanstackStart(startConfig), ], environments: { ssr: { @@ -56,12 +79,9 @@ export default defineConfig({ asyncStartup: true, }, remoteType: 'script', - library: { - type: 'commonjs-module', - }, - runtimePlugins: [ - require.resolve('@module-federation/node/runtimePlugin'), - ], + runtimePlugins: enableServerFederationRuntime + ? [require.resolve('@module-federation/node/runtimePlugin')] + : [], shared, }), ], diff --git a/e2e/react-start/module-federation-rsbuild-host/src/env.d.ts b/e2e/react-start/module-federation-rsbuild-host/src/env.d.ts index 63b8f9bcb96..644ee55d5cc 100644 --- a/e2e/react-start/module-federation-rsbuild-host/src/env.d.ts +++ b/e2e/react-start/module-federation-rsbuild-host/src/env.d.ts @@ -6,3 +6,22 @@ declare module 'mf_remote/message' { export function FederatedMessage(): ReactNode } + +declare module 'mf_remote/routes' { + import type { ComponentType } from 'react' + + export type RemoteRouteRegistration = { + id: string + path: string + component: ComponentType + } + + export const remoteRouteRegistrations: Array +} + +declare module 'mf_remote/server-data' { + export function getFederatedServerData(source: string): { + source: string + message: string + } +} diff --git a/e2e/react-start/module-federation-rsbuild-host/src/routeTree.gen.ts b/e2e/react-start/module-federation-rsbuild-host/src/routeTree.gen.ts index dceedffdc12..ba164346a39 100644 --- a/e2e/react-start/module-federation-rsbuild-host/src/routeTree.gen.ts +++ b/e2e/react-start/module-federation-rsbuild-host/src/routeTree.gen.ts @@ -9,38 +9,91 @@ // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. import { Route as rootRouteImport } from './routes/__root' +import { Route as ServerFnMfRouteImport } from './routes/server-fn-mf' +import { Route as SelectiveClientOnlyRouteImport } from './routes/selective-client-only' import { Route as IndexRouteImport } from './routes/index' +import { Route as ApiFederatedDataRouteImport } from './routes/api/federated-data' +const ServerFnMfRoute = ServerFnMfRouteImport.update({ + id: '/server-fn-mf', + path: '/server-fn-mf', + getParentRoute: () => rootRouteImport, +} as any) +const SelectiveClientOnlyRoute = SelectiveClientOnlyRouteImport.update({ + id: '/selective-client-only', + path: '/selective-client-only', + getParentRoute: () => rootRouteImport, +} as any) const IndexRoute = IndexRouteImport.update({ id: '/', path: '/', getParentRoute: () => rootRouteImport, } as any) +const ApiFederatedDataRoute = ApiFederatedDataRouteImport.update({ + id: '/api/federated-data', + path: '/api/federated-data', + getParentRoute: () => rootRouteImport, +} as any) export interface FileRoutesByFullPath { '/': typeof IndexRoute + '/selective-client-only': typeof SelectiveClientOnlyRoute + '/server-fn-mf': typeof ServerFnMfRoute + '/api/federated-data': typeof ApiFederatedDataRoute } export interface FileRoutesByTo { '/': typeof IndexRoute + '/selective-client-only': typeof SelectiveClientOnlyRoute + '/server-fn-mf': typeof ServerFnMfRoute + '/api/federated-data': typeof ApiFederatedDataRoute } export interface FileRoutesById { __root__: typeof rootRouteImport '/': typeof IndexRoute + '/selective-client-only': typeof SelectiveClientOnlyRoute + '/server-fn-mf': typeof ServerFnMfRoute + '/api/federated-data': typeof ApiFederatedDataRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' + fullPaths: + | '/' + | '/selective-client-only' + | '/server-fn-mf' + | '/api/federated-data' fileRoutesByTo: FileRoutesByTo - to: '/' - id: '__root__' | '/' + to: '/' | '/selective-client-only' | '/server-fn-mf' | '/api/federated-data' + id: + | '__root__' + | '/' + | '/selective-client-only' + | '/server-fn-mf' + | '/api/federated-data' fileRoutesById: FileRoutesById } export interface RootRouteChildren { IndexRoute: typeof IndexRoute + SelectiveClientOnlyRoute: typeof SelectiveClientOnlyRoute + ServerFnMfRoute: typeof ServerFnMfRoute + ApiFederatedDataRoute: typeof ApiFederatedDataRoute } declare module '@tanstack/react-router' { interface FileRoutesByPath { + '/server-fn-mf': { + id: '/server-fn-mf' + path: '/server-fn-mf' + fullPath: '/server-fn-mf' + preLoaderRoute: typeof ServerFnMfRouteImport + parentRoute: typeof rootRouteImport + } + '/selective-client-only': { + id: '/selective-client-only' + path: '/selective-client-only' + fullPath: '/selective-client-only' + preLoaderRoute: typeof SelectiveClientOnlyRouteImport + parentRoute: typeof rootRouteImport + } '/': { id: '/' path: '/' @@ -48,11 +101,21 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof IndexRouteImport parentRoute: typeof rootRouteImport } + '/api/federated-data': { + id: '/api/federated-data' + path: '/api/federated-data' + fullPath: '/api/federated-data' + preLoaderRoute: typeof ApiFederatedDataRouteImport + parentRoute: typeof rootRouteImport + } } } const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, + SelectiveClientOnlyRoute: SelectiveClientOnlyRoute, + ServerFnMfRoute: ServerFnMfRoute, + ApiFederatedDataRoute: ApiFederatedDataRoute, } export const routeTree = rootRouteImport ._addFileChildren(rootRouteChildren) diff --git a/e2e/react-start/module-federation-rsbuild-host/src/router.tsx b/e2e/react-start/module-federation-rsbuild-host/src/router.tsx index 0f689ec2ec9..5c435cf75fd 100644 --- a/e2e/react-start/module-federation-rsbuild-host/src/router.tsx +++ b/e2e/react-start/module-federation-rsbuild-host/src/router.tsx @@ -1,5 +1,24 @@ -import { createRouter } from '@tanstack/react-router' -import { routeTree } from './routeTree.gen' +import { createRoute, createRouter } from '@tanstack/react-router' +import { routeTree as fileRouteTree } from './routeTree.gen' + +const shouldLoadRemoteRouteRegistrations = + typeof window !== 'undefined' || process.env.HOST_MODE === 'ssr' + +const remoteRouteRegistrations = shouldLoadRemoteRouteRegistrations + ? (await import('mf_remote/routes')).remoteRouteRegistrations + : [] + +const dynamicRemoteRoutes = remoteRouteRegistrations.map((registration) => + createRoute({ + getParentRoute: () => fileRouteTree, + path: registration.path, + component: registration.component, + }), +) + +const routeTree = fileRouteTree.addChildren( + [...(fileRouteTree.children ?? []), ...dynamicRemoteRoutes] as any, +) export function getRouter() { return createRouter({ diff --git a/e2e/react-start/module-federation-rsbuild-host/src/routes/api/federated-data.ts b/e2e/react-start/module-federation-rsbuild-host/src/routes/api/federated-data.ts new file mode 100644 index 00000000000..b6e6a238e88 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/src/routes/api/federated-data.ts @@ -0,0 +1,12 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/api/federated-data')({ + server: { + handlers: { + GET: async () => { + const { getFederatedServerData } = await import('mf_remote/server-data') + return Response.json(getFederatedServerData('server-route')) + }, + }, + }, +}) diff --git a/e2e/react-start/module-federation-rsbuild-host/src/routes/index.tsx b/e2e/react-start/module-federation-rsbuild-host/src/routes/index.tsx index 7e2b435ac6e..b03c6655871 100644 --- a/e2e/react-start/module-federation-rsbuild-host/src/routes/index.tsx +++ b/e2e/react-start/module-federation-rsbuild-host/src/routes/index.tsx @@ -1,5 +1,17 @@ import { createFileRoute } from '@tanstack/react-router' -import { FederatedMessage } from 'mf_remote/message' + +const shouldLoadFederatedMessage = + typeof window !== 'undefined' || process.env.HOST_MODE === 'ssr' + +const FederatedMessage = shouldLoadFederatedMessage + ? (await import('mf_remote/message')).FederatedMessage + : function FederatedMessagePlaceholder() { + return ( +

+ Federated message renders on the client in this mode. +

+ ) + } export const Route = createFileRoute('/')({ component: Home, @@ -12,6 +24,17 @@ function Home() {

This page renders a module from the remote app.

+
diff --git a/e2e/react-start/module-federation-rsbuild-host/src/routes/selective-client-only.tsx b/e2e/react-start/module-federation-rsbuild-host/src/routes/selective-client-only.tsx new file mode 100644 index 00000000000..0b5f8d48886 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/src/routes/selective-client-only.tsx @@ -0,0 +1,14 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/selective-client-only')({ + ssr: false, + component: SelectiveClientOnlyRoute, +}) + +function SelectiveClientOnlyRoute() { + return ( +
+

Selective remote route content

+
+ ) +} diff --git a/e2e/react-start/module-federation-rsbuild-host/src/routes/server-fn-mf.tsx b/e2e/react-start/module-federation-rsbuild-host/src/routes/server-fn-mf.tsx new file mode 100644 index 00000000000..0c3b3484e63 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/src/routes/server-fn-mf.tsx @@ -0,0 +1,25 @@ +import { createFileRoute } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/react-start' + +const getRemoteServerData = createServerFn({ method: 'GET' }).handler( + async () => { + const { getFederatedServerData } = await import('mf_remote/server-data') + return getFederatedServerData('server-function') + }, +) + +export const Route = createFileRoute('/server-fn-mf')({ + loader: () => getRemoteServerData(), + component: ServerFunctionFederationRoute, +}) + +function ServerFunctionFederationRoute() { + const response = Route.useLoaderData() + + return ( +
+

Server function federation route

+
{JSON.stringify(response)}
+
+ ) +} diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index c235236b794..b16d5c49285 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -4,13 +4,18 @@ import packageJson from '../package.json' with { type: 'json' } const REMOTE_PORT = await getTestServerPort(`${packageJson.name}-remote`) const REMOTE_ORIGIN = `http://localhost:${REMOTE_PORT}` +const HOST_MODE = process.env.HOST_MODE || 'ssr' test('renders the remote module on the SSR response', async ({ page }) => { const response = await page.request.get('/') expect(response.ok()).toBeTruthy() const html = await response.text() - expect(html).toContain('Federated message from remote') + if (HOST_MODE === 'ssr') { + expect(html).toContain('Federated message from remote') + } else { + expect(html).not.toContain('Federated message from remote') + } }) test('loads remote entry over http at runtime', async ({ @@ -37,7 +42,73 @@ test('loads remote entry over http at runtime', async ({ ), ).toBeTruthy() - await expect(page.getByTestId('federated-button')).toContainText( - 'Federated message from remote', + if (HOST_MODE === 'ssr') { + await expect(page.getByTestId('federated-button')).toContainText( + 'Federated message from remote', + ) + } else { + await expect(page.getByTestId('federated-placeholder')).toContainText( + 'Federated message renders on the client in this mode.', + ) + } +}) + +test('dynamically registers and renders remote routes', async ({ page }) => { + test.skip( + HOST_MODE !== 'ssr', + 'Dynamic route registration is validated in SSR mode.', + ) + + const response = await page.request.get('/dynamic-remote') + expect(response.ok()).toBeTruthy() + const html = await response.text() + expect(html).toContain('Dynamic remote page from federation') + + await page.goto('/dynamic-remote') + await expect(page.getByTestId('dynamic-remote-heading')).toContainText( + 'Dynamic remote page from federation', + ) +}) + +test('does not SSR selective client-only route content', async ({ page }) => { + test.skip( + HOST_MODE === 'prerender', + 'Prerender mode serves selective route via static redirect semantics.', + ) + + const response = await page.request.get('/selective-client-only') + expect(response.ok()).toBeTruthy() + + const html = await response.text() + expect(html).not.toContain('Selective remote route content') +}) + +test('loads federated server route data', async ({ page }) => { + test.skip( + HOST_MODE !== 'ssr', + 'Server federation runtime is only enabled for SSR mode.', + ) + + const response = await page.request.get('/api/federated-data') + expect(response.ok()).toBeTruthy() + const json = await response.json() + expect(json).toEqual({ + source: 'server-route', + message: 'Federated server data from remote', + }) +}) + +test('loads federated server function data', async ({ page }) => { + test.skip( + HOST_MODE !== 'ssr', + 'Server federation runtime is only enabled for SSR mode.', + ) + + await page.goto('/server-fn-mf') + await expect(page.getByTestId('server-fn-result')).toContainText( + '"source":"server-function"', + ) + await expect(page.getByTestId('server-fn-result')).toContainText( + '"message":"Federated server data from remote"', ) }) diff --git a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts index 6685f8ede38..edf85adc63f 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts @@ -16,6 +16,8 @@ export default defineConfig({ filename: 'remoteEntry.js', exposes: { './message': './src/message.tsx', + './routes': './src/routes.tsx', + './server-data': './src/server-data.ts', }, runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { @@ -67,6 +69,8 @@ export default defineConfig({ dts: false, exposes: { './message': './src/message.tsx', + './routes': './src/routes.tsx', + './server-data': './src/server-data.ts', }, runtimePlugins: [ require.resolve('@module-federation/node/runtimePlugin'), diff --git a/e2e/react-start/module-federation-rsbuild-remote/src/routes.tsx b/e2e/react-start/module-federation-rsbuild-remote/src/routes.tsx new file mode 100644 index 00000000000..d0f8d8763c5 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/src/routes.tsx @@ -0,0 +1,27 @@ +import type { ComponentType } from 'react' +import { FederatedMessage } from './message' + +export type RemoteRouteRegistration = { + id: string + path: string + component: ComponentType +} + +function DynamicRemotePage() { + return ( +
+

+ Dynamic remote page from federation +

+ +
+ ) +} + +export const remoteRouteRegistrations: Array = [ + { + id: 'dynamic-remote', + path: 'dynamic-remote', + component: DynamicRemotePage, + }, +] diff --git a/e2e/react-start/module-federation-rsbuild-remote/src/server-data.ts b/e2e/react-start/module-federation-rsbuild-remote/src/server-data.ts new file mode 100644 index 00000000000..6e95c99cd9f --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/src/server-data.ts @@ -0,0 +1,6 @@ +export function getFederatedServerData(source: string) { + return { + source, + message: 'Federated server data from remote', + } +} diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 2d670a3fe5a..fe6339ea491 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -6,6 +6,13 @@ using: - `@module-federation/rsbuild-plugin` - `@module-federation/node/runtimePlugin` +It also demonstrates: + +- Dynamic route registration from a remote module (Option B) +- Selective SSR (`ssr: false`) on a federated route +- Federated server route and server function handlers +- Start mode matrix via `HOST_MODE`: `ssr`, `spa`, `prerender` + ## Run with the remote app 1. Start the remote app first: @@ -21,10 +28,22 @@ pnpm preview --port 3001 ```sh pnpm install -REMOTE_PORT=3001 pnpm build +HOST_MODE=ssr REMOTE_PORT=3001 pnpm build PORT=3000 pnpm start ``` 3. Open `http://localhost:3000`. The host renders the remote component during SSR and hydrates it on the client. + +## Try other Start modes + +```sh +# SPA mode +HOST_MODE=spa REMOTE_PORT=3001 pnpm build +PORT=3000 pnpm start + +# Static prerender mode +HOST_MODE=prerender REMOTE_PORT=3001 pnpm build +PORT=3000 pnpm start +``` diff --git a/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts index cd766058224..74d35f63f91 100644 --- a/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts @@ -8,6 +8,10 @@ import { tanstackStart } from '@tanstack/react-start/plugin/rsbuild' const require = createRequire(import.meta.url) const remotePort = Number(process.env.REMOTE_PORT || 3001) const remoteOrigin = `http://localhost:${remotePort}` +const hostMode = process.env.HOST_MODE || 'ssr' +const isSpaMode = hostMode === 'spa' +const isPrerenderMode = hostMode === 'prerender' +const enableServerFederationRuntime = hostMode === 'ssr' const shared = { react: { singleton: true, @@ -18,6 +22,25 @@ const shared = { requiredVersion: false, }, } +const startConfig = isSpaMode + ? { + spa: { + enabled: true, + }, + } + : isPrerenderMode + ? { + prerender: { + enabled: true, + crawlLinks: false, + autoStaticPathsDiscovery: false, + }, + pages: [ + { path: '/' }, + { path: '/selective-client-only' }, + ], + } + : undefined export default defineConfig({ plugins: [ @@ -39,7 +62,7 @@ export default defineConfig({ environment: 'client', }, ), - ...tanstackStart(), + ...tanstackStart(startConfig), ], environments: { ssr: { @@ -56,12 +79,9 @@ export default defineConfig({ asyncStartup: true, }, remoteType: 'script', - library: { - type: 'commonjs-module', - }, - runtimePlugins: [ - require.resolve('@module-federation/node/runtimePlugin'), - ], + runtimePlugins: enableServerFederationRuntime + ? [require.resolve('@module-federation/node/runtimePlugin')] + : [], shared, }), ], diff --git a/examples/react/start-module-federation-rsbuild-host/src/env.d.ts b/examples/react/start-module-federation-rsbuild-host/src/env.d.ts index 63b8f9bcb96..644ee55d5cc 100644 --- a/examples/react/start-module-federation-rsbuild-host/src/env.d.ts +++ b/examples/react/start-module-federation-rsbuild-host/src/env.d.ts @@ -6,3 +6,22 @@ declare module 'mf_remote/message' { export function FederatedMessage(): ReactNode } + +declare module 'mf_remote/routes' { + import type { ComponentType } from 'react' + + export type RemoteRouteRegistration = { + id: string + path: string + component: ComponentType + } + + export const remoteRouteRegistrations: Array +} + +declare module 'mf_remote/server-data' { + export function getFederatedServerData(source: string): { + source: string + message: string + } +} diff --git a/examples/react/start-module-federation-rsbuild-host/src/routeTree.gen.ts b/examples/react/start-module-federation-rsbuild-host/src/routeTree.gen.ts index dceedffdc12..ba164346a39 100644 --- a/examples/react/start-module-federation-rsbuild-host/src/routeTree.gen.ts +++ b/examples/react/start-module-federation-rsbuild-host/src/routeTree.gen.ts @@ -9,38 +9,91 @@ // Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified. import { Route as rootRouteImport } from './routes/__root' +import { Route as ServerFnMfRouteImport } from './routes/server-fn-mf' +import { Route as SelectiveClientOnlyRouteImport } from './routes/selective-client-only' import { Route as IndexRouteImport } from './routes/index' +import { Route as ApiFederatedDataRouteImport } from './routes/api/federated-data' +const ServerFnMfRoute = ServerFnMfRouteImport.update({ + id: '/server-fn-mf', + path: '/server-fn-mf', + getParentRoute: () => rootRouteImport, +} as any) +const SelectiveClientOnlyRoute = SelectiveClientOnlyRouteImport.update({ + id: '/selective-client-only', + path: '/selective-client-only', + getParentRoute: () => rootRouteImport, +} as any) const IndexRoute = IndexRouteImport.update({ id: '/', path: '/', getParentRoute: () => rootRouteImport, } as any) +const ApiFederatedDataRoute = ApiFederatedDataRouteImport.update({ + id: '/api/federated-data', + path: '/api/federated-data', + getParentRoute: () => rootRouteImport, +} as any) export interface FileRoutesByFullPath { '/': typeof IndexRoute + '/selective-client-only': typeof SelectiveClientOnlyRoute + '/server-fn-mf': typeof ServerFnMfRoute + '/api/federated-data': typeof ApiFederatedDataRoute } export interface FileRoutesByTo { '/': typeof IndexRoute + '/selective-client-only': typeof SelectiveClientOnlyRoute + '/server-fn-mf': typeof ServerFnMfRoute + '/api/federated-data': typeof ApiFederatedDataRoute } export interface FileRoutesById { __root__: typeof rootRouteImport '/': typeof IndexRoute + '/selective-client-only': typeof SelectiveClientOnlyRoute + '/server-fn-mf': typeof ServerFnMfRoute + '/api/federated-data': typeof ApiFederatedDataRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath - fullPaths: '/' + fullPaths: + | '/' + | '/selective-client-only' + | '/server-fn-mf' + | '/api/federated-data' fileRoutesByTo: FileRoutesByTo - to: '/' - id: '__root__' | '/' + to: '/' | '/selective-client-only' | '/server-fn-mf' | '/api/federated-data' + id: + | '__root__' + | '/' + | '/selective-client-only' + | '/server-fn-mf' + | '/api/federated-data' fileRoutesById: FileRoutesById } export interface RootRouteChildren { IndexRoute: typeof IndexRoute + SelectiveClientOnlyRoute: typeof SelectiveClientOnlyRoute + ServerFnMfRoute: typeof ServerFnMfRoute + ApiFederatedDataRoute: typeof ApiFederatedDataRoute } declare module '@tanstack/react-router' { interface FileRoutesByPath { + '/server-fn-mf': { + id: '/server-fn-mf' + path: '/server-fn-mf' + fullPath: '/server-fn-mf' + preLoaderRoute: typeof ServerFnMfRouteImport + parentRoute: typeof rootRouteImport + } + '/selective-client-only': { + id: '/selective-client-only' + path: '/selective-client-only' + fullPath: '/selective-client-only' + preLoaderRoute: typeof SelectiveClientOnlyRouteImport + parentRoute: typeof rootRouteImport + } '/': { id: '/' path: '/' @@ -48,11 +101,21 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof IndexRouteImport parentRoute: typeof rootRouteImport } + '/api/federated-data': { + id: '/api/federated-data' + path: '/api/federated-data' + fullPath: '/api/federated-data' + preLoaderRoute: typeof ApiFederatedDataRouteImport + parentRoute: typeof rootRouteImport + } } } const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, + SelectiveClientOnlyRoute: SelectiveClientOnlyRoute, + ServerFnMfRoute: ServerFnMfRoute, + ApiFederatedDataRoute: ApiFederatedDataRoute, } export const routeTree = rootRouteImport ._addFileChildren(rootRouteChildren) diff --git a/examples/react/start-module-federation-rsbuild-host/src/router.tsx b/examples/react/start-module-federation-rsbuild-host/src/router.tsx index 0f689ec2ec9..5c435cf75fd 100644 --- a/examples/react/start-module-federation-rsbuild-host/src/router.tsx +++ b/examples/react/start-module-federation-rsbuild-host/src/router.tsx @@ -1,5 +1,24 @@ -import { createRouter } from '@tanstack/react-router' -import { routeTree } from './routeTree.gen' +import { createRoute, createRouter } from '@tanstack/react-router' +import { routeTree as fileRouteTree } from './routeTree.gen' + +const shouldLoadRemoteRouteRegistrations = + typeof window !== 'undefined' || process.env.HOST_MODE === 'ssr' + +const remoteRouteRegistrations = shouldLoadRemoteRouteRegistrations + ? (await import('mf_remote/routes')).remoteRouteRegistrations + : [] + +const dynamicRemoteRoutes = remoteRouteRegistrations.map((registration) => + createRoute({ + getParentRoute: () => fileRouteTree, + path: registration.path, + component: registration.component, + }), +) + +const routeTree = fileRouteTree.addChildren( + [...(fileRouteTree.children ?? []), ...dynamicRemoteRoutes] as any, +) export function getRouter() { return createRouter({ diff --git a/examples/react/start-module-federation-rsbuild-host/src/routes/api/federated-data.ts b/examples/react/start-module-federation-rsbuild-host/src/routes/api/federated-data.ts new file mode 100644 index 00000000000..b6e6a238e88 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/src/routes/api/federated-data.ts @@ -0,0 +1,12 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/api/federated-data')({ + server: { + handlers: { + GET: async () => { + const { getFederatedServerData } = await import('mf_remote/server-data') + return Response.json(getFederatedServerData('server-route')) + }, + }, + }, +}) diff --git a/examples/react/start-module-federation-rsbuild-host/src/routes/index.tsx b/examples/react/start-module-federation-rsbuild-host/src/routes/index.tsx index c326ae57d69..b104fe8a9ef 100644 --- a/examples/react/start-module-federation-rsbuild-host/src/routes/index.tsx +++ b/examples/react/start-module-federation-rsbuild-host/src/routes/index.tsx @@ -1,5 +1,13 @@ import { createFileRoute } from '@tanstack/react-router' -import { FederatedMessage } from 'mf_remote/message' + +const shouldLoadFederatedMessage = + typeof window !== 'undefined' || process.env.HOST_MODE === 'ssr' + +const FederatedMessage = shouldLoadFederatedMessage + ? (await import('mf_remote/message')).FederatedMessage + : function FederatedMessagePlaceholder() { + return

Federated message renders on the client in this mode.

+ } export const Route = createFileRoute('/')({ component: Home, @@ -10,6 +18,17 @@ function Home() {

Host application

This page renders a module exposed by the remote application.

+
) diff --git a/examples/react/start-module-federation-rsbuild-host/src/routes/selective-client-only.tsx b/examples/react/start-module-federation-rsbuild-host/src/routes/selective-client-only.tsx new file mode 100644 index 00000000000..5e68bdd7ff3 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/src/routes/selective-client-only.tsx @@ -0,0 +1,14 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/selective-client-only')({ + ssr: false, + component: SelectiveClientOnlyRoute, +}) + +function SelectiveClientOnlyRoute() { + return ( +
+

Selective remote route content

+
+ ) +} diff --git a/examples/react/start-module-federation-rsbuild-host/src/routes/server-fn-mf.tsx b/examples/react/start-module-federation-rsbuild-host/src/routes/server-fn-mf.tsx new file mode 100644 index 00000000000..632d2cebb25 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-host/src/routes/server-fn-mf.tsx @@ -0,0 +1,25 @@ +import { createFileRoute } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/react-start' + +const getRemoteServerData = createServerFn({ method: 'GET' }).handler( + async () => { + const { getFederatedServerData } = await import('mf_remote/server-data') + return getFederatedServerData('server-function') + }, +) + +export const Route = createFileRoute('/server-fn-mf')({ + loader: () => getRemoteServerData(), + component: ServerFunctionFederationRoute, +}) + +function ServerFunctionFederationRoute() { + const response = Route.useLoaderData() + + return ( +
+

Server function federation route

+
{JSON.stringify(response)}
+
+ ) +} diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 42d225dec76..a3a2ee9ab25 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -7,6 +7,8 @@ This example is the **remote app** used by the host example: It exposes: - `mf_remote/message` +- `mf_remote/routes` (dynamic route registrations) +- `mf_remote/server-data` (server-side federated data helper) via `@module-federation/rsbuild-plugin`, and serves chunks over HTTP. diff --git a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts index 6685f8ede38..edf85adc63f 100644 --- a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts @@ -16,6 +16,8 @@ export default defineConfig({ filename: 'remoteEntry.js', exposes: { './message': './src/message.tsx', + './routes': './src/routes.tsx', + './server-data': './src/server-data.ts', }, runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { @@ -67,6 +69,8 @@ export default defineConfig({ dts: false, exposes: { './message': './src/message.tsx', + './routes': './src/routes.tsx', + './server-data': './src/server-data.ts', }, runtimePlugins: [ require.resolve('@module-federation/node/runtimePlugin'), diff --git a/examples/react/start-module-federation-rsbuild-remote/src/routes.tsx b/examples/react/start-module-federation-rsbuild-remote/src/routes.tsx new file mode 100644 index 00000000000..58ed909d664 --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/src/routes.tsx @@ -0,0 +1,25 @@ +import type { ComponentType } from 'react' +import { FederatedMessage } from './message' + +export type RemoteRouteRegistration = { + id: string + path: string + component: ComponentType +} + +function DynamicRemotePage() { + return ( +
+

Dynamic remote page from federation

+ +
+ ) +} + +export const remoteRouteRegistrations: Array = [ + { + id: 'dynamic-remote', + path: 'dynamic-remote', + component: DynamicRemotePage, + }, +] diff --git a/examples/react/start-module-federation-rsbuild-remote/src/server-data.ts b/examples/react/start-module-federation-rsbuild-remote/src/server-data.ts new file mode 100644 index 00000000000..6e95c99cd9f --- /dev/null +++ b/examples/react/start-module-federation-rsbuild-remote/src/server-data.ts @@ -0,0 +1,6 @@ +export function getFederatedServerData(source: string) { + return { + source, + message: 'Federated server data from remote', + } +} diff --git a/packages/start-plugin-core/src/rsbuild/prerender.ts b/packages/start-plugin-core/src/rsbuild/prerender.ts index 88891c9b1a6..5b7ddac41a1 100644 --- a/packages/start-plugin-core/src/rsbuild/prerender.ts +++ b/packages/start-plugin-core/src/rsbuild/prerender.ts @@ -1,3 +1,4 @@ +import { createRequire } from 'node:module' import { pathToFileURL } from 'node:url' import { promises as fsp } from 'node:fs' import os from 'node:os' @@ -18,6 +19,7 @@ export async function prerender({ serverEntryPath: string }) { const logger = createLogger('prerender') + const require = createRequire(import.meta.url) logger.info('Prerendering pages...') if (startConfig.prerender?.enabled) { @@ -50,7 +52,18 @@ export async function prerender({ const previousPrerenderingEnv = process.env.TSS_PRERENDERING process.env.TSS_PRERENDERING = 'true' - const serverBuild = await import(pathToFileURL(serverEntryPath).toString()) + let serverBuild: any + try { + const cjsServerEntryPath = `${serverEntryPath}.cjs` + await fsp.copyFile(serverEntryPath, cjsServerEntryPath) + serverBuild = require(cjsServerEntryPath) + if (serverBuild && typeof serverBuild.then === 'function') { + serverBuild = await serverBuild + } + await fsp.unlink(cjsServerEntryPath).catch(() => {}) + } catch { + serverBuild = await import(pathToFileURL(serverEntryPath).toString()) + } const fetchHandler = serverBuild.default?.fetch ?? serverBuild.fetch if (!fetchHandler) { throw new Error('Server build does not export a fetch handler') From ac4d31c31ba8904050e3b5cac0afc2972a083cd3 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 12 Feb 2026 05:48:40 +0000 Subject: [PATCH 021/102] chore: add core rsbuild-plugin auto-env patch file Co-authored-by: Zack Jackson --- rsbuild-plugin-auto-env.patch | 222 ++++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 rsbuild-plugin-auto-env.patch diff --git a/rsbuild-plugin-auto-env.patch b/rsbuild-plugin-auto-env.patch new file mode 100644 index 00000000000..b2e5a4dfa08 --- /dev/null +++ b/rsbuild-plugin-auto-env.patch @@ -0,0 +1,222 @@ +From 48db8ab0ec012713c1db457d18ad921deac3e1bf Mon Sep 17 00:00:00 2001 +From: Cursor Agent +Date: Thu, 12 Feb 2026 05:09:21 +0000 +Subject: [PATCH] refactor(rsbuild-plugin): auto-detect default environment by + caller + +--- + .../guide/build-plugins/plugins-rsbuild.mdx | 7 ++- + .../guide/build-plugins/plugins-rsbuild.mdx | 7 ++- + packages/rsbuild-plugin/README.md | 14 ++++++ + packages/rsbuild-plugin/src/cli/index.ts | 37 +++++++++++++- + .../src/cli/node-target.spec.ts | 50 +++++++++++++++++-- + 5 files changed, 107 insertions(+), 8 deletions(-) + +diff --git a/apps/website-new/docs/en/guide/build-plugins/plugins-rsbuild.mdx b/apps/website-new/docs/en/guide/build-plugins/plugins-rsbuild.mdx +index f12ff8c45..42df4d6c6 100644 +--- a/apps/website-new/docs/en/guide/build-plugins/plugins-rsbuild.mdx ++++ b/apps/website-new/docs/en/guide/build-plugins/plugins-rsbuild.mdx +@@ -154,7 +154,12 @@ export default defineConfig({ + #### environment + + * Type: `string` +-* Default: `'mf'` ++* Default: auto-detected by caller/tooling: ++ * Rslib: `'mf'` ++ * Rsbuild app + `target: 'web'`: `'web'` ++ * Rsbuild app + `target: 'node'`: `'node'` ++ * Rspress + `target: 'web'`: `'web'` ++ * Rspress + `target: 'node'`: `'node'` + + Environment name used by `target: 'node'` to select which environment config receives Node-target federation behavior. + +diff --git a/apps/website-new/docs/zh/guide/build-plugins/plugins-rsbuild.mdx b/apps/website-new/docs/zh/guide/build-plugins/plugins-rsbuild.mdx +index 3ed367767..ed2127936 100644 +--- a/apps/website-new/docs/zh/guide/build-plugins/plugins-rsbuild.mdx ++++ b/apps/website-new/docs/zh/guide/build-plugins/plugins-rsbuild.mdx +@@ -153,7 +153,12 @@ export default defineConfig({ + #### environment + + * 类型:`string` +-* 默认值:`'mf'` ++* 默认值:按调用方/工具自动推断: ++ * Rslib:`'mf'` ++ * Rsbuild App + `target: 'web'`:`'web'` ++ * Rsbuild App + `target: 'node'`:`'node'` ++ * Rspress + `target: 'web'`:`'web'` ++ * Rspress + `target: 'node'`:`'node'` + + 在 `target: 'node'` 下用于指定要应用 Node Federation 行为的环境名称。 + +diff --git a/packages/rsbuild-plugin/README.md b/packages/rsbuild-plugin/README.md +index 4a5e0f9f6..c9fdb3d35 100644 +--- a/packages/rsbuild-plugin/README.md ++++ b/packages/rsbuild-plugin/README.md +@@ -67,6 +67,20 @@ export default defineConfig({ + + `target: 'dual'` support remains scoped to Rslib/Rspress workflows. + ++### Default environment detection ++ ++If `environment` is omitted, the plugin will choose a default per tool: ++ ++- **Rslib**: `mf` ++- **Rsbuild app**: ++ - `target: 'web'` → `web` ++ - `target: 'node'` → `node` ++- **Rspress**: ++ - `target: 'web'` → `web` ++ - `target: 'node'` → `node` ++ ++You can still override with `environment` when your project uses custom names. ++ + ### Rslib Module + + ```js +diff --git a/packages/rsbuild-plugin/src/cli/index.ts b/packages/rsbuild-plugin/src/cli/index.ts +index ea5cc823a..fbbad9ef7 100644 +--- a/packages/rsbuild-plugin/src/cli/index.ts ++++ b/packages/rsbuild-plugin/src/cli/index.ts +@@ -46,7 +46,7 @@ type RSBUILD_PLUGIN_OPTIONS = { + ssr?: boolean; + // ssr dir, default is ssr + ssrDir?: string; +- // target copy environment name, default is mf ++ // target environment name. If omitted, defaults are inferred by caller/tool. + environment?: string; + }; + +@@ -74,6 +74,33 @@ export { RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, PLUGIN_NAME, SSR_DIR }; + const LIB_FORMAT = ['umd', 'modern-module']; + + const DEFAULT_MF_ENVIRONMENT_NAME = 'mf'; ++const DEFAULT_WEB_ENVIRONMENT_NAME = 'web'; ++const DEFAULT_NODE_ENVIRONMENT_NAME = 'node'; ++ ++const resolveDefaultEnvironmentName = ({ ++ callerName, ++ target, ++}: { ++ callerName: string; ++ target: RSBUILD_PLUGIN_OPTIONS['target']; ++}) => { ++ if (callerName === CALL_NAME_MAP.RSLIB) { ++ return DEFAULT_MF_ENVIRONMENT_NAME; ++ } ++ ++ if (callerName === CALL_NAME_MAP.RSPRESS) { ++ if (target === 'node') { ++ return DEFAULT_NODE_ENVIRONMENT_NAME; ++ } ++ return DEFAULT_WEB_ENVIRONMENT_NAME; ++ } ++ ++ if (target === 'node') { ++ return DEFAULT_NODE_ENVIRONMENT_NAME; ++ } ++ ++ return DEFAULT_WEB_ENVIRONMENT_NAME; ++}; + + function isStoryBook(rsbuildConfig: RsbuildConfig) { + if ( +@@ -121,7 +148,7 @@ export const pluginModuleFederation = ( + target = 'web', + ssr = undefined, + ssrDir = SSR_DIR, +- environment = DEFAULT_MF_ENVIRONMENT_NAME, ++ environment: configuredEnvironment, + } = rsbuildOptions || {}; + if (ssr) { + throw new Error( +@@ -139,6 +166,12 @@ export const pluginModuleFederation = ( + const isRslib = callerName === CALL_NAME_MAP.RSLIB; + const isRspress = callerName === CALL_NAME_MAP.RSPRESS; + const isSSR = target === 'dual'; ++ const environment = ++ configuredEnvironment ?? ++ resolveDefaultEnvironmentName({ ++ callerName, ++ target, ++ }); + + if (isSSR && !isStoryBook(originalRsbuildConfig)) { + if (!isRslib && !isRspress) { +diff --git a/packages/rsbuild-plugin/src/cli/node-target.spec.ts b/packages/rsbuild-plugin/src/cli/node-target.spec.ts +index 3c7dfbb07..680faa4f9 100644 +--- a/packages/rsbuild-plugin/src/cli/node-target.spec.ts ++++ b/packages/rsbuild-plugin/src/cli/node-target.spec.ts +@@ -1,5 +1,6 @@ + import { describe, expect, it, vi } from 'vitest'; + import { pluginModuleFederation } from './index'; ++import { CALL_NAME_MAP } from '../constant'; + + import type { moduleFederationPlugin } from '@module-federation/sdk'; + import type { Rspack } from '@rsbuild/core'; +@@ -85,6 +86,44 @@ describe('pluginModuleFederation node target environment behavior', () => { + ); + }); + ++ it('defaults to the rsbuild node environment when target=node and environment is omitted', () => { ++ const plugin = pluginModuleFederation(createMfOptions(), { ++ target: 'node', ++ }); ++ const { api, rsbuildConfig } = createMockApi({ ++ environments: { ++ web: {}, ++ node: {}, ++ }, ++ }); ++ ++ plugin.setup(api as any); ++ ++ expect(rsbuildConfig.environments.node.tools?.rspack).toBeDefined(); ++ expect(rsbuildConfig.environments.web.tools?.rspack).toBeUndefined(); ++ }); ++ ++ it('defaults to the rspress node environment when target=node and environment is omitted', () => { ++ const plugin = pluginModuleFederation(createMfOptions(), { ++ target: 'node', ++ }); ++ const { api, rsbuildConfig } = createMockApi( ++ { ++ environments: { ++ web: {}, ++ node: {}, ++ node_md: {}, ++ }, ++ }, ++ CALL_NAME_MAP.RSPRESS, ++ ); ++ ++ plugin.setup(api as any); ++ ++ expect(rsbuildConfig.environments.node.tools?.rspack).toBeDefined(); ++ expect(rsbuildConfig.environments.web.tools?.rspack).toBeUndefined(); ++ }); ++ + it('still applies MF to the selected node environment when output is commonjs-like', () => { + const plugin = pluginModuleFederation(createMfOptions(), { + target: 'node', +@@ -154,11 +193,14 @@ describe('pluginModuleFederation node target environment behavior', () => { + const plugin = pluginModuleFederation(createMfOptions(), { + target: 'node', + }); +- const { api, rsbuildConfig } = createMockApi({ +- environments: { +- mf: {}, ++ const { api, rsbuildConfig } = createMockApi( ++ { ++ environments: { ++ mf: {}, ++ }, + }, +- }); ++ CALL_NAME_MAP.RSLIB, ++ ); + + plugin.setup(api as any); + +-- +2.43.0 + From 971f3526cc6c23e660674ced9f48f12ea3a1172e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 12 Feb 2026 05:58:43 +0000 Subject: [PATCH 022/102] chore: remove temporary rsbuild plugin patch file Co-authored-by: Zack Jackson --- rsbuild-plugin-auto-env.patch | 222 ---------------------------------- 1 file changed, 222 deletions(-) delete mode 100644 rsbuild-plugin-auto-env.patch diff --git a/rsbuild-plugin-auto-env.patch b/rsbuild-plugin-auto-env.patch deleted file mode 100644 index b2e5a4dfa08..00000000000 --- a/rsbuild-plugin-auto-env.patch +++ /dev/null @@ -1,222 +0,0 @@ -From 48db8ab0ec012713c1db457d18ad921deac3e1bf Mon Sep 17 00:00:00 2001 -From: Cursor Agent -Date: Thu, 12 Feb 2026 05:09:21 +0000 -Subject: [PATCH] refactor(rsbuild-plugin): auto-detect default environment by - caller - ---- - .../guide/build-plugins/plugins-rsbuild.mdx | 7 ++- - .../guide/build-plugins/plugins-rsbuild.mdx | 7 ++- - packages/rsbuild-plugin/README.md | 14 ++++++ - packages/rsbuild-plugin/src/cli/index.ts | 37 +++++++++++++- - .../src/cli/node-target.spec.ts | 50 +++++++++++++++++-- - 5 files changed, 107 insertions(+), 8 deletions(-) - -diff --git a/apps/website-new/docs/en/guide/build-plugins/plugins-rsbuild.mdx b/apps/website-new/docs/en/guide/build-plugins/plugins-rsbuild.mdx -index f12ff8c45..42df4d6c6 100644 ---- a/apps/website-new/docs/en/guide/build-plugins/plugins-rsbuild.mdx -+++ b/apps/website-new/docs/en/guide/build-plugins/plugins-rsbuild.mdx -@@ -154,7 +154,12 @@ export default defineConfig({ - #### environment - - * Type: `string` --* Default: `'mf'` -+* Default: auto-detected by caller/tooling: -+ * Rslib: `'mf'` -+ * Rsbuild app + `target: 'web'`: `'web'` -+ * Rsbuild app + `target: 'node'`: `'node'` -+ * Rspress + `target: 'web'`: `'web'` -+ * Rspress + `target: 'node'`: `'node'` - - Environment name used by `target: 'node'` to select which environment config receives Node-target federation behavior. - -diff --git a/apps/website-new/docs/zh/guide/build-plugins/plugins-rsbuild.mdx b/apps/website-new/docs/zh/guide/build-plugins/plugins-rsbuild.mdx -index 3ed367767..ed2127936 100644 ---- a/apps/website-new/docs/zh/guide/build-plugins/plugins-rsbuild.mdx -+++ b/apps/website-new/docs/zh/guide/build-plugins/plugins-rsbuild.mdx -@@ -153,7 +153,12 @@ export default defineConfig({ - #### environment - - * 类型:`string` --* 默认值:`'mf'` -+* 默认值:按调用方/工具自动推断: -+ * Rslib:`'mf'` -+ * Rsbuild App + `target: 'web'`:`'web'` -+ * Rsbuild App + `target: 'node'`:`'node'` -+ * Rspress + `target: 'web'`:`'web'` -+ * Rspress + `target: 'node'`:`'node'` - - 在 `target: 'node'` 下用于指定要应用 Node Federation 行为的环境名称。 - -diff --git a/packages/rsbuild-plugin/README.md b/packages/rsbuild-plugin/README.md -index 4a5e0f9f6..c9fdb3d35 100644 ---- a/packages/rsbuild-plugin/README.md -+++ b/packages/rsbuild-plugin/README.md -@@ -67,6 +67,20 @@ export default defineConfig({ - - `target: 'dual'` support remains scoped to Rslib/Rspress workflows. - -+### Default environment detection -+ -+If `environment` is omitted, the plugin will choose a default per tool: -+ -+- **Rslib**: `mf` -+- **Rsbuild app**: -+ - `target: 'web'` → `web` -+ - `target: 'node'` → `node` -+- **Rspress**: -+ - `target: 'web'` → `web` -+ - `target: 'node'` → `node` -+ -+You can still override with `environment` when your project uses custom names. -+ - ### Rslib Module - - ```js -diff --git a/packages/rsbuild-plugin/src/cli/index.ts b/packages/rsbuild-plugin/src/cli/index.ts -index ea5cc823a..fbbad9ef7 100644 ---- a/packages/rsbuild-plugin/src/cli/index.ts -+++ b/packages/rsbuild-plugin/src/cli/index.ts -@@ -46,7 +46,7 @@ type RSBUILD_PLUGIN_OPTIONS = { - ssr?: boolean; - // ssr dir, default is ssr - ssrDir?: string; -- // target copy environment name, default is mf -+ // target environment name. If omitted, defaults are inferred by caller/tool. - environment?: string; - }; - -@@ -74,6 +74,33 @@ export { RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, PLUGIN_NAME, SSR_DIR }; - const LIB_FORMAT = ['umd', 'modern-module']; - - const DEFAULT_MF_ENVIRONMENT_NAME = 'mf'; -+const DEFAULT_WEB_ENVIRONMENT_NAME = 'web'; -+const DEFAULT_NODE_ENVIRONMENT_NAME = 'node'; -+ -+const resolveDefaultEnvironmentName = ({ -+ callerName, -+ target, -+}: { -+ callerName: string; -+ target: RSBUILD_PLUGIN_OPTIONS['target']; -+}) => { -+ if (callerName === CALL_NAME_MAP.RSLIB) { -+ return DEFAULT_MF_ENVIRONMENT_NAME; -+ } -+ -+ if (callerName === CALL_NAME_MAP.RSPRESS) { -+ if (target === 'node') { -+ return DEFAULT_NODE_ENVIRONMENT_NAME; -+ } -+ return DEFAULT_WEB_ENVIRONMENT_NAME; -+ } -+ -+ if (target === 'node') { -+ return DEFAULT_NODE_ENVIRONMENT_NAME; -+ } -+ -+ return DEFAULT_WEB_ENVIRONMENT_NAME; -+}; - - function isStoryBook(rsbuildConfig: RsbuildConfig) { - if ( -@@ -121,7 +148,7 @@ export const pluginModuleFederation = ( - target = 'web', - ssr = undefined, - ssrDir = SSR_DIR, -- environment = DEFAULT_MF_ENVIRONMENT_NAME, -+ environment: configuredEnvironment, - } = rsbuildOptions || {}; - if (ssr) { - throw new Error( -@@ -139,6 +166,12 @@ export const pluginModuleFederation = ( - const isRslib = callerName === CALL_NAME_MAP.RSLIB; - const isRspress = callerName === CALL_NAME_MAP.RSPRESS; - const isSSR = target === 'dual'; -+ const environment = -+ configuredEnvironment ?? -+ resolveDefaultEnvironmentName({ -+ callerName, -+ target, -+ }); - - if (isSSR && !isStoryBook(originalRsbuildConfig)) { - if (!isRslib && !isRspress) { -diff --git a/packages/rsbuild-plugin/src/cli/node-target.spec.ts b/packages/rsbuild-plugin/src/cli/node-target.spec.ts -index 3c7dfbb07..680faa4f9 100644 ---- a/packages/rsbuild-plugin/src/cli/node-target.spec.ts -+++ b/packages/rsbuild-plugin/src/cli/node-target.spec.ts -@@ -1,5 +1,6 @@ - import { describe, expect, it, vi } from 'vitest'; - import { pluginModuleFederation } from './index'; -+import { CALL_NAME_MAP } from '../constant'; - - import type { moduleFederationPlugin } from '@module-federation/sdk'; - import type { Rspack } from '@rsbuild/core'; -@@ -85,6 +86,44 @@ describe('pluginModuleFederation node target environment behavior', () => { - ); - }); - -+ it('defaults to the rsbuild node environment when target=node and environment is omitted', () => { -+ const plugin = pluginModuleFederation(createMfOptions(), { -+ target: 'node', -+ }); -+ const { api, rsbuildConfig } = createMockApi({ -+ environments: { -+ web: {}, -+ node: {}, -+ }, -+ }); -+ -+ plugin.setup(api as any); -+ -+ expect(rsbuildConfig.environments.node.tools?.rspack).toBeDefined(); -+ expect(rsbuildConfig.environments.web.tools?.rspack).toBeUndefined(); -+ }); -+ -+ it('defaults to the rspress node environment when target=node and environment is omitted', () => { -+ const plugin = pluginModuleFederation(createMfOptions(), { -+ target: 'node', -+ }); -+ const { api, rsbuildConfig } = createMockApi( -+ { -+ environments: { -+ web: {}, -+ node: {}, -+ node_md: {}, -+ }, -+ }, -+ CALL_NAME_MAP.RSPRESS, -+ ); -+ -+ plugin.setup(api as any); -+ -+ expect(rsbuildConfig.environments.node.tools?.rspack).toBeDefined(); -+ expect(rsbuildConfig.environments.web.tools?.rspack).toBeUndefined(); -+ }); -+ - it('still applies MF to the selected node environment when output is commonjs-like', () => { - const plugin = pluginModuleFederation(createMfOptions(), { - target: 'node', -@@ -154,11 +193,14 @@ describe('pluginModuleFederation node target environment behavior', () => { - const plugin = pluginModuleFederation(createMfOptions(), { - target: 'node', - }); -- const { api, rsbuildConfig } = createMockApi({ -- environments: { -- mf: {}, -+ const { api, rsbuildConfig } = createMockApi( -+ { -+ environments: { -+ mf: {}, -+ }, - }, -- }); -+ CALL_NAME_MAP.RSLIB, -+ ); - - plugin.setup(api as any); - --- -2.43.0 - From a290354ad1be3c857d277327adc38b454aadaace Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 12 Feb 2026 08:25:54 +0000 Subject: [PATCH 023/102] chore: update federation deps and patch rsbuild-plugin env handling Co-authored-by: Zack Jackson --- .../package.json | 6 +- .../package.json | 4 +- .../package.json | 6 +- .../package.json | 4 +- package.json | 5 +- ...ule-federation__rsbuild-plugin@2.0.1.patch | 190 ++++++ pnpm-lock.yaml | 563 +++++------------- 7 files changed, 349 insertions(+), 429 deletions(-) create mode 100644 patches/@module-federation__rsbuild-plugin@2.0.1.patch diff --git a/e2e/react-start/module-federation-rsbuild-host/package.json b/e2e/react-start/module-federation-rsbuild-host/package.json index 15e8f8138d0..66c889fcb1f 100644 --- a/e2e/react-start/module-federation-rsbuild-host/package.json +++ b/e2e/react-start/module-federation-rsbuild-host/package.json @@ -21,9 +21,9 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@module-federation/enhanced": "^0.24.1", - "@module-federation/node": "^2.7.31", - "@module-federation/rsbuild-plugin": "^0.24.1", + "@module-federation/enhanced": "^2.0.1", + "@module-federation/node": "^2.7.32", + "@module-federation/rsbuild-plugin": "^2.0.1", "@playwright/test": "^1.50.1", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", diff --git a/e2e/react-start/module-federation-rsbuild-remote/package.json b/e2e/react-start/module-federation-rsbuild-remote/package.json index 57732300d18..23bf07c8fbd 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/package.json +++ b/e2e/react-start/module-federation-rsbuild-remote/package.json @@ -12,8 +12,8 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@module-federation/node": "^2.7.31", - "@module-federation/rsbuild-plugin": "^0.24.1", + "@module-federation/node": "^2.7.32", + "@module-federation/rsbuild-plugin": "^2.0.1", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/react": "^19.0.8", diff --git a/examples/react/start-module-federation-rsbuild-host/package.json b/examples/react/start-module-federation-rsbuild-host/package.json index 19b3821dd2a..edb456bdf2f 100644 --- a/examples/react/start-module-federation-rsbuild-host/package.json +++ b/examples/react/start-module-federation-rsbuild-host/package.json @@ -17,9 +17,9 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@module-federation/enhanced": "^0.24.1", - "@module-federation/node": "^2.7.31", - "@module-federation/rsbuild-plugin": "^0.24.1", + "@module-federation/enhanced": "^2.0.1", + "@module-federation/node": "^2.7.32", + "@module-federation/rsbuild-plugin": "^2.0.1", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/node": "^22.10.2", diff --git a/examples/react/start-module-federation-rsbuild-remote/package.json b/examples/react/start-module-federation-rsbuild-remote/package.json index a61cee15a2b..ff68624ef57 100644 --- a/examples/react/start-module-federation-rsbuild-remote/package.json +++ b/examples/react/start-module-federation-rsbuild-remote/package.json @@ -12,8 +12,8 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@module-federation/node": "^2.7.31", - "@module-federation/rsbuild-plugin": "^0.24.1", + "@module-federation/node": "^2.7.32", + "@module-federation/rsbuild-plugin": "^2.0.1", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/react": "^19.0.8", diff --git a/package.json b/package.json index 7325283b5ea..81781862146 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,8 @@ "@eslint-react/eslint-plugin": "^1.26.2", "@playwright/test": "^1.57.0", "@tanstack/config": "0.22.0", - "@tanstack/react-query": "^5.90.19", "@tanstack/query-core": "^5.90.19", + "@tanstack/react-query": "^5.90.19", "@types/node": "25.0.9", "@types/react": "^19.2.8", "@types/react-dom": "^19.2.3", @@ -123,6 +123,9 @@ "@tanstack/router-utils": "workspace:*", "@tanstack/start-static-server-functions": "workspace:*", "@tanstack/nitro-v2-vite-plugin": "workspace:*" + }, + "patchedDependencies": { + "@module-federation/rsbuild-plugin@2.0.1": "patches/@module-federation__rsbuild-plugin@2.0.1.patch" } } } diff --git a/patches/@module-federation__rsbuild-plugin@2.0.1.patch b/patches/@module-federation__rsbuild-plugin@2.0.1.patch new file mode 100644 index 00000000000..16185b43d2e --- /dev/null +++ b/patches/@module-federation__rsbuild-plugin@2.0.1.patch @@ -0,0 +1,190 @@ +diff --git a/dist/cli/index.js b/dist/cli/index.js +index 5c7dccc5dd2322b8146c3a7303cd36150b51a84e..bdd9c2ecf0660403f5b4599383b70f73e8813e66 100644 +--- a/dist/cli/index.js ++++ b/dist/cli/index.js +@@ -97,6 +97,23 @@ const LIB_FORMAT = [ + 'modern-module' + ]; + const DEFAULT_MF_ENVIRONMENT_NAME = 'mf'; ++const DEFAULT_WEB_ENVIRONMENT_NAME = 'web'; ++const DEFAULT_NODE_ENVIRONMENT_NAME = 'node'; ++const resolveDefaultEnvironmentName = ({ callerName, target })=>{ ++ if (callerName === external_constant_js_namespaceObject.CALL_NAME_MAP.RSLIB) { ++ return DEFAULT_MF_ENVIRONMENT_NAME; ++ } ++ if (callerName === external_constant_js_namespaceObject.CALL_NAME_MAP.RSPRESS) { ++ if (target === 'node') { ++ return DEFAULT_NODE_ENVIRONMENT_NAME; ++ } ++ return DEFAULT_WEB_ENVIRONMENT_NAME; ++ } ++ if (target === 'node') { ++ return DEFAULT_NODE_ENVIRONMENT_NAME; ++ } ++ return DEFAULT_WEB_ENVIRONMENT_NAME; ++}; + function isStoryBook(rsbuildConfig) { + var _rsbuildConfig_plugins; + if ((_rsbuildConfig_plugins = rsbuildConfig.plugins) === null || _rsbuildConfig_plugins === void 0 ? void 0 : _rsbuildConfig_plugins.find((p)=>p && 'name' in p && p.name === 'module-federation-storybook-plugin')) { +@@ -123,7 +140,7 @@ const isRspressSSGConfig = (bundlerConfigName)=>{ + const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + name: RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, + setup: (api)=>{ +- const { target = 'web', ssr = undefined, ssrDir = external_utils_js_namespaceObject.SSR_DIR, environment = DEFAULT_MF_ENVIRONMENT_NAME } = rsbuildOptions || {}; ++ const { target = 'web', ssr = undefined, ssrDir = external_utils_js_namespaceObject.SSR_DIR, environment: configuredEnvironment } = rsbuildOptions || {}; + if (ssr) { + throw new Error("The `ssr` option is deprecated. If you want to enable SSR, please use `target: 'dual'` instead."); + } +@@ -135,6 +152,10 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + const isRslib = callerName === external_constant_js_namespaceObject.CALL_NAME_MAP.RSLIB; + const isRspress = callerName === external_constant_js_namespaceObject.CALL_NAME_MAP.RSPRESS; + const isSSR = target === 'dual'; ++ const environment = configuredEnvironment ?? resolveDefaultEnvironmentName({ ++ callerName, ++ target ++ }); + if (isSSR && !isStoryBook(originalRsbuildConfig)) { + var _rsbuildConfig_environments; + if (!isRslib && !isRspress) { +@@ -206,8 +227,14 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + }); + } + } else if (target === 'node') { +- const mfEnv = config.environments[ssr_js_namespaceObject.ENV_NAME]; +- (0,ssr_js_namespaceObject.patchToolsTspack)(mfEnv, (config, { environment })=>{ ++ var _config_environments2; ++ const nodeTargetEnv = (_config_environments2 = config.environments) === null || _config_environments2 === void 0 ? void 0 : _config_environments2[environment]; ++ if (!nodeTargetEnv) { ++ const availableEnvironments = Object.keys(config.environments || {}); ++ const availableEnvironmentsLabel = availableEnvironments.length > 0 ? availableEnvironments.join(', ') : '(none)'; ++ throw new Error(`Can not find environment '${environment}' when using target: 'node'. Available environments: ${availableEnvironmentsLabel}.`); ++ } ++ (0,ssr_js_namespaceObject.patchToolsTspack)(nodeTargetEnv, (config, { environment })=>{ + config.target = 'async-node'; + }); + } +@@ -284,7 +311,9 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + throw new Error('Can not get bundlerConfigs!'); + } + bundlerConfigs.forEach((bundlerConfig)=>{ +- if (!isMFFormat(bundlerConfig) && !isRspress) { ++ const bundlerConfigName = bundlerConfig.name || ''; ++ const isNodeTargetEnvironmentConfig = target === 'node' && bundlerConfigName === environment; ++ if (!isMFFormat(bundlerConfig) && !isRspress && !isNodeTargetEnvironmentConfig) { + return; + } else if (isStoryBook(originalRsbuildConfig)) { + bundlerConfig.output.uniqueName = `${moduleFederationOptions.name} -storybook - host`; +@@ -338,7 +367,7 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + bundlerConfig.output.chunkLoading = 'jsonp'; + bundlerConfig.output.chunkLoadingGlobal = `chunk_${moduleFederationOptions.name} `; + } +- if (target === 'node' && isMFFormat(bundlerConfig)) { ++ if (isNodeTargetEnvironmentConfig) { + (0,ssr_js_namespaceObject.patchNodeConfig)(bundlerConfig, moduleFederationOptions); + (0,ssr_js_namespaceObject.patchNodeMFConfig)(moduleFederationOptions); + } +@@ -353,7 +382,8 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + } + if (!bundlerConfig.plugins.find((p)=>p && p.name === rspack_namespaceObject.PLUGIN_NAME)) { + var _bundlerConfig_output3; +- if (isSSRConfig(bundlerConfig.name)) { ++ const shouldUseSSRPluginConfig = isSSRConfig(bundlerConfig.name) || isNodeTargetEnvironmentConfig; ++ if (shouldUseSSRPluginConfig) { + generateMergedStatsAndManifestOptions.options.nodePlugin = new rspack_namespaceObject.ModuleFederationPlugin((0,external_utils_js_namespaceObject.createSSRMFConfig)(moduleFederationOptions)); + generateMergedStatsAndManifestOptions.options.nodeEnvironmentName = bundlerConfig.name || external_utils_js_namespaceObject.SSR_ENV_NAME; + bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.nodePlugin); +diff --git a/dist/cli/index.mjs b/dist/cli/index.mjs +index d3871cdc2130132b57f9cdd625014d1862075cc5..322955988de636c92577d72423c97d5bb4cb47f1 100644 +--- a/dist/cli/index.mjs ++++ b/dist/cli/index.mjs +@@ -40,6 +40,23 @@ const LIB_FORMAT = [ + 'modern-module' + ]; + const DEFAULT_MF_ENVIRONMENT_NAME = 'mf'; ++const DEFAULT_WEB_ENVIRONMENT_NAME = 'web'; ++const DEFAULT_NODE_ENVIRONMENT_NAME = 'node'; ++const resolveDefaultEnvironmentName = ({ callerName, target })=>{ ++ if (callerName === CALL_NAME_MAP.RSLIB) { ++ return DEFAULT_MF_ENVIRONMENT_NAME; ++ } ++ if (callerName === CALL_NAME_MAP.RSPRESS) { ++ if (target === 'node') { ++ return DEFAULT_NODE_ENVIRONMENT_NAME; ++ } ++ return DEFAULT_WEB_ENVIRONMENT_NAME; ++ } ++ if (target === 'node') { ++ return DEFAULT_NODE_ENVIRONMENT_NAME; ++ } ++ return DEFAULT_WEB_ENVIRONMENT_NAME; ++}; + function isStoryBook(rsbuildConfig) { + var _rsbuildConfig_plugins; + if ((_rsbuildConfig_plugins = rsbuildConfig.plugins) === null || _rsbuildConfig_plugins === void 0 ? void 0 : _rsbuildConfig_plugins.find((p)=>p && 'name' in p && p.name === 'module-federation-storybook-plugin')) { +@@ -66,7 +83,7 @@ const isRspressSSGConfig = (bundlerConfigName)=>{ + const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + name: RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, + setup: (api)=>{ +- const { target = 'web', ssr = undefined, ssrDir = SSR_DIR, environment = DEFAULT_MF_ENVIRONMENT_NAME } = rsbuildOptions || {}; ++ const { target = 'web', ssr = undefined, ssrDir = SSR_DIR, environment: configuredEnvironment } = rsbuildOptions || {}; + if (ssr) { + throw new Error("The `ssr` option is deprecated. If you want to enable SSR, please use `target: 'dual'` instead."); + } +@@ -78,6 +95,10 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + const isRslib = callerName === CALL_NAME_MAP.RSLIB; + const isRspress = callerName === CALL_NAME_MAP.RSPRESS; + const isSSR = target === 'dual'; ++ const environment = configuredEnvironment ?? resolveDefaultEnvironmentName({ ++ callerName, ++ target ++ }); + if (isSSR && !isStoryBook(originalRsbuildConfig)) { + var _rsbuildConfig_environments; + if (!isRslib && !isRspress) { +@@ -149,8 +170,14 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + }); + } + } else if (target === 'node') { +- const mfEnv = config.environments[ENV_NAME]; +- patchToolsTspack(mfEnv, (config, { environment })=>{ ++ var _config_environments2; ++ const nodeTargetEnv = (_config_environments2 = config.environments) === null || _config_environments2 === void 0 ? void 0 : _config_environments2[environment]; ++ if (!nodeTargetEnv) { ++ const availableEnvironments = Object.keys(config.environments || {}); ++ const availableEnvironmentsLabel = availableEnvironments.length > 0 ? availableEnvironments.join(', ') : '(none)'; ++ throw new Error(`Can not find environment '${environment}' when using target: 'node'. Available environments: ${availableEnvironmentsLabel}.`); ++ } ++ patchToolsTspack(nodeTargetEnv, (config, { environment })=>{ + config.target = 'async-node'; + }); + } +@@ -227,7 +254,9 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + throw new Error('Can not get bundlerConfigs!'); + } + bundlerConfigs.forEach((bundlerConfig)=>{ +- if (!isMFFormat(bundlerConfig) && !isRspress) { ++ const bundlerConfigName = bundlerConfig.name || ''; ++ const isNodeTargetEnvironmentConfig = target === 'node' && bundlerConfigName === environment; ++ if (!isMFFormat(bundlerConfig) && !isRspress && !isNodeTargetEnvironmentConfig) { + return; + } else if (isStoryBook(originalRsbuildConfig)) { + bundlerConfig.output.uniqueName = `${moduleFederationOptions.name} -storybook - host`; +@@ -281,7 +310,7 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + bundlerConfig.output.chunkLoading = 'jsonp'; + bundlerConfig.output.chunkLoadingGlobal = `chunk_${moduleFederationOptions.name} `; + } +- if (target === 'node' && isMFFormat(bundlerConfig)) { ++ if (isNodeTargetEnvironmentConfig) { + patchNodeConfig(bundlerConfig, moduleFederationOptions); + patchNodeMFConfig(moduleFederationOptions); + } +@@ -296,7 +325,8 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ + } + if (!bundlerConfig.plugins.find((p)=>p && p.name === PLUGIN_NAME)) { + var _bundlerConfig_output3; +- if (isSSRConfig(bundlerConfig.name)) { ++ const shouldUseSSRPluginConfig = isSSRConfig(bundlerConfig.name) || isNodeTargetEnvironmentConfig; ++ if (shouldUseSSRPluginConfig) { + generateMergedStatsAndManifestOptions.options.nodePlugin = new ModuleFederationPlugin(createSSRMFConfig(moduleFederationOptions)); + generateMergedStatsAndManifestOptions.options.nodeEnvironmentName = bundlerConfig.name || SSR_ENV_NAME; + bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.nodePlugin); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df3c2ab0c06..e5e4eceee87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,11 @@ overrides: '@tanstack/start-static-server-functions': workspace:* '@tanstack/nitro-v2-vite-plugin': workspace:* +patchedDependencies: + '@module-federation/rsbuild-plugin@2.0.1': + hash: b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce + path: patches/@module-federation__rsbuild-plugin@2.0.1.patch + importers: .: @@ -1804,14 +1809,14 @@ importers: version: 19.2.3(react@19.2.3) devDependencies: '@module-federation/enhanced': - specifier: ^0.24.1 - version: 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.0.1 + version: 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/node': - specifier: ^2.7.31 - version: 2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.7.32 + version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: ^0.24.1 - version: 0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.0.1 + version: 2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@playwright/test': specifier: ^1.57.0 version: 1.57.0 @@ -1850,11 +1855,11 @@ importers: version: 19.2.3(react@19.2.3) devDependencies: '@module-federation/node': - specifier: ^2.7.31 - version: 2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.7.32 + version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: ^0.24.1 - version: 0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.0.1 + version: 2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -8477,7 +8482,7 @@ importers: version: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) + version: 3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17(vitest@4.0.17))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) web-vitals: specifier: ^5.1.0 version: 5.1.0 @@ -8849,14 +8854,14 @@ importers: version: 19.2.3(react@19.2.3) devDependencies: '@module-federation/enhanced': - specifier: ^0.24.1 - version: 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.0.1 + version: 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/node': - specifier: ^2.7.31 - version: 2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.7.32 + version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: ^0.24.1 - version: 0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.0.1 + version: 2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -8889,11 +8894,11 @@ importers: version: 19.2.3(react@19.2.3) devDependencies: '@module-federation/node': - specifier: ^2.7.31 - version: 2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.7.32 + version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: ^0.24.1 - version: 0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: ^2.0.1 + version: 2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -10847,7 +10852,7 @@ importers: devDependencies: '@netlify/vite-plugin-tanstack-start': specifier: ^1.1.4 - version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) '@tailwindcss/vite': specifier: ^4.1.18 version: 4.1.18(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) @@ -11073,7 +11078,7 @@ importers: version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.10)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) + version: 3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17(vitest@4.0.17))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) web-vitals: specifier: ^5.1.0 version: 5.1.0 @@ -15065,24 +15070,16 @@ packages: '@minimistjs/subarg@1.0.0': resolution: {integrity: sha512-Q/ONBiM2zNeYUy0mVSO44mWWKYM3UHuEK43PKIOzJCbvUnPoMH1K+gk3cf1kgnCVJFlWmddahQQCmrmBGlk9jQ==} - '@module-federation/bridge-react-webpack-plugin@0.24.1': - resolution: {integrity: sha512-4f6/Xd4PIGpStQeNTBJWiKGLJ8Dn21tTXMOupkzv6nuBuuaryiqeU/k1Zy+H9zXjCezhqYlCHzA6QIXiLMLujA==} - - '@module-federation/bridge-react-webpack-plugin@2.0.0': - resolution: {integrity: sha512-AVT/rZK6RHva6ZTYfsyQ8oP4xYNTws3OzqKW/YxWaLXwQ3oG9ZbF7fKl4jIKoMKuuy2L9MGVXS4CYPZy0s8fXg==} - - '@module-federation/cli@0.24.1': - resolution: {integrity: sha512-mylPX+mFBYoi5Mb18/2oGRWNxsGfRkhoOAnrXYqigc3Ek3vKqYkBwWS5KogRRYCPktj0Nyp6iY70VTs6AGKLHw==} - engines: {node: '>=16.0.0'} - hasBin: true + '@module-federation/bridge-react-webpack-plugin@2.0.1': + resolution: {integrity: sha512-D7LMW5EMAJShOMR1aZDAJ6s+MdsYDHaQyJADLQ3LaY0sne/BkVqkPikUwcO1IwOwKbXjYsDlQVOEvk9wZVRFhA==} - '@module-federation/cli@2.0.0': - resolution: {integrity: sha512-IWGWbdgoeNcuA5jzqPr6pLTN1hovMQh9A1lgJp5fAvKfICfFXKq7K8nwMAQrWD6iEKApIenI0madk1Dg2PU3pw==} + '@module-federation/cli@2.0.1': + resolution: {integrity: sha512-2SL5Y8iODNX10y9T3CBLhHjSXo4afnA1BK82m4sNfZebuVO+o34bxewqwod9xfWq9xhTZmOSFZ+n+lgTKRv+CQ==} engines: {node: '>=16.0.0'} hasBin: true - '@module-federation/data-prefetch@0.24.1': - resolution: {integrity: sha512-vkpd+RenbY5Acc8lE2cQx+5giPHRm/K5zhruqKxNInLXYKjq/+bnSK6IivbwkLVaRDOHeHcbvfs+zfHJe8IomQ==} + '@module-federation/data-prefetch@2.0.1': + resolution: {integrity: sha512-Kq0P1OABGt6QAvs6TaE/zY9Ut9Y/oJFrzoSF3eWaCYbUAr2KD2SpTyMsPz4ssBzjeKXTgimugh6tHHd6mpCBIQ==} peerDependencies: react: ^19.2.3 react-dom: ^19.2.3 @@ -15092,52 +15089,17 @@ packages: react-dom: optional: true - '@module-federation/data-prefetch@2.0.0': - resolution: {integrity: sha512-KPyZoqNrb5WgFY2owYnMaO2Mg2DYD6KXLVI7GPguj7Z/4pPKEC+SUjWU2FuSfTeyE6ZIi0iFGdwerxzlQ6nfmw==} - peerDependencies: - react: ^19.2.3 - react-dom: ^19.2.3 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@module-federation/dts-plugin@0.24.1': - resolution: {integrity: sha512-8k4PFkSXmrdX2k1XbGhOitUvfVIqJGdYx45yqQq/q3dIKok7RHiJAs8uBC1877lbHhb6+z/xlKVSFDXRjFet+Q==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - vue-tsc: - optional: true - - '@module-federation/dts-plugin@2.0.0': - resolution: {integrity: sha512-YyYMgLNARKdf3FLihnIzzUTgafHrqzR9YnKPmrfuCm2Jit+USqFT4QO58hcb0F5KSEyjB2ARPz9RM4XAVZhzMg==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - vue-tsc: - optional: true - - '@module-federation/enhanced@0.24.1': - resolution: {integrity: sha512-mDiXX+b2WwU0PYR2F5Q9ZJirdxdvWsKETfp1bLSoNs4tvo2k62VaHfi5hu5J+o5Z+rT47ucIso8ZdQeFdqGlJg==} - hasBin: true + '@module-federation/dts-plugin@2.0.1': + resolution: {integrity: sha512-PLneTsf1fQS5/RTBedtLAAmCPRdMfIlhfJkOa8QH3WDJaQsqm8Wb3r2cTUBf2aNj/bP3aH/y6Hs9JFB/4x0l5g==} peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: '>=1.0.24' - webpack: ^5.0.0 peerDependenciesMeta: - typescript: - optional: true vue-tsc: optional: true - webpack: - optional: true - '@module-federation/enhanced@2.0.0': - resolution: {integrity: sha512-xeVrGvypYMvN8gJulbro3j1t8+aS1f9xjj4quwAAqgJF0Nz8bt7sXUYJyjUHPmC2UZsShZ0GnPHJNtI8/2GYjA==} + '@module-federation/enhanced@2.0.1': + resolution: {integrity: sha512-EZIARQ/8ScoTP6PV8+E4SsmMYWK4ErrikZJ0G/FX8wvK8mCtdoKatFtvDN9++P6Nl78kN9zHYgAV4AHKdBVjfQ==} hasBin: true peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -15154,76 +15116,42 @@ packages: '@module-federation/error-codes@0.22.0': resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} - '@module-federation/error-codes@0.24.1': - resolution: {integrity: sha512-aHmtFvFJqlM6tWJtSqO6KlbM9QZfM92wK3EFYW1khak9Xrgc78UHJScBQ37w/9X9GCNOfBIpvsT29Gvp7JtWUA==} - '@module-federation/error-codes@0.8.4': resolution: {integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==} - '@module-federation/error-codes@2.0.0': - resolution: {integrity: sha512-9oE+hXuPv2zej7AxJ5hOgeRqlPs98meooV2FiutTfftLAyy2N6+Kwmmz5NR9d9t91weJj8N0cSHFoyenNHKTVg==} + '@module-federation/error-codes@2.0.1': + resolution: {integrity: sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==} - '@module-federation/inject-external-runtime-core-plugin@0.24.1': - resolution: {integrity: sha512-TxJqb95JKFFEUCgQ4P7/CtV6sgSlLjFBV0hzke6bdX+8DBiPhbFHcsAxIHGYcJKXbEVTfBAImhJv2ZnBXbErWQ==} + '@module-federation/inject-external-runtime-core-plugin@2.0.1': + resolution: {integrity: sha512-oAA7G+4GCHM+WRYfscR/x4GwCyM9CEqfdD9/x2L6y8mtLWK9anRLKTocsI759AvzXsbT1m3EQ5ki1O6wlwDu3g==} peerDependencies: - '@module-federation/runtime-tools': 0.24.1 + '@module-federation/runtime-tools': 2.0.1 - '@module-federation/inject-external-runtime-core-plugin@2.0.0': - resolution: {integrity: sha512-aZ6f4UU7KM5zBnHf3xsb2guqsfaEd6IlmuldbpED3JPk4ITwZk0DbvxRMr4prde7cfj8RH0nKMz2kmMncp+lIQ==} - peerDependencies: - '@module-federation/runtime-tools': 2.0.0 - - '@module-federation/managers@0.24.1': - resolution: {integrity: sha512-RC0uHKRmxHJnZIs4JJsuVQSo7sQeENgxBAw/nHnN+DpG90sJkn14kexpd82qhv5At0WyKOdb2BLGiTPAoX0PWg==} - - '@module-federation/managers@2.0.0': - resolution: {integrity: sha512-ZmkRIujH+T3xvkmy04TNvviFH8xFOrNeKCLb4tlH4ifU/kLfjTu+PYO/KAEIsgtmrDnd52zTf22dg3ok85OAHA==} + '@module-federation/managers@2.0.1': + resolution: {integrity: sha512-KR01lSlcYRQ9C6hW2a8CQQtAE0LvfTLgtV/6ZNUTagw8sRfeDln+ggrZsYilKu9zl0i8RPDgpv/kS60o4lcxCQ==} - '@module-federation/manifest@0.24.1': - resolution: {integrity: sha512-QlHCNoCeqG6+x4VD96PDdDePepZ7bJb44P9d96GNwdXdT2R/QACtMIT3rMXp52U03ai3dqrLVEl8iAsutZzJGw==} + '@module-federation/manifest@2.0.1': + resolution: {integrity: sha512-p8nYGjHWp17MsYdW/Vv0ogBDiTTsI1PHWPQbvVIqLQXDqwiesaRSRR1zziECXQoEL8lV5Bs+uSkcaJGhea9P+A==} - '@module-federation/manifest@2.0.0': - resolution: {integrity: sha512-AXwYyGiDJdfP9MteKyIdJrLwG5tp4qKaq0uOPiWHilYN3/21G0DM7f30HgJqgx3WSTFSh7hcq0a3V3EZHH/9TA==} - - '@module-federation/node@2.7.30': - resolution: {integrity: sha512-9EP3t8v12S4ZYHAd+B/lOi/cCmir8mkbIpLuU/sRWk6HCZYz8Kc9YWG1ft6ej3akQnCeK6jD4J2rGhx/HmxrFA==} + '@module-federation/node@2.7.32': + resolution: {integrity: sha512-hUj5v2GGwpNzl2gaJS4AyzCYRzJBhN8875A+ucKF9tq3jaQb5zpy3izYMISqqbN2q9a7jz3nEUgwAh3pjri+rQ==} peerDependencies: webpack: ^5.40.0 peerDependenciesMeta: webpack: optional: true - '@module-federation/node@2.7.31': - resolution: {integrity: sha512-NSa0PFDKDLxmtfmCVHW9RhtfD9mcNOrp1d+cjVEoxb5x8dDI4jQTi1o3nsa9ettxs3bVtWhAUEQUNQBQ6ZA+Hw==} - peerDependencies: - webpack: ^5.40.0 - peerDependenciesMeta: - webpack: - optional: true - - '@module-federation/rsbuild-plugin@0.24.1': - resolution: {integrity: sha512-C2OKIj325vresCJBhZun3KT70280frl87MWon7eegAHnODQda4WcEEU6UaU0X8g2dLw9IPbkxbs2ofngRreq1g==} + '@module-federation/rsbuild-plugin@2.0.1': + resolution: {integrity: sha512-+2HOfntaVHgaOmyT0fTR9tZR2mujveoad3I9cpXUJ890Kgyz000nNHUbumQcMECPcZb3+ZqbIDjHyoazlW5IOA==} engines: {node: '>=16.0.0'} peerDependencies: - '@rsbuild/core': ^1.3.21 || ^2.0.0-0 + '@rsbuild/core': 2.0.0-beta.2 peerDependenciesMeta: '@rsbuild/core': optional: true - '@module-federation/rspack@0.24.1': - resolution: {integrity: sha512-1IFU7zwNOnPdRFiUDdvbvzITi4SxWSPl9YNiMzaGl4syaoPH5qcXR81qug76d1LFHC8i96qR/2cFyL7Ucdm+VA==} - peerDependencies: - '@rspack/core': ^0.7.0 || ^1.0.0 || ^2.0.0-0 - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - - '@module-federation/rspack@2.0.0': - resolution: {integrity: sha512-1kziarKrPRM+rJax/AaMEZTwu7ORGed2xSxfdoP9GEbAFEGyNliadvw4kB6PqAfLad3PI4lQMX2vGMLI1KoyVQ==} + '@module-federation/rspack@2.0.1': + resolution: {integrity: sha512-SAlNE8iclFmzrKtx3/C2GivXYx6nPzx4MgQV01QG/a4LpnLbwlxzdZu3rqQ2swp4NNWT/t/GT7Y+7gfhyVa7mg==} peerDependencies: '@rspack/core': ^0.7.0 || ^1.0.0 || ^2.0.0-0 typescript: ^4.9.0 || ^5.0.0 @@ -15237,65 +15165,47 @@ packages: '@module-federation/runtime-core@0.22.0': resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==} - '@module-federation/runtime-core@0.24.1': - resolution: {integrity: sha512-O0LYJ6ADJQ4fLrQNHLJc9IQGhWM3Dl613yCinR7EefmvBwUk7lmTUPWaSEOMNIbMq8oXV4ky4wFDSIEtwihAdg==} - - '@module-federation/runtime-core@2.0.0': - resolution: {integrity: sha512-UhIGUs7Mg+TwMI2lgaLnj4UehpoyXbR7HDb2+vLikgBulPmFtodeWfsxCgENEwKsIY1vS0lOun15lNOn1vo3Xg==} + '@module-federation/runtime-core@2.0.1': + resolution: {integrity: sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==} '@module-federation/runtime-tools@0.22.0': resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==} - '@module-federation/runtime-tools@0.24.1': - resolution: {integrity: sha512-+P6Yvyc+uaAvF7YceGxtiOg0wJDv6qfHv+AXsmzz54pC3N0PKu5azhBeKO28ILRmmsalnau8dkNPIv/JC04AmA==} - '@module-federation/runtime-tools@0.8.4': resolution: {integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==} - '@module-federation/runtime-tools@2.0.0': - resolution: {integrity: sha512-eMDQN4hYpwvUnCNMjfQdtPVzYaO2DdauemHVc4HnyibgqijRzBwJh9bI2ph4R1xfYEm18+QmTrfXrRlaK2Xizw==} + '@module-federation/runtime-tools@2.0.1': + resolution: {integrity: sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==} '@module-federation/runtime@0.22.0': resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==} - '@module-federation/runtime@0.24.1': - resolution: {integrity: sha512-dnCnmFzC+w49tOKvh/EgqxMR7ADefA/QMtHgicc2KDF9DDcWs4v/GszEn/2PeBalQOj1+Gr5mV7JbB73MVgiVw==} - '@module-federation/runtime@0.8.4': resolution: {integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==} - '@module-federation/runtime@2.0.0': - resolution: {integrity: sha512-vPxQrmQNq3Z1T+1fkHEvFwTdJq9wuCLvdp/lpu9k2Oy7QP/Pj6QoQ/S7J5MCIAoRwj8Wj3z3ma21/DyHwLGvzA==} + '@module-federation/runtime@2.0.1': + resolution: {integrity: sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==} '@module-federation/sdk@0.22.0': resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==} - '@module-federation/sdk@0.24.1': - resolution: {integrity: sha512-BHWIMoBCyLaJud4JlBRQ5RTOz9Q/ws3aH9On1erpU38AijVkwOkXYwNG6xrJXKVIZ8WnCAGhaeKmkHB5R6vAEw==} - '@module-federation/sdk@0.8.4': resolution: {integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==} - '@module-federation/sdk@2.0.0': - resolution: {integrity: sha512-JYd1wTulsaoLT7HTk2oXL5y5797Z+H4mzxuUEKnSJo7R34RZSqehsqPSND7n0HT/1nf7uyn0Rb4qBfR3BVvdHQ==} - - '@module-federation/third-party-dts-extractor@0.24.1': - resolution: {integrity: sha512-SfcAlY5G5P8mjhJsTyg6nKF1LeJDgeukCw7M0uUPsaEWAipHfkFr51jpy+X4xEKbY2N/Wzb6Y2x2CdnveX9j5g==} + '@module-federation/sdk@2.0.1': + resolution: {integrity: sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==} - '@module-federation/third-party-dts-extractor@2.0.0': - resolution: {integrity: sha512-B99+Wkbd2xIodVTjNCeFtFC89Uh2/AtYkSESlz4+6Cec42wyqrGxyfYm4qRY0LhJI+YmZXLk/RTm85m15eBKKg==} + '@module-federation/third-party-dts-extractor@2.0.1': + resolution: {integrity: sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==} '@module-federation/webpack-bundler-runtime@0.22.0': resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==} - '@module-federation/webpack-bundler-runtime@0.24.1': - resolution: {integrity: sha512-HydbmybyGhsriUltT02HBW73cNSX70s8XNku5g4GV+YVP1bu+jm0ADDGP86t84rhKH2Zm1gW8S57/ocPpmRsEQ==} - '@module-federation/webpack-bundler-runtime@0.8.4': resolution: {integrity: sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==} - '@module-federation/webpack-bundler-runtime@2.0.0': - resolution: {integrity: sha512-XxiFR/A1G1fa9hTyylWNbs6yEU2hC7FqHAArFptD4U9qp/xyoLgqbK4M8LwltOAyAM8hRofcMdSyiRKVlWqAfQ==} + '@module-federation/webpack-bundler-runtime@2.0.1': + resolution: {integrity: sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==} '@motionone/animation@10.18.0': resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} @@ -27837,37 +27747,16 @@ snapshots: dependencies: minimist: 1.2.8 - '@module-federation/bridge-react-webpack-plugin@0.24.1': + '@module-federation/bridge-react-webpack-plugin@2.0.1': dependencies: - '@module-federation/sdk': 0.24.1 + '@module-federation/sdk': 2.0.1 '@types/semver': 7.5.8 semver: 7.6.3 - '@module-federation/bridge-react-webpack-plugin@2.0.0': - dependencies: - '@module-federation/sdk': 2.0.0 - '@types/semver': 7.5.8 - semver: 7.6.3 - - '@module-federation/cli@0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': - dependencies: - '@module-federation/dts-plugin': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/sdk': 0.24.1 - chalk: 3.0.0 - commander: 11.1.0 - jiti: 2.4.2 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - typescript - - utf-8-validate - - vue-tsc - - '@module-federation/cli@2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + '@module-federation/cli@2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: - '@module-federation/dts-plugin': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/sdk': 2.0.0 + '@module-federation/dts-plugin': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/sdk': 2.0.1 chalk: 3.0.0 commander: 11.1.0 jiti: 2.4.2 @@ -27879,57 +27768,21 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/data-prefetch@0.24.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@module-federation/data-prefetch@2.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@module-federation/runtime': 0.24.1 - '@module-federation/sdk': 0.24.1 + '@module-federation/runtime': 2.0.1 + '@module-federation/sdk': 2.0.1 fs-extra: 9.1.0 optionalDependencies: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - '@module-federation/data-prefetch@2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': - dependencies: - '@module-federation/runtime': 2.0.0 - '@module-federation/sdk': 2.0.0 - fs-extra: 9.1.0 - optionalDependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) - - '@module-federation/dts-plugin@0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': - dependencies: - '@module-federation/error-codes': 0.24.1 - '@module-federation/managers': 0.24.1 - '@module-federation/sdk': 0.24.1 - '@module-federation/third-party-dts-extractor': 0.24.1 - adm-zip: 0.5.16 - ansi-colors: 4.1.3 - axios: 1.13.2 - chalk: 3.0.0 - fs-extra: 9.1.0 - isomorphic-ws: 5.0.0(ws@8.18.0) - koa: 3.0.3 - lodash.clonedeepwith: 4.5.0 - log4js: 6.9.1 - node-schedule: 2.1.1 - rambda: 9.4.2 - typescript: 5.9.3 - ws: 8.18.0 - optionalDependencies: - vue-tsc: 3.1.8(typescript@5.9.3) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - '@module-federation/dts-plugin@2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + '@module-federation/dts-plugin@2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: - '@module-federation/error-codes': 2.0.0 - '@module-federation/managers': 2.0.0 - '@module-federation/sdk': 2.0.0 - '@module-federation/third-party-dts-extractor': 2.0.0 + '@module-federation/error-codes': 2.0.1 + '@module-federation/managers': 2.0.1 + '@module-federation/sdk': 2.0.1 + '@module-federation/third-party-dts-extractor': 2.0.1 adm-zip: 0.5.16 ansi-colors: 4.1.3 axios: 1.13.2 @@ -27951,48 +27804,19 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.24.1 - '@module-federation/cli': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/data-prefetch': 0.24.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@module-federation/dts-plugin': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/error-codes': 0.24.1 - '@module-federation/inject-external-runtime-core-plugin': 0.24.1(@module-federation/runtime-tools@0.24.1) - '@module-federation/managers': 0.24.1 - '@module-federation/manifest': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/rspack': 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/runtime-tools': 0.24.1 - '@module-federation/sdk': 0.24.1 - btoa: 1.2.1 - schema-utils: 4.3.3 - upath: 2.0.1 - optionalDependencies: - typescript: 5.9.3 - vue-tsc: 3.1.8(typescript@5.9.3) - webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) - transitivePeerDependencies: - - '@rspack/core' - - bufferutil - - debug - - react - - react-dom - - supports-color - - utf-8-validate - - '@module-federation/enhanced@2.0.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 2.0.0 - '@module-federation/cli': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/data-prefetch': 2.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@module-federation/dts-plugin': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/error-codes': 2.0.0 - '@module-federation/inject-external-runtime-core-plugin': 2.0.0(@module-federation/runtime-tools@2.0.0) - '@module-federation/managers': 2.0.0 - '@module-federation/manifest': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/rspack': 2.0.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/runtime-tools': 2.0.0 - '@module-federation/sdk': 2.0.0 + '@module-federation/enhanced@2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': 2.0.1 + '@module-federation/cli': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/data-prefetch': 2.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@module-federation/dts-plugin': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/error-codes': 2.0.1 + '@module-federation/inject-external-runtime-core-plugin': 2.0.1(@module-federation/runtime-tools@2.0.1) + '@module-federation/managers': 2.0.1 + '@module-federation/manifest': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/rspack': 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': 2.0.1 + '@module-federation/sdk': 2.0.1 btoa: 1.2.1 schema-utils: 4.3.3 upath: 2.0.1 @@ -28011,52 +27835,25 @@ snapshots: '@module-federation/error-codes@0.22.0': {} - '@module-federation/error-codes@0.24.1': {} - '@module-federation/error-codes@0.8.4': {} - '@module-federation/error-codes@2.0.0': {} - - '@module-federation/inject-external-runtime-core-plugin@0.24.1(@module-federation/runtime-tools@0.24.1)': - dependencies: - '@module-federation/runtime-tools': 0.24.1 + '@module-federation/error-codes@2.0.1': {} - '@module-federation/inject-external-runtime-core-plugin@2.0.0(@module-federation/runtime-tools@2.0.0)': + '@module-federation/inject-external-runtime-core-plugin@2.0.1(@module-federation/runtime-tools@2.0.1)': dependencies: - '@module-federation/runtime-tools': 2.0.0 + '@module-federation/runtime-tools': 2.0.1 - '@module-federation/managers@0.24.1': + '@module-federation/managers@2.0.1': dependencies: - '@module-federation/sdk': 0.24.1 + '@module-federation/sdk': 2.0.1 find-pkg: 2.0.0 fs-extra: 9.1.0 - '@module-federation/managers@2.0.0': - dependencies: - '@module-federation/sdk': 2.0.0 - find-pkg: 2.0.0 - fs-extra: 9.1.0 - - '@module-federation/manifest@0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': - dependencies: - '@module-federation/dts-plugin': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/managers': 0.24.1 - '@module-federation/sdk': 0.24.1 - chalk: 3.0.0 - find-pkg: 2.0.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - typescript - - utf-8-validate - - vue-tsc - - '@module-federation/manifest@2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + '@module-federation/manifest@2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: - '@module-federation/dts-plugin': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/managers': 2.0.0 - '@module-federation/sdk': 2.0.0 + '@module-federation/dts-plugin': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/managers': 2.0.1 + '@module-federation/sdk': 2.0.1 chalk: 3.0.0 find-pkg: 2.0.0 transitivePeerDependencies: @@ -28067,11 +27864,11 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/node@2.7.30(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + '@module-federation/node@2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': dependencies: - '@module-federation/enhanced': 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) - '@module-federation/runtime': 0.24.1 - '@module-federation/sdk': 0.24.1 + '@module-federation/enhanced': 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/runtime': 2.0.1 + '@module-federation/sdk': 2.0.1 btoa: 1.2.1 encoding: 0.1.13 node-fetch: 2.7.0(encoding@0.1.13) @@ -28088,32 +27885,11 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/node@2.7.31(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + '@module-federation/rsbuild-plugin@2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': dependencies: - '@module-federation/enhanced': 2.0.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) - '@module-federation/runtime': 2.0.0 - '@module-federation/sdk': 2.0.0 - btoa: 1.2.1 - encoding: 0.1.13 - node-fetch: 2.7.0(encoding@0.1.13) - optionalDependencies: - webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) - transitivePeerDependencies: - - '@rspack/core' - - bufferutil - - debug - - react - - react-dom - - supports-color - - typescript - - utf-8-validate - - vue-tsc - - '@module-federation/rsbuild-plugin@0.24.1(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': - dependencies: - '@module-federation/enhanced': 0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) - '@module-federation/node': 2.7.30(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) - '@module-federation/sdk': 0.24.1 + '@module-federation/enhanced': 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/node': 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/sdk': 2.0.1 fs-extra: 11.3.0 optionalDependencies: '@rsbuild/core': 1.7.3 @@ -28129,35 +27905,15 @@ snapshots: - vue-tsc - webpack - '@module-federation/rspack@0.24.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.24.1 - '@module-federation/dts-plugin': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/inject-external-runtime-core-plugin': 0.24.1(@module-federation/runtime-tools@0.24.1) - '@module-federation/managers': 0.24.1 - '@module-federation/manifest': 0.24.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/runtime-tools': 0.24.1 - '@module-federation/sdk': 0.24.1 - '@rspack/core': 1.7.6(@swc/helpers@0.5.18) - btoa: 1.2.1 - optionalDependencies: - typescript: 5.9.3 - vue-tsc: 3.1.8(typescript@5.9.3) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - '@module-federation/rspack@2.0.0(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + '@module-federation/rspack@2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: - '@module-federation/bridge-react-webpack-plugin': 2.0.0 - '@module-federation/dts-plugin': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/inject-external-runtime-core-plugin': 2.0.0(@module-federation/runtime-tools@2.0.0) - '@module-federation/managers': 2.0.0 - '@module-federation/manifest': 2.0.0(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/runtime-tools': 2.0.0 - '@module-federation/sdk': 2.0.0 + '@module-federation/bridge-react-webpack-plugin': 2.0.1 + '@module-federation/dts-plugin': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/inject-external-runtime-core-plugin': 2.0.1(@module-federation/runtime-tools@2.0.1) + '@module-federation/managers': 2.0.1 + '@module-federation/manifest': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': 2.0.1 + '@module-federation/sdk': 2.0.1 '@rspack/core': 1.7.6(@swc/helpers@0.5.18) btoa: 1.2.1 optionalDependencies: @@ -28174,35 +27930,25 @@ snapshots: '@module-federation/error-codes': 0.22.0 '@module-federation/sdk': 0.22.0 - '@module-federation/runtime-core@0.24.1': - dependencies: - '@module-federation/error-codes': 0.24.1 - '@module-federation/sdk': 0.24.1 - - '@module-federation/runtime-core@2.0.0': + '@module-federation/runtime-core@2.0.1': dependencies: - '@module-federation/error-codes': 2.0.0 - '@module-federation/sdk': 2.0.0 + '@module-federation/error-codes': 2.0.1 + '@module-federation/sdk': 2.0.1 '@module-federation/runtime-tools@0.22.0': dependencies: '@module-federation/runtime': 0.22.0 '@module-federation/webpack-bundler-runtime': 0.22.0 - '@module-federation/runtime-tools@0.24.1': - dependencies: - '@module-federation/runtime': 0.24.1 - '@module-federation/webpack-bundler-runtime': 0.24.1 - '@module-federation/runtime-tools@0.8.4': dependencies: '@module-federation/runtime': 0.8.4 '@module-federation/webpack-bundler-runtime': 0.8.4 - '@module-federation/runtime-tools@2.0.0': + '@module-federation/runtime-tools@2.0.1': dependencies: - '@module-federation/runtime': 2.0.0 - '@module-federation/webpack-bundler-runtime': 2.0.0 + '@module-federation/runtime': 2.0.1 + '@module-federation/webpack-bundler-runtime': 2.0.1 '@module-federation/runtime@0.22.0': dependencies: @@ -28210,40 +27956,26 @@ snapshots: '@module-federation/runtime-core': 0.22.0 '@module-federation/sdk': 0.22.0 - '@module-federation/runtime@0.24.1': - dependencies: - '@module-federation/error-codes': 0.24.1 - '@module-federation/runtime-core': 0.24.1 - '@module-federation/sdk': 0.24.1 - '@module-federation/runtime@0.8.4': dependencies: '@module-federation/error-codes': 0.8.4 '@module-federation/sdk': 0.8.4 - '@module-federation/runtime@2.0.0': + '@module-federation/runtime@2.0.1': dependencies: - '@module-federation/error-codes': 2.0.0 - '@module-federation/runtime-core': 2.0.0 - '@module-federation/sdk': 2.0.0 + '@module-federation/error-codes': 2.0.1 + '@module-federation/runtime-core': 2.0.1 + '@module-federation/sdk': 2.0.1 '@module-federation/sdk@0.22.0': {} - '@module-federation/sdk@0.24.1': {} - '@module-federation/sdk@0.8.4': dependencies: isomorphic-rslog: 0.0.6 - '@module-federation/sdk@2.0.0': {} + '@module-federation/sdk@2.0.1': {} - '@module-federation/third-party-dts-extractor@0.24.1': - dependencies: - find-pkg: 2.0.0 - fs-extra: 9.1.0 - resolve: 1.22.8 - - '@module-federation/third-party-dts-extractor@2.0.0': + '@module-federation/third-party-dts-extractor@2.0.1': dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 @@ -28254,20 +27986,15 @@ snapshots: '@module-federation/runtime': 0.22.0 '@module-federation/sdk': 0.22.0 - '@module-federation/webpack-bundler-runtime@0.24.1': - dependencies: - '@module-federation/runtime': 0.24.1 - '@module-federation/sdk': 0.24.1 - '@module-federation/webpack-bundler-runtime@0.8.4': dependencies: '@module-federation/runtime': 0.8.4 '@module-federation/sdk': 0.8.4 - '@module-federation/webpack-bundler-runtime@2.0.0': + '@module-federation/webpack-bundler-runtime@2.0.1': dependencies: - '@module-federation/runtime': 2.0.0 - '@module-federation/sdk': 2.0.0 + '@module-federation/runtime': 2.0.1 + '@module-federation/sdk': 2.0.1 '@motionone/animation@10.18.0': dependencies: @@ -28487,13 +28214,13 @@ snapshots: uuid: 11.1.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)': + '@netlify/dev@4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)': dependencies: '@netlify/blobs': 10.1.0 '@netlify/config': 23.2.0 '@netlify/dev-utils': 4.3.0 '@netlify/edge-functions-dev': 1.0.0 - '@netlify/functions-dev': 1.0.0(rollup@4.55.3) + '@netlify/functions-dev': 1.0.0(encoding@0.1.13)(rollup@4.55.3) '@netlify/headers': 2.1.0 '@netlify/images': 1.3.0(@netlify/blobs@10.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2) '@netlify/redirects': 3.1.0 @@ -28561,12 +28288,12 @@ snapshots: dependencies: '@netlify/types': 2.1.0 - '@netlify/functions-dev@1.0.0(rollup@4.55.3)': + '@netlify/functions-dev@1.0.0(encoding@0.1.13)(rollup@4.55.3)': dependencies: '@netlify/blobs': 10.1.0 '@netlify/dev-utils': 4.3.0 '@netlify/functions': 5.0.0 - '@netlify/zip-it-and-ship-it': 14.1.11(rollup@4.55.3) + '@netlify/zip-it-and-ship-it': 14.1.11(encoding@0.1.13)(rollup@4.55.3) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -28656,9 +28383,9 @@ snapshots: '@netlify/types@2.1.0': {} - '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': + '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) optionalDependencies: '@tanstack/solid-start': link:packages/solid-start @@ -28686,9 +28413,9 @@ snapshots: - supports-color - uploadthing - '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': + '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@netlify/dev': 4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3) + '@netlify/dev': 4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3) '@netlify/dev-utils': 4.3.0 dedent: 1.7.0(babel-plugin-macros@3.1.0) vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) @@ -28716,13 +28443,13 @@ snapshots: - supports-color - uploadthing - '@netlify/zip-it-and-ship-it@14.1.11(rollup@4.55.3)': + '@netlify/zip-it-and-ship-it@14.1.11(encoding@0.1.13)(rollup@4.55.3)': dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.4 '@netlify/binary-info': 1.0.0 '@netlify/serverless-functions-api': 2.7.1 - '@vercel/nft': 0.29.4(rollup@4.55.3) + '@vercel/nft': 0.29.4(encoding@0.1.13)(rollup@4.55.3) archiver: 7.0.1 common-path-prefix: 3.0.0 copy-file: 11.1.0 @@ -32047,7 +31774,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vercel/nft@0.29.4(rollup@4.55.3)': + '@vercel/nft@0.29.4(encoding@0.1.13)(rollup@4.55.3)': dependencies: '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) '@rollup/pluginutils': 5.1.4(rollup@4.55.3) @@ -37944,7 +37671,7 @@ snapshots: rechoir@0.8.0: dependencies: - resolve: 1.22.10 + resolve: 1.22.11 redaxios@0.5.1: {} @@ -39698,7 +39425,7 @@ snapshots: optionalDependencies: vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) - vitest@3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1): + vitest@3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17(vitest@4.0.17))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 From dccf288c21d858d15c97ab10cc7c6a1eccac71a6 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 04:49:02 +0000 Subject: [PATCH 024/102] chore: use PR 4427 federation packages and drop local patch Co-authored-by: Zack Jackson --- .../package.json | 4 +- .../package.json | 2 +- .../package.json | 4 +- .../package.json | 2 +- package.json | 3 - ...ule-federation__rsbuild-plugin@2.0.1.patch | 190 ---------- pnpm-lock.yaml | 349 ++++++++++++++++-- 7 files changed, 333 insertions(+), 221 deletions(-) delete mode 100644 patches/@module-federation__rsbuild-plugin@2.0.1.patch diff --git a/e2e/react-start/module-federation-rsbuild-host/package.json b/e2e/react-start/module-federation-rsbuild-host/package.json index 66c889fcb1f..e8072be1987 100644 --- a/e2e/react-start/module-federation-rsbuild-host/package.json +++ b/e2e/react-start/module-federation-rsbuild-host/package.json @@ -21,9 +21,9 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@module-federation/enhanced": "^2.0.1", + "@module-federation/enhanced": "https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427", "@module-federation/node": "^2.7.32", - "@module-federation/rsbuild-plugin": "^2.0.1", + "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", "@playwright/test": "^1.50.1", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", diff --git a/e2e/react-start/module-federation-rsbuild-remote/package.json b/e2e/react-start/module-federation-rsbuild-remote/package.json index 23bf07c8fbd..33d3ae357b6 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/package.json +++ b/e2e/react-start/module-federation-rsbuild-remote/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@module-federation/node": "^2.7.32", - "@module-federation/rsbuild-plugin": "^2.0.1", + "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/react": "^19.0.8", diff --git a/examples/react/start-module-federation-rsbuild-host/package.json b/examples/react/start-module-federation-rsbuild-host/package.json index edb456bdf2f..a82028c8817 100644 --- a/examples/react/start-module-federation-rsbuild-host/package.json +++ b/examples/react/start-module-federation-rsbuild-host/package.json @@ -17,9 +17,9 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@module-federation/enhanced": "^2.0.1", + "@module-federation/enhanced": "https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427", "@module-federation/node": "^2.7.32", - "@module-federation/rsbuild-plugin": "^2.0.1", + "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/node": "^22.10.2", diff --git a/examples/react/start-module-federation-rsbuild-remote/package.json b/examples/react/start-module-federation-rsbuild-remote/package.json index ff68624ef57..66cd14fcfe1 100644 --- a/examples/react/start-module-federation-rsbuild-remote/package.json +++ b/examples/react/start-module-federation-rsbuild-remote/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@module-federation/node": "^2.7.32", - "@module-federation/rsbuild-plugin": "^2.0.1", + "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/react": "^19.0.8", diff --git a/package.json b/package.json index 81781862146..5cf794e3680 100644 --- a/package.json +++ b/package.json @@ -123,9 +123,6 @@ "@tanstack/router-utils": "workspace:*", "@tanstack/start-static-server-functions": "workspace:*", "@tanstack/nitro-v2-vite-plugin": "workspace:*" - }, - "patchedDependencies": { - "@module-federation/rsbuild-plugin@2.0.1": "patches/@module-federation__rsbuild-plugin@2.0.1.patch" } } } diff --git a/patches/@module-federation__rsbuild-plugin@2.0.1.patch b/patches/@module-federation__rsbuild-plugin@2.0.1.patch deleted file mode 100644 index 16185b43d2e..00000000000 --- a/patches/@module-federation__rsbuild-plugin@2.0.1.patch +++ /dev/null @@ -1,190 +0,0 @@ -diff --git a/dist/cli/index.js b/dist/cli/index.js -index 5c7dccc5dd2322b8146c3a7303cd36150b51a84e..bdd9c2ecf0660403f5b4599383b70f73e8813e66 100644 ---- a/dist/cli/index.js -+++ b/dist/cli/index.js -@@ -97,6 +97,23 @@ const LIB_FORMAT = [ - 'modern-module' - ]; - const DEFAULT_MF_ENVIRONMENT_NAME = 'mf'; -+const DEFAULT_WEB_ENVIRONMENT_NAME = 'web'; -+const DEFAULT_NODE_ENVIRONMENT_NAME = 'node'; -+const resolveDefaultEnvironmentName = ({ callerName, target })=>{ -+ if (callerName === external_constant_js_namespaceObject.CALL_NAME_MAP.RSLIB) { -+ return DEFAULT_MF_ENVIRONMENT_NAME; -+ } -+ if (callerName === external_constant_js_namespaceObject.CALL_NAME_MAP.RSPRESS) { -+ if (target === 'node') { -+ return DEFAULT_NODE_ENVIRONMENT_NAME; -+ } -+ return DEFAULT_WEB_ENVIRONMENT_NAME; -+ } -+ if (target === 'node') { -+ return DEFAULT_NODE_ENVIRONMENT_NAME; -+ } -+ return DEFAULT_WEB_ENVIRONMENT_NAME; -+}; - function isStoryBook(rsbuildConfig) { - var _rsbuildConfig_plugins; - if ((_rsbuildConfig_plugins = rsbuildConfig.plugins) === null || _rsbuildConfig_plugins === void 0 ? void 0 : _rsbuildConfig_plugins.find((p)=>p && 'name' in p && p.name === 'module-federation-storybook-plugin')) { -@@ -123,7 +140,7 @@ const isRspressSSGConfig = (bundlerConfigName)=>{ - const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - name: RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, - setup: (api)=>{ -- const { target = 'web', ssr = undefined, ssrDir = external_utils_js_namespaceObject.SSR_DIR, environment = DEFAULT_MF_ENVIRONMENT_NAME } = rsbuildOptions || {}; -+ const { target = 'web', ssr = undefined, ssrDir = external_utils_js_namespaceObject.SSR_DIR, environment: configuredEnvironment } = rsbuildOptions || {}; - if (ssr) { - throw new Error("The `ssr` option is deprecated. If you want to enable SSR, please use `target: 'dual'` instead."); - } -@@ -135,6 +152,10 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - const isRslib = callerName === external_constant_js_namespaceObject.CALL_NAME_MAP.RSLIB; - const isRspress = callerName === external_constant_js_namespaceObject.CALL_NAME_MAP.RSPRESS; - const isSSR = target === 'dual'; -+ const environment = configuredEnvironment ?? resolveDefaultEnvironmentName({ -+ callerName, -+ target -+ }); - if (isSSR && !isStoryBook(originalRsbuildConfig)) { - var _rsbuildConfig_environments; - if (!isRslib && !isRspress) { -@@ -206,8 +227,14 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - }); - } - } else if (target === 'node') { -- const mfEnv = config.environments[ssr_js_namespaceObject.ENV_NAME]; -- (0,ssr_js_namespaceObject.patchToolsTspack)(mfEnv, (config, { environment })=>{ -+ var _config_environments2; -+ const nodeTargetEnv = (_config_environments2 = config.environments) === null || _config_environments2 === void 0 ? void 0 : _config_environments2[environment]; -+ if (!nodeTargetEnv) { -+ const availableEnvironments = Object.keys(config.environments || {}); -+ const availableEnvironmentsLabel = availableEnvironments.length > 0 ? availableEnvironments.join(', ') : '(none)'; -+ throw new Error(`Can not find environment '${environment}' when using target: 'node'. Available environments: ${availableEnvironmentsLabel}.`); -+ } -+ (0,ssr_js_namespaceObject.patchToolsTspack)(nodeTargetEnv, (config, { environment })=>{ - config.target = 'async-node'; - }); - } -@@ -284,7 +311,9 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - throw new Error('Can not get bundlerConfigs!'); - } - bundlerConfigs.forEach((bundlerConfig)=>{ -- if (!isMFFormat(bundlerConfig) && !isRspress) { -+ const bundlerConfigName = bundlerConfig.name || ''; -+ const isNodeTargetEnvironmentConfig = target === 'node' && bundlerConfigName === environment; -+ if (!isMFFormat(bundlerConfig) && !isRspress && !isNodeTargetEnvironmentConfig) { - return; - } else if (isStoryBook(originalRsbuildConfig)) { - bundlerConfig.output.uniqueName = `${moduleFederationOptions.name} -storybook - host`; -@@ -338,7 +367,7 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - bundlerConfig.output.chunkLoading = 'jsonp'; - bundlerConfig.output.chunkLoadingGlobal = `chunk_${moduleFederationOptions.name} `; - } -- if (target === 'node' && isMFFormat(bundlerConfig)) { -+ if (isNodeTargetEnvironmentConfig) { - (0,ssr_js_namespaceObject.patchNodeConfig)(bundlerConfig, moduleFederationOptions); - (0,ssr_js_namespaceObject.patchNodeMFConfig)(moduleFederationOptions); - } -@@ -353,7 +382,8 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - } - if (!bundlerConfig.plugins.find((p)=>p && p.name === rspack_namespaceObject.PLUGIN_NAME)) { - var _bundlerConfig_output3; -- if (isSSRConfig(bundlerConfig.name)) { -+ const shouldUseSSRPluginConfig = isSSRConfig(bundlerConfig.name) || isNodeTargetEnvironmentConfig; -+ if (shouldUseSSRPluginConfig) { - generateMergedStatsAndManifestOptions.options.nodePlugin = new rspack_namespaceObject.ModuleFederationPlugin((0,external_utils_js_namespaceObject.createSSRMFConfig)(moduleFederationOptions)); - generateMergedStatsAndManifestOptions.options.nodeEnvironmentName = bundlerConfig.name || external_utils_js_namespaceObject.SSR_ENV_NAME; - bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.nodePlugin); -diff --git a/dist/cli/index.mjs b/dist/cli/index.mjs -index d3871cdc2130132b57f9cdd625014d1862075cc5..322955988de636c92577d72423c97d5bb4cb47f1 100644 ---- a/dist/cli/index.mjs -+++ b/dist/cli/index.mjs -@@ -40,6 +40,23 @@ const LIB_FORMAT = [ - 'modern-module' - ]; - const DEFAULT_MF_ENVIRONMENT_NAME = 'mf'; -+const DEFAULT_WEB_ENVIRONMENT_NAME = 'web'; -+const DEFAULT_NODE_ENVIRONMENT_NAME = 'node'; -+const resolveDefaultEnvironmentName = ({ callerName, target })=>{ -+ if (callerName === CALL_NAME_MAP.RSLIB) { -+ return DEFAULT_MF_ENVIRONMENT_NAME; -+ } -+ if (callerName === CALL_NAME_MAP.RSPRESS) { -+ if (target === 'node') { -+ return DEFAULT_NODE_ENVIRONMENT_NAME; -+ } -+ return DEFAULT_WEB_ENVIRONMENT_NAME; -+ } -+ if (target === 'node') { -+ return DEFAULT_NODE_ENVIRONMENT_NAME; -+ } -+ return DEFAULT_WEB_ENVIRONMENT_NAME; -+}; - function isStoryBook(rsbuildConfig) { - var _rsbuildConfig_plugins; - if ((_rsbuildConfig_plugins = rsbuildConfig.plugins) === null || _rsbuildConfig_plugins === void 0 ? void 0 : _rsbuildConfig_plugins.find((p)=>p && 'name' in p && p.name === 'module-federation-storybook-plugin')) { -@@ -66,7 +83,7 @@ const isRspressSSGConfig = (bundlerConfigName)=>{ - const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - name: RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, - setup: (api)=>{ -- const { target = 'web', ssr = undefined, ssrDir = SSR_DIR, environment = DEFAULT_MF_ENVIRONMENT_NAME } = rsbuildOptions || {}; -+ const { target = 'web', ssr = undefined, ssrDir = SSR_DIR, environment: configuredEnvironment } = rsbuildOptions || {}; - if (ssr) { - throw new Error("The `ssr` option is deprecated. If you want to enable SSR, please use `target: 'dual'` instead."); - } -@@ -78,6 +95,10 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - const isRslib = callerName === CALL_NAME_MAP.RSLIB; - const isRspress = callerName === CALL_NAME_MAP.RSPRESS; - const isSSR = target === 'dual'; -+ const environment = configuredEnvironment ?? resolveDefaultEnvironmentName({ -+ callerName, -+ target -+ }); - if (isSSR && !isStoryBook(originalRsbuildConfig)) { - var _rsbuildConfig_environments; - if (!isRslib && !isRspress) { -@@ -149,8 +170,14 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - }); - } - } else if (target === 'node') { -- const mfEnv = config.environments[ENV_NAME]; -- patchToolsTspack(mfEnv, (config, { environment })=>{ -+ var _config_environments2; -+ const nodeTargetEnv = (_config_environments2 = config.environments) === null || _config_environments2 === void 0 ? void 0 : _config_environments2[environment]; -+ if (!nodeTargetEnv) { -+ const availableEnvironments = Object.keys(config.environments || {}); -+ const availableEnvironmentsLabel = availableEnvironments.length > 0 ? availableEnvironments.join(', ') : '(none)'; -+ throw new Error(`Can not find environment '${environment}' when using target: 'node'. Available environments: ${availableEnvironmentsLabel}.`); -+ } -+ patchToolsTspack(nodeTargetEnv, (config, { environment })=>{ - config.target = 'async-node'; - }); - } -@@ -227,7 +254,9 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - throw new Error('Can not get bundlerConfigs!'); - } - bundlerConfigs.forEach((bundlerConfig)=>{ -- if (!isMFFormat(bundlerConfig) && !isRspress) { -+ const bundlerConfigName = bundlerConfig.name || ''; -+ const isNodeTargetEnvironmentConfig = target === 'node' && bundlerConfigName === environment; -+ if (!isMFFormat(bundlerConfig) && !isRspress && !isNodeTargetEnvironmentConfig) { - return; - } else if (isStoryBook(originalRsbuildConfig)) { - bundlerConfig.output.uniqueName = `${moduleFederationOptions.name} -storybook - host`; -@@ -281,7 +310,7 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - bundlerConfig.output.chunkLoading = 'jsonp'; - bundlerConfig.output.chunkLoadingGlobal = `chunk_${moduleFederationOptions.name} `; - } -- if (target === 'node' && isMFFormat(bundlerConfig)) { -+ if (isNodeTargetEnvironmentConfig) { - patchNodeConfig(bundlerConfig, moduleFederationOptions); - patchNodeMFConfig(moduleFederationOptions); - } -@@ -296,7 +325,8 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({ - } - if (!bundlerConfig.plugins.find((p)=>p && p.name === PLUGIN_NAME)) { - var _bundlerConfig_output3; -- if (isSSRConfig(bundlerConfig.name)) { -+ const shouldUseSSRPluginConfig = isSSRConfig(bundlerConfig.name) || isNodeTargetEnvironmentConfig; -+ if (shouldUseSSRPluginConfig) { - generateMergedStatsAndManifestOptions.options.nodePlugin = new ModuleFederationPlugin(createSSRMFConfig(moduleFederationOptions)); - generateMergedStatsAndManifestOptions.options.nodeEnvironmentName = bundlerConfig.name || SSR_ENV_NAME; - bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.nodePlugin); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5e4eceee87..83c268fec02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,11 +57,6 @@ overrides: '@tanstack/start-static-server-functions': workspace:* '@tanstack/nitro-v2-vite-plugin': workspace:* -patchedDependencies: - '@module-federation/rsbuild-plugin@2.0.1': - hash: b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce - path: patches/@module-federation__rsbuild-plugin@2.0.1.patch - importers: .: @@ -1809,14 +1804,14 @@ importers: version: 19.2.3(react@19.2.3) devDependencies: '@module-federation/enhanced': - specifier: ^2.0.1 - version: 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427 + version: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/node': specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: ^2.0.1 - version: 2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427 + version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@playwright/test': specifier: ^1.57.0 version: 1.57.0 @@ -1858,8 +1853,8 @@ importers: specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: ^2.0.1 - version: 2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427 + version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -8854,14 +8849,14 @@ importers: version: 19.2.3(react@19.2.3) devDependencies: '@module-federation/enhanced': - specifier: ^2.0.1 - version: 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427 + version: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/node': specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: ^2.0.1 - version: 2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427 + version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -8897,8 +8892,8 @@ importers: specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: ^2.0.1 - version: 2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427 + version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -15073,11 +15068,21 @@ packages: '@module-federation/bridge-react-webpack-plugin@2.0.1': resolution: {integrity: sha512-D7LMW5EMAJShOMR1aZDAJ6s+MdsYDHaQyJADLQ3LaY0sne/BkVqkPikUwcO1IwOwKbXjYsDlQVOEvk9wZVRFhA==} + '@module-federation/bridge-react-webpack-plugin@https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/cli@2.0.1': resolution: {integrity: sha512-2SL5Y8iODNX10y9T3CBLhHjSXo4afnA1BK82m4sNfZebuVO+o34bxewqwod9xfWq9xhTZmOSFZ+n+lgTKRv+CQ==} engines: {node: '>=16.0.0'} hasBin: true + '@module-federation/cli@https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + engines: {node: '>=16.0.0'} + hasBin: true + '@module-federation/data-prefetch@2.0.1': resolution: {integrity: sha512-Kq0P1OABGt6QAvs6TaE/zY9Ut9Y/oJFrzoSF3eWaCYbUAr2KD2SpTyMsPz4ssBzjeKXTgimugh6tHHd6mpCBIQ==} peerDependencies: @@ -15089,6 +15094,18 @@ packages: react-dom: optional: true + '@module-federation/data-prefetch@https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + peerDependencies: + react: ^19.2.3 + react-dom: ^19.2.3 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + '@module-federation/dts-plugin@2.0.1': resolution: {integrity: sha512-PLneTsf1fQS5/RTBedtLAAmCPRdMfIlhfJkOa8QH3WDJaQsqm8Wb3r2cTUBf2aNj/bP3aH/y6Hs9JFB/4x0l5g==} peerDependencies: @@ -15098,6 +15115,16 @@ packages: vue-tsc: optional: true + '@module-federation/dts-plugin@https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + vue-tsc: + optional: true + '@module-federation/enhanced@2.0.1': resolution: {integrity: sha512-EZIARQ/8ScoTP6PV8+E4SsmMYWK4ErrikZJ0G/FX8wvK8mCtdoKatFtvDN9++P6Nl78kN9zHYgAV4AHKdBVjfQ==} hasBin: true @@ -15113,6 +15140,38 @@ packages: webpack: optional: true + '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + hasBin: true + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + + '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427': + resolution: {integrity: sha512-zDqROQ1hbkW2h0TO8FiSPmXafLKk69xV7nV59STUY3TH2RcHJp5oOULlLzDCD6SlIa/NMO7Hj/6T/HTaXgiuvA==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427} + version: 2.0.1 + hasBin: true + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true + '@module-federation/error-codes@0.22.0': resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} @@ -15122,17 +15181,35 @@ packages: '@module-federation/error-codes@2.0.1': resolution: {integrity: sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==} + '@module-federation/error-codes@https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/inject-external-runtime-core-plugin@2.0.1': resolution: {integrity: sha512-oAA7G+4GCHM+WRYfscR/x4GwCyM9CEqfdD9/x2L6y8mtLWK9anRLKTocsI759AvzXsbT1m3EQ5ki1O6wlwDu3g==} peerDependencies: '@module-federation/runtime-tools': 2.0.1 + '@module-federation/inject-external-runtime-core-plugin@https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + peerDependencies: + '@module-federation/runtime-tools': 2.0.1 + '@module-federation/managers@2.0.1': resolution: {integrity: sha512-KR01lSlcYRQ9C6hW2a8CQQtAE0LvfTLgtV/6ZNUTagw8sRfeDln+ggrZsYilKu9zl0i8RPDgpv/kS60o4lcxCQ==} + '@module-federation/managers@https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/manifest@2.0.1': resolution: {integrity: sha512-p8nYGjHWp17MsYdW/Vv0ogBDiTTsI1PHWPQbvVIqLQXDqwiesaRSRR1zziECXQoEL8lV5Bs+uSkcaJGhea9P+A==} + '@module-federation/manifest@https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/node@2.7.32': resolution: {integrity: sha512-hUj5v2GGwpNzl2gaJS4AyzCYRzJBhN8875A+ucKF9tq3jaQb5zpy3izYMISqqbN2q9a7jz3nEUgwAh3pjri+rQ==} peerDependencies: @@ -15141,8 +15218,9 @@ packages: webpack: optional: true - '@module-federation/rsbuild-plugin@2.0.1': - resolution: {integrity: sha512-+2HOfntaVHgaOmyT0fTR9tZR2mujveoad3I9cpXUJ890Kgyz000nNHUbumQcMECPcZb3+ZqbIDjHyoazlW5IOA==} + '@module-federation/rsbuild-plugin@https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427} + version: 2.0.1 engines: {node: '>=16.0.0'} peerDependencies: '@rsbuild/core': 2.0.0-beta.2 @@ -15162,12 +15240,29 @@ packages: vue-tsc: optional: true + '@module-federation/rspack@https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + peerDependencies: + '@rspack/core': ^0.7.0 || ^1.0.0 || ^2.0.0-0 + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + '@module-federation/runtime-core@0.22.0': resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==} '@module-federation/runtime-core@2.0.1': resolution: {integrity: sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==} + '@module-federation/runtime-core@https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/runtime-tools@0.22.0': resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==} @@ -15177,6 +15272,10 @@ packages: '@module-federation/runtime-tools@2.0.1': resolution: {integrity: sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==} + '@module-federation/runtime-tools@https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/runtime@0.22.0': resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==} @@ -15186,6 +15285,10 @@ packages: '@module-federation/runtime@2.0.1': resolution: {integrity: sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==} + '@module-federation/runtime@https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/sdk@0.22.0': resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==} @@ -15195,9 +15298,17 @@ packages: '@module-federation/sdk@2.0.1': resolution: {integrity: sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==} + '@module-federation/sdk@https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/third-party-dts-extractor@2.0.1': resolution: {integrity: sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==} + '@module-federation/third-party-dts-extractor@https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@module-federation/webpack-bundler-runtime@0.22.0': resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==} @@ -15207,6 +15318,10 @@ packages: '@module-federation/webpack-bundler-runtime@2.0.1': resolution: {integrity: sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==} + '@module-federation/webpack-bundler-runtime@https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@2b1724efd450cc26e874d9840461d23b751cd646': + resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@2b1724efd450cc26e874d9840461d23b751cd646} + version: 2.0.1 + '@motionone/animation@10.18.0': resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} @@ -27753,6 +27868,12 @@ snapshots: '@types/semver': 7.5.8 semver: 7.6.3 + '@module-federation/bridge-react-webpack-plugin@https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646': + dependencies: + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@types/semver': 7.5.8 + semver: 7.6.3 + '@module-federation/cli@2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: '@module-federation/dts-plugin': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) @@ -27768,6 +27889,21 @@ snapshots: - utf-8-validate - vue-tsc + '@module-federation/cli@https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + chalk: 3.0.0 + commander: 11.1.0 + jiti: 2.4.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + '@module-federation/data-prefetch@2.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@module-federation/runtime': 2.0.1 @@ -27777,6 +27913,15 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) + '@module-federation/data-prefetch@https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + dependencies: + '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + fs-extra: 9.1.0 + optionalDependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + '@module-federation/dts-plugin@2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: '@module-federation/error-codes': 2.0.1 @@ -27804,6 +27949,32 @@ snapshots: - supports-color - utf-8-validate + '@module-federation/dts-plugin@https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/third-party-dts-extractor': https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@2b1724efd450cc26e874d9840461d23b751cd646 + adm-zip: 0.5.16 + ansi-colors: 4.1.3 + axios: 1.13.2 + chalk: 3.0.0 + fs-extra: 9.1.0 + isomorphic-ws: 5.0.0(ws@8.18.0) + lodash.clonedeepwith: 4.5.0 + log4js: 6.9.1 + node-schedule: 2.1.1 + rambda: 9.4.2 + typescript: 5.9.3 + ws: 8.18.0 + optionalDependencies: + vue-tsc: 3.1.8(typescript@5.9.3) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + '@module-federation/enhanced@2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': dependencies: '@module-federation/bridge-react-webpack-plugin': 2.0.1 @@ -27833,22 +28004,92 @@ snapshots: - supports-color - utf-8-validate + '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/cli': https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/data-prefetch': https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/inject-external-runtime-core-plugin': https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646(@module-federation/runtime-tools@2.0.1) + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/manifest': https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/rspack': https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + btoa: 1.2.1 + schema-utils: 4.3.3 + upath: 2.0.1 + optionalDependencies: + typescript: 5.9.3 + vue-tsc: 3.1.8(typescript@5.9.3) + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + + '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/cli': https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/data-prefetch': https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/inject-external-runtime-core-plugin': https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646(@module-federation/runtime-tools@2.0.1) + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/manifest': https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/rspack': https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + btoa: 1.2.1 + schema-utils: 4.3.3 + upath: 2.0.1 + optionalDependencies: + typescript: 5.9.3 + vue-tsc: 3.1.8(typescript@5.9.3) + webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) + transitivePeerDependencies: + - '@rspack/core' + - bufferutil + - debug + - react + - react-dom + - supports-color + - utf-8-validate + '@module-federation/error-codes@0.22.0': {} '@module-federation/error-codes@0.8.4': {} '@module-federation/error-codes@2.0.1': {} + '@module-federation/error-codes@https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646': {} + '@module-federation/inject-external-runtime-core-plugin@2.0.1(@module-federation/runtime-tools@2.0.1)': dependencies: '@module-federation/runtime-tools': 2.0.1 + '@module-federation/inject-external-runtime-core-plugin@https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646(@module-federation/runtime-tools@2.0.1)': + dependencies: + '@module-federation/runtime-tools': 2.0.1 + '@module-federation/managers@2.0.1': dependencies: '@module-federation/sdk': 2.0.1 find-pkg: 2.0.0 fs-extra: 9.1.0 + '@module-federation/managers@https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646': + dependencies: + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + find-pkg: 2.0.0 + fs-extra: 9.1.0 + '@module-federation/manifest@2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: '@module-federation/dts-plugin': 2.0.1(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) @@ -27864,6 +28105,21 @@ snapshots: - utf-8-validate - vue-tsc + '@module-federation/manifest@https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + chalk: 3.0.0 + find-pkg: 2.0.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - typescript + - utf-8-validate + - vue-tsc + '@module-federation/node@2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': dependencies: '@module-federation/enhanced': 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) @@ -27885,11 +28141,11 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/rsbuild-plugin@2.0.1(patch_hash=b9a3ce25a1f8e438ad4e71cfeebd672e793ffab9222104af89bc85f52b1d77ce)(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + '@module-federation/rsbuild-plugin@https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': dependencies: - '@module-federation/enhanced': 2.0.1(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/enhanced': https://pkg.pr.new/module-federation/core/@module-federation/enhanced@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/node': 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) - '@module-federation/sdk': 2.0.1 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 fs-extra: 11.3.0 optionalDependencies: '@rsbuild/core': 1.7.3 @@ -27925,6 +28181,26 @@ snapshots: - supports-color - utf-8-validate + '@module-federation/rspack@https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/inject-external-runtime-core-plugin': https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646(@module-federation/runtime-tools@2.0.1) + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/manifest': https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@rspack/core': 1.7.6(@swc/helpers@0.5.18) + btoa: 1.2.1 + optionalDependencies: + typescript: 5.9.3 + vue-tsc: 3.1.8(typescript@5.9.3) + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + '@module-federation/runtime-core@0.22.0': dependencies: '@module-federation/error-codes': 0.22.0 @@ -27935,6 +28211,11 @@ snapshots: '@module-federation/error-codes': 2.0.1 '@module-federation/sdk': 2.0.1 + '@module-federation/runtime-core@https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@2b1724efd450cc26e874d9840461d23b751cd646': + dependencies: + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/runtime-tools@0.22.0': dependencies: '@module-federation/runtime': 0.22.0 @@ -27950,6 +28231,11 @@ snapshots: '@module-federation/runtime': 2.0.1 '@module-federation/webpack-bundler-runtime': 2.0.1 + '@module-federation/runtime-tools@https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646': + dependencies: + '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/webpack-bundler-runtime': https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/runtime@0.22.0': dependencies: '@module-federation/error-codes': 0.22.0 @@ -27967,6 +28253,12 @@ snapshots: '@module-federation/runtime-core': 2.0.1 '@module-federation/sdk': 2.0.1 + '@module-federation/runtime@https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646': + dependencies: + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/runtime-core': https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk@0.22.0': {} '@module-federation/sdk@0.8.4': @@ -27975,12 +28267,20 @@ snapshots: '@module-federation/sdk@2.0.1': {} + '@module-federation/sdk@https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646': {} + '@module-federation/third-party-dts-extractor@2.0.1': dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 resolve: 1.22.8 + '@module-federation/third-party-dts-extractor@https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@2b1724efd450cc26e874d9840461d23b751cd646': + dependencies: + find-pkg: 2.0.0 + fs-extra: 9.1.0 + resolve: 1.22.8 + '@module-federation/webpack-bundler-runtime@0.22.0': dependencies: '@module-federation/runtime': 0.22.0 @@ -27996,6 +28296,11 @@ snapshots: '@module-federation/runtime': 2.0.1 '@module-federation/sdk': 2.0.1 + '@module-federation/webpack-bundler-runtime@https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@2b1724efd450cc26e874d9840461d23b751cd646': + dependencies: + '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@motionone/animation@10.18.0': dependencies: '@motionone/easing': 10.18.0 From 8da2584815b4434e16ffe2f9908a57e2427c3f1f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 06:28:32 +0000 Subject: [PATCH 025/102] chore: move rsbuild federation fixtures to plugin-only wiring Co-authored-by: Zack Jackson --- .../package.json | 1 - .../rsbuild.config.ts | 46 ++++---- .../rsbuild.config.ts | 102 ++++++++++-------- .../package.json | 1 - .../rsbuild.config.ts | 46 ++++---- .../rsbuild.config.ts | 102 ++++++++++-------- pnpm-lock.yaml | 81 +++----------- 7 files changed, 173 insertions(+), 206 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/package.json b/e2e/react-start/module-federation-rsbuild-host/package.json index e8072be1987..74da5f48127 100644 --- a/e2e/react-start/module-federation-rsbuild-host/package.json +++ b/e2e/react-start/module-federation-rsbuild-host/package.json @@ -21,7 +21,6 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@module-federation/enhanced": "https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427", "@module-federation/node": "^2.7.32", "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", "@playwright/test": "^1.50.1", diff --git a/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts index 74d35f63f91..181091c5522 100644 --- a/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts @@ -2,7 +2,6 @@ import { defineConfig } from '@rsbuild/core' import { createRequire } from 'node:module' import { pluginReact } from '@rsbuild/plugin-react' import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' -import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack' import { tanstackStart } from '@tanstack/react-start/plugin/rsbuild' const require = createRequire(import.meta.url) @@ -62,31 +61,30 @@ export default defineConfig({ environment: 'client', }, ), + pluginModuleFederation( + { + name: 'mf_host_ssr', + remotes: { + mf_remote: `mf_remote@${remoteOrigin}/ssr/remoteEntry.js`, + }, + dts: false, + remoteType: 'script', + experiments: { + asyncStartup: true, + }, + runtimePlugins: enableServerFederationRuntime + ? [require.resolve('@module-federation/node/runtimePlugin')] + : [], + shared, + }, + { + target: 'node', + environment: 'ssr', + }, + ), ...tanstackStart(startConfig), ], environments: { - ssr: { - tools: { - rspack: { - plugins: [ - new ModuleFederationPlugin({ - name: 'mf_host_ssr', - remotes: { - mf_remote: `mf_remote@${remoteOrigin}/ssr/remoteEntry.js`, - }, - dts: false, - experiments: { - asyncStartup: true, - }, - remoteType: 'script', - runtimePlugins: enableServerFederationRuntime - ? [require.resolve('@module-federation/node/runtimePlugin')] - : [], - shared, - }), - ], - }, - }, - }, + ssr: {}, }, }) diff --git a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts index edf85adc63f..a3b745cbbe9 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts @@ -2,7 +2,6 @@ import { defineConfig } from '@rsbuild/core' import { createRequire } from 'node:module' import { pluginReact } from '@rsbuild/plugin-react' import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' -import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack' const require = createRequire(import.meta.url) const remotePort = Number(process.env.REMOTE_PORT || 3001) @@ -11,26 +10,67 @@ const remoteOrigin = `http://localhost:${remotePort}` export default defineConfig({ plugins: [ pluginReact(), - pluginModuleFederation({ - name: 'mf_remote', - filename: 'remoteEntry.js', - exposes: { - './message': './src/message.tsx', - './routes': './src/routes.tsx', - './server-data': './src/server-data.ts', + pluginModuleFederation( + { + name: 'mf_remote', + filename: 'remoteEntry.js', + exposes: { + './message': './src/message.tsx', + './routes': './src/routes.tsx', + './server-data': './src/server-data.ts', + }, + experiments: { + asyncStartup: true, + }, + runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], + shared: { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, + }, + }, + { + environment: 'web', }, - runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], - shared: { - react: { - singleton: true, - requiredVersion: false, + ), + pluginModuleFederation( + { + name: 'mf_remote', + filename: 'remoteEntry.js', + dts: false, + library: { + type: 'commonjs-module', }, - 'react-dom': { - singleton: true, - requiredVersion: false, + exposes: { + './message': './src/message.tsx', + './routes': './src/routes.tsx', + './server-data': './src/server-data.ts', }, + experiments: { + asyncStartup: true, + }, + runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], + shared: { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, + }, + }, + { + target: 'node', + environment: 'ssr', }, - }), + ), ], environments: { web: { @@ -59,34 +99,6 @@ export default defineConfig({ type: 'commonjs-module', }, }, - plugins: [ - new ModuleFederationPlugin({ - name: 'mf_remote', - filename: 'remoteEntry.js', - library: { - type: 'commonjs-module', - }, - dts: false, - exposes: { - './message': './src/message.tsx', - './routes': './src/routes.tsx', - './server-data': './src/server-data.ts', - }, - runtimePlugins: [ - require.resolve('@module-federation/node/runtimePlugin'), - ], - shared: { - react: { - singleton: true, - requiredVersion: false, - }, - 'react-dom': { - singleton: true, - requiredVersion: false, - }, - }, - }), - ], }, }, }, diff --git a/examples/react/start-module-federation-rsbuild-host/package.json b/examples/react/start-module-federation-rsbuild-host/package.json index a82028c8817..e2bfe6ce4d4 100644 --- a/examples/react/start-module-federation-rsbuild-host/package.json +++ b/examples/react/start-module-federation-rsbuild-host/package.json @@ -17,7 +17,6 @@ "react-dom": "^19.0.0" }, "devDependencies": { - "@module-federation/enhanced": "https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427", "@module-federation/node": "^2.7.32", "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", "@rsbuild/core": "^1.3.21", diff --git a/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts index 74d35f63f91..181091c5522 100644 --- a/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts @@ -2,7 +2,6 @@ import { defineConfig } from '@rsbuild/core' import { createRequire } from 'node:module' import { pluginReact } from '@rsbuild/plugin-react' import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' -import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack' import { tanstackStart } from '@tanstack/react-start/plugin/rsbuild' const require = createRequire(import.meta.url) @@ -62,31 +61,30 @@ export default defineConfig({ environment: 'client', }, ), + pluginModuleFederation( + { + name: 'mf_host_ssr', + remotes: { + mf_remote: `mf_remote@${remoteOrigin}/ssr/remoteEntry.js`, + }, + dts: false, + remoteType: 'script', + experiments: { + asyncStartup: true, + }, + runtimePlugins: enableServerFederationRuntime + ? [require.resolve('@module-federation/node/runtimePlugin')] + : [], + shared, + }, + { + target: 'node', + environment: 'ssr', + }, + ), ...tanstackStart(startConfig), ], environments: { - ssr: { - tools: { - rspack: { - plugins: [ - new ModuleFederationPlugin({ - name: 'mf_host_ssr', - remotes: { - mf_remote: `mf_remote@${remoteOrigin}/ssr/remoteEntry.js`, - }, - dts: false, - experiments: { - asyncStartup: true, - }, - remoteType: 'script', - runtimePlugins: enableServerFederationRuntime - ? [require.resolve('@module-federation/node/runtimePlugin')] - : [], - shared, - }), - ], - }, - }, - }, + ssr: {}, }, }) diff --git a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts index edf85adc63f..a3b745cbbe9 100644 --- a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts @@ -2,7 +2,6 @@ import { defineConfig } from '@rsbuild/core' import { createRequire } from 'node:module' import { pluginReact } from '@rsbuild/plugin-react' import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' -import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack' const require = createRequire(import.meta.url) const remotePort = Number(process.env.REMOTE_PORT || 3001) @@ -11,26 +10,67 @@ const remoteOrigin = `http://localhost:${remotePort}` export default defineConfig({ plugins: [ pluginReact(), - pluginModuleFederation({ - name: 'mf_remote', - filename: 'remoteEntry.js', - exposes: { - './message': './src/message.tsx', - './routes': './src/routes.tsx', - './server-data': './src/server-data.ts', + pluginModuleFederation( + { + name: 'mf_remote', + filename: 'remoteEntry.js', + exposes: { + './message': './src/message.tsx', + './routes': './src/routes.tsx', + './server-data': './src/server-data.ts', + }, + experiments: { + asyncStartup: true, + }, + runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], + shared: { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, + }, + }, + { + environment: 'web', }, - runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], - shared: { - react: { - singleton: true, - requiredVersion: false, + ), + pluginModuleFederation( + { + name: 'mf_remote', + filename: 'remoteEntry.js', + dts: false, + library: { + type: 'commonjs-module', }, - 'react-dom': { - singleton: true, - requiredVersion: false, + exposes: { + './message': './src/message.tsx', + './routes': './src/routes.tsx', + './server-data': './src/server-data.ts', }, + experiments: { + asyncStartup: true, + }, + runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], + shared: { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, + }, + }, + { + target: 'node', + environment: 'ssr', }, - }), + ), ], environments: { web: { @@ -59,34 +99,6 @@ export default defineConfig({ type: 'commonjs-module', }, }, - plugins: [ - new ModuleFederationPlugin({ - name: 'mf_remote', - filename: 'remoteEntry.js', - library: { - type: 'commonjs-module', - }, - dts: false, - exposes: { - './message': './src/message.tsx', - './routes': './src/routes.tsx', - './server-data': './src/server-data.ts', - }, - runtimePlugins: [ - require.resolve('@module-federation/node/runtimePlugin'), - ], - shared: { - react: { - singleton: true, - requiredVersion: false, - }, - 'react-dom': { - singleton: true, - requiredVersion: false, - }, - }, - }), - ], }, }, }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83c268fec02..5c2ead28fd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1803,9 +1803,6 @@ importers: specifier: ^19.2.3 version: 19.2.3(react@19.2.3) devDependencies: - '@module-federation/enhanced': - specifier: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427 - version: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/node': specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) @@ -8477,7 +8474,7 @@ importers: version: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17(vitest@4.0.17))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) + version: 3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) web-vitals: specifier: ^5.1.0 version: 5.1.0 @@ -8848,9 +8845,6 @@ importers: specifier: ^19.2.3 version: 19.2.3(react@19.2.3) devDependencies: - '@module-federation/enhanced': - specifier: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427 - version: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/node': specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) @@ -10847,7 +10841,7 @@ importers: devDependencies: '@netlify/vite-plugin-tanstack-start': specifier: ^1.1.4 - version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + version: 1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) '@tailwindcss/vite': specifier: ^4.1.18 version: 4.1.18(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) @@ -11073,7 +11067,7 @@ importers: version: 2.11.10(@testing-library/jest-dom@6.6.3)(solid-js@1.9.10)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17(vitest@4.0.17))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) + version: 3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) web-vitals: specifier: ^5.1.0 version: 5.1.0 @@ -15156,22 +15150,6 @@ packages: webpack: optional: true - '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427': - resolution: {integrity: sha512-zDqROQ1hbkW2h0TO8FiSPmXafLKk69xV7nV59STUY3TH2RcHJp5oOULlLzDCD6SlIa/NMO7Hj/6T/HTaXgiuvA==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427} - version: 2.0.1 - hasBin: true - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - webpack: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - webpack: - optional: true - '@module-federation/error-codes@0.22.0': resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} @@ -28033,35 +28011,6 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@4427(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/cli': https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/data-prefetch': https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/inject-external-runtime-core-plugin': https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646(@module-federation/runtime-tools@2.0.1) - '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/manifest': https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/rspack': https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/runtime-tools': https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 - btoa: 1.2.1 - schema-utils: 4.3.3 - upath: 2.0.1 - optionalDependencies: - typescript: 5.9.3 - vue-tsc: 3.1.8(typescript@5.9.3) - webpack: 5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)) - transitivePeerDependencies: - - '@rspack/core' - - bufferutil - - debug - - react - - react-dom - - supports-color - - utf-8-validate - '@module-federation/error-codes@0.22.0': {} '@module-federation/error-codes@0.8.4': {} @@ -28519,13 +28468,13 @@ snapshots: uuid: 11.1.0 write-file-atomic: 5.0.1 - '@netlify/dev@4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)': + '@netlify/dev@4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)': dependencies: '@netlify/blobs': 10.1.0 '@netlify/config': 23.2.0 '@netlify/dev-utils': 4.3.0 '@netlify/edge-functions-dev': 1.0.0 - '@netlify/functions-dev': 1.0.0(encoding@0.1.13)(rollup@4.55.3) + '@netlify/functions-dev': 1.0.0(rollup@4.55.3) '@netlify/headers': 2.1.0 '@netlify/images': 1.3.0(@netlify/blobs@10.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2) '@netlify/redirects': 3.1.0 @@ -28593,12 +28542,12 @@ snapshots: dependencies: '@netlify/types': 2.1.0 - '@netlify/functions-dev@1.0.0(encoding@0.1.13)(rollup@4.55.3)': + '@netlify/functions-dev@1.0.0(rollup@4.55.3)': dependencies: '@netlify/blobs': 10.1.0 '@netlify/dev-utils': 4.3.0 '@netlify/functions': 5.0.0 - '@netlify/zip-it-and-ship-it': 14.1.11(encoding@0.1.13)(rollup@4.55.3) + '@netlify/zip-it-and-ship-it': 14.1.11(rollup@4.55.3) cron-parser: 4.9.0 decache: 4.6.2 extract-zip: 2.0.1 @@ -28688,9 +28637,9 @@ snapshots: '@netlify/types@2.1.0': {} - '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': + '@netlify/vite-plugin-tanstack-start@1.1.4(@tanstack/solid-start@packages+solid-start)(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + '@netlify/vite-plugin': 2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) optionalDependencies: '@tanstack/solid-start': link:packages/solid-start @@ -28718,9 +28667,9 @@ snapshots: - supports-color - uploadthing - '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': + '@netlify/vite-plugin@2.7.4(babel-plugin-macros@3.1.0)(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3)(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))': dependencies: - '@netlify/dev': 4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(encoding@0.1.13)(ioredis@5.9.2)(rollup@4.55.3) + '@netlify/dev': 4.6.3(db0@0.3.4(@electric-sql/pglite@0.3.2)(@libsql/client@0.15.15)(mysql2@3.15.3))(ioredis@5.9.2)(rollup@4.55.3) '@netlify/dev-utils': 4.3.0 dedent: 1.7.0(babel-plugin-macros@3.1.0) vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) @@ -28748,13 +28697,13 @@ snapshots: - supports-color - uploadthing - '@netlify/zip-it-and-ship-it@14.1.11(encoding@0.1.13)(rollup@4.55.3)': + '@netlify/zip-it-and-ship-it@14.1.11(rollup@4.55.3)': dependencies: '@babel/parser': 7.28.5 '@babel/types': 7.28.4 '@netlify/binary-info': 1.0.0 '@netlify/serverless-functions-api': 2.7.1 - '@vercel/nft': 0.29.4(encoding@0.1.13)(rollup@4.55.3) + '@vercel/nft': 0.29.4(rollup@4.55.3) archiver: 7.0.1 common-path-prefix: 3.0.0 copy-file: 11.1.0 @@ -32079,7 +32028,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vercel/nft@0.29.4(encoding@0.1.13)(rollup@4.55.3)': + '@vercel/nft@0.29.4(rollup@4.55.3)': dependencies: '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) '@rollup/pluginutils': 5.1.4(rollup@4.55.3) @@ -39730,7 +39679,7 @@ snapshots: optionalDependencies: vite: 7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) - vitest@3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17(vitest@4.0.17))(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1): + vitest@3.2.4(@types/node@25.0.9)(@vitest/browser@4.0.17(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.3))(vite@7.3.1(@types/node@25.0.9)(jiti@2.6.1)(lightningcss@1.30.2)(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1))(vitest@4.0.17))(@vitest/ui@4.0.17)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.7.0(@types/node@25.0.9)(typescript@5.9.2))(sass-embedded@1.97.2)(sass@1.97.2)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 From 25dc37003f0637b247f586515e8307451a56d070 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 20:35:34 +0000 Subject: [PATCH 026/102] chore: upgrade rsbuild federation canary to PR 4427 head Co-authored-by: Zack Jackson --- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- pnpm-lock.yaml | 204 +++++++++--------- 5 files changed, 106 insertions(+), 106 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/package.json b/e2e/react-start/module-federation-rsbuild-host/package.json index 74da5f48127..fc2d8d0ab0e 100644 --- a/e2e/react-start/module-federation-rsbuild-host/package.json +++ b/e2e/react-start/module-federation-rsbuild-host/package.json @@ -22,7 +22,7 @@ }, "devDependencies": { "@module-federation/node": "^2.7.32", - "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", + "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd", "@playwright/test": "^1.50.1", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", diff --git a/e2e/react-start/module-federation-rsbuild-remote/package.json b/e2e/react-start/module-federation-rsbuild-remote/package.json index 33d3ae357b6..adbe7a63e54 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/package.json +++ b/e2e/react-start/module-federation-rsbuild-remote/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@module-federation/node": "^2.7.32", - "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", + "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/react": "^19.0.8", diff --git a/examples/react/start-module-federation-rsbuild-host/package.json b/examples/react/start-module-federation-rsbuild-host/package.json index e2bfe6ce4d4..05dee88e5ab 100644 --- a/examples/react/start-module-federation-rsbuild-host/package.json +++ b/examples/react/start-module-federation-rsbuild-host/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@module-federation/node": "^2.7.32", - "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", + "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/node": "^22.10.2", diff --git a/examples/react/start-module-federation-rsbuild-remote/package.json b/examples/react/start-module-federation-rsbuild-remote/package.json index 66cd14fcfe1..410885bb141 100644 --- a/examples/react/start-module-federation-rsbuild-remote/package.json +++ b/examples/react/start-module-federation-rsbuild-remote/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@module-federation/node": "^2.7.32", - "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427", + "@module-federation/rsbuild-plugin": "https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd", "@rsbuild/core": "^1.3.21", "@rsbuild/plugin-react": "^1.1.0", "@types/react": "^19.0.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c2ead28fd9..5a264b04406 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1807,8 +1807,8 @@ importers: specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427 - version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd + version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@playwright/test': specifier: ^1.57.0 version: 1.57.0 @@ -1850,8 +1850,8 @@ importers: specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427 - version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd + version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -8849,8 +8849,8 @@ importers: specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427 - version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd + version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -8886,8 +8886,8 @@ importers: specifier: ^2.7.32 version: 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/rsbuild-plugin': - specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427 - version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + specifier: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd + version: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@rsbuild/core': specifier: ^1.3.21 version: 1.7.3 @@ -15062,8 +15062,8 @@ packages: '@module-federation/bridge-react-webpack-plugin@2.0.1': resolution: {integrity: sha512-D7LMW5EMAJShOMR1aZDAJ6s+MdsYDHaQyJADLQ3LaY0sne/BkVqkPikUwcO1IwOwKbXjYsDlQVOEvk9wZVRFhA==} - '@module-federation/bridge-react-webpack-plugin@https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/bridge-react-webpack-plugin@https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-3H9DFdgTBZaJXSyRG+2atAs1vzHpmdN1kjvL0qtNlXnGD0doP23t5tS6fwXZWG0HITVCp5+2GffWL0CYcKEQGw==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/cli@2.0.1': @@ -15071,8 +15071,8 @@ packages: engines: {node: '>=16.0.0'} hasBin: true - '@module-federation/cli@https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/cli@https://pkg.pr.new/module-federation/core/@module-federation/cli@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-tZKcV0//T5UPiQ2akTD2CBD1PcTPzUd0eMBsojEljqr3d1FZ8bBzr6isfxaORcuFUhInFYRF8w1WvhuLB8XVBg==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/cli@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 engines: {node: '>=16.0.0'} hasBin: true @@ -15088,8 +15088,8 @@ packages: react-dom: optional: true - '@module-federation/data-prefetch@https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/data-prefetch@https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-Wip3+zxeTxg/ed2ACRJdDxhzLmTqyOGiYZEc04t17YNDV5xqHgiXQIFcAvUlkuM1qU/Z7cuOFpac7RlIXoS0wQ==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 peerDependencies: react: ^19.2.3 @@ -15109,8 +15109,8 @@ packages: vue-tsc: optional: true - '@module-federation/dts-plugin@https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/dts-plugin@https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-YcVnohC9wAUDv1f67MZo3V7MRew8RG5JgyoCyVgZaU5Nq2pd95BpLkb/AVbRry05lICDoQ4Gfx+41AKUnF4DGA==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 peerDependencies: typescript: ^4.9.0 || ^5.0.0 @@ -15134,8 +15134,8 @@ packages: webpack: optional: true - '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-l6lrvLlDy5njO/EQCH/WgOHbcmWSRSnl7TbL00iXExLTUsVatn72ZTdE3WLnj1vlMEzNN+UYoSAZ13NJeDi+iQ==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/enhanced@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 hasBin: true peerDependencies: @@ -15159,8 +15159,8 @@ packages: '@module-federation/error-codes@2.0.1': resolution: {integrity: sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==} - '@module-federation/error-codes@https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/error-codes@https://pkg.pr.new/module-federation/core/@module-federation/error-codes@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/error-codes@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/inject-external-runtime-core-plugin@2.0.1': @@ -15168,8 +15168,8 @@ packages: peerDependencies: '@module-federation/runtime-tools': 2.0.1 - '@module-federation/inject-external-runtime-core-plugin@https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/inject-external-runtime-core-plugin@https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-8Uxxa3r0xF7pXJYS70EdGnvxAQsWQdTIEXjVmLeB+GIlxwp3FGDtTtx5z1GFvyP1OSNTbmL3vxi9hL0wkaywhA==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 peerDependencies: '@module-federation/runtime-tools': 2.0.1 @@ -15177,15 +15177,15 @@ packages: '@module-federation/managers@2.0.1': resolution: {integrity: sha512-KR01lSlcYRQ9C6hW2a8CQQtAE0LvfTLgtV/6ZNUTagw8sRfeDln+ggrZsYilKu9zl0i8RPDgpv/kS60o4lcxCQ==} - '@module-federation/managers@https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/managers@https://pkg.pr.new/module-federation/core/@module-federation/managers@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-EAv1OS960Y+YIkdiRMK6ChJsZ8tExkU1KQ9LgbJ+BaBwZFTBfuQiAjnvpGxUPboLPat+gHRNGHDUJ7Fz1ihtYA==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/managers@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/manifest@2.0.1': resolution: {integrity: sha512-p8nYGjHWp17MsYdW/Vv0ogBDiTTsI1PHWPQbvVIqLQXDqwiesaRSRR1zziECXQoEL8lV5Bs+uSkcaJGhea9P+A==} - '@module-federation/manifest@https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/manifest@https://pkg.pr.new/module-federation/core/@module-federation/manifest@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-4QvReJp1YTP+erYngxwyBcCeC4pYiy78TvNRJaj/mQvipZbqKDGgTQJe/3FMJFP9OA5OVPoBRBl3n9HEX10/DQ==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/manifest@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/node@2.7.32': @@ -15196,8 +15196,8 @@ packages: webpack: optional: true - '@module-federation/rsbuild-plugin@https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427} + '@module-federation/rsbuild-plugin@https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-u8l+89mSkQ6GSHKVmz36b4kWX9DiNnjsWYqW6m2Zs6Y/H2UgDsRyLtby41iX48MTwh3Qq8tWD/fHab/3fsi1rw==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 engines: {node: '>=16.0.0'} peerDependencies: @@ -15218,8 +15218,8 @@ packages: vue-tsc: optional: true - '@module-federation/rspack@https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/rspack@https://pkg.pr.new/module-federation/core/@module-federation/rspack@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-izSzYI7RK0iEyL3n1AIj0gw30ouF0ZZDo7Ziss1snEnfvt3jpAyTWBh1bsSXvuGrjqFA/VUDIeLKoVsgvO0HgQ==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/rspack@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 peerDependencies: '@rspack/core': ^0.7.0 || ^1.0.0 || ^2.0.0-0 @@ -15237,8 +15237,8 @@ packages: '@module-federation/runtime-core@2.0.1': resolution: {integrity: sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==} - '@module-federation/runtime-core@https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/runtime-core@https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-2Z/+XPNw2zTYfXwbOcBHbnjI90umHSvTC9MlMGWpAPfv5lyjSB9Cg35kSeOhWU5H45U349gNYy5hi5ldmQ0yeA==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/runtime-tools@0.22.0': @@ -15250,8 +15250,8 @@ packages: '@module-federation/runtime-tools@2.0.1': resolution: {integrity: sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==} - '@module-federation/runtime-tools@https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/runtime-tools@https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-7QbkR+C5Wc4owFMf1JOKtU0TcVAWJRYqkKbfBHHXFQgYakBkYH3m0CzNYwMOGbjAgNRz/vjSrFH1HsKWevDYcg==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/runtime@0.22.0': @@ -15263,8 +15263,8 @@ packages: '@module-federation/runtime@2.0.1': resolution: {integrity: sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==} - '@module-federation/runtime@https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/runtime@https://pkg.pr.new/module-federation/core/@module-federation/runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-BOoibg42RWyjiYvsbBPGXik3PKOxf3zRyI6W+McnXgA7GCertLMoxHBPe1amq6VEPEmg25zl+vw3Wl6e2M10jw==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/sdk@0.22.0': @@ -15276,15 +15276,15 @@ packages: '@module-federation/sdk@2.0.1': resolution: {integrity: sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==} - '@module-federation/sdk@https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/sdk@https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-ecZrEbQNo4CtsZzzrphNO9eQN+zeOCCpAyAAKD6f37bBOqmX11s5LNXhSbamDjbnwgGsZIoqBBsMs9+uUG5zoQ==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/third-party-dts-extractor@2.0.1': resolution: {integrity: sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==} - '@module-federation/third-party-dts-extractor@https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/third-party-dts-extractor@https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@module-federation/webpack-bundler-runtime@0.22.0': @@ -15296,8 +15296,8 @@ packages: '@module-federation/webpack-bundler-runtime@2.0.1': resolution: {integrity: sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==} - '@module-federation/webpack-bundler-runtime@https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@2b1724efd450cc26e874d9840461d23b751cd646': - resolution: {tarball: https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@2b1724efd450cc26e874d9840461d23b751cd646} + '@module-federation/webpack-bundler-runtime@https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd': + resolution: {integrity: sha512-y7rqu7WdfWjUY50OOIpemvJaHPRXyfLXCVCPqNtBp/3K3Ytj5z9Zf3NuH1WxNHIhhHQG5AKe8h34lDxjIhF2GQ==, tarball: https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd} version: 2.0.1 '@motionone/animation@10.18.0': @@ -27846,9 +27846,9 @@ snapshots: '@types/semver': 7.5.8 semver: 7.6.3 - '@module-federation/bridge-react-webpack-plugin@https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646': + '@module-federation/bridge-react-webpack-plugin@https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd': dependencies: - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd '@types/semver': 7.5.8 semver: 7.6.3 @@ -27867,10 +27867,10 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/cli@https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + '@module-federation/cli@https://pkg.pr.new/module-federation/core/@module-federation/cli@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: - '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd chalk: 3.0.0 commander: 11.1.0 jiti: 2.4.2 @@ -27891,10 +27891,10 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - '@module-federation/data-prefetch@https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@module-federation/data-prefetch@https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@7acb6b2621a4960848ad00f3614dc0bb239775fd(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd fs-extra: 9.1.0 optionalDependencies: react: 19.2.3 @@ -27927,12 +27927,12 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/dts-plugin@https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + '@module-federation/dts-plugin@https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: - '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/third-party-dts-extractor': https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/third-party-dts-extractor': https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@7acb6b2621a4960848ad00f3614dc0bb239775fd adm-zip: 0.5.16 ansi-colors: 4.1.3 axios: 1.13.2 @@ -27982,19 +27982,19 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': - dependencies: - '@module-federation/bridge-react-webpack-plugin': https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/cli': https://pkg.pr.new/module-federation/core/@module-federation/cli@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/data-prefetch': https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@2b1724efd450cc26e874d9840461d23b751cd646(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/inject-external-runtime-core-plugin': https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646(@module-federation/runtime-tools@2.0.1) - '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/manifest': https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/rspack': https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/runtime-tools': https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/enhanced@https://pkg.pr.new/module-federation/core/@module-federation/enhanced@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + dependencies: + '@module-federation/bridge-react-webpack-plugin': https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/cli': https://pkg.pr.new/module-federation/core/@module-federation/cli@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/data-prefetch': https://pkg.pr.new/module-federation/core/@module-federation/data-prefetch@7acb6b2621a4960848ad00f3614dc0bb239775fd(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/inject-external-runtime-core-plugin': https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(@module-federation/runtime-tools@2.0.1) + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/manifest': https://pkg.pr.new/module-federation/core/@module-federation/manifest@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/rspack': https://pkg.pr.new/module-federation/core/@module-federation/rspack@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd btoa: 1.2.1 schema-utils: 4.3.3 upath: 2.0.1 @@ -28017,13 +28017,13 @@ snapshots: '@module-federation/error-codes@2.0.1': {} - '@module-federation/error-codes@https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646': {} + '@module-federation/error-codes@https://pkg.pr.new/module-federation/core/@module-federation/error-codes@7acb6b2621a4960848ad00f3614dc0bb239775fd': {} '@module-federation/inject-external-runtime-core-plugin@2.0.1(@module-federation/runtime-tools@2.0.1)': dependencies: '@module-federation/runtime-tools': 2.0.1 - '@module-federation/inject-external-runtime-core-plugin@https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646(@module-federation/runtime-tools@2.0.1)': + '@module-federation/inject-external-runtime-core-plugin@https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(@module-federation/runtime-tools@2.0.1)': dependencies: '@module-federation/runtime-tools': 2.0.1 @@ -28033,9 +28033,9 @@ snapshots: find-pkg: 2.0.0 fs-extra: 9.1.0 - '@module-federation/managers@https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646': + '@module-federation/managers@https://pkg.pr.new/module-federation/core/@module-federation/managers@7acb6b2621a4960848ad00f3614dc0bb239775fd': dependencies: - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd find-pkg: 2.0.0 fs-extra: 9.1.0 @@ -28054,11 +28054,11 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/manifest@https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + '@module-federation/manifest@https://pkg.pr.new/module-federation/core/@module-federation/manifest@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: - '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd chalk: 3.0.0 find-pkg: 2.0.0 transitivePeerDependencies: @@ -28090,11 +28090,11 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/rsbuild-plugin@https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@4427(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': + '@module-federation/rsbuild-plugin@https://pkg.pr.new/module-federation/core/@module-federation/rsbuild-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rsbuild/core@1.7.3)(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18)))': dependencies: - '@module-federation/enhanced': https://pkg.pr.new/module-federation/core/@module-federation/enhanced@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) + '@module-federation/enhanced': https://pkg.pr.new/module-federation/core/@module-federation/enhanced@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) '@module-federation/node': 2.7.32(@rspack/core@1.7.6(@swc/helpers@0.5.18))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))(webpack@5.104.0(@swc/core@1.10.15(@swc/helpers@0.5.18))) - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd fs-extra: 11.3.0 optionalDependencies: '@rsbuild/core': 1.7.3 @@ -28130,15 +28130,15 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/rspack@https://pkg.pr.new/module-federation/core/@module-federation/rspack@2b1724efd450cc26e874d9840461d23b751cd646(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': + '@module-federation/rspack@https://pkg.pr.new/module-federation/core/@module-federation/rspack@7acb6b2621a4960848ad00f3614dc0bb239775fd(@rspack/core@1.7.6(@swc/helpers@0.5.18))(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3))': dependencies: - '@module-federation/bridge-react-webpack-plugin': https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/inject-external-runtime-core-plugin': https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@2b1724efd450cc26e874d9840461d23b751cd646(@module-federation/runtime-tools@2.0.1) - '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/manifest': https://pkg.pr.new/module-federation/core/@module-federation/manifest@2b1724efd450cc26e874d9840461d23b751cd646(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) - '@module-federation/runtime-tools': https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/bridge-react-webpack-plugin': https://pkg.pr.new/module-federation/core/@module-federation/bridge-react-webpack-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/dts-plugin': https://pkg.pr.new/module-federation/core/@module-federation/dts-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/inject-external-runtime-core-plugin': https://pkg.pr.new/module-federation/core/@module-federation/inject-external-runtime-core-plugin@7acb6b2621a4960848ad00f3614dc0bb239775fd(@module-federation/runtime-tools@2.0.1) + '@module-federation/managers': https://pkg.pr.new/module-federation/core/@module-federation/managers@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/manifest': https://pkg.pr.new/module-federation/core/@module-federation/manifest@7acb6b2621a4960848ad00f3614dc0bb239775fd(typescript@5.9.3)(vue-tsc@3.1.8(typescript@5.9.3)) + '@module-federation/runtime-tools': https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd '@rspack/core': 1.7.6(@swc/helpers@0.5.18) btoa: 1.2.1 optionalDependencies: @@ -28160,10 +28160,10 @@ snapshots: '@module-federation/error-codes': 2.0.1 '@module-federation/sdk': 2.0.1 - '@module-federation/runtime-core@https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@2b1724efd450cc26e874d9840461d23b751cd646': + '@module-federation/runtime-core@https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@7acb6b2621a4960848ad00f3614dc0bb239775fd': dependencies: - '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd '@module-federation/runtime-tools@0.22.0': dependencies: @@ -28180,10 +28180,10 @@ snapshots: '@module-federation/runtime': 2.0.1 '@module-federation/webpack-bundler-runtime': 2.0.1 - '@module-federation/runtime-tools@https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@2b1724efd450cc26e874d9840461d23b751cd646': + '@module-federation/runtime-tools@https://pkg.pr.new/module-federation/core/@module-federation/runtime-tools@7acb6b2621a4960848ad00f3614dc0bb239775fd': dependencies: - '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/webpack-bundler-runtime': https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/webpack-bundler-runtime': https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd '@module-federation/runtime@0.22.0': dependencies: @@ -28202,11 +28202,11 @@ snapshots: '@module-federation/runtime-core': 2.0.1 '@module-federation/sdk': 2.0.1 - '@module-federation/runtime@https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646': + '@module-federation/runtime@https://pkg.pr.new/module-federation/core/@module-federation/runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd': dependencies: - '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/runtime-core': https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/error-codes': https://pkg.pr.new/module-federation/core/@module-federation/error-codes@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/runtime-core': https://pkg.pr.new/module-federation/core/@module-federation/runtime-core@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd '@module-federation/sdk@0.22.0': {} @@ -28216,7 +28216,7 @@ snapshots: '@module-federation/sdk@2.0.1': {} - '@module-federation/sdk@https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646': {} + '@module-federation/sdk@https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd': {} '@module-federation/third-party-dts-extractor@2.0.1': dependencies: @@ -28224,7 +28224,7 @@ snapshots: fs-extra: 9.1.0 resolve: 1.22.8 - '@module-federation/third-party-dts-extractor@https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@2b1724efd450cc26e874d9840461d23b751cd646': + '@module-federation/third-party-dts-extractor@https://pkg.pr.new/module-federation/core/@module-federation/third-party-dts-extractor@7acb6b2621a4960848ad00f3614dc0bb239775fd': dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 @@ -28245,10 +28245,10 @@ snapshots: '@module-federation/runtime': 2.0.1 '@module-federation/sdk': 2.0.1 - '@module-federation/webpack-bundler-runtime@https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@2b1724efd450cc26e874d9840461d23b751cd646': + '@module-federation/webpack-bundler-runtime@https://pkg.pr.new/module-federation/core/@module-federation/webpack-bundler-runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd': dependencies: - '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@2b1724efd450cc26e874d9840461d23b751cd646 - '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@2b1724efd450cc26e874d9840461d23b751cd646 + '@module-federation/runtime': https://pkg.pr.new/module-federation/core/@module-federation/runtime@7acb6b2621a4960848ad00f3614dc0bb239775fd + '@module-federation/sdk': https://pkg.pr.new/module-federation/core/@module-federation/sdk@7acb6b2621a4960848ad00f3614dc0bb239775fd '@motionone/animation@10.18.0': dependencies: From c94c0a8e8ed274e26ccb62a385a6da3d9084366f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 20:55:45 +0000 Subject: [PATCH 027/102] fix: enforce script remoteType for node federation remotes Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-remote/rsbuild.config.ts | 1 + .../start-module-federation-rsbuild-remote/rsbuild.config.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts index a3b745cbbe9..9582a875018 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts @@ -46,6 +46,7 @@ export default defineConfig({ library: { type: 'commonjs-module', }, + remoteType: 'script', exposes: { './message': './src/message.tsx', './routes': './src/routes.tsx', diff --git a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts index a3b745cbbe9..9582a875018 100644 --- a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts @@ -46,6 +46,7 @@ export default defineConfig({ library: { type: 'commonjs-module', }, + remoteType: 'script', exposes: { './message': './src/message.tsx', './routes': './src/routes.tsx', From 2003de1f2b11052c023df912dde929de750ea7df Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:01:50 +0000 Subject: [PATCH 028/102] fix: disable node remote shared fallbacks for plugin-only SSR Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-remote/rsbuild.config.ts | 2 ++ .../start-module-federation-rsbuild-remote/rsbuild.config.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts index 9582a875018..52a230c9827 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts @@ -25,10 +25,12 @@ export default defineConfig({ runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { react: { + import: false, singleton: true, requiredVersion: false, }, 'react-dom': { + import: false, singleton: true, requiredVersion: false, }, diff --git a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts index 9582a875018..52a230c9827 100644 --- a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts @@ -25,10 +25,12 @@ export default defineConfig({ runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { react: { + import: false, singleton: true, requiredVersion: false, }, 'react-dom': { + import: false, singleton: true, requiredVersion: false, }, From 2c03d98abb48895060015890a3f0b55779dc3b95 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:04:11 +0000 Subject: [PATCH 029/102] docs: clarify node federation shared ownership constraints Co-authored-by: Zack Jackson --- .../rsbuild.config.ts | 4 ++++ .../start-module-federation-rsbuild-remote/README.md | 11 +++++++++++ .../rsbuild.config.ts | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts index 52a230c9827..2e2070d20c4 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts @@ -25,11 +25,15 @@ export default defineConfig({ runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { react: { + // Keep host-owned React in node runtime. + // With remoteType=script + node runtime plugin, remote shared fallbacks + // can otherwise trigger SSR chunk loading incompatibilities. import: false, singleton: true, requiredVersion: false, }, 'react-dom': { + // Keep host-owned ReactDOM in node runtime. import: false, singleton: true, requiredVersion: false, diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index a3a2ee9ab25..4161e220d4a 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -12,6 +12,17 @@ It exposes: via `@module-federation/rsbuild-plugin`, and serves chunks over HTTP. +## SSR node runtime note + +For node-target federation in this setup we use: + +- `library.type: 'commonjs-module'` +- `remoteType: 'script'` +- `shared.react/react-dom.import: false` in the node-target config + +This keeps React shared ownership on the host side and avoids remote shared +fallback chunk loading issues in SSR node runtime. + ## Run ```sh diff --git a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts index 52a230c9827..2e2070d20c4 100644 --- a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts @@ -25,11 +25,15 @@ export default defineConfig({ runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { react: { + // Keep host-owned React in node runtime. + // With remoteType=script + node runtime plugin, remote shared fallbacks + // can otherwise trigger SSR chunk loading incompatibilities. import: false, singleton: true, requiredVersion: false, }, 'react-dom': { + // Keep host-owned ReactDOM in node runtime. import: false, singleton: true, requiredVersion: false, From a53f0d2465826aca198b17d4a93dfbfafc588c12 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:06:17 +0000 Subject: [PATCH 030/102] docs: add host note for node federation compatibility Co-authored-by: Zack Jackson --- .../start-module-federation-rsbuild-host/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index fe6339ea491..9dd828acced 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -13,6 +13,17 @@ It also demonstrates: - Federated server route and server function handlers - Start mode matrix via `HOST_MODE`: `ssr`, `spa`, `prerender` +## SSR node runtime compatibility + +This host expects the paired remote's **node-target federation config** to use: + +- `library.type: 'commonjs-module'` +- `remoteType: 'script'` +- `shared.react/react-dom.import: false` + +That combination keeps React shared ownership on the host and avoids SSR +runtime fallback chunk loading conflicts with `@module-federation/node`. + ## Run with the remote app 1. Start the remote app first: From 69971f7de306bef8c0e7a6cb86f85e4d986f126e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:08:09 +0000 Subject: [PATCH 031/102] docs: annotate SSR remote loading requirements in host configs Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/rsbuild.config.ts | 2 ++ .../start-module-federation-rsbuild-host/rsbuild.config.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts index 181091c5522..e17ce071bad 100644 --- a/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-host/rsbuild.config.ts @@ -65,9 +65,11 @@ export default defineConfig({ { name: 'mf_host_ssr', remotes: { + // Server remotes are fetched via node runtime over HTTP from the remote SSR output. mf_remote: `mf_remote@${remoteOrigin}/ssr/remoteEntry.js`, }, dts: false, + // Required by @module-federation/node runtime container loading. remoteType: 'script', experiments: { asyncStartup: true, diff --git a/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts index 181091c5522..e17ce071bad 100644 --- a/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-host/rsbuild.config.ts @@ -65,9 +65,11 @@ export default defineConfig({ { name: 'mf_host_ssr', remotes: { + // Server remotes are fetched via node runtime over HTTP from the remote SSR output. mf_remote: `mf_remote@${remoteOrigin}/ssr/remoteEntry.js`, }, dts: false, + // Required by @module-federation/node runtime container loading. remoteType: 'script', experiments: { asyncStartup: true, From d7fa6598301ddfe8d1698e5f339a649d79a886e9 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:10:07 +0000 Subject: [PATCH 032/102] docs: add e2e federation fixture run and SSR notes Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 34 +++++++++++++++++++ .../README.md | 31 +++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 e2e/react-start/module-federation-rsbuild-host/README.md create mode 100644 e2e/react-start/module-federation-rsbuild-remote/README.md diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md new file mode 100644 index 00000000000..5e98c2aee69 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -0,0 +1,34 @@ +# E2E Fixture: TanStack Start Module Federation Host (Rsbuild) + +This fixture validates host behavior for Rsbuild + Module Federation in: + +- `ssr` +- `spa` +- `prerender` + +It consumes the paired remote fixture at: + +- `../module-federation-rsbuild-remote` + +## Commands + +```sh +# SSR only +pnpm test:e2e:ssr + +# SPA only +pnpm test:e2e:spa + +# Prerender only +pnpm test:e2e:prerender + +# Full mode matrix +pnpm test:e2e +``` + +## Node SSR federation requirement + +Server remotes are loaded over HTTP from the remote SSR output and use: + +- `remoteType: 'script'` on the host SSR plugin config. + diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md new file mode 100644 index 00000000000..e064b5d49b5 --- /dev/null +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -0,0 +1,31 @@ +# E2E Fixture: TanStack Start Module Federation Remote (Rsbuild) + +Remote fixture for: + +- `../module-federation-rsbuild-host` + +It exposes: + +- `mf_remote/message` +- `mf_remote/routes` +- `mf_remote/server-data` + +## Commands + +```sh +pnpm build +pnpm preview --port 3001 +``` + +## Node SSR federation compatibility + +For the node-target federation config we use: + +- `library.type: 'commonjs-module'` +- `remoteType: 'script'` +- `shared.react.import: false` +- `shared.react-dom.import: false` + +This keeps React ownership on the host side in node SSR runtime and avoids +remote shared fallback chunk loading incompatibilities. + From a21d9acd8dbea38eec2a3deb5bdcd529317aee06 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:12:00 +0000 Subject: [PATCH 033/102] docs: note remote shared import flags in e2e host readme Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 5e98c2aee69..b6913c319de 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -31,4 +31,5 @@ pnpm test:e2e Server remotes are loaded over HTTP from the remote SSR output and use: - `remoteType: 'script'` on the host SSR plugin config. +- `shared.react/react-dom.import: false` on the remote node-target config. From 2d5f1157fbd92424434884b5c6342c5035c7a253 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:15:15 +0000 Subject: [PATCH 034/102] fix: scope import false shared config to node federation target Co-authored-by: Zack Jackson --- .../rsbuild.config.ts | 12 ++++++------ .../rsbuild.config.ts | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts index 2e2070d20c4..24077010b36 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts @@ -25,16 +25,10 @@ export default defineConfig({ runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { react: { - // Keep host-owned React in node runtime. - // With remoteType=script + node runtime plugin, remote shared fallbacks - // can otherwise trigger SSR chunk loading incompatibilities. - import: false, singleton: true, requiredVersion: false, }, 'react-dom': { - // Keep host-owned ReactDOM in node runtime. - import: false, singleton: true, requiredVersion: false, }, @@ -64,10 +58,16 @@ export default defineConfig({ runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { react: { + // Keep host-owned React in node runtime. + // With remoteType=script + node runtime plugin, remote shared fallbacks + // can otherwise trigger SSR chunk loading incompatibilities. + import: false, singleton: true, requiredVersion: false, }, 'react-dom': { + // Keep host-owned ReactDOM in node runtime. + import: false, singleton: true, requiredVersion: false, }, diff --git a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts index 2e2070d20c4..24077010b36 100644 --- a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts @@ -25,16 +25,10 @@ export default defineConfig({ runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { react: { - // Keep host-owned React in node runtime. - // With remoteType=script + node runtime plugin, remote shared fallbacks - // can otherwise trigger SSR chunk loading incompatibilities. - import: false, singleton: true, requiredVersion: false, }, 'react-dom': { - // Keep host-owned ReactDOM in node runtime. - import: false, singleton: true, requiredVersion: false, }, @@ -64,10 +58,16 @@ export default defineConfig({ runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], shared: { react: { + // Keep host-owned React in node runtime. + // With remoteType=script + node runtime plugin, remote shared fallbacks + // can otherwise trigger SSR chunk loading incompatibilities. + import: false, singleton: true, requiredVersion: false, }, 'react-dom': { + // Keep host-owned ReactDOM in node runtime. + import: false, singleton: true, requiredVersion: false, }, From 0076bea738a9f9c215f1c0113dffe908d5b2168a Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:18:29 +0000 Subject: [PATCH 035/102] test: assert SSR manifest stays node-compatible for remote Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index b16d5c49285..dfc02e15fa2 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -53,6 +53,24 @@ test('loads remote entry over http at runtime', async ({ } }) +test('serves node-compatible remote SSR manifest metadata', async ({ page }) => { + const response = await page.request.get(`${REMOTE_ORIGIN}/ssr/mf-manifest.json`) + expect(response.ok()).toBeTruthy() + + const manifest = await response.json() + expect(manifest?.metaData?.remoteEntry?.type).toBe('commonjs-module') + + const sharedByName = new Map( + (manifest?.shared ?? []).map((shared: any) => [shared.name, shared]), + ) + + const reactShared = sharedByName.get('react') + const reactDomShared = sharedByName.get('react-dom') + + expect(reactShared?.assets?.js?.sync ?? []).toEqual([]) + expect(reactDomShared?.assets?.js?.sync ?? []).toEqual([]) +}) + test('dynamically registers and renders remote routes', async ({ page }) => { test.skip( HOST_MODE !== 'ssr', From 44bd89e7093499b03b7fc7b59423ff6700ccd219 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:20:34 +0000 Subject: [PATCH 036/102] docs: document SSR manifest compatibility contract Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 5 +++++ e2e/react-start/module-federation-rsbuild-remote/README.md | 2 ++ 2 files changed, 7 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index b6913c319de..61c37aff0ab 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -33,3 +33,8 @@ Server remotes are loaded over HTTP from the remote SSR output and use: - `remoteType: 'script'` on the host SSR plugin config. - `shared.react/react-dom.import: false` on the remote node-target config. +The e2e suite also validates the remote SSR manifest contract: + +- `metaData.remoteEntry.type === 'commonjs-module'` +- React/ReactDOM shared fallback asset lists are empty in SSR manifest. + diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index e064b5d49b5..61c80140500 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -25,6 +25,8 @@ For the node-target federation config we use: - `remoteType: 'script'` - `shared.react.import: false` - `shared.react-dom.import: false` +- SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` +- empty SSR shared fallback JS assets for React/ReactDOM This keeps React ownership on the host side in node SSR runtime and avoids remote shared fallback chunk loading incompatibilities. From 11d67d0d9dd91264ec1d48af32d61024d12e498a Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:22:34 +0000 Subject: [PATCH 037/102] docs: align example SSR manifest expectations Co-authored-by: Zack Jackson --- examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 9dd828acced..f385d9b5357 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -20,6 +20,7 @@ This host expects the paired remote's **node-target federation config** to use: - `library.type: 'commonjs-module'` - `remoteType: 'script'` - `shared.react/react-dom.import: false` +- SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 4161e220d4a..6c6b60d4e09 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -19,6 +19,7 @@ For node-target federation in this setup we use: - `library.type: 'commonjs-module'` - `remoteType: 'script'` - `shared.react/react-dom.import: false` in the node-target config +- SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 74de9bd73cd596ecdddce37ad973f2ddcafbb1ba Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:25:18 +0000 Subject: [PATCH 038/102] refactor: split web and node shared configs for remote federation Co-authored-by: Zack Jackson --- .../rsbuild.config.ts | 54 ++++++++++--------- .../rsbuild.config.ts | 54 ++++++++++--------- 2 files changed, 56 insertions(+), 52 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts index 24077010b36..35d4754ac69 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts +++ b/e2e/react-start/module-federation-rsbuild-remote/rsbuild.config.ts @@ -6,6 +6,32 @@ import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' const require = createRequire(import.meta.url) const remotePort = Number(process.env.REMOTE_PORT || 3001) const remoteOrigin = `http://localhost:${remotePort}` +const sharedForWeb = { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, +} +const sharedForNode = { + react: { + // Keep host-owned React in node runtime. + // With remoteType=script + node runtime plugin, remote shared fallbacks + // can otherwise trigger SSR chunk loading incompatibilities. + import: false, + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + // Keep host-owned ReactDOM in node runtime. + import: false, + singleton: true, + requiredVersion: false, + }, +} export default defineConfig({ plugins: [ @@ -23,16 +49,7 @@ export default defineConfig({ asyncStartup: true, }, runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], - shared: { - react: { - singleton: true, - requiredVersion: false, - }, - 'react-dom': { - singleton: true, - requiredVersion: false, - }, - }, + shared: sharedForWeb, }, { environment: 'web', @@ -56,22 +73,7 @@ export default defineConfig({ asyncStartup: true, }, runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], - shared: { - react: { - // Keep host-owned React in node runtime. - // With remoteType=script + node runtime plugin, remote shared fallbacks - // can otherwise trigger SSR chunk loading incompatibilities. - import: false, - singleton: true, - requiredVersion: false, - }, - 'react-dom': { - // Keep host-owned ReactDOM in node runtime. - import: false, - singleton: true, - requiredVersion: false, - }, - }, + shared: sharedForNode, }, { target: 'node', diff --git a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts index 24077010b36..35d4754ac69 100644 --- a/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts +++ b/examples/react/start-module-federation-rsbuild-remote/rsbuild.config.ts @@ -6,6 +6,32 @@ import { pluginModuleFederation } from '@module-federation/rsbuild-plugin' const require = createRequire(import.meta.url) const remotePort = Number(process.env.REMOTE_PORT || 3001) const remoteOrigin = `http://localhost:${remotePort}` +const sharedForWeb = { + react: { + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + singleton: true, + requiredVersion: false, + }, +} +const sharedForNode = { + react: { + // Keep host-owned React in node runtime. + // With remoteType=script + node runtime plugin, remote shared fallbacks + // can otherwise trigger SSR chunk loading incompatibilities. + import: false, + singleton: true, + requiredVersion: false, + }, + 'react-dom': { + // Keep host-owned ReactDOM in node runtime. + import: false, + singleton: true, + requiredVersion: false, + }, +} export default defineConfig({ plugins: [ @@ -23,16 +49,7 @@ export default defineConfig({ asyncStartup: true, }, runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], - shared: { - react: { - singleton: true, - requiredVersion: false, - }, - 'react-dom': { - singleton: true, - requiredVersion: false, - }, - }, + shared: sharedForWeb, }, { environment: 'web', @@ -56,22 +73,7 @@ export default defineConfig({ asyncStartup: true, }, runtimePlugins: [require.resolve('@module-federation/node/runtimePlugin')], - shared: { - react: { - // Keep host-owned React in node runtime. - // With remoteType=script + node runtime plugin, remote shared fallbacks - // can otherwise trigger SSR chunk loading incompatibilities. - import: false, - singleton: true, - requiredVersion: false, - }, - 'react-dom': { - // Keep host-owned ReactDOM in node runtime. - import: false, - singleton: true, - requiredVersion: false, - }, - }, + shared: sharedForNode, }, { target: 'node', From 243938ed20bdf6cce741140567d9b54bee0e531d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:27:04 +0000 Subject: [PATCH 039/102] docs: clarify web vs node shared config expectations Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-remote/README.md | 3 +++ .../react/start-module-federation-rsbuild-remote/README.md | 3 +++ 2 files changed, 6 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 61c80140500..d52438d59eb 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -28,6 +28,9 @@ For the node-target federation config we use: - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - empty SSR shared fallback JS assets for React/ReactDOM +Web-target shared config remains standard singleton sharing (no `import: false`) +to preserve normal browser-side shared behavior. + This keeps React ownership on the host side in node SSR runtime and avoids remote shared fallback chunk loading incompatibilities. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 6c6b60d4e09..f9cd9af750c 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -21,6 +21,9 @@ For node-target federation in this setup we use: - `shared.react/react-dom.import: false` in the node-target config - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` +The web-target config keeps normal singleton shared config (without +`import: false`) so client-side sharing remains unchanged. + This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 4448777ef651cdfa8512c1b422438a36aa5c3583 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:31:13 +0000 Subject: [PATCH 040/102] test: assert browser manifest shared assets contract Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index dfc02e15fa2..d9c4e274e72 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -71,6 +71,31 @@ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => expect(reactDomShared?.assets?.js?.sync ?? []).toEqual([]) }) +test('serves browser manifest with shared fallback assets', async ({ page }) => { + const primaryResponse = await page.request.get( + `${REMOTE_ORIGIN}/mf-manifest.json`, + ) + const primaryBody = await primaryResponse.text() + const manifestResponse = + primaryResponse.ok() && primaryBody.trim().startsWith('{') + ? primaryResponse + : await page.request.get(`${REMOTE_ORIGIN}/dist/mf-manifest.json`) + expect(manifestResponse.ok()).toBeTruthy() + + const manifest = await manifestResponse.json() + expect(manifest?.metaData?.remoteEntry?.type).toBe('global') + + const sharedByName = new Map( + (manifest?.shared ?? []).map((shared: any) => [shared.name, shared]), + ) + + const reactShared = sharedByName.get('react') + const reactDomShared = sharedByName.get('react-dom') + + expect((reactShared?.assets?.js?.sync ?? []).length).toBeGreaterThan(0) + expect((reactDomShared?.assets?.js?.sync ?? []).length).toBeGreaterThan(0) +}) + test('dynamically registers and renders remote routes', async ({ page }) => { test.skip( HOST_MODE !== 'ssr', From 2a9771d57254f32177b28cb41ce1857d4d93d088 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:33:24 +0000 Subject: [PATCH 041/102] docs: document browser manifest federation contract Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 5 +++++ e2e/react-start/module-federation-rsbuild-remote/README.md | 5 +++++ .../react/start-module-federation-rsbuild-host/README.md | 5 +++++ .../react/start-module-federation-rsbuild-remote/README.md | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 61c37aff0ab..40febd84527 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -38,3 +38,8 @@ The e2e suite also validates the remote SSR manifest contract: - `metaData.remoteEntry.type === 'commonjs-module'` - React/ReactDOM shared fallback asset lists are empty in SSR manifest. +It also validates the browser manifest contract for the remote web target: + +- `metaData.remoteEntry.type === 'global'` +- React/ReactDOM shared fallback asset lists are populated in browser manifest. + diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index d52438d59eb..96d2e572301 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -31,6 +31,11 @@ For the node-target federation config we use: Web-target shared config remains standard singleton sharing (no `import: false`) to preserve normal browser-side shared behavior. +Expected browser manifest contract for the web target: + +- `metaData.remoteEntry.type: 'global'` +- React/ReactDOM browser shared fallback JS assets are present. + This keeps React ownership on the host side in node SSR runtime and avoids remote shared fallback chunk loading incompatibilities. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index f385d9b5357..4d2a497702e 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -22,6 +22,11 @@ This host expects the paired remote's **node-target federation config** to use: - `shared.react/react-dom.import: false` - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` +For the remote web target (browser manifest), expected contract is: + +- `metaData.remoteEntry.type: 'global'` +- React/ReactDOM shared fallback JS asset lists are non-empty. + That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index f9cd9af750c..2836f116eac 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -24,6 +24,11 @@ For node-target federation in this setup we use: The web-target config keeps normal singleton shared config (without `import: false`) so client-side sharing remains unchanged. +Expected browser manifest contract for web target: + +- `metaData.remoteEntry.type: 'global'` +- React/ReactDOM shared fallback JS assets are present. + This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From c15356c3e8e9ea2f2ecc761fa0372661e52c1451 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:34:43 +0000 Subject: [PATCH 042/102] test: refactor manifest assertions with typed helper Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 82 +++++++++++++------ 1 file changed, 59 insertions(+), 23 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index d9c4e274e72..7ca30830c87 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -1,4 +1,5 @@ import { expect } from '@playwright/test' +import type { Page } from '@playwright/test' import { getTestServerPort, test } from '@tanstack/router-e2e-utils' import packageJson from '../package.json' with { type: 'json' } @@ -6,6 +7,57 @@ const REMOTE_PORT = await getTestServerPort(`${packageJson.name}-remote`) const REMOTE_ORIGIN = `http://localhost:${REMOTE_PORT}` const HOST_MODE = process.env.HOST_MODE || 'ssr' +type SharedAssetGroup = { + sync?: Array +} + +type ManifestSharedEntry = { + name?: string + assets?: { + js?: SharedAssetGroup + } +} + +type ManifestRemoteEntryMetadata = { + type?: string +} + +type MfManifest = { + metaData?: { + remoteEntry?: ManifestRemoteEntryMetadata + } + shared?: Array +} + +async function fetchManifest( + page: Page, + paths: Array, +): Promise { + for (const path of paths) { + const response = await page.request.get(`${REMOTE_ORIGIN}${path}`) + if (!response.ok()) { + continue + } + + const body = await response.text() + if (!body.trim().startsWith('{')) { + continue + } + + return JSON.parse(body) as MfManifest + } + + throw new Error( + `Could not load JSON manifest from any path: ${paths.join(', ')}`, + ) +} + +function getSharedByName(manifest: MfManifest) { + return new Map( + (manifest.shared ?? []).map((shared) => [shared.name, shared] as const), + ) +} + test('renders the remote module on the SSR response', async ({ page }) => { const response = await page.request.get('/') expect(response.ok()).toBeTruthy() @@ -54,16 +106,10 @@ test('loads remote entry over http at runtime', async ({ }) test('serves node-compatible remote SSR manifest metadata', async ({ page }) => { - const response = await page.request.get(`${REMOTE_ORIGIN}/ssr/mf-manifest.json`) - expect(response.ok()).toBeTruthy() - - const manifest = await response.json() + const manifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) expect(manifest?.metaData?.remoteEntry?.type).toBe('commonjs-module') - const sharedByName = new Map( - (manifest?.shared ?? []).map((shared: any) => [shared.name, shared]), - ) - + const sharedByName = getSharedByName(manifest) const reactShared = sharedByName.get('react') const reactDomShared = sharedByName.get('react-dom') @@ -72,23 +118,13 @@ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => }) test('serves browser manifest with shared fallback assets', async ({ page }) => { - const primaryResponse = await page.request.get( - `${REMOTE_ORIGIN}/mf-manifest.json`, - ) - const primaryBody = await primaryResponse.text() - const manifestResponse = - primaryResponse.ok() && primaryBody.trim().startsWith('{') - ? primaryResponse - : await page.request.get(`${REMOTE_ORIGIN}/dist/mf-manifest.json`) - expect(manifestResponse.ok()).toBeTruthy() - - const manifest = await manifestResponse.json() + const manifest = await fetchManifest(page, [ + '/mf-manifest.json', + '/dist/mf-manifest.json', + ]) expect(manifest?.metaData?.remoteEntry?.type).toBe('global') - const sharedByName = new Map( - (manifest?.shared ?? []).map((shared: any) => [shared.name, shared]), - ) - + const sharedByName = getSharedByName(manifest) const reactShared = sharedByName.get('react') const reactDomShared = sharedByName.get('react-dom') From 497f5b8f4f3310cbd022f342dd7b31ab7e3c4028 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:37:13 +0000 Subject: [PATCH 043/102] test: assert shared entries exist in manifest contracts Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 7ca30830c87..2052f0776a3 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -113,6 +113,8 @@ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => const reactShared = sharedByName.get('react') const reactDomShared = sharedByName.get('react-dom') + expect(reactShared).toBeDefined() + expect(reactDomShared).toBeDefined() expect(reactShared?.assets?.js?.sync ?? []).toEqual([]) expect(reactDomShared?.assets?.js?.sync ?? []).toEqual([]) }) @@ -128,6 +130,8 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => const reactShared = sharedByName.get('react') const reactDomShared = sharedByName.get('react-dom') + expect(reactShared).toBeDefined() + expect(reactDomShared).toBeDefined() expect((reactShared?.assets?.js?.sync ?? []).length).toBeGreaterThan(0) expect((reactDomShared?.assets?.js?.sync ?? []).length).toBeGreaterThan(0) }) From 49a105a397c1396718e29ea56c569e277174bf3f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:40:15 +0000 Subject: [PATCH 044/102] test: assert manifest publicPath http contracts Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 2 ++ .../tests/module-federation.spec.ts | 3 +++ e2e/react-start/module-federation-rsbuild-remote/README.md | 2 ++ examples/react/start-module-federation-rsbuild-host/README.md | 2 ++ .../react/start-module-federation-rsbuild-remote/README.md | 2 ++ 5 files changed, 11 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 40febd84527..5d2135437f0 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -36,10 +36,12 @@ Server remotes are loaded over HTTP from the remote SSR output and use: The e2e suite also validates the remote SSR manifest contract: - `metaData.remoteEntry.type === 'commonjs-module'` +- `metaData.publicPath` points to `http:///ssr/` - React/ReactDOM shared fallback asset lists are empty in SSR manifest. It also validates the browser manifest contract for the remote web target: - `metaData.remoteEntry.type === 'global'` +- `metaData.publicPath` points to `http:///` - React/ReactDOM shared fallback asset lists are populated in browser manifest. diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 2052f0776a3..47a294e34e1 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -25,6 +25,7 @@ type ManifestRemoteEntryMetadata = { type MfManifest = { metaData?: { remoteEntry?: ManifestRemoteEntryMetadata + publicPath?: string } shared?: Array } @@ -108,6 +109,7 @@ test('loads remote entry over http at runtime', async ({ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => { const manifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) expect(manifest?.metaData?.remoteEntry?.type).toBe('commonjs-module') + expect(manifest?.metaData?.publicPath).toBe(`${REMOTE_ORIGIN}/ssr/`) const sharedByName = getSharedByName(manifest) const reactShared = sharedByName.get('react') @@ -125,6 +127,7 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => '/dist/mf-manifest.json', ]) expect(manifest?.metaData?.remoteEntry?.type).toBe('global') + expect(manifest?.metaData?.publicPath).toBe(`${REMOTE_ORIGIN}/`) const sharedByName = getSharedByName(manifest) const reactShared = sharedByName.get('react') diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 96d2e572301..c3f6e2dd7ee 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -26,6 +26,7 @@ For the node-target federation config we use: - `shared.react.import: false` - `shared.react-dom.import: false` - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` +- SSR manifest `metaData.publicPath` points to `http:///ssr/` - empty SSR shared fallback JS assets for React/ReactDOM Web-target shared config remains standard singleton sharing (no `import: false`) @@ -34,6 +35,7 @@ to preserve normal browser-side shared behavior. Expected browser manifest contract for the web target: - `metaData.remoteEntry.type: 'global'` +- `metaData.publicPath` points to `http:///` - React/ReactDOM browser shared fallback JS assets are present. This keeps React ownership on the host side in node SSR runtime and avoids diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 4d2a497702e..9f562784024 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -21,10 +21,12 @@ This host expects the paired remote's **node-target federation config** to use: - `remoteType: 'script'` - `shared.react/react-dom.import: false` - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` +- SSR manifest `metaData.publicPath: 'http:///ssr/'` For the remote web target (browser manifest), expected contract is: - `metaData.remoteEntry.type: 'global'` +- `metaData.publicPath: 'http:///'` - React/ReactDOM shared fallback JS asset lists are non-empty. That combination keeps React shared ownership on the host and avoids SSR diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 2836f116eac..d8b288d0a79 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -20,6 +20,7 @@ For node-target federation in this setup we use: - `remoteType: 'script'` - `shared.react/react-dom.import: false` in the node-target config - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` +- SSR manifest `metaData.publicPath: 'http:///ssr/'` The web-target config keeps normal singleton shared config (without `import: false`) so client-side sharing remains unchanged. @@ -27,6 +28,7 @@ The web-target config keeps normal singleton shared config (without Expected browser manifest contract for web target: - `metaData.remoteEntry.type: 'global'` +- `metaData.publicPath: 'http:///'` - React/ReactDOM shared fallback JS assets are present. This keeps React shared ownership on the host side and avoids remote shared From 05786271a2e0aafd5cfd38119e357fb9ae8030dc Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:43:24 +0000 Subject: [PATCH 045/102] test: assert shared asset paths stay relative Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 1 + .../tests/module-federation.spec.ts | 14 ++++++++++++-- .../module-federation-rsbuild-remote/README.md | 1 + .../start-module-federation-rsbuild-host/README.md | 1 + .../README.md | 1 + 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 5d2135437f0..77f16c3be3d 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -44,4 +44,5 @@ It also validates the browser manifest contract for the remote web target: - `metaData.remoteEntry.type === 'global'` - `metaData.publicPath` points to `http:///` - React/ReactDOM shared fallback asset lists are populated in browser manifest. +- Browser shared JS asset entries remain relative `static/js/...` paths (resolved via HTTP `publicPath`). diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 47a294e34e1..bba4b6f1763 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -135,8 +135,18 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => expect(reactShared).toBeDefined() expect(reactDomShared).toBeDefined() - expect((reactShared?.assets?.js?.sync ?? []).length).toBeGreaterThan(0) - expect((reactDomShared?.assets?.js?.sync ?? []).length).toBeGreaterThan(0) + const reactSyncAssets = reactShared?.assets?.js?.sync ?? [] + const reactDomSyncAssets = reactDomShared?.assets?.js?.sync ?? [] + + expect(reactSyncAssets.length).toBeGreaterThan(0) + expect(reactDomSyncAssets.length).toBeGreaterThan(0) + + for (const assetPath of [...reactSyncAssets, ...reactDomSyncAssets]) { + expect(assetPath.startsWith('static/js/')).toBeTruthy() + expect(assetPath.startsWith('/')).toBeFalsy() + expect(assetPath.includes('file://')).toBeFalsy() + expect(assetPath.includes('/workspace/')).toBeFalsy() + } }) test('dynamically registers and renders remote routes', async ({ page }) => { diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index c3f6e2dd7ee..b91e6bc1dd4 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -37,6 +37,7 @@ Expected browser manifest contract for the web target: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath` points to `http:///` - React/ReactDOM browser shared fallback JS assets are present. +- Browser shared JS asset entries are relative `static/js/...` paths. This keeps React ownership on the host side in node SSR runtime and avoids remote shared fallback chunk loading incompatibilities. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 9f562784024..6c07a6bf93a 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -28,6 +28,7 @@ For the remote web target (browser manifest), expected contract is: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath: 'http:///'` - React/ReactDOM shared fallback JS asset lists are non-empty. +- Shared JS asset entries are relative `static/js/...` paths resolved via `publicPath`. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index d8b288d0a79..304efb97fa7 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -30,6 +30,7 @@ Expected browser manifest contract for web target: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath: 'http:///'` - React/ReactDOM shared fallback JS assets are present. +- Browser shared JS assets are emitted as relative `static/js/...` paths. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From dc025cc5344b33f397add23518977d8e83237bd9 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:47:34 +0000 Subject: [PATCH 046/102] test: assert exposed asset paths stay relative Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 2 + .../tests/module-federation.spec.ts | 48 ++++++++++++++++--- .../README.md | 2 + .../README.md | 2 + .../README.md | 2 + 5 files changed, 50 insertions(+), 6 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 77f16c3be3d..084d50ba77b 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -38,6 +38,7 @@ The e2e suite also validates the remote SSR manifest contract: - `metaData.remoteEntry.type === 'commonjs-module'` - `metaData.publicPath` points to `http:///ssr/` - React/ReactDOM shared fallback asset lists are empty in SSR manifest. +- Exposed module JS assets remain relative `static/js/...` paths. It also validates the browser manifest contract for the remote web target: @@ -45,4 +46,5 @@ It also validates the browser manifest contract for the remote web target: - `metaData.publicPath` points to `http:///` - React/ReactDOM shared fallback asset lists are populated in browser manifest. - Browser shared JS asset entries remain relative `static/js/...` paths (resolved via HTTP `publicPath`). +- Exposed module JS assets remain relative `static/js/...` paths. diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index bba4b6f1763..42e817dcd50 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -18,6 +18,14 @@ type ManifestSharedEntry = { } } +type ManifestExposeEntry = { + name?: string + path?: string + assets?: { + js?: SharedAssetGroup + } +} + type ManifestRemoteEntryMetadata = { type?: string } @@ -28,6 +36,7 @@ type MfManifest = { publicPath?: string } shared?: Array + exposes?: Array } async function fetchManifest( @@ -59,6 +68,21 @@ function getSharedByName(manifest: MfManifest) { ) } +function getExposesByName(manifest: MfManifest) { + return new Map( + (manifest.exposes ?? []).map((expose) => [expose.name, expose] as const), + ) +} + +function assertRelativeJsAssetPaths(assetPaths: Array) { + for (const assetPath of assetPaths) { + expect(assetPath.startsWith('static/js/')).toBeTruthy() + expect(assetPath.startsWith('/')).toBeFalsy() + expect(assetPath.includes('file://')).toBeFalsy() + expect(assetPath.includes('/workspace/')).toBeFalsy() + } +} + test('renders the remote module on the SSR response', async ({ page }) => { const response = await page.request.get('/') expect(response.ok()).toBeTruthy() @@ -119,6 +143,15 @@ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => expect(reactDomShared).toBeDefined() expect(reactShared?.assets?.js?.sync ?? []).toEqual([]) expect(reactDomShared?.assets?.js?.sync ?? []).toEqual([]) + + const exposesByName = getExposesByName(manifest) + for (const exposeName of ['message', 'routes', 'server-data']) { + const exposeEntry = exposesByName.get(exposeName) + expect(exposeEntry).toBeDefined() + const exposeSyncAssets = exposeEntry?.assets?.js?.sync ?? [] + expect(exposeSyncAssets.length).toBeGreaterThan(0) + assertRelativeJsAssetPaths(exposeSyncAssets) + } }) test('serves browser manifest with shared fallback assets', async ({ page }) => { @@ -140,12 +173,15 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => expect(reactSyncAssets.length).toBeGreaterThan(0) expect(reactDomSyncAssets.length).toBeGreaterThan(0) - - for (const assetPath of [...reactSyncAssets, ...reactDomSyncAssets]) { - expect(assetPath.startsWith('static/js/')).toBeTruthy() - expect(assetPath.startsWith('/')).toBeFalsy() - expect(assetPath.includes('file://')).toBeFalsy() - expect(assetPath.includes('/workspace/')).toBeFalsy() + assertRelativeJsAssetPaths([...reactSyncAssets, ...reactDomSyncAssets]) + + const exposesByName = getExposesByName(manifest) + for (const exposeName of ['message', 'routes', 'server-data']) { + const exposeEntry = exposesByName.get(exposeName) + expect(exposeEntry).toBeDefined() + const exposeSyncAssets = exposeEntry?.assets?.js?.sync ?? [] + expect(exposeSyncAssets.length).toBeGreaterThan(0) + assertRelativeJsAssetPaths(exposeSyncAssets) } }) diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index b91e6bc1dd4..090e05a8c46 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -28,6 +28,7 @@ For the node-target federation config we use: - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath` points to `http:///ssr/` - empty SSR shared fallback JS assets for React/ReactDOM +- exposed module JS asset entries are relative `static/js/...` paths. Web-target shared config remains standard singleton sharing (no `import: false`) to preserve normal browser-side shared behavior. @@ -38,6 +39,7 @@ Expected browser manifest contract for the web target: - `metaData.publicPath` points to `http:///` - React/ReactDOM browser shared fallback JS assets are present. - Browser shared JS asset entries are relative `static/js/...` paths. +- Exposed module JS asset entries are also relative `static/js/...` paths. This keeps React ownership on the host side in node SSR runtime and avoids remote shared fallback chunk loading incompatibilities. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 6c07a6bf93a..d263faaa8df 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -22,6 +22,7 @@ This host expects the paired remote's **node-target federation config** to use: - `shared.react/react-dom.import: false` - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath: 'http:///ssr/'` +- SSR exposed module JS asset paths as relative `static/js/...` For the remote web target (browser manifest), expected contract is: @@ -29,6 +30,7 @@ For the remote web target (browser manifest), expected contract is: - `metaData.publicPath: 'http:///'` - React/ReactDOM shared fallback JS asset lists are non-empty. - Shared JS asset entries are relative `static/js/...` paths resolved via `publicPath`. +- Exposed module JS asset entries are also relative `static/js/...` paths. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 304efb97fa7..f5dc17de98b 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -21,6 +21,7 @@ For node-target federation in this setup we use: - `shared.react/react-dom.import: false` in the node-target config - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath: 'http:///ssr/'` +- SSR exposed module JS assets are emitted as relative `static/js/...` paths. The web-target config keeps normal singleton shared config (without `import: false`) so client-side sharing remains unchanged. @@ -31,6 +32,7 @@ Expected browser manifest contract for web target: - `metaData.publicPath: 'http:///'` - React/ReactDOM shared fallback JS assets are present. - Browser shared JS assets are emitted as relative `static/js/...` paths. +- Browser exposed module JS assets are also relative `static/js/...` paths. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 56a688e739859bd75d266080af40751870be145d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:50:06 +0000 Subject: [PATCH 047/102] test: assert expose ids and paths in manifests Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 42e817dcd50..79ac3bbbb10 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -19,6 +19,7 @@ type ManifestSharedEntry = { } type ManifestExposeEntry = { + id?: string name?: string path?: string assets?: { @@ -83,6 +84,26 @@ function assertRelativeJsAssetPaths(assetPaths: Array) { } } +function assertExposeContracts(manifest: MfManifest) { + const expectedExposePaths = { + message: './message', + routes: './routes', + 'server-data': './server-data', + } as const + + const exposesByName = getExposesByName(manifest) + for (const [exposeName, expectedPath] of Object.entries(expectedExposePaths)) { + const exposeEntry = exposesByName.get(exposeName) + expect(exposeEntry).toBeDefined() + expect(exposeEntry?.path).toBe(expectedPath) + expect(exposeEntry?.id).toBe(`mf_remote:${exposeName}`) + + const exposeSyncAssets = exposeEntry?.assets?.js?.sync ?? [] + expect(exposeSyncAssets.length).toBeGreaterThan(0) + assertRelativeJsAssetPaths(exposeSyncAssets) + } +} + test('renders the remote module on the SSR response', async ({ page }) => { const response = await page.request.get('/') expect(response.ok()).toBeTruthy() @@ -144,14 +165,7 @@ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => expect(reactShared?.assets?.js?.sync ?? []).toEqual([]) expect(reactDomShared?.assets?.js?.sync ?? []).toEqual([]) - const exposesByName = getExposesByName(manifest) - for (const exposeName of ['message', 'routes', 'server-data']) { - const exposeEntry = exposesByName.get(exposeName) - expect(exposeEntry).toBeDefined() - const exposeSyncAssets = exposeEntry?.assets?.js?.sync ?? [] - expect(exposeSyncAssets.length).toBeGreaterThan(0) - assertRelativeJsAssetPaths(exposeSyncAssets) - } + assertExposeContracts(manifest) }) test('serves browser manifest with shared fallback assets', async ({ page }) => { @@ -175,14 +189,7 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => expect(reactDomSyncAssets.length).toBeGreaterThan(0) assertRelativeJsAssetPaths([...reactSyncAssets, ...reactDomSyncAssets]) - const exposesByName = getExposesByName(manifest) - for (const exposeName of ['message', 'routes', 'server-data']) { - const exposeEntry = exposesByName.get(exposeName) - expect(exposeEntry).toBeDefined() - const exposeSyncAssets = exposeEntry?.assets?.js?.sync ?? [] - expect(exposeSyncAssets.length).toBeGreaterThan(0) - assertRelativeJsAssetPaths(exposeSyncAssets) - } + assertExposeContracts(manifest) }) test('dynamically registers and renders remote routes', async ({ page }) => { From 798be68f47707f4427f9612bbffc4497f91d2b75 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:53:55 +0000 Subject: [PATCH 048/102] test: assert wildcard shared metadata for SSR manifests Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 2 ++ .../tests/module-federation.spec.ts | 15 +++++++++++++++ .../module-federation-rsbuild-remote/README.md | 2 ++ .../README.md | 2 ++ .../README.md | 2 ++ 5 files changed, 23 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 084d50ba77b..a9f98e751eb 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -37,6 +37,7 @@ The e2e suite also validates the remote SSR manifest contract: - `metaData.remoteEntry.type === 'commonjs-module'` - `metaData.publicPath` points to `http:///ssr/` +- React/ReactDOM shared entries use wildcard metadata (`version: '*'`, `requiredVersion: '^*'`) in SSR manifest. - React/ReactDOM shared fallback asset lists are empty in SSR manifest. - Exposed module JS assets remain relative `static/js/...` paths. @@ -44,6 +45,7 @@ It also validates the browser manifest contract for the remote web target: - `metaData.remoteEntry.type === 'global'` - `metaData.publicPath` points to `http:///` +- React/ReactDOM shared entries use concrete non-wildcard versions in browser manifest. - React/ReactDOM shared fallback asset lists are populated in browser manifest. - Browser shared JS asset entries remain relative `static/js/...` paths (resolved via HTTP `publicPath`). - Exposed module JS assets remain relative `static/js/...` paths. diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 79ac3bbbb10..e4c50084aab 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -13,6 +13,9 @@ type SharedAssetGroup = { type ManifestSharedEntry = { name?: string + version?: string + requiredVersion?: string + fallback?: string assets?: { js?: SharedAssetGroup } @@ -162,6 +165,12 @@ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => expect(reactShared).toBeDefined() expect(reactDomShared).toBeDefined() + expect(reactShared?.version).toBe('*') + expect(reactShared?.requiredVersion).toBe('^*') + expect(reactDomShared?.version).toBe('*') + expect(reactDomShared?.requiredVersion).toBe('^*') + expect(reactShared?.fallback).toBe('') + expect(reactDomShared?.fallback).toBe('') expect(reactShared?.assets?.js?.sync ?? []).toEqual([]) expect(reactDomShared?.assets?.js?.sync ?? []).toEqual([]) @@ -182,6 +191,12 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => expect(reactShared).toBeDefined() expect(reactDomShared).toBeDefined() + expect(reactShared?.version).not.toBe('*') + expect(reactDomShared?.version).not.toBe('*') + expect(reactShared?.requiredVersion).not.toBe('^*') + expect(reactDomShared?.requiredVersion).not.toBe('^*') + expect(reactShared?.fallback).toBe('') + expect(reactDomShared?.fallback).toBe('') const reactSyncAssets = reactShared?.assets?.js?.sync ?? [] const reactDomSyncAssets = reactDomShared?.assets?.js?.sync ?? [] diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 090e05a8c46..2fa2a877a64 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -27,6 +27,7 @@ For the node-target federation config we use: - `shared.react-dom.import: false` - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath` points to `http:///ssr/` +- SSR React/ReactDOM shared metadata uses wildcard versions (`*` / `^*`). - empty SSR shared fallback JS assets for React/ReactDOM - exposed module JS asset entries are relative `static/js/...` paths. @@ -37,6 +38,7 @@ Expected browser manifest contract for the web target: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath` points to `http:///` +- browser React/ReactDOM shared metadata uses concrete non-wildcard versions. - React/ReactDOM browser shared fallback JS assets are present. - Browser shared JS asset entries are relative `static/js/...` paths. - Exposed module JS asset entries are also relative `static/js/...` paths. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index d263faaa8df..ec60b6c5950 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -22,12 +22,14 @@ This host expects the paired remote's **node-target federation config** to use: - `shared.react/react-dom.import: false` - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath: 'http:///ssr/'` +- SSR manifest React/ReactDOM shared metadata uses wildcard versions (`*` / `^*`) - SSR exposed module JS asset paths as relative `static/js/...` For the remote web target (browser manifest), expected contract is: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath: 'http:///'` +- browser React/ReactDOM shared metadata uses concrete non-wildcard versions - React/ReactDOM shared fallback JS asset lists are non-empty. - Shared JS asset entries are relative `static/js/...` paths resolved via `publicPath`. - Exposed module JS asset entries are also relative `static/js/...` paths. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index f5dc17de98b..5c172f6059d 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -21,6 +21,7 @@ For node-target federation in this setup we use: - `shared.react/react-dom.import: false` in the node-target config - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath: 'http:///ssr/'` +- SSR React/ReactDOM shared metadata is wildcard (`*` / `^*`) - SSR exposed module JS assets are emitted as relative `static/js/...` paths. The web-target config keeps normal singleton shared config (without @@ -30,6 +31,7 @@ Expected browser manifest contract for web target: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath: 'http:///'` +- browser React/ReactDOM shared metadata uses concrete non-wildcard versions - React/ReactDOM shared fallback JS assets are present. - Browser shared JS assets are emitted as relative `static/js/...` paths. - Browser exposed module JS assets are also relative `static/js/...` paths. From cbb9dd47390e408197546419ef8f6050da901288 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:56:36 +0000 Subject: [PATCH 049/102] test: verify remoteEntry payload and types metadata Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index e4c50084aab..3ef4d725c3c 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -34,10 +34,16 @@ type ManifestRemoteEntryMetadata = { type?: string } +type ManifestTypesMetadata = { + zip?: string + api?: string +} + type MfManifest = { metaData?: { remoteEntry?: ManifestRemoteEntryMetadata publicPath?: string + types?: ManifestTypesMetadata } shared?: Array exposes?: Array @@ -154,10 +160,26 @@ test('loads remote entry over http at runtime', async ({ } }) +test('serves remote entries as javascript over HTTP', async ({ page }) => { + for (const remoteEntryPath of ['/dist/remoteEntry.js', '/ssr/remoteEntry.js']) { + const response = await page.request.get(`${REMOTE_ORIGIN}${remoteEntryPath}`) + expect(response.ok()).toBeTruthy() + + const contentType = response.headers()['content-type'] ?? '' + expect(contentType.includes('text/html')).toBeFalsy() + + const body = await response.text() + expect(body.startsWith('')).toBeFalsy() + expect(body.includes('mf_remote')).toBeTruthy() + } +}) + test('serves node-compatible remote SSR manifest metadata', async ({ page }) => { const manifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) expect(manifest?.metaData?.remoteEntry?.type).toBe('commonjs-module') expect(manifest?.metaData?.publicPath).toBe(`${REMOTE_ORIGIN}/ssr/`) + expect(manifest?.metaData?.types?.zip).toBe('') + expect(manifest?.metaData?.types?.api).toBe('') const sharedByName = getSharedByName(manifest) const reactShared = sharedByName.get('react') @@ -184,6 +206,8 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => ]) expect(manifest?.metaData?.remoteEntry?.type).toBe('global') expect(manifest?.metaData?.publicPath).toBe(`${REMOTE_ORIGIN}/`) + expect(manifest?.metaData?.types?.zip).toBe('@mf-types.zip') + expect(manifest?.metaData?.types?.api).toBe('@mf-types.d.ts') const sharedByName = getSharedByName(manifest) const reactShared = sharedByName.get('react') From 9eab2733c66e456a2216c2695c9630f8404d980c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 21:59:32 +0000 Subject: [PATCH 050/102] test: lock remote types metadata contracts Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 9 +++++++++ .../tests/module-federation.spec.ts | 1 + .../module-federation-rsbuild-remote/README.md | 5 +++++ .../react/start-module-federation-rsbuild-host/README.md | 3 +++ .../start-module-federation-rsbuild-remote/README.md | 3 +++ 5 files changed, 21 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index a9f98e751eb..323ce7b62c6 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -37,6 +37,7 @@ The e2e suite also validates the remote SSR manifest contract: - `metaData.remoteEntry.type === 'commonjs-module'` - `metaData.publicPath` points to `http:///ssr/` +- `metaData.types.zip === ''` and `metaData.types.api === ''` - React/ReactDOM shared entries use wildcard metadata (`version: '*'`, `requiredVersion: '^*'`) in SSR manifest. - React/ReactDOM shared fallback asset lists are empty in SSR manifest. - Exposed module JS assets remain relative `static/js/...` paths. @@ -45,8 +46,16 @@ It also validates the browser manifest contract for the remote web target: - `metaData.remoteEntry.type === 'global'` - `metaData.publicPath` points to `http:///` +- `metaData.types.zip === '@mf-types.zip'` and `metaData.types.api === '@mf-types.d.ts'` - React/ReactDOM shared entries use concrete non-wildcard versions in browser manifest. - React/ReactDOM shared fallback asset lists are populated in browser manifest. - Browser shared JS asset entries remain relative `static/js/...` paths (resolved via HTTP `publicPath`). - Exposed module JS assets remain relative `static/js/...` paths. +Remote entry payloads are also validated directly over HTTP at: + +- `/dist/remoteEntry.js` +- `/ssr/remoteEntry.js` + +and must return JavaScript content (not HTML fallback pages). + diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 3ef4d725c3c..075b99e19f5 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -101,6 +101,7 @@ function assertExposeContracts(manifest: MfManifest) { } as const const exposesByName = getExposesByName(manifest) + expect(exposesByName.size).toBe(Object.keys(expectedExposePaths).length) for (const [exposeName, expectedPath] of Object.entries(expectedExposePaths)) { const exposeEntry = exposesByName.get(exposeName) expect(exposeEntry).toBeDefined() diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 2fa2a877a64..d5cf1bfe39c 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -27,6 +27,7 @@ For the node-target federation config we use: - `shared.react-dom.import: false` - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath` points to `http:///ssr/` +- SSR manifest types metadata is empty (`zip: ''`, `api: ''`) - SSR React/ReactDOM shared metadata uses wildcard versions (`*` / `^*`). - empty SSR shared fallback JS assets for React/ReactDOM - exposed module JS asset entries are relative `static/js/...` paths. @@ -38,11 +39,15 @@ Expected browser manifest contract for the web target: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath` points to `http:///` +- browser manifest types metadata points to emitted types (`@mf-types.zip`, `@mf-types.d.ts`) - browser React/ReactDOM shared metadata uses concrete non-wildcard versions. - React/ReactDOM browser shared fallback JS assets are present. - Browser shared JS asset entries are relative `static/js/...` paths. - Exposed module JS asset entries are also relative `static/js/...` paths. +Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve +JavaScript payloads over HTTP (not HTML fallbacks). + This keeps React ownership on the host side in node SSR runtime and avoids remote shared fallback chunk loading incompatibilities. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index ec60b6c5950..6c5ec0a4637 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -22,6 +22,7 @@ This host expects the paired remote's **node-target federation config** to use: - `shared.react/react-dom.import: false` - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath: 'http:///ssr/'` +- SSR manifest types metadata empty (`zip: ''`, `api: ''`) - SSR manifest React/ReactDOM shared metadata uses wildcard versions (`*` / `^*`) - SSR exposed module JS asset paths as relative `static/js/...` @@ -29,10 +30,12 @@ For the remote web target (browser manifest), expected contract is: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath: 'http:///'` +- browser manifest types metadata points to emitted types (`@mf-types.zip`, `@mf-types.d.ts`) - browser React/ReactDOM shared metadata uses concrete non-wildcard versions - React/ReactDOM shared fallback JS asset lists are non-empty. - Shared JS asset entries are relative `static/js/...` paths resolved via `publicPath`. - Exposed module JS asset entries are also relative `static/js/...` paths. +- `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` should serve JavaScript over HTTP. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 5c172f6059d..dc91524a6b8 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -21,6 +21,7 @@ For node-target federation in this setup we use: - `shared.react/react-dom.import: false` in the node-target config - SSR manifest `metaData.remoteEntry.type: 'commonjs-module'` - SSR manifest `metaData.publicPath: 'http:///ssr/'` +- SSR manifest types metadata stays empty (`zip: ''`, `api: ''`) - SSR React/ReactDOM shared metadata is wildcard (`*` / `^*`) - SSR exposed module JS assets are emitted as relative `static/js/...` paths. @@ -31,10 +32,12 @@ Expected browser manifest contract for web target: - `metaData.remoteEntry.type: 'global'` - `metaData.publicPath: 'http:///'` +- browser manifest types metadata points to emitted types (`@mf-types.zip`, `@mf-types.d.ts`) - browser React/ReactDOM shared metadata uses concrete non-wildcard versions - React/ReactDOM shared fallback JS assets are present. - Browser shared JS assets are emitted as relative `static/js/...` paths. - Browser exposed module JS assets are also relative `static/js/...` paths. +- `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are served as JavaScript over HTTP. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 27358e1fedff24e1c3504a16a781b9cbb1632aff Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:02:26 +0000 Subject: [PATCH 051/102] test: assert manifest has no nested remotes Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 075b99e19f5..5fbeab33c8b 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -47,6 +47,7 @@ type MfManifest = { } shared?: Array exposes?: Array + remotes?: Array } async function fetchManifest( @@ -183,6 +184,8 @@ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => expect(manifest?.metaData?.types?.api).toBe('') const sharedByName = getSharedByName(manifest) + expect(sharedByName.size).toBe(2) + expect(manifest.remotes ?? []).toEqual([]) const reactShared = sharedByName.get('react') const reactDomShared = sharedByName.get('react-dom') @@ -211,6 +214,8 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => expect(manifest?.metaData?.types?.api).toBe('@mf-types.d.ts') const sharedByName = getSharedByName(manifest) + expect(sharedByName.size).toBe(2) + expect(manifest.remotes ?? []).toEqual([]) const reactShared = sharedByName.get('react') const reactDomShared = sharedByName.get('react-dom') From ce0c9c2c2dd0de45483a2e5d61833a33e0d17b68 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:05:02 +0000 Subject: [PATCH 052/102] test: enforce exact expose entry count Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 5fbeab33c8b..ad6def7e386 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -94,7 +94,26 @@ function assertRelativeJsAssetPaths(assetPaths: Array) { } } -function assertExposeContracts(manifest: MfManifest) { +async function assertAssetServedAsJavaScript( + page: Page, + basePath: '/dist' | '/ssr', + assetPath: string, +) { + const response = await page.request.get(`${REMOTE_ORIGIN}${basePath}/${assetPath}`) + expect(response.ok()).toBeTruthy() + + const contentType = response.headers()['content-type'] ?? '' + expect(contentType.includes('text/html')).toBeFalsy() + + const body = await response.text() + expect(body.startsWith('')).toBeFalsy() +} + +async function assertExposeContracts( + page: Page, + manifest: MfManifest, + basePath: '/dist' | '/ssr', +) { const expectedExposePaths = { message: './message', routes: './routes', @@ -112,6 +131,7 @@ function assertExposeContracts(manifest: MfManifest) { const exposeSyncAssets = exposeEntry?.assets?.js?.sync ?? [] expect(exposeSyncAssets.length).toBeGreaterThan(0) assertRelativeJsAssetPaths(exposeSyncAssets) + await assertAssetServedAsJavaScript(page, basePath, exposeSyncAssets[0]!) } } @@ -200,7 +220,7 @@ test('serves node-compatible remote SSR manifest metadata', async ({ page }) => expect(reactShared?.assets?.js?.sync ?? []).toEqual([]) expect(reactDomShared?.assets?.js?.sync ?? []).toEqual([]) - assertExposeContracts(manifest) + await assertExposeContracts(page, manifest, '/ssr') }) test('serves browser manifest with shared fallback assets', async ({ page }) => { @@ -233,8 +253,10 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => expect(reactSyncAssets.length).toBeGreaterThan(0) expect(reactDomSyncAssets.length).toBeGreaterThan(0) assertRelativeJsAssetPaths([...reactSyncAssets, ...reactDomSyncAssets]) + await assertAssetServedAsJavaScript(page, '/dist', reactSyncAssets[0]!) + await assertAssetServedAsJavaScript(page, '/dist', reactDomSyncAssets[0]!) - assertExposeContracts(manifest) + await assertExposeContracts(page, manifest, '/dist') }) test('dynamically registers and renders remote routes', async ({ page }) => { From 74ef8a64e954931631c700b381f192db5b89f012 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:07:39 +0000 Subject: [PATCH 053/102] test: verify expose assets resolve over manifest paths Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index ad6def7e386..2728e9b81e1 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -32,6 +32,8 @@ type ManifestExposeEntry = { type ManifestRemoteEntryMetadata = { type?: string + name?: string + path?: string } type ManifestTypesMetadata = { @@ -94,6 +96,17 @@ function assertRelativeJsAssetPaths(assetPaths: Array) { } } +function assertRemoteEntryMeta( + manifest: MfManifest, + expectedType: 'global' | 'commonjs-module', + expectedPublicPath: string, +) { + expect(manifest?.metaData?.remoteEntry?.type).toBe(expectedType) + expect(manifest?.metaData?.remoteEntry?.name).toBe('remoteEntry.js') + expect(manifest?.metaData?.remoteEntry?.path).toBe('') + expect(manifest?.metaData?.publicPath).toBe(expectedPublicPath) +} + async function assertAssetServedAsJavaScript( page: Page, basePath: '/dist' | '/ssr', @@ -198,8 +211,7 @@ test('serves remote entries as javascript over HTTP', async ({ page }) => { test('serves node-compatible remote SSR manifest metadata', async ({ page }) => { const manifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) - expect(manifest?.metaData?.remoteEntry?.type).toBe('commonjs-module') - expect(manifest?.metaData?.publicPath).toBe(`${REMOTE_ORIGIN}/ssr/`) + assertRemoteEntryMeta(manifest, 'commonjs-module', `${REMOTE_ORIGIN}/ssr/`) expect(manifest?.metaData?.types?.zip).toBe('') expect(manifest?.metaData?.types?.api).toBe('') @@ -228,8 +240,7 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => '/mf-manifest.json', '/dist/mf-manifest.json', ]) - expect(manifest?.metaData?.remoteEntry?.type).toBe('global') - expect(manifest?.metaData?.publicPath).toBe(`${REMOTE_ORIGIN}/`) + assertRemoteEntryMeta(manifest, 'global', `${REMOTE_ORIGIN}/`) expect(manifest?.metaData?.types?.zip).toBe('@mf-types.zip') expect(manifest?.metaData?.types?.api).toBe('@mf-types.d.ts') From 92c89caa88c569c98e71fd102e95e7fb75f665fb Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:10:10 +0000 Subject: [PATCH 054/102] test: assert javascript content-type for remote assets Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 2728e9b81e1..62fe6afcfd5 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -115,8 +115,10 @@ async function assertAssetServedAsJavaScript( const response = await page.request.get(`${REMOTE_ORIGIN}${basePath}/${assetPath}`) expect(response.ok()).toBeTruthy() - const contentType = response.headers()['content-type'] ?? '' + const contentType = (response.headers()['content-type'] ?? '').toLowerCase() + expect(contentType).not.toBe('') expect(contentType.includes('text/html')).toBeFalsy() + expect(contentType.includes('javascript')).toBeTruthy() const body = await response.text() expect(body.startsWith('')).toBeFalsy() @@ -200,8 +202,10 @@ test('serves remote entries as javascript over HTTP', async ({ page }) => { const response = await page.request.get(`${REMOTE_ORIGIN}${remoteEntryPath}`) expect(response.ok()).toBeTruthy() - const contentType = response.headers()['content-type'] ?? '' + const contentType = (response.headers()['content-type'] ?? '').toLowerCase() + expect(contentType).not.toBe('') expect(contentType.includes('text/html')).toBeFalsy() + expect(contentType.includes('javascript')).toBeTruthy() const body = await response.text() expect(body.startsWith('')).toBeFalsy() From c5ec84f6ca1eda1ac915bd16dd58e4efce49683d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:10:55 +0000 Subject: [PATCH 055/102] docs: note javascript content-type requirement Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 2 +- e2e/react-start/module-federation-rsbuild-remote/README.md | 2 +- examples/react/start-module-federation-rsbuild-host/README.md | 2 +- examples/react/start-module-federation-rsbuild-remote/README.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 323ce7b62c6..417c4dafc91 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -57,5 +57,5 @@ Remote entry payloads are also validated directly over HTTP at: - `/dist/remoteEntry.js` - `/ssr/remoteEntry.js` -and must return JavaScript content (not HTML fallback pages). +and must return JavaScript content-types (not HTML fallback pages). diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index d5cf1bfe39c..bc95520d3f1 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -46,7 +46,7 @@ Expected browser manifest contract for the web target: - Exposed module JS asset entries are also relative `static/js/...` paths. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve -JavaScript payloads over HTTP (not HTML fallbacks). +JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). This keeps React ownership on the host side in node SSR runtime and avoids remote shared fallback chunk loading incompatibilities. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 6c5ec0a4637..97f09fa5c08 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -35,7 +35,7 @@ For the remote web target (browser manifest), expected contract is: - React/ReactDOM shared fallback JS asset lists are non-empty. - Shared JS asset entries are relative `static/js/...` paths resolved via `publicPath`. - Exposed module JS asset entries are also relative `static/js/...` paths. -- `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` should serve JavaScript over HTTP. +- `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` should serve JavaScript over HTTP with JavaScript content-types. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index dc91524a6b8..2d056502eb4 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -37,7 +37,7 @@ Expected browser manifest contract for web target: - React/ReactDOM shared fallback JS assets are present. - Browser shared JS assets are emitted as relative `static/js/...` paths. - Browser exposed module JS assets are also relative `static/js/...` paths. -- `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are served as JavaScript over HTTP. +- `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are served as JavaScript over HTTP with JavaScript content-types. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 141007884e4b667c58c93f1c59912070fe8a4479 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:13:56 +0000 Subject: [PATCH 056/102] test: verify federated types archive over http Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 6 ++++++ .../tests/module-federation.spec.ts | 12 ++++++++++++ .../module-federation-rsbuild-remote/README.md | 3 +++ .../start-module-federation-rsbuild-host/README.md | 1 + .../start-module-federation-rsbuild-remote/README.md | 1 + 5 files changed, 23 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 417c4dafc91..77d9b990d6c 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -59,3 +59,9 @@ Remote entry payloads are also validated directly over HTTP at: and must return JavaScript content-types (not HTML fallback pages). +The browser types artifact is also validated at: + +- `/dist/@mf-types.zip` + +and must be retrievable over HTTP as a non-HTML payload. + diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 62fe6afcfd5..cf01d0bd47d 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -213,6 +213,18 @@ test('serves remote entries as javascript over HTTP', async ({ page }) => { } }) +test('serves browser federated types zip over HTTP', async ({ page }) => { + const response = await page.request.get(`${REMOTE_ORIGIN}/dist/@mf-types.zip`) + expect(response.ok()).toBeTruthy() + + const contentType = (response.headers()['content-type'] ?? '').toLowerCase() + expect(contentType).not.toBe('') + expect(contentType.includes('text/html')).toBeFalsy() + + const body = await response.body() + expect(body.length).toBeGreaterThan(0) +}) + test('serves node-compatible remote SSR manifest metadata', async ({ page }) => { const manifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) assertRemoteEntryMeta(manifest, 'commonjs-module', `${REMOTE_ORIGIN}/ssr/`) diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index bc95520d3f1..7cae3db09a9 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -48,6 +48,9 @@ Expected browser manifest contract for the web target: Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). +The browser types archive `/dist/@mf-types.zip` should also be retrievable as a +non-HTML payload. + This keeps React ownership on the host side in node SSR runtime and avoids remote shared fallback chunk loading incompatibilities. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 97f09fa5c08..282459829de 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -36,6 +36,7 @@ For the remote web target (browser manifest), expected contract is: - Shared JS asset entries are relative `static/js/...` paths resolved via `publicPath`. - Exposed module JS asset entries are also relative `static/js/...` paths. - `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` should serve JavaScript over HTTP with JavaScript content-types. +- `/dist/@mf-types.zip` should be retrievable over HTTP as a non-HTML payload. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 2d056502eb4..8c8c9a4225f 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -38,6 +38,7 @@ Expected browser manifest contract for web target: - Browser shared JS assets are emitted as relative `static/js/...` paths. - Browser exposed module JS assets are also relative `static/js/...` paths. - `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are served as JavaScript over HTTP with JavaScript content-types. +- `/dist/@mf-types.zip` is retrievable over HTTP as a non-HTML payload. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From bb4f44417130826d935ffc33541c52d80ca8abfb Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:15:11 +0000 Subject: [PATCH 057/102] test: resolve types artifact from manifest metadata Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index cf01d0bd47d..af2c5156907 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -214,7 +214,15 @@ test('serves remote entries as javascript over HTTP', async ({ page }) => { }) test('serves browser federated types zip over HTTP', async ({ page }) => { - const response = await page.request.get(`${REMOTE_ORIGIN}/dist/@mf-types.zip`) + const manifest = await fetchManifest(page, [ + '/mf-manifest.json', + '/dist/mf-manifest.json', + ]) + const typesZip = manifest?.metaData?.types?.zip + expect(typesZip).toBeDefined() + expect(typesZip?.startsWith('@')).toBeTruthy() + + const response = await page.request.get(`${REMOTE_ORIGIN}/dist/${typesZip}`) expect(response.ok()).toBeTruthy() const contentType = (response.headers()['content-type'] ?? '').toLowerCase() From be8116b0822325eca7eab03b0aae9bc8204ca3dd Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:17:51 +0000 Subject: [PATCH 058/102] test: read types archive path from manifest Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index af2c5156907..94911608251 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -146,7 +146,9 @@ async function assertExposeContracts( const exposeSyncAssets = exposeEntry?.assets?.js?.sync ?? [] expect(exposeSyncAssets.length).toBeGreaterThan(0) assertRelativeJsAssetPaths(exposeSyncAssets) - await assertAssetServedAsJavaScript(page, basePath, exposeSyncAssets[0]!) + for (const exposeAsset of exposeSyncAssets) { + await assertAssetServedAsJavaScript(page, basePath, exposeAsset) + } } } @@ -288,8 +290,9 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => expect(reactSyncAssets.length).toBeGreaterThan(0) expect(reactDomSyncAssets.length).toBeGreaterThan(0) assertRelativeJsAssetPaths([...reactSyncAssets, ...reactDomSyncAssets]) - await assertAssetServedAsJavaScript(page, '/dist', reactSyncAssets[0]!) - await assertAssetServedAsJavaScript(page, '/dist', reactDomSyncAssets[0]!) + for (const sharedAsset of [...reactSyncAssets, ...reactDomSyncAssets]) { + await assertAssetServedAsJavaScript(page, '/dist', sharedAsset) + } await assertExposeContracts(page, manifest, '/dist') }) From 7c805ca494c5fef462dc0220894c6ff4bc867ec5 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:22:35 +0000 Subject: [PATCH 059/102] test: validate federation stats endpoints are JSON Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 94911608251..e1d204cf097 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -215,6 +215,25 @@ test('serves remote entries as javascript over HTTP', async ({ page }) => { } }) +test('serves federation manifest and stats endpoints as JSON', async ({ page }) => { + for (const path of [ + '/dist/mf-manifest.json', + '/dist/mf-stats.json', + '/ssr/mf-manifest.json', + '/ssr/mf-stats.json', + ]) { + const response = await page.request.get(`${REMOTE_ORIGIN}${path}`) + expect(response.ok()).toBeTruthy() + + const contentType = (response.headers()['content-type'] ?? '').toLowerCase() + expect(contentType.includes('text/html')).toBeFalsy() + expect(contentType.includes('application/json')).toBeTruthy() + + const body = await response.text() + expect(body.startsWith('{')).toBeTruthy() + } +}) + test('serves browser federated types zip over HTTP', async ({ page }) => { const manifest = await fetchManifest(page, [ '/mf-manifest.json', From e731921585be9630314d8a6974a3945630b862be Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:25:05 +0000 Subject: [PATCH 060/102] test: assert federation manifests and stats are JSON Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index e1d204cf097..2ceb3263f09 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -42,6 +42,8 @@ type ManifestTypesMetadata = { } type MfManifest = { + id?: string + name?: string metaData?: { remoteEntry?: ManifestRemoteEntryMetadata publicPath?: string @@ -107,6 +109,11 @@ function assertRemoteEntryMeta( expect(manifest?.metaData?.publicPath).toBe(expectedPublicPath) } +function assertManifestIdentity(manifest: MfManifest) { + expect(manifest.id).toBe('mf_remote') + expect(manifest.name).toBe('mf_remote') +} + async function assertAssetServedAsJavaScript( page: Page, basePath: '/dist' | '/ssr', @@ -256,6 +263,7 @@ test('serves browser federated types zip over HTTP', async ({ page }) => { test('serves node-compatible remote SSR manifest metadata', async ({ page }) => { const manifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) + assertManifestIdentity(manifest) assertRemoteEntryMeta(manifest, 'commonjs-module', `${REMOTE_ORIGIN}/ssr/`) expect(manifest?.metaData?.types?.zip).toBe('') expect(manifest?.metaData?.types?.api).toBe('') @@ -285,6 +293,7 @@ test('serves browser manifest with shared fallback assets', async ({ page }) => '/mf-manifest.json', '/dist/mf-manifest.json', ]) + assertManifestIdentity(manifest) assertRemoteEntryMeta(manifest, 'global', `${REMOTE_ORIGIN}/`) expect(manifest?.metaData?.types?.zip).toBe('@mf-types.zip') expect(manifest?.metaData?.types?.api).toBe('@mf-types.d.ts') From 32698824dae629ebf985603dee1a7b4c8fba9410 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:28:02 +0000 Subject: [PATCH 061/102] test: assert federation stats shared ownership contract Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 2ceb3263f09..52594c63e86 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -16,6 +16,9 @@ type ManifestSharedEntry = { version?: string requiredVersion?: string fallback?: string + import?: boolean + eager?: boolean + shareScope?: string assets?: { js?: SharedAssetGroup } @@ -25,6 +28,8 @@ type ManifestExposeEntry = { id?: string name?: string path?: string + file?: string + requires?: Array assets?: { js?: SharedAssetGroup } @@ -241,6 +246,33 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) } }) +test('keeps node shared ownership contract in federation stats', async ({ page }) => { + const ssrStats = await fetchManifest(page, ['/ssr/mf-stats.json']) + const browserStats = await fetchManifest(page, ['/dist/mf-stats.json']) + + const ssrSharedByName = getSharedByName(ssrStats) + const browserSharedByName = getSharedByName(browserStats) + + const ssrReact = ssrSharedByName.get('react') + const ssrReactDom = ssrSharedByName.get('react-dom') + const browserReact = browserSharedByName.get('react') + const browserReactDom = browserSharedByName.get('react-dom') + + expect(ssrReact?.import).toBe(false) + expect(ssrReactDom?.import).toBe(false) + expect(ssrReact?.shareScope).toBe('default') + expect(ssrReactDom?.shareScope).toBe('default') + expect(ssrReact?.eager).toBe(false) + expect(ssrReactDom?.eager).toBe(false) + + expect(browserReact?.import).toBeUndefined() + expect(browserReactDom?.import).toBeUndefined() + expect(browserReact?.shareScope).toBe('default') + expect(browserReactDom?.shareScope).toBe('default') + expect(browserReact?.eager).toBe(false) + expect(browserReactDom?.eager).toBe(false) +}) + test('serves browser federated types zip over HTTP', async ({ page }) => { const manifest = await fetchManifest(page, [ '/mf-manifest.json', From 46c8cd5b748399ec7f6dced890dddf1f49ce3af6 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:28:53 +0000 Subject: [PATCH 062/102] docs: describe stats shared import contract Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 5 +++++ e2e/react-start/module-federation-rsbuild-remote/README.md | 5 +++++ .../react/start-module-federation-rsbuild-host/README.md | 1 + .../react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 12 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 77d9b990d6c..5ab73291a30 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -52,6 +52,11 @@ It also validates the browser manifest contract for the remote web target: - Browser shared JS asset entries remain relative `static/js/...` paths (resolved via HTTP `publicPath`). - Exposed module JS assets remain relative `static/js/...` paths. +Federation stats contract is also verified: + +- SSR stats shared entries set `import: false` for `react` and `react-dom`. +- Browser stats shared entries omit `import` and keep standard web sharing metadata. + Remote entry payloads are also validated directly over HTTP at: - `/dist/remoteEntry.js` diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 7cae3db09a9..9b7125b74d7 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -45,6 +45,11 @@ Expected browser manifest contract for the web target: - Browser shared JS asset entries are relative `static/js/...` paths. - Exposed module JS asset entries are also relative `static/js/...` paths. +Federation stats contract expectations: + +- SSR stats include `import: false` on React/ReactDOM shared entries. +- Browser stats do not include `import` on React/ReactDOM shared entries. + Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 282459829de..56ff4939dd7 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -37,6 +37,7 @@ For the remote web target (browser manifest), expected contract is: - Exposed module JS asset entries are also relative `static/js/...` paths. - `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` should serve JavaScript over HTTP with JavaScript content-types. - `/dist/@mf-types.zip` should be retrievable over HTTP as a non-HTML payload. +- SSR stats shared entries should set `import: false` for React/ReactDOM; browser stats should omit `import`. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 8c8c9a4225f..c6356292d53 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -39,6 +39,7 @@ Expected browser manifest contract for web target: - Browser exposed module JS assets are also relative `static/js/...` paths. - `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are served as JavaScript over HTTP with JavaScript content-types. - `/dist/@mf-types.zip` is retrievable over HTTP as a non-HTML payload. +- SSR stats should show `import: false` for React/ReactDOM while browser stats keep `import` unset. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 494d31403721f54fe4df75ff9437c74ed18edb5b Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:32:11 +0000 Subject: [PATCH 063/102] test: assert federation manifest identity metadata Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 52594c63e86..b91c02bf0c6 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -46,13 +46,23 @@ type ManifestTypesMetadata = { api?: string } +type ManifestBuildInfo = { + buildVersion?: string + buildName?: string +} + type MfManifest = { id?: string name?: string metaData?: { + name?: string + type?: string + buildInfo?: ManifestBuildInfo remoteEntry?: ManifestRemoteEntryMetadata publicPath?: string types?: ManifestTypesMetadata + globalName?: string + prefetchInterface?: boolean } shared?: Array exposes?: Array @@ -117,6 +127,16 @@ function assertRemoteEntryMeta( function assertManifestIdentity(manifest: MfManifest) { expect(manifest.id).toBe('mf_remote') expect(manifest.name).toBe('mf_remote') + expect(manifest.metaData?.name).toBe('mf_remote') + expect(manifest.metaData?.type).toBe('app') + expect(manifest.metaData?.globalName).toBe('mf_remote') + expect(manifest.metaData?.prefetchInterface).toBe(false) + expect(manifest.metaData?.buildInfo?.buildVersion).toBe('local') + expect( + manifest.metaData?.buildInfo?.buildName?.includes( + 'module-federation-rsbuild-remote', + ) ?? false, + ).toBeTruthy() } async function assertAssetServedAsJavaScript( From 8e2498e57cde1ce89ae7e86d59019d9007c6e307 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:34:14 +0000 Subject: [PATCH 064/102] test: verify federation stats expose file metadata Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index b91c02bf0c6..148f5e3e1cb 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -291,6 +291,27 @@ test('keeps node shared ownership contract in federation stats', async ({ page } expect(browserReactDom?.shareScope).toBe('default') expect(browserReact?.eager).toBe(false) expect(browserReactDom?.eager).toBe(false) + + const expectedExposeFiles = { + message: 'src/message.tsx', + routes: 'src/routes.tsx', + 'server-data': 'src/server-data.ts', + } as const + + const ssrExposes = getExposesByName(ssrStats) + const browserExposes = getExposesByName(browserStats) + expect(ssrExposes.size).toBe(Object.keys(expectedExposeFiles).length) + expect(browserExposes.size).toBe(Object.keys(expectedExposeFiles).length) + + for (const [name, file] of Object.entries(expectedExposeFiles)) { + const ssrExpose = ssrExposes.get(name) + const browserExpose = browserExposes.get(name) + + expect(ssrExpose?.file).toBe(file) + expect(browserExpose?.file).toBe(file) + expect(ssrExpose?.requires ?? []).toEqual([]) + expect(browserExpose?.requires ?? []).toEqual([]) + } }) test('serves browser federated types zip over HTTP', async ({ page }) => { From 5d4a2f1b38e1b71e127335c5dea94e57290a99c5 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:36:58 +0000 Subject: [PATCH 065/102] test: assert manifest and stats contract parity Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 148f5e3e1cb..5252516bca4 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -104,6 +104,13 @@ function getExposesByName(manifest: MfManifest) { ) } +function getSortedEntryNames(entries: Array) { + return entries + .map((entry) => entry.name) + .filter((name): name is string => Boolean(name)) + .sort() +} + function assertRelativeJsAssetPaths(assetPaths: Array) { for (const assetPath of assetPaths) { expect(assetPath.startsWith('static/js/')).toBeTruthy() @@ -314,6 +321,36 @@ test('keeps node shared ownership contract in federation stats', async ({ page } } }) +test('keeps federation manifest and stats metadata aligned', async ({ page }) => { + const browserManifest = await fetchManifest(page, ['/dist/mf-manifest.json']) + const browserStats = await fetchManifest(page, ['/dist/mf-stats.json']) + const ssrManifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) + const ssrStats = await fetchManifest(page, ['/ssr/mf-stats.json']) + + for (const [manifest, stats] of [ + [browserManifest, browserStats], + [ssrManifest, ssrStats], + ] as const) { + expect(stats.id).toBe(manifest.id) + expect(stats.name).toBe(manifest.name) + expect(stats.metaData?.remoteEntry?.type).toBe(manifest.metaData?.remoteEntry?.type) + expect(stats.metaData?.publicPath).toBe(manifest.metaData?.publicPath) + expect(stats.metaData?.types?.zip).toBe(manifest.metaData?.types?.zip) + expect(stats.metaData?.types?.api).toBe(manifest.metaData?.types?.api) + expect(stats.metaData?.buildInfo?.buildVersion).toBe( + manifest.metaData?.buildInfo?.buildVersion, + ) + expect(stats.metaData?.globalName).toBe(manifest.metaData?.globalName) + + expect(getSortedEntryNames(stats.shared ?? [])).toEqual( + getSortedEntryNames(manifest.shared ?? []), + ) + expect(getSortedEntryNames(stats.exposes ?? [])).toEqual( + getSortedEntryNames(manifest.exposes ?? []), + ) + } +}) + test('serves browser federated types zip over HTTP', async ({ page }) => { const manifest = await fetchManifest(page, [ '/mf-manifest.json', From 6b534d8390214b0cfaff4104bf4813c0a1f59f65 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:38:31 +0000 Subject: [PATCH 066/102] docs: note manifest and stats parity contract Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 5ab73291a30..9009df7efcc 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -56,6 +56,7 @@ Federation stats contract is also verified: - SSR stats shared entries set `import: false` for `react` and `react-dom`. - Browser stats shared entries omit `import` and keep standard web sharing metadata. +- Manifest and stats metadata stay aligned (identity, remote entry type/publicPath, types metadata, shared/expose names). Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 9b7125b74d7..677ff69fa6d 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -49,6 +49,7 @@ Federation stats contract expectations: - SSR stats include `import: false` on React/ReactDOM shared entries. - Browser stats do not include `import` on React/ReactDOM shared entries. +- Manifest/stats metadata contracts remain aligned across `dist` and `ssr` outputs. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 56ff4939dd7..3e7cc2b27eb 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -38,6 +38,7 @@ For the remote web target (browser manifest), expected contract is: - `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` should serve JavaScript over HTTP with JavaScript content-types. - `/dist/@mf-types.zip` should be retrievable over HTTP as a non-HTML payload. - SSR stats shared entries should set `import: false` for React/ReactDOM; browser stats should omit `import`. +- Manifest and stats metadata should remain aligned across browser and SSR outputs. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index c6356292d53..773f007808a 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -40,6 +40,7 @@ Expected browser manifest contract for web target: - `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are served as JavaScript over HTTP with JavaScript content-types. - `/dist/@mf-types.zip` is retrievable over HTTP as a non-HTML payload. - SSR stats should show `import: false` for React/ReactDOM while browser stats keep `import` unset. +- Manifest/stats metadata is expected to stay aligned for both browser and SSR outputs. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From cbddcf7d8c5f6db7953de6e2460fb39c0876d99b Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:41:10 +0000 Subject: [PATCH 067/102] test: assert stats ids and cardinality contracts Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 5252516bca4..193365560ff 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -341,6 +341,7 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => manifest.metaData?.buildInfo?.buildVersion, ) expect(stats.metaData?.globalName).toBe(manifest.metaData?.globalName) + expect(stats.metaData?.prefetchInterface).toBe(manifest.metaData?.prefetchInterface) expect(getSortedEntryNames(stats.shared ?? [])).toEqual( getSortedEntryNames(manifest.shared ?? []), @@ -348,6 +349,20 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => expect(getSortedEntryNames(stats.exposes ?? [])).toEqual( getSortedEntryNames(manifest.exposes ?? []), ) + expect(stats.remotes ?? []).toEqual([]) + expect((stats.shared ?? []).length).toBe(2) + expect((stats.exposes ?? []).length).toBe(3) + } + + for (const stats of [browserStats, ssrStats]) { + const sharedByName = getSharedByName(stats) + expect(sharedByName.get('react')?.id).toBe('mf_remote:react') + expect(sharedByName.get('react-dom')?.id).toBe('mf_remote:react-dom') + + const exposesByName = getExposesByName(stats) + expect(exposesByName.get('message')?.id).toBe('mf_remote:message') + expect(exposesByName.get('routes')?.id).toBe('mf_remote:routes') + expect(exposesByName.get('server-data')?.id).toBe('mf_remote:server-data') } }) From 1ece27e1e38b52734498ea81443f656141371066 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:41:46 +0000 Subject: [PATCH 068/102] docs: record stats id and count invariants Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 9009df7efcc..a4961492c3f 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -57,6 +57,7 @@ Federation stats contract is also verified: - SSR stats shared entries set `import: false` for `react` and `react-dom`. - Browser stats shared entries omit `import` and keep standard web sharing metadata. - Manifest and stats metadata stay aligned (identity, remote entry type/publicPath, types metadata, shared/expose names). +- Stats outputs keep exact expected cardinality (`shared: 2`, `exposes: 3`) and stable ids (`mf_remote:*`). Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 677ff69fa6d..851dab1fbea 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -50,6 +50,7 @@ Federation stats contract expectations: - SSR stats include `import: false` on React/ReactDOM shared entries. - Browser stats do not include `import` on React/ReactDOM shared entries. - Manifest/stats metadata contracts remain aligned across `dist` and `ssr` outputs. +- Stats shared/expose id sets remain stable (`mf_remote:react`, `mf_remote:react-dom`, and expose ids for message/routes/server-data). Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 3e7cc2b27eb..5951045e27f 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -39,6 +39,7 @@ For the remote web target (browser manifest), expected contract is: - `/dist/@mf-types.zip` should be retrievable over HTTP as a non-HTML payload. - SSR stats shared entries should set `import: false` for React/ReactDOM; browser stats should omit `import`. - Manifest and stats metadata should remain aligned across browser and SSR outputs. +- Stats entry ids and cardinality should remain stable (`shared: 2`, `exposes: 3`, ids under `mf_remote:*`). That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 773f007808a..f39c3b98537 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -41,6 +41,7 @@ Expected browser manifest contract for web target: - `/dist/@mf-types.zip` is retrievable over HTTP as a non-HTML payload. - SSR stats should show `import: false` for React/ReactDOM while browser stats keep `import` unset. - Manifest/stats metadata is expected to stay aligned for both browser and SSR outputs. +- Stats shared/expose ids and counts are expected to remain stable (`shared: 2`, `exposes: 3`, ids prefixed with `mf_remote:`). This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 333b6ced50987a398e83b0bba255a1ff5dbce6b2 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:44:07 +0000 Subject: [PATCH 069/102] test: tighten manifest and stats metadata parity Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 193365560ff..f71bb1ccf04 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -63,6 +63,7 @@ type MfManifest = { types?: ManifestTypesMetadata globalName?: string prefetchInterface?: boolean + pluginVersion?: string } shared?: Array exposes?: Array @@ -333,6 +334,10 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => ] as const) { expect(stats.id).toBe(manifest.id) expect(stats.name).toBe(manifest.name) + expect(stats.metaData?.name).toBe(manifest.metaData?.name) + expect(stats.metaData?.type).toBe(manifest.metaData?.type) + expect(stats.metaData?.remoteEntry?.name).toBe(manifest.metaData?.remoteEntry?.name) + expect(stats.metaData?.remoteEntry?.path).toBe(manifest.metaData?.remoteEntry?.path) expect(stats.metaData?.remoteEntry?.type).toBe(manifest.metaData?.remoteEntry?.type) expect(stats.metaData?.publicPath).toBe(manifest.metaData?.publicPath) expect(stats.metaData?.types?.zip).toBe(manifest.metaData?.types?.zip) @@ -340,8 +345,12 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => expect(stats.metaData?.buildInfo?.buildVersion).toBe( manifest.metaData?.buildInfo?.buildVersion, ) + expect(stats.metaData?.buildInfo?.buildName).toBe( + manifest.metaData?.buildInfo?.buildName, + ) expect(stats.metaData?.globalName).toBe(manifest.metaData?.globalName) expect(stats.metaData?.prefetchInterface).toBe(manifest.metaData?.prefetchInterface) + expect(stats.metaData?.pluginVersion).toBe(manifest.metaData?.pluginVersion) expect(getSortedEntryNames(stats.shared ?? [])).toEqual( getSortedEntryNames(manifest.shared ?? []), From c09c87bf017164f1ea11b601904b29faadb0f081 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:44:41 +0000 Subject: [PATCH 070/102] docs: mention build and plugin metadata parity Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index a4961492c3f..22dd3290d3e 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -58,6 +58,7 @@ Federation stats contract is also verified: - Browser stats shared entries omit `import` and keep standard web sharing metadata. - Manifest and stats metadata stay aligned (identity, remote entry type/publicPath, types metadata, shared/expose names). - Stats outputs keep exact expected cardinality (`shared: 2`, `exposes: 3`) and stable ids (`mf_remote:*`). +- Alignment also covers build/plugin metadata (`buildInfo`, `pluginVersion`) and remoteEntry name/path fields. Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 851dab1fbea..8cccad2c8f2 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -51,6 +51,7 @@ Federation stats contract expectations: - Browser stats do not include `import` on React/ReactDOM shared entries. - Manifest/stats metadata contracts remain aligned across `dist` and `ssr` outputs. - Stats shared/expose id sets remain stable (`mf_remote:react`, `mf_remote:react-dom`, and expose ids for message/routes/server-data). +- Metadata alignment includes remoteEntry name/path and build/plugin version fields. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 5951045e27f..a22d9b8db6a 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -40,6 +40,7 @@ For the remote web target (browser manifest), expected contract is: - SSR stats shared entries should set `import: false` for React/ReactDOM; browser stats should omit `import`. - Manifest and stats metadata should remain aligned across browser and SSR outputs. - Stats entry ids and cardinality should remain stable (`shared: 2`, `exposes: 3`, ids under `mf_remote:*`). +- Metadata parity should include remoteEntry name/path plus build/plugin version fields. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index f39c3b98537..57e51558ab8 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -42,6 +42,7 @@ Expected browser manifest contract for web target: - SSR stats should show `import: false` for React/ReactDOM while browser stats keep `import` unset. - Manifest/stats metadata is expected to stay aligned for both browser and SSR outputs. - Stats shared/expose ids and counts are expected to remain stable (`shared: 2`, `exposes: 3`, ids prefixed with `mf_remote:`). +- Metadata alignment should also cover remoteEntry name/path and build/plugin version fields. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 40c2ee23d31288efaf8e16e1cd34eaa1e8c42adf Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:49:14 +0000 Subject: [PATCH 071/102] test: compare manifest and stats shared/expose assets Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index f71bb1ccf04..e51189d0464 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -9,9 +9,11 @@ const HOST_MODE = process.env.HOST_MODE || 'ssr' type SharedAssetGroup = { sync?: Array + async?: Array } type ManifestSharedEntry = { + id?: string name?: string version?: string requiredVersion?: string @@ -112,6 +114,22 @@ function getSortedEntryNames(entries: Array) { .sort() } +function sortAssetPaths(assetPaths: Array) { + return [...assetPaths].sort() +} + +function normalizeShareScope(shareScope?: string) { + return shareScope ?? 'default' +} + +function normalizeEager(eager?: boolean) { + return eager ?? false +} + +function normalizeImport(importFlag?: boolean) { + return importFlag ?? false +} + function assertRelativeJsAssetPaths(assetPaths: Array) { for (const assetPath of assetPaths) { expect(assetPath.startsWith('static/js/')).toBeTruthy() @@ -361,6 +379,51 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => expect(stats.remotes ?? []).toEqual([]) expect((stats.shared ?? []).length).toBe(2) expect((stats.exposes ?? []).length).toBe(3) + + const manifestSharedByName = getSharedByName(manifest) + const statsSharedByName = getSharedByName(stats) + for (const sharedName of getSortedEntryNames(manifest.shared ?? [])) { + const manifestShared = manifestSharedByName.get(sharedName) + const statsShared = statsSharedByName.get(sharedName) + + expect(statsShared?.id).toBe(manifestShared?.id) + expect(statsShared?.version).toBe(manifestShared?.version) + expect(statsShared?.requiredVersion).toBe(manifestShared?.requiredVersion) + expect(statsShared?.fallback).toBe(manifestShared?.fallback) + expect(normalizeShareScope(statsShared?.shareScope)).toBe( + normalizeShareScope(manifestShared?.shareScope), + ) + expect(normalizeImport(statsShared?.import)).toBe( + normalizeImport(manifestShared?.import), + ) + expect(normalizeEager(statsShared?.eager)).toBe( + normalizeEager(manifestShared?.eager), + ) + expect( + sortAssetPaths(statsShared?.assets?.js?.sync ?? []), + ).toEqual(sortAssetPaths(manifestShared?.assets?.js?.sync ?? [])) + expect( + sortAssetPaths(statsShared?.assets?.js?.async ?? []), + ).toEqual(sortAssetPaths(manifestShared?.assets?.js?.async ?? [])) + } + + const manifestExposesByName = getExposesByName(manifest) + const statsExposesByName = getExposesByName(stats) + for (const exposeName of getSortedEntryNames(manifest.exposes ?? [])) { + const manifestExpose = manifestExposesByName.get(exposeName) + const statsExpose = statsExposesByName.get(exposeName) + + expect(statsExpose?.id).toBe(manifestExpose?.id) + expect(statsExpose?.path).toBe(manifestExpose?.path) + expect(statsExpose?.file).toBeDefined() + expect(statsExpose?.requires ?? []).toEqual(manifestExpose?.requires ?? []) + expect( + sortAssetPaths(statsExpose?.assets?.js?.sync ?? []), + ).toEqual(sortAssetPaths(manifestExpose?.assets?.js?.sync ?? [])) + expect( + sortAssetPaths(statsExpose?.assets?.js?.async ?? []), + ).toEqual(sortAssetPaths(manifestExpose?.assets?.js?.async ?? [])) + } } for (const stats of [browserStats, ssrStats]) { From 84db5c583e0d0c48a40c10cc598ad2101ea7cddd Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:49:46 +0000 Subject: [PATCH 072/102] docs: describe manifest-stats asset list parity Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 22dd3290d3e..53bc4769ee2 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -59,6 +59,7 @@ Federation stats contract is also verified: - Manifest and stats metadata stay aligned (identity, remote entry type/publicPath, types metadata, shared/expose names). - Stats outputs keep exact expected cardinality (`shared: 2`, `exposes: 3`) and stable ids (`mf_remote:*`). - Alignment also covers build/plugin metadata (`buildInfo`, `pluginVersion`) and remoteEntry name/path fields. +- Shared/expose JS asset lists are aligned between manifest and stats for both browser and SSR outputs. Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 8cccad2c8f2..4c1f6d56863 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -52,6 +52,7 @@ Federation stats contract expectations: - Manifest/stats metadata contracts remain aligned across `dist` and `ssr` outputs. - Stats shared/expose id sets remain stable (`mf_remote:react`, `mf_remote:react-dom`, and expose ids for message/routes/server-data). - Metadata alignment includes remoteEntry name/path and build/plugin version fields. +- Shared/expose asset lists remain aligned between manifest and stats outputs. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index a22d9b8db6a..bb46b5e496c 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -41,6 +41,7 @@ For the remote web target (browser manifest), expected contract is: - Manifest and stats metadata should remain aligned across browser and SSR outputs. - Stats entry ids and cardinality should remain stable (`shared: 2`, `exposes: 3`, ids under `mf_remote:*`). - Metadata parity should include remoteEntry name/path plus build/plugin version fields. +- Shared/expose asset lists should also stay aligned between manifest and stats outputs. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 57e51558ab8..09ea703fbf8 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -43,6 +43,7 @@ Expected browser manifest contract for web target: - Manifest/stats metadata is expected to stay aligned for both browser and SSR outputs. - Stats shared/expose ids and counts are expected to remain stable (`shared: 2`, `exposes: 3`, ids prefixed with `mf_remote:`). - Metadata alignment should also cover remoteEntry name/path and build/plugin version fields. +- Shared/expose asset lists are expected to match between manifest and stats outputs. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 4166ac888bab2362c88c12bb34e2de3b0aacfbfe Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:52:43 +0000 Subject: [PATCH 073/102] test: include css and types path parity in stats Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index e51189d0464..2511583b001 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -23,6 +23,7 @@ type ManifestSharedEntry = { shareScope?: string assets?: { js?: SharedAssetGroup + css?: SharedAssetGroup } } @@ -34,6 +35,7 @@ type ManifestExposeEntry = { requires?: Array assets?: { js?: SharedAssetGroup + css?: SharedAssetGroup } } @@ -44,6 +46,8 @@ type ManifestRemoteEntryMetadata = { } type ManifestTypesMetadata = { + path?: string + name?: string zip?: string api?: string } @@ -360,6 +364,8 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => expect(stats.metaData?.publicPath).toBe(manifest.metaData?.publicPath) expect(stats.metaData?.types?.zip).toBe(manifest.metaData?.types?.zip) expect(stats.metaData?.types?.api).toBe(manifest.metaData?.types?.api) + expect(stats.metaData?.types?.path).toBe(manifest.metaData?.types?.path) + expect(stats.metaData?.types?.name).toBe(manifest.metaData?.types?.name) expect(stats.metaData?.buildInfo?.buildVersion).toBe( manifest.metaData?.buildInfo?.buildVersion, ) @@ -405,6 +411,12 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => expect( sortAssetPaths(statsShared?.assets?.js?.async ?? []), ).toEqual(sortAssetPaths(manifestShared?.assets?.js?.async ?? [])) + expect( + sortAssetPaths(statsShared?.assets?.css?.sync ?? []), + ).toEqual(sortAssetPaths(manifestShared?.assets?.css?.sync ?? [])) + expect( + sortAssetPaths(statsShared?.assets?.css?.async ?? []), + ).toEqual(sortAssetPaths(manifestShared?.assets?.css?.async ?? [])) } const manifestExposesByName = getExposesByName(manifest) @@ -423,6 +435,12 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => expect( sortAssetPaths(statsExpose?.assets?.js?.async ?? []), ).toEqual(sortAssetPaths(manifestExpose?.assets?.js?.async ?? [])) + expect( + sortAssetPaths(statsExpose?.assets?.css?.sync ?? []), + ).toEqual(sortAssetPaths(manifestExpose?.assets?.css?.sync ?? [])) + expect( + sortAssetPaths(statsExpose?.assets?.css?.async ?? []), + ).toEqual(sortAssetPaths(manifestExpose?.assets?.css?.async ?? [])) } } From 1575669e2aa09bd4552d428f5a56dccee4937b8a Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:53:21 +0000 Subject: [PATCH 074/102] docs: add css and types metadata parity notes Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 53bc4769ee2..10e31e42bbc 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -60,6 +60,7 @@ Federation stats contract is also verified: - Stats outputs keep exact expected cardinality (`shared: 2`, `exposes: 3`) and stable ids (`mf_remote:*`). - Alignment also covers build/plugin metadata (`buildInfo`, `pluginVersion`) and remoteEntry name/path fields. - Shared/expose JS asset lists are aligned between manifest and stats for both browser and SSR outputs. +- Types metadata parity includes `types.path` and `types.name`, and shared/expose CSS asset lists are also aligned. Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 4c1f6d56863..273ce27ef62 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -53,6 +53,7 @@ Federation stats contract expectations: - Stats shared/expose id sets remain stable (`mf_remote:react`, `mf_remote:react-dom`, and expose ids for message/routes/server-data). - Metadata alignment includes remoteEntry name/path and build/plugin version fields. - Shared/expose asset lists remain aligned between manifest and stats outputs. +- Types metadata (`path`/`name`) and shared/expose CSS asset lists are also expected to match between outputs. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index bb46b5e496c..c4954736fd1 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -42,6 +42,7 @@ For the remote web target (browser manifest), expected contract is: - Stats entry ids and cardinality should remain stable (`shared: 2`, `exposes: 3`, ids under `mf_remote:*`). - Metadata parity should include remoteEntry name/path plus build/plugin version fields. - Shared/expose asset lists should also stay aligned between manifest and stats outputs. +- Types metadata (`path`/`name`) and CSS asset lists are expected to stay aligned as well. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 09ea703fbf8..de8218b4e38 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -44,6 +44,7 @@ Expected browser manifest contract for web target: - Stats shared/expose ids and counts are expected to remain stable (`shared: 2`, `exposes: 3`, ids prefixed with `mf_remote:`). - Metadata alignment should also cover remoteEntry name/path and build/plugin version fields. - Shared/expose asset lists are expected to match between manifest and stats outputs. +- Types metadata (`path`/`name`) and CSS asset list parity is expected between manifest and stats. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 16c8a6959b78024b3ac4adfa9d5c1e9fed3ab65e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:56:07 +0000 Subject: [PATCH 075/102] test: validate json endpoint payload structure Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 2511583b001..322f8a578aa 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -159,6 +159,8 @@ function assertManifestIdentity(manifest: MfManifest) { expect(manifest.name).toBe('mf_remote') expect(manifest.metaData?.name).toBe('mf_remote') expect(manifest.metaData?.type).toBe('app') + expect(manifest.metaData?.pluginVersion).toBeDefined() + expect((manifest.metaData?.pluginVersion?.length ?? 0) > 0).toBeTruthy() expect(manifest.metaData?.globalName).toBe('mf_remote') expect(manifest.metaData?.prefetchInterface).toBe(false) expect(manifest.metaData?.buildInfo?.buildVersion).toBe('local') @@ -293,6 +295,13 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const body = await response.text() expect(body.startsWith('{')).toBeTruthy() + const parsed = JSON.parse(body) as MfManifest + expect(parsed.id).toBe('mf_remote') + expect(parsed.name).toBe('mf_remote') + expect(parsed.metaData?.remoteEntry?.name).toBe('remoteEntry.js') + expect(parsed.metaData?.pluginVersion).toBeDefined() + expect(Array.isArray(parsed.shared)).toBeTruthy() + expect(Array.isArray(parsed.exposes)).toBeTruthy() } }) @@ -350,6 +359,9 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => const ssrManifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) const ssrStats = await fetchManifest(page, ['/ssr/mf-stats.json']) + expect(browserManifest.metaData?.pluginVersion).toBe(ssrManifest.metaData?.pluginVersion) + expect(browserStats.metaData?.pluginVersion).toBe(ssrStats.metaData?.pluginVersion) + for (const [manifest, stats] of [ [browserManifest, browserStats], [ssrManifest, ssrStats], From e68e2eb8c6d49258e838e4263da39ed4889217e4 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:56:46 +0000 Subject: [PATCH 076/102] docs: note json payload structure expectations Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 10e31e42bbc..766fe578dfb 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -61,6 +61,7 @@ Federation stats contract is also verified: - Alignment also covers build/plugin metadata (`buildInfo`, `pluginVersion`) and remoteEntry name/path fields. - Shared/expose JS asset lists are aligned between manifest and stats for both browser and SSR outputs. - Types metadata parity includes `types.path` and `types.name`, and shared/expose CSS asset lists are also aligned. +- JSON endpoint checks also validate basic payload structure (`id`, `name`, `metaData.remoteEntry.name`, `pluginVersion`). Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 273ce27ef62..2291612dffe 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -54,6 +54,7 @@ Federation stats contract expectations: - Metadata alignment includes remoteEntry name/path and build/plugin version fields. - Shared/expose asset lists remain aligned between manifest and stats outputs. - Types metadata (`path`/`name`) and shared/expose CSS asset lists are also expected to match between outputs. +- JSON endpoint contract also checks identity fields and remote entry/plugin metadata presence. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index c4954736fd1..10c49babe79 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -43,6 +43,7 @@ For the remote web target (browser manifest), expected contract is: - Metadata parity should include remoteEntry name/path plus build/plugin version fields. - Shared/expose asset lists should also stay aligned between manifest and stats outputs. - Types metadata (`path`/`name`) and CSS asset lists are expected to stay aligned as well. +- JSON endpoint validation should include identity fields and remote entry/plugin metadata presence. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index de8218b4e38..8541adcbcf5 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -45,6 +45,7 @@ Expected browser manifest contract for web target: - Metadata alignment should also cover remoteEntry name/path and build/plugin version fields. - Shared/expose asset lists are expected to match between manifest and stats outputs. - Types metadata (`path`/`name`) and CSS asset list parity is expected between manifest and stats. +- JSON endpoint payloads are expected to include identity and remote entry/plugin metadata fields. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From eb337e9d4d620b57c9d74c54b8333cd659170a16 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:59:16 +0000 Subject: [PATCH 077/102] test: require .js suffix on manifest asset paths Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 322f8a578aa..d7d847382b9 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -137,6 +137,7 @@ function normalizeImport(importFlag?: boolean) { function assertRelativeJsAssetPaths(assetPaths: Array) { for (const assetPath of assetPaths) { expect(assetPath.startsWith('static/js/')).toBeTruthy() + expect(assetPath.endsWith('.js')).toBeTruthy() expect(assetPath.startsWith('/')).toBeFalsy() expect(assetPath.includes('file://')).toBeFalsy() expect(assetPath.includes('/workspace/')).toBeFalsy() From 1cbbf3e8235c0342a59290505688558da8911532 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 22:59:45 +0000 Subject: [PATCH 078/102] docs: mention js asset suffix contract Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 766fe578dfb..4ca9f8bc662 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -41,6 +41,7 @@ The e2e suite also validates the remote SSR manifest contract: - React/ReactDOM shared entries use wildcard metadata (`version: '*'`, `requiredVersion: '^*'`) in SSR manifest. - React/ReactDOM shared fallback asset lists are empty in SSR manifest. - Exposed module JS assets remain relative `static/js/...` paths. +- JS asset paths are expected to end with `.js`. It also validates the browser manifest contract for the remote web target: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 2291612dffe..aa8782db896 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -31,6 +31,7 @@ For the node-target federation config we use: - SSR React/ReactDOM shared metadata uses wildcard versions (`*` / `^*`). - empty SSR shared fallback JS assets for React/ReactDOM - exposed module JS asset entries are relative `static/js/...` paths. +- JS asset entries are expected to end in `.js`. Web-target shared config remains standard singleton sharing (no `import: false`) to preserve normal browser-side shared behavior. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 10c49babe79..7a4fabcb847 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -35,6 +35,7 @@ For the remote web target (browser manifest), expected contract is: - React/ReactDOM shared fallback JS asset lists are non-empty. - Shared JS asset entries are relative `static/js/...` paths resolved via `publicPath`. - Exposed module JS asset entries are also relative `static/js/...` paths. +- JS asset entries are expected to use `.js` suffixes. - `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` should serve JavaScript over HTTP with JavaScript content-types. - `/dist/@mf-types.zip` should be retrievable over HTTP as a non-HTML payload. - SSR stats shared entries should set `import: false` for React/ReactDOM; browser stats should omit `import`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 8541adcbcf5..894a21e671f 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -37,6 +37,7 @@ Expected browser manifest contract for web target: - React/ReactDOM shared fallback JS assets are present. - Browser shared JS assets are emitted as relative `static/js/...` paths. - Browser exposed module JS assets are also relative `static/js/...` paths. +- JS asset entries are expected to use `.js` suffixes. - `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are served as JavaScript over HTTP with JavaScript content-types. - `/dist/@mf-types.zip` is retrievable over HTTP as a non-HTML payload. - SSR stats should show `import: false` for React/ReactDOM while browser stats keep `import` unset. From 8301c3f333bd19ee533a5fe882869e3a1c5ebbcb Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:02:03 +0000 Subject: [PATCH 079/102] test: assert endpoint-specific manifest metadata values Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index d7d847382b9..7ecdf51f392 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -281,12 +281,18 @@ test('serves remote entries as javascript over HTTP', async ({ page }) => { }) test('serves federation manifest and stats endpoints as JSON', async ({ page }) => { - for (const path of [ - '/dist/mf-manifest.json', - '/dist/mf-stats.json', - '/ssr/mf-manifest.json', - '/ssr/mf-stats.json', - ]) { + for (const [ + path, + expectedRemoteType, + expectedTypesZip, + expectedTypesApi, + expectedPublicPath, + ] of [ + ['/dist/mf-manifest.json', 'global', '@mf-types.zip', '@mf-types.d.ts', `${REMOTE_ORIGIN}/`], + ['/dist/mf-stats.json', 'global', '@mf-types.zip', '@mf-types.d.ts', `${REMOTE_ORIGIN}/`], + ['/ssr/mf-manifest.json', 'commonjs-module', '', '', `${REMOTE_ORIGIN}/ssr/`], + ['/ssr/mf-stats.json', 'commonjs-module', '', '', `${REMOTE_ORIGIN}/ssr/`], + ] as const) { const response = await page.request.get(`${REMOTE_ORIGIN}${path}`) expect(response.ok()).toBeTruthy() @@ -299,7 +305,11 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const parsed = JSON.parse(body) as MfManifest expect(parsed.id).toBe('mf_remote') expect(parsed.name).toBe('mf_remote') + expect(parsed.metaData?.remoteEntry?.type).toBe(expectedRemoteType) + expect(parsed.metaData?.publicPath).toBe(expectedPublicPath) expect(parsed.metaData?.remoteEntry?.name).toBe('remoteEntry.js') + expect(parsed.metaData?.types?.zip).toBe(expectedTypesZip) + expect(parsed.metaData?.types?.api).toBe(expectedTypesApi) expect(parsed.metaData?.pluginVersion).toBeDefined() expect(Array.isArray(parsed.shared)).toBeTruthy() expect(Array.isArray(parsed.exposes)).toBeTruthy() From 14723559b434cb4919d55c81f0416235dbe839d2 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:02:38 +0000 Subject: [PATCH 080/102] docs: describe dist and ssr endpoint metadata expectations Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 3 +++ e2e/react-start/module-federation-rsbuild-remote/README.md | 3 +++ examples/react/start-module-federation-rsbuild-host/README.md | 1 + .../react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 8 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 4ca9f8bc662..ac2eee6f2dc 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -63,6 +63,9 @@ Federation stats contract is also verified: - Shared/expose JS asset lists are aligned between manifest and stats for both browser and SSR outputs. - Types metadata parity includes `types.path` and `types.name`, and shared/expose CSS asset lists are also aligned. - JSON endpoint checks also validate basic payload structure (`id`, `name`, `metaData.remoteEntry.name`, `pluginVersion`). +- JSON endpoint checks assert path-specific metadata values: + - `/dist/*` endpoints return `remoteEntry.type: 'global'`, browser `types` metadata, and root publicPath. + - `/ssr/*` endpoints return `remoteEntry.type: 'commonjs-module'`, empty SSR `types` metadata, and `/ssr/` publicPath. Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index aa8782db896..8dc066ac3aa 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -56,6 +56,9 @@ Federation stats contract expectations: - Shared/expose asset lists remain aligned between manifest and stats outputs. - Types metadata (`path`/`name`) and shared/expose CSS asset lists are also expected to match between outputs. - JSON endpoint contract also checks identity fields and remote entry/plugin metadata presence. +- JSON endpoint checks also validate path-specific metadata: + - `/dist/*` endpoints use browser remote entry/type metadata and browser types metadata. + - `/ssr/*` endpoints use node remote entry/type metadata and empty SSR types metadata. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 7a4fabcb847..89f716e23da 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -45,6 +45,7 @@ For the remote web target (browser manifest), expected contract is: - Shared/expose asset lists should also stay aligned between manifest and stats outputs. - Types metadata (`path`/`name`) and CSS asset lists are expected to stay aligned as well. - JSON endpoint validation should include identity fields and remote entry/plugin metadata presence. +- `/dist/*` and `/ssr/*` JSON endpoints should each report their expected remoteEntry type/types metadata/publicPath values. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 894a21e671f..4cdea307336 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -47,6 +47,7 @@ Expected browser manifest contract for web target: - Shared/expose asset lists are expected to match between manifest and stats outputs. - Types metadata (`path`/`name`) and CSS asset list parity is expected between manifest and stats. - JSON endpoint payloads are expected to include identity and remote entry/plugin metadata fields. +- `/dist/*` vs `/ssr/*` endpoint metadata should remain mode-correct (remoteEntry type, types metadata, publicPath). This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From a4ad977cc7d54b88c9439882467313da08501f34 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:06:19 +0000 Subject: [PATCH 081/102] test: verify endpoint build metadata consistency Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 7ecdf51f392..61a8763762a 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -6,6 +6,7 @@ import packageJson from '../package.json' with { type: 'json' } const REMOTE_PORT = await getTestServerPort(`${packageJson.name}-remote`) const REMOTE_ORIGIN = `http://localhost:${REMOTE_PORT}` const HOST_MODE = process.env.HOST_MODE || 'ssr' +const REMOTE_PACKAGE_NAME = packageJson.name.replace(/-host$/, '-remote') type SharedAssetGroup = { sync?: Array @@ -479,6 +480,36 @@ test('keeps federation manifest and stats metadata aligned', async ({ page }) => } }) +test('keeps plugin and build metadata consistent across json endpoints', async ({ + page, +}) => { + const browserManifest = await fetchManifest(page, ['/dist/mf-manifest.json']) + const browserStats = await fetchManifest(page, ['/dist/mf-stats.json']) + const ssrManifest = await fetchManifest(page, ['/ssr/mf-manifest.json']) + const ssrStats = await fetchManifest(page, ['/ssr/mf-stats.json']) + + const endpointPayloads = [browserManifest, browserStats, ssrManifest, ssrStats] + for (const payload of endpointPayloads) { + expect(payload.metaData?.pluginVersion).toBeDefined() + expect((payload.metaData?.pluginVersion?.length ?? 0) > 0).toBeTruthy() + expect(payload.metaData?.buildInfo?.buildVersion).toBe('local') + expect( + payload.metaData?.buildInfo?.buildName?.includes(REMOTE_PACKAGE_NAME) ?? false, + ).toBeTruthy() + } + + const [firstPayload] = endpointPayloads + for (const payload of endpointPayloads) { + expect(payload.metaData?.pluginVersion).toBe(firstPayload.metaData?.pluginVersion) + expect(payload.metaData?.buildInfo?.buildVersion).toBe( + firstPayload.metaData?.buildInfo?.buildVersion, + ) + expect(payload.metaData?.buildInfo?.buildName).toBe( + firstPayload.metaData?.buildInfo?.buildName, + ) + } +}) + test('serves browser federated types zip over HTTP', async ({ page }) => { const manifest = await fetchManifest(page, [ '/mf-manifest.json', From 96dedec633a77e25da1038cf2b780feded3594ea Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:07:01 +0000 Subject: [PATCH 082/102] docs: note endpoint build metadata consistency Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index ac2eee6f2dc..632f2f7edc9 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -66,6 +66,7 @@ Federation stats contract is also verified: - JSON endpoint checks assert path-specific metadata values: - `/dist/*` endpoints return `remoteEntry.type: 'global'`, browser `types` metadata, and root publicPath. - `/ssr/*` endpoints return `remoteEntry.type: 'commonjs-module'`, empty SSR `types` metadata, and `/ssr/` publicPath. +- Endpoint payloads also keep consistent plugin/build metadata across all JSON endpoints (`pluginVersion`, `buildVersion`, `buildName`). Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 8dc066ac3aa..026b2e94fb3 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -59,6 +59,7 @@ Federation stats contract expectations: - JSON endpoint checks also validate path-specific metadata: - `/dist/*` endpoints use browser remote entry/type metadata and browser types metadata. - `/ssr/*` endpoints use node remote entry/type metadata and empty SSR types metadata. +- `pluginVersion` and build metadata fields remain consistent across all JSON endpoints. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 89f716e23da..c388db63842 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -46,6 +46,7 @@ For the remote web target (browser manifest), expected contract is: - Types metadata (`path`/`name`) and CSS asset lists are expected to stay aligned as well. - JSON endpoint validation should include identity fields and remote entry/plugin metadata presence. - `/dist/*` and `/ssr/*` JSON endpoints should each report their expected remoteEntry type/types metadata/publicPath values. +- Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 4cdea307336..ac152022ac1 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -48,6 +48,7 @@ Expected browser manifest contract for web target: - Types metadata (`path`/`name`) and CSS asset list parity is expected between manifest and stats. - JSON endpoint payloads are expected to include identity and remote entry/plugin metadata fields. - `/dist/*` vs `/ssr/*` endpoint metadata should remain mode-correct (remoteEntry type, types metadata, publicPath). +- Build/plugin metadata should stay consistent across all federation JSON endpoints. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 9211638936d4fee95c97ba2584f5944c110e9c60 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:10:29 +0000 Subject: [PATCH 083/102] test: assert shared versions on all json endpoints Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 61a8763762a..b4f9393b29d 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -306,6 +306,7 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const parsed = JSON.parse(body) as MfManifest expect(parsed.id).toBe('mf_remote') expect(parsed.name).toBe('mf_remote') + expect(parsed.remotes ?? []).toEqual([]) expect(parsed.metaData?.remoteEntry?.type).toBe(expectedRemoteType) expect(parsed.metaData?.publicPath).toBe(expectedPublicPath) expect(parsed.metaData?.remoteEntry?.name).toBe('remoteEntry.js') @@ -314,6 +315,20 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(parsed.metaData?.pluginVersion).toBeDefined() expect(Array.isArray(parsed.shared)).toBeTruthy() expect(Array.isArray(parsed.exposes)).toBeTruthy() + + const sharedByName = getSharedByName(parsed) + expect(sharedByName.size).toBe(2) + const react = sharedByName.get('react') + const reactDom = sharedByName.get('react-dom') + expect(react).toBeDefined() + expect(reactDom).toBeDefined() + if (path.startsWith('/ssr/')) { + expect(react?.version).toBe('*') + expect(reactDom?.version).toBe('*') + } else { + expect(react?.version).not.toBe('*') + expect(reactDom?.version).not.toBe('*') + } } }) From e4bca87a8b13e31fe64397976f483922789fccf4 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:11:10 +0000 Subject: [PATCH 084/102] docs: note endpoint shared version expectations Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 632f2f7edc9..ad354121ede 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -67,6 +67,7 @@ Federation stats contract is also verified: - `/dist/*` endpoints return `remoteEntry.type: 'global'`, browser `types` metadata, and root publicPath. - `/ssr/*` endpoints return `remoteEntry.type: 'commonjs-module'`, empty SSR `types` metadata, and `/ssr/` publicPath. - Endpoint payloads also keep consistent plugin/build metadata across all JSON endpoints (`pluginVersion`, `buildVersion`, `buildName`). +- JSON endpoint payloads also enforce mode-correct shared version semantics (`react`/`react-dom` wildcard only on SSR endpoints). Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 026b2e94fb3..adbad0d3030 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -60,6 +60,7 @@ Federation stats contract expectations: - `/dist/*` endpoints use browser remote entry/type metadata and browser types metadata. - `/ssr/*` endpoints use node remote entry/type metadata and empty SSR types metadata. - `pluginVersion` and build metadata fields remain consistent across all JSON endpoints. +- Shared version semantics remain mode-correct across endpoints (`*` only for SSR node-target shared entries). Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index c388db63842..124bcec49e2 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -47,6 +47,7 @@ For the remote web target (browser manifest), expected contract is: - JSON endpoint validation should include identity fields and remote entry/plugin metadata presence. - `/dist/*` and `/ssr/*` JSON endpoints should each report their expected remoteEntry type/types metadata/publicPath values. - Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. +- Shared version metadata should stay mode-correct across endpoints (browser concrete versions, SSR wildcard versions). That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index ac152022ac1..c86eaa7fa3b 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -49,6 +49,7 @@ Expected browser manifest contract for web target: - JSON endpoint payloads are expected to include identity and remote entry/plugin metadata fields. - `/dist/*` vs `/ssr/*` endpoint metadata should remain mode-correct (remoteEntry type, types metadata, publicPath). - Build/plugin metadata should stay consistent across all federation JSON endpoints. +- Shared version metadata should remain mode-correct between browser and SSR endpoint payloads. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From c999f3c42d294872f9fe8b7df5206b6c7888c96a Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:14:02 +0000 Subject: [PATCH 085/102] test: enforce shared metadata on json endpoints Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index b4f9393b29d..7bac9dd4d5e 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -288,11 +288,12 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expectedTypesZip, expectedTypesApi, expectedPublicPath, + expectedSharedRequiredVersion, ] of [ - ['/dist/mf-manifest.json', 'global', '@mf-types.zip', '@mf-types.d.ts', `${REMOTE_ORIGIN}/`], - ['/dist/mf-stats.json', 'global', '@mf-types.zip', '@mf-types.d.ts', `${REMOTE_ORIGIN}/`], - ['/ssr/mf-manifest.json', 'commonjs-module', '', '', `${REMOTE_ORIGIN}/ssr/`], - ['/ssr/mf-stats.json', 'commonjs-module', '', '', `${REMOTE_ORIGIN}/ssr/`], + ['/dist/mf-manifest.json', 'global', '@mf-types.zip', '@mf-types.d.ts', `${REMOTE_ORIGIN}/`, '^19.2.3'], + ['/dist/mf-stats.json', 'global', '@mf-types.zip', '@mf-types.d.ts', `${REMOTE_ORIGIN}/`, '^19.2.3'], + ['/ssr/mf-manifest.json', 'commonjs-module', '', '', `${REMOTE_ORIGIN}/ssr/`, '^*'], + ['/ssr/mf-stats.json', 'commonjs-module', '', '', `${REMOTE_ORIGIN}/ssr/`, '^*'], ] as const) { const response = await page.request.get(`${REMOTE_ORIGIN}${path}`) expect(response.ok()).toBeTruthy() @@ -322,6 +323,10 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const reactDom = sharedByName.get('react-dom') expect(react).toBeDefined() expect(reactDom).toBeDefined() + expect(react?.requiredVersion).toBe(expectedSharedRequiredVersion) + expect(reactDom?.requiredVersion).toBe(expectedSharedRequiredVersion) + expect(react?.fallback).toBe('') + expect(reactDom?.fallback).toBe('') if (path.startsWith('/ssr/')) { expect(react?.version).toBe('*') expect(reactDom?.version).toBe('*') @@ -329,6 +334,12 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(react?.version).not.toBe('*') expect(reactDom?.version).not.toBe('*') } + + const exposesByName = getExposesByName(parsed) + expect(exposesByName.size).toBe(3) + expect(exposesByName.get('message')).toBeDefined() + expect(exposesByName.get('routes')).toBeDefined() + expect(exposesByName.get('server-data')).toBeDefined() } }) From 636f9440f0a2f0895d5e61998386f2f216aeab75 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:14:45 +0000 Subject: [PATCH 086/102] docs: note endpoint shared entry set and remotes Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index ad354121ede..8a92b531bd2 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -68,6 +68,7 @@ Federation stats contract is also verified: - `/ssr/*` endpoints return `remoteEntry.type: 'commonjs-module'`, empty SSR `types` metadata, and `/ssr/` publicPath. - Endpoint payloads also keep consistent plugin/build metadata across all JSON endpoints (`pluginVersion`, `buildVersion`, `buildName`). - JSON endpoint payloads also enforce mode-correct shared version semantics (`react`/`react-dom` wildcard only on SSR endpoints). +- Each JSON endpoint payload also keeps `remotes: []` and exactly two shared entries (`react`, `react-dom`). Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index adbad0d3030..67a5415d24c 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -61,6 +61,7 @@ Federation stats contract expectations: - `/ssr/*` endpoints use node remote entry/type metadata and empty SSR types metadata. - `pluginVersion` and build metadata fields remain consistent across all JSON endpoints. - Shared version semantics remain mode-correct across endpoints (`*` only for SSR node-target shared entries). +- JSON payloads also retain `remotes: []` and the two-entry shared set (`react`, `react-dom`). Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 124bcec49e2..d304f87ea69 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -48,6 +48,7 @@ For the remote web target (browser manifest), expected contract is: - `/dist/*` and `/ssr/*` JSON endpoints should each report their expected remoteEntry type/types metadata/publicPath values. - Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. - Shared version metadata should stay mode-correct across endpoints (browser concrete versions, SSR wildcard versions). +- JSON endpoint payloads should keep `remotes` empty and include only `react`/`react-dom` shared entries. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index c86eaa7fa3b..f0a26a806b2 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -50,6 +50,7 @@ Expected browser manifest contract for web target: - `/dist/*` vs `/ssr/*` endpoint metadata should remain mode-correct (remoteEntry type, types metadata, publicPath). - Build/plugin metadata should stay consistent across all federation JSON endpoints. - Shared version metadata should remain mode-correct between browser and SSR endpoint payloads. +- JSON endpoint payloads should keep `remotes` empty and only include shared entries for React + ReactDOM. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 4c9f5c5524fe0bf1142242f1ff07b5e0ff4f16d7 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:17:18 +0000 Subject: [PATCH 087/102] test: assert expose id and path on json endpoints Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 7bac9dd4d5e..2f9591cae3b 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -282,6 +282,12 @@ test('serves remote entries as javascript over HTTP', async ({ page }) => { }) test('serves federation manifest and stats endpoints as JSON', async ({ page }) => { + const expectedExposePaths = { + message: './message', + routes: './routes', + 'server-data': './server-data', + } as const + for (const [ path, expectedRemoteType, @@ -337,9 +343,12 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const exposesByName = getExposesByName(parsed) expect(exposesByName.size).toBe(3) - expect(exposesByName.get('message')).toBeDefined() - expect(exposesByName.get('routes')).toBeDefined() - expect(exposesByName.get('server-data')).toBeDefined() + for (const [exposeName, exposePath] of Object.entries(expectedExposePaths)) { + const expose = exposesByName.get(exposeName) + expect(expose).toBeDefined() + expect(expose?.id).toBe(`mf_remote:${exposeName}`) + expect(expose?.path).toBe(exposePath) + } } }) From ee48946499bed2011c8605e27c937ab1d0a1e4ea Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:17:56 +0000 Subject: [PATCH 088/102] docs: add endpoint expose identity expectations Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 8a92b531bd2..78d3ac97e37 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -69,6 +69,7 @@ Federation stats contract is also verified: - Endpoint payloads also keep consistent plugin/build metadata across all JSON endpoints (`pluginVersion`, `buildVersion`, `buildName`). - JSON endpoint payloads also enforce mode-correct shared version semantics (`react`/`react-dom` wildcard only on SSR endpoints). - Each JSON endpoint payload also keeps `remotes: []` and exactly two shared entries (`react`, `react-dom`). +- Endpoint payloads also retain expose identity/path contracts for `message`, `routes`, and `server-data`. Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 67a5415d24c..3918978e3e3 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -62,6 +62,7 @@ Federation stats contract expectations: - `pluginVersion` and build metadata fields remain consistent across all JSON endpoints. - Shared version semantics remain mode-correct across endpoints (`*` only for SSR node-target shared entries). - JSON payloads also retain `remotes: []` and the two-entry shared set (`react`, `react-dom`). +- Expose ids/paths are expected to remain stable in endpoint payloads for `message`, `routes`, and `server-data`. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index d304f87ea69..3415b95a101 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -49,6 +49,7 @@ For the remote web target (browser manifest), expected contract is: - Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. - Shared version metadata should stay mode-correct across endpoints (browser concrete versions, SSR wildcard versions). - JSON endpoint payloads should keep `remotes` empty and include only `react`/`react-dom` shared entries. +- Expose ids/paths in endpoint payloads should remain stable for `message`, `routes`, and `server-data`. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index f0a26a806b2..e46db67e5cf 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -51,6 +51,7 @@ Expected browser manifest contract for web target: - Build/plugin metadata should stay consistent across all federation JSON endpoints. - Shared version metadata should remain mode-correct between browser and SSR endpoint payloads. - JSON endpoint payloads should keep `remotes` empty and only include shared entries for React + ReactDOM. +- Expose ids/paths should remain stable across endpoint payloads for `message`, `routes`, and `server-data`. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 2606abd6f0d5482f0c7e3ec91a1278c27a91e338 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:21:51 +0000 Subject: [PATCH 089/102] test: assert shared identity across federation json endpoints Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + .../tests/module-federation.spec.ts | 6 ++++++ .../react/start-module-federation-rsbuild-host/README.md | 1 + 3 files changed, 8 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 78d3ac97e37..367a8d98ebb 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -69,6 +69,7 @@ Federation stats contract is also verified: - Endpoint payloads also keep consistent plugin/build metadata across all JSON endpoints (`pluginVersion`, `buildVersion`, `buildName`). - JSON endpoint payloads also enforce mode-correct shared version semantics (`react`/`react-dom` wildcard only on SSR endpoints). - Each JSON endpoint payload also keeps `remotes: []` and exactly two shared entries (`react`, `react-dom`). +- Shared identity in each endpoint payload remains stable (`mf_remote:react`, `mf_remote:react-dom`). - Endpoint payloads also retain expose identity/path contracts for `message`, `routes`, and `server-data`. Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 2f9591cae3b..e0f7f1d4e57 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -287,6 +287,10 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) routes: './routes', 'server-data': './server-data', } as const + const expectedSharedIds = { + react: 'mf_remote:react', + 'react-dom': 'mf_remote:react-dom', + } as const for (const [ path, @@ -329,6 +333,8 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const reactDom = sharedByName.get('react-dom') expect(react).toBeDefined() expect(reactDom).toBeDefined() + expect(react?.id).toBe(expectedSharedIds.react) + expect(reactDom?.id).toBe(expectedSharedIds['react-dom']) expect(react?.requiredVersion).toBe(expectedSharedRequiredVersion) expect(reactDom?.requiredVersion).toBe(expectedSharedRequiredVersion) expect(react?.fallback).toBe('') diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 3415b95a101..ca0dbe01ea3 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -49,6 +49,7 @@ For the remote web target (browser manifest), expected contract is: - Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. - Shared version metadata should stay mode-correct across endpoints (browser concrete versions, SSR wildcard versions). - JSON endpoint payloads should keep `remotes` empty and include only `react`/`react-dom` shared entries. +- Shared endpoint ids should remain stable as `mf_remote:react` and `mf_remote:react-dom`. - Expose ids/paths in endpoint payloads should remain stable for `message`, `routes`, and `server-data`. That combination keeps React shared ownership on the host and avoids SSR From 508f6a2335c8b5963dc5a4ccab32b0f24ba2c066 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:24:38 +0000 Subject: [PATCH 090/102] test: assert endpoint expose file metadata on stats Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index e0f7f1d4e57..0a9399da9db 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -287,6 +287,11 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) routes: './routes', 'server-data': './server-data', } as const + const expectedExposeFiles = { + message: 'src/message.tsx', + routes: 'src/routes.tsx', + 'server-data': 'src/server-data.ts', + } as const const expectedSharedIds = { react: 'mf_remote:react', 'react-dom': 'mf_remote:react-dom', @@ -354,6 +359,10 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(expose).toBeDefined() expect(expose?.id).toBe(`mf_remote:${exposeName}`) expect(expose?.path).toBe(exposePath) + expect(expose?.requires ?? []).toEqual([]) + if (path.endsWith('mf-stats.json')) { + expect(expose?.file).toBe(expectedExposeFiles[exposeName]) + } } } }) From 99320fa151a1b3cf682cbb70faf430e78b4ca7ec Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:25:17 +0000 Subject: [PATCH 091/102] docs: note endpoint expose requires and file contracts Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 2 ++ e2e/react-start/module-federation-rsbuild-remote/README.md | 2 ++ examples/react/start-module-federation-rsbuild-host/README.md | 2 ++ examples/react/start-module-federation-rsbuild-remote/README.md | 2 ++ 4 files changed, 8 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 367a8d98ebb..60e3a522771 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -71,6 +71,8 @@ Federation stats contract is also verified: - Each JSON endpoint payload also keeps `remotes: []` and exactly two shared entries (`react`, `react-dom`). - Shared identity in each endpoint payload remains stable (`mf_remote:react`, `mf_remote:react-dom`). - Endpoint payloads also retain expose identity/path contracts for `message`, `routes`, and `server-data`. +- Endpoint expose `requires` arrays remain empty across all JSON payloads. +- Stats endpoint payloads also retain stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 3918978e3e3..47eff455ae5 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -63,6 +63,8 @@ Federation stats contract expectations: - Shared version semantics remain mode-correct across endpoints (`*` only for SSR node-target shared entries). - JSON payloads also retain `remotes: []` and the two-entry shared set (`react`, `react-dom`). - Expose ids/paths are expected to remain stable in endpoint payloads for `message`, `routes`, and `server-data`. +- Expose `requires` arrays remain empty in endpoint payloads. +- Stats endpoints also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index ca0dbe01ea3..293eac42bcd 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -51,6 +51,8 @@ For the remote web target (browser manifest), expected contract is: - JSON endpoint payloads should keep `remotes` empty and include only `react`/`react-dom` shared entries. - Shared endpoint ids should remain stable as `mf_remote:react` and `mf_remote:react-dom`. - Expose ids/paths in endpoint payloads should remain stable for `message`, `routes`, and `server-data`. +- Expose `requires` arrays should remain empty in endpoint payloads. +- Stats endpoint payloads should also keep stable expose `file` values (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index e46db67e5cf..33846210704 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -52,6 +52,8 @@ Expected browser manifest contract for web target: - Shared version metadata should remain mode-correct between browser and SSR endpoint payloads. - JSON endpoint payloads should keep `remotes` empty and only include shared entries for React + ReactDOM. - Expose ids/paths should remain stable across endpoint payloads for `message`, `routes`, and `server-data`. +- Expose `requires` arrays are expected to remain empty across endpoint payloads. +- Stats endpoint payloads should also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 19b50ba90fc15d6ad22f00c99bb88dd33f57221c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:28:03 +0000 Subject: [PATCH 092/102] test: enforce semver pluginVersion on federation endpoints Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + .../tests/module-federation.spec.ts | 6 ++++++ e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + .../react/start-module-federation-rsbuild-host/README.md | 1 + .../react/start-module-federation-rsbuild-remote/README.md | 1 + 5 files changed, 10 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 60e3a522771..f51f39f0841 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -67,6 +67,7 @@ Federation stats contract is also verified: - `/dist/*` endpoints return `remoteEntry.type: 'global'`, browser `types` metadata, and root publicPath. - `/ssr/*` endpoints return `remoteEntry.type: 'commonjs-module'`, empty SSR `types` metadata, and `/ssr/` publicPath. - Endpoint payloads also keep consistent plugin/build metadata across all JSON endpoints (`pluginVersion`, `buildVersion`, `buildName`). +- `pluginVersion` values are also expected to be SemVer-like strings on all JSON endpoints. - JSON endpoint payloads also enforce mode-correct shared version semantics (`react`/`react-dom` wildcard only on SSR endpoints). - Each JSON endpoint payload also keeps `remotes: []` and exactly two shared entries (`react`, `react-dom`). - Shared identity in each endpoint payload remains stable (`mf_remote:react`, `mf_remote:react-dom`). diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 0a9399da9db..a0977fcc86c 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -135,6 +135,10 @@ function normalizeImport(importFlag?: boolean) { return importFlag ?? false } +function isVersionLike(version?: string) { + return /^\d+\.\d+\.\d+(?:[-+].+)?$/.test(version ?? '') +} + function assertRelativeJsAssetPaths(assetPaths: Array) { for (const assetPath of assetPaths) { expect(assetPath.startsWith('static/js/')).toBeTruthy() @@ -329,6 +333,7 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(parsed.metaData?.types?.zip).toBe(expectedTypesZip) expect(parsed.metaData?.types?.api).toBe(expectedTypesApi) expect(parsed.metaData?.pluginVersion).toBeDefined() + expect(isVersionLike(parsed.metaData?.pluginVersion)).toBeTruthy() expect(Array.isArray(parsed.shared)).toBeTruthy() expect(Array.isArray(parsed.exposes)).toBeTruthy() @@ -542,6 +547,7 @@ test('keeps plugin and build metadata consistent across json endpoints', async ( for (const payload of endpointPayloads) { expect(payload.metaData?.pluginVersion).toBeDefined() expect((payload.metaData?.pluginVersion?.length ?? 0) > 0).toBeTruthy() + expect(isVersionLike(payload.metaData?.pluginVersion)).toBeTruthy() expect(payload.metaData?.buildInfo?.buildVersion).toBe('local') expect( payload.metaData?.buildInfo?.buildName?.includes(REMOTE_PACKAGE_NAME) ?? false, diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 47eff455ae5..2dcfa76eb57 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -60,6 +60,7 @@ Federation stats contract expectations: - `/dist/*` endpoints use browser remote entry/type metadata and browser types metadata. - `/ssr/*` endpoints use node remote entry/type metadata and empty SSR types metadata. - `pluginVersion` and build metadata fields remain consistent across all JSON endpoints. +- `pluginVersion` is expected to remain SemVer-like on all JSON endpoints. - Shared version semantics remain mode-correct across endpoints (`*` only for SSR node-target shared entries). - JSON payloads also retain `remotes: []` and the two-entry shared set (`react`, `react-dom`). - Expose ids/paths are expected to remain stable in endpoint payloads for `message`, `routes`, and `server-data`. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 293eac42bcd..a01918265c7 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -47,6 +47,7 @@ For the remote web target (browser manifest), expected contract is: - JSON endpoint validation should include identity fields and remote entry/plugin metadata presence. - `/dist/*` and `/ssr/*` JSON endpoints should each report their expected remoteEntry type/types metadata/publicPath values. - Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. +- `pluginVersion` values should also remain SemVer-like across all federation JSON endpoints. - Shared version metadata should stay mode-correct across endpoints (browser concrete versions, SSR wildcard versions). - JSON endpoint payloads should keep `remotes` empty and include only `react`/`react-dom` shared entries. - Shared endpoint ids should remain stable as `mf_remote:react` and `mf_remote:react-dom`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 33846210704..d31140d2ad3 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -49,6 +49,7 @@ Expected browser manifest contract for web target: - JSON endpoint payloads are expected to include identity and remote entry/plugin metadata fields. - `/dist/*` vs `/ssr/*` endpoint metadata should remain mode-correct (remoteEntry type, types metadata, publicPath). - Build/plugin metadata should stay consistent across all federation JSON endpoints. +- `pluginVersion` values are expected to stay SemVer-like across all federation JSON endpoints. - Shared version metadata should remain mode-correct between browser and SSR endpoint payloads. - JSON endpoint payloads should keep `remotes` empty and only include shared entries for React + ReactDOM. - Expose ids/paths should remain stable across endpoint payloads for `message`, `routes`, and `server-data`. From 03c370b7a712d00595d043a573bcc7058d602ea7 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:30:23 +0000 Subject: [PATCH 093/102] test: assert endpoint global metadata invariants Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index a0977fcc86c..1711742cc04 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -327,9 +327,12 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(parsed.id).toBe('mf_remote') expect(parsed.name).toBe('mf_remote') expect(parsed.remotes ?? []).toEqual([]) + expect(parsed.metaData?.globalName).toBe('mf_remote') + expect(parsed.metaData?.prefetchInterface).toBe(false) expect(parsed.metaData?.remoteEntry?.type).toBe(expectedRemoteType) expect(parsed.metaData?.publicPath).toBe(expectedPublicPath) expect(parsed.metaData?.remoteEntry?.name).toBe('remoteEntry.js') + expect(parsed.metaData?.remoteEntry?.path).toBe('') expect(parsed.metaData?.types?.zip).toBe(expectedTypesZip) expect(parsed.metaData?.types?.api).toBe(expectedTypesApi) expect(parsed.metaData?.pluginVersion).toBeDefined() From c263d476c9df1b1b021b8274627cb81621b1a43c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:30:49 +0000 Subject: [PATCH 094/102] docs: document endpoint global metadata invariants Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index f51f39f0841..6ae460a2f31 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -63,6 +63,7 @@ Federation stats contract is also verified: - Shared/expose JS asset lists are aligned between manifest and stats for both browser and SSR outputs. - Types metadata parity includes `types.path` and `types.name`, and shared/expose CSS asset lists are also aligned. - JSON endpoint checks also validate basic payload structure (`id`, `name`, `metaData.remoteEntry.name`, `pluginVersion`). +- Endpoint payloads also preserve global metadata invariants (`metaData.globalName: 'mf_remote'`, `metaData.prefetchInterface: false`, `metaData.remoteEntry.path: ''`). - JSON endpoint checks assert path-specific metadata values: - `/dist/*` endpoints return `remoteEntry.type: 'global'`, browser `types` metadata, and root publicPath. - `/ssr/*` endpoints return `remoteEntry.type: 'commonjs-module'`, empty SSR `types` metadata, and `/ssr/` publicPath. diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 2dcfa76eb57..10f80f45ade 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -56,6 +56,7 @@ Federation stats contract expectations: - Shared/expose asset lists remain aligned between manifest and stats outputs. - Types metadata (`path`/`name`) and shared/expose CSS asset lists are also expected to match between outputs. - JSON endpoint contract also checks identity fields and remote entry/plugin metadata presence. +- Endpoint payloads are expected to keep global metadata invariants (`globalName: mf_remote`, `prefetchInterface: false`, `remoteEntry.path: ''`). - JSON endpoint checks also validate path-specific metadata: - `/dist/*` endpoints use browser remote entry/type metadata and browser types metadata. - `/ssr/*` endpoints use node remote entry/type metadata and empty SSR types metadata. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index a01918265c7..fad48800403 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -45,6 +45,7 @@ For the remote web target (browser manifest), expected contract is: - Shared/expose asset lists should also stay aligned between manifest and stats outputs. - Types metadata (`path`/`name`) and CSS asset lists are expected to stay aligned as well. - JSON endpoint validation should include identity fields and remote entry/plugin metadata presence. +- Endpoint payloads should keep global metadata invariants (`globalName: mf_remote`, `prefetchInterface: false`, `remoteEntry.path: ''`). - `/dist/*` and `/ssr/*` JSON endpoints should each report their expected remoteEntry type/types metadata/publicPath values. - Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. - `pluginVersion` values should also remain SemVer-like across all federation JSON endpoints. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index d31140d2ad3..64376775a8f 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -47,6 +47,7 @@ Expected browser manifest contract for web target: - Shared/expose asset lists are expected to match between manifest and stats outputs. - Types metadata (`path`/`name`) and CSS asset list parity is expected between manifest and stats. - JSON endpoint payloads are expected to include identity and remote entry/plugin metadata fields. +- Endpoint payloads should preserve global metadata invariants (`globalName: mf_remote`, `prefetchInterface: false`, `remoteEntry.path: ''`). - `/dist/*` vs `/ssr/*` endpoint metadata should remain mode-correct (remoteEntry type, types metadata, publicPath). - Build/plugin metadata should stay consistent across all federation JSON endpoints. - `pluginVersion` values are expected to stay SemVer-like across all federation JSON endpoints. From 50f6c10217eb4c4af664136ecd58ab1253333ec7 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:33:24 +0000 Subject: [PATCH 095/102] test: assert endpoint metadata name and build invariants Co-authored-by: Zack Jackson --- .../tests/module-federation.spec.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 1711742cc04..b0d4c1cab21 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -326,6 +326,8 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const parsed = JSON.parse(body) as MfManifest expect(parsed.id).toBe('mf_remote') expect(parsed.name).toBe('mf_remote') + expect(parsed.metaData?.name).toBe('mf_remote') + expect(parsed.metaData?.type).toBe('app') expect(parsed.remotes ?? []).toEqual([]) expect(parsed.metaData?.globalName).toBe('mf_remote') expect(parsed.metaData?.prefetchInterface).toBe(false) @@ -337,6 +339,10 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(parsed.metaData?.types?.api).toBe(expectedTypesApi) expect(parsed.metaData?.pluginVersion).toBeDefined() expect(isVersionLike(parsed.metaData?.pluginVersion)).toBeTruthy() + expect(parsed.metaData?.buildInfo?.buildVersion).toBe('local') + expect( + parsed.metaData?.buildInfo?.buildName?.includes(REMOTE_PACKAGE_NAME) ?? false, + ).toBeTruthy() expect(Array.isArray(parsed.shared)).toBeTruthy() expect(Array.isArray(parsed.exposes)).toBeTruthy() From 7591159f3ab87c6702143b219cb8bedd24081885 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:33:52 +0000 Subject: [PATCH 096/102] docs: note endpoint identity metadata invariants Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 1 + e2e/react-start/module-federation-rsbuild-remote/README.md | 1 + examples/react/start-module-federation-rsbuild-host/README.md | 1 + examples/react/start-module-federation-rsbuild-remote/README.md | 1 + 4 files changed, 4 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 6ae460a2f31..d6900ac30de 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -63,6 +63,7 @@ Federation stats contract is also verified: - Shared/expose JS asset lists are aligned between manifest and stats for both browser and SSR outputs. - Types metadata parity includes `types.path` and `types.name`, and shared/expose CSS asset lists are also aligned. - JSON endpoint checks also validate basic payload structure (`id`, `name`, `metaData.remoteEntry.name`, `pluginVersion`). +- Endpoint payloads also keep identity metadata stable (`metaData.name: 'mf_remote'`, `metaData.type: 'app'`, and `buildInfo.buildVersion: 'local'`). - Endpoint payloads also preserve global metadata invariants (`metaData.globalName: 'mf_remote'`, `metaData.prefetchInterface: false`, `metaData.remoteEntry.path: ''`). - JSON endpoint checks assert path-specific metadata values: - `/dist/*` endpoints return `remoteEntry.type: 'global'`, browser `types` metadata, and root publicPath. diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 10f80f45ade..55739a11463 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -56,6 +56,7 @@ Federation stats contract expectations: - Shared/expose asset lists remain aligned between manifest and stats outputs. - Types metadata (`path`/`name`) and shared/expose CSS asset lists are also expected to match between outputs. - JSON endpoint contract also checks identity fields and remote entry/plugin metadata presence. +- Endpoint payloads are expected to keep identity metadata stable (`metaData.name: mf_remote`, `metaData.type: app`, `buildInfo.buildVersion: local`). - Endpoint payloads are expected to keep global metadata invariants (`globalName: mf_remote`, `prefetchInterface: false`, `remoteEntry.path: ''`). - JSON endpoint checks also validate path-specific metadata: - `/dist/*` endpoints use browser remote entry/type metadata and browser types metadata. diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index fad48800403..80f44f23a8b 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -45,6 +45,7 @@ For the remote web target (browser manifest), expected contract is: - Shared/expose asset lists should also stay aligned between manifest and stats outputs. - Types metadata (`path`/`name`) and CSS asset lists are expected to stay aligned as well. - JSON endpoint validation should include identity fields and remote entry/plugin metadata presence. +- Endpoint payloads should keep identity metadata stable (`metaData.name: mf_remote`, `metaData.type: app`, `buildInfo.buildVersion: local`). - Endpoint payloads should keep global metadata invariants (`globalName: mf_remote`, `prefetchInterface: false`, `remoteEntry.path: ''`). - `/dist/*` and `/ssr/*` JSON endpoints should each report their expected remoteEntry type/types metadata/publicPath values. - Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 64376775a8f..f3eedec98c1 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -47,6 +47,7 @@ Expected browser manifest contract for web target: - Shared/expose asset lists are expected to match between manifest and stats outputs. - Types metadata (`path`/`name`) and CSS asset list parity is expected between manifest and stats. - JSON endpoint payloads are expected to include identity and remote entry/plugin metadata fields. +- Endpoint payloads should keep identity metadata stable (`metaData.name: mf_remote`, `metaData.type: app`, `buildInfo.buildVersion: local`). - Endpoint payloads should preserve global metadata invariants (`globalName: mf_remote`, `prefetchInterface: false`, `remoteEntry.path: ''`). - `/dist/*` vs `/ssr/*` endpoint metadata should remain mode-correct (remoteEntry type, types metadata, publicPath). - Build/plugin metadata should stay consistent across all federation JSON endpoints. From fe8fb679b5303f3e68ee6ed18d6b73ea0933bac6 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:37:09 +0000 Subject: [PATCH 097/102] test: assert endpoint types path and name invariants Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 1 + .../tests/module-federation.spec.ts | 12 ++++++++---- .../module-federation-rsbuild-remote/README.md | 1 + .../start-module-federation-rsbuild-host/README.md | 1 + .../start-module-federation-rsbuild-remote/README.md | 1 + 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index d6900ac30de..ebbe9cf8fcd 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -68,6 +68,7 @@ Federation stats contract is also verified: - JSON endpoint checks assert path-specific metadata values: - `/dist/*` endpoints return `remoteEntry.type: 'global'`, browser `types` metadata, and root publicPath. - `/ssr/*` endpoints return `remoteEntry.type: 'commonjs-module'`, empty SSR `types` metadata, and `/ssr/` publicPath. +- Endpoint `types.path` and `types.name` metadata are expected to stay empty strings (`''`) across both browser and SSR JSON payloads. - Endpoint payloads also keep consistent plugin/build metadata across all JSON endpoints (`pluginVersion`, `buildVersion`, `buildName`). - `pluginVersion` values are also expected to be SemVer-like strings on all JSON endpoints. - JSON endpoint payloads also enforce mode-correct shared version semantics (`react`/`react-dom` wildcard only on SSR endpoints). diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index b0d4c1cab21..1af7ee6c17d 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -306,13 +306,15 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expectedRemoteType, expectedTypesZip, expectedTypesApi, + expectedTypesPath, + expectedTypesName, expectedPublicPath, expectedSharedRequiredVersion, ] of [ - ['/dist/mf-manifest.json', 'global', '@mf-types.zip', '@mf-types.d.ts', `${REMOTE_ORIGIN}/`, '^19.2.3'], - ['/dist/mf-stats.json', 'global', '@mf-types.zip', '@mf-types.d.ts', `${REMOTE_ORIGIN}/`, '^19.2.3'], - ['/ssr/mf-manifest.json', 'commonjs-module', '', '', `${REMOTE_ORIGIN}/ssr/`, '^*'], - ['/ssr/mf-stats.json', 'commonjs-module', '', '', `${REMOTE_ORIGIN}/ssr/`, '^*'], + ['/dist/mf-manifest.json', 'global', '@mf-types.zip', '@mf-types.d.ts', '', '', `${REMOTE_ORIGIN}/`, '^19.2.3'], + ['/dist/mf-stats.json', 'global', '@mf-types.zip', '@mf-types.d.ts', '', '', `${REMOTE_ORIGIN}/`, '^19.2.3'], + ['/ssr/mf-manifest.json', 'commonjs-module', '', '', '', '', `${REMOTE_ORIGIN}/ssr/`, '^*'], + ['/ssr/mf-stats.json', 'commonjs-module', '', '', '', '', `${REMOTE_ORIGIN}/ssr/`, '^*'], ] as const) { const response = await page.request.get(`${REMOTE_ORIGIN}${path}`) expect(response.ok()).toBeTruthy() @@ -337,6 +339,8 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(parsed.metaData?.remoteEntry?.path).toBe('') expect(parsed.metaData?.types?.zip).toBe(expectedTypesZip) expect(parsed.metaData?.types?.api).toBe(expectedTypesApi) + expect(parsed.metaData?.types?.path).toBe(expectedTypesPath) + expect(parsed.metaData?.types?.name).toBe(expectedTypesName) expect(parsed.metaData?.pluginVersion).toBeDefined() expect(isVersionLike(parsed.metaData?.pluginVersion)).toBeTruthy() expect(parsed.metaData?.buildInfo?.buildVersion).toBe('local') diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 55739a11463..f1eeffe0d1b 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -61,6 +61,7 @@ Federation stats contract expectations: - JSON endpoint checks also validate path-specific metadata: - `/dist/*` endpoints use browser remote entry/type metadata and browser types metadata. - `/ssr/*` endpoints use node remote entry/type metadata and empty SSR types metadata. +- `types.path` and `types.name` remain empty strings (`''`) across both browser and SSR endpoint payloads. - `pluginVersion` and build metadata fields remain consistent across all JSON endpoints. - `pluginVersion` is expected to remain SemVer-like on all JSON endpoints. - Shared version semantics remain mode-correct across endpoints (`*` only for SSR node-target shared entries). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 80f44f23a8b..dbce1cdd2d6 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -48,6 +48,7 @@ For the remote web target (browser manifest), expected contract is: - Endpoint payloads should keep identity metadata stable (`metaData.name: mf_remote`, `metaData.type: app`, `buildInfo.buildVersion: local`). - Endpoint payloads should keep global metadata invariants (`globalName: mf_remote`, `prefetchInterface: false`, `remoteEntry.path: ''`). - `/dist/*` and `/ssr/*` JSON endpoints should each report their expected remoteEntry type/types metadata/publicPath values. +- `types.path` and `types.name` should remain empty strings (`''`) across browser and SSR endpoint payloads. - Build/plugin metadata fields are expected to remain consistent across all federation JSON endpoints. - `pluginVersion` values should also remain SemVer-like across all federation JSON endpoints. - Shared version metadata should stay mode-correct across endpoints (browser concrete versions, SSR wildcard versions). diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index f3eedec98c1..fb587a1a489 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -50,6 +50,7 @@ Expected browser manifest contract for web target: - Endpoint payloads should keep identity metadata stable (`metaData.name: mf_remote`, `metaData.type: app`, `buildInfo.buildVersion: local`). - Endpoint payloads should preserve global metadata invariants (`globalName: mf_remote`, `prefetchInterface: false`, `remoteEntry.path: ''`). - `/dist/*` vs `/ssr/*` endpoint metadata should remain mode-correct (remoteEntry type, types metadata, publicPath). +- `types.path` and `types.name` should remain empty strings (`''`) across browser and SSR endpoint payloads. - Build/plugin metadata should stay consistent across all federation JSON endpoints. - `pluginVersion` values are expected to stay SemVer-like across all federation JSON endpoints. - Shared version metadata should remain mode-correct between browser and SSR endpoint payloads. From ac13b558086019b109bc8bf31eca075f2794e145 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:40:04 +0000 Subject: [PATCH 098/102] test: distinguish expose metadata contracts by endpoint type Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 2 +- .../tests/module-federation.spec.ts | 8 ++++++-- .../module-federation-rsbuild-remote/README.md | 2 +- .../react/start-module-federation-rsbuild-host/README.md | 2 +- .../start-module-federation-rsbuild-remote/README.md | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index ebbe9cf8fcd..d95f9580ad5 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -75,7 +75,7 @@ Federation stats contract is also verified: - Each JSON endpoint payload also keeps `remotes: []` and exactly two shared entries (`react`, `react-dom`). - Shared identity in each endpoint payload remains stable (`mf_remote:react`, `mf_remote:react-dom`). - Endpoint payloads also retain expose identity/path contracts for `message`, `routes`, and `server-data`. -- Endpoint expose `requires` arrays remain empty across all JSON payloads. +- Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoint payloads also retain stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 1af7ee6c17d..659ee169977 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -372,14 +372,18 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const exposesByName = getExposesByName(parsed) expect(exposesByName.size).toBe(3) + const isStatsEndpoint = path.endsWith('mf-stats.json') for (const [exposeName, exposePath] of Object.entries(expectedExposePaths)) { const expose = exposesByName.get(exposeName) expect(expose).toBeDefined() expect(expose?.id).toBe(`mf_remote:${exposeName}`) expect(expose?.path).toBe(exposePath) - expect(expose?.requires ?? []).toEqual([]) - if (path.endsWith('mf-stats.json')) { + if (isStatsEndpoint) { + expect(expose?.requires ?? []).toEqual([]) expect(expose?.file).toBe(expectedExposeFiles[exposeName]) + } else { + expect(expose?.requires).toBeUndefined() + expect(expose?.file).toBeUndefined() } } } diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index f1eeffe0d1b..2f96c00faee 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -67,7 +67,7 @@ Federation stats contract expectations: - Shared version semantics remain mode-correct across endpoints (`*` only for SSR node-target shared entries). - JSON payloads also retain `remotes: []` and the two-entry shared set (`react`, `react-dom`). - Expose ids/paths are expected to remain stable in endpoint payloads for `message`, `routes`, and `server-data`. -- Expose `requires` arrays remain empty in endpoint payloads. +- Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoints also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index dbce1cdd2d6..4bf6fc46aeb 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -55,7 +55,7 @@ For the remote web target (browser manifest), expected contract is: - JSON endpoint payloads should keep `remotes` empty and include only `react`/`react-dom` shared entries. - Shared endpoint ids should remain stable as `mf_remote:react` and `mf_remote:react-dom`. - Expose ids/paths in endpoint payloads should remain stable for `message`, `routes`, and `server-data`. -- Expose `requires` arrays should remain empty in endpoint payloads. +- Stats endpoint expose `requires` arrays should remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` values (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). That combination keeps React shared ownership on the host and avoids SSR diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index fb587a1a489..3104aa05de0 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -56,7 +56,7 @@ Expected browser manifest contract for web target: - Shared version metadata should remain mode-correct between browser and SSR endpoint payloads. - JSON endpoint payloads should keep `remotes` empty and only include shared entries for React + ReactDOM. - Expose ids/paths should remain stable across endpoint payloads for `message`, `routes`, and `server-data`. -- Expose `requires` arrays are expected to remain empty across endpoint payloads. +- Stats endpoint expose `requires` arrays are expected to remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). This keeps React shared ownership on the host side and avoids remote shared From 0c1fbc8b757185246f0db4a3e30323176e263cbc Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:42:58 +0000 Subject: [PATCH 099/102] test: assert shared runtime flags by endpoint type Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 2 ++ .../tests/module-federation.spec.ts | 24 ++++++++++++++++++- .../README.md | 2 ++ .../README.md | 2 ++ .../README.md | 2 ++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index d95f9580ad5..71c31f9ba50 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -74,6 +74,8 @@ Federation stats contract is also verified: - JSON endpoint payloads also enforce mode-correct shared version semantics (`react`/`react-dom` wildcard only on SSR endpoints). - Each JSON endpoint payload also keeps `remotes: []` and exactly two shared entries (`react`, `react-dom`). - Shared identity in each endpoint payload remains stable (`mf_remote:react`, `mf_remote:react-dom`). +- Shared entries remain singleton on all endpoint payloads. +- Stats endpoints retain shared runtime flags (`shareScope: 'default'`, `eager: false`, and SSR-only `import: false`), while manifest endpoints omit those fields. - Endpoint payloads also retain expose identity/path contracts for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoint payloads also retain stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 659ee169977..f78ea4b14c5 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -358,10 +358,33 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(reactDom).toBeDefined() expect(react?.id).toBe(expectedSharedIds.react) expect(reactDom?.id).toBe(expectedSharedIds['react-dom']) + expect(react?.singleton).toBe(true) + expect(reactDom?.singleton).toBe(true) expect(react?.requiredVersion).toBe(expectedSharedRequiredVersion) expect(reactDom?.requiredVersion).toBe(expectedSharedRequiredVersion) expect(react?.fallback).toBe('') expect(reactDom?.fallback).toBe('') + const isStatsEndpoint = path.endsWith('mf-stats.json') + if (isStatsEndpoint) { + expect(react?.shareScope).toBe('default') + expect(reactDom?.shareScope).toBe('default') + expect(react?.eager).toBe(false) + expect(reactDom?.eager).toBe(false) + if (path.startsWith('/ssr/')) { + expect(react?.import).toBe(false) + expect(reactDom?.import).toBe(false) + } else { + expect(react?.import).toBeUndefined() + expect(reactDom?.import).toBeUndefined() + } + } else { + expect(react?.shareScope).toBeUndefined() + expect(reactDom?.shareScope).toBeUndefined() + expect(react?.eager).toBeUndefined() + expect(reactDom?.eager).toBeUndefined() + expect(react?.import).toBeUndefined() + expect(reactDom?.import).toBeUndefined() + } if (path.startsWith('/ssr/')) { expect(react?.version).toBe('*') expect(reactDom?.version).toBe('*') @@ -372,7 +395,6 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const exposesByName = getExposesByName(parsed) expect(exposesByName.size).toBe(3) - const isStatsEndpoint = path.endsWith('mf-stats.json') for (const [exposeName, exposePath] of Object.entries(expectedExposePaths)) { const expose = exposesByName.get(exposeName) expect(expose).toBeDefined() diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 2f96c00faee..7e7fe5287ac 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -66,6 +66,8 @@ Federation stats contract expectations: - `pluginVersion` is expected to remain SemVer-like on all JSON endpoints. - Shared version semantics remain mode-correct across endpoints (`*` only for SSR node-target shared entries). - JSON payloads also retain `remotes: []` and the two-entry shared set (`react`, `react-dom`). +- Shared entries stay singleton on all endpoint payloads. +- Stats endpoints include shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Expose ids/paths are expected to remain stable in endpoint payloads for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoints also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 4bf6fc46aeb..9cf0cdb62a9 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -54,6 +54,8 @@ For the remote web target (browser manifest), expected contract is: - Shared version metadata should stay mode-correct across endpoints (browser concrete versions, SSR wildcard versions). - JSON endpoint payloads should keep `remotes` empty and include only `react`/`react-dom` shared entries. - Shared endpoint ids should remain stable as `mf_remote:react` and `mf_remote:react-dom`. +- Shared entries should stay singleton on all endpoint payloads. +- Stats endpoints should keep shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Expose ids/paths in endpoint payloads should remain stable for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays should remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` values (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 3104aa05de0..1fa5ab84d48 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -55,6 +55,8 @@ Expected browser manifest contract for web target: - `pluginVersion` values are expected to stay SemVer-like across all federation JSON endpoints. - Shared version metadata should remain mode-correct between browser and SSR endpoint payloads. - JSON endpoint payloads should keep `remotes` empty and only include shared entries for React + ReactDOM. +- Shared entries are expected to stay singleton on all endpoint payloads. +- Stats endpoints should keep shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Expose ids/paths should remain stable across endpoint payloads for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays are expected to remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). From 13220b2547bc413ae5a15f2f84e6b6272a0dd54e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:45:54 +0000 Subject: [PATCH 100/102] test: assert shared usage arrays by endpoint type Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 1 + .../tests/module-federation.spec.ts | 10 ++++++++++ .../module-federation-rsbuild-remote/README.md | 1 + .../start-module-federation-rsbuild-host/README.md | 1 + .../start-module-federation-rsbuild-remote/README.md | 1 + 5 files changed, 14 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 71c31f9ba50..9aab1bd6cf4 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -76,6 +76,7 @@ Federation stats contract is also verified: - Shared identity in each endpoint payload remains stable (`mf_remote:react`, `mf_remote:react-dom`). - Shared entries remain singleton on all endpoint payloads. - Stats endpoints retain shared runtime flags (`shareScope: 'default'`, `eager: false`, and SSR-only `import: false`), while manifest endpoints omit those fields. +- Stats endpoints also keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays, while manifest endpoints omit them. - Endpoint payloads also retain expose identity/path contracts for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoint payloads also retain stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index f78ea4b14c5..3c38e46e2bd 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -22,6 +22,8 @@ type ManifestSharedEntry = { import?: boolean eager?: boolean shareScope?: string + usedIn?: Array + usedExports?: Array assets?: { js?: SharedAssetGroup css?: SharedAssetGroup @@ -370,6 +372,10 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(reactDom?.shareScope).toBe('default') expect(react?.eager).toBe(false) expect(reactDom?.eager).toBe(false) + expect(react?.usedIn ?? []).toEqual([]) + expect(reactDom?.usedIn ?? []).toEqual([]) + expect(react?.usedExports ?? []).toEqual([]) + expect(reactDom?.usedExports ?? []).toEqual([]) if (path.startsWith('/ssr/')) { expect(react?.import).toBe(false) expect(reactDom?.import).toBe(false) @@ -384,6 +390,10 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(reactDom?.eager).toBeUndefined() expect(react?.import).toBeUndefined() expect(reactDom?.import).toBeUndefined() + expect(react?.usedIn).toBeUndefined() + expect(reactDom?.usedIn).toBeUndefined() + expect(react?.usedExports).toBeUndefined() + expect(reactDom?.usedExports).toBeUndefined() } if (path.startsWith('/ssr/')) { expect(react?.version).toBe('*') diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 7e7fe5287ac..8ba79926ea3 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -68,6 +68,7 @@ Federation stats contract expectations: - JSON payloads also retain `remotes: []` and the two-entry shared set (`react`, `react-dom`). - Shared entries stay singleton on all endpoint payloads. - Stats endpoints include shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. +- Stats endpoints keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. - Expose ids/paths are expected to remain stable in endpoint payloads for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoints also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 9cf0cdb62a9..9cb2132dbb4 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -56,6 +56,7 @@ For the remote web target (browser manifest), expected contract is: - Shared endpoint ids should remain stable as `mf_remote:react` and `mf_remote:react-dom`. - Shared entries should stay singleton on all endpoint payloads. - Stats endpoints should keep shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. +- Stats endpoints should keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. - Expose ids/paths in endpoint payloads should remain stable for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays should remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` values (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 1fa5ab84d48..02f2a1535ea 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -57,6 +57,7 @@ Expected browser manifest contract for web target: - JSON endpoint payloads should keep `remotes` empty and only include shared entries for React + ReactDOM. - Shared entries are expected to stay singleton on all endpoint payloads. - Stats endpoints should keep shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. +- Stats endpoints should keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. - Expose ids/paths should remain stable across endpoint payloads for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays are expected to remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). From 2cbcbc80b849f89bc93abbda56031e99de96ceb3 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:49:18 +0000 Subject: [PATCH 101/102] test: assert endpoint shared and expose asset semantics Co-authored-by: Zack Jackson --- .../module-federation-rsbuild-host/README.md | 2 ++ .../tests/module-federation.spec.ts | 11 +++++++++++ .../module-federation-rsbuild-remote/README.md | 2 ++ .../start-module-federation-rsbuild-host/README.md | 2 ++ .../start-module-federation-rsbuild-remote/README.md | 2 ++ 5 files changed, 19 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 9aab1bd6cf4..822e067f650 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -77,9 +77,11 @@ Federation stats contract is also verified: - Shared entries remain singleton on all endpoint payloads. - Stats endpoints retain shared runtime flags (`shareScope: 'default'`, `eager: false`, and SSR-only `import: false`), while manifest endpoints omit those fields. - Stats endpoints also keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays, while manifest endpoints omit them. +- Endpoint shared JS asset semantics remain mode-correct (`[]` for SSR shared entries, non-empty relative `static/js/*.js` for browser shared entries). - Endpoint payloads also retain expose identity/path contracts for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoint payloads also retain stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). +- Endpoint expose sync JS asset lists are non-empty and keep relative `static/js/*.js` paths. Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 3c38e46e2bd..961c89331a4 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -398,9 +398,17 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) if (path.startsWith('/ssr/')) { expect(react?.version).toBe('*') expect(reactDom?.version).toBe('*') + expect(react?.assets?.js?.sync ?? []).toEqual([]) + expect(reactDom?.assets?.js?.sync ?? []).toEqual([]) } else { expect(react?.version).not.toBe('*') expect(reactDom?.version).not.toBe('*') + expect((react?.assets?.js?.sync ?? []).length).toBeGreaterThan(0) + expect((reactDom?.assets?.js?.sync ?? []).length).toBeGreaterThan(0) + assertRelativeJsAssetPaths([ + ...(react?.assets?.js?.sync ?? []), + ...(reactDom?.assets?.js?.sync ?? []), + ]) } const exposesByName = getExposesByName(parsed) @@ -410,6 +418,9 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(expose).toBeDefined() expect(expose?.id).toBe(`mf_remote:${exposeName}`) expect(expose?.path).toBe(exposePath) + const exposeSyncAssets = expose?.assets?.js?.sync ?? [] + expect(exposeSyncAssets.length).toBeGreaterThan(0) + assertRelativeJsAssetPaths(exposeSyncAssets) if (isStatsEndpoint) { expect(expose?.requires ?? []).toEqual([]) expect(expose?.file).toBe(expectedExposeFiles[exposeName]) diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 8ba79926ea3..1945c435291 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -69,9 +69,11 @@ Federation stats contract expectations: - Shared entries stay singleton on all endpoint payloads. - Stats endpoints include shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Stats endpoints keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. +- Endpoint shared JS asset semantics remain mode-correct (`[]` for SSR shared entries, non-empty relative `static/js/*.js` for browser shared entries). - Expose ids/paths are expected to remain stable in endpoint payloads for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoints also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). +- Endpoint expose sync JS asset lists stay non-empty and keep relative `static/js/*.js` paths. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 9cb2132dbb4..4adaa2063dd 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -57,9 +57,11 @@ For the remote web target (browser manifest), expected contract is: - Shared entries should stay singleton on all endpoint payloads. - Stats endpoints should keep shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Stats endpoints should keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. +- Endpoint shared JS asset semantics should stay mode-correct (`[]` for SSR shared entries, non-empty relative `static/js/*.js` for browser shared entries). - Expose ids/paths in endpoint payloads should remain stable for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays should remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` values (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). +- Endpoint expose sync JS asset lists should stay non-empty and use relative `static/js/*.js` paths. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 02f2a1535ea..52c504d061f 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -58,9 +58,11 @@ Expected browser manifest contract for web target: - Shared entries are expected to stay singleton on all endpoint payloads. - Stats endpoints should keep shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Stats endpoints should keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. +- Endpoint shared JS asset semantics should remain mode-correct (`[]` for SSR shared entries, non-empty relative `static/js/*.js` for browser shared entries). - Expose ids/paths should remain stable across endpoint payloads for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays are expected to remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). +- Endpoint expose sync JS asset lists should stay non-empty and use relative `static/js/*.js` paths. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime. From 792731637355f64847b06227312cfbb74c9bc99c Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 14 Feb 2026 23:52:21 +0000 Subject: [PATCH 102/102] test: assert endpoint async and css asset emptiness Co-authored-by: Zack Jackson --- e2e/react-start/module-federation-rsbuild-host/README.md | 2 ++ .../tests/module-federation.spec.ts | 9 +++++++++ .../module-federation-rsbuild-remote/README.md | 2 ++ .../react/start-module-federation-rsbuild-host/README.md | 2 ++ .../start-module-federation-rsbuild-remote/README.md | 2 ++ 5 files changed, 17 insertions(+) diff --git a/e2e/react-start/module-federation-rsbuild-host/README.md b/e2e/react-start/module-federation-rsbuild-host/README.md index 822e067f650..9ae79483877 100644 --- a/e2e/react-start/module-federation-rsbuild-host/README.md +++ b/e2e/react-start/module-federation-rsbuild-host/README.md @@ -78,10 +78,12 @@ Federation stats contract is also verified: - Stats endpoints retain shared runtime flags (`shareScope: 'default'`, `eager: false`, and SSR-only `import: false`), while manifest endpoints omit those fields. - Stats endpoints also keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays, while manifest endpoints omit them. - Endpoint shared JS asset semantics remain mode-correct (`[]` for SSR shared entries, non-empty relative `static/js/*.js` for browser shared entries). +- Shared endpoint payloads keep async JS asset arrays empty and CSS asset arrays empty. - Endpoint payloads also retain expose identity/path contracts for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoint payloads also retain stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). - Endpoint expose sync JS asset lists are non-empty and keep relative `static/js/*.js` paths. +- Endpoint expose async JS and CSS asset arrays remain empty. Remote entry payloads are also validated directly over HTTP at: diff --git a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts index 961c89331a4..9e94db1db4c 100644 --- a/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts +++ b/e2e/react-start/module-federation-rsbuild-host/tests/module-federation.spec.ts @@ -366,6 +366,12 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) expect(reactDom?.requiredVersion).toBe(expectedSharedRequiredVersion) expect(react?.fallback).toBe('') expect(reactDom?.fallback).toBe('') + expect(react?.assets?.js?.async ?? []).toEqual([]) + expect(reactDom?.assets?.js?.async ?? []).toEqual([]) + expect(react?.assets?.css?.sync ?? []).toEqual([]) + expect(reactDom?.assets?.css?.sync ?? []).toEqual([]) + expect(react?.assets?.css?.async ?? []).toEqual([]) + expect(reactDom?.assets?.css?.async ?? []).toEqual([]) const isStatsEndpoint = path.endsWith('mf-stats.json') if (isStatsEndpoint) { expect(react?.shareScope).toBe('default') @@ -421,6 +427,9 @@ test('serves federation manifest and stats endpoints as JSON', async ({ page }) const exposeSyncAssets = expose?.assets?.js?.sync ?? [] expect(exposeSyncAssets.length).toBeGreaterThan(0) assertRelativeJsAssetPaths(exposeSyncAssets) + expect(expose?.assets?.js?.async ?? []).toEqual([]) + expect(expose?.assets?.css?.sync ?? []).toEqual([]) + expect(expose?.assets?.css?.async ?? []).toEqual([]) if (isStatsEndpoint) { expect(expose?.requires ?? []).toEqual([]) expect(expose?.file).toBe(expectedExposeFiles[exposeName]) diff --git a/e2e/react-start/module-federation-rsbuild-remote/README.md b/e2e/react-start/module-federation-rsbuild-remote/README.md index 1945c435291..d3b5a052373 100644 --- a/e2e/react-start/module-federation-rsbuild-remote/README.md +++ b/e2e/react-start/module-federation-rsbuild-remote/README.md @@ -70,10 +70,12 @@ Federation stats contract expectations: - Stats endpoints include shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Stats endpoints keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. - Endpoint shared JS asset semantics remain mode-correct (`[]` for SSR shared entries, non-empty relative `static/js/*.js` for browser shared entries). +- Shared endpoint payloads keep async JS asset arrays empty and CSS asset arrays empty. - Expose ids/paths are expected to remain stable in endpoint payloads for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays remain empty; manifest endpoint payloads omit `requires`. - Stats endpoints also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). - Endpoint expose sync JS asset lists stay non-empty and keep relative `static/js/*.js` paths. +- Endpoint expose async JS and CSS asset arrays remain empty. Both `/dist/remoteEntry.js` and `/ssr/remoteEntry.js` are expected to serve JavaScript payloads over HTTP with JavaScript content-types (not HTML fallbacks). diff --git a/examples/react/start-module-federation-rsbuild-host/README.md b/examples/react/start-module-federation-rsbuild-host/README.md index 4adaa2063dd..b1b8a99f6e7 100644 --- a/examples/react/start-module-federation-rsbuild-host/README.md +++ b/examples/react/start-module-federation-rsbuild-host/README.md @@ -58,10 +58,12 @@ For the remote web target (browser manifest), expected contract is: - Stats endpoints should keep shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Stats endpoints should keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. - Endpoint shared JS asset semantics should stay mode-correct (`[]` for SSR shared entries, non-empty relative `static/js/*.js` for browser shared entries). +- Shared endpoint payloads should keep async JS asset arrays empty and CSS asset arrays empty. - Expose ids/paths in endpoint payloads should remain stable for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays should remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` values (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). - Endpoint expose sync JS asset lists should stay non-empty and use relative `static/js/*.js` paths. +- Endpoint expose async JS and CSS asset arrays should remain empty. That combination keeps React shared ownership on the host and avoids SSR runtime fallback chunk loading conflicts with `@module-federation/node`. diff --git a/examples/react/start-module-federation-rsbuild-remote/README.md b/examples/react/start-module-federation-rsbuild-remote/README.md index 52c504d061f..1fa31f31b4d 100644 --- a/examples/react/start-module-federation-rsbuild-remote/README.md +++ b/examples/react/start-module-federation-rsbuild-remote/README.md @@ -59,10 +59,12 @@ Expected browser manifest contract for web target: - Stats endpoints should keep shared runtime flags (`shareScope: default`, `eager: false`, SSR-only `import: false`) while manifest endpoints omit those fields. - Stats endpoints should keep shared usage arrays (`usedIn`, `usedExports`) as empty arrays while manifest endpoints omit them. - Endpoint shared JS asset semantics should remain mode-correct (`[]` for SSR shared entries, non-empty relative `static/js/*.js` for browser shared entries). +- Shared endpoint payloads should keep async JS asset arrays empty and CSS asset arrays empty. - Expose ids/paths should remain stable across endpoint payloads for `message`, `routes`, and `server-data`. - Stats endpoint expose `requires` arrays are expected to remain empty; manifest endpoint payloads should omit `requires`. - Stats endpoint payloads should also keep stable expose `file` metadata (`src/message.tsx`, `src/routes.tsx`, `src/server-data.ts`). - Endpoint expose sync JS asset lists should stay non-empty and use relative `static/js/*.js` paths. +- Endpoint expose async JS and CSS asset arrays should remain empty. This keeps React shared ownership on the host side and avoids remote shared fallback chunk loading issues in SSR node runtime.