From 78ad9f3f8fc12ba944d4591c21708d7304d77066 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:02 +0100 Subject: [PATCH 01/12] feat!: require @rspack/core 2 Raise the @rspack/core peer to >=2 and build and test against 2.2.8. Map the options Rspack 2 renamed or removed: - Stop setting experiments.parallelLoader, which Rspack 2 removed. Parallel loading is opted into per rule with `parallel: true`. The babel-swc-loader warning about it could no longer fire, so it is removed together with the hideParallelModeWarning option. - Rspack 2 passes parallel loaders a correct rootContext and the compiler's bundled SWC, so the babel-swc-loader uses both directly. - REPACK_EXPERIMENTAL_CACHE sets and --reset-cache reads the top-level `cache` option, as Rspack 2 silently ignores experiments.cache. - Fix the type fallout: a non-union SwcConfig for the babel-swc-loader, InputFileSystem-typed reads in the assets loader, and narrowing the now `false | DevServer` devServer option. Jest loads the ESM-only core through a custom test environment, and the integration markers and snapshots follow Rspack 2's output. --- packages/repack-expo/package.json | 2 +- .../configureExpoPublicEnvironment.ts | 2 +- .../test/public-environment.test.cjs | 42 +- packages/repack/jest.config.js | 3 +- packages/repack/jest.environment.js | 16 + packages/repack/jest.rspack-core-bridge.js | 13 + packages/repack/package.json | 3 +- packages/repack/src/commands/bundle.ts | 18 +- .../__tests__/resetPersistentCache.test.ts | 76 +++ .../config/__tests__/getCommandConfig.test.ts | 30 ++ .../common/config/getCommandConfig.ts | 5 +- .../commands/common/config/getRepackConfig.ts | 8 - .../commands/common/resetPersistentCache.ts | 89 +--- packages/repack/src/commands/start.ts | 18 +- .../src/loaders/assetsLoader/assetsLoader.ts | 25 +- .../babelSwcLoader/__tests__/swc.test.ts | 45 +- .../loaders/babelSwcLoader/babelSwcLoader.ts | 21 +- .../src/loaders/babelSwcLoader/options.ts | 15 +- .../repack/src/loaders/babelSwcLoader/swc.ts | 54 +-- .../src/loaders/babelSwcLoader/utils.ts | 63 +-- .../RepackTargetPlugin/RepackTargetPlugin.ts | 4 +- pnpm-lock.yaml | 346 ++++---------- pnpm-workspace.yaml | 5 +- .../src/loaders/react-native-parser.test.ts | 10 +- .../src/loaders/source-map-sources.test.ts | 9 +- .../src/plugins/NativeEntryPlugin.test.ts | 21 +- .../rspack/NativeEntryPlugin.test.ts.snap | 450 +++++++++++------- .../webpack/NativeEntryPlugin.test.ts.snap | 4 +- 28 files changed, 680 insertions(+), 717 deletions(-) create mode 100644 packages/repack/jest.environment.js create mode 100644 packages/repack/jest.rspack-core-bridge.js create mode 100644 packages/repack/src/commands/common/__tests__/resetPersistentCache.test.ts create mode 100644 packages/repack/src/commands/common/config/__tests__/getCommandConfig.test.ts diff --git a/packages/repack-expo/package.json b/packages/repack-expo/package.json index 3e53aec3a..6848fa18d 100644 --- a/packages/repack-expo/package.json +++ b/packages/repack-expo/package.json @@ -52,7 +52,7 @@ }, "peerDependencies": { "@callstack/repack": "workspace:^", - "@rspack/core": ">=1", + "@rspack/core": ">=2", "expo": ">=56" }, "devDependencies": { diff --git a/packages/repack-expo/src/rspack/environment/configureExpoPublicEnvironment.ts b/packages/repack-expo/src/rspack/environment/configureExpoPublicEnvironment.ts index 51ce33130..25d02823e 100644 --- a/packages/repack-expo/src/rspack/environment/configureExpoPublicEnvironment.ts +++ b/packages/repack-expo/src/rspack/environment/configureExpoPublicEnvironment.ts @@ -13,7 +13,7 @@ function addEnvironmentDigestToPersistentCache( compiler: Compiler, digest: string ): void { - const cache = compiler.options.cache || compiler.options.experiments?.cache; + const { cache } = compiler.options; if (typeof cache !== 'object' || cache.type !== 'persistent') return; cache.version = [cache.version, `${PLUGIN_NAME}:${digest}`] diff --git a/packages/repack-expo/test/public-environment.test.cjs b/packages/repack-expo/test/public-environment.test.cjs index a289ba3c4..fc3345073 100644 --- a/packages/repack-expo/test/public-environment.test.cjs +++ b/packages/repack-expo/test/public-environment.test.cjs @@ -105,17 +105,14 @@ function createEnvironmentCompiler( }, ], }, - experiments: { - ...(cacheDirectory - ? { - cache: { - storage: { directory: cacheDirectory, type: 'filesystem' }, - type: 'persistent', - }, - } - : {}), - ...(parallelLoader ? { parallelLoader: true } : {}), - }, + ...(cacheDirectory + ? { + cache: { + storage: { directory: cacheDirectory, type: 'filesystem' }, + type: 'persistent', + }, + } + : {}), name: platform, output: { path: path.join(projectRoot, 'dist', platform), @@ -491,27 +488,20 @@ test('invalidates Rspack persistent loader cache when a public shell value chang ); }); -test('adds the Expo environment digest to both Rspack persistent cache locations', () => { +test('adds the Expo environment digest to the Rspack persistent cache version', () => { const projectRoot = createEnvironmentProject({ '.env': 'EXPO_PUBLIC_VALUE=cache-value', }); - for (const location of ['cache', 'experiments']) { - const cache = { type: 'persistent', version: 'base-version' }; - const compiler = { - options: { - mode: 'development', - ...(location === 'cache' ? { cache } : { experiments: { cache } }), - }, - }; + const cache = { type: 'persistent', version: 'base-version' }; + const compiler = { options: { mode: 'development', cache } }; - const environment = configureExpoPublicEnvironment(compiler, projectRoot); + const environment = configureExpoPublicEnvironment(compiler, projectRoot); - assert.equal( - cache.version, - `base-version|RepackExpoPublicEnvironmentPlugin:${environment.digest}` - ); - } + assert.equal( + cache.version, + `base-version|RepackExpoPublicEnvironmentPlugin:${environment.digest}` + ); }); test('rebuilds transformed application modules when an Expo public dotenv value changes', async () => { diff --git a/packages/repack/jest.config.js b/packages/repack/jest.config.js index 950eee740..b9857e366 100644 --- a/packages/repack/jest.config.js +++ b/packages/repack/jest.config.js @@ -2,8 +2,9 @@ module.exports = { clearMocks: true, moduleNameMapper: { '^(\\.{1,2}/.*)\\.js$': '$1', + '^@rspack/core$': '/jest.rspack-core-bridge.js', }, setupFiles: ['./jest.setup.js'], - testEnvironment: 'node', + testEnvironment: '/jest.environment.js', testMatch: ['**/__tests__/**/*.ts?(x)'], }; diff --git a/packages/repack/jest.environment.js b/packages/repack/jest.environment.js new file mode 100644 index 000000000..01fb5384b --- /dev/null +++ b/packages/repack/jest.environment.js @@ -0,0 +1,16 @@ +const { TestEnvironment: NodeEnvironment } = require('jest-environment-node'); + +/** + * @rspack/core is published as a pure ESM package, which Jest's sandboxed CJS + * module runtime cannot load. Test environments run outside the sandbox, with + * Node's real module system, so load it here and hand it to the sandbox via a + * global - see jest.rspack-core-bridge.js for the consuming side. + */ +class RspackCoreEnvironment extends NodeEnvironment { + async setup() { + await super.setup(); + this.global.__RSPACK_CORE__ = await import('@rspack/core'); + } +} + +module.exports = RspackCoreEnvironment; diff --git a/packages/repack/jest.rspack-core-bridge.js b/packages/repack/jest.rspack-core-bridge.js new file mode 100644 index 000000000..a3e806536 --- /dev/null +++ b/packages/repack/jest.rspack-core-bridge.js @@ -0,0 +1,13 @@ +// Maps `require('@rspack/core')` inside tests onto the module preloaded by +// jest.environment.js. The `__esModule` marker keeps Babel's import interop +// treating it as a namespace, so named imports keep working. +const core = globalThis.__RSPACK_CORE__; + +if (!core) { + throw new Error( + '@rspack/core was not preloaded by the test environment - ' + + 'make sure jest.environment.js is set as the testEnvironment' + ); +} + +module.exports = { __esModule: true, ...core, default: core.default ?? core }; diff --git a/packages/repack/package.json b/packages/repack/package.json index d0079a0ce..d10ca0349 100644 --- a/packages/repack/package.json +++ b/packages/repack/package.json @@ -65,7 +65,7 @@ }, "peerDependencies": { "@module-federation/enhanced": ">=2.0.0", - "@rspack/core": ">=1", + "@rspack/core": ">=2", "react-native": ">=0.82", "webpack": ">=5.90" }, @@ -129,6 +129,7 @@ "babel-jest": "^29.7.0", "clang-format": "^1.8.0", "jest": "^29.7.0", + "jest-environment-node": "^29.7.0", "react": "catalog:", "react-native": "catalog:", "rspack-plugin-virtual-module": "^0.1.13", diff --git a/packages/repack/src/commands/bundle.ts b/packages/repack/src/commands/bundle.ts index d83e9cdfe..d8c73b24d 100644 --- a/packages/repack/src/commands/bundle.ts +++ b/packages/repack/src/commands/bundle.ts @@ -84,19 +84,11 @@ export async function bundle( } if (args.resetCache) { - if (bundler === 'rspack') { - resetPersistentCache({ - bundler: 'rspack', - rootDir: cliConfig.root, - cacheConfigs: [config.experiments?.cache], - }); - } else { - resetPersistentCache({ - bundler: 'webpack', - rootDir: cliConfig.root, - cacheConfigs: [config.cache], - }); - } + resetPersistentCache({ + bundler, + rootDir: cliConfig.root, + cacheConfigs: [config.cache], + }); } // Dynamic import of bundler engine — both are optional peer dependencies diff --git a/packages/repack/src/commands/common/__tests__/resetPersistentCache.test.ts b/packages/repack/src/commands/common/__tests__/resetPersistentCache.test.ts new file mode 100644 index 000000000..59136eb53 --- /dev/null +++ b/packages/repack/src/commands/common/__tests__/resetPersistentCache.test.ts @@ -0,0 +1,76 @@ +import fs from 'node:fs'; +import { vol } from 'memfs'; +import { resetPersistentCache } from '../resetPersistentCache.js'; + +jest.mock('node:fs', () => jest.requireActual('memfs').fs); + +const rootDir = '/project'; + +describe('resetPersistentCache', () => { + beforeEach(() => { + vol.reset(); + jest.spyOn(console, 'warn').mockImplementation(() => {}); + }); + + it('should delete the default Rspack cache directory', () => { + vol.fromJSON({ '/project/node_modules/.cache/rspack/data': '' }); + + resetPersistentCache({ + bundler: 'rspack', + rootDir, + cacheConfigs: [{ type: 'persistent' }], + }); + + expect(fs.existsSync('/project/node_modules/.cache/rspack')).toBe(false); + }); + + it('should delete the Rspack persistent cache storage directory', () => { + vol.fromJSON({ + '/project/node_modules/.cache/rspack/data': '', + '/project/.cache/rspack/data': '', + }); + + resetPersistentCache({ + bundler: 'rspack', + rootDir, + cacheConfigs: [ + { + type: 'persistent', + storage: { type: 'filesystem', directory: '.cache/rspack' }, + }, + ], + }); + + expect(fs.existsSync('/project/.cache/rspack')).toBe(false); + expect(fs.existsSync('/project/node_modules/.cache/rspack')).toBe(true); + }); + + it('should delete the cache directory of a filesystem cache', () => { + vol.fromJSON({ '/project/.cache/webpack/data': '' }); + + resetPersistentCache({ + bundler: 'webpack', + rootDir, + cacheConfigs: [{ type: 'filesystem', cacheDirectory: '.cache/webpack' }], + }); + + expect(fs.existsSync('/project/.cache/webpack')).toBe(false); + }); + + it('should not delete a cache directory outside of the project', () => { + vol.fromJSON({ '/outside/cache/data': '' }); + + resetPersistentCache({ + bundler: 'rspack', + rootDir, + cacheConfigs: [ + { + type: 'persistent', + storage: { type: 'filesystem', directory: '/outside/cache' }, + }, + ], + }); + + expect(fs.existsSync('/outside/cache')).toBe(true); + }); +}); diff --git a/packages/repack/src/commands/common/config/__tests__/getCommandConfig.test.ts b/packages/repack/src/commands/common/config/__tests__/getCommandConfig.test.ts new file mode 100644 index 000000000..04abc1d77 --- /dev/null +++ b/packages/repack/src/commands/common/config/__tests__/getCommandConfig.test.ts @@ -0,0 +1,30 @@ +import { EXPERIMENTAL_CACHE_ENV_KEY } from '../../../../env.js'; +import { getCommandConfig } from '../getCommandConfig.js'; + +describe('getCommandConfig', () => { + afterEach(() => { + delete process.env[EXPERIMENTAL_CACHE_ENV_KEY]; + }); + + it('should not configure a cache by default', () => { + expect(getCommandConfig('start', 'rspack')).not.toHaveProperty('cache'); + expect(getCommandConfig('start', 'webpack')).not.toHaveProperty('cache'); + }); + + it('should enable the persistent cache for Rspack with the top-level cache option', () => { + process.env[EXPERIMENTAL_CACHE_ENV_KEY] = 'true'; + + const config = getCommandConfig('start', 'rspack'); + + expect(config).toHaveProperty('cache', { type: 'persistent' }); + expect(config).not.toHaveProperty('experiments'); + }); + + it('should enable the filesystem cache for webpack', () => { + process.env[EXPERIMENTAL_CACHE_ENV_KEY] = '1'; + + expect(getCommandConfig('start', 'webpack')).toHaveProperty('cache', { + type: 'filesystem', + }); + }); +}); diff --git a/packages/repack/src/commands/common/config/getCommandConfig.ts b/packages/repack/src/commands/common/config/getCommandConfig.ts index f080b7a30..2e0a2a01c 100644 --- a/packages/repack/src/commands/common/config/getCommandConfig.ts +++ b/packages/repack/src/commands/common/config/getCommandConfig.ts @@ -11,10 +11,7 @@ function isExperimentalCacheEnabled() { function getCacheConfig(bundler: 'rspack' | 'webpack') { if (isExperimentalCacheEnabled()) { if (bundler === 'rspack') { - return { - cache: true, - experiments: { cache: { type: 'persistent' } }, - }; + return { cache: { type: 'persistent' } }; } return { cache: { type: 'filesystem' } }; } diff --git a/packages/repack/src/commands/common/config/getRepackConfig.ts b/packages/repack/src/commands/common/config/getRepackConfig.ts index cc4269174..4f99140ac 100644 --- a/packages/repack/src/commands/common/config/getRepackConfig.ts +++ b/packages/repack/src/commands/common/config/getRepackConfig.ts @@ -1,21 +1,13 @@ import { getMinimizerConfig } from './getMinimizerConfig.js'; -function getExperimentsConfig(bundler: 'rspack' | 'webpack') { - if (bundler === 'rspack') { - return { parallelLoader: true }; - } -} - export async function getRepackConfig( bundler: 'rspack' | 'webpack', rootDir: string ) { - const experiments = getExperimentsConfig(bundler); const minimizerConfiguration = await getMinimizerConfig(bundler, rootDir); return { devtool: 'source-map', - experiments, output: { clean: true, hashFunction: 'xxhash64', diff --git a/packages/repack/src/commands/common/resetPersistentCache.ts b/packages/repack/src/commands/common/resetPersistentCache.ts index 53dac9a59..d22cfd6b3 100644 --- a/packages/repack/src/commands/common/resetPersistentCache.ts +++ b/packages/repack/src/commands/common/resetPersistentCache.ts @@ -4,10 +4,9 @@ import type { Configuration as RspackConfiguration } from '@rspack/core'; import * as colorette from 'colorette'; import type { Configuration as WebpackConfiguration } from 'webpack'; -type RspackCacheOptions = NonNullable< - RspackConfiguration['experiments'] ->['cache']; -type WebpackCacheOptions = WebpackConfiguration['cache']; +type CacheOptions = + | RspackConfiguration['cache'] + | WebpackConfiguration['cache']; function getDefaultCacheDirectory( bundler: 'rspack' | 'webpack', @@ -22,69 +21,28 @@ function getCustomCacheDirectory(candidate: string, rootDir: string): string { return path.resolve(rootDir, candidate); } -function getRspackCachePaths( +function getCachePath( + bundler: 'rspack' | 'webpack', rootDir: string, - cacheConfigs: RspackCacheOptions[] -): Set { - const cachePaths = new Set(); - - for (const cacheConfig of cacheConfigs) { - if ( - typeof cacheConfig === 'object' && - 'storage' in cacheConfig && - cacheConfig.storage?.directory - ) { - const candidateDir = cacheConfig.storage.directory; - cachePaths.add(getCustomCacheDirectory(candidateDir, rootDir)); - } else { - cachePaths.add(getDefaultCacheDirectory('rspack', rootDir)); + cacheConfig: CacheOptions +): string { + if (typeof cacheConfig === 'object') { + // Rspack `type: 'persistent'` + if ('storage' in cacheConfig && cacheConfig.storage?.directory) { + return getCustomCacheDirectory(cacheConfig.storage.directory, rootDir); } - } - - return cachePaths; -} - -function getWebpackCachePaths( - rootDir: string, - cacheConfigs: WebpackCacheOptions[] -): Set { - const cachePaths = new Set(); - - for (const cacheConfig of cacheConfigs) { - if ( - typeof cacheConfig === 'object' && - 'cacheLocation' in cacheConfig && - cacheConfig.cacheLocation - ) { + // `type: 'filesystem'` (webpack, Rspack with `experiments.newCache`) + if ('cacheLocation' in cacheConfig && cacheConfig.cacheLocation) { const candidateDir = path.dirname(cacheConfig.cacheLocation); - cachePaths.add(getCustomCacheDirectory(candidateDir, rootDir)); - } else if ( - typeof cacheConfig === 'object' && - 'cacheDirectory' in cacheConfig && - cacheConfig.cacheDirectory - ) { - const candidateDir = cacheConfig.cacheDirectory; - cachePaths.add(getCustomCacheDirectory(candidateDir, rootDir)); - } else { - cachePaths.add(getDefaultCacheDirectory('webpack', rootDir)); + return getCustomCacheDirectory(candidateDir, rootDir); + } + if ('cacheDirectory' in cacheConfig && cacheConfig.cacheDirectory) { + return getCustomCacheDirectory(cacheConfig.cacheDirectory, rootDir); } } - - return cachePaths; + return getDefaultCacheDirectory(bundler, rootDir); } -export function resetPersistentCache(config: { - bundler: 'rspack'; - rootDir: string; - cacheConfigs: RspackCacheOptions[]; -}): void; - -export function resetPersistentCache(config: { - bundler: 'webpack'; - rootDir: string; - cacheConfigs: WebpackCacheOptions[]; -}): void; - export function resetPersistentCache({ bundler, rootDir, @@ -92,12 +50,13 @@ export function resetPersistentCache({ }: { bundler: 'rspack' | 'webpack'; rootDir: string; - cacheConfigs: unknown; + cacheConfigs: CacheOptions[]; }) { - const cachePaths = - bundler === 'rspack' - ? getRspackCachePaths(rootDir, cacheConfigs as RspackCacheOptions[]) - : getWebpackCachePaths(rootDir, cacheConfigs as WebpackCacheOptions[]); + const cachePaths = new Set( + cacheConfigs.map((cacheConfig) => + getCachePath(bundler, rootDir, cacheConfig) + ) + ); const warn = (msg: string) => console.warn(colorette.yellow(msg)); diff --git a/packages/repack/src/commands/start.ts b/packages/repack/src/commands/start.ts index 7bde8e1cf..2b255e094 100644 --- a/packages/repack/src/commands/start.ts +++ b/packages/repack/src/commands/start.ts @@ -93,19 +93,11 @@ export async function start( process.stdout.write(logo(packageJson.version, bundlerLabel)); if (args.resetCache) { - if (bundler === 'rspack') { - resetPersistentCache({ - bundler: 'rspack', - rootDir: cliConfig.root, - cacheConfigs: configs.map((config) => config.experiments?.cache), - }); - } else { - resetPersistentCache({ - bundler: 'webpack', - rootDir: cliConfig.root, - cacheConfigs: configs.map((config) => config.cache), - }); - } + resetPersistentCache({ + bundler, + rootDir: cliConfig.root, + cacheConfigs: configs.map((config) => config.cache), + }); } if (bundler === 'rspack' && process.env.RSPACK_PROFILE) { diff --git a/packages/repack/src/loaders/assetsLoader/assetsLoader.ts b/packages/repack/src/loaders/assetsLoader/assetsLoader.ts index 2688012ad..9fc96636b 100644 --- a/packages/repack/src/loaders/assetsLoader/assetsLoader.ts +++ b/packages/repack/src/loaders/assetsLoader/assetsLoader.ts @@ -1,6 +1,5 @@ -import type fs from 'node:fs'; import path from 'node:path'; -import util from 'node:util'; +import type { InputFileSystem } from '@rspack/core'; import { SCALABLE_ASSETS, SCALABLE_RESOLUTIONS } from '../../utils/index.js'; import { convertToRemoteAssets } from './convertToRemoteAssets.js'; import { extractAssets } from './extractAssets.js'; @@ -9,7 +8,23 @@ import { type AssetLoaderContext, getOptions } from './options.js'; import type { Asset } from './types.js'; import { collectScales, getAssetDimensions, getScaleNumber } from './utils.js'; -type AsyncFS = (typeof fs)['promises']; +function readDir(fs: InputFileSystem, dir: string) { + return new Promise((resolve, reject) => { + fs.readdir(dir, (error, files) => { + if (error) reject(error); + else resolve(files ?? []); + }); + }); +} + +function readFile(fs: InputFileSystem, file: string) { + return new Promise((resolve, reject) => { + fs.readFile(file, (error, data) => { + if (error || !data) reject(error ?? new Error(`Failed to read ${file}`)); + else resolve(data); + }); + }); +} export const raw = true; @@ -30,8 +45,8 @@ export default async function repackAssetsLoader( const isDev = !!this._compiler.options.devServer; const platform = options.platform ?? (this._compiler.options.name as string); - const readDirAsync: AsyncFS['readdir'] = util.promisify(this.fs.readdir); - const readFileAsync: AsyncFS['readFile'] = util.promisify(this.fs.readFile); + const readDirAsync = (dir: string) => readDir(this.fs, dir); + const readFileAsync = (file: string) => readFile(this.fs, file); logger.debug(`Processing asset ${this.resourcePath}`); diff --git a/packages/repack/src/loaders/babelSwcLoader/__tests__/swc.test.ts b/packages/repack/src/loaders/babelSwcLoader/__tests__/swc.test.ts index 6161d101a..605018841 100644 --- a/packages/repack/src/loaders/babelSwcLoader/__tests__/swc.test.ts +++ b/packages/repack/src/loaders/babelSwcLoader/__tests__/swc.test.ts @@ -1,5 +1,6 @@ -import { experiments, type SwcLoaderOptions } from '@rspack/core'; +import { experiments } from '@rspack/core'; import { buildFinalSwcConfig, partitionTransforms } from '../babelSwcLoader.js'; +import type { SwcConfig } from '../options.js'; import { addSwcComplementaryTransforms, getSupportedSwcConfigurableTransforms, @@ -84,7 +85,7 @@ describe('swc transforms support detection', () => { const { transformNames } = getSupportedSwcConfigurableTransforms( transforms, - baseSwcConfig as SwcLoaderOptions + baseSwcConfig as SwcConfig ); expect(transformNames).toEqual([ @@ -104,7 +105,7 @@ describe('swc transforms support detection', () => { ['transform-class-properties', { loose: true }], ['transform-private-methods', { loose: true }], ], - {} as SwcLoaderOptions + {} as SwcConfig ); expect(swcConfig.jsc?.assumptions).toEqual({ @@ -114,7 +115,7 @@ describe('swc transforms support detection', () => { }); it('applies loose mode to setSpreadProperties when not defined; preserves explicit true (snapshot)', () => { - const baseUndefined = {} as SwcLoaderOptions; + const baseUndefined = {} as SwcConfig; const { swcConfig: cfg1 } = getSupportedSwcConfigurableTransforms( [['transform-object-rest-spread', { loose: true }]], baseUndefined @@ -124,9 +125,9 @@ describe('swc transforms support detection', () => { 'object-rest-spread loose: setSpreadProperties' ); - const baseTrue: SwcLoaderOptions = { + const baseTrue: SwcConfig = { jsc: { assumptions: { setSpreadProperties: true } }, - } as SwcLoaderOptions; + } as SwcConfig; const { swcConfig: cfg2 } = getSupportedSwcConfigurableTransforms( [['transform-object-rest-spread', { loose: false }]], baseTrue @@ -138,9 +139,9 @@ describe('swc transforms support detection', () => { }); it('sets optional-chaining/nullish and for-of assumptions with loose mode and respects explicit values (snapshot)', () => { - const base: SwcLoaderOptions = { + const base: SwcConfig = { jsc: { assumptions: { noDocumentAll: true } }, - } as SwcLoaderOptions; + } as SwcConfig; const { swcConfig } = getSupportedSwcConfigurableTransforms( [ @@ -157,14 +158,14 @@ describe('swc transforms support detection', () => { }); it('updates both privateFieldsAsProperties and setPublicClassFields for private-property-in-object but does not override explicit true', () => { - const base: SwcLoaderOptions = { + const base: SwcConfig = { jsc: { assumptions: { privateFieldsAsProperties: true, setPublicClassFields: true, }, }, - } as SwcLoaderOptions; + } as SwcConfig; const { swcConfig, transformNames } = getSupportedSwcConfigurableTransforms( @@ -200,7 +201,7 @@ describe('swc transforms support detection', () => { const { transformNames } = getSupportedSwcCustomTransforms( transforms, - baseSwcConfig as SwcLoaderOptions + baseSwcConfig as SwcConfig ); expect(transformNames).toEqual([ @@ -214,7 +215,7 @@ describe('swc transforms support detection', () => { }); it('overrides react runtime and importSource from transform-react-jsx config (snapshot)', () => { - const inputConfig: SwcLoaderOptions = { + const inputConfig: SwcConfig = { jsc: { transform: { react: { runtime: 'classic', importSource: 'preact' } }, }, @@ -235,7 +236,7 @@ describe('swc transforms support detection', () => { }); it('should apply default react transform when plugin has no react transform options', () => { - const inputConfig: SwcLoaderOptions = { + const inputConfig: SwcConfig = { jsc: { transform: { react: {} }, }, @@ -252,7 +253,7 @@ describe('swc transforms support detection', () => { }); it('should preserve existing react transform config when plugin has none', () => { - const inputConfig: SwcLoaderOptions = { + const inputConfig: SwcConfig = { jsc: { transform: { react: { runtime: 'automatic', importSource: 'nativewind' }, @@ -271,7 +272,7 @@ describe('swc transforms support detection', () => { }); it('should use plugin importSource option for react transform', () => { - const inputConfig: SwcLoaderOptions = { + const inputConfig: SwcConfig = { jsc: { transform: { react: {}, @@ -295,7 +296,7 @@ describe('swc transforms support detection', () => { }); it('should use plugin importSource option for react transform and override existing importSource', () => { - const inputConfig: SwcLoaderOptions = { + const inputConfig: SwcConfig = { jsc: { transform: { react: { importSource: 'preact' }, @@ -319,7 +320,7 @@ describe('swc transforms support detection', () => { }); it('configures modules commonjs options based on provided config (snapshot)', () => { - const inputConfig: SwcLoaderOptions = {}; + const inputConfig: SwcConfig = {}; const { swcConfig } = getSupportedSwcCustomTransforms( [ [ @@ -333,7 +334,7 @@ describe('swc transforms support detection', () => { }); it('enables external helpers via transform-runtime (snapshot)', () => { - const inputConfig: SwcLoaderOptions = {}; + const inputConfig: SwcConfig = {}; const { swcConfig } = getSupportedSwcCustomTransforms( [['transform-runtime', {}]], inputConfig @@ -342,9 +343,9 @@ describe('swc transforms support detection', () => { }); it('sets exportDefaultFrom only for ecmascript parser; leaves typescript parser unchanged (snapshot)', () => { - const inputConfigTs: SwcLoaderOptions = { + const inputConfigTs: SwcConfig = { jsc: { parser: { syntax: 'typescript' } }, - } as SwcLoaderOptions; + } as SwcConfig; const { swcConfig: tsCfg } = getSupportedSwcCustomTransforms( [['proposal-export-default-from', {}]], @@ -352,9 +353,9 @@ describe('swc transforms support detection', () => { ); expect(tsCfg.jsc?.parser).toMatchSnapshot('parser: typescript unchanged'); - const inputConfigEcma: SwcLoaderOptions = { + const inputConfigEcma: SwcConfig = { jsc: { parser: { syntax: 'ecmascript' } }, - } as SwcLoaderOptions; + } as SwcConfig; const { swcConfig: ecmaCfg } = getSupportedSwcCustomTransforms( [['proposal-export-default-from', {}]], inputConfigEcma diff --git a/packages/repack/src/loaders/babelSwcLoader/babelSwcLoader.ts b/packages/repack/src/loaders/babelSwcLoader/babelSwcLoader.ts index e570473ef..fad031c2a 100644 --- a/packages/repack/src/loaders/babelSwcLoader/babelSwcLoader.ts +++ b/packages/repack/src/loaders/babelSwcLoader/babelSwcLoader.ts @@ -1,7 +1,7 @@ import type { TransformOptions } from '@babel/core'; -import type { LoaderContext, SwcLoaderOptions } from '@rspack/core'; +import type { LoaderContext } from '@rspack/core'; import { transform } from '../babelLoader/babelLoader.js'; -import type { BabelSwcLoaderOptions } from './options.js'; +import type { BabelSwcLoaderOptions, SwcConfig } from './options.js'; import { addSwcComplementaryTransforms, getSupportedSwcConfigurableTransforms, @@ -9,10 +9,8 @@ import { getSupportedSwcNormalTransforms, } from './swc.js'; import { - checkParallelModeAvailable, getExtraBabelPlugins, getProjectBabelConfig, - getProjectRootPath, getSwcParserConfig, lazyGetSwc, } from './utils.js'; @@ -30,7 +28,7 @@ export function partitionTransforms( let configurableTransforms: string[] = []; let customTransforms: string[] = []; - let swcConfig: SwcLoaderOptions = { + let swcConfig: SwcConfig = { jsc: { parser: getSwcParserConfig(filename), transform: { react: { useBuiltins: true } }, @@ -59,7 +57,7 @@ export function partitionTransforms( } export interface BuildFinalSwcConfigOptions { - swcConfig: SwcLoaderOptions; + swcConfig: SwcConfig; includedSwcTransforms: string[]; lazyImports: boolean | string[]; sourceType: 'module' | 'script' | undefined; @@ -67,7 +65,7 @@ export interface BuildFinalSwcConfigOptions { export function buildFinalSwcConfig( options: BuildFinalSwcConfigOptions -): SwcLoaderOptions { +): SwcConfig { const { swcConfig, includedSwcTransforms, lazyImports, sourceType } = options; return { ...swcConfig, @@ -100,18 +98,13 @@ export default async function babelSwcLoader( ) { this.cacheable(); const callback = this.async(); - const logger = this.getLogger('BabelSwcLoader'); const options = this.getOptions(); - if (!options.hideParallelModeWarning) { - checkParallelModeAvailable(this, logger); - } - const inputSourceMap: InputSourceMap = sourceMap ? JSON.parse(sourceMap) : undefined; const lazyImports = options.lazyImports ?? false; - const projectRoot = getProjectRootPath(this); + const projectRoot = this.rootContext; const withSourceMaps = this.resourcePath.match(/node_modules/) ? false @@ -168,7 +161,7 @@ export default async function babelSwcLoader( filename: this.resourcePath, configFile: false, swcrc: false, - root: projectRoot ?? babelConfig.root ?? undefined, + root: projectRoot, minify: false, sourceMaps: withSourceMaps, inputSourceMap: withSourceMaps diff --git a/packages/repack/src/loaders/babelSwcLoader/options.ts b/packages/repack/src/loaders/babelSwcLoader/options.ts index 674cf51a8..7740abbb3 100644 --- a/packages/repack/src/loaders/babelSwcLoader/options.ts +++ b/packages/repack/src/loaders/babelSwcLoader/options.ts @@ -1,12 +1,21 @@ import type { TransformOptions } from '@babel/core'; -import type { SwcLoaderOptions } from '@rspack/core'; +import type { SwcLoaderJscConfig, SwcLoaderOptions } from '@rspack/core'; import type { HermesParserOptions } from '../babelLoader/options.js'; +/** + * `SwcLoaderOptions` is a union discriminated on `detectSyntax`. The loader + * always sets `jsc.parser` itself and never uses `detectSyntax: 'auto'`, + * so it works on the non-union member only. + */ +export type SwcConfig = Omit & { + detectSyntax?: false; + jsc?: SwcLoaderJscConfig; +}; + type BabelOverrides = TransformOptions; -type SwcOverrides = Omit; +type SwcOverrides = Omit; export type BabelSwcLoaderOptions = { - hideParallelModeWarning?: boolean; lazyImports?: boolean | string[]; babelOverrides?: BabelOverrides; swcOverrides?: SwcOverrides; diff --git a/packages/repack/src/loaders/babelSwcLoader/swc.ts b/packages/repack/src/loaders/babelSwcLoader/swc.ts index 858e435be..6a6b3b628 100644 --- a/packages/repack/src/loaders/babelSwcLoader/swc.ts +++ b/packages/repack/src/loaders/babelSwcLoader/swc.ts @@ -1,4 +1,4 @@ -import type { SwcLoaderOptions } from '@rspack/core'; +import type { SwcConfig } from './options.js'; const SWC_SUPPORTED_NORMAL_RULES = new Set([ 'transform-block-scoping', @@ -80,9 +80,7 @@ export function addSwcComplementaryTransforms( return finalTransforms; } -function getTransformRuntimeConfig( - swcConfig: SwcLoaderOptions -): SwcLoaderOptions { +function getTransformRuntimeConfig(swcConfig: SwcConfig): SwcConfig { return { ...swcConfig, jsc: { @@ -92,9 +90,7 @@ function getTransformRuntimeConfig( }; } -function getTransformReactDevelopmentConfig( - swcConfig: SwcLoaderOptions -): SwcLoaderOptions { +function getTransformReactDevelopmentConfig(swcConfig: SwcConfig): SwcConfig { return { ...swcConfig, jsc: { @@ -111,9 +107,9 @@ function getTransformReactDevelopmentConfig( } function getTransformReactRuntimeConfig( - swcConfig: SwcLoaderOptions, + swcConfig: SwcConfig, reactRuntimeConfig: Record = {} -): SwcLoaderOptions { +): SwcConfig { return { ...swcConfig, jsc: { @@ -137,13 +133,13 @@ function getTransformReactRuntimeConfig( } function getTransformModulesCommonjsConfig( - swcConfig: SwcLoaderOptions, + swcConfig: SwcConfig, moduleConfig: Record = { strict: true, strictMode: true, allowTopLevelThis: true, } -): SwcLoaderOptions { +): SwcConfig { return { ...swcConfig, module: { @@ -157,9 +153,7 @@ function getTransformModulesCommonjsConfig( }; } -function getTransformExportDefaultFromConfig( - swcConfig: SwcLoaderOptions -): SwcLoaderOptions { +function getTransformExportDefaultFromConfig(swcConfig: SwcConfig): SwcConfig { if (swcConfig.jsc?.parser?.syntax === 'typescript') { return swcConfig; } @@ -176,9 +170,7 @@ function getTransformExportDefaultFromConfig( }; } -function getTransformDynamicImportConfig( - swcConfig: SwcLoaderOptions -): SwcLoaderOptions { +function getTransformDynamicImportConfig(swcConfig: SwcConfig): SwcConfig { return { ...swcConfig, jsc: { @@ -194,9 +186,9 @@ function getTransformDynamicImportConfig( } function getTransformClassPropertiesConfig( - swcConfig: SwcLoaderOptions, + swcConfig: SwcConfig, ruleConfig: Record = { loose: false } -): SwcLoaderOptions { +): SwcConfig { return { ...swcConfig, jsc: { @@ -211,9 +203,9 @@ function getTransformClassPropertiesConfig( } function getTransformPrivateMethodsPropertyConfig( - swcConfig: SwcLoaderOptions, + swcConfig: SwcConfig, ruleConfig: Record = { loose: false } -): SwcLoaderOptions { +): SwcConfig { return { ...swcConfig, jsc: { @@ -231,9 +223,9 @@ function getTransformPrivateMethodsPropertyConfig( } function getTransformObjectRestSpreadConfig( - swcConfig: SwcLoaderOptions, + swcConfig: SwcConfig, ruleConfig: Record = { loose: false } -): SwcLoaderOptions { +): SwcConfig { return { ...swcConfig, jsc: { @@ -248,9 +240,9 @@ function getTransformObjectRestSpreadConfig( } function getTransformOptionalChainingNullishCoalescingConfig( - swcConfig: SwcLoaderOptions, + swcConfig: SwcConfig, ruleConfig: Record = { loose: false } -): SwcLoaderOptions { +): SwcConfig { return { ...swcConfig, jsc: { @@ -265,9 +257,9 @@ function getTransformOptionalChainingNullishCoalescingConfig( } function getTransformForOfConfig( - swcConfig: SwcLoaderOptions, + swcConfig: SwcConfig, ruleConfig: Record = { loose: false } -): SwcLoaderOptions { +): SwcConfig { return { ...swcConfig, jsc: { @@ -282,9 +274,7 @@ function getTransformForOfConfig( }; } -function getTransformTypescriptConfig( - swcConfig: SwcLoaderOptions -): SwcLoaderOptions { +function getTransformTypescriptConfig(swcConfig: SwcConfig): SwcConfig { // passthrough return swcConfig; } @@ -323,7 +313,7 @@ export function getSupportedSwcNormalTransforms( export function getSupportedSwcConfigurableTransforms( transforms: [string, Record | undefined][], - swcConfig: SwcLoaderOptions + swcConfig: SwcConfig ) { const transformNames = transforms .filter(([transform]) => SWC_SUPPORTED_CONFIGURABLE_RULES.has(transform)) @@ -342,7 +332,7 @@ export function getSupportedSwcConfigurableTransforms( export function getSupportedSwcCustomTransforms( transforms: [string, Record | undefined][], - swcConfig: SwcLoaderOptions + swcConfig: SwcConfig ) { const transformNames = transforms .filter(([transform]) => SWC_SUPPORTED_CUSTOM_RULES.has(transform)) diff --git a/packages/repack/src/loaders/babelSwcLoader/utils.ts b/packages/repack/src/loaders/babelSwcLoader/utils.ts index a6f67b0d4..cfbc9e677 100644 --- a/packages/repack/src/loaders/babelSwcLoader/utils.ts +++ b/packages/repack/src/loaders/babelSwcLoader/utils.ts @@ -1,5 +1,4 @@ import { loadOptions } from '@babel/core'; -import type Rspack from '@rspack/core'; import type { experiments, LoaderContext, @@ -8,7 +7,6 @@ import type { import { importDefaultESM } from '../../helpers/index.js'; type Swc = (typeof experiments)['swc']; -type Logger = ReturnType; export function isTypeScriptSource(fileName: string) { return !!fileName && fileName.endsWith('.ts'); @@ -79,44 +77,6 @@ function isWebpackBackend(loaderContext: LoaderContext) { return false; } -const disabledParalleModeWarning = [ - 'You have enabled `experiments.parallelLoader` but forgot to enable it for this loader.', - 'To enable parallel mode for this loader you need to add `parallel: true` to the loader rule.', - 'See how to do it in the official Rspack docs:', - 'https://rspack.rs/config/experiments#experimentsparallelloader.', - 'If this is intentional, you can disable this warning', - 'by setting `hideParallelModeWarning` in the loader options.', -].join(' '); - -let parallelModeWarningDisplayed = false; - -export function checkParallelModeAvailable( - loaderContext: LoaderContext, - logger: Logger -) { - // only Rspack supports parallel mode - if (parallelModeWarningDisplayed || isWebpackBackend(loaderContext)) { - return; - } - // in parallel mode compiler.options.experiments are not available - // but since we're already running in parallel mode, we can ignore this check - if (loaderContext._compiler.options?.experiments?.parallelLoader) { - parallelModeWarningDisplayed = true; - logger.warn(disabledParalleModeWarning); - } -} - -export function getProjectRootPath( - loaderContext: LoaderContext -): string | undefined { - // parallel loaders in Rspack had a bug where rootContext - // was the same as context, so we check if they are different - if (loaderContext.rootContext !== loaderContext.context) { - return loaderContext.rootContext; - } - return undefined; -} - function safelyResolve(path: string, from: string): string | null { try { return require.resolve(path, { paths: [from] }); @@ -126,25 +86,12 @@ function safelyResolve(path: string, from: string): string | null { } async function getSwcModule(loaderContext: LoaderContext): Promise { - const projectRoot = getProjectRootPath(loaderContext) ?? process.cwd(); - const isWebpack = isWebpackBackend(loaderContext); - if (!isWebpack) { - // happy path - rspack & exposed swc - // use optional chaining to avoid type errors when using parallel loader - if (loaderContext._compiler.rspack?.experiments?.swc) { - return loaderContext._compiler.rspack.experiments.swc; - } - // fallback to checking for `@rspack/core` installed in the project - // use optional chaining to avoid type errors when there is no experiments.swc - const rspackCorePath = safelyResolve('@rspack/core', projectRoot); - if (rspackCorePath && !isWebpack) { - const rspack = await importDefaultESM(rspackCorePath); - return rspack.experiments?.swc ?? null; - } + if (!isWebpackBackend(loaderContext)) { + // Rspack exposes its bundled SWC, also to parallel loaders + return loaderContext._compiler.rspack.experiments.swc; } - // fallback to checking for `@swc/core` installed in the project - // this can be in both webpack & rspack projects - const swcCorePath = safelyResolve('@swc/core', projectRoot); + // webpack - use `@swc/core` installed in the project + const swcCorePath = safelyResolve('@swc/core', loaderContext.rootContext); if (swcCorePath) { const swc = await importDefaultESM(swcCorePath); return swc; diff --git a/packages/repack/src/plugins/RepackTargetPlugin/RepackTargetPlugin.ts b/packages/repack/src/plugins/RepackTargetPlugin/RepackTargetPlugin.ts index a06c0b7ad..a9a30592e 100644 --- a/packages/repack/src/plugins/RepackTargetPlugin/RepackTargetPlugin.ts +++ b/packages/repack/src/plugins/RepackTargetPlugin/RepackTargetPlugin.ts @@ -117,7 +117,9 @@ export class RepackTargetPlugin { compiler, { chunkId: chunk.id ?? undefined, - hmrEnabled: !!compiler.options.devServer?.hot, + hmrEnabled: compiler.options.devServer + ? !!compiler.options.devServer.hot + : false, } ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89a6bd5fe..2f1d02b40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,10 +13,10 @@ catalogs: specifier: ^1.0.3 version: 1.0.3 '@rspack/core': - specifier: 1.6.0 - version: 1.6.0 + specifier: ^2.2.8 + version: 2.2.8 '@swc/helpers': - specifier: ~0.5.17 + specifier: ^0.5.23 version: 0.5.23 '@types/node': specifier: ^22.20.5 @@ -245,10 +245,10 @@ importers: version: 0.86.3 '@rsdoctor/rspack-plugin': specifier: 1.6.4 - version: 1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + version: 1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@svgr/webpack': specifier: ^8.1.0 version: 8.1.0(typescript@7.0.2) @@ -281,7 +281,7 @@ importers: version: 8.5.23 postcss-loader: specifier: ^8.1.1 - version: 8.2.1(@rspack/core@1.6.0(@swc/helpers@0.5.23))(postcss@8.5.23)(typescript@7.0.2)(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + version: 8.2.1(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(postcss@8.5.23)(typescript@7.0.2)(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) react-native-test-app: specifier: catalog:testers version: 5.4.5(@expo/config-plugins@57.0.10(typescript@7.0.2))(@react-native-community/cli-types@20.2.0)(memfs@4.64.0)(metro@0.84.6)(react-native@0.86.3(@babel/core@7.29.7)(@react-native-community/cli@20.2.0(typescript@7.0.2))(@types/react@19.2.17)(react@19.2.8))(react@19.2.8) @@ -320,7 +320,7 @@ importers: version: link:../../packages/plugin-reanimated '@module-federation/enhanced': specifier: catalog:testers - version: 2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) + version: 2.9.2(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) expo: specifier: catalog:expo57 version: 57.0.27(@babel/core@7.29.7)(@expo/metro-runtime@57.0.16)(expo-router@57.0.25)(react-dom@19.2.8(react@19.2.8))(react-native-worklets@0.11.3(@babel/core@7.29.7)(react-native@0.86.3(@babel/core@7.29.7)(@react-native-community/cli@20.2.0(typescript@7.0.2))(@types/react@19.2.17)(react@19.2.8))(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native-community/cli@20.2.0(typescript@7.0.2))(@types/react@19.2.17)(react@19.2.8))(react@19.2.8)(typescript@7.0.2) @@ -384,7 +384,7 @@ importers: version: 0.86.3(@react-native-community/cli@20.2.0(typescript@7.0.2)) '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@types/react': specifier: catalog:testers version: 19.2.17 @@ -408,7 +408,7 @@ importers: version: link:../../packages/repack-expo '@module-federation/enhanced': specifier: catalog:testers - version: 2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) + version: 2.9.2(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) expo: specifier: catalog:expo57 version: 57.0.27(@babel/core@7.29.7)(@expo/metro-runtime@57.0.16)(expo-router@57.0.25)(react-dom@19.2.8(react@19.2.8))(react-native-worklets@0.11.3(@babel/core@7.29.7)(react-native@0.86.3(@babel/core@7.29.7)(@react-native-community/cli@20.2.0(typescript@7.0.2))(@types/react@19.2.17)(react@19.2.8))(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native-community/cli@20.2.0(typescript@7.0.2))(@types/react@19.2.17)(react@19.2.8))(react@19.2.8)(typescript@7.0.2) @@ -448,7 +448,7 @@ importers: version: 0.86.3(@react-native-community/cli@20.2.0(typescript@7.0.2)) '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@types/react': specifier: catalog:testers version: 19.2.17 @@ -466,7 +466,7 @@ importers: version: link:../../packages/repack '@module-federation/enhanced': specifier: catalog:testers - version: 2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) + version: 2.9.2(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) '@module-federation/runtime': specifier: catalog:testers version: 2.9.2 @@ -518,10 +518,10 @@ importers: version: 0.86.3 '@rsdoctor/rspack-plugin': specifier: 1.6.4 - version: 1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) + version: 1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@swc/helpers': specifier: 'catalog:' version: 0.5.23 @@ -667,7 +667,7 @@ importers: version: link:../repack '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@types/node': specifier: 'catalog:' version: 22.20.5 @@ -686,7 +686,7 @@ importers: version: link:../repack '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@types/dedent': specifier: 0.7.2 version: 0.7.2 @@ -714,7 +714,7 @@ importers: version: link:../repack '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -820,13 +820,13 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@module-federation/enhanced': specifier: catalog:testers - version: 2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) + version: 2.9.2(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) '@module-federation/sdk': specifier: 2.8.0 version: 2.8.0 '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@swc/helpers': specifier: 'catalog:' version: 0.5.23 @@ -869,6 +869,9 @@ importers: jest: specifier: ^29.7.0 version: 29.7.0(@types/node@22.20.5) + jest-environment-node: + specifier: ^29.7.0 + version: 29.7.0 react: specifier: 'catalog:' version: 19.2.8 @@ -905,13 +908,13 @@ importers: version: link:../repack '@module-federation/enhanced': specifier: catalog:testers - version: 2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) + version: 2.9.2(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) '@react-native/babel-preset': specifier: catalog:testers version: 0.86.3(@babel/core@7.29.7) '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@types/node': specifier: 'catalog:' version: 22.20.5 @@ -950,7 +953,7 @@ importers: version: link:../../packages/repack '@module-federation/enhanced': specifier: 2.0.1 - version: 2.0.1(@rspack/core@1.6.0(@swc/helpers@0.5.23))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))) + version: 2.0.1(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))) '@react-native/babel-preset-current': specifier: npm:@react-native/babel-preset@0.88.0-rc.3 version: '@react-native/babel-preset@0.88.0-rc.3' @@ -959,7 +962,7 @@ importers: version: '@react-native/babel-preset@0.87.0' '@rspack/core': specifier: 'catalog:' - version: 1.6.0(@swc/helpers@0.5.23) + version: 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) '@swc/core': specifier: ^1.15.46 version: 1.15.46(@swc/helpers@0.5.23) @@ -2573,9 +2576,6 @@ packages: webpack: optional: true - '@module-federation/error-codes@0.21.2': - resolution: {integrity: sha512-mGbPAAApgjmQUl4J7WAt20aV04a26TyS21GDEpOGXFEQG5FqmZnSJ6FqB8K19HgTKioBT1+fF/Ctl5bGGao/EA==} - '@module-federation/error-codes@2.0.1': resolution: {integrity: sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==} @@ -2628,36 +2628,24 @@ packages: vue-tsc: optional: true - '@module-federation/runtime-core@0.21.2': - resolution: {integrity: sha512-LtDnccPxjR8Xqa3daRYr1cH/6vUzK3mQSzgvnfsUm1fXte5syX4ftWw3Eu55VdqNY3yREFRn77AXdu9PfPEZRw==} - '@module-federation/runtime-core@2.0.1': resolution: {integrity: sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==} '@module-federation/runtime-core@2.9.2': resolution: {integrity: sha512-S9roTDqLtAWaaDBuug69ZnXXGEx0pUq/yG06J759bjRgfAg2P9+dWEv1q7rB2eMIp7HH4L6s3ColDRYdL6tJ9w==} - '@module-federation/runtime-tools@0.21.2': - resolution: {integrity: sha512-SgG9NWTYGNYcHSd5MepO3AXf6DNXriIo4sKKM4mu4RqfYhHyP+yNjnF/gvYJl52VD61g0nADmzLWzBqxOqk2tg==} - '@module-federation/runtime-tools@2.0.1': resolution: {integrity: sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==} '@module-federation/runtime-tools@2.9.2': resolution: {integrity: sha512-rhOvimSLLnnocfOVUfAzH2xDq1pHMw4f/nSC+JQhSztEgP/1UslPPvcBcenx3B8/6CoYmBbGa2OIBTJ225ZHAg==} - '@module-federation/runtime@0.21.2': - resolution: {integrity: sha512-97jlOx4RAnAHMBTfgU5FBK6+V/pfT6GNX0YjSf8G+uJ3lFy74Y6kg/BevEkChTGw5waCLAkw/pw4LmntYcNN7g==} - '@module-federation/runtime@2.0.1': resolution: {integrity: sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==} '@module-federation/runtime@2.9.2': resolution: {integrity: sha512-1lPZVy7TkMTTBMkkjgQt7jA+9FAx226yQqEz+X0lFAIbpxIWfpzNQLD+7IydEe83ZhDJpK3cv/9bn3jjQBZeqQ==} - '@module-federation/sdk@0.21.2': - resolution: {integrity: sha512-t2vHSJ1a9zjg7LLJoEghcytNLzeFCqOat5TbXTav5dgU0xXw82Cf0EfLrxiJL6uUpgbtyvUdqqa2DVAvMPjiiA==} - '@module-federation/sdk@2.0.1': resolution: {integrity: sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==} @@ -2673,18 +2661,12 @@ packages: '@module-federation/third-party-dts-extractor@2.9.2': resolution: {integrity: sha512-FKJVGx+/jIe16RfmwoyIDVMPAttIFJv6AJCLkKf05IRNvI3RJFqQ1tLP1YjcfGuumCbYuWGa4QKnMla7YjVpqg==} - '@module-federation/webpack-bundler-runtime@0.21.2': - resolution: {integrity: sha512-06R/NDY6Uh5RBIaBOFwYWzJCf1dIiQd/DFHToBVhejUT3ZFG7GzHEPIIsAGqMzne/JSmVsvjlXiJu7UthQ6rFA==} - '@module-federation/webpack-bundler-runtime@2.0.1': resolution: {integrity: sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==} '@module-federation/webpack-bundler-runtime@2.9.2': resolution: {integrity: sha512-dDtWiYcCWWgm/mCS7L4KfDHsyr7HwDRnHHS2bgl1H7RQfH4WAi706gT2hhzmV272PI33V7qJHN7Go1d/BamN0Q==} - '@napi-rs/wasm-runtime@1.0.7': - resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} - '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} peerDependencies: @@ -3380,44 +3362,22 @@ packages: typescript: optional: true - '@rspack/binding-darwin-arm64@1.6.0': - resolution: {integrity: sha512-IrigOWnGvQgugsTZgf3dB5uko+y+lkNLYg/8w0DiobxkWhpLO97RAeR1w0ofIPXYVu3UWVf7dgHj3PjTqjC9Tw==} - cpu: [arm64] - os: [darwin] - '@rspack/binding-darwin-arm64@2.2.8': resolution: {integrity: sha512-d6GuY/k7kJk7SOXmruIz0m+2fIXaLv2SnBHEYsbvBzE7ZO6QXq7fSABWFWNnSnNu+brYHA5Dr/skV81bXgTTCw==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.6.0': - resolution: {integrity: sha512-UYz+Y1XqbHGnkUOsaZRuwiuQaQaQ5rEPSboBPlIVDtblwmB71yxo3ET0nSoUhz8L/WXqQoARiraTCxUP6bvSIg==} - cpu: [x64] - os: [darwin] - '@rspack/binding-darwin-x64@2.2.8': resolution: {integrity: sha512-xCVou/jJASjEAjwy1T3hPJcJqA5QZASJfUwHqEk+nA0v44MagwH8tM8lsOvRfhzR7N2+YFac1rfZOUT8uM3awg==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.6.0': - resolution: {integrity: sha512-Jr7aaxrtwOnh7ge7tZP+Mjpo6uNltvQisL25WcjpP+8PnPT0C9jziKDJso7KxeOINXnQ2yRn2h65+HBNb7FQig==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rspack/binding-linux-arm64-gnu@2.2.8': resolution: {integrity: sha512-Zy/ss6YAQTjOWKDkcWrbKtu+pySltqT22wn68nlrWKygPWLNmMdU5anlsnwRTIuQ3MF0YJRS42ARauVtlqvRQw==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@1.6.0': - resolution: {integrity: sha512-hl17reUhkjgkcLao6ZvNiSRQFGFykqUpIj1//v/XtVd/2XAZ0Kt7jv9UUeaR+2zY8piH+tgCkwgefmjmajMeFg==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rspack/binding-linux-arm64-musl@2.2.8': resolution: {integrity: sha512-lxgp5O8PhL3St9p82llHoNoeWzp9jltW5S9F00p00XPJZHUIuxbwfLSzn/6Wg86USEmafLoBkyD9CM8rBd3SNQ==} cpu: [arm64] @@ -3448,83 +3408,40 @@ packages: os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-gnu@1.6.0': - resolution: {integrity: sha512-xdlb+ToerFU/YggndCfIrZI/S/C80CP9ZFw6lhnEFSTJDAG88KptxstsoKUh8YzyPTD45CYaOjYNtUtiv0nScg==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rspack/binding-linux-x64-gnu@2.2.8': resolution: {integrity: sha512-dncEI515NoPXh3zzWk06Rb3mhSV76myiFKqXiJ8K4fVAe5x/RlweMhvPhHhm7RnIMeBld7BeStzOqj38XFsWGA==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@1.6.0': - resolution: {integrity: sha512-IkXEW/FBPPz4EJJTLNZvA+94aLaW2HgUMYu7zCIw5YMc9JJ/UXexY1zjX/A7yidsCiZCRy/ZrB+veFJ5FkZv7w==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rspack/binding-linux-x64-musl@2.2.8': resolution: {integrity: sha512-pfFyU03PjD0GaQG8zOQOHwq51rrJZetXjTGpMmz7iA1hq/f9lChJsDWrC8/7VXeQLwBofLZlOODqe8OM8OBzgA==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@1.6.0': - resolution: {integrity: sha512-XGwX35XXnoTYVUGwDBsKNOkkk/yUsT/RF59u9BwT3QBM5eSXk767xVw/ZeiiyJf5YfI/52HDW2E4QZyvlYyv7g==} - cpu: [wasm32] - '@rspack/binding-wasm32-wasi@2.2.8': resolution: {integrity: sha512-3mOJuZTrF56jOh/GD9chLMJKbzPZ6Ty2OIML7+lLz0Yk2XS/xWRfLn85Dmnkb/O6UF65x7+p8VPAIZlBtLTclw==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.6.0': - resolution: {integrity: sha512-HOA/U7YC6EB74CpIrT2GrvPgd+TLr0anNuOp/8omw9hH1jjsP5cjUMgWeAGmWyXWxwoS8rRJ0xhRA+UIe3cL3g==} - cpu: [arm64] - os: [win32] - '@rspack/binding-win32-arm64-msvc@2.2.8': resolution: {integrity: sha512-Cu/RMZT/16s+67xhl6X1pswetL3GLSQl+LnugKRh08Ul21A/tR7vxC4g4aih4u9k5SXCAngxFUt8zAjKnHIBqA==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.6.0': - resolution: {integrity: sha512-ThczdltBOFcq+IrTflCE+8q0GvKoISt6pTupkuGnI1/bCnqhCxPP6kx8Z06fdJUFMhvBtpZa0gDJvhh3JBZrKA==} - cpu: [ia32] - os: [win32] - '@rspack/binding-win32-ia32-msvc@2.2.8': resolution: {integrity: sha512-H/erd6di8OapZhhM0raA/7XduPn9jusfLMeO1XF+AmF9WF3HzHgMjha1j+KwtPgQnaH69w6AhY+G2472VIwQmw==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.6.0': - resolution: {integrity: sha512-Bhyvsh1m6kIpr1vqZlcdUDUTh0bheRe9SF+f6jw0kPDPbh8FfrRbshPKmRHpRZAUHt20NqgUKR2z2BaKb0IJvQ==} - cpu: [x64] - os: [win32] - '@rspack/binding-win32-x64-msvc@2.2.8': resolution: {integrity: sha512-BziHSUlIQM0MliCqdcHuBXSkQGtPoHQTXJce7fsgnTAzQFgPeog92qTNezYI4IrQ7pQouyiVJ2HPieUbVPRKQQ==} cpu: [x64] os: [win32] - '@rspack/binding@1.6.0': - resolution: {integrity: sha512-RqlCjvWg/LkJjHpsbI48ebo2SYpIBJsV1eh9SEMfXo1batAPvB5grhAbLX0MRUOtzuQOnZMCDGdr2v7l2L8Siw==} - '@rspack/binding@2.2.8': resolution: {integrity: sha512-c9flkSua3khHnOKBCRk8BkHGOwU9YB7niv+5JfQXiLZIvJmgKsZ7PD8QrFklMhsJT3oVAc6c9GN7/wy1YkACjA==} - '@rspack/core@1.6.0': - resolution: {integrity: sha512-u2GDSToEhmgIsy0QbOPA81i9tu87J2HgSsRA3HHZfWIR8Vt8KdlAriQnG8CatDnvFSY/UQEumVf5Z1HUAQwxCg==} - engines: {node: '>=18.12.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - '@rspack/core@2.2.8': resolution: {integrity: sha512-JugsVrnbMGNYzMH++7gR9enygpP/lAo9PbVRq3XmJg0ryIvCpST0XJjBcccaSjYaaPamsjrddihmgVLMFp+yXw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3537,10 +3454,6 @@ packages: '@swc/helpers': optional: true - '@rspack/lite-tapable@1.0.1': - resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} - engines: {node: '>=16.0.0'} - '@rspack/plugin-react-refresh@1.0.0': resolution: {integrity: sha512-WvXkLewW5G0Mlo5H1b251yDh5FFiH4NDAbYlFpvFjcuXX2AchZRf9zdw57BDE/ADyWsJgA8kixN/zZWBTN3iYA==} peerDependencies: @@ -11071,7 +10984,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.20.5 + '@types/node': 26.1.1 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -11089,7 +11002,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.20.5 + '@types/node': 26.1.1 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -11501,7 +11414,7 @@ snapshots: - bufferutil - utf-8-validate - '@module-federation/enhanced@2.0.1(@rspack/core@1.6.0(@swc/helpers@0.5.23))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23)))': + '@module-federation/enhanced@2.0.1(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23)))': dependencies: '@module-federation/bridge-react-webpack-plugin': 2.0.1 '@module-federation/cli': 2.0.1(typescript@7.0.2) @@ -11511,7 +11424,7 @@ snapshots: '@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@7.0.2) - '@module-federation/rspack': 2.0.1(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2) + '@module-federation/rspack': 2.0.1(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2) '@module-federation/runtime-tools': 2.0.1 '@module-federation/sdk': 2.0.1 btoa: 1.2.1 @@ -11529,7 +11442,7 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4)': + '@module-federation/enhanced@2.9.2(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4)': dependencies: '@module-federation/bridge-react-webpack-plugin': 2.9.2 '@module-federation/cli': 2.9.2(typescript@7.0.2) @@ -11538,7 +11451,7 @@ snapshots: '@module-federation/inject-external-runtime-core-plugin': 2.9.2(@module-federation/runtime-tools@2.9.2) '@module-federation/managers': 2.9.2 '@module-federation/manifest': 2.9.2(typescript@7.0.2) - '@module-federation/rspack': 2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2) + '@module-federation/rspack': 2.9.2(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2) '@module-federation/runtime-tools': 2.9.2 '@module-federation/sdk': 2.9.2 '@module-federation/webpack-bundler-runtime': 2.9.2 @@ -11552,8 +11465,6 @@ snapshots: - bufferutil - utf-8-validate - '@module-federation/error-codes@0.21.2': {} - '@module-federation/error-codes@2.0.1': {} '@module-federation/error-codes@2.9.2': {} @@ -11602,7 +11513,7 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/rspack@2.0.1(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)': + '@module-federation/rspack@2.0.1(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2)': dependencies: '@module-federation/bridge-react-webpack-plugin': 2.0.1 '@module-federation/dts-plugin': 2.0.1(typescript@7.0.2) @@ -11611,7 +11522,7 @@ snapshots: '@module-federation/manifest': 2.0.1(typescript@7.0.2) '@module-federation/runtime-tools': 2.0.1 '@module-federation/sdk': 2.0.1 - '@rspack/core': 1.6.0(@swc/helpers@0.5.23) + '@rspack/core': 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) btoa: 1.2.1 optionalDependencies: typescript: 7.0.2 @@ -11621,7 +11532,7 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/rspack@2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)': + '@module-federation/rspack@2.9.2(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(typescript@7.0.2)': dependencies: '@module-federation/bridge-react-webpack-plugin': 2.9.2 '@module-federation/dts-plugin': 2.9.2(typescript@7.0.2) @@ -11630,18 +11541,13 @@ snapshots: '@module-federation/manifest': 2.9.2(typescript@7.0.2) '@module-federation/runtime-tools': 2.9.2 '@module-federation/sdk': 2.9.2 - '@rspack/core': 1.6.0(@swc/helpers@0.5.23) + '@rspack/core': 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) optionalDependencies: typescript: 7.0.2 transitivePeerDependencies: - bufferutil - utf-8-validate - '@module-federation/runtime-core@0.21.2': - dependencies: - '@module-federation/error-codes': 0.21.2 - '@module-federation/sdk': 0.21.2 - '@module-federation/runtime-core@2.0.1': dependencies: '@module-federation/error-codes': 2.0.1 @@ -11652,11 +11558,6 @@ snapshots: '@module-federation/error-codes': 2.9.2 '@module-federation/sdk': 2.9.2 - '@module-federation/runtime-tools@0.21.2': - dependencies: - '@module-federation/runtime': 0.21.2 - '@module-federation/webpack-bundler-runtime': 0.21.2 - '@module-federation/runtime-tools@2.0.1': dependencies: '@module-federation/runtime': 2.0.1 @@ -11667,12 +11568,6 @@ snapshots: '@module-federation/runtime': 2.9.2 '@module-federation/webpack-bundler-runtime': 2.9.2 - '@module-federation/runtime@0.21.2': - dependencies: - '@module-federation/error-codes': 0.21.2 - '@module-federation/runtime-core': 0.21.2 - '@module-federation/sdk': 0.21.2 - '@module-federation/runtime@2.0.1': dependencies: '@module-federation/error-codes': 2.0.1 @@ -11685,8 +11580,6 @@ snapshots: '@module-federation/runtime-core': 2.9.2 '@module-federation/sdk': 2.9.2 - '@module-federation/sdk@0.21.2': {} - '@module-federation/sdk@2.0.1': {} '@module-federation/sdk@2.8.0': {} @@ -11701,11 +11594,6 @@ snapshots: '@module-federation/third-party-dts-extractor@2.9.2': {} - '@module-federation/webpack-bundler-runtime@0.21.2': - dependencies: - '@module-federation/runtime': 0.21.2 - '@module-federation/sdk': 0.21.2 - '@module-federation/webpack-bundler-runtime@2.0.1': dependencies: '@module-federation/runtime': 2.0.1 @@ -11717,13 +11605,6 @@ snapshots: '@module-federation/runtime': 2.9.2 '@module-federation/sdk': 2.9.2 - '@napi-rs/wasm-runtime@1.0.7': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.3 - optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': dependencies: '@emnapi/core': 1.11.3 @@ -12711,13 +12592,13 @@ snapshots: '@rsdoctor/client@1.6.4': {} - '@rsdoctor/core@1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': + '@rsdoctor/core@1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': dependencies: '@rsbuild/plugin-check-syntax': 1.6.1(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2)) - '@rsdoctor/graph': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/sdk': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/utils': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/graph': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/sdk': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/utils': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) '@rspack/resolver': 0.2.8(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) browserslist-load-config: 1.0.3 es-toolkit: 1.50.0 @@ -12735,13 +12616,13 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/core@1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4)': + '@rsdoctor/core@1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4)': dependencies: '@rsbuild/plugin-check-syntax': 1.6.1(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2)) - '@rsdoctor/graph': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/sdk': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/utils': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/graph': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/sdk': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/utils': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) '@rspack/resolver': 0.2.8(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) browserslist-load-config: 1.0.3 es-toolkit: 1.50.0 @@ -12759,10 +12640,10 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/graph@1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': + '@rsdoctor/graph@1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': dependencies: - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/utils': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/utils': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) es-toolkit: 1.50.0 path-browserify: 1.0.1 source-map: 0.7.6 @@ -12770,10 +12651,10 @@ snapshots: - '@rspack/core' - webpack - '@rsdoctor/graph@1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4)': + '@rsdoctor/graph@1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4)': dependencies: - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/utils': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/utils': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) es-toolkit: 1.50.0 path-browserify: 1.0.1 source-map: 0.7.6 @@ -12781,15 +12662,15 @@ snapshots: - '@rspack/core' - webpack - '@rsdoctor/rspack-plugin@1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': + '@rsdoctor/rspack-plugin@1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': dependencies: - '@rsdoctor/core': 1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/graph': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/sdk': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/utils': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/core': 1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/graph': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/sdk': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/utils': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) optionalDependencies: - '@rspack/core': 1.6.0(@swc/helpers@0.5.23) + '@rspack/core': 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -12799,15 +12680,15 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/rspack-plugin@1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4)': + '@rsdoctor/rspack-plugin@1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4)': dependencies: - '@rsdoctor/core': 1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/graph': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/sdk': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/utils': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/core': 1.6.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@rsbuild/core@2.2.12(@module-federation/runtime-tools@2.9.2))(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/graph': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/sdk': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/utils': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) optionalDependencies: - '@rspack/core': 1.6.0(@swc/helpers@0.5.23) + '@rspack/core': 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -12817,12 +12698,12 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/sdk@1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': + '@rsdoctor/sdk@1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': dependencies: '@rsdoctor/client': 1.6.4 - '@rsdoctor/graph': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) - '@rsdoctor/utils': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/graph': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/utils': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) launch-editor: 2.14.1 safer-buffer: 2.1.2 socket.io: 4.8.1 @@ -12834,12 +12715,12 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/sdk@1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4)': + '@rsdoctor/sdk@1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4)': dependencies: '@rsdoctor/client': 1.6.4 - '@rsdoctor/graph': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) - '@rsdoctor/utils': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/graph': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/utils': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) launch-editor: 2.14.1 safer-buffer: 2.1.2 socket.io: 4.8.1 @@ -12851,30 +12732,30 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/types@1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': + '@rsdoctor/types@1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': dependencies: '@types/connect': 3.4.38 '@types/estree': 1.0.5 '@types/tapable': 2.3.0 source-map: 0.7.6 optionalDependencies: - '@rspack/core': 1.6.0(@swc/helpers@0.5.23) + '@rspack/core': 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) webpack: 5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23) - '@rsdoctor/types@1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4)': + '@rsdoctor/types@1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4)': dependencies: '@types/connect': 3.4.38 '@types/estree': 1.0.5 '@types/tapable': 2.3.0 source-map: 0.7.6 optionalDependencies: - '@rspack/core': 1.6.0(@swc/helpers@0.5.23) + '@rspack/core': 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) webpack: 5.105.4 - '@rsdoctor/utils@1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': + '@rsdoctor/utils@1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23))': dependencies: '@babel/code-frame': 7.26.2 - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)) '@types/estree': 1.0.5 acorn: 8.17.0 acorn-import-attributes: 1.9.5(acorn@8.17.0) @@ -12892,10 +12773,10 @@ snapshots: - '@rspack/core' - webpack - '@rsdoctor/utils@1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4)': + '@rsdoctor/utils@1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4)': dependencies: '@babel/code-frame': 7.26.2 - '@rsdoctor/types': 1.6.4(@rspack/core@1.6.0(@swc/helpers@0.5.23))(webpack@5.105.4) + '@rsdoctor/types': 1.6.4(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(webpack@5.105.4) '@types/estree': 1.0.5 acorn: 8.17.0 acorn-import-attributes: 1.9.5(acorn@8.17.0) @@ -12923,27 +12804,15 @@ snapshots: - '@module-federation/runtime-tools' - core-js - '@rspack/binding-darwin-arm64@1.6.0': - optional: true - '@rspack/binding-darwin-arm64@2.2.8': optional: true - '@rspack/binding-darwin-x64@1.6.0': - optional: true - '@rspack/binding-darwin-x64@2.2.8': optional: true - '@rspack/binding-linux-arm64-gnu@1.6.0': - optional: true - '@rspack/binding-linux-arm64-gnu@2.2.8': optional: true - '@rspack/binding-linux-arm64-musl@1.6.0': - optional: true - '@rspack/binding-linux-arm64-musl@2.2.8': optional: true @@ -12959,23 +12828,12 @@ snapshots: '@rspack/binding-linux-s390x-gnu@2.2.8': optional: true - '@rspack/binding-linux-x64-gnu@1.6.0': - optional: true - '@rspack/binding-linux-x64-gnu@2.2.8': optional: true - '@rspack/binding-linux-x64-musl@1.6.0': - optional: true - '@rspack/binding-linux-x64-musl@2.2.8': optional: true - '@rspack/binding-wasm32-wasi@1.6.0': - dependencies: - '@napi-rs/wasm-runtime': 1.0.7 - optional: true - '@rspack/binding-wasm32-wasi@2.2.8': dependencies: '@emnapi/core': 1.11.3 @@ -12983,37 +12841,15 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) optional: true - '@rspack/binding-win32-arm64-msvc@1.6.0': - optional: true - '@rspack/binding-win32-arm64-msvc@2.2.8': optional: true - '@rspack/binding-win32-ia32-msvc@1.6.0': - optional: true - '@rspack/binding-win32-ia32-msvc@2.2.8': optional: true - '@rspack/binding-win32-x64-msvc@1.6.0': - optional: true - '@rspack/binding-win32-x64-msvc@2.2.8': optional: true - '@rspack/binding@1.6.0': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.6.0 - '@rspack/binding-darwin-x64': 1.6.0 - '@rspack/binding-linux-arm64-gnu': 1.6.0 - '@rspack/binding-linux-arm64-musl': 1.6.0 - '@rspack/binding-linux-x64-gnu': 1.6.0 - '@rspack/binding-linux-x64-musl': 1.6.0 - '@rspack/binding-wasm32-wasi': 1.6.0 - '@rspack/binding-win32-arm64-msvc': 1.6.0 - '@rspack/binding-win32-ia32-msvc': 1.6.0 - '@rspack/binding-win32-x64-msvc': 1.6.0 - '@rspack/binding@2.2.8': optionalDependencies: '@rspack/binding-darwin-arm64': 2.2.8 @@ -13031,14 +12867,6 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 2.2.8 '@rspack/binding-win32-x64-msvc': 2.2.8 - '@rspack/core@1.6.0(@swc/helpers@0.5.23)': - dependencies: - '@module-federation/runtime-tools': 0.21.2 - '@rspack/binding': 1.6.0 - '@rspack/lite-tapable': 1.0.1 - optionalDependencies: - '@swc/helpers': 0.5.23 - '@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23)': dependencies: '@rspack/binding': 2.2.8 @@ -13046,8 +12874,6 @@ snapshots: '@module-federation/runtime-tools': 2.9.2 '@swc/helpers': 0.5.23 - '@rspack/lite-tapable@1.0.1': {} - '@rspack/plugin-react-refresh@1.0.0(react-refresh@0.14.2)': dependencies: error-stack-parser: 2.1.4 @@ -16148,7 +15974,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.20.5 + '@types/node': 26.1.1 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.2 @@ -16241,7 +16067,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.20.5 + '@types/node': 26.1.1 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -16290,7 +16116,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.20.5 + '@types/node': 26.1.1 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -18099,14 +17925,14 @@ snapshots: postcss: 8.5.23 yaml: 2.9.0 - postcss-loader@8.2.1(@rspack/core@1.6.0(@swc/helpers@0.5.23))(postcss@8.5.23)(typescript@7.0.2)(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)): + postcss-loader@8.2.1(@rspack/core@2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23))(postcss@8.5.23)(typescript@7.0.2)(webpack@5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23)): dependencies: cosmiconfig: 9.0.2(typescript@7.0.2) jiti: 2.7.0 postcss: 8.5.23 semver: 7.8.5 optionalDependencies: - '@rspack/core': 1.6.0(@swc/helpers@0.5.23) + '@rspack/core': 2.2.8(@module-federation/runtime-tools@2.9.2)(@swc/helpers@0.5.23) webpack: 5.105.4(@swc/core@1.15.46(@swc/helpers@0.5.23))(postcss@8.5.23) transitivePeerDependencies: - typescript diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 44c7d912b..dba0172c0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -38,10 +38,9 @@ allowBuilds: catalog: "@babel/core": ^7.29.7 - # Pinned: 1.6.2+ breaks MF v2 polyfill ordering; 1.6.4+ fails typecheck. - "@rspack/core": 1.6.0 + "@rspack/core": ^2.2.8 "@rslib/core": ^1.0.3 - "@swc/helpers": ~0.5.17 + "@swc/helpers": ^0.5.23 "@types/node": ^22.20.5 "terser-webpack-plugin": ^5.6.1 "typescript": ^7.0.2 diff --git a/tests/integration/src/loaders/react-native-parser.test.ts b/tests/integration/src/loaders/react-native-parser.test.ts index c6e2026ce..e61c09c69 100644 --- a/tests/integration/src/loaders/react-native-parser.test.ts +++ b/tests/integration/src/loaders/react-native-parser.test.ts @@ -233,10 +233,7 @@ describe.each(presets)('React Native %s parser dependencies', (preset) => { options: loader === 'babel-loader' ? { root: projectRoot } - : { - hideParallelModeWarning: true, - babelOverrides: { cwd: projectRoot }, - }, + : { babelOverrides: { cwd: projectRoot } }, }, }, ], @@ -355,10 +352,7 @@ describe.each(['unsupported-preset', 'missing-flow-parser'])( options: loader === 'babel-loader' ? babelOptions - : { - hideParallelModeWarning: true, - babelOverrides: babelOptions, - }, + : { babelOverrides: babelOptions }, }; await expect( diff --git a/tests/integration/src/loaders/source-map-sources.test.ts b/tests/integration/src/loaders/source-map-sources.test.ts index bfc8d411a..ab21e7406 100644 --- a/tests/integration/src/loaders/source-map-sources.test.ts +++ b/tests/integration/src/loaders/source-map-sources.test.ts @@ -87,9 +87,6 @@ async function getSourceMapSources(loader: (typeof LOADERS)[number]) { loader: require.resolve(`@callstack/repack/${loader}`), options: { hermesParserPath: require.resolve('hermes-parser'), - ...(loader === 'babel-swc-loader' && { - hideParallelModeWarning: true, - }), }, }, }, @@ -101,7 +98,11 @@ async function getSourceMapSources(loader: (typeof LOADERS)[number]) { const sourceMap = JSON.parse( volume.readFileSync('/out/main.js.map', 'utf-8') as string ); - return sourceMap.sources as string[]; + // Rspack 2 joins `[absolute-resource-path]` onto the context without + // resolving it, e.g. `/../../node_modules/...` + return (sourceMap.sources as string[]).map((source) => + path.isAbsolute(source) ? path.normalize(source) : source + ); } // Webpack, and Rspack when Babel writes the loader map, used to prepend the diff --git a/tests/integration/src/plugins/NativeEntryPlugin.test.ts b/tests/integration/src/plugins/NativeEntryPlugin.test.ts index eca1825c5..27ca8ab24 100644 --- a/tests/integration/src/plugins/NativeEntryPlugin.test.ts +++ b/tests/integration/src/plugins/NativeEntryPlugin.test.ts @@ -138,8 +138,8 @@ function extractModuleIdByMarker(code: string, marker: string): string { if (moduleBody.includes(marker)) return moduleId; } - const rspackModuleRegex = - /\n([^\s:\n]+):\s*\(function\s*\([^)]*\)\s*\{([\s\S]*?)\n\}\),/g; + // Rspack 2 emits module factories as methods: `id(module, exports) {` + const rspackModuleRegex = /\n([^\s:\n(]+)\([^)]*\)\s*\{([\s\S]*?)\n\},/g; for (const match of code.matchAll(rspackModuleRegex)) { const moduleId = normalizeModuleId(match[1]); const moduleBody = match[2]; @@ -150,7 +150,7 @@ function extractModuleIdByMarker(code: string, marker: string): string { } function extractRuntimePolyfillRequireIds(code: string): string[] { - const runtimeStart = code.indexOf('runtime/repack/polyfills'); + const runtimeStart = code.indexOf('repack/polyfills'); expect(runtimeStart).toBeGreaterThan(-1); const startupStart = code.indexOf('// startup', runtimeStart); expect(startupStart).toBeGreaterThan(runtimeStart); @@ -168,7 +168,7 @@ function getStartupSection(code: string): string { } function getRuntimeAndStartupSnippet(code: string): string { - const runtimeStart = code.indexOf('runtime/repack/polyfills'); + const runtimeStart = code.indexOf('repack/polyfills'); expect(runtimeStart).toBeGreaterThan(-1); return code.slice(runtimeStart, runtimeStart + 900); } @@ -210,7 +210,7 @@ describe('NativeEntryPlugin', () => { // Polyfills runtime module IIFE executes before inline startup entries expectBundleOrder(code, [ - 'webpack/runtime/repack/polyfills', + 'repack/polyfills', 'Load entry module and return exports', ]); @@ -342,13 +342,13 @@ describe('NativeEntryPlugin', () => { if (bundlerType === 'rspack') { // Rspack MF v2 wraps startup via embed_federation_runtime: - // 1. embed_federation_runtime saves original __webpack_require__.x and wraps it - // 2. repack/polyfills IIFE executes (polyfills loaded immediately) + // 1. repack/polyfills IIFE executes (polyfills loaded immediately) + // 2. embed_federation_runtime saves original __webpack_require__.x and wraps it // 3. __webpack_require__.x() called → MF init → original startup (polyfills are cache hits) expect(code).toContain('embed_federation_runtime'); expectBundleOrder(code, [ + 'repack/polyfills', 'embed_federation_runtime', - 'webpack/runtime/repack/polyfills', '__webpack_require__.x()', ]); } else { @@ -356,10 +356,7 @@ describe('NativeEntryPlugin', () => { // 1. repack/polyfills IIFE executes (polyfills loaded immediately) // 2. Inline startup begins: federation entry, then polyfills (cache hits), then app expect(code).toContain('.federation/entry'); - expectBundleOrder(code, [ - 'webpack/runtime/repack/polyfills', - '.federation/entry', - ]); + expectBundleOrder(code, ['repack/polyfills', '.federation/entry']); } expect(normalizeBundle(code)).toMatchSnapshot(); diff --git a/tests/integration/src/plugins/__snapshots__/rspack/NativeEntryPlugin.test.ts.snap b/tests/integration/src/plugins/__snapshots__/rspack/NativeEntryPlugin.test.ts.snap index 023e5d0a3..75e20e7aa 100644 --- a/tests/integration/src/plugins/__snapshots__/rspack/NativeEntryPlugin.test.ts.snap +++ b/tests/integration/src/plugins/__snapshots__/rspack/NativeEntryPlugin.test.ts.snap @@ -1,22 +1,14 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`NativeEntryPlugin > with Module Federation v2 (2.0.1) > should execute polyfills runtime module before MF v2 federation runtime 1`] = ` -"(() => { // webpackBootstrap +"(() => { var __webpack_modules__ = ({ -"@module-federation/runtime/rspack.js!=!data:text/javascript,import __module_federation_bundler_runtime__ from \\"/node_modules/.pnpm/@module-federation+webpack-bundler-runtime@2.0.1/node_modules/@module-federation/webpack-bundler-runtime/dist/index.cjs.cjs\\";const __module_federation_runtime_plugins__ = [];const __module_federation_remote_infos__ = {};const __module_federation_container_name__ = \\"testContainer\\";const __module_federation_share_strategy__ = \\"version-first\\";if((__webpack_require__.initializeSharingData||__webpack_require__.initializeExposesData)&&__webpack_require__.federation){var __webpack_require___remotesLoadingData,__webpack_require___remotesLoadingData1,__webpack_require___initializeSharingData,__webpack_require___consumesLoadingData,__webpack_require___consumesLoadingData1,__webpack_require___initializeExposesData,__webpack_require___consumesLoadingData2;const override=(obj,key,value)=>{if(!obj)return;if(obj[key])obj[key]=value};const merge=(obj,key,fn)=>{const value=fn();if(Array.isArray(value)){var _obj,_key;var _;(_=(_obj=obj)[_key=key])!==null&&_!==void 0?_:_obj[_key]=[];obj[key].push(...value)}else if(typeof value===\\"object\\"&&value!==null){var _obj1,_key1;var _1;(_1=(_obj1=obj)[_key1=key])!==null&&_1!==void 0?_1:_obj1[_key1]={};Object.assign(obj[key],value)}};const early=(obj,key,initial)=>{var _obj,_key;var _;(_=(_obj=obj)[_key=key])!==null&&_!==void 0?_:_obj[_key]=initial()};var __webpack_require___remotesLoadingData_chunkMapping;const remotesLoadingChunkMapping=(__webpack_require___remotesLoadingData_chunkMapping=(__webpack_require___remotesLoadingData=__webpack_require__.remotesLoadingData)===null||__webpack_require___remotesLoadingData===void 0?void 0:__webpack_require___remotesLoadingData.chunkMapping)!==null&&__webpack_require___remotesLoadingData_chunkMapping!==void 0?__webpack_require___remotesLoadingData_chunkMapping:{};var __webpack_require___remotesLoadingData_moduleIdToRemoteDataMapping;const remotesLoadingModuleIdToRemoteDataMapping=(__webpack_require___remotesLoadingData_moduleIdToRemoteDataMapping=(__webpack_require___remotesLoadingData1=__webpack_require__.remotesLoadingData)===null||__webpack_require___remotesLoadingData1===void 0?void 0:__webpack_require___remotesLoadingData1.moduleIdToRemoteDataMapping)!==null&&__webpack_require___remotesLoadingData_moduleIdToRemoteDataMapping!==void 0?__webpack_require___remotesLoadingData_moduleIdToRemoteDataMapping:{};var __webpack_require___initializeSharingData_scopeToSharingDataMapping;const initializeSharingScopeToInitDataMapping=(__webpack_require___initializeSharingData_scopeToSharingDataMapping=(__webpack_require___initializeSharingData=__webpack_require__.initializeSharingData)===null||__webpack_require___initializeSharingData===void 0?void 0:__webpack_require___initializeSharingData.scopeToSharingDataMapping)!==null&&__webpack_require___initializeSharingData_scopeToSharingDataMapping!==void 0?__webpack_require___initializeSharingData_scopeToSharingDataMapping:{};var __webpack_require___consumesLoadingData_chunkMapping;const consumesLoadingChunkMapping=(__webpack_require___consumesLoadingData_chunkMapping=(__webpack_require___consumesLoadingData=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData===void 0?void 0:__webpack_require___consumesLoadingData.chunkMapping)!==null&&__webpack_require___consumesLoadingData_chunkMapping!==void 0?__webpack_require___consumesLoadingData_chunkMapping:{};var __webpack_require___consumesLoadingData_moduleIdToConsumeDataMapping;const consumesLoadingModuleToConsumeDataMapping=(__webpack_require___consumesLoadingData_moduleIdToConsumeDataMapping=(__webpack_require___consumesLoadingData1=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData1===void 0?void 0:__webpack_require___consumesLoadingData1.moduleIdToConsumeDataMapping)!==null&&__webpack_require___consumesLoadingData_moduleIdToConsumeDataMapping!==void 0?__webpack_require___consumesLoadingData_moduleIdToConsumeDataMapping:{};const consumesLoadinginstalledModules={};const initializeSharingInitPromises=[];const initializeSharingInitTokens={};const containerShareScope=(__webpack_require___initializeExposesData=__webpack_require__.initializeExposesData)===null||__webpack_require___initializeExposesData===void 0?void 0:__webpack_require___initializeExposesData.shareScope;for(const key in __module_federation_bundler_runtime__){__webpack_require__.federation[key]=__module_federation_bundler_runtime__[key]}early(__webpack_require__.federation,\\"consumesLoadingModuleToHandlerMapping\\",()=>{const consumesLoadingModuleToHandlerMapping={};for(let[moduleId,data]of Object.entries(consumesLoadingModuleToConsumeDataMapping)){consumesLoadingModuleToHandlerMapping[moduleId]={getter:data.fallback,shareInfo:{shareConfig:{fixedDependencies:false,requiredVersion:data.requiredVersion,strictVersion:data.strictVersion,singleton:data.singleton,eager:data.eager},scope:[data.shareScope]},shareKey:data.shareKey}}return consumesLoadingModuleToHandlerMapping});early(__webpack_require__.federation,\\"initOptions\\",()=>({}));early(__webpack_require__.federation.initOptions,\\"name\\",()=>__module_federation_container_name__);early(__webpack_require__.federation.initOptions,\\"shareStrategy\\",()=>__module_federation_share_strategy__);early(__webpack_require__.federation.initOptions,\\"shared\\",()=>{const shared={};for(let[scope,stages]of Object.entries(initializeSharingScopeToInitDataMapping)){for(let stage of stages){if(typeof stage===\\"object\\"&&stage!==null){const{name,version,factory,eager,singleton,requiredVersion,strictVersion}=stage;const shareConfig={};const isValidValue=function(val){return typeof val!==\\"undefined\\"};if(isValidValue(singleton)){shareConfig.singleton=singleton}if(isValidValue(requiredVersion)){shareConfig.requiredVersion=requiredVersion}if(isValidValue(eager)){shareConfig.eager=eager}if(isValidValue(strictVersion)){shareConfig.strictVersion=strictVersion}const options={version,scope:[scope],shareConfig,get:factory};if(shared[name]){shared[name].push(options)}else{shared[name]=[options]}}}}return shared});merge(__webpack_require__.federation.initOptions,\\"remotes\\",()=>Object.values(__module_federation_remote_infos__).flat().filter(remote=>remote.externalType===\\"script\\"));merge(__webpack_require__.federation.initOptions,\\"plugins\\",()=>__module_federation_runtime_plugins__);early(__webpack_require__.federation,\\"bundlerRuntimeOptions\\",()=>({}));early(__webpack_require__.federation.bundlerRuntimeOptions,\\"remotes\\",()=>({}));early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"chunkMapping\\",()=>remotesLoadingChunkMapping);early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"remoteInfos\\",()=>__module_federation_remote_infos__);early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"idToExternalAndNameMapping\\",()=>{const remotesLoadingIdToExternalAndNameMappingMapping={};for(let[moduleId,data]of Object.entries(remotesLoadingModuleIdToRemoteDataMapping)){remotesLoadingIdToExternalAndNameMappingMapping[moduleId]=[data.shareScope,data.name,data.externalModuleId,data.remoteName]}return remotesLoadingIdToExternalAndNameMappingMapping});early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"webpackRequire\\",()=>__webpack_require__);merge(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"idToRemoteMap\\",()=>{const idToRemoteMap={};for(let[id,remoteData]of Object.entries(remotesLoadingModuleIdToRemoteDataMapping)){const info=__module_federation_remote_infos__[remoteData.remoteName];if(info)idToRemoteMap[id]=info}return idToRemoteMap});override(__webpack_require__,\\"S\\",__webpack_require__.federation.bundlerRuntime.S);if(__webpack_require__.federation.attachShareScopeMap){__webpack_require__.federation.attachShareScopeMap(__webpack_require__)}override(__webpack_require__.f,\\"remotes\\",(chunkId,promises)=>__webpack_require__.federation.bundlerRuntime.remotes({chunkId,promises,chunkMapping:remotesLoadingChunkMapping,idToExternalAndNameMapping:__webpack_require__.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:__webpack_require__.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:__webpack_require__}));override(__webpack_require__.f,\\"consumes\\",(chunkId,promises)=>__webpack_require__.federation.bundlerRuntime.consumes({chunkId,promises,chunkMapping:consumesLoadingChunkMapping,moduleToHandlerMapping:__webpack_require__.federation.consumesLoadingModuleToHandlerMapping,installedModules:consumesLoadinginstalledModules,webpackRequire:__webpack_require__}));override(__webpack_require__,\\"I\\",(name,initScope)=>__webpack_require__.federation.bundlerRuntime.I({shareScopeName:name,initScope,initPromises:initializeSharingInitPromises,initTokens:initializeSharingInitTokens,webpackRequire:__webpack_require__}));override(__webpack_require__,\\"initContainer\\",(shareScope,initScope,remoteEntryInitOptions)=>__webpack_require__.federation.bundlerRuntime.initContainerEntry({shareScope,initScope,remoteEntryInitOptions,shareScopeKey:containerShareScope,webpackRequire:__webpack_require__}));override(__webpack_require__,\\"getContainer\\",(module1,getScope)=>{var moduleMap=__webpack_require__.initializeExposesData.moduleMap;__webpack_require__.R=getScope;getScope=Object.prototype.hasOwnProperty.call(moduleMap,module1)?moduleMap[module1]():Promise.resolve().then(()=>{throw new Error('Module \\"'+module1+'\\" does not exist in container.')});__webpack_require__.R=undefined;return getScope});__webpack_require__.federation.instance=__webpack_require__.federation.runtime.init(__webpack_require__.federation.initOptions);if((__webpack_require___consumesLoadingData2=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData2===void 0?void 0:__webpack_require___consumesLoadingData2.initialConsumes){__webpack_require__.federation.bundlerRuntime.installInitialConsumes({webpackRequire:__webpack_require__,installedModules:consumesLoadinginstalledModules,initialConsumes:__webpack_require__.consumesLoadingData.initialConsumes,moduleToHandlerMapping:__webpack_require__.federation.consumesLoadingModuleToHandlerMapping})}}": -/*!*********************************************!*\\ - !*** external "globalThis.__MF_EXTERNAL__" ***! - \\*********************************************/ -(function (module) { +"@module-federation/runtime/rspack.js!=!data:text/javascript,import%20__module_federation_bundler_runtime__%20from%20%22%2FUsers%2Fdaniel.williams%2F.t3%2Fworktrees%2Frepack%2Fdannyhw-rspack-2%2Fnode_modules%2F.pnpm%2F%40module-federation%2Bwebpack-bundler-runtime%402.0.1%2Fnode_modules%2F%40module-federation%2Fwebpack-bundler-runtime%2Fdist%2Findex.cjs.cjs%22%3B%3Bconst%20__module_federation_runtime_plugins__%20%3D%20%5B%5D.filter((%7B%20plugin%20%7D)%20%3D%3E%20plugin).map((%7B%20plugin%2C%20params%20%7D)%20%3D%3E%20plugin(params))%3Bconst%20__module_federation_remote_infos__%20%3D%20%7B%7D%3Bconst%20__module_federation_container_name__%20%3D%20%22testContainer%22%3Bconst%20__module_federation_share_strategy__%20%3D%20%22version-first%22%3Bconst%20__module_federation_share_fallbacks__%20%3D%20undefined%3Bconst%20__module_federation_library_type__%20%3D%20%22var%22%3Bconst%20runtimeRequire%3D__webpack_require__%3Bif((runtimeRequire.initializeSharingData%7C%7CruntimeRequire.initializeExposesData)%26%26runtimeRequire.federation)%7Bvar%20_ref%2C_ref1%2C_ref2%2C_ref3%2C_ref4%3Bvar%20_runtimeRequire_remotesLoadingData%2C_runtimeRequire_remotesLoadingData1%2C_runtimeRequire_initializeSharingData%2C_runtimeRequire_consumesLoadingData%2C_runtimeRequire_consumesLoadingData1%2C_runtimeRequire_initializeExposesData%2C_runtimeRequire_consumesLoadingData2%3Bconst%20override%3D(obj%2Ckey%2Cvalue)%3D%3E%7Bif(!obj)return%3Bif(obj%5Bkey%5D)obj%5Bkey%5D%3Dvalue%7D%3Bconst%20merge%3D(obj%2Ckey%2Cfn)%3D%3E%7Bconst%20value%3Dfn()%3Bif(Array.isArray(value))%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3D%5B%5D%3Bobj%5Bkey%5D.push(...value)%7Delse%20if(typeof%20value%3D%3D%3D%22object%22%26%26value!%3D%3Dnull)%7Bvar%20_obj1%2C_key1%2C_1%3B(_1%3D(_obj1%3Dobj)%5B_key1%3Dkey%5D)!%3D%3Dnull%26%26_1!%3D%3Dvoid%200%3F_1%3A_obj1%5B_key1%5D%3D%7B%7D%3BObject.assign(obj%5Bkey%5D%2Cvalue)%7D%7D%3Bconst%20early%3D(obj%2Ckey%2Cinitial)%3D%3E%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3Dinitial()%7D%3Bconst%20remotesLoadingChunkMapping%3D(_ref%3D(_runtimeRequire_remotesLoadingData%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref!%3D%3Dvoid%200%3F_ref%3A%7B%7D%3Bconst%20remotesLoadingModuleIdToRemoteDataMapping%3D(_ref1%3D(_runtimeRequire_remotesLoadingData1%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData1.moduleIdToRemoteDataMapping)!%3D%3Dnull%26%26_ref1!%3D%3Dvoid%200%3F_ref1%3A%7B%7D%3Bconst%20initializeSharingScopeToInitDataMapping%3D(_ref2%3D(_runtimeRequire_initializeSharingData%3DruntimeRequire.initializeSharingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeSharingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeSharingData.scopeToSharingDataMapping)!%3D%3Dnull%26%26_ref2!%3D%3Dvoid%200%3F_ref2%3A%7B%7D%3Bconst%20consumesLoadingChunkMapping%3D(_ref3%3D(_runtimeRequire_consumesLoadingData%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref3!%3D%3Dvoid%200%3F_ref3%3A%7B%7D%3Bconst%20consumesLoadingModuleToConsumeDataMapping%3D(_ref4%3D(_runtimeRequire_consumesLoadingData1%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData1.moduleIdToConsumeDataMapping)!%3D%3Dnull%26%26_ref4!%3D%3Dvoid%200%3F_ref4%3A%7B%7D%3Bconst%20consumesLoadinginstalledModules%3D%7B%7D%3Bconst%20initializeSharingInitPromises%3D%5B%5D%3Bconst%20initializeSharingInitTokens%3D%7B%7D%3Bconst%20containerShareScope%3D(_runtimeRequire_initializeExposesData%3DruntimeRequire.initializeExposesData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeExposesData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeExposesData.shareScope%3Bfor(const%20key%20in%20__module_federation_bundler_runtime__)%7BruntimeRequire.federation%5Bkey%5D%3D__module_federation_bundler_runtime__%5Bkey%5D%7Dearly(runtimeRequire.federation%2C%22libraryType%22%2C()%3D%3E__module_federation_library_type__)%3Bearly(runtimeRequire.federation%2C%22sharedFallback%22%2C()%3D%3E__module_federation_share_fallbacks__)%3Bconst%20sharedFallback%3DruntimeRequire.federation.sharedFallback%3Bearly(runtimeRequire.federation%2C%22consumesLoadingModuleToHandlerMapping%22%2C()%3D%3E%7Bconst%20consumesLoadingModuleToHandlerMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(consumesLoadingModuleToConsumeDataMapping))%7Bvar%20_runtimeRequire_federation_bundlerRuntime%3BconsumesLoadingModuleToHandlerMapping%5BmoduleId%5D%3D%7Bgetter%3AsharedFallback%3F(_runtimeRequire_federation_bundlerRuntime%3DruntimeRequire.federation.bundlerRuntime)%3D%3D%3Dnull%7C%7C_runtimeRequire_federation_bundlerRuntime%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_federation_bundlerRuntime.getSharedFallbackGetter(%7BshareKey%3Adata.shareKey%2Cfactory%3Adata.fallback%2CwebpackRequire%3AruntimeRequire%2ClibraryType%3AruntimeRequire.federation.libraryType%7D)%3Adata.fallback%2CtreeShakingGetter%3AsharedFallback%3Fdata.fallback%3Aundefined%2CshareInfo%3A%7BshareConfig%3A%7BfixedDependencies%3Afalse%2CrequiredVersion%3Adata.requiredVersion%2CstrictVersion%3Adata.strictVersion%2Csingleton%3Adata.singleton%2Ceager%3Adata.eager%7D%2Cscope%3A%5Bdata.shareScope%5D%7D%2CshareKey%3Adata.shareKey%2CtreeShaking%3AruntimeRequire.federation.sharedFallback%3F%7Bget%3Adata.fallback%2Cmode%3Adata.treeShakingMode%7D%3Aundefined%7D%7Dreturn%20consumesLoadingModuleToHandlerMapping%7D)%3Bearly(runtimeRequire.federation%2C%22initOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.initOptions%2C%22name%22%2C()%3D%3E__module_federation_container_name__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shareStrategy%22%2C()%3D%3E__module_federation_share_strategy__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shared%22%2C()%3D%3E%7Bconst%20shared%3D%7B%7D%3Bfor(let%5Bscope%2Cstages%5Dof%20Object.entries(initializeSharingScopeToInitDataMapping))%7Bfor(let%20stage%20of%20stages)%7Bif(typeof%20stage%3D%3D%3D%22object%22%26%26stage!%3D%3Dnull)%7Bconst%7Bname%2Cversion%2Cfactory%2Ceager%2Csingleton%2CrequiredVersion%2CstrictVersion%2CtreeShakingMode%7D%3Dstage%3Bconst%20shareConfig%3D%7B%7D%3Bconst%20isValidValue%3Dfunction(val)%7Breturn%20typeof%20val!%3D%3D%22undefined%22%7D%3Bif(isValidValue(singleton))%7BshareConfig.singleton%3Dsingleton%7Dif(isValidValue(requiredVersion))%7BshareConfig.requiredVersion%3DrequiredVersion%7Dif(isValidValue(eager))%7BshareConfig.eager%3Deager%7Dif(isValidValue(strictVersion))%7BshareConfig.strictVersion%3DstrictVersion%7Dconst%20options%3D%7Bversion%2Cscope%3A%5Bscope%5D%2CshareConfig%2Cget%3Afactory%2CtreeShaking%3AtreeShakingMode%3F%7Bmode%3AtreeShakingMode%7D%3Aundefined%7D%3Bif(shared%5Bname%5D)%7Bshared%5Bname%5D.push(options)%7Delse%7Bshared%5Bname%5D%3D%5Boptions%5D%7D%7D%7D%7Dreturn%20shared%7D)%3Bmerge(runtimeRequire.federation.initOptions%2C%22remotes%22%2C()%3D%3EObject.values(__module_federation_remote_infos__).flat().filter(remote%3D%3Eremote.externalType%3D%3D%3D%22script%22))%3Bmerge(runtimeRequire.federation.initOptions%2C%22plugins%22%2C()%3D%3E__module_federation_runtime_plugins__)%3Bearly(runtimeRequire.federation%2C%22bundlerRuntimeOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions%2C%22remotes%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22chunkMapping%22%2C()%3D%3EremotesLoadingChunkMapping)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22remoteInfos%22%2C()%3D%3E__module_federation_remote_infos__)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToExternalAndNameMapping%22%2C()%3D%3E%7Bconst%20remotesLoadingIdToExternalAndNameMappingMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7BremotesLoadingIdToExternalAndNameMappingMapping%5BmoduleId%5D%3D%5Bdata.shareScope%2Cdata.name%2Cdata.externalModuleId%2Cdata.remoteName%5D%7Dreturn%20remotesLoadingIdToExternalAndNameMappingMapping%7D)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22webpackRequire%22%2C()%3D%3EruntimeRequire)%3Bmerge(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToRemoteMap%22%2C()%3D%3E%7Bconst%20idToRemoteMap%3D%7B%7D%3Bfor(let%5Bid%2CremoteData%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7Bconst%20info%3D__module_federation_remote_infos__%5BremoteData.remoteName%5D%3Bif(info)idToRemoteMap%5Bid%5D%3Dinfo%7Dreturn%20idToRemoteMap%7D)%3Boverride(runtimeRequire%2C%22S%22%2CruntimeRequire.federation.bundlerRuntime.S)%3Bif(runtimeRequire.federation.attachShareScopeMap)%7BruntimeRequire.federation.attachShareScopeMap(runtimeRequire)%7Doverride(runtimeRequire.f%2C%22remotes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.remotes(%7BchunkId%2Cpromises%2CchunkMapping%3AremotesLoadingChunkMapping%2CidToExternalAndNameMapping%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping%2CidToRemoteMap%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToRemoteMap%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire.f%2C%22consumes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.consumes(%7BchunkId%2Cpromises%2CchunkMapping%3AconsumesLoadingChunkMapping%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%2CinstalledModules%3AconsumesLoadinginstalledModules%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22I%22%2C(name%2CinitScope)%3D%3EruntimeRequire.federation.bundlerRuntime.I(%7BshareScopeName%3Aname%2CinitScope%2CinitPromises%3AinitializeSharingInitPromises%2CinitTokens%3AinitializeSharingInitTokens%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22initContainer%22%2C(shareScope%2CinitScope%2CremoteEntryInitOptions)%3D%3EruntimeRequire.federation.bundlerRuntime.initContainerEntry(%7BshareScope%2CinitScope%2CremoteEntryInitOptions%2CshareScopeKey%3AcontainerShareScope%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22getContainer%22%2C(module%2CgetScope)%3D%3E%7Bvar%20moduleMap%3DruntimeRequire.initializeExposesData.moduleMap%3BruntimeRequire.R%3DgetScope%3BgetScope%3DObject.prototype.hasOwnProperty.call(moduleMap%2Cmodule)%3FmoduleMap%5Bmodule%5D()%3APromise.resolve().then(()%3D%3E%7Bthrow%20new%20Error('Module%20%22'%2Bmodule%2B'%22%20does%20not%20exist%20in%20container.')%7D)%3BruntimeRequire.R%3Dundefined%3Breturn%20getScope%7D)%3BruntimeRequire.federation.instance%3DruntimeRequire.federation.bundlerRuntime.init(%7BwebpackRequire%3AruntimeRequire%7D)%3Bif((_runtimeRequire_consumesLoadingData2%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData2%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData2.initialConsumes)%7BruntimeRequire.federation.bundlerRuntime.installInitialConsumes(%7BwebpackRequire%3AruntimeRequire%2CinstalledModules%3AconsumesLoadinginstalledModules%2CinitialConsumes%3AruntimeRequire.consumesLoadingData.initialConsumes%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%7D)%7D%7D"(module) { "use strict"; module.exports = globalThis.__MF_EXTERNAL__; -}), -"../../../../packages/repack/dist/modules/IncludeModules.js": -/*!******************************************************************!*\\ - !*** ../../../../packages/repack/dist/modules/IncludeModules.js ***! - \\******************************************************************/ -(function () { +}, +"../../../../packages/repack/dist/modules/IncludeModules.js"() { /* * This module is added as an entry module to prevent stripping of these React Native deep imports from the bundle. * We use require.resolve from Rspack/Webpack to ensure these modules are included even if not directly used. @@ -24,59 +16,38 @@ module.exports = globalThis.__MF_EXTERNAL__; * These modules are required by assetsLoader and should be shared as deep imports when using ModuleFederation. */ -/*require.resolve*/(Object(function webpackMissingModule() { var e = new Error("Cannot find module 'react-native/Libraries/Image/AssetRegistry'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); -/*require.resolve*/(Object(function webpackMissingModule() { var e = new Error("Cannot find module 'react-native/Libraries/Image/AssetSourceResolver'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); +/*require.resolve*/(Object(function __rspack_missing_module() { var e = new Error("Cannot find module 'react-native/Libraries/Image/AssetRegistry'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); +/*require.resolve*/(Object(function __rspack_missing_module() { var e = new Error("Cannot find module 'react-native/Libraries/Image/AssetSourceResolver'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); -}), -"../../../../packages/repack/dist/modules/InitializeScriptManager.js": -/*!***************************************************************************!*\\ - !*** ../../../../packages/repack/dist/modules/InitializeScriptManager.js ***! - \\***************************************************************************/ -(function () { +}, +"../../../../packages/repack/dist/modules/InitializeScriptManager.js"() { throw new Error(" × Module parse failed:\\n ╰─▶ × JavaScript parse error: 'import', and 'export' cannot be used outside of module code\\n ╭─[1:0]\\n 1 │ import { ScriptManager } from './ScriptManager/ScriptManager.js';\\n · ──────\\n 2 │ ScriptManager.init();\\n ╰────\\n \\n help: \\n You may need an appropriate loader to handle this file type.\\n"); -}), -"./__fixtures__/react-native/Libraries/Core/InitializeCore.js": -/*!********************************************************************!*\\ - !*** ./__fixtures__/react-native/Libraries/Core/InitializeCore.js ***! - \\********************************************************************/ -(function () { +}, +"./__fixtures__/react-native/Libraries/Core/InitializeCore.js"() { globalThis.__INITIALIZE_CORE__ = true; -}), -"./__fixtures__/react-native/polyfill1.js": -/*!************************************************!*\\ - !*** ./__fixtures__/react-native/polyfill1.js ***! - \\************************************************/ -(function () { +}, +"./__fixtures__/react-native/polyfill1.js"() { globalThis.__POLYFILL_1__ = true; -}), -"./__fixtures__/react-native/polyfill2.js": -/*!************************************************!*\\ - !*** ./__fixtures__/react-native/polyfill2.js ***! - \\************************************************/ -(function () { +}, +"./__fixtures__/react-native/polyfill2.js"() { globalThis.__POLYFILL_2__ = true; -}), -"./index.js": -/*!******************!*\\ - !*** ./index.js ***! - \\******************/ -(function (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { +}, +"./index.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); globalThis.__APP_ENTRY__ = true; -}), +}, }); -/************************************************************************/ // The module cache var __webpack_module_cache__ = {}; @@ -118,41 +89,108 @@ var __webpack_exports__ = __webpack_require__("./index.js"); return __webpack_exports__ }; -/************************************************************************/ -// module_federation/runtime +// webpack/runtime/ensure_chunk (() => { - -if(!__webpack_require__.federation){ - __webpack_require__.federation = { - -chunkMatcher: function(chunkId) { - return true; -}, -rootOutputDir: "", - - }; +__webpack_require__.f = {}; +// This file contains only the entry chunk. +// The chunk loading function for additional chunks +__webpack_require__.e = (chunkId) => { + return Promise.all( + Object.keys(__webpack_require__.f).reduce((promises, key) => { + __webpack_require__.f[key](chunkId, promises); + return promises; + }, []) + ); +}; +})(); +// webpack/runtime/get javascript chunk filename +(() => { +// This function allow to reference chunks +__webpack_require__.u = (chunkId) => { + // return url for filenames not based on template + + // return url for filenames based on template + return "" + chunkId + ".javascript" } - })(); -// webpack/runtime/embed_federation_runtime +// webpack/runtime/global (() => { -var prevStartup = __webpack_require__.x; -var hasRun = false; -__webpack_require__.x = function() { - if (!hasRun) { - hasRun = true; - __webpack_require__("@module-federation/runtime/rspack.js!=!data:text/javascript,import __module_federation_bundler_runtime__ from \\"/node_modules/.pnpm/@module-federation+webpack-bundler-runtime@2.0.1/node_modules/@module-federation/webpack-bundler-runtime/dist/index.cjs.cjs\\";const __module_federation_runtime_plugins__ = [];const __module_federation_remote_infos__ = {};const __module_federation_container_name__ = \\"testContainer\\";const __module_federation_share_strategy__ = \\"version-first\\";if((__webpack_require__.initializeSharingData||__webpack_require__.initializeExposesData)&&__webpack_require__.federation){var __webpack_require___remotesLoadingData,__webpack_require___remotesLoadingData1,__webpack_require___initializeSharingData,__webpack_require___consumesLoadingData,__webpack_require___consumesLoadingData1,__webpack_require___initializeExposesData,__webpack_require___consumesLoadingData2;const override=(obj,key,value)=>{if(!obj)return;if(obj[key])obj[key]=value};const merge=(obj,key,fn)=>{const value=fn();if(Array.isArray(value)){var _obj,_key;var _;(_=(_obj=obj)[_key=key])!==null&&_!==void 0?_:_obj[_key]=[];obj[key].push(...value)}else if(typeof value===\\"object\\"&&value!==null){var _obj1,_key1;var _1;(_1=(_obj1=obj)[_key1=key])!==null&&_1!==void 0?_1:_obj1[_key1]={};Object.assign(obj[key],value)}};const early=(obj,key,initial)=>{var _obj,_key;var _;(_=(_obj=obj)[_key=key])!==null&&_!==void 0?_:_obj[_key]=initial()};var __webpack_require___remotesLoadingData_chunkMapping;const remotesLoadingChunkMapping=(__webpack_require___remotesLoadingData_chunkMapping=(__webpack_require___remotesLoadingData=__webpack_require__.remotesLoadingData)===null||__webpack_require___remotesLoadingData===void 0?void 0:__webpack_require___remotesLoadingData.chunkMapping)!==null&&__webpack_require___remotesLoadingData_chunkMapping!==void 0?__webpack_require___remotesLoadingData_chunkMapping:{};var __webpack_require___remotesLoadingData_moduleIdToRemoteDataMapping;const remotesLoadingModuleIdToRemoteDataMapping=(__webpack_require___remotesLoadingData_moduleIdToRemoteDataMapping=(__webpack_require___remotesLoadingData1=__webpack_require__.remotesLoadingData)===null||__webpack_require___remotesLoadingData1===void 0?void 0:__webpack_require___remotesLoadingData1.moduleIdToRemoteDataMapping)!==null&&__webpack_require___remotesLoadingData_moduleIdToRemoteDataMapping!==void 0?__webpack_require___remotesLoadingData_moduleIdToRemoteDataMapping:{};var __webpack_require___initializeSharingData_scopeToSharingDataMapping;const initializeSharingScopeToInitDataMapping=(__webpack_require___initializeSharingData_scopeToSharingDataMapping=(__webpack_require___initializeSharingData=__webpack_require__.initializeSharingData)===null||__webpack_require___initializeSharingData===void 0?void 0:__webpack_require___initializeSharingData.scopeToSharingDataMapping)!==null&&__webpack_require___initializeSharingData_scopeToSharingDataMapping!==void 0?__webpack_require___initializeSharingData_scopeToSharingDataMapping:{};var __webpack_require___consumesLoadingData_chunkMapping;const consumesLoadingChunkMapping=(__webpack_require___consumesLoadingData_chunkMapping=(__webpack_require___consumesLoadingData=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData===void 0?void 0:__webpack_require___consumesLoadingData.chunkMapping)!==null&&__webpack_require___consumesLoadingData_chunkMapping!==void 0?__webpack_require___consumesLoadingData_chunkMapping:{};var __webpack_require___consumesLoadingData_moduleIdToConsumeDataMapping;const consumesLoadingModuleToConsumeDataMapping=(__webpack_require___consumesLoadingData_moduleIdToConsumeDataMapping=(__webpack_require___consumesLoadingData1=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData1===void 0?void 0:__webpack_require___consumesLoadingData1.moduleIdToConsumeDataMapping)!==null&&__webpack_require___consumesLoadingData_moduleIdToConsumeDataMapping!==void 0?__webpack_require___consumesLoadingData_moduleIdToConsumeDataMapping:{};const consumesLoadinginstalledModules={};const initializeSharingInitPromises=[];const initializeSharingInitTokens={};const containerShareScope=(__webpack_require___initializeExposesData=__webpack_require__.initializeExposesData)===null||__webpack_require___initializeExposesData===void 0?void 0:__webpack_require___initializeExposesData.shareScope;for(const key in __module_federation_bundler_runtime__){__webpack_require__.federation[key]=__module_federation_bundler_runtime__[key]}early(__webpack_require__.federation,\\"consumesLoadingModuleToHandlerMapping\\",()=>{const consumesLoadingModuleToHandlerMapping={};for(let[moduleId,data]of Object.entries(consumesLoadingModuleToConsumeDataMapping)){consumesLoadingModuleToHandlerMapping[moduleId]={getter:data.fallback,shareInfo:{shareConfig:{fixedDependencies:false,requiredVersion:data.requiredVersion,strictVersion:data.strictVersion,singleton:data.singleton,eager:data.eager},scope:[data.shareScope]},shareKey:data.shareKey}}return consumesLoadingModuleToHandlerMapping});early(__webpack_require__.federation,\\"initOptions\\",()=>({}));early(__webpack_require__.federation.initOptions,\\"name\\",()=>__module_federation_container_name__);early(__webpack_require__.federation.initOptions,\\"shareStrategy\\",()=>__module_federation_share_strategy__);early(__webpack_require__.federation.initOptions,\\"shared\\",()=>{const shared={};for(let[scope,stages]of Object.entries(initializeSharingScopeToInitDataMapping)){for(let stage of stages){if(typeof stage===\\"object\\"&&stage!==null){const{name,version,factory,eager,singleton,requiredVersion,strictVersion}=stage;const shareConfig={};const isValidValue=function(val){return typeof val!==\\"undefined\\"};if(isValidValue(singleton)){shareConfig.singleton=singleton}if(isValidValue(requiredVersion)){shareConfig.requiredVersion=requiredVersion}if(isValidValue(eager)){shareConfig.eager=eager}if(isValidValue(strictVersion)){shareConfig.strictVersion=strictVersion}const options={version,scope:[scope],shareConfig,get:factory};if(shared[name]){shared[name].push(options)}else{shared[name]=[options]}}}}return shared});merge(__webpack_require__.federation.initOptions,\\"remotes\\",()=>Object.values(__module_federation_remote_infos__).flat().filter(remote=>remote.externalType===\\"script\\"));merge(__webpack_require__.federation.initOptions,\\"plugins\\",()=>__module_federation_runtime_plugins__);early(__webpack_require__.federation,\\"bundlerRuntimeOptions\\",()=>({}));early(__webpack_require__.federation.bundlerRuntimeOptions,\\"remotes\\",()=>({}));early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"chunkMapping\\",()=>remotesLoadingChunkMapping);early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"remoteInfos\\",()=>__module_federation_remote_infos__);early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"idToExternalAndNameMapping\\",()=>{const remotesLoadingIdToExternalAndNameMappingMapping={};for(let[moduleId,data]of Object.entries(remotesLoadingModuleIdToRemoteDataMapping)){remotesLoadingIdToExternalAndNameMappingMapping[moduleId]=[data.shareScope,data.name,data.externalModuleId,data.remoteName]}return remotesLoadingIdToExternalAndNameMappingMapping});early(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"webpackRequire\\",()=>__webpack_require__);merge(__webpack_require__.federation.bundlerRuntimeOptions.remotes,\\"idToRemoteMap\\",()=>{const idToRemoteMap={};for(let[id,remoteData]of Object.entries(remotesLoadingModuleIdToRemoteDataMapping)){const info=__module_federation_remote_infos__[remoteData.remoteName];if(info)idToRemoteMap[id]=info}return idToRemoteMap});override(__webpack_require__,\\"S\\",__webpack_require__.federation.bundlerRuntime.S);if(__webpack_require__.federation.attachShareScopeMap){__webpack_require__.federation.attachShareScopeMap(__webpack_require__)}override(__webpack_require__.f,\\"remotes\\",(chunkId,promises)=>__webpack_require__.federation.bundlerRuntime.remotes({chunkId,promises,chunkMapping:remotesLoadingChunkMapping,idToExternalAndNameMapping:__webpack_require__.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping,idToRemoteMap:__webpack_require__.federation.bundlerRuntimeOptions.remotes.idToRemoteMap,webpackRequire:__webpack_require__}));override(__webpack_require__.f,\\"consumes\\",(chunkId,promises)=>__webpack_require__.federation.bundlerRuntime.consumes({chunkId,promises,chunkMapping:consumesLoadingChunkMapping,moduleToHandlerMapping:__webpack_require__.federation.consumesLoadingModuleToHandlerMapping,installedModules:consumesLoadinginstalledModules,webpackRequire:__webpack_require__}));override(__webpack_require__,\\"I\\",(name,initScope)=>__webpack_require__.federation.bundlerRuntime.I({shareScopeName:name,initScope,initPromises:initializeSharingInitPromises,initTokens:initializeSharingInitTokens,webpackRequire:__webpack_require__}));override(__webpack_require__,\\"initContainer\\",(shareScope,initScope,remoteEntryInitOptions)=>__webpack_require__.federation.bundlerRuntime.initContainerEntry({shareScope,initScope,remoteEntryInitOptions,shareScopeKey:containerShareScope,webpackRequire:__webpack_require__}));override(__webpack_require__,\\"getContainer\\",(module1,getScope)=>{var moduleMap=__webpack_require__.initializeExposesData.moduleMap;__webpack_require__.R=getScope;getScope=Object.prototype.hasOwnProperty.call(moduleMap,module1)?moduleMap[module1]():Promise.resolve().then(()=>{throw new Error('Module \\"'+module1+'\\" does not exist in container.')});__webpack_require__.R=undefined;return getScope});__webpack_require__.federation.instance=__webpack_require__.federation.runtime.init(__webpack_require__.federation.initOptions);if((__webpack_require___consumesLoadingData2=__webpack_require__.consumesLoadingData)===null||__webpack_require___consumesLoadingData2===void 0?void 0:__webpack_require___consumesLoadingData2.initialConsumes){__webpack_require__.federation.bundlerRuntime.installInitialConsumes({webpackRequire:__webpack_require__,installedModules:consumesLoadinginstalledModules,initialConsumes:__webpack_require__.consumesLoadingData.initialConsumes,moduleToHandlerMapping:__webpack_require__.federation.consumesLoadingModuleToHandlerMapping})}}") +__webpack_require__.g = (() => { + if (typeof globalThis === 'object') return globalThis; + try { + return this || new Function('return this')(); + } catch (e) { + if (typeof window === 'object') return window; } - if (typeof prevStartup === 'function') { - return prevStartup(); - } else { - console.warn('[MF] Invalid prevStartup'); - } -}; +})(); })(); // webpack/runtime/has_own_property (() => { __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +})(); +// webpack/runtime/load_script +(() => { +var inProgress = {}; + + +// loadScript function to load a script via script tag +__webpack_require__.l = function (url, done, key, chunkId) { + if (inProgress[url]) { + inProgress[url].push(done); + return; + } + var script, needAttach; + if (key !== undefined) { + var scripts = document.getElementsByTagName("script"); + for (var i = 0; i < scripts.length; i++) { + var s = scripts[i]; + if (s.getAttribute("src") == url) { + script = s; + break; + } + } + } + if (!script) { + needAttach = true; + script = document.createElement('script'); + +script.timeout = 120; +if (__webpack_require__.nc) { + script.setAttribute("nonce", __webpack_require__.nc); +} + + + +script.src = url; + + + + } + inProgress[url] = [done]; + var onScriptComplete = function (prev, event) { + script.onerror = script.onload = null; + clearTimeout(timeout); + var doneFns = inProgress[url]; + delete inProgress[url]; + script.parentNode && script.parentNode.removeChild(script); + doneFns && + doneFns.forEach(function (fn) { + return fn(event); + }); + if (prev) return prev(event); + }; + var timeout = setTimeout( + onScriptComplete.bind(null, undefined, { + type: 'timeout', + target: script + }), + 120000 + ); + script.onerror = onScriptComplete.bind(null, script.onerror); + script.onload = onScriptComplete.bind(null, script.onload); + needAttach && document.head.appendChild(script); +}; + })(); // webpack/runtime/make_namespace_object (() => { @@ -164,9 +202,20 @@ __webpack_require__.r = (exports) => { Object.defineProperty(exports, '__esModule', { value: true }); }; })(); -// webpack/runtime/rspack_version +// webpack/runtime/module_federation/runtime (() => { -__webpack_require__.rv = () => ("1.6.0") + +if(!__webpack_require__.federation){ + __webpack_require__.federation = { + +chunkMatcher: function(chunkId) { + return true; +}, +rootOutputDir: "", + + }; +} + })(); // webpack/runtime/sharing (() => { @@ -176,23 +225,152 @@ __webpack_require__.initializeSharingData = { scopeToSharingDataMapping: { }, u __webpack_require__.I = __webpack_require__.I || function() { throw new Error("should have __webpack_require__.I") } })(); -// webpack/runtime/repack/polyfills +// repack/polyfills (() => { __webpack_require__("./__fixtures__/react-native/polyfill1.js"); __webpack_require__("./__fixtures__/react-native/polyfill2.js"); +})(); +// webpack/runtime/auto_public_path +(() => { +var scriptUrl; + +if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + ""; +var document = __webpack_require__.g.document; +if (!scriptUrl && document) { + // Technically we could use \`document.currentScript instanceof window.HTMLScriptElement\`, + // but an attacker could try to inject \`\` + // and use \`\` + if (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') scriptUrl = document.currentScript.src; + if (!scriptUrl) { + var scripts = document.getElementsByTagName("script"); + if (scripts.length) { + var i = scripts.length - 1; + while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src; + } + } +} + +// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration", +// or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.', +if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser"); +scriptUrl = scriptUrl.replace(/^blob:/, "").replace(/#.*$/, "").replace(/\\?.*$/, "").replace(/\\/[^\\/]+$/, "/"); + +__webpack_require__.p = scriptUrl; + })(); // webpack/runtime/consumes_loading (() => { __webpack_require__.consumesLoadingData = { chunkMapping: {}, moduleIdToConsumeDataMapping: {}, initialConsumes: [] }; +__webpack_require__.f.consumes = __webpack_require__.f.consumes || function() { throw new Error("should have __webpack_require__.f.consumes") } +})(); +// webpack/runtime/jsonp_chunk_loading +(() => { + + // object to store loaded and loading chunks + // undefined = chunk not loaded, null = chunk preloaded/prefetched + // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded + var jsonpInstalledChunks = {"main": 0,}; + + __webpack_require__.f.j = function (chunkId, promises) { + // JSONP chunk loading for javascript +var installedChunkData = __webpack_require__.o(jsonpInstalledChunks, chunkId) + ? jsonpInstalledChunks[chunkId] + : undefined; +if (installedChunkData !== 0) { + // 0 means "already installed". + + // a Promise means "currently loading". + if (installedChunkData) { + promises.push(installedChunkData[2]); + } else { + if (true) { + // setup Promise in chunk cache + var promise = new Promise((resolve, reject) => (installedChunkData = jsonpInstalledChunks[chunkId] = [resolve, reject])); + promises.push((installedChunkData[2] = promise)); + + // start chunk loading + var url = __webpack_require__.p + __webpack_require__.u(chunkId); + // create error before stack unwound to get useful stacktrace later + var error = new Error(); + var loadingEnded = function (event) { + if (__webpack_require__.o(jsonpInstalledChunks, chunkId)) { + installedChunkData = jsonpInstalledChunks[chunkId]; + if (installedChunkData !== 0) jsonpInstalledChunks[chunkId] = undefined; + if (installedChunkData) { + var errorType = + event && (event.type === 'load' ? 'missing' : event.type); + var realSrc = event && event.target && event.target.src; + error.message = + 'Loading chunk ' + + chunkId + + ' failed.\\n(' + + errorType + + ': ' + + realSrc + + ')'; + error.name = 'ChunkLoadError'; + error.type = errorType; + error.request = realSrc; + installedChunkData[1](error); + } + } + }; + __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId); + } + } +} + + } + // install a JSONP callback for chunk loading +var __rspack_jsonp = (parentChunkLoadingFunction, data) => { + var [chunkIds, moreModules, runtime] = data; + // add "moreModules" to the modules object, + // then flag all "chunkIds" as loaded and fire callback + var moduleId, chunkId, i = 0; + if (chunkIds.some((id) => (jsonpInstalledChunks[id] !== 0))) { + for (moduleId in moreModules) { + if (__webpack_require__.o(moreModules, moduleId)) { + __webpack_require__.m[moduleId] = moreModules[moduleId]; + } + } + if (runtime) var result = runtime(__webpack_require__); + } + if (parentChunkLoadingFunction) parentChunkLoadingFunction(data); + for (; i < chunkIds.length; i++) { + chunkId = chunkIds[i]; + if ( + __webpack_require__.o(jsonpInstalledChunks, chunkId) && + jsonpInstalledChunks[chunkId] + ) { + jsonpInstalledChunks[chunkId][0](); + } + jsonpInstalledChunks[chunkId] = 0; + } + +}; + +var jsonpChunkLoadingGlobal = self["rspackChunk"] = self["rspackChunk"] || []; +jsonpChunkLoadingGlobal.forEach(__rspack_jsonp.bind(null, 0)); +jsonpChunkLoadingGlobal.push = __rspack_jsonp.bind(null, jsonpChunkLoadingGlobal.push.bind(jsonpChunkLoadingGlobal)); })(); -// webpack/runtime/rspack_unique_id +// webpack/runtime/embed_federation_runtime (() => { -__webpack_require__.ruid = "bundler=rspack@1.6.0"; +var prevStartup = __webpack_require__.x; +var hasRun = false; +__webpack_require__.x = function () { + if (!hasRun) { + hasRun = true; + __webpack_require__("@module-federation/runtime/rspack.js!=!data:text/javascript,import%20__module_federation_bundler_runtime__%20from%20%22%2FUsers%2Fdaniel.williams%2F.t3%2Fworktrees%2Frepack%2Fdannyhw-rspack-2%2Fnode_modules%2F.pnpm%2F%40module-federation%2Bwebpack-bundler-runtime%402.0.1%2Fnode_modules%2F%40module-federation%2Fwebpack-bundler-runtime%2Fdist%2Findex.cjs.cjs%22%3B%3Bconst%20__module_federation_runtime_plugins__%20%3D%20%5B%5D.filter((%7B%20plugin%20%7D)%20%3D%3E%20plugin).map((%7B%20plugin%2C%20params%20%7D)%20%3D%3E%20plugin(params))%3Bconst%20__module_federation_remote_infos__%20%3D%20%7B%7D%3Bconst%20__module_federation_container_name__%20%3D%20%22testContainer%22%3Bconst%20__module_federation_share_strategy__%20%3D%20%22version-first%22%3Bconst%20__module_federation_share_fallbacks__%20%3D%20undefined%3Bconst%20__module_federation_library_type__%20%3D%20%22var%22%3Bconst%20runtimeRequire%3D__webpack_require__%3Bif((runtimeRequire.initializeSharingData%7C%7CruntimeRequire.initializeExposesData)%26%26runtimeRequire.federation)%7Bvar%20_ref%2C_ref1%2C_ref2%2C_ref3%2C_ref4%3Bvar%20_runtimeRequire_remotesLoadingData%2C_runtimeRequire_remotesLoadingData1%2C_runtimeRequire_initializeSharingData%2C_runtimeRequire_consumesLoadingData%2C_runtimeRequire_consumesLoadingData1%2C_runtimeRequire_initializeExposesData%2C_runtimeRequire_consumesLoadingData2%3Bconst%20override%3D(obj%2Ckey%2Cvalue)%3D%3E%7Bif(!obj)return%3Bif(obj%5Bkey%5D)obj%5Bkey%5D%3Dvalue%7D%3Bconst%20merge%3D(obj%2Ckey%2Cfn)%3D%3E%7Bconst%20value%3Dfn()%3Bif(Array.isArray(value))%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3D%5B%5D%3Bobj%5Bkey%5D.push(...value)%7Delse%20if(typeof%20value%3D%3D%3D%22object%22%26%26value!%3D%3Dnull)%7Bvar%20_obj1%2C_key1%2C_1%3B(_1%3D(_obj1%3Dobj)%5B_key1%3Dkey%5D)!%3D%3Dnull%26%26_1!%3D%3Dvoid%200%3F_1%3A_obj1%5B_key1%5D%3D%7B%7D%3BObject.assign(obj%5Bkey%5D%2Cvalue)%7D%7D%3Bconst%20early%3D(obj%2Ckey%2Cinitial)%3D%3E%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3Dinitial()%7D%3Bconst%20remotesLoadingChunkMapping%3D(_ref%3D(_runtimeRequire_remotesLoadingData%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref!%3D%3Dvoid%200%3F_ref%3A%7B%7D%3Bconst%20remotesLoadingModuleIdToRemoteDataMapping%3D(_ref1%3D(_runtimeRequire_remotesLoadingData1%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData1.moduleIdToRemoteDataMapping)!%3D%3Dnull%26%26_ref1!%3D%3Dvoid%200%3F_ref1%3A%7B%7D%3Bconst%20initializeSharingScopeToInitDataMapping%3D(_ref2%3D(_runtimeRequire_initializeSharingData%3DruntimeRequire.initializeSharingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeSharingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeSharingData.scopeToSharingDataMapping)!%3D%3Dnull%26%26_ref2!%3D%3Dvoid%200%3F_ref2%3A%7B%7D%3Bconst%20consumesLoadingChunkMapping%3D(_ref3%3D(_runtimeRequire_consumesLoadingData%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref3!%3D%3Dvoid%200%3F_ref3%3A%7B%7D%3Bconst%20consumesLoadingModuleToConsumeDataMapping%3D(_ref4%3D(_runtimeRequire_consumesLoadingData1%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData1.moduleIdToConsumeDataMapping)!%3D%3Dnull%26%26_ref4!%3D%3Dvoid%200%3F_ref4%3A%7B%7D%3Bconst%20consumesLoadinginstalledModules%3D%7B%7D%3Bconst%20initializeSharingInitPromises%3D%5B%5D%3Bconst%20initializeSharingInitTokens%3D%7B%7D%3Bconst%20containerShareScope%3D(_runtimeRequire_initializeExposesData%3DruntimeRequire.initializeExposesData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeExposesData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeExposesData.shareScope%3Bfor(const%20key%20in%20__module_federation_bundler_runtime__)%7BruntimeRequire.federation%5Bkey%5D%3D__module_federation_bundler_runtime__%5Bkey%5D%7Dearly(runtimeRequire.federation%2C%22libraryType%22%2C()%3D%3E__module_federation_library_type__)%3Bearly(runtimeRequire.federation%2C%22sharedFallback%22%2C()%3D%3E__module_federation_share_fallbacks__)%3Bconst%20sharedFallback%3DruntimeRequire.federation.sharedFallback%3Bearly(runtimeRequire.federation%2C%22consumesLoadingModuleToHandlerMapping%22%2C()%3D%3E%7Bconst%20consumesLoadingModuleToHandlerMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(consumesLoadingModuleToConsumeDataMapping))%7Bvar%20_runtimeRequire_federation_bundlerRuntime%3BconsumesLoadingModuleToHandlerMapping%5BmoduleId%5D%3D%7Bgetter%3AsharedFallback%3F(_runtimeRequire_federation_bundlerRuntime%3DruntimeRequire.federation.bundlerRuntime)%3D%3D%3Dnull%7C%7C_runtimeRequire_federation_bundlerRuntime%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_federation_bundlerRuntime.getSharedFallbackGetter(%7BshareKey%3Adata.shareKey%2Cfactory%3Adata.fallback%2CwebpackRequire%3AruntimeRequire%2ClibraryType%3AruntimeRequire.federation.libraryType%7D)%3Adata.fallback%2CtreeShakingGetter%3AsharedFallback%3Fdata.fallback%3Aundefined%2CshareInfo%3A%7BshareConfig%3A%7BfixedDependencies%3Afalse%2CrequiredVersion%3Adata.requiredVersion%2CstrictVersion%3Adata.strictVersion%2Csingleton%3Adata.singleton%2Ceager%3Adata.eager%7D%2Cscope%3A%5Bdata.shareScope%5D%7D%2CshareKey%3Adata.shareKey%2CtreeShaking%3AruntimeRequire.federation.sharedFallback%3F%7Bget%3Adata.fallback%2Cmode%3Adata.treeShakingMode%7D%3Aundefined%7D%7Dreturn%20consumesLoadingModuleToHandlerMapping%7D)%3Bearly(runtimeRequire.federation%2C%22initOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.initOptions%2C%22name%22%2C()%3D%3E__module_federation_container_name__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shareStrategy%22%2C()%3D%3E__module_federation_share_strategy__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shared%22%2C()%3D%3E%7Bconst%20shared%3D%7B%7D%3Bfor(let%5Bscope%2Cstages%5Dof%20Object.entries(initializeSharingScopeToInitDataMapping))%7Bfor(let%20stage%20of%20stages)%7Bif(typeof%20stage%3D%3D%3D%22object%22%26%26stage!%3D%3Dnull)%7Bconst%7Bname%2Cversion%2Cfactory%2Ceager%2Csingleton%2CrequiredVersion%2CstrictVersion%2CtreeShakingMode%7D%3Dstage%3Bconst%20shareConfig%3D%7B%7D%3Bconst%20isValidValue%3Dfunction(val)%7Breturn%20typeof%20val!%3D%3D%22undefined%22%7D%3Bif(isValidValue(singleton))%7BshareConfig.singleton%3Dsingleton%7Dif(isValidValue(requiredVersion))%7BshareConfig.requiredVersion%3DrequiredVersion%7Dif(isValidValue(eager))%7BshareConfig.eager%3Deager%7Dif(isValidValue(strictVersion))%7BshareConfig.strictVersion%3DstrictVersion%7Dconst%20options%3D%7Bversion%2Cscope%3A%5Bscope%5D%2CshareConfig%2Cget%3Afactory%2CtreeShaking%3AtreeShakingMode%3F%7Bmode%3AtreeShakingMode%7D%3Aundefined%7D%3Bif(shared%5Bname%5D)%7Bshared%5Bname%5D.push(options)%7Delse%7Bshared%5Bname%5D%3D%5Boptions%5D%7D%7D%7D%7Dreturn%20shared%7D)%3Bmerge(runtimeRequire.federation.initOptions%2C%22remotes%22%2C()%3D%3EObject.values(__module_federation_remote_infos__).flat().filter(remote%3D%3Eremote.externalType%3D%3D%3D%22script%22))%3Bmerge(runtimeRequire.federation.initOptions%2C%22plugins%22%2C()%3D%3E__module_federation_runtime_plugins__)%3Bearly(runtimeRequire.federation%2C%22bundlerRuntimeOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions%2C%22remotes%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22chunkMapping%22%2C()%3D%3EremotesLoadingChunkMapping)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22remoteInfos%22%2C()%3D%3E__module_federation_remote_infos__)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToExternalAndNameMapping%22%2C()%3D%3E%7Bconst%20remotesLoadingIdToExternalAndNameMappingMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7BremotesLoadingIdToExternalAndNameMappingMapping%5BmoduleId%5D%3D%5Bdata.shareScope%2Cdata.name%2Cdata.externalModuleId%2Cdata.remoteName%5D%7Dreturn%20remotesLoadingIdToExternalAndNameMappingMapping%7D)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22webpackRequire%22%2C()%3D%3EruntimeRequire)%3Bmerge(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToRemoteMap%22%2C()%3D%3E%7Bconst%20idToRemoteMap%3D%7B%7D%3Bfor(let%5Bid%2CremoteData%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7Bconst%20info%3D__module_federation_remote_infos__%5BremoteData.remoteName%5D%3Bif(info)idToRemoteMap%5Bid%5D%3Dinfo%7Dreturn%20idToRemoteMap%7D)%3Boverride(runtimeRequire%2C%22S%22%2CruntimeRequire.federation.bundlerRuntime.S)%3Bif(runtimeRequire.federation.attachShareScopeMap)%7BruntimeRequire.federation.attachShareScopeMap(runtimeRequire)%7Doverride(runtimeRequire.f%2C%22remotes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.remotes(%7BchunkId%2Cpromises%2CchunkMapping%3AremotesLoadingChunkMapping%2CidToExternalAndNameMapping%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping%2CidToRemoteMap%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToRemoteMap%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire.f%2C%22consumes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.consumes(%7BchunkId%2Cpromises%2CchunkMapping%3AconsumesLoadingChunkMapping%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%2CinstalledModules%3AconsumesLoadinginstalledModules%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22I%22%2C(name%2CinitScope)%3D%3EruntimeRequire.federation.bundlerRuntime.I(%7BshareScopeName%3Aname%2CinitScope%2CinitPromises%3AinitializeSharingInitPromises%2CinitTokens%3AinitializeSharingInitTokens%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22initContainer%22%2C(shareScope%2CinitScope%2CremoteEntryInitOptions)%3D%3EruntimeRequire.federation.bundlerRuntime.initContainerEntry(%7BshareScope%2CinitScope%2CremoteEntryInitOptions%2CshareScopeKey%3AcontainerShareScope%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22getContainer%22%2C(module%2CgetScope)%3D%3E%7Bvar%20moduleMap%3DruntimeRequire.initializeExposesData.moduleMap%3BruntimeRequire.R%3DgetScope%3BgetScope%3DObject.prototype.hasOwnProperty.call(moduleMap%2Cmodule)%3FmoduleMap%5Bmodule%5D()%3APromise.resolve().then(()%3D%3E%7Bthrow%20new%20Error('Module%20%22'%2Bmodule%2B'%22%20does%20not%20exist%20in%20container.')%7D)%3BruntimeRequire.R%3Dundefined%3Breturn%20getScope%7D)%3BruntimeRequire.federation.instance%3DruntimeRequire.federation.bundlerRuntime.init(%7BwebpackRequire%3AruntimeRequire%7D)%3Bif((_runtimeRequire_consumesLoadingData2%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData2%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData2.initialConsumes)%7BruntimeRequire.federation.bundlerRuntime.installInitialConsumes(%7BwebpackRequire%3AruntimeRequire%2CinstalledModules%3AconsumesLoadinginstalledModules%2CinitialConsumes%3AruntimeRequire.consumesLoadingData.initialConsumes%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%7D)%7D%7D") + } + if (typeof prevStartup === "function") { + return prevStartup(); + } + console.warn("[MF] Invalid prevStartup"); +}; })(); -/************************************************************************/ // module factories are used so entry inlining is disabled // run startup var __webpack_exports__ = __webpack_require__.x(); @@ -201,64 +379,48 @@ var __webpack_exports__ = __webpack_require__.x(); `; exports[`NativeEntryPlugin > without Module Federation > in production mode > should expose inlined polyfills if runtime requirements are removed 1`] = ` -"runtime/repack/polyfills -(() => { -__webpack_require__(101); -__webpack_require__(148); -})(); -// webpack/runtime/rspack_unique_id +"repack/polyfills (() => { -__webpack_require__.ruid = "bundler=rspack@1.6.0"; - +__webpack_require__(721); +__webpack_require__(320); })(); -/************************************************************************/ // startup // Load entry module and return exports -__webpack_modules__[101](); -__webpack_modules__[148](); -__webpack_modules__[570](); +__webpack_modules__[721](); +__webpack_modules__[320](); +__webpack_modules__[110](); // This entry module doesn't tell about it's top-level declarations so it can't be inlined -__webpack_modules__[17](); -__webpack_modules__[296](); +__webpack_modules__[741](); +__webpack_modules__[980](); var __webpack_exports__ = {} -__webpack_modules__[340](); +__webpack_modules__[620](); })() ;" `; exports[`NativeEntryPlugin > without Module Federation > in production mode > should keep runtime polyfill requires aligned with production module ids 1`] = ` -"runtime/repack/polyfills +"repack/polyfills (() => { -__webpack_require__(101); -__webpack_require__(148); +__webpack_require__(721); +__webpack_require__(320); })(); -// webpack/runtime/rspack_unique_id -(() => { -__webpack_require__.ruid = "bundler=rspack@1.6.0"; - -})(); -/************************************************************************/ // module factories are used so entry inlining is disabled // startup // Load entry module and return exports -__webpack_require__(101); -__webpack_require__(148); -__webpack_require__(570); -__webpack_require__(17); -__webpack_require__(296); -var __webpack_exports__ = __webpack_require__(340); +__webpack_require__(721); +__webpack_require__(320); +__webpack_require__(110); +__webpack_require__(741); +__webpack_require__(980); +var __webpack_exports__ = __webpack_require__(620); })() ;" `; exports[`NativeEntryPlugin > without Module Federation > should execute polyfills runtime module before entry startup 1`] = ` -"(() => { // webpackBootstrap +"(() => { var __webpack_modules__ = ({ -"../../../../packages/repack/dist/modules/IncludeModules.js": -/*!******************************************************************!*\\ - !*** ../../../../packages/repack/dist/modules/IncludeModules.js ***! - \\******************************************************************/ -(function () { +"../../../../packages/repack/dist/modules/IncludeModules.js"() { /* * This module is added as an entry module to prevent stripping of these React Native deep imports from the bundle. * We use require.resolve from Rspack/Webpack to ensure these modules are included even if not directly used. @@ -266,59 +428,38 @@ var __webpack_modules__ = ({ * These modules are required by assetsLoader and should be shared as deep imports when using ModuleFederation. */ -/*require.resolve*/(Object(function webpackMissingModule() { var e = new Error("Cannot find module 'react-native/Libraries/Image/AssetRegistry'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); -/*require.resolve*/(Object(function webpackMissingModule() { var e = new Error("Cannot find module 'react-native/Libraries/Image/AssetSourceResolver'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); +/*require.resolve*/(Object(function __rspack_missing_module() { var e = new Error("Cannot find module 'react-native/Libraries/Image/AssetRegistry'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); +/*require.resolve*/(Object(function __rspack_missing_module() { var e = new Error("Cannot find module 'react-native/Libraries/Image/AssetSourceResolver'"); e.code = 'MODULE_NOT_FOUND'; throw e; }())); -}), -"../../../../packages/repack/dist/modules/InitializeScriptManager.js": -/*!***************************************************************************!*\\ - !*** ../../../../packages/repack/dist/modules/InitializeScriptManager.js ***! - \\***************************************************************************/ -(function () { +}, +"../../../../packages/repack/dist/modules/InitializeScriptManager.js"() { throw new Error(" × Module parse failed:\\n ╰─▶ × JavaScript parse error: 'import', and 'export' cannot be used outside of module code\\n ╭─[1:0]\\n 1 │ import { ScriptManager } from './ScriptManager/ScriptManager.js';\\n · ──────\\n 2 │ ScriptManager.init();\\n ╰────\\n \\n help: \\n You may need an appropriate loader to handle this file type.\\n"); -}), -"./__fixtures__/react-native/Libraries/Core/InitializeCore.js": -/*!********************************************************************!*\\ - !*** ./__fixtures__/react-native/Libraries/Core/InitializeCore.js ***! - \\********************************************************************/ -(function () { +}, +"./__fixtures__/react-native/Libraries/Core/InitializeCore.js"() { globalThis.__INITIALIZE_CORE__ = true; -}), -"./__fixtures__/react-native/polyfill1.js": -/*!************************************************!*\\ - !*** ./__fixtures__/react-native/polyfill1.js ***! - \\************************************************/ -(function () { +}, +"./__fixtures__/react-native/polyfill1.js"() { globalThis.__POLYFILL_1__ = true; -}), -"./__fixtures__/react-native/polyfill2.js": -/*!************************************************!*\\ - !*** ./__fixtures__/react-native/polyfill2.js ***! - \\************************************************/ -(function () { +}, +"./__fixtures__/react-native/polyfill2.js"() { globalThis.__POLYFILL_2__ = true; -}), -"./index.js": -/*!******************!*\\ - !*** ./index.js ***! - \\******************/ -(function (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { +}, +"./index.js"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); globalThis.__APP_ENTRY__ = true; -}), +}, }); -/************************************************************************/ // The module cache var __webpack_module_cache__ = {}; @@ -345,7 +486,6 @@ return module.exports; // expose the modules object (__webpack_modules__) __webpack_require__.m = __webpack_modules__; -/************************************************************************/ // webpack/runtime/make_namespace_object (() => { // define __esModule on exports @@ -356,21 +496,11 @@ __webpack_require__.r = (exports) => { Object.defineProperty(exports, '__esModule', { value: true }); }; })(); -// webpack/runtime/rspack_version -(() => { -__webpack_require__.rv = () => ("1.6.0") -})(); -// webpack/runtime/repack/polyfills +// repack/polyfills (() => { __webpack_require__("./__fixtures__/react-native/polyfill1.js"); __webpack_require__("./__fixtures__/react-native/polyfill2.js"); })(); -// webpack/runtime/rspack_unique_id -(() => { -__webpack_require__.ruid = "bundler=rspack@1.6.0"; - -})(); -/************************************************************************/ // module factories are used so entry inlining is disabled // startup // Load entry module and return exports diff --git a/tests/integration/src/plugins/__snapshots__/webpack/NativeEntryPlugin.test.ts.snap b/tests/integration/src/plugins/__snapshots__/webpack/NativeEntryPlugin.test.ts.snap index b588326a2..e02409565 100644 --- a/tests/integration/src/plugins/__snapshots__/webpack/NativeEntryPlugin.test.ts.snap +++ b/tests/integration/src/plugins/__snapshots__/webpack/NativeEntryPlugin.test.ts.snap @@ -330,7 +330,7 @@ globalThis.__APP_ENTRY__ = true; `; exports[`NativeEntryPlugin > without Module Federation > in production mode > should expose inlined polyfills if runtime requirements are removed 1`] = ` -"runtime/repack/polyfills */ +"repack/polyfills */ /******/ (() => { /******/ __webpack_require__(721); /******/ __webpack_require__(320); @@ -354,7 +354,7 @@ exports[`NativeEntryPlugin > without Module Federation > in production mode > sh `; exports[`NativeEntryPlugin > without Module Federation > in production mode > should keep runtime polyfill requires aligned with production module ids 1`] = ` -"runtime/repack/polyfills */ +"repack/polyfills */ /******/ (() => { /******/ __webpack_require__(721); /******/ __webpack_require__(320); From ce67626b68c3f5e124243f299f540c0c68249600 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:22 +0100 Subject: [PATCH 02/12] feat(repack): set exportsPresence to 'auto' for Rspack Rspack 2 changed the default of module.parser.javascript.exportsPresence to 'error', which fails builds on missing-export imports that React Native itself ships, such as `React.unstable_Activity` in renderApplication.js. Default it to 'auto', matching webpack and Rspack 1. Projects can still override it. --- .../test/public-environment.test.cjs | 2 ++ .../config/__tests__/getRepackConfig.test.ts | 20 +++++++++++++++++++ .../commands/common/config/getRepackConfig.ts | 10 ++++++++++ 3 files changed, 32 insertions(+) create mode 100644 packages/repack/src/commands/common/config/__tests__/getRepackConfig.test.ts diff --git a/packages/repack-expo/test/public-environment.test.cjs b/packages/repack-expo/test/public-environment.test.cjs index fc3345073..62e3a8e3a 100644 --- a/packages/repack-expo/test/public-environment.test.cjs +++ b/packages/repack-expo/test/public-environment.test.cjs @@ -93,6 +93,8 @@ function createEnvironmentCompiler( devtool: 'source-map', mode, module: { + // the Re.Pack CLI default, React Native reads `React.unstable_Activity` + parser: { javascript: { exportsPresence: 'auto' } }, rules: [ { test: /\.js$/, diff --git a/packages/repack/src/commands/common/config/__tests__/getRepackConfig.test.ts b/packages/repack/src/commands/common/config/__tests__/getRepackConfig.test.ts new file mode 100644 index 000000000..03fb4343d --- /dev/null +++ b/packages/repack/src/commands/common/config/__tests__/getRepackConfig.test.ts @@ -0,0 +1,20 @@ +import { getRepackConfig } from '../getRepackConfig.js'; + +jest.mock('../getMinimizerConfig.js'); + +describe('getRepackConfig', () => { + it("should set exportsPresence to 'auto' for Rspack", async () => { + const config = await getRepackConfig('rspack', '/project'); + + expect(config.module).toEqual({ + parser: { javascript: { exportsPresence: 'auto' } }, + }); + expect(config).not.toHaveProperty('experiments'); + }); + + it('should leave module options to webpack defaults', async () => { + const config = await getRepackConfig('webpack', '/project'); + + expect(config.module).toBeUndefined(); + }); +}); diff --git a/packages/repack/src/commands/common/config/getRepackConfig.ts b/packages/repack/src/commands/common/config/getRepackConfig.ts index 4f99140ac..827214182 100644 --- a/packages/repack/src/commands/common/config/getRepackConfig.ts +++ b/packages/repack/src/commands/common/config/getRepackConfig.ts @@ -1,13 +1,23 @@ import { getMinimizerConfig } from './getMinimizerConfig.js'; +function getModuleConfig(bundler: 'rspack' | 'webpack') { + if (bundler === 'rspack') { + // Rspack 2 defaults to 'error', which fails builds on the broken + // re-exports some React Native libraries ship. Match webpack instead. + return { parser: { javascript: { exportsPresence: 'auto' } } }; + } +} + export async function getRepackConfig( bundler: 'rspack' | 'webpack', rootDir: string ) { + const moduleConfig = getModuleConfig(bundler); const minimizerConfiguration = await getMinimizerConfig(bundler, rootDir); return { devtool: 'source-map', + module: moduleConfig, output: { clean: true, hashFunction: 'xxhash64', From 9ab8ae4050ef2f0439f6738af6bf15f295a2eb6b Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:29 +0100 Subject: [PATCH 03/12] fix(repack): default RSPACK_PROFILE to the logger trace layer Published Rspack 2 binaries are built without the perfetto trace layer, so `RSPACK_PROFILE` crashed `start` unless RSPACK_TRACE_LAYER was set. Default to the logger layer, and drop the handler for Rspack < 1.4. --- .../src/commands/rspack/profile/index.ts | 72 +++++++++++++----- .../commands/rspack/profile/profile-1.4.ts | 62 --------------- .../commands/rspack/profile/profile-legacy.ts | 75 ------------------- 3 files changed, 55 insertions(+), 154 deletions(-) delete mode 100644 packages/repack/src/commands/rspack/profile/profile-1.4.ts delete mode 100644 packages/repack/src/commands/rspack/profile/profile-legacy.ts diff --git a/packages/repack/src/commands/rspack/profile/index.ts b/packages/repack/src/commands/rspack/profile/index.ts index ca88f0856..c1c8f1d0c 100644 --- a/packages/repack/src/commands/rspack/profile/index.ts +++ b/packages/repack/src/commands/rspack/profile/index.ts @@ -1,25 +1,63 @@ -import { rspackVersion } from '@rspack/core'; +/** + * Reference: https://github.com/web-infra-dev/rspack/blob/bdfe548f4e5fd09c1ccb4d43919426819fb9a34f/packages/rspack-cli/src/utils/profile.ts + */ -function getRspackVersion() { - // get rid of `-beta`, `-rc` etc. - const version = rspackVersion.split('-')[0]; - const [major, minor, patch] = version.split('.').map(Number); - return { major, minor, patch }; -} +/** + * `RSPACK_PROFILE=ALL` // all trace events + * `RSPACK_PROFILE=OVERVIEW` // overview trace events + * `RSPACK_PROFILE=warn,tokio::net=info` // trace filter from https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#example-syntax + */ +import fs from 'node:fs'; +import path from 'node:path'; +import { rspack } from '@rspack/core'; -async function getProfilingHandler() { - const { major, minor } = getRspackVersion(); - if (major > 1 || (major === 1 && minor >= 4)) { - return await import('./profile-1.4.js'); - } - return await import('./profile-legacy.js'); -} +// published Rspack 2 binaries are built without the perfetto layer +const defaultRustTraceLayer = 'logger'; export async function applyProfile( filterValue: string, - traceLayer?: string, + traceLayer: string = defaultRustTraceLayer, traceOutput?: string ) { - const { applyProfile } = await getProfilingHandler(); - return applyProfile(filterValue, traceLayer, traceOutput); + const { asyncExitHook } = await import('exit-hook'); + + if (traceLayer !== 'logger' && traceLayer !== 'perfetto') { + throw new Error(`unsupported trace layer: ${traceLayer}`); + } + const timestamp = Date.now(); + const defaultOutputDir = path.resolve( + `.rspack-profile-${timestamp}-${process.pid}` + ); + if (!traceOutput) { + const defaultRustTracePerfettoOutput = path.resolve( + defaultOutputDir, + 'rspack.pftrace' + ); + const defaultRustTraceLoggerOutput = 'stdout'; + + const defaultTraceOutput = + traceLayer === 'perfetto' + ? defaultRustTracePerfettoOutput + : defaultRustTraceLoggerOutput; + + traceOutput = defaultTraceOutput; + } else if (traceOutput !== 'stdout' && traceOutput !== 'stderr') { + // if traceOutput is not stdout or stderr, we need to ensure the directory exists + traceOutput = path.resolve(defaultOutputDir, traceOutput); + } + + await ensureFileDir(traceOutput); + await rspack.experiments.globalTrace.register( + filterValue, + traceLayer, + traceOutput + ); + asyncExitHook(rspack.experiments.globalTrace.cleanup, { + wait: 500, + }); +} + +async function ensureFileDir(outputFilePath: string) { + const dir = path.dirname(outputFilePath); + await fs.promises.mkdir(dir, { recursive: true }); } diff --git a/packages/repack/src/commands/rspack/profile/profile-1.4.ts b/packages/repack/src/commands/rspack/profile/profile-1.4.ts deleted file mode 100644 index 9b1538c96..000000000 --- a/packages/repack/src/commands/rspack/profile/profile-1.4.ts +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Reference: https://github.com/web-infra-dev/rspack/blob/bdfe548f4e5fd09c1ccb4d43919426819fb9a34f/packages/rspack-cli/src/utils/profile.ts - */ - -/** - * `RSPACK_PROFILE=ALL` // all trace events - * `RSPACK_PROFILE=OVERVIEW` // overview trace events - * `RSPACK_PROFILE=warn,tokio::net=info` // trace filter from https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#example-syntax - */ -import fs from 'node:fs'; -import path from 'node:path'; -import { rspack } from '@rspack/core'; - -const defaultRustTraceLayer = 'perfetto'; - -export async function applyProfile( - filterValue: string, - traceLayer: string = defaultRustTraceLayer, - traceOutput?: string -) { - const { asyncExitHook } = await import('exit-hook'); - - if (traceLayer !== 'logger' && traceLayer !== 'perfetto') { - throw new Error(`unsupported trace layer: ${traceLayer}`); - } - const timestamp = Date.now(); - const defaultOutputDir = path.resolve( - `.rspack-profile-${timestamp}-${process.pid}` - ); - if (!traceOutput) { - const defaultRustTracePerfettoOutput = path.resolve( - defaultOutputDir, - 'rspack.pftrace' - ); - const defaultRustTraceLoggerOutput = 'stdout'; - - const defaultTraceOutput = - traceLayer === 'perfetto' - ? defaultRustTracePerfettoOutput - : defaultRustTraceLoggerOutput; - - traceOutput = defaultTraceOutput; - } else if (traceOutput !== 'stdout' && traceOutput !== 'stderr') { - // if traceOutput is not stdout or stderr, we need to ensure the directory exists - traceOutput = path.resolve(defaultOutputDir, traceOutput); - } - - await ensureFileDir(traceOutput); - await rspack.experiments.globalTrace.register( - filterValue, - traceLayer, - traceOutput - ); - asyncExitHook(rspack.experiments.globalTrace.cleanup, { - wait: 500, - }); -} - -async function ensureFileDir(outputFilePath: string) { - const dir = path.dirname(outputFilePath); - await fs.promises.mkdir(dir, { recursive: true }); -} diff --git a/packages/repack/src/commands/rspack/profile/profile-legacy.ts b/packages/repack/src/commands/rspack/profile/profile-legacy.ts deleted file mode 100644 index cf98d3a1c..000000000 --- a/packages/repack/src/commands/rspack/profile/profile-legacy.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Reference: https://github.com/web-infra-dev/rspack/blob/bad70431988d77d8a95320066f72c77b6cc4c120/packages/rspack-cli/src/utils/profile.ts - */ - -/** - * `RSPACK_PROFILE=ALL` // all trace events - * `RSPACK_PROFILE=OVERVIEW` // overview trace events - * `RSPACK_PROFILE=warn,tokio::net=info` // trace filter from https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#example-syntax - */ -import fs from 'node:fs'; -import path from 'node:path'; -import { rspack } from '@rspack/core'; - -const overviewTraceFilter = 'info'; -const allTraceFilter = 'trace'; -const defaultRustTraceLayer = 'chrome'; - -function resolveLayer(value: string) { - if (value === 'OVERVIEW') { - return overviewTraceFilter; - } - if (value === 'ALL') { - return allTraceFilter; - } - return value; -} - -export async function applyProfile( - filterValue: string, - traceLayer: string = defaultRustTraceLayer, - traceOutput?: string -) { - const { asyncExitHook } = await import('exit-hook'); - - if (traceLayer !== 'chrome' && traceLayer !== 'logger') { - throw new Error(`unsupported trace layer: ${traceLayer}`); - } - - if (!traceOutput) { - const timestamp = Date.now(); - const defaultOutputDir = path.resolve( - `.rspack-profile-${timestamp}-${process.pid}` - ); - const defaultRustTraceChromeOutput = path.join( - defaultOutputDir, - 'trace.json' - ); - const defaultRustTraceLoggerOutput = 'stdout'; - - const defaultTraceOutput = - traceLayer === 'chrome' - ? defaultRustTraceChromeOutput - : defaultRustTraceLoggerOutput; - - traceOutput = defaultTraceOutput; - } - - const filter = resolveLayer(filterValue); - - await ensureFileDir(traceOutput); - await rspack.experiments.globalTrace.register( - filter, - // @ts-expect-error: legacy support for older versions of Rspack - traceLayer, - traceOutput - ); - asyncExitHook(rspack.experiments.globalTrace.cleanup, { - wait: 500, - }); -} - -async function ensureFileDir(outputFilePath: string) { - const dir = path.dirname(outputFilePath); - await fs.promises.mkdir(dir, { recursive: true }); -} From 1a9093791aad295693f2d506b0a425c6e4cb51b5 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:41 +0100 Subject: [PATCH 04/12] refactor(repack): always minify Rspack bundles with Terser The SWC minimizer was only picked for Rspack 1.4.11, which Re.Pack no longer supports, so the minimizer no longer depends on the bundler. --- .../__tests__/getMinimizerConfig.test.ts | 6 ++-- .../common/config/getMinimizerConfig.ts | 34 +------------------ .../commands/common/config/getRepackConfig.ts | 2 +- 3 files changed, 5 insertions(+), 37 deletions(-) diff --git a/packages/repack/src/commands/common/config/__tests__/getMinimizerConfig.test.ts b/packages/repack/src/commands/common/config/__tests__/getMinimizerConfig.test.ts index 1afcc8ae1..b3b22c3fa 100644 --- a/packages/repack/src/commands/common/config/__tests__/getMinimizerConfig.test.ts +++ b/packages/repack/src/commands/common/config/__tests__/getMinimizerConfig.test.ts @@ -43,7 +43,7 @@ describe('getMinimizerConfig', () => { }); importDefaultESMMock.mockResolvedValue(PluginMock); - await getMinimizerConfig('webpack', '/project'); + await getMinimizerConfig('/project'); const { minify } = PluginMock.mock.calls[0][0]; const implementation = minify ?? PluginMock.terserMinify; @@ -55,7 +55,7 @@ describe('getMinimizerConfig', () => { it('should run terser on a .bundle asset after worker serialization', async () => { importDefaultESMMock.mockImplementation(async (path) => require(path)); - const [minimizer] = await getMinimizerConfig('webpack', process.cwd()); + const [minimizer] = await getMinimizerConfig(process.cwd()); const { implementation, options } = ( minimizer as unknown as NormalizedPlugin ).options.minimizer; @@ -83,7 +83,7 @@ describe('getMinimizerConfig', () => { it('should report the terser version the built-in minifier reports', async () => { importDefaultESMMock.mockImplementation(async (path) => require(path)); - const [minimizer] = await getMinimizerConfig('webpack', process.cwd()); + const [minimizer] = await getMinimizerConfig(process.cwd()); const { implementation } = (minimizer as unknown as NormalizedPlugin) .options.minimizer; const { terserMinify } = require('terser-webpack-plugin'); diff --git a/packages/repack/src/commands/common/config/getMinimizerConfig.ts b/packages/repack/src/commands/common/config/getMinimizerConfig.ts index 10ed6fc8d..5063c3f84 100644 --- a/packages/repack/src/commands/common/config/getMinimizerConfig.ts +++ b/packages/repack/src/commands/common/config/getMinimizerConfig.ts @@ -1,4 +1,3 @@ -import semver from 'semver'; import type TerserPlugin from 'terser-webpack-plugin'; import { importDefaultESM } from '../../../helpers/index.js'; @@ -57,37 +56,6 @@ async function getTerserConfig(rootDir: string) { }); } -// use SwcJsMinimizerRspackPlugin for Rspack 1.4.11 -// Rspack 1.5.0 broke the minimizer again, pending a fix -function shouldUseTerserForRspack(rspackVersion: string): boolean { - const version = semver.coerce(rspackVersion) ?? '0.0.0'; - return !semver.eq(version, '1.4.11'); -} - -async function getWebpackMinimizer(rootDir: string) { +export async function getMinimizerConfig(rootDir: string) { return [await getTerserConfig(rootDir)]; } - -async function getRspackMinimizer(rootDir: string) { - const rspack = await import('@rspack/core'); - return [ - shouldUseTerserForRspack(rspack.rspackVersion) - ? await getTerserConfig(rootDir) - : new rspack.SwcJsMinimizerRspackPlugin({ - test: /\.(js)?bundle(\?.*)?$/i, - extractComments: false, - minimizerOptions: { - format: { comments: false }, - }, - }), - ]; -} - -export async function getMinimizerConfig( - bundler: 'rspack' | 'webpack', - rootDir: string -) { - return bundler === 'rspack' - ? getRspackMinimizer(rootDir) - : getWebpackMinimizer(rootDir); -} diff --git a/packages/repack/src/commands/common/config/getRepackConfig.ts b/packages/repack/src/commands/common/config/getRepackConfig.ts index 827214182..776410f78 100644 --- a/packages/repack/src/commands/common/config/getRepackConfig.ts +++ b/packages/repack/src/commands/common/config/getRepackConfig.ts @@ -13,7 +13,7 @@ export async function getRepackConfig( rootDir: string ) { const moduleConfig = getModuleConfig(bundler); - const minimizerConfiguration = await getMinimizerConfig(bundler, rootDir); + const minimizerConfiguration = await getMinimizerConfig(rootDir); return { devtool: 'source-map', From dfff318cf100e3cfc3bbd8eca6afb1a6a9f31e98 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:42 +0100 Subject: [PATCH 05/12] fix(repack): keep assets, chunks and modules in bundle --json stats Rspack 2's stats.toJson() leaves out assets, chunks, chunk groups, entrypoints and modules unless they are asked for, even with the `normal` preset. When the project has no stats config, request them explicitly so `bundle --json` writes the same stats as before. --- .../common/__tests__/setupStatsWriter.test.ts | 15 +++++++++++++++ .../src/commands/common/setupStatsWriter.ts | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/packages/repack/src/commands/common/__tests__/setupStatsWriter.test.ts b/packages/repack/src/commands/common/__tests__/setupStatsWriter.test.ts index 1bd6b5b24..4bf0a668e 100644 --- a/packages/repack/src/commands/common/__tests__/setupStatsWriter.test.ts +++ b/packages/repack/src/commands/common/__tests__/setupStatsWriter.test.ts @@ -28,6 +28,21 @@ describe('setupStatsWriter', () => { expect(result).toHaveProperty('preset', 'none'); }); + it.each([ + ['undefined', undefined], + ['empty', {}], + ])( + 'should include assets, chunks and modules if options are %s', + (_, options) => { + const result = normalizeStatsOptions(options); + expect(result).toMatchObject({ + assets: true, + chunks: true, + modules: true, + }); + } + ); + it('should return options as is if no preset is provided', () => { const options = { custom: 'value' }; const result = normalizeStatsOptions(options); diff --git a/packages/repack/src/commands/common/setupStatsWriter.ts b/packages/repack/src/commands/common/setupStatsWriter.ts index 410a8e30c..590be5e5f 100644 --- a/packages/repack/src/commands/common/setupStatsWriter.ts +++ b/packages/repack/src/commands/common/setupStatsWriter.ts @@ -15,6 +15,17 @@ function ensureFilepathExists(filepath: string) { fs.mkdirSync(path.dirname(filepath), { recursive: true }); } +// Rspack 2 leaves these out of `stats.toJson()` unless asked for, +// webpack includes them by default +const DEFAULT_JSON_STATS_OPTIONS = { + assets: true, + chunks: true, + chunkGroups: true, + chunkModules: true, + entrypoints: true, + modules: true, +}; + export function normalizeStatsOptions( options: Stats, preset?: string @@ -28,6 +39,14 @@ export function normalizeStatsOptions( if (options === false) { return { preset: 'none' } as Stats; } + if ( + options === undefined || + (typeof options === 'object' && + options !== null && + Object.keys(options).length === 0) + ) { + return DEFAULT_JSON_STATS_OPTIONS as Stats; + } return options; } From d1edb0f67e68bd3c1a3de6a8af6566486f8fe1be Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:43 +0100 Subject: [PATCH 06/12] fix(repack): resolve absolute source paths in production source maps Rspack 2 joins a module's absoluteResourcePath from the context without resolving it, so files outside the project root, such as hoisted node_modules in a monorepo, were named `/../../...` in source maps built without a dev server. Normalize the path. --- .../repack/src/plugins/SourceMapPlugin.ts | 5 +- .../plugins/__tests__/SourceMapPlugin.test.ts | 61 +++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 packages/repack/src/plugins/__tests__/SourceMapPlugin.test.ts diff --git a/packages/repack/src/plugins/SourceMapPlugin.ts b/packages/repack/src/plugins/SourceMapPlugin.ts index 4cf017735..62b0d20c5 100644 --- a/packages/repack/src/plugins/SourceMapPlugin.ts +++ b/packages/repack/src/plugins/SourceMapPlugin.ts @@ -60,8 +60,9 @@ function defaultModuleFilenameTemplateHandler( return `inlined-${info.hash}`; } } - // use absolute path for all other modules - return info.absoluteResourcePath; + // use absolute path for all other modules - Rspack 2 joins it from the context + // without resolving, e.g. `/../../node_modules/...` + return path.normalize(info.absoluteResourcePath); } interface SourceMapPluginConfig { diff --git a/packages/repack/src/plugins/__tests__/SourceMapPlugin.test.ts b/packages/repack/src/plugins/__tests__/SourceMapPlugin.test.ts new file mode 100644 index 000000000..2664db3fb --- /dev/null +++ b/packages/repack/src/plugins/__tests__/SourceMapPlugin.test.ts @@ -0,0 +1,61 @@ +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { rspack } from '@rspack/core'; +import { SourceMapPlugin } from '../SourceMapPlugin.js'; + +describe('SourceMapPlugin', () => { + let workspaceRoot: string; + + beforeEach(() => { + workspaceRoot = fs.realpathSync( + fs.mkdtempSync(path.join(os.tmpdir(), 'repack-source-map-plugin-')) + ); + const files = { + 'apps/app/index.js': + "import { shared } from '../../packages/shared/index.js'; shared();", + 'packages/shared/index.js': 'export const shared = () => {};', + }; + for (const [file, content] of Object.entries(files)) { + fs.mkdirSync(path.dirname(path.join(workspaceRoot, file)), { + recursive: true, + }); + fs.writeFileSync(path.join(workspaceRoot, file), content); + } + }); + + afterEach(() => { + fs.rmSync(workspaceRoot, { recursive: true, force: true }); + }); + + it('should name sources outside of the context by their resolved absolute path', async () => { + const outputPath = path.join(workspaceRoot, 'out'); + const compiler = rspack({ + context: path.join(workspaceRoot, 'apps/app'), + mode: 'development', + devtool: 'source-map', + entry: './index.js', + output: { path: outputPath }, + plugins: [new SourceMapPlugin({ platform: 'ios' })], + }); + + await new Promise((resolve, reject) => { + compiler.run((error, stats) => { + compiler.close(() => {}); + if (error) reject(error); + else if (stats?.hasErrors()) reject(new Error(stats.toString())); + else resolve(); + }); + }); + + const sourceMap = JSON.parse( + fs.readFileSync(path.join(outputPath, 'main.js.map'), 'utf-8') + ); + expect(sourceMap.sources).toEqual( + expect.arrayContaining([ + path.join(workspaceRoot, 'apps/app/index.js'), + path.join(workspaceRoot, 'packages/shared/index.js'), + ]) + ); + }); +}); From e1a2e173711d11b8bd98c58014498974a61d5b9c Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:44 +0100 Subject: [PATCH 07/12] fix(repack-expo): rename the percent-encoded Module Federation runtime source Rspack 2 percent-encodes the resource path of the Module Federation runtime `data:` module, so the malformed `webpack://` source it produces no longer matched the raw prefix and was not renamed to `webpack://module-federation/virtual-runtime-.js`. --- .../src/rspack/source-map/applyRepackSourceMapFix.ts | 4 +++- .../repack-expo/test/module-federation-source-map.test.cjs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/repack-expo/src/rspack/source-map/applyRepackSourceMapFix.ts b/packages/repack-expo/src/rspack/source-map/applyRepackSourceMapFix.ts index 89569fc37..2491bf9cd 100644 --- a/packages/repack-expo/src/rspack/source-map/applyRepackSourceMapFix.ts +++ b/packages/repack-expo/src/rspack/source-map/applyRepackSourceMapFix.ts @@ -1,6 +1,8 @@ import type { Compiler, SourceMapDevToolPluginOptions } from '@rspack/core'; -const MALFORMED_VIRTUAL_MODULE_PREFIX = 'webpack://=="undefined"}'; +// the Module Federation runtime is a `data:` URI module, whose percent-encoded +// resource path Re.Pack's dev template splits into a bogus `webpack://` source +const MALFORMED_VIRTUAL_MODULE_PREFIX = 'webpack://%3D%3D%22undefined%22%7D'; type ModuleFilenameTemplate = SourceMapDevToolPluginOptions['moduleFilenameTemplate']; diff --git a/packages/repack-expo/test/module-federation-source-map.test.cjs b/packages/repack-expo/test/module-federation-source-map.test.cjs index 40a39cd7e..2a14e5986 100644 --- a/packages/repack-expo/test/module-federation-source-map.test.cjs +++ b/packages/repack-expo/test/module-federation-source-map.test.cjs @@ -122,7 +122,7 @@ test('emits symbolication-safe development source maps with Module Federation v2 assert.notEqual(sourceMap.mappings, ''); assert.equal( sourceMap.sources.some((source) => - source.startsWith('webpack://=="undefined"}') + source.startsWith('webpack://%3D%3D%22undefined%22%7D') ), false ); From 5eba6a0820a5dd4c24f283396b110cf510b2e809 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:45 +0100 Subject: [PATCH 08/12] feat(init): create new projects with Rspack 2 --- packages/init/scripts/update-versions.mjs | 10 ++-------- packages/init/versions.json | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/packages/init/scripts/update-versions.mjs b/packages/init/scripts/update-versions.mjs index 93222cbc3..7f7e4bf8d 100644 --- a/packages/init/scripts/update-versions.mjs +++ b/packages/init/scripts/update-versions.mjs @@ -4,26 +4,20 @@ import { fileURLToPath } from 'node:url'; const REGISTRY = 'https://registry.npmjs.org'; -// Keep Rspack on 1.x until Re.Pack supports Rspack 2. -const DIST_TAGS = { - '@rspack/core': 'latest-v1', -}; - const versionsPath = path.join( path.dirname(fileURLToPath(import.meta.url)), '../versions.json' ); async function getVersion(name) { - const tag = DIST_TAGS[name] ?? 'latest'; const response = await fetch(`${REGISTRY}/-/package/${name}/dist-tags`); if (!response.ok) { throw new Error(`Failed to fetch dist-tags of ${name}: ${response.status}`); } - const version = (await response.json())[tag]; + const version = (await response.json()).latest; if (!version) { - throw new Error(`Package ${name} has no "${tag}" dist-tag`); + throw new Error(`Package ${name} has no "latest" dist-tag`); } return version; diff --git a/packages/init/versions.json b/packages/init/versions.json index 793a42e42..0881ad1e2 100644 --- a/packages/init/versions.json +++ b/packages/init/versions.json @@ -1,7 +1,7 @@ { "react-native": "0.87.1", "rspack": { - "@rspack/core": "^1.7.12", + "@rspack/core": "^2.2.8", "@swc/helpers": "^0.5.23" }, "webpack": { From d7464246345447ae103e0b1dcbd7a0f4c1a66a86 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:46 +0100 Subject: [PATCH 09/12] docs: update Rspack docs for Rspack 2 Replace experiments.parallelLoader with per-rule `parallel: true`, drop hideParallelModeWarning, list the exportsPresence default, and add a Rspack 2 section to the Re.Pack 5 migration guide. --- .../src/latest/api/loaders/babel-loader.md | 2 +- .../latest/api/loaders/babel-swc-loader.md | 10 +----- .../src/latest/docs/guides/configuration.mdx | 8 +++-- .../docs/migration-guides/repack-v5.mdx | 35 ++++++++++++++++++- 4 files changed, 42 insertions(+), 13 deletions(-) diff --git a/website/src/latest/api/loaders/babel-loader.md b/website/src/latest/api/loaders/babel-loader.md index c45eb1246..4ae1c99e6 100644 --- a/website/src/latest/api/loaders/babel-loader.md +++ b/website/src/latest/api/loaders/babel-loader.md @@ -6,7 +6,7 @@ The `BabelLoader` runs Babel transformations for JavaScript and TypeScript sourc There are two similarly named loaders: `@callstack/repack/babel-loader` (this loader) and `babel-loader` from npm. This loader is tailored for Re.Pack and aims for Metro parity, so the same Babel config used in Metro works as-is in Re.Pack. It automatically selects the React Native parser for JS/JSX and Flow, and Babel's parser for TypeScript and TSX. -It is also optimized for parallel transforms. In Rspack, enable [`experiments.parallelLoader`](https://rspack.rs/config/experiments#experimentsparallelloader) to fan out transforms; in webpack, pair it with [`thread-loader`](https://www.npmjs.com/package/thread-loader) to run a worker pool. On projects with heavier Babel pipelines, this often translates into noticeably faster builds. +It is also optimized for parallel transforms. In Rspack, set [`parallel: true`](https://rspack.rs/config/module-rules#rulesuseparallel) on the loader rule to fan out transforms; in webpack, pair it with [`thread-loader`](https://www.npmjs.com/package/thread-loader) to run a worker pool. On projects with heavier Babel pipelines, this often translates into noticeably faster builds. ::: diff --git a/website/src/latest/api/loaders/babel-swc-loader.md b/website/src/latest/api/loaders/babel-swc-loader.md index e42f66b0e..aef3c20ec 100644 --- a/website/src/latest/api/loaders/babel-swc-loader.md +++ b/website/src/latest/api/loaders/babel-swc-loader.md @@ -12,7 +12,7 @@ Do not use `@callstack/repack/babel-swc-loader` together with `getJSTransformRul ::: :::tip Maximizing performance -For optimal performance, enable Rspack’s parallel transforms with [`experiments.parallelLoader`](https://rspack.rs/config/experiments#experimentsparallelloader). This allows for transformations to run in parallel through worker threads managed by Rspack. +For optimal performance, set [`parallel: true`](https://rspack.rs/config/module-rules#rulesuseparallel) on the loader rule in Rspack. This allows for transformations to run in parallel through worker threads managed by Rspack. ::: :::details How does this loader work? @@ -33,7 +33,6 @@ type BabelOverrides = TransformOptions; type SwcOverrides = Options; type BabelSwcLoaderOptions = { - hideParallelModeWarning?: boolean; lazyImports?: boolean | string[]; babelOverrides?: BabelOverrides; swcOverrides?: SwcOverrides; @@ -96,13 +95,6 @@ type HermesParserOverrides = { }; ``` -### hideParallelModeWarning - -- Type: `boolean` -- Default: `false` - -Hide the warning about Rspack `experiments.parallelLoader` when the rule isn't marked `parallel: true`. - ## Example ```js title=rspack.config.mjs diff --git a/website/src/latest/docs/guides/configuration.mdx b/website/src/latest/docs/guides/configuration.mdx index 1140e5b82..4b87dfbbe 100644 --- a/website/src/latest/docs/guides/configuration.mdx +++ b/website/src/latest/docs/guides/configuration.mdx @@ -234,8 +234,12 @@ These are the base defaults that Re.Pack provides regardless of the command bein =18` | `>=22.12` | | React Native | `>=0.74` | `>=0.82` | +| `@rspack/core` | `>=1` | `>=2` | | `@module-federation/enhanced` | `>=0.6.10` | `>=2.0.0` | | `react-native-reanimated` | `>=3` | `>=4` | @@ -28,6 +29,38 @@ Update the Re.Pack plugins you use (`@callstack/repack-plugin-*`) to the same ma React Native 0.82 removed the legacy architecture, so Re.Pack's native module is now built only as a TurboModule. If your app still sets `newArchEnabled=false`, migrate it to the [New Architecture](https://reactnative.dev/architecture/landing-page) before upgrading. +## Rspack 2 is required + +Re.Pack 6 supports Rspack 2 only. webpack projects are not affected. Update `@rspack/core` along with `@swc/helpers`, which Rspack 2 needs at `^0.5.23`: + +```diff +{ + "devDependencies": { +- "@rspack/core": "^1.0.0", ++ "@rspack/core": "^2.0.0", +- "@swc/helpers": "^0.5.13" ++ "@swc/helpers": "^0.5.23" + } +} +``` + +Read Rspack's [Upgrading from v1 to v2](https://rspack.rs/guide/migration/rspack_1.x) guide for changes to your own config. The ones that most often affect React Native projects: + +- `experiments.parallelLoader` was removed, and Re.Pack no longer sets it. Loaders run in parallel when their rule sets [`parallel: true`](https://rspack.rs/config/module-rules#rulesuseparallel), as the Re.Pack templates already do. The `hideParallelModeWarning` option of `@callstack/repack/babel-swc-loader` was removed together with the warning. +- `experiments.cache` moved to the top-level `cache` option. Move a persistent cache config there; `--reset-cache` reads it from the new location, and `REPACK_EXPERIMENTAL_CACHE` sets it there too. + + ```diff + - experiments: { + - cache: { type: 'persistent' }, + - }, + + cache: { type: 'persistent' }, + ``` + +Re.Pack also adjusts two Rspack 2 defaults for you: + +- `module.parser.javascript.exportsPresence` is set to `'auto'`, so imports of missing exports, which some React Native libraries ship, are warnings instead of build errors. Override it in your config to make them errors again. +- `RSPACK_PROFILE` traces to the `logger` layer by default, because published Rspack 2 binaries don't include the `perfetto` layer. + ## Package exports are enabled by default `getResolveOptions()` now sets `enablePackageExports` to `true` by default, matching Metro's default since React Native 0.79. Configs that already pass `enablePackageExports: true` don't need changes. If your project relies on main-field resolution, opt out explicitly: From 0a7c5825b20bb8292beb36b6cdfff3162fe1033b Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:47 +0100 Subject: [PATCH 10/12] docs(agent_context): describe Rspack 2 support in Re.Pack 6 --- agent_context/README.md | 2 +- agent_context/rspackv2-jul2026/design.md | 223 ++++++++++------------- 2 files changed, 94 insertions(+), 131 deletions(-) diff --git a/agent_context/README.md b/agent_context/README.md index 35109711a..4ff0fc6ef 100644 --- a/agent_context/README.md +++ b/agent_context/README.md @@ -8,4 +8,4 @@ works, and is kept in sync with the implementation as it evolves. | Folder | Topic | | --- | --- | -| [rspackv2-jul2026](./rspackv2-jul2026/design.md) | Dual Rspack 1.x/2.x support | +| [rspackv2-jul2026](./rspackv2-jul2026/design.md) | Rspack 2 support (Re.Pack 6) | diff --git a/agent_context/rspackv2-jul2026/design.md b/agent_context/rspackv2-jul2026/design.md index 01199e9fe..612d7d9da 100644 --- a/agent_context/rspackv2-jul2026/design.md +++ b/agent_context/rspackv2-jul2026/design.md @@ -1,146 +1,109 @@ -# Dual Rspack 1.x/2.x Support — Technical Design +# Rspack 2 Support (Re.Pack 6) — Technical Design -A single `@callstack/repack` release supports both `@rspack/core` majors. -The source **compiles against Rspack 2 types** and **runs against both -majors**, branching at runtime on the installed major. Behavior for -Rspack 1 and webpack users is unchanged. +Re.Pack 6 supports `@rspack/core` 2 only (peer `>=2`). There is no runtime +branching on the Rspack major: options Rspack 2 renamed or moved are mapped +directly, and the Rspack 1 workarounds are gone. webpack support is +unchanged. -## Version detection +An earlier revision of this design kept Rspack 1 working next to Rspack 2 +(runtime major detection, a Node guard, lazy command loading, a two-tier +legacy-cache warning, a React Refresh restructure). Re.Pack 6 already +requires Node `>=22.12`, which meets Rspack 2's floor, and dropping Rspack 1 +removed the need for the rest. -`src/helpers/rspackVersion.ts` resolves `@rspack/core/package.json` instead -of importing the package: +## Loading the ESM-only core -- `@rspack/core@2` is pure ESM — a CJS `require('@rspack/core')` throws - `ERR_REQUIRE_ESM` on Node < 20.19, so detection must not load the package; -- `@rspack/core` is an optional peer dependency and may be absent entirely - (webpack-only projects). - -`getRspackVersion` / `getRspackMajorVersion` / `isRspack2` take an optional -project-context directory for resolution. `getRspackMajorVersionFromCompiler` -serves plugin contexts via `compiler.webpack.rspackVersion` (returns `null` -for webpack compilers). - -`@rspack/core` is otherwise loaded with a plain `import` — the published -package carries no workspace- or monorepo-aware resolution logic. - -## Node compatibility - -Rspack 2 requires Node `^20.19.0 || >=22.12.0`; Re.Pack's `engines` stays -`>=18` because Rspack 1 and webpack setups are unaffected. Instead of a hard -floor, `commands/rspack/ensureNodeCompat.ts` raises a clear error when -Rspack 2 is detected on an unsupported Node. The rspack commands are -lazy-loaded inside the command handlers so the guard runs before anything -touches `@rspack/core`. - -Re.Pack's compiled CJS keeps working against the ESM-only core on supported -Node versions via `require(esm)`: Rspack 2 uses the `module.exports` -ESM-interop convention, so CJS consumers receive the callable `rspack` -function with all named exports attached (`core.rspack === core`) — a shape -identical to v1. +`@rspack/core@2` is pure ESM. Re.Pack's compiled CJS keeps loading it with a +plain `require`/`import` through Node's `require(esm)`, which every Node +version Re.Pack 6 supports has. Rspack 2 uses the `module.exports` interop +convention, so CJS consumers get the same shape as with v1. ## Config generation -- `experiments.parallelLoader` is emitted only under Rspack 1. Rspack 2 - removed the global flag (parallel loading is stable and opt-in per rule - via `use[].parallel`), so the loader's parallel-mode warning probe is - also skipped under v2 — running non-parallel there is a valid choice, - not a misconfiguration. -- `module.parser.javascript.exportsPresence` is set to `'auto'` under - Rspack 2. The upstream default changed from `'warn'` to `'error'`, which - breaks builds on technically-invalid imports inside `node_modules` — a - common occurrence in the React Native ecosystem that Metro tolerates. - Users can override this in their project config. - -## Persistent cache - -Rspack 2 moved the persistent cache configuration from `experiments.cache` -to top-level `cache` (same shape) and **silently ignores** the legacy key. - -- `getRspackCacheConfigs` collects the cache configuration from **both** - locations, so `--reset-cache` clears every candidate directory regardless - of which major the config was written for (with both keys set, the wrong - cache would otherwise survive a reset under v2). -- Under Rspack 2 with `experiments.cache` set, `warnLegacyRspackCacheConfig` - emits a one-time warning pointing at the top-level option — unless the - same config already sets a top-level persistent cache (then the leftover - legacy key is inert and no warning fires). The config is left untouched — - migration is the user's action. +- `getRepackConfig` no longer emits `experiments.parallelLoader`, which + Rspack 2 removed. Parallel loading is opted into per rule with + `use[].parallel`, as the templates already do. The babel-swc-loader's + "parallelLoader enabled but rule not parallel" warning, and its + `hideParallelModeWarning` option, were removed with it. +- `getRepackConfig` sets `module.parser.javascript.exportsPresence: 'auto'` + for Rspack. Rspack 2 changed the default to `'error'`, which fails builds + on missing-export imports that React Native itself ships (for example + `React.unstable_Activity` in `renderApplication.js`). Users can override + it. +- `REPACK_EXPERIMENTAL_CACHE` sets top-level `cache: { type: 'persistent' }`. + Rspack 2 moved the cache config there from `experiments.cache` and + silently ignores the old key. +- The Rspack minimizer is always Terser. The SWC minimizer special case for + Rspack 1.4.11 was removed. + +## Persistent cache reset + +`resetPersistentCache` reads top-level `cache` for both bundlers and derives +the directory from whichever shape is set: Rspack `storage.directory`, +`cacheLocation`/`cacheDirectory` for `type: 'filesystem'` (webpack, or +Rspack with `experiments.newCache`), or the bundler's default +`node_modules/.cache/`. + +## Loaders + +- Rspack 2 passes parallel loaders a correct `rootContext` and a + `_compiler.rspack` with `experiments.swc`, so the babel-swc-loader uses + them directly. The `rootContext === context` workaround and the + `@rspack/core` resolution fallback were removed; webpack still falls back + to `@swc/core` from the project. +- `assetsLoader` reads through small promise wrappers typed against + Rspack's `InputFileSystem`. `util.promisify` picks the wrong overload of + the v2 `readdir`/`readFile` types. + +## Source maps + +Rspack 2 builds `absoluteResourcePath` by joining the context and the +relative path without resolving it (`/../../node_modules/...`). +`SourceMapPlugin` normalizes it for the absolute source names it emits +without a dev server. The dev server names (`[projectRoot^N]/...`) are +derived from `resourcePath` and are unaffected. + +Rspack 2 also percent-encodes the resource path of the Module Federation +runtime `data:` module. `@callstack/repack-expo`'s source map fix matches the +encoded form when it renames that source to +`webpack://module-federation/virtual-runtime-.js`. + +## Stats + +Rspack 2's `stats.toJson()` leaves out assets, chunks, chunk groups, +entrypoints and modules unless asked for, even with `preset: 'normal'`. +`normalizeStatsOptions` falls back to requesting them explicitly when the +project has no stats config, so `bundle --json` writes the same shape as +before. Any preset or stats config the user sets is passed through as is. + +## Profiling + +Published Rspack 2 binaries don't include the perfetto trace layer, so +`RSPACK_PROFILE` defaults to `RSPACK_TRACE_LAYER=logger`. There is a single +profile handler; the pre-1.4 one was removed. ## React Refresh -`DevelopmentPlugin` branches on the compiler's major: - -- **Rspack ≥ 2**: applies the official `@rspack/plugin-react-refresh@^2` - (an optional peer dependency — installed by v2 users alongside - `@rspack/core@2`) with `injectEntry: false`, `forceEnable: true`, and - `reactRefreshLoader: '@callstack/repack/react-refresh-loader'`. The - package is ESM-only with a named export, so it is loaded lazily inside - the version branch. -- **Rspack 1 and webpack**: manual wiring against client runtime files - vendored at `packages/repack/vendor/react-refresh/` (adapted from - upstream plugin v2.0.2, MIT, with a LICENSE/provenance file). The - `vendor/` directory ships as-is via `package.json#files` and is excluded - from linting and the babel build. The refresh loader rule excludes the - vendored runtime files themselves (mirroring the official plugin's - self-exclusion) so they are never re-processed in symlinked-workspace - layouts. There is no dependency on `@rspack/plugin-react-refresh@1`. - -## Tracing / profiling - -Published Rspack 2 binaries do not include the perfetto trace layer, so -`--trace-*` profiling defaults to the `'logger'` layer under v2 -(`commands/rspack/profile/profile-2.ts`); Rspack 1 behavior is unchanged. - -## Module Federation v1 - -No changes required. Rspack's delegated `ModuleFederationPluginV1` does not -use `@module-federation/runtime-tools` under either major - only the -enhanced MF 1.5 plugin (`container.ModuleFederationPlugin`) resolves it, -and that plugin raises its own actionable install error. (An earlier -revision of this design added a resolvability pre-check to -`ModuleFederationPluginV1.apply`; it was dropped after verification - -see the evidence on PR #1400.) +Unchanged. The pinned `@rspack/plugin-react-refresh@1.0.0` has no +`@rspack/core` dependency, and `DevelopmentPlugin` keeps using its +`deprecated_runtimePaths`. ## Types -The `@rspack/core` devDependency is `^2`, so type-only imports check against -v2 while the runtime object may be either major. Notable v2 type -accommodations: - -- `SwcLoaderOptions` became a union discriminated on `detectSyntax`, which - cannot be spread-and-reassembled; internal helpers operate on a local - non-union `SwcConfig` alias (Re.Pack never sets `detectSyntax`). -- `builtin:swc-loader`-only options (`rspackExperiments`, `transformImport`, - `collectTypeScriptInfo`, `detectSyntax`) are split off before calling the - raw SWC `transformSync` API. -- One documented cast in `commands/rspack/start.ts`: Re.Pack's `devServer` - type augmentation and Rspack 2's bundled `DevServer` type are structurally - incompatible solely because each pulls `proxy` types from a different copy - of http-proxy-middleware. `bundle.ts` avoids the cast by destructuring - `devServer` off (unused when bundling). +- `SwcLoaderOptions` is a union on `detectSyntax`. The babel-swc-loader works + on a non-union `SwcConfig` (`detectSyntax?: false` with a full `jsc`), + since it always sets `jsc.parser` itself. +- `compiler.options.devServer` is `false | DevServer`, narrowed before + reading `hot`. ## Testing -- **Unit tests run under both majors.** Jest's sandboxed CJS runtime cannot - load the ESM-only v2 core, so a custom test environment - (`jest.environment.js`) loads it outside the sandbox and a - `moduleNameMapper` bridge exposes it to suites. The environment is - parameterized on `RSPACK_MAJOR`: v2 via `await import('@rspack/core')`, - v1 via `require` of the aliased `@rspack/core-v1` devDependency. - `pnpm test:rspack1` runs the v1 lane; a lane-guard test asserts the loaded - major matches the requested one. -- **Built-dist smoke suite** (`tests/rspack-compat`) asserts the behavior - matrix above against the packed dist under both majors — the failure modes - specific to this design (require(esm) interop, loader resolution, refresh - runtime source selection) only reproduce against the built output in a - real project layout. -- **Tester apps**: `apps/tester-app` runs Rspack 2 (full feature surface). - `apps/tester-app-rspack1` is a standalone app *outside* the pnpm - workspace with Re.Pack installed from a packed tarball — required because - in-workspace apps always resolve Re.Pack's own `@rspack/core` devDependency - (v2) regardless of their manifest pin, and the published package - deliberately carries no workspace-aware resolution. -- **CI**: the unit suite runs under both majors on Linux and Windows (the - require(esm) loading path and version-helper filesystem resolution are - Windows-sensitive); Node 18/20 lanes run the Rspack 1 lane only, per the - v2 Node floor. +- Jest can't load the ESM-only core inside its sandbox. + `packages/repack/jest.environment.js` imports it outside the sandbox and + `jest.rspack-core-bridge.js` maps `@rspack/core` onto it. +- Integration snapshots and markers follow Rspack 2's output: runtime + module banners are `// repack/polyfills` instead of + `// webpack/runtime/repack/polyfills`, and module factories use method + shorthand. With MF v2, the polyfills runtime module now comes before + `embed_federation_runtime`. MF still initializes inside + `__webpack_require__.x()`, after the polyfills. From 23a654c7974ead45f304378370510be876296383 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Fri, 9 Oct 2026 22:35:48 +0100 Subject: [PATCH 11/12] chore: add changeset for Rspack 2 --- .changeset/v6-rspack-2.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .changeset/v6-rspack-2.md diff --git a/.changeset/v6-rspack-2.md b/.changeset/v6-rspack-2.md new file mode 100644 index 000000000..e532a936d --- /dev/null +++ b/.changeset/v6-rspack-2.md @@ -0,0 +1,13 @@ +--- +'@callstack/repack': major +'@callstack/repack-init': major +--- + +Require `@rspack/core` 2.0 or newer. Rspack 1 is no longer supported, and new projects created with `@callstack/repack-init` use Rspack 2. + +- Re.Pack no longer sets `experiments.parallelLoader`, which Rspack 2 removed. Set `parallel: true` on loader rules instead. The `hideParallelModeWarning` option of `@callstack/repack/babel-swc-loader` was removed with the warning it hid. +- `REPACK_EXPERIMENTAL_CACHE` and `--reset-cache` use the top-level `cache` option instead of `experiments.cache`. +- Re.Pack sets `module.parser.javascript.exportsPresence` to `'auto'` for Rspack, so missing-export imports in React Native libraries stay warnings instead of failing the build. +- `RSPACK_PROFILE` traces to the `logger` layer by default. +- `bundle --json` keeps including assets, chunks and modules when the project has no stats config. +- Production source maps name files outside the project root by their resolved absolute path. From b1b83acb543ba471991ee3bad0f3bd34a2d3b4af Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Mon, 12 Oct 2026 11:43:26 +0100 Subject: [PATCH 12/12] test(integration): normalize encoded paths and colors in NativeEntryPlugin snapshots Rspack 2 inlines the MF v2 bundler runtime as a URL-encoded data: URI, which put an absolute local path in the snapshot, and colors inlined error messages when color output is enabled, as it is on CI. --- .../src/plugins/NativeEntryPlugin.test.ts | 22 ++++++++++++------- .../rspack/NativeEntryPlugin.test.ts.snap | 4 ++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/tests/integration/src/plugins/NativeEntryPlugin.test.ts b/tests/integration/src/plugins/NativeEntryPlugin.test.ts index 27ca8ab24..2bd406bde 100644 --- a/tests/integration/src/plugins/NativeEntryPlugin.test.ts +++ b/tests/integration/src/plugins/NativeEntryPlugin.test.ts @@ -40,14 +40,20 @@ function normalizeBundle(code: string): string { // Webpack mangles absolute paths into variable names with underscores const mangledRoot = REPO_ROOT.replaceAll(/[^a-zA-Z0-9]/g, '_'); const compactMangledRoot = mangledRoot.replaceAll(/_+/g, '_'); - return code - .replaceAll(REPO_ROOT, '') - .replaceAll(mangledRoot, '_rootDir_') - .replaceAll(compactMangledRoot, '_rootDir_') - .replace( - /\.federation\/entry\.[a-f0-9]+\.js/g, - '.federation/entry.HASH.js' - ); + return ( + code + .replaceAll(REPO_ROOT, '') + // Rspack 2 inlines the MF v2 bundler runtime as a URL-encoded data: URI + .replaceAll(encodeURIComponent(REPO_ROOT), '%3CrootDir%3E') + .replaceAll(mangledRoot, '_rootDir_') + .replaceAll(compactMangledRoot, '_rootDir_') + // Rspack 2 colors inlined error messages when color output is enabled (CI) + .replaceAll(/\\u001b\[[0-9;]*m/g, '') + .replace( + /\.federation\/entry\.[a-f0-9]+\.js/g, + '.federation/entry.HASH.js' + ) + ); } /** diff --git a/tests/integration/src/plugins/__snapshots__/rspack/NativeEntryPlugin.test.ts.snap b/tests/integration/src/plugins/__snapshots__/rspack/NativeEntryPlugin.test.ts.snap index 75e20e7aa..e46e774a2 100644 --- a/tests/integration/src/plugins/__snapshots__/rspack/NativeEntryPlugin.test.ts.snap +++ b/tests/integration/src/plugins/__snapshots__/rspack/NativeEntryPlugin.test.ts.snap @@ -3,7 +3,7 @@ exports[`NativeEntryPlugin > with Module Federation v2 (2.0.1) > should execute polyfills runtime module before MF v2 federation runtime 1`] = ` "(() => { var __webpack_modules__ = ({ -"@module-federation/runtime/rspack.js!=!data:text/javascript,import%20__module_federation_bundler_runtime__%20from%20%22%2FUsers%2Fdaniel.williams%2F.t3%2Fworktrees%2Frepack%2Fdannyhw-rspack-2%2Fnode_modules%2F.pnpm%2F%40module-federation%2Bwebpack-bundler-runtime%402.0.1%2Fnode_modules%2F%40module-federation%2Fwebpack-bundler-runtime%2Fdist%2Findex.cjs.cjs%22%3B%3Bconst%20__module_federation_runtime_plugins__%20%3D%20%5B%5D.filter((%7B%20plugin%20%7D)%20%3D%3E%20plugin).map((%7B%20plugin%2C%20params%20%7D)%20%3D%3E%20plugin(params))%3Bconst%20__module_federation_remote_infos__%20%3D%20%7B%7D%3Bconst%20__module_federation_container_name__%20%3D%20%22testContainer%22%3Bconst%20__module_federation_share_strategy__%20%3D%20%22version-first%22%3Bconst%20__module_federation_share_fallbacks__%20%3D%20undefined%3Bconst%20__module_federation_library_type__%20%3D%20%22var%22%3Bconst%20runtimeRequire%3D__webpack_require__%3Bif((runtimeRequire.initializeSharingData%7C%7CruntimeRequire.initializeExposesData)%26%26runtimeRequire.federation)%7Bvar%20_ref%2C_ref1%2C_ref2%2C_ref3%2C_ref4%3Bvar%20_runtimeRequire_remotesLoadingData%2C_runtimeRequire_remotesLoadingData1%2C_runtimeRequire_initializeSharingData%2C_runtimeRequire_consumesLoadingData%2C_runtimeRequire_consumesLoadingData1%2C_runtimeRequire_initializeExposesData%2C_runtimeRequire_consumesLoadingData2%3Bconst%20override%3D(obj%2Ckey%2Cvalue)%3D%3E%7Bif(!obj)return%3Bif(obj%5Bkey%5D)obj%5Bkey%5D%3Dvalue%7D%3Bconst%20merge%3D(obj%2Ckey%2Cfn)%3D%3E%7Bconst%20value%3Dfn()%3Bif(Array.isArray(value))%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3D%5B%5D%3Bobj%5Bkey%5D.push(...value)%7Delse%20if(typeof%20value%3D%3D%3D%22object%22%26%26value!%3D%3Dnull)%7Bvar%20_obj1%2C_key1%2C_1%3B(_1%3D(_obj1%3Dobj)%5B_key1%3Dkey%5D)!%3D%3Dnull%26%26_1!%3D%3Dvoid%200%3F_1%3A_obj1%5B_key1%5D%3D%7B%7D%3BObject.assign(obj%5Bkey%5D%2Cvalue)%7D%7D%3Bconst%20early%3D(obj%2Ckey%2Cinitial)%3D%3E%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3Dinitial()%7D%3Bconst%20remotesLoadingChunkMapping%3D(_ref%3D(_runtimeRequire_remotesLoadingData%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref!%3D%3Dvoid%200%3F_ref%3A%7B%7D%3Bconst%20remotesLoadingModuleIdToRemoteDataMapping%3D(_ref1%3D(_runtimeRequire_remotesLoadingData1%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData1.moduleIdToRemoteDataMapping)!%3D%3Dnull%26%26_ref1!%3D%3Dvoid%200%3F_ref1%3A%7B%7D%3Bconst%20initializeSharingScopeToInitDataMapping%3D(_ref2%3D(_runtimeRequire_initializeSharingData%3DruntimeRequire.initializeSharingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeSharingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeSharingData.scopeToSharingDataMapping)!%3D%3Dnull%26%26_ref2!%3D%3Dvoid%200%3F_ref2%3A%7B%7D%3Bconst%20consumesLoadingChunkMapping%3D(_ref3%3D(_runtimeRequire_consumesLoadingData%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref3!%3D%3Dvoid%200%3F_ref3%3A%7B%7D%3Bconst%20consumesLoadingModuleToConsumeDataMapping%3D(_ref4%3D(_runtimeRequire_consumesLoadingData1%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData1.moduleIdToConsumeDataMapping)!%3D%3Dnull%26%26_ref4!%3D%3Dvoid%200%3F_ref4%3A%7B%7D%3Bconst%20consumesLoadinginstalledModules%3D%7B%7D%3Bconst%20initializeSharingInitPromises%3D%5B%5D%3Bconst%20initializeSharingInitTokens%3D%7B%7D%3Bconst%20containerShareScope%3D(_runtimeRequire_initializeExposesData%3DruntimeRequire.initializeExposesData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeExposesData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeExposesData.shareScope%3Bfor(const%20key%20in%20__module_federation_bundler_runtime__)%7BruntimeRequire.federation%5Bkey%5D%3D__module_federation_bundler_runtime__%5Bkey%5D%7Dearly(runtimeRequire.federation%2C%22libraryType%22%2C()%3D%3E__module_federation_library_type__)%3Bearly(runtimeRequire.federation%2C%22sharedFallback%22%2C()%3D%3E__module_federation_share_fallbacks__)%3Bconst%20sharedFallback%3DruntimeRequire.federation.sharedFallback%3Bearly(runtimeRequire.federation%2C%22consumesLoadingModuleToHandlerMapping%22%2C()%3D%3E%7Bconst%20consumesLoadingModuleToHandlerMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(consumesLoadingModuleToConsumeDataMapping))%7Bvar%20_runtimeRequire_federation_bundlerRuntime%3BconsumesLoadingModuleToHandlerMapping%5BmoduleId%5D%3D%7Bgetter%3AsharedFallback%3F(_runtimeRequire_federation_bundlerRuntime%3DruntimeRequire.federation.bundlerRuntime)%3D%3D%3Dnull%7C%7C_runtimeRequire_federation_bundlerRuntime%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_federation_bundlerRuntime.getSharedFallbackGetter(%7BshareKey%3Adata.shareKey%2Cfactory%3Adata.fallback%2CwebpackRequire%3AruntimeRequire%2ClibraryType%3AruntimeRequire.federation.libraryType%7D)%3Adata.fallback%2CtreeShakingGetter%3AsharedFallback%3Fdata.fallback%3Aundefined%2CshareInfo%3A%7BshareConfig%3A%7BfixedDependencies%3Afalse%2CrequiredVersion%3Adata.requiredVersion%2CstrictVersion%3Adata.strictVersion%2Csingleton%3Adata.singleton%2Ceager%3Adata.eager%7D%2Cscope%3A%5Bdata.shareScope%5D%7D%2CshareKey%3Adata.shareKey%2CtreeShaking%3AruntimeRequire.federation.sharedFallback%3F%7Bget%3Adata.fallback%2Cmode%3Adata.treeShakingMode%7D%3Aundefined%7D%7Dreturn%20consumesLoadingModuleToHandlerMapping%7D)%3Bearly(runtimeRequire.federation%2C%22initOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.initOptions%2C%22name%22%2C()%3D%3E__module_federation_container_name__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shareStrategy%22%2C()%3D%3E__module_federation_share_strategy__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shared%22%2C()%3D%3E%7Bconst%20shared%3D%7B%7D%3Bfor(let%5Bscope%2Cstages%5Dof%20Object.entries(initializeSharingScopeToInitDataMapping))%7Bfor(let%20stage%20of%20stages)%7Bif(typeof%20stage%3D%3D%3D%22object%22%26%26stage!%3D%3Dnull)%7Bconst%7Bname%2Cversion%2Cfactory%2Ceager%2Csingleton%2CrequiredVersion%2CstrictVersion%2CtreeShakingMode%7D%3Dstage%3Bconst%20shareConfig%3D%7B%7D%3Bconst%20isValidValue%3Dfunction(val)%7Breturn%20typeof%20val!%3D%3D%22undefined%22%7D%3Bif(isValidValue(singleton))%7BshareConfig.singleton%3Dsingleton%7Dif(isValidValue(requiredVersion))%7BshareConfig.requiredVersion%3DrequiredVersion%7Dif(isValidValue(eager))%7BshareConfig.eager%3Deager%7Dif(isValidValue(strictVersion))%7BshareConfig.strictVersion%3DstrictVersion%7Dconst%20options%3D%7Bversion%2Cscope%3A%5Bscope%5D%2CshareConfig%2Cget%3Afactory%2CtreeShaking%3AtreeShakingMode%3F%7Bmode%3AtreeShakingMode%7D%3Aundefined%7D%3Bif(shared%5Bname%5D)%7Bshared%5Bname%5D.push(options)%7Delse%7Bshared%5Bname%5D%3D%5Boptions%5D%7D%7D%7D%7Dreturn%20shared%7D)%3Bmerge(runtimeRequire.federation.initOptions%2C%22remotes%22%2C()%3D%3EObject.values(__module_federation_remote_infos__).flat().filter(remote%3D%3Eremote.externalType%3D%3D%3D%22script%22))%3Bmerge(runtimeRequire.federation.initOptions%2C%22plugins%22%2C()%3D%3E__module_federation_runtime_plugins__)%3Bearly(runtimeRequire.federation%2C%22bundlerRuntimeOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions%2C%22remotes%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22chunkMapping%22%2C()%3D%3EremotesLoadingChunkMapping)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22remoteInfos%22%2C()%3D%3E__module_federation_remote_infos__)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToExternalAndNameMapping%22%2C()%3D%3E%7Bconst%20remotesLoadingIdToExternalAndNameMappingMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7BremotesLoadingIdToExternalAndNameMappingMapping%5BmoduleId%5D%3D%5Bdata.shareScope%2Cdata.name%2Cdata.externalModuleId%2Cdata.remoteName%5D%7Dreturn%20remotesLoadingIdToExternalAndNameMappingMapping%7D)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22webpackRequire%22%2C()%3D%3EruntimeRequire)%3Bmerge(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToRemoteMap%22%2C()%3D%3E%7Bconst%20idToRemoteMap%3D%7B%7D%3Bfor(let%5Bid%2CremoteData%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7Bconst%20info%3D__module_federation_remote_infos__%5BremoteData.remoteName%5D%3Bif(info)idToRemoteMap%5Bid%5D%3Dinfo%7Dreturn%20idToRemoteMap%7D)%3Boverride(runtimeRequire%2C%22S%22%2CruntimeRequire.federation.bundlerRuntime.S)%3Bif(runtimeRequire.federation.attachShareScopeMap)%7BruntimeRequire.federation.attachShareScopeMap(runtimeRequire)%7Doverride(runtimeRequire.f%2C%22remotes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.remotes(%7BchunkId%2Cpromises%2CchunkMapping%3AremotesLoadingChunkMapping%2CidToExternalAndNameMapping%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping%2CidToRemoteMap%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToRemoteMap%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire.f%2C%22consumes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.consumes(%7BchunkId%2Cpromises%2CchunkMapping%3AconsumesLoadingChunkMapping%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%2CinstalledModules%3AconsumesLoadinginstalledModules%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22I%22%2C(name%2CinitScope)%3D%3EruntimeRequire.federation.bundlerRuntime.I(%7BshareScopeName%3Aname%2CinitScope%2CinitPromises%3AinitializeSharingInitPromises%2CinitTokens%3AinitializeSharingInitTokens%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22initContainer%22%2C(shareScope%2CinitScope%2CremoteEntryInitOptions)%3D%3EruntimeRequire.federation.bundlerRuntime.initContainerEntry(%7BshareScope%2CinitScope%2CremoteEntryInitOptions%2CshareScopeKey%3AcontainerShareScope%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22getContainer%22%2C(module%2CgetScope)%3D%3E%7Bvar%20moduleMap%3DruntimeRequire.initializeExposesData.moduleMap%3BruntimeRequire.R%3DgetScope%3BgetScope%3DObject.prototype.hasOwnProperty.call(moduleMap%2Cmodule)%3FmoduleMap%5Bmodule%5D()%3APromise.resolve().then(()%3D%3E%7Bthrow%20new%20Error('Module%20%22'%2Bmodule%2B'%22%20does%20not%20exist%20in%20container.')%7D)%3BruntimeRequire.R%3Dundefined%3Breturn%20getScope%7D)%3BruntimeRequire.federation.instance%3DruntimeRequire.federation.bundlerRuntime.init(%7BwebpackRequire%3AruntimeRequire%7D)%3Bif((_runtimeRequire_consumesLoadingData2%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData2%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData2.initialConsumes)%7BruntimeRequire.federation.bundlerRuntime.installInitialConsumes(%7BwebpackRequire%3AruntimeRequire%2CinstalledModules%3AconsumesLoadinginstalledModules%2CinitialConsumes%3AruntimeRequire.consumesLoadingData.initialConsumes%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%7D)%7D%7D"(module) { +"@module-federation/runtime/rspack.js!=!data:text/javascript,import%20__module_federation_bundler_runtime__%20from%20%22%3CrootDir%3E%2Fnode_modules%2F.pnpm%2F%40module-federation%2Bwebpack-bundler-runtime%402.0.1%2Fnode_modules%2F%40module-federation%2Fwebpack-bundler-runtime%2Fdist%2Findex.cjs.cjs%22%3B%3Bconst%20__module_federation_runtime_plugins__%20%3D%20%5B%5D.filter((%7B%20plugin%20%7D)%20%3D%3E%20plugin).map((%7B%20plugin%2C%20params%20%7D)%20%3D%3E%20plugin(params))%3Bconst%20__module_federation_remote_infos__%20%3D%20%7B%7D%3Bconst%20__module_federation_container_name__%20%3D%20%22testContainer%22%3Bconst%20__module_federation_share_strategy__%20%3D%20%22version-first%22%3Bconst%20__module_federation_share_fallbacks__%20%3D%20undefined%3Bconst%20__module_federation_library_type__%20%3D%20%22var%22%3Bconst%20runtimeRequire%3D__webpack_require__%3Bif((runtimeRequire.initializeSharingData%7C%7CruntimeRequire.initializeExposesData)%26%26runtimeRequire.federation)%7Bvar%20_ref%2C_ref1%2C_ref2%2C_ref3%2C_ref4%3Bvar%20_runtimeRequire_remotesLoadingData%2C_runtimeRequire_remotesLoadingData1%2C_runtimeRequire_initializeSharingData%2C_runtimeRequire_consumesLoadingData%2C_runtimeRequire_consumesLoadingData1%2C_runtimeRequire_initializeExposesData%2C_runtimeRequire_consumesLoadingData2%3Bconst%20override%3D(obj%2Ckey%2Cvalue)%3D%3E%7Bif(!obj)return%3Bif(obj%5Bkey%5D)obj%5Bkey%5D%3Dvalue%7D%3Bconst%20merge%3D(obj%2Ckey%2Cfn)%3D%3E%7Bconst%20value%3Dfn()%3Bif(Array.isArray(value))%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3D%5B%5D%3Bobj%5Bkey%5D.push(...value)%7Delse%20if(typeof%20value%3D%3D%3D%22object%22%26%26value!%3D%3Dnull)%7Bvar%20_obj1%2C_key1%2C_1%3B(_1%3D(_obj1%3Dobj)%5B_key1%3Dkey%5D)!%3D%3Dnull%26%26_1!%3D%3Dvoid%200%3F_1%3A_obj1%5B_key1%5D%3D%7B%7D%3BObject.assign(obj%5Bkey%5D%2Cvalue)%7D%7D%3Bconst%20early%3D(obj%2Ckey%2Cinitial)%3D%3E%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3Dinitial()%7D%3Bconst%20remotesLoadingChunkMapping%3D(_ref%3D(_runtimeRequire_remotesLoadingData%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref!%3D%3Dvoid%200%3F_ref%3A%7B%7D%3Bconst%20remotesLoadingModuleIdToRemoteDataMapping%3D(_ref1%3D(_runtimeRequire_remotesLoadingData1%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData1.moduleIdToRemoteDataMapping)!%3D%3Dnull%26%26_ref1!%3D%3Dvoid%200%3F_ref1%3A%7B%7D%3Bconst%20initializeSharingScopeToInitDataMapping%3D(_ref2%3D(_runtimeRequire_initializeSharingData%3DruntimeRequire.initializeSharingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeSharingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeSharingData.scopeToSharingDataMapping)!%3D%3Dnull%26%26_ref2!%3D%3Dvoid%200%3F_ref2%3A%7B%7D%3Bconst%20consumesLoadingChunkMapping%3D(_ref3%3D(_runtimeRequire_consumesLoadingData%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref3!%3D%3Dvoid%200%3F_ref3%3A%7B%7D%3Bconst%20consumesLoadingModuleToConsumeDataMapping%3D(_ref4%3D(_runtimeRequire_consumesLoadingData1%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData1.moduleIdToConsumeDataMapping)!%3D%3Dnull%26%26_ref4!%3D%3Dvoid%200%3F_ref4%3A%7B%7D%3Bconst%20consumesLoadinginstalledModules%3D%7B%7D%3Bconst%20initializeSharingInitPromises%3D%5B%5D%3Bconst%20initializeSharingInitTokens%3D%7B%7D%3Bconst%20containerShareScope%3D(_runtimeRequire_initializeExposesData%3DruntimeRequire.initializeExposesData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeExposesData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeExposesData.shareScope%3Bfor(const%20key%20in%20__module_federation_bundler_runtime__)%7BruntimeRequire.federation%5Bkey%5D%3D__module_federation_bundler_runtime__%5Bkey%5D%7Dearly(runtimeRequire.federation%2C%22libraryType%22%2C()%3D%3E__module_federation_library_type__)%3Bearly(runtimeRequire.federation%2C%22sharedFallback%22%2C()%3D%3E__module_federation_share_fallbacks__)%3Bconst%20sharedFallback%3DruntimeRequire.federation.sharedFallback%3Bearly(runtimeRequire.federation%2C%22consumesLoadingModuleToHandlerMapping%22%2C()%3D%3E%7Bconst%20consumesLoadingModuleToHandlerMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(consumesLoadingModuleToConsumeDataMapping))%7Bvar%20_runtimeRequire_federation_bundlerRuntime%3BconsumesLoadingModuleToHandlerMapping%5BmoduleId%5D%3D%7Bgetter%3AsharedFallback%3F(_runtimeRequire_federation_bundlerRuntime%3DruntimeRequire.federation.bundlerRuntime)%3D%3D%3Dnull%7C%7C_runtimeRequire_federation_bundlerRuntime%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_federation_bundlerRuntime.getSharedFallbackGetter(%7BshareKey%3Adata.shareKey%2Cfactory%3Adata.fallback%2CwebpackRequire%3AruntimeRequire%2ClibraryType%3AruntimeRequire.federation.libraryType%7D)%3Adata.fallback%2CtreeShakingGetter%3AsharedFallback%3Fdata.fallback%3Aundefined%2CshareInfo%3A%7BshareConfig%3A%7BfixedDependencies%3Afalse%2CrequiredVersion%3Adata.requiredVersion%2CstrictVersion%3Adata.strictVersion%2Csingleton%3Adata.singleton%2Ceager%3Adata.eager%7D%2Cscope%3A%5Bdata.shareScope%5D%7D%2CshareKey%3Adata.shareKey%2CtreeShaking%3AruntimeRequire.federation.sharedFallback%3F%7Bget%3Adata.fallback%2Cmode%3Adata.treeShakingMode%7D%3Aundefined%7D%7Dreturn%20consumesLoadingModuleToHandlerMapping%7D)%3Bearly(runtimeRequire.federation%2C%22initOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.initOptions%2C%22name%22%2C()%3D%3E__module_federation_container_name__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shareStrategy%22%2C()%3D%3E__module_federation_share_strategy__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shared%22%2C()%3D%3E%7Bconst%20shared%3D%7B%7D%3Bfor(let%5Bscope%2Cstages%5Dof%20Object.entries(initializeSharingScopeToInitDataMapping))%7Bfor(let%20stage%20of%20stages)%7Bif(typeof%20stage%3D%3D%3D%22object%22%26%26stage!%3D%3Dnull)%7Bconst%7Bname%2Cversion%2Cfactory%2Ceager%2Csingleton%2CrequiredVersion%2CstrictVersion%2CtreeShakingMode%7D%3Dstage%3Bconst%20shareConfig%3D%7B%7D%3Bconst%20isValidValue%3Dfunction(val)%7Breturn%20typeof%20val!%3D%3D%22undefined%22%7D%3Bif(isValidValue(singleton))%7BshareConfig.singleton%3Dsingleton%7Dif(isValidValue(requiredVersion))%7BshareConfig.requiredVersion%3DrequiredVersion%7Dif(isValidValue(eager))%7BshareConfig.eager%3Deager%7Dif(isValidValue(strictVersion))%7BshareConfig.strictVersion%3DstrictVersion%7Dconst%20options%3D%7Bversion%2Cscope%3A%5Bscope%5D%2CshareConfig%2Cget%3Afactory%2CtreeShaking%3AtreeShakingMode%3F%7Bmode%3AtreeShakingMode%7D%3Aundefined%7D%3Bif(shared%5Bname%5D)%7Bshared%5Bname%5D.push(options)%7Delse%7Bshared%5Bname%5D%3D%5Boptions%5D%7D%7D%7D%7Dreturn%20shared%7D)%3Bmerge(runtimeRequire.federation.initOptions%2C%22remotes%22%2C()%3D%3EObject.values(__module_federation_remote_infos__).flat().filter(remote%3D%3Eremote.externalType%3D%3D%3D%22script%22))%3Bmerge(runtimeRequire.federation.initOptions%2C%22plugins%22%2C()%3D%3E__module_federation_runtime_plugins__)%3Bearly(runtimeRequire.federation%2C%22bundlerRuntimeOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions%2C%22remotes%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22chunkMapping%22%2C()%3D%3EremotesLoadingChunkMapping)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22remoteInfos%22%2C()%3D%3E__module_federation_remote_infos__)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToExternalAndNameMapping%22%2C()%3D%3E%7Bconst%20remotesLoadingIdToExternalAndNameMappingMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7BremotesLoadingIdToExternalAndNameMappingMapping%5BmoduleId%5D%3D%5Bdata.shareScope%2Cdata.name%2Cdata.externalModuleId%2Cdata.remoteName%5D%7Dreturn%20remotesLoadingIdToExternalAndNameMappingMapping%7D)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22webpackRequire%22%2C()%3D%3EruntimeRequire)%3Bmerge(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToRemoteMap%22%2C()%3D%3E%7Bconst%20idToRemoteMap%3D%7B%7D%3Bfor(let%5Bid%2CremoteData%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7Bconst%20info%3D__module_federation_remote_infos__%5BremoteData.remoteName%5D%3Bif(info)idToRemoteMap%5Bid%5D%3Dinfo%7Dreturn%20idToRemoteMap%7D)%3Boverride(runtimeRequire%2C%22S%22%2CruntimeRequire.federation.bundlerRuntime.S)%3Bif(runtimeRequire.federation.attachShareScopeMap)%7BruntimeRequire.federation.attachShareScopeMap(runtimeRequire)%7Doverride(runtimeRequire.f%2C%22remotes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.remotes(%7BchunkId%2Cpromises%2CchunkMapping%3AremotesLoadingChunkMapping%2CidToExternalAndNameMapping%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping%2CidToRemoteMap%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToRemoteMap%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire.f%2C%22consumes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.consumes(%7BchunkId%2Cpromises%2CchunkMapping%3AconsumesLoadingChunkMapping%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%2CinstalledModules%3AconsumesLoadinginstalledModules%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22I%22%2C(name%2CinitScope)%3D%3EruntimeRequire.federation.bundlerRuntime.I(%7BshareScopeName%3Aname%2CinitScope%2CinitPromises%3AinitializeSharingInitPromises%2CinitTokens%3AinitializeSharingInitTokens%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22initContainer%22%2C(shareScope%2CinitScope%2CremoteEntryInitOptions)%3D%3EruntimeRequire.federation.bundlerRuntime.initContainerEntry(%7BshareScope%2CinitScope%2CremoteEntryInitOptions%2CshareScopeKey%3AcontainerShareScope%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22getContainer%22%2C(module%2CgetScope)%3D%3E%7Bvar%20moduleMap%3DruntimeRequire.initializeExposesData.moduleMap%3BruntimeRequire.R%3DgetScope%3BgetScope%3DObject.prototype.hasOwnProperty.call(moduleMap%2Cmodule)%3FmoduleMap%5Bmodule%5D()%3APromise.resolve().then(()%3D%3E%7Bthrow%20new%20Error('Module%20%22'%2Bmodule%2B'%22%20does%20not%20exist%20in%20container.')%7D)%3BruntimeRequire.R%3Dundefined%3Breturn%20getScope%7D)%3BruntimeRequire.federation.instance%3DruntimeRequire.federation.bundlerRuntime.init(%7BwebpackRequire%3AruntimeRequire%7D)%3Bif((_runtimeRequire_consumesLoadingData2%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData2%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData2.initialConsumes)%7BruntimeRequire.federation.bundlerRuntime.installInitialConsumes(%7BwebpackRequire%3AruntimeRequire%2CinstalledModules%3AconsumesLoadinginstalledModules%2CinitialConsumes%3AruntimeRequire.consumesLoadingData.initialConsumes%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%7D)%7D%7D"(module) { "use strict"; module.exports = globalThis.__MF_EXTERNAL__; @@ -362,7 +362,7 @@ var hasRun = false; __webpack_require__.x = function () { if (!hasRun) { hasRun = true; - __webpack_require__("@module-federation/runtime/rspack.js!=!data:text/javascript,import%20__module_federation_bundler_runtime__%20from%20%22%2FUsers%2Fdaniel.williams%2F.t3%2Fworktrees%2Frepack%2Fdannyhw-rspack-2%2Fnode_modules%2F.pnpm%2F%40module-federation%2Bwebpack-bundler-runtime%402.0.1%2Fnode_modules%2F%40module-federation%2Fwebpack-bundler-runtime%2Fdist%2Findex.cjs.cjs%22%3B%3Bconst%20__module_federation_runtime_plugins__%20%3D%20%5B%5D.filter((%7B%20plugin%20%7D)%20%3D%3E%20plugin).map((%7B%20plugin%2C%20params%20%7D)%20%3D%3E%20plugin(params))%3Bconst%20__module_federation_remote_infos__%20%3D%20%7B%7D%3Bconst%20__module_federation_container_name__%20%3D%20%22testContainer%22%3Bconst%20__module_federation_share_strategy__%20%3D%20%22version-first%22%3Bconst%20__module_federation_share_fallbacks__%20%3D%20undefined%3Bconst%20__module_federation_library_type__%20%3D%20%22var%22%3Bconst%20runtimeRequire%3D__webpack_require__%3Bif((runtimeRequire.initializeSharingData%7C%7CruntimeRequire.initializeExposesData)%26%26runtimeRequire.federation)%7Bvar%20_ref%2C_ref1%2C_ref2%2C_ref3%2C_ref4%3Bvar%20_runtimeRequire_remotesLoadingData%2C_runtimeRequire_remotesLoadingData1%2C_runtimeRequire_initializeSharingData%2C_runtimeRequire_consumesLoadingData%2C_runtimeRequire_consumesLoadingData1%2C_runtimeRequire_initializeExposesData%2C_runtimeRequire_consumesLoadingData2%3Bconst%20override%3D(obj%2Ckey%2Cvalue)%3D%3E%7Bif(!obj)return%3Bif(obj%5Bkey%5D)obj%5Bkey%5D%3Dvalue%7D%3Bconst%20merge%3D(obj%2Ckey%2Cfn)%3D%3E%7Bconst%20value%3Dfn()%3Bif(Array.isArray(value))%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3D%5B%5D%3Bobj%5Bkey%5D.push(...value)%7Delse%20if(typeof%20value%3D%3D%3D%22object%22%26%26value!%3D%3Dnull)%7Bvar%20_obj1%2C_key1%2C_1%3B(_1%3D(_obj1%3Dobj)%5B_key1%3Dkey%5D)!%3D%3Dnull%26%26_1!%3D%3Dvoid%200%3F_1%3A_obj1%5B_key1%5D%3D%7B%7D%3BObject.assign(obj%5Bkey%5D%2Cvalue)%7D%7D%3Bconst%20early%3D(obj%2Ckey%2Cinitial)%3D%3E%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3Dinitial()%7D%3Bconst%20remotesLoadingChunkMapping%3D(_ref%3D(_runtimeRequire_remotesLoadingData%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref!%3D%3Dvoid%200%3F_ref%3A%7B%7D%3Bconst%20remotesLoadingModuleIdToRemoteDataMapping%3D(_ref1%3D(_runtimeRequire_remotesLoadingData1%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData1.moduleIdToRemoteDataMapping)!%3D%3Dnull%26%26_ref1!%3D%3Dvoid%200%3F_ref1%3A%7B%7D%3Bconst%20initializeSharingScopeToInitDataMapping%3D(_ref2%3D(_runtimeRequire_initializeSharingData%3DruntimeRequire.initializeSharingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeSharingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeSharingData.scopeToSharingDataMapping)!%3D%3Dnull%26%26_ref2!%3D%3Dvoid%200%3F_ref2%3A%7B%7D%3Bconst%20consumesLoadingChunkMapping%3D(_ref3%3D(_runtimeRequire_consumesLoadingData%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref3!%3D%3Dvoid%200%3F_ref3%3A%7B%7D%3Bconst%20consumesLoadingModuleToConsumeDataMapping%3D(_ref4%3D(_runtimeRequire_consumesLoadingData1%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData1.moduleIdToConsumeDataMapping)!%3D%3Dnull%26%26_ref4!%3D%3Dvoid%200%3F_ref4%3A%7B%7D%3Bconst%20consumesLoadinginstalledModules%3D%7B%7D%3Bconst%20initializeSharingInitPromises%3D%5B%5D%3Bconst%20initializeSharingInitTokens%3D%7B%7D%3Bconst%20containerShareScope%3D(_runtimeRequire_initializeExposesData%3DruntimeRequire.initializeExposesData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeExposesData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeExposesData.shareScope%3Bfor(const%20key%20in%20__module_federation_bundler_runtime__)%7BruntimeRequire.federation%5Bkey%5D%3D__module_federation_bundler_runtime__%5Bkey%5D%7Dearly(runtimeRequire.federation%2C%22libraryType%22%2C()%3D%3E__module_federation_library_type__)%3Bearly(runtimeRequire.federation%2C%22sharedFallback%22%2C()%3D%3E__module_federation_share_fallbacks__)%3Bconst%20sharedFallback%3DruntimeRequire.federation.sharedFallback%3Bearly(runtimeRequire.federation%2C%22consumesLoadingModuleToHandlerMapping%22%2C()%3D%3E%7Bconst%20consumesLoadingModuleToHandlerMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(consumesLoadingModuleToConsumeDataMapping))%7Bvar%20_runtimeRequire_federation_bundlerRuntime%3BconsumesLoadingModuleToHandlerMapping%5BmoduleId%5D%3D%7Bgetter%3AsharedFallback%3F(_runtimeRequire_federation_bundlerRuntime%3DruntimeRequire.federation.bundlerRuntime)%3D%3D%3Dnull%7C%7C_runtimeRequire_federation_bundlerRuntime%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_federation_bundlerRuntime.getSharedFallbackGetter(%7BshareKey%3Adata.shareKey%2Cfactory%3Adata.fallback%2CwebpackRequire%3AruntimeRequire%2ClibraryType%3AruntimeRequire.federation.libraryType%7D)%3Adata.fallback%2CtreeShakingGetter%3AsharedFallback%3Fdata.fallback%3Aundefined%2CshareInfo%3A%7BshareConfig%3A%7BfixedDependencies%3Afalse%2CrequiredVersion%3Adata.requiredVersion%2CstrictVersion%3Adata.strictVersion%2Csingleton%3Adata.singleton%2Ceager%3Adata.eager%7D%2Cscope%3A%5Bdata.shareScope%5D%7D%2CshareKey%3Adata.shareKey%2CtreeShaking%3AruntimeRequire.federation.sharedFallback%3F%7Bget%3Adata.fallback%2Cmode%3Adata.treeShakingMode%7D%3Aundefined%7D%7Dreturn%20consumesLoadingModuleToHandlerMapping%7D)%3Bearly(runtimeRequire.federation%2C%22initOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.initOptions%2C%22name%22%2C()%3D%3E__module_federation_container_name__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shareStrategy%22%2C()%3D%3E__module_federation_share_strategy__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shared%22%2C()%3D%3E%7Bconst%20shared%3D%7B%7D%3Bfor(let%5Bscope%2Cstages%5Dof%20Object.entries(initializeSharingScopeToInitDataMapping))%7Bfor(let%20stage%20of%20stages)%7Bif(typeof%20stage%3D%3D%3D%22object%22%26%26stage!%3D%3Dnull)%7Bconst%7Bname%2Cversion%2Cfactory%2Ceager%2Csingleton%2CrequiredVersion%2CstrictVersion%2CtreeShakingMode%7D%3Dstage%3Bconst%20shareConfig%3D%7B%7D%3Bconst%20isValidValue%3Dfunction(val)%7Breturn%20typeof%20val!%3D%3D%22undefined%22%7D%3Bif(isValidValue(singleton))%7BshareConfig.singleton%3Dsingleton%7Dif(isValidValue(requiredVersion))%7BshareConfig.requiredVersion%3DrequiredVersion%7Dif(isValidValue(eager))%7BshareConfig.eager%3Deager%7Dif(isValidValue(strictVersion))%7BshareConfig.strictVersion%3DstrictVersion%7Dconst%20options%3D%7Bversion%2Cscope%3A%5Bscope%5D%2CshareConfig%2Cget%3Afactory%2CtreeShaking%3AtreeShakingMode%3F%7Bmode%3AtreeShakingMode%7D%3Aundefined%7D%3Bif(shared%5Bname%5D)%7Bshared%5Bname%5D.push(options)%7Delse%7Bshared%5Bname%5D%3D%5Boptions%5D%7D%7D%7D%7Dreturn%20shared%7D)%3Bmerge(runtimeRequire.federation.initOptions%2C%22remotes%22%2C()%3D%3EObject.values(__module_federation_remote_infos__).flat().filter(remote%3D%3Eremote.externalType%3D%3D%3D%22script%22))%3Bmerge(runtimeRequire.federation.initOptions%2C%22plugins%22%2C()%3D%3E__module_federation_runtime_plugins__)%3Bearly(runtimeRequire.federation%2C%22bundlerRuntimeOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions%2C%22remotes%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22chunkMapping%22%2C()%3D%3EremotesLoadingChunkMapping)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22remoteInfos%22%2C()%3D%3E__module_federation_remote_infos__)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToExternalAndNameMapping%22%2C()%3D%3E%7Bconst%20remotesLoadingIdToExternalAndNameMappingMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7BremotesLoadingIdToExternalAndNameMappingMapping%5BmoduleId%5D%3D%5Bdata.shareScope%2Cdata.name%2Cdata.externalModuleId%2Cdata.remoteName%5D%7Dreturn%20remotesLoadingIdToExternalAndNameMappingMapping%7D)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22webpackRequire%22%2C()%3D%3EruntimeRequire)%3Bmerge(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToRemoteMap%22%2C()%3D%3E%7Bconst%20idToRemoteMap%3D%7B%7D%3Bfor(let%5Bid%2CremoteData%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7Bconst%20info%3D__module_federation_remote_infos__%5BremoteData.remoteName%5D%3Bif(info)idToRemoteMap%5Bid%5D%3Dinfo%7Dreturn%20idToRemoteMap%7D)%3Boverride(runtimeRequire%2C%22S%22%2CruntimeRequire.federation.bundlerRuntime.S)%3Bif(runtimeRequire.federation.attachShareScopeMap)%7BruntimeRequire.federation.attachShareScopeMap(runtimeRequire)%7Doverride(runtimeRequire.f%2C%22remotes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.remotes(%7BchunkId%2Cpromises%2CchunkMapping%3AremotesLoadingChunkMapping%2CidToExternalAndNameMapping%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping%2CidToRemoteMap%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToRemoteMap%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire.f%2C%22consumes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.consumes(%7BchunkId%2Cpromises%2CchunkMapping%3AconsumesLoadingChunkMapping%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%2CinstalledModules%3AconsumesLoadinginstalledModules%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22I%22%2C(name%2CinitScope)%3D%3EruntimeRequire.federation.bundlerRuntime.I(%7BshareScopeName%3Aname%2CinitScope%2CinitPromises%3AinitializeSharingInitPromises%2CinitTokens%3AinitializeSharingInitTokens%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22initContainer%22%2C(shareScope%2CinitScope%2CremoteEntryInitOptions)%3D%3EruntimeRequire.federation.bundlerRuntime.initContainerEntry(%7BshareScope%2CinitScope%2CremoteEntryInitOptions%2CshareScopeKey%3AcontainerShareScope%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22getContainer%22%2C(module%2CgetScope)%3D%3E%7Bvar%20moduleMap%3DruntimeRequire.initializeExposesData.moduleMap%3BruntimeRequire.R%3DgetScope%3BgetScope%3DObject.prototype.hasOwnProperty.call(moduleMap%2Cmodule)%3FmoduleMap%5Bmodule%5D()%3APromise.resolve().then(()%3D%3E%7Bthrow%20new%20Error('Module%20%22'%2Bmodule%2B'%22%20does%20not%20exist%20in%20container.')%7D)%3BruntimeRequire.R%3Dundefined%3Breturn%20getScope%7D)%3BruntimeRequire.federation.instance%3DruntimeRequire.federation.bundlerRuntime.init(%7BwebpackRequire%3AruntimeRequire%7D)%3Bif((_runtimeRequire_consumesLoadingData2%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData2%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData2.initialConsumes)%7BruntimeRequire.federation.bundlerRuntime.installInitialConsumes(%7BwebpackRequire%3AruntimeRequire%2CinstalledModules%3AconsumesLoadinginstalledModules%2CinitialConsumes%3AruntimeRequire.consumesLoadingData.initialConsumes%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%7D)%7D%7D") + __webpack_require__("@module-federation/runtime/rspack.js!=!data:text/javascript,import%20__module_federation_bundler_runtime__%20from%20%22%3CrootDir%3E%2Fnode_modules%2F.pnpm%2F%40module-federation%2Bwebpack-bundler-runtime%402.0.1%2Fnode_modules%2F%40module-federation%2Fwebpack-bundler-runtime%2Fdist%2Findex.cjs.cjs%22%3B%3Bconst%20__module_federation_runtime_plugins__%20%3D%20%5B%5D.filter((%7B%20plugin%20%7D)%20%3D%3E%20plugin).map((%7B%20plugin%2C%20params%20%7D)%20%3D%3E%20plugin(params))%3Bconst%20__module_federation_remote_infos__%20%3D%20%7B%7D%3Bconst%20__module_federation_container_name__%20%3D%20%22testContainer%22%3Bconst%20__module_federation_share_strategy__%20%3D%20%22version-first%22%3Bconst%20__module_federation_share_fallbacks__%20%3D%20undefined%3Bconst%20__module_federation_library_type__%20%3D%20%22var%22%3Bconst%20runtimeRequire%3D__webpack_require__%3Bif((runtimeRequire.initializeSharingData%7C%7CruntimeRequire.initializeExposesData)%26%26runtimeRequire.federation)%7Bvar%20_ref%2C_ref1%2C_ref2%2C_ref3%2C_ref4%3Bvar%20_runtimeRequire_remotesLoadingData%2C_runtimeRequire_remotesLoadingData1%2C_runtimeRequire_initializeSharingData%2C_runtimeRequire_consumesLoadingData%2C_runtimeRequire_consumesLoadingData1%2C_runtimeRequire_initializeExposesData%2C_runtimeRequire_consumesLoadingData2%3Bconst%20override%3D(obj%2Ckey%2Cvalue)%3D%3E%7Bif(!obj)return%3Bif(obj%5Bkey%5D)obj%5Bkey%5D%3Dvalue%7D%3Bconst%20merge%3D(obj%2Ckey%2Cfn)%3D%3E%7Bconst%20value%3Dfn()%3Bif(Array.isArray(value))%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3D%5B%5D%3Bobj%5Bkey%5D.push(...value)%7Delse%20if(typeof%20value%3D%3D%3D%22object%22%26%26value!%3D%3Dnull)%7Bvar%20_obj1%2C_key1%2C_1%3B(_1%3D(_obj1%3Dobj)%5B_key1%3Dkey%5D)!%3D%3Dnull%26%26_1!%3D%3Dvoid%200%3F_1%3A_obj1%5B_key1%5D%3D%7B%7D%3BObject.assign(obj%5Bkey%5D%2Cvalue)%7D%7D%3Bconst%20early%3D(obj%2Ckey%2Cinitial)%3D%3E%7Bvar%20_obj%2C_key%2C_%3B(_%3D(_obj%3Dobj)%5B_key%3Dkey%5D)!%3D%3Dnull%26%26_!%3D%3Dvoid%200%3F_%3A_obj%5B_key%5D%3Dinitial()%7D%3Bconst%20remotesLoadingChunkMapping%3D(_ref%3D(_runtimeRequire_remotesLoadingData%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref!%3D%3Dvoid%200%3F_ref%3A%7B%7D%3Bconst%20remotesLoadingModuleIdToRemoteDataMapping%3D(_ref1%3D(_runtimeRequire_remotesLoadingData1%3DruntimeRequire.remotesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_remotesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_remotesLoadingData1.moduleIdToRemoteDataMapping)!%3D%3Dnull%26%26_ref1!%3D%3Dvoid%200%3F_ref1%3A%7B%7D%3Bconst%20initializeSharingScopeToInitDataMapping%3D(_ref2%3D(_runtimeRequire_initializeSharingData%3DruntimeRequire.initializeSharingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeSharingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeSharingData.scopeToSharingDataMapping)!%3D%3Dnull%26%26_ref2!%3D%3Dvoid%200%3F_ref2%3A%7B%7D%3Bconst%20consumesLoadingChunkMapping%3D(_ref3%3D(_runtimeRequire_consumesLoadingData%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData.chunkMapping)!%3D%3Dnull%26%26_ref3!%3D%3Dvoid%200%3F_ref3%3A%7B%7D%3Bconst%20consumesLoadingModuleToConsumeDataMapping%3D(_ref4%3D(_runtimeRequire_consumesLoadingData1%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData1%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData1.moduleIdToConsumeDataMapping)!%3D%3Dnull%26%26_ref4!%3D%3Dvoid%200%3F_ref4%3A%7B%7D%3Bconst%20consumesLoadinginstalledModules%3D%7B%7D%3Bconst%20initializeSharingInitPromises%3D%5B%5D%3Bconst%20initializeSharingInitTokens%3D%7B%7D%3Bconst%20containerShareScope%3D(_runtimeRequire_initializeExposesData%3DruntimeRequire.initializeExposesData)%3D%3D%3Dnull%7C%7C_runtimeRequire_initializeExposesData%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_initializeExposesData.shareScope%3Bfor(const%20key%20in%20__module_federation_bundler_runtime__)%7BruntimeRequire.federation%5Bkey%5D%3D__module_federation_bundler_runtime__%5Bkey%5D%7Dearly(runtimeRequire.federation%2C%22libraryType%22%2C()%3D%3E__module_federation_library_type__)%3Bearly(runtimeRequire.federation%2C%22sharedFallback%22%2C()%3D%3E__module_federation_share_fallbacks__)%3Bconst%20sharedFallback%3DruntimeRequire.federation.sharedFallback%3Bearly(runtimeRequire.federation%2C%22consumesLoadingModuleToHandlerMapping%22%2C()%3D%3E%7Bconst%20consumesLoadingModuleToHandlerMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(consumesLoadingModuleToConsumeDataMapping))%7Bvar%20_runtimeRequire_federation_bundlerRuntime%3BconsumesLoadingModuleToHandlerMapping%5BmoduleId%5D%3D%7Bgetter%3AsharedFallback%3F(_runtimeRequire_federation_bundlerRuntime%3DruntimeRequire.federation.bundlerRuntime)%3D%3D%3Dnull%7C%7C_runtimeRequire_federation_bundlerRuntime%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_federation_bundlerRuntime.getSharedFallbackGetter(%7BshareKey%3Adata.shareKey%2Cfactory%3Adata.fallback%2CwebpackRequire%3AruntimeRequire%2ClibraryType%3AruntimeRequire.federation.libraryType%7D)%3Adata.fallback%2CtreeShakingGetter%3AsharedFallback%3Fdata.fallback%3Aundefined%2CshareInfo%3A%7BshareConfig%3A%7BfixedDependencies%3Afalse%2CrequiredVersion%3Adata.requiredVersion%2CstrictVersion%3Adata.strictVersion%2Csingleton%3Adata.singleton%2Ceager%3Adata.eager%7D%2Cscope%3A%5Bdata.shareScope%5D%7D%2CshareKey%3Adata.shareKey%2CtreeShaking%3AruntimeRequire.federation.sharedFallback%3F%7Bget%3Adata.fallback%2Cmode%3Adata.treeShakingMode%7D%3Aundefined%7D%7Dreturn%20consumesLoadingModuleToHandlerMapping%7D)%3Bearly(runtimeRequire.federation%2C%22initOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.initOptions%2C%22name%22%2C()%3D%3E__module_federation_container_name__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shareStrategy%22%2C()%3D%3E__module_federation_share_strategy__)%3Bearly(runtimeRequire.federation.initOptions%2C%22shared%22%2C()%3D%3E%7Bconst%20shared%3D%7B%7D%3Bfor(let%5Bscope%2Cstages%5Dof%20Object.entries(initializeSharingScopeToInitDataMapping))%7Bfor(let%20stage%20of%20stages)%7Bif(typeof%20stage%3D%3D%3D%22object%22%26%26stage!%3D%3Dnull)%7Bconst%7Bname%2Cversion%2Cfactory%2Ceager%2Csingleton%2CrequiredVersion%2CstrictVersion%2CtreeShakingMode%7D%3Dstage%3Bconst%20shareConfig%3D%7B%7D%3Bconst%20isValidValue%3Dfunction(val)%7Breturn%20typeof%20val!%3D%3D%22undefined%22%7D%3Bif(isValidValue(singleton))%7BshareConfig.singleton%3Dsingleton%7Dif(isValidValue(requiredVersion))%7BshareConfig.requiredVersion%3DrequiredVersion%7Dif(isValidValue(eager))%7BshareConfig.eager%3Deager%7Dif(isValidValue(strictVersion))%7BshareConfig.strictVersion%3DstrictVersion%7Dconst%20options%3D%7Bversion%2Cscope%3A%5Bscope%5D%2CshareConfig%2Cget%3Afactory%2CtreeShaking%3AtreeShakingMode%3F%7Bmode%3AtreeShakingMode%7D%3Aundefined%7D%3Bif(shared%5Bname%5D)%7Bshared%5Bname%5D.push(options)%7Delse%7Bshared%5Bname%5D%3D%5Boptions%5D%7D%7D%7D%7Dreturn%20shared%7D)%3Bmerge(runtimeRequire.federation.initOptions%2C%22remotes%22%2C()%3D%3EObject.values(__module_federation_remote_infos__).flat().filter(remote%3D%3Eremote.externalType%3D%3D%3D%22script%22))%3Bmerge(runtimeRequire.federation.initOptions%2C%22plugins%22%2C()%3D%3E__module_federation_runtime_plugins__)%3Bearly(runtimeRequire.federation%2C%22bundlerRuntimeOptions%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions%2C%22remotes%22%2C()%3D%3E(%7B%7D))%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22chunkMapping%22%2C()%3D%3EremotesLoadingChunkMapping)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22remoteInfos%22%2C()%3D%3E__module_federation_remote_infos__)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToExternalAndNameMapping%22%2C()%3D%3E%7Bconst%20remotesLoadingIdToExternalAndNameMappingMapping%3D%7B%7D%3Bfor(let%5BmoduleId%2Cdata%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7BremotesLoadingIdToExternalAndNameMappingMapping%5BmoduleId%5D%3D%5Bdata.shareScope%2Cdata.name%2Cdata.externalModuleId%2Cdata.remoteName%5D%7Dreturn%20remotesLoadingIdToExternalAndNameMappingMapping%7D)%3Bearly(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22webpackRequire%22%2C()%3D%3EruntimeRequire)%3Bmerge(runtimeRequire.federation.bundlerRuntimeOptions.remotes%2C%22idToRemoteMap%22%2C()%3D%3E%7Bconst%20idToRemoteMap%3D%7B%7D%3Bfor(let%5Bid%2CremoteData%5Dof%20Object.entries(remotesLoadingModuleIdToRemoteDataMapping))%7Bconst%20info%3D__module_federation_remote_infos__%5BremoteData.remoteName%5D%3Bif(info)idToRemoteMap%5Bid%5D%3Dinfo%7Dreturn%20idToRemoteMap%7D)%3Boverride(runtimeRequire%2C%22S%22%2CruntimeRequire.federation.bundlerRuntime.S)%3Bif(runtimeRequire.federation.attachShareScopeMap)%7BruntimeRequire.federation.attachShareScopeMap(runtimeRequire)%7Doverride(runtimeRequire.f%2C%22remotes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.remotes(%7BchunkId%2Cpromises%2CchunkMapping%3AremotesLoadingChunkMapping%2CidToExternalAndNameMapping%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToExternalAndNameMapping%2CidToRemoteMap%3AruntimeRequire.federation.bundlerRuntimeOptions.remotes.idToRemoteMap%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire.f%2C%22consumes%22%2C(chunkId%2Cpromises)%3D%3EruntimeRequire.federation.bundlerRuntime.consumes(%7BchunkId%2Cpromises%2CchunkMapping%3AconsumesLoadingChunkMapping%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%2CinstalledModules%3AconsumesLoadinginstalledModules%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22I%22%2C(name%2CinitScope)%3D%3EruntimeRequire.federation.bundlerRuntime.I(%7BshareScopeName%3Aname%2CinitScope%2CinitPromises%3AinitializeSharingInitPromises%2CinitTokens%3AinitializeSharingInitTokens%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22initContainer%22%2C(shareScope%2CinitScope%2CremoteEntryInitOptions)%3D%3EruntimeRequire.federation.bundlerRuntime.initContainerEntry(%7BshareScope%2CinitScope%2CremoteEntryInitOptions%2CshareScopeKey%3AcontainerShareScope%2CwebpackRequire%3AruntimeRequire%7D))%3Boverride(runtimeRequire%2C%22getContainer%22%2C(module%2CgetScope)%3D%3E%7Bvar%20moduleMap%3DruntimeRequire.initializeExposesData.moduleMap%3BruntimeRequire.R%3DgetScope%3BgetScope%3DObject.prototype.hasOwnProperty.call(moduleMap%2Cmodule)%3FmoduleMap%5Bmodule%5D()%3APromise.resolve().then(()%3D%3E%7Bthrow%20new%20Error('Module%20%22'%2Bmodule%2B'%22%20does%20not%20exist%20in%20container.')%7D)%3BruntimeRequire.R%3Dundefined%3Breturn%20getScope%7D)%3BruntimeRequire.federation.instance%3DruntimeRequire.federation.bundlerRuntime.init(%7BwebpackRequire%3AruntimeRequire%7D)%3Bif((_runtimeRequire_consumesLoadingData2%3DruntimeRequire.consumesLoadingData)%3D%3D%3Dnull%7C%7C_runtimeRequire_consumesLoadingData2%3D%3D%3Dvoid%200%3Fvoid%200%3A_runtimeRequire_consumesLoadingData2.initialConsumes)%7BruntimeRequire.federation.bundlerRuntime.installInitialConsumes(%7BwebpackRequire%3AruntimeRequire%2CinstalledModules%3AconsumesLoadinginstalledModules%2CinitialConsumes%3AruntimeRequire.consumesLoadingData.initialConsumes%2CmoduleToHandlerMapping%3AruntimeRequire.federation.consumesLoadingModuleToHandlerMapping%7D)%7D%7D") } if (typeof prevStartup === "function") { return prevStartup();