diff --git a/.changeset/module-federation-2-runtime-plugins.md b/.changeset/module-federation-2-runtime-plugins.md new file mode 100644 index 000000000..a138c424f --- /dev/null +++ b/.changeset/module-federation-2-runtime-plugins.md @@ -0,0 +1,7 @@ +--- +"@callstack/repack": patch +--- + +Keep the options of Module Federation 2.x runtime plugins passed to `ModuleFederationPluginV2` as `[path, options]` in `runtimePlugins`. Such entries were silently dropped before. + +Fix the typings of the `@callstack/repack/mf/*` runtime plugins with `@module-federation/enhanced` 0.17 and newer, where `FederationRuntimePlugin` and `FederationHost` were renamed to `ModuleFederationRuntimePlugin` and `ModuleFederation`. The types are now derived from the installed runtime, so they work with every supported version. diff --git a/packages/repack/package.json b/packages/repack/package.json index 69cf9c512..5ff802da1 100644 --- a/packages/repack/package.json +++ b/packages/repack/package.json @@ -113,8 +113,8 @@ "@babel/core": "^7.29.7", "@babel/plugin-transform-export-namespace-from": "^7.29.7", "@babel/plugin-transform-modules-commonjs": "^7.29.7", - "@module-federation/enhanced": "0.8.9", - "@module-federation/sdk": "0.6.10", + "@module-federation/enhanced": "2.9.2", + "@module-federation/sdk": "2.9.2", "@rspack/core": "catalog:", "@swc/helpers": "catalog:", "@types/babel__core": "^7.20.5", diff --git a/packages/repack/src/modules/FederationRuntimePlugins/CorePlugin.ts b/packages/repack/src/modules/FederationRuntimePlugins/CorePlugin.ts index 67196d99e..b71323107 100644 --- a/packages/repack/src/modules/FederationRuntimePlugins/CorePlugin.ts +++ b/packages/repack/src/modules/FederationRuntimePlugins/CorePlugin.ts @@ -1,7 +1,7 @@ -import type { FederationRuntimePlugin } from '@module-federation/enhanced/runtime'; import type * as RepackClient from '../ScriptManager/index.js'; +import type { MFRuntimePlugin } from './types.js'; -const RepackCorePlugin: () => FederationRuntimePlugin = () => ({ +const RepackCorePlugin: () => MFRuntimePlugin = () => ({ name: 'repack-core-plugin', loadEntry: async ({ remoteInfo }) => { const client = require('../ScriptManager/index.js') as typeof RepackClient; diff --git a/packages/repack/src/modules/FederationRuntimePlugins/PrefetchPlugin.ts b/packages/repack/src/modules/FederationRuntimePlugins/PrefetchPlugin.ts index 9bb5f6dac..f345045d2 100644 --- a/packages/repack/src/modules/FederationRuntimePlugins/PrefetchPlugin.ts +++ b/packages/repack/src/modules/FederationRuntimePlugins/PrefetchPlugin.ts @@ -1,5 +1,5 @@ -import type { FederationRuntimePlugin } from '@module-federation/enhanced/runtime'; import type * as RepackClient from '../ScriptManager/index.js'; +import type { MFRuntimePlugin } from './types.js'; interface PrefetchAsset { name: string; @@ -32,7 +32,7 @@ function prefetchAsset(asset: PrefetchAsset) { ); } -const RepackPrefetchPlugin: () => FederationRuntimePlugin = () => ({ +const RepackPrefetchPlugin: () => MFRuntimePlugin = () => ({ name: 'repack-prefetch-plugin', generatePreloadAssets: async (args) => { const preloadConfig = args.preloadOptions.preloadConfig; diff --git a/packages/repack/src/modules/FederationRuntimePlugins/ResolverPlugin.ts b/packages/repack/src/modules/FederationRuntimePlugins/ResolverPlugin.ts index 7474f6071..7e7c9ecdd 100644 --- a/packages/repack/src/modules/FederationRuntimePlugins/ResolverPlugin.ts +++ b/packages/repack/src/modules/FederationRuntimePlugins/ResolverPlugin.ts @@ -1,10 +1,7 @@ -import type { - FederationHost, - FederationRuntimePlugin, -} from '@module-federation/enhanced/runtime'; import type { ScriptLocator } from '../ScriptManager/index.js'; +import type { MFInstance, MFRuntimePlugin } from './types.js'; -type MFRemote = Parameters[0][0]; +type MFRemote = Parameters[0][0]; export type RepackResolverPluginConfiguration = | Omit @@ -87,7 +84,7 @@ const registerResolver = async ( const RepackResolverPlugin: ( config?: RepackResolverPluginConfiguration -) => FederationRuntimePlugin = (config) => ({ +) => MFRuntimePlugin = (config) => ({ name: 'repack-resolver-plugin', registerRemote: (args) => { registerResolver(args.remote, config); diff --git a/packages/repack/src/modules/FederationRuntimePlugins/types.ts b/packages/repack/src/modules/FederationRuntimePlugins/types.ts new file mode 100644 index 000000000..d75706dda --- /dev/null +++ b/packages/repack/src/modules/FederationRuntimePlugins/types.ts @@ -0,0 +1,10 @@ +import type { init } from '@module-federation/enhanced/runtime'; + +// Module Federation 0.17 renamed FederationHost and FederationRuntimePlugin to +// ModuleFederation and ModuleFederationRuntimePlugin. Deriving both from `init` +// keeps the published typings working with every supported version. +export type MFInstance = ReturnType; + +export type MFRuntimePlugin = NonNullable< + Parameters[0]['plugins'] +>[number]; diff --git a/packages/repack/src/plugins/ModuleFederationPluginV2.ts b/packages/repack/src/plugins/ModuleFederationPluginV2.ts index ddb329a10..f33bf41dd 100644 --- a/packages/repack/src/plugins/ModuleFederationPluginV2.ts +++ b/packages/repack/src/plugins/ModuleFederationPluginV2.ts @@ -32,6 +32,14 @@ export interface ModuleFederationPluginV2Config reactNativeDeepImports?: boolean; } +// a runtime plugin path, or [path, options] (Module Federation 2.x) +type RuntimePlugin = NonNullable< + MF.ModuleFederationPluginOptions['runtimePlugins'] +>[number]; + +const runtimePluginPath = (plugin: RuntimePlugin) => + typeof plugin === 'string' ? plugin : plugin[0]; + /** * Webpack plugin to configure Module Federation with platform differences * handled under the hood. @@ -140,23 +148,28 @@ export class ModuleFederationPluginV2 { private adaptRuntimePlugins( context: string, - runtimePlugins: string[] | undefined = [] + runtimePlugins: RuntimePlugin[] | undefined = [] ) { const plugins = runtimePlugins - .map((pluginPath) => { + .map((plugin) => { try { // resolve the paths to compare against absolute paths - return require.resolve(pluginPath, { paths: [context] }); + const pluginPath = require.resolve(runtimePluginPath(plugin), { + paths: [context], + }); + if (typeof plugin === 'string') return pluginPath; + const entry: RuntimePlugin = [pluginPath, plugin[1]]; + return entry; } catch { // ignore invalid paths return undefined; } }) - .filter((pluginPath) => !!pluginPath) as string[]; + .filter((plugin): plugin is RuntimePlugin => !!plugin); for (const plugin of this.defaultRuntimePlugins) { const pluginPath = require.resolve(plugin); - if (!plugins.includes(pluginPath)) { + if (!plugins.some((entry) => runtimePluginPath(entry) === pluginPath)) { plugins.unshift(pluginPath); } } diff --git a/packages/repack/src/plugins/__tests__/ModuleFederationPluginV2.test.ts b/packages/repack/src/plugins/__tests__/ModuleFederationPluginV2.test.ts index 4071c87c9..5552d33af 100644 --- a/packages/repack/src/plugins/__tests__/ModuleFederationPluginV2.test.ts +++ b/packages/repack/src/plugins/__tests__/ModuleFederationPluginV2.test.ts @@ -9,7 +9,10 @@ type CompilerWarning = Error & { }; }; -jest.mock('@module-federation/enhanced/rspack'); +jest.mock('@module-federation/enhanced/rspack', () => ({ + // 2.x's export shape can't be automocked into a constructor + ModuleFederationPlugin: jest.fn(() => ({ apply: jest.fn() })), +})); const mockCompiler = { context: __dirname, @@ -212,6 +215,22 @@ describe('ModuleFederationPlugin', () => { expect(config.runtimePlugins).toHaveLength(3); }); + it('should keep options of runtime plugins passed as [path, options]', () => { + new ModuleFederationPluginV2({ + name: 'test', + runtimePlugins: [['@callstack/repack/mf/resolver-plugin', { retry: 2 }]], + }).apply(mockCompiler); + + const config = mockPlugin.mock.calls[0][0]; + expect(config.runtimePlugins).toContainEqual([ + resolverPluginPath, + { retry: 2 }, + ]); + expect(config.runtimePlugins).toContain(corePluginPath); + expect(config.runtimePlugins).toContain(prefetchPluginPath); + expect(config.runtimePlugins).toHaveLength(3); + }); + it('should use loaded-first as default shareStrategy', () => { new ModuleFederationPluginV2({ name: 'test' }).apply(mockCompiler); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aa047e776..639a1880e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -884,11 +884,11 @@ importers: specifier: ^7.29.7 version: 7.29.7(@babel/core@7.29.7) '@module-federation/enhanced': - specifier: 0.8.9 - version: 0.8.9(@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) + specifier: 2.9.2 + version: 2.9.2(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)(webpack@5.105.4) '@module-federation/sdk': - specifier: 0.6.10 - version: 0.6.10 + specifier: 2.9.2 + version: 2.9.2 '@rspack/core': specifier: 'catalog:' version: 1.6.0(@swc/helpers@0.5.23) @@ -2900,9 +2900,6 @@ packages: '@module-federation/bridge-react-webpack-plugin@0.21.0': resolution: {integrity: sha512-k4C55EgRhvnErMztKAGakIFCidAT9f/5ErjDBJtcYCcrycFpEltIbQ5922+dPMuekYQGI8eBYLM34814kGI/6w==} - '@module-federation/bridge-react-webpack-plugin@0.8.9': - resolution: {integrity: sha512-gM5fnWvFfTEfh5UjSmNod1H/np/pUUjvJnnN31ucKcZ21mL6wJo0A+Vfj8a5gv34S+1n5lWR1b6eVv9CofwgDQ==} - '@module-federation/bridge-react-webpack-plugin@2.0.1': resolution: {integrity: sha512-D7LMW5EMAJShOMR1aZDAJ6s+MdsYDHaQyJADLQ3LaY0sne/BkVqkPikUwcO1IwOwKbXjYsDlQVOEvk9wZVRFhA==} @@ -2941,12 +2938,6 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - '@module-federation/data-prefetch@0.8.9': - resolution: {integrity: sha512-doUzJ5uuLPrN5e/NMvKuyUE/lqiZFgGzFITwBF90/KKqOq7R2ZWh43R4RJgkUYfs/F119AYXZ9jxrSphIh+cjg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - '@module-federation/data-prefetch@2.0.1': resolution: {integrity: sha512-Kq0P1OABGt6QAvs6TaE/zY9Ut9Y/oJFrzoSF3eWaCYbUAr2KD2SpTyMsPz4ssBzjeKXTgimugh6tHHd6mpCBIQ==} peerDependencies: @@ -2976,15 +2967,6 @@ packages: vue-tsc: optional: true - '@module-federation/dts-plugin@0.8.9': - resolution: {integrity: sha512-Q40yqdQvTV8QRoegjUquTejhLl2gZoPv623hc8MWmGuP2vXLBIJJ9iV849LkFLeE8xaUgtwmn2uCQeBh2aJNjg==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - vue-tsc: - optional: true - '@module-federation/dts-plugin@2.0.1': resolution: {integrity: sha512-PLneTsf1fQS5/RTBedtLAAmCPRdMfIlhfJkOa8QH3WDJaQsqm8Wb3r2cTUBf2aNj/bP3aH/y6Hs9JFB/4x0l5g==} peerDependencies: @@ -3033,20 +3015,6 @@ packages: webpack: optional: true - '@module-federation/enhanced@0.8.9': - resolution: {integrity: sha512-feZUhznCyFkyivWNSFPN+FHMZmyrxlKBhWW8ldWsp/LlKIzWI75vMLimpiydBWnWTZgnOhQDBZGZVxSlfnfKHQ==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - webpack: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - webpack: - optional: true - '@module-federation/enhanced@2.0.1': resolution: {integrity: sha512-EZIARQ/8ScoTP6PV8+E4SsmMYWK4ErrikZJ0G/FX8wvK8mCtdoKatFtvDN9++P6Nl78kN9zHYgAV4AHKdBVjfQ==} hasBin: true @@ -3089,9 +3057,6 @@ packages: '@module-federation/error-codes@0.21.2': resolution: {integrity: sha512-mGbPAAApgjmQUl4J7WAt20aV04a26TyS21GDEpOGXFEQG5FqmZnSJ6FqB8K19HgTKioBT1+fF/Ctl5bGGao/EA==} - '@module-federation/error-codes@0.8.9': - resolution: {integrity: sha512-yUA3GZjOy8Ll6l193faXir2veexDaUiLdmptbzC9tIee/iSQiSwIlibdTafCfqaJ62cLZaytOUdmAFAKLv8QQw==} - '@module-federation/error-codes@2.0.1': resolution: {integrity: sha512-2bJF/ft+qL9L6Zvq2t/G9/f/0wFL73cM8/NJ04uyYz9BjIgvx28K5qu8/6+IwgEEKATG7vOhBBVj6wH3S+5ASA==} @@ -3108,11 +3073,6 @@ packages: peerDependencies: '@module-federation/runtime-tools': 0.21.0 - '@module-federation/inject-external-runtime-core-plugin@0.8.9': - resolution: {integrity: sha512-F3s/3Iny20c0Y0CaXgOZdgl7PzgXj6ftCiT5FO6QWmyhzfl2R0o3KFuv54BmwtoimSFky1ShuC/jPluz4EGG1g==} - peerDependencies: - '@module-federation/runtime-tools': 0.8.9 - '@module-federation/inject-external-runtime-core-plugin@2.0.1': resolution: {integrity: sha512-oAA7G+4GCHM+WRYfscR/x4GwCyM9CEqfdD9/x2L6y8mtLWK9anRLKTocsI759AvzXsbT1m3EQ5ki1O6wlwDu3g==} peerDependencies: @@ -3129,9 +3089,6 @@ packages: '@module-federation/managers@0.21.0': resolution: {integrity: sha512-9YJ7dro1sJeAz6wsZrhtM/K/I9s3CWaQpqcFYUYj4ZNMpVeCNpxKRRbewd/wBKel6T/wMNvAGN5iiJn54TGKSQ==} - '@module-federation/managers@0.8.9': - resolution: {integrity: sha512-Fb28sa2iAqwSSSgiPBoL5Kp0RB9ZKJvdwLAEwZBV2c2LyZUqJCdTjmYuB5Q2sWB9wsudd/ijV6WWNK/nVoJxdA==} - '@module-federation/managers@2.0.1': resolution: {integrity: sha512-KR01lSlcYRQ9C6hW2a8CQQtAE0LvfTLgtV/6ZNUTagw8sRfeDln+ggrZsYilKu9zl0i8RPDgpv/kS60o4lcxCQ==} @@ -3144,9 +3101,6 @@ packages: '@module-federation/manifest@0.21.0': resolution: {integrity: sha512-m2evrpyO9OPF4ul/qHD5P76CfBgFpEDsNAorddNgDOZAjI75lqD4DX/R0gyuTXoSOPz0vFbLLWLy2adze5xRTA==} - '@module-federation/manifest@0.8.9': - resolution: {integrity: sha512-48jIv50l0tTx+CVzs2JKMlTO0mcUvFRDxqO79nJaL1DLfpRQoCRQjCA8sXUp5PPIyJ8MHQqkHK/dnaal4NlR/A==} - '@module-federation/manifest@2.0.1': resolution: {integrity: sha512-p8nYGjHWp17MsYdW/Vv0ogBDiTTsI1PHWPQbvVIqLQXDqwiesaRSRR1zziECXQoEL8lV5Bs+uSkcaJGhea9P+A==} @@ -3177,18 +3131,6 @@ packages: vue-tsc: optional: true - '@module-federation/rspack@0.8.9': - resolution: {integrity: sha512-wuHRx+aUYhsrAQzU5yKQksaOJ8pwhuQJDl8I86xmzkEsnxcWsZcn49xIR4t7v1HcYAqjBXLNXSoQwkIMH9zu2w==} - peerDependencies: - '@rspack/core': '>=0.7' - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - '@module-federation/rspack@2.0.1': resolution: {integrity: sha512-SAlNE8iclFmzrKtx3/C2GivXYx6nPzx4MgQV01QG/a4LpnLbwlxzdZu3rqQ2swp4NNWT/t/GT7Y+7gfhyVa7mg==} peerDependencies: @@ -3225,9 +3167,6 @@ packages: '@module-federation/runtime-core@0.21.2': resolution: {integrity: sha512-LtDnccPxjR8Xqa3daRYr1cH/6vUzK3mQSzgvnfsUm1fXte5syX4ftWw3Eu55VdqNY3yREFRn77AXdu9PfPEZRw==} - '@module-federation/runtime-core@0.6.17': - resolution: {integrity: sha512-PXFN/TT9f64Un6NQYqH1Z0QLhpytW15jkZvTEOV8W7Ed319BECFI0Rv4xAsAGa8zJGFoaM/c7QOQfdFXtKj5Og==} - '@module-federation/runtime-core@2.0.1': resolution: {integrity: sha512-gOuCPSHoQGUGwlxfSTMInFX+QvLxdEWegGGMiLdU5vqbXuva4E9M+kXBBO7/0MkcBPMmVs0wOJGm0XOLeV2f1Q==} @@ -3246,9 +3185,6 @@ packages: '@module-federation/runtime-tools@0.21.2': resolution: {integrity: sha512-SgG9NWTYGNYcHSd5MepO3AXf6DNXriIo4sKKM4mu4RqfYhHyP+yNjnF/gvYJl52VD61g0nADmzLWzBqxOqk2tg==} - '@module-federation/runtime-tools@0.8.9': - resolution: {integrity: sha512-xBUGx1oOZNuxXjPGdTMrLtAIDrbrN6jE2Mgb9w1qr2mQ4AW9b5TOlxbARBoX4q98xt9oFCGU6Q0eW5XJpsl8AQ==} - '@module-federation/runtime-tools@2.0.1': resolution: {integrity: sha512-AStdwBtsGB3jIfDg9oP+KyVPsimdaeHsP855gqCxDp1hi2+GKjlZWZx9ThkS8NytVSXSUysxqoUL1ivDoKgcCQ==} @@ -3267,9 +3203,6 @@ packages: '@module-federation/runtime@0.21.2': resolution: {integrity: sha512-97jlOx4RAnAHMBTfgU5FBK6+V/pfT6GNX0YjSf8G+uJ3lFy74Y6kg/BevEkChTGw5waCLAkw/pw4LmntYcNN7g==} - '@module-federation/runtime@0.8.9': - resolution: {integrity: sha512-i+a+/hoT/c+EE52mT+gJrbA6DhL86PY9cd/dIv/oKpLz9i+yYBlG+RA+puc7YsUEO4irbFLvnIMq6AGDUKVzYA==} - '@module-federation/runtime@2.0.1': resolution: {integrity: sha512-UQ72P5Oo40dS6vdhHetwTtIsbGciEr+bjoYvDgh1WLPfFlTYd8zo9cLfqaf3juuPfV3cMVARAVPmh16lQYpUGA==} @@ -3288,12 +3221,6 @@ packages: '@module-federation/sdk@0.21.2': resolution: {integrity: sha512-t2vHSJ1a9zjg7LLJoEghcytNLzeFCqOat5TbXTav5dgU0xXw82Cf0EfLrxiJL6uUpgbtyvUdqqa2DVAvMPjiiA==} - '@module-federation/sdk@0.6.10': - resolution: {integrity: sha512-i6ofHnImB4zCn/bt7Ft0zh9o/PxvsJj8Wc88EAeJg4IrY6+bzwwo1G2h44w1Yt3go4skZZFQCK0UxoaV6l/t/A==} - - '@module-federation/sdk@0.8.9': - resolution: {integrity: sha512-QJ60itWC/SPjqduT7wDiF8UGwVU/yJ/Sz+QbnoxB9b7gNLzvI//swAXTo9eOtKsCy/V2BMwjt0F3eOcfnaqllA==} - '@module-federation/sdk@2.0.1': resolution: {integrity: sha512-32PwudojGjog51cwpTali7D6ud82oVgsyvOx9JjAzhvXBX96YI4mRsursuWcthDxmigJP9ZvUTXDuRUEDh1OQA==} @@ -3306,9 +3233,6 @@ packages: '@module-federation/third-party-dts-extractor@0.21.0': resolution: {integrity: sha512-8aWNbWs0IcuAhf/5321SiIFMAMIFQLE7ttlsOw6rb1U7S9u7LzGHR5eNPhKA7BT9OZUg/1aIa8/Ax2hAhj2VNw==} - '@module-federation/third-party-dts-extractor@0.8.9': - resolution: {integrity: sha512-53v6B5zfhGlAPpH0SrlJDp9B6kcOcZaUPi6J4L/7ie5F0YVe0vq/mJGOOzAStN9ggJjSrjBZLFT3gFmBYM3Z9A==} - '@module-federation/third-party-dts-extractor@2.0.1': resolution: {integrity: sha512-neKSr6FNUeGRh+YR57l/QZUzPytJXuJx+babF7j5iGJG3FP+kfizr6QD0hgVis5KEoXMVbQ8yyvG0slERizeyw==} @@ -3327,9 +3251,6 @@ packages: '@module-federation/webpack-bundler-runtime@0.21.2': resolution: {integrity: sha512-06R/NDY6Uh5RBIaBOFwYWzJCf1dIiQd/DFHToBVhejUT3ZFG7GzHEPIIsAGqMzne/JSmVsvjlXiJu7UthQ6rFA==} - '@module-federation/webpack-bundler-runtime@0.8.9': - resolution: {integrity: sha512-DYLvVi4b2MUYu/B4g5wIC5SHxiODboKHkYGHYapOhCcqOchca/N16gtiAI8eSNjJPc+fgUXUGIyGiB18IlFEeQ==} - '@module-federation/webpack-bundler-runtime@2.0.1': resolution: {integrity: sha512-u1NId3SF4lHDTmD2CHFEszulmXmIq1TGw9JYvnLx5rKJL7xt3aNxcb1GvkaYbRNVBXhSMjJ75E5LsQlZzyBx9A==} @@ -7021,10 +6942,6 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - isomorphic-rslog@0.0.7: - resolution: {integrity: sha512-n6/XnKnZ5eLEj6VllG4XmamXG7/F69nls8dcynHyhcTpsPUYgcgx4ifEaCo4lQJ2uzwfmIT+F0KBGwBcMKmt5g==} - engines: {node: '>=14.17.6'} - isomorphic-ws@5.0.0: resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: @@ -11299,7 +11216,7 @@ snapshots: '@expo/router-server': 57.0.12(@expo/metro-runtime@57.0.16)(expo-constants@57.0.21)(expo-font@57.0.4)(expo-router@57.0.25)(expo-server@57.0.3)(expo@57.0.27)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@expo/schema-utils': 57.0.2 '@expo/spawn-async': 1.8.0 - '@expo/ws-tunnel': 2.0.1(ws@8.21.1) + '@expo/ws-tunnel': 2.0.1(ws@8.21.3) '@expo/xcpretty': 4.4.6 '@react-native/dev-middleware': 0.86.3 accepts: 1.3.8 @@ -11337,7 +11254,7 @@ snapshots: terminal-link: 2.1.1 toqr: 0.1.1 wrap-ansi: 7.0.0 - ws: 8.21.1 + ws: 8.21.3 zod: 3.25.76 optionalDependencies: expo-router: 57.0.25(070bba2580d5a65057f5194baa7f9812) @@ -11376,7 +11293,7 @@ snapshots: '@expo/router-server': 57.0.12(@expo/metro-runtime@57.0.16)(expo-constants@57.0.21)(expo-font@57.0.4)(expo-router@57.0.25)(expo-server@57.0.3)(expo@57.0.27)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@expo/schema-utils': 57.0.2 '@expo/spawn-async': 1.8.0 - '@expo/ws-tunnel': 2.0.1(ws@8.21.1) + '@expo/ws-tunnel': 2.0.1(ws@8.21.3) '@expo/xcpretty': 4.4.6 '@react-native/dev-middleware': 0.86.3 accepts: 1.3.8 @@ -11414,7 +11331,7 @@ snapshots: terminal-link: 2.1.1 toqr: 0.1.1 wrap-ansi: 7.0.0 - ws: 8.21.1 + ws: 8.21.3 zod: 3.25.76 optionalDependencies: expo-router: 57.0.25(66ea6cfd90df0a40c40648bd22be227d) @@ -11780,9 +11697,9 @@ snapshots: - '@types/react' - '@types/react-dom' - '@expo/ws-tunnel@2.0.1(ws@8.21.1)': + '@expo/ws-tunnel@2.0.1(ws@8.21.3)': dependencies: - ws: 8.21.1 + ws: 8.21.3 '@expo/xcpretty@4.4.6': dependencies: @@ -12278,12 +12195,6 @@ snapshots: '@types/semver': 7.5.8 semver: 7.6.3 - '@module-federation/bridge-react-webpack-plugin@0.8.9': - dependencies: - '@module-federation/sdk': 0.8.9 - '@types/semver': 7.5.8 - semver: 7.6.3 - '@module-federation/bridge-react-webpack-plugin@2.0.1': dependencies: '@module-federation/sdk': 2.0.1 @@ -12367,14 +12278,6 @@ snapshots: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - '@module-federation/data-prefetch@0.8.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': - dependencies: - '@module-federation/runtime': 0.8.9 - '@module-federation/sdk': 0.8.9 - fs-extra: 9.1.0 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) - '@module-federation/data-prefetch@2.0.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: '@module-federation/runtime': 2.0.1 @@ -12434,31 +12337,6 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/dts-plugin@0.8.9(typescript@7.0.2)': - dependencies: - '@module-federation/error-codes': 0.8.9 - '@module-federation/managers': 0.8.9 - '@module-federation/sdk': 0.8.9 - '@module-federation/third-party-dts-extractor': 0.8.9 - adm-zip: 0.6.1 - ansi-colors: 4.1.3 - axios: 1.20.0 - chalk: 3.0.0 - fs-extra: 9.1.0 - isomorphic-ws: 5.0.0(ws@8.21.3) - koa: 2.16.4 - lodash.clonedeepwith: 4.5.0 - log4js: 6.9.1 - node-schedule: 2.1.1 - rambda: 9.4.2 - typescript: 7.0.2 - ws: 8.21.3 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - '@module-federation/dts-plugin@2.0.1(typescript@7.0.2)': dependencies: '@module-federation/error-codes': 2.0.1 @@ -12555,32 +12433,6 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/enhanced@0.8.9(@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)': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.8.9 - '@module-federation/data-prefetch': 0.8.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@module-federation/dts-plugin': 0.8.9(typescript@7.0.2) - '@module-federation/error-codes': 0.8.9 - '@module-federation/inject-external-runtime-core-plugin': 0.8.9(@module-federation/runtime-tools@0.8.9) - '@module-federation/managers': 0.8.9 - '@module-federation/manifest': 0.8.9(typescript@7.0.2) - '@module-federation/rspack': 0.8.9(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2) - '@module-federation/runtime-tools': 0.8.9 - '@module-federation/sdk': 0.8.9 - btoa: 1.2.1 - upath: 2.0.1 - optionalDependencies: - typescript: 7.0.2 - webpack: 5.105.4 - transitivePeerDependencies: - - '@rspack/core' - - bufferutil - - debug - - react - - react-dom - - supports-color - - 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)))': dependencies: '@module-federation/bridge-react-webpack-plugin': 2.0.1 @@ -12640,8 +12492,6 @@ snapshots: '@module-federation/error-codes@0.21.2': {} - '@module-federation/error-codes@0.8.9': {} - '@module-federation/error-codes@2.0.1': {} '@module-federation/error-codes@2.9.2': {} @@ -12654,10 +12504,6 @@ snapshots: dependencies: '@module-federation/runtime-tools': 0.21.0 - '@module-federation/inject-external-runtime-core-plugin@0.8.9(@module-federation/runtime-tools@0.8.9)': - dependencies: - '@module-federation/runtime-tools': 0.8.9 - '@module-federation/inject-external-runtime-core-plugin@2.0.1(@module-federation/runtime-tools@2.0.1)': dependencies: '@module-federation/runtime-tools': 2.0.1 @@ -12678,12 +12524,6 @@ snapshots: find-pkg: 2.0.0 fs-extra: 9.1.0 - '@module-federation/managers@0.8.9': - dependencies: - '@module-federation/sdk': 0.8.9 - find-pkg: 2.0.0 - fs-extra: 9.1.0 - '@module-federation/managers@2.0.1': dependencies: '@module-federation/sdk': 2.0.1 @@ -12724,21 +12564,6 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/manifest@0.8.9(typescript@7.0.2)': - dependencies: - '@module-federation/dts-plugin': 0.8.9(typescript@7.0.2) - '@module-federation/managers': 0.8.9 - '@module-federation/sdk': 0.8.9 - chalk: 3.0.0 - find-pkg: 2.0.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - typescript - - utf-8-validate - - vue-tsc - '@module-federation/manifest@2.0.1(typescript@7.0.2)': dependencies: '@module-federation/dts-plugin': 2.0.1(typescript@7.0.2) @@ -12803,24 +12628,6 @@ snapshots: - supports-color - utf-8-validate - '@module-federation/rspack@0.8.9(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)': - dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.8.9 - '@module-federation/dts-plugin': 0.8.9(typescript@7.0.2) - '@module-federation/inject-external-runtime-core-plugin': 0.8.9(@module-federation/runtime-tools@0.8.9) - '@module-federation/managers': 0.8.9 - '@module-federation/manifest': 0.8.9(typescript@7.0.2) - '@module-federation/runtime-tools': 0.8.9 - '@module-federation/sdk': 0.8.9 - '@rspack/core': 1.6.0(@swc/helpers@0.5.23) - optionalDependencies: - typescript: 7.0.2 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - '@module-federation/rspack@2.0.1(@rspack/core@1.6.0(@swc/helpers@0.5.23))(typescript@7.0.2)': dependencies: '@module-federation/bridge-react-webpack-plugin': 2.0.1 @@ -12876,11 +12683,6 @@ snapshots: '@module-federation/error-codes': 0.21.2 '@module-federation/sdk': 0.21.2 - '@module-federation/runtime-core@0.6.17': - dependencies: - '@module-federation/error-codes': 0.8.9 - '@module-federation/sdk': 0.8.9 - '@module-federation/runtime-core@2.0.1': dependencies: '@module-federation/error-codes': 2.0.1 @@ -12911,11 +12713,6 @@ snapshots: '@module-federation/runtime': 0.21.2 '@module-federation/webpack-bundler-runtime': 0.21.2 - '@module-federation/runtime-tools@0.8.9': - dependencies: - '@module-federation/runtime': 0.8.9 - '@module-federation/webpack-bundler-runtime': 0.8.9 - '@module-federation/runtime-tools@2.0.1': dependencies: '@module-federation/runtime': 2.0.1 @@ -12950,12 +12747,6 @@ snapshots: '@module-federation/runtime-core': 0.21.2 '@module-federation/sdk': 0.21.2 - '@module-federation/runtime@0.8.9': - dependencies: - '@module-federation/error-codes': 0.8.9 - '@module-federation/runtime-core': 0.6.17 - '@module-federation/sdk': 0.8.9 - '@module-federation/runtime@2.0.1': dependencies: '@module-federation/error-codes': 2.0.1 @@ -12976,12 +12767,6 @@ snapshots: '@module-federation/sdk@0.21.2': {} - '@module-federation/sdk@0.6.10': {} - - '@module-federation/sdk@0.8.9': - dependencies: - isomorphic-rslog: 0.0.7 - '@module-federation/sdk@2.0.1': {} '@module-federation/sdk@2.9.2': {} @@ -12998,12 +12783,6 @@ snapshots: fs-extra: 9.1.0 resolve: 1.22.8 - '@module-federation/third-party-dts-extractor@0.8.9': - dependencies: - find-pkg: 2.0.0 - fs-extra: 9.1.0 - resolve: 1.22.8 - '@module-federation/third-party-dts-extractor@2.0.1': dependencies: find-pkg: 2.0.0 @@ -13032,11 +12811,6 @@ snapshots: '@module-federation/runtime': 0.21.2 '@module-federation/sdk': 0.21.2 - '@module-federation/webpack-bundler-runtime@0.8.9': - dependencies: - '@module-federation/runtime': 0.8.9 - '@module-federation/sdk': 0.8.9 - '@module-federation/webpack-bundler-runtime@2.0.1': dependencies: '@module-federation/runtime': 2.0.1 @@ -16249,7 +16023,7 @@ snapshots: cors: 2.8.6 debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.21.1 + ws: 8.21.3 transitivePeerDependencies: - bufferutil - supports-color @@ -17607,8 +17381,6 @@ snapshots: isobject@3.0.1: {} - isomorphic-rslog@0.0.7: {} - isomorphic-ws@5.0.0(ws@8.21.3): dependencies: ws: 8.21.3 @@ -20656,7 +20428,7 @@ snapshots: socket.io-adapter@2.5.8: dependencies: debug: 4.4.3 - ws: 8.21.1 + ws: 8.21.3 transitivePeerDependencies: - bufferutil - supports-color