@module-federation/metro 0.24.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,9 +40,8 @@ const external_node_path_namespaceObject = require("node:path");
40
40
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
41
41
  const external_node_util_namespaceObject = require("node:util");
42
42
  var external_node_util_default = /*#__PURE__*/ __webpack_require__.n(external_node_util_namespaceObject);
43
- const Server_namespaceObject = require("metro/src/Server");
44
- var Server_default = /*#__PURE__*/ __webpack_require__.n(Server_namespaceObject);
45
43
  const errors_js_namespaceObject = require("../../utils/errors.js");
44
+ const metro_compat_js_namespaceObject = require("../../utils/metro-compat.js");
46
45
  const create_resolver_js_namespaceObject = require("../utils/create-resolver.js");
47
46
  const get_community_plugin_js_namespaceObject = require("../utils/get-community-plugin.js");
48
47
  const load_metro_config_js_namespaceObject = require("../utils/load-metro-config.js");
@@ -75,7 +74,7 @@ async function bundleFederatedHost(_argv, cfg, args) {
75
74
  to: `./${external_node_path_default().relative(config.projectRoot, hostEntryFilepath)}`
76
75
  });
77
76
  return server.build({
78
- ...Server_default().DEFAULT_BUNDLE_OPTIONS,
77
+ ...metro_compat_js_namespaceObject.Server.DEFAULT_BUNDLE_OPTIONS,
79
78
  ...requestOpts
80
79
  });
81
80
  },
@@ -3,35 +3,12 @@ import 'module';
3
3
  import node_path from "node:path";
4
4
  import node_util from "node:util";
5
5
  import { CLIError } from "../../utils/errors.mjs";
6
+ import { Server } from "../../utils/metro-compat.mjs";
6
7
  import { createResolver } from "../utils/create-resolver.mjs";
7
8
  import { getCommunityCliPlugin } from "../utils/get-community-plugin.mjs";
8
9
  import load_metro_config from "../utils/load-metro-config.mjs";
9
10
  import { saveBundleAndMap } from "../utils/save-bundle-and-map.mjs";
10
11
  import options from "./options.mjs";
11
- import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "node:module";
12
- var __webpack_require__ = {};
13
- (()=>{
14
- __webpack_require__.n = (module)=>{
15
- var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
16
- __webpack_require__.d(getter, {
17
- a: getter
18
- });
19
- return getter;
20
- };
21
- })();
22
- (()=>{
23
- __webpack_require__.d = (exports, definition)=>{
24
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
25
- enumerable: true,
26
- get: definition[key]
27
- });
28
- };
29
- })();
30
- (()=>{
31
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
32
- })();
33
- const Server_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("metro/src/Server");
34
- var Server_default = /*#__PURE__*/ __webpack_require__.n(Server_namespaceObject);
35
12
  async function bundleFederatedHost(_argv, cfg, args) {
36
13
  const logger = cfg.logger ?? console;
37
14
  global.__METRO_FEDERATION_ORIGINAL_ENTRY_PATH = args.entryFile;
@@ -57,7 +34,7 @@ async function bundleFederatedHost(_argv, cfg, args) {
57
34
  to: `./${node_path.relative(config.projectRoot, hostEntryFilepath)}`
58
35
  });
59
36
  return server.build({
60
- ...Server_default().DEFAULT_BUNDLE_OPTIONS,
37
+ ...Server.DEFAULT_BUNDLE_OPTIONS,
61
38
  ...requestOpts
62
39
  });
63
40
  },
@@ -43,9 +43,8 @@ const external_node_url_namespaceObject = require("node:url");
43
43
  const external_node_util_namespaceObject = require("node:util");
44
44
  var external_node_util_default = /*#__PURE__*/ __webpack_require__.n(external_node_util_namespaceObject);
45
45
  const external_metro_namespaceObject = require("metro");
46
- const Server_namespaceObject = require("metro/src/Server");
47
- var Server_default = /*#__PURE__*/ __webpack_require__.n(Server_namespaceObject);
48
46
  const errors_js_namespaceObject = require("../../utils/errors.js");
47
+ const metro_compat_js_namespaceObject = require("../../utils/metro-compat.js");
49
48
  const create_module_path_remapper_js_namespaceObject = require("../utils/create-module-path-remapper.js");
50
49
  const create_resolver_js_namespaceObject = require("../utils/create-resolver.js");
51
50
  const load_metro_config_js_namespaceObject = require("../utils/load-metro-config.js");
@@ -56,7 +55,7 @@ var external_options_js_default = /*#__PURE__*/ __webpack_require__.n(external_o
56
55
  const DEFAULT_OUTPUT = 'dist';
57
56
  async function buildBundle(server, requestOpts) {
58
57
  const bundle = await server.build({
59
- ...Server_default().DEFAULT_BUNDLE_OPTIONS,
58
+ ...metro_compat_js_namespaceObject.Server.DEFAULT_BUNDLE_OPTIONS,
60
59
  ...requestOpts
61
60
  });
62
61
  return bundle;
@@ -132,7 +131,7 @@ async function bundleFederatedRemote(_argv, cfg, args) {
132
131
  }
133
132
  }
134
133
  });
135
- const server = new (Server_default())(config);
134
+ const server = new metro_compat_js_namespaceObject.Server(config);
136
135
  config.server.enhanceMiddleware(server.processRequest, server);
137
136
  const resolver = await (0, create_resolver_js_namespaceObject.createResolver)(server, args.platform);
138
137
  const outputDir = args.output ? external_node_path_default().resolve(external_node_path_default().join(args.output, args.platform)) : external_node_path_default().resolve(config.projectRoot, external_node_path_default().join(DEFAULT_OUTPUT, args.platform));
@@ -5,40 +5,18 @@ import node_path from "node:path";
5
5
  import { pathToFileURL } from "node:url";
6
6
  import node_util from "node:util";
7
7
  import { CLIError } from "../../utils/errors.mjs";
8
+ import { Server } from "../../utils/metro-compat.mjs";
8
9
  import { createModulePathRemapper } from "../utils/create-module-path-remapper.mjs";
9
10
  import { createResolver } from "../utils/create-resolver.mjs";
10
11
  import load_metro_config from "../utils/load-metro-config.mjs";
11
12
  import { saveBundleAndMap } from "../utils/save-bundle-and-map.mjs";
12
13
  import options from "./options.mjs";
13
14
  import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "node:module";
14
- var __webpack_require__ = {};
15
- (()=>{
16
- __webpack_require__.n = (module)=>{
17
- var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
18
- __webpack_require__.d(getter, {
19
- a: getter
20
- });
21
- return getter;
22
- };
23
- })();
24
- (()=>{
25
- __webpack_require__.d = (exports, definition)=>{
26
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
27
- enumerable: true,
28
- get: definition[key]
29
- });
30
- };
31
- })();
32
- (()=>{
33
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
34
- })();
35
15
  const external_metro_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("metro");
36
- const Server_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("metro/src/Server");
37
- var Server_default = /*#__PURE__*/ __webpack_require__.n(Server_namespaceObject);
38
16
  const DEFAULT_OUTPUT = 'dist';
39
17
  async function buildBundle(server, requestOpts) {
40
18
  const bundle = await server.build({
41
- ...Server_default().DEFAULT_BUNDLE_OPTIONS,
19
+ ...Server.DEFAULT_BUNDLE_OPTIONS,
42
20
  ...requestOpts
43
21
  });
44
22
  return bundle;
@@ -114,7 +92,7 @@ async function bundleFederatedRemote(_argv, cfg, args) {
114
92
  }
115
93
  }
116
94
  });
117
- const server = new (Server_default())(config);
95
+ const server = new Server(config);
118
96
  config.server.enhanceMiddleware(server.processRequest, server);
119
97
  const resolver = await createResolver(server, args.platform);
120
98
  const outputDir = args.output ? node_path.resolve(node_path.join(args.output, args.platform)) : node_path.resolve(config.projectRoot, node_path.join(DEFAULT_OUTPUT, args.platform));
@@ -1,4 +1,4 @@
1
- import type Server from 'metro/src/Server';
1
+ import type { Server } from '../../utils/metro-compat';
2
2
  /**
3
3
  * Creates a resolver utility that mirrors Metro's bundling resolution behavior.
4
4
  * This utility exposes Metro's internal resolver to the command context,
@@ -1,6 +1,5 @@
1
1
  import type { ConfigT } from 'metro-config';
2
- import type Server from 'metro/src/Server';
3
- import type { OutputOptions, RequestOptions } from 'metro/src/shared/types';
2
+ import type { OutputOptions, RequestOptions, Server } from '../../utils/metro-compat';
4
3
  interface Command {
5
4
  name: string;
6
5
  description: string;
@@ -28,18 +28,17 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const errors_js_namespaceObject = require("../../utils/errors.js");
30
30
  function getCommunityCliPlugin(reactNativePath) {
31
- let communityCliPlugin;
31
+ let communityCliPluginPath;
32
32
  try {
33
- const communityCliPluginPath = require.resolve('@react-native/community-cli-plugin', {
33
+ communityCliPluginPath = require.resolve('@react-native/community-cli-plugin', {
34
34
  paths: [
35
35
  reactNativePath ?? require.resolve('react-native')
36
36
  ]
37
37
  });
38
- communityCliPlugin = require(communityCliPluginPath);
39
38
  } catch {
40
39
  throw new errors_js_namespaceObject.CLIError('Community CLI plugin is not installed.');
41
40
  }
42
- return communityCliPlugin;
41
+ return require(communityCliPluginPath);
43
42
  }
44
43
  exports.getCommunityCliPlugin = __webpack_exports__.getCommunityCliPlugin;
45
44
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
@@ -2,17 +2,16 @@ import __rslib_shim_module__ from 'module';
2
2
  const require = /*#__PURE__*/ __rslib_shim_module__.createRequire(import.meta.url);
3
3
  import { CLIError } from "../../utils/errors.mjs";
4
4
  function getCommunityCliPlugin(reactNativePath) {
5
- let communityCliPlugin;
5
+ let communityCliPluginPath;
6
6
  try {
7
- const communityCliPluginPath = require.resolve('@react-native/community-cli-plugin', {
7
+ communityCliPluginPath = require.resolve('@react-native/community-cli-plugin', {
8
8
  paths: [
9
9
  reactNativePath ?? require.resolve('react-native')
10
10
  ]
11
11
  });
12
- communityCliPlugin = require(communityCliPluginPath);
13
12
  } catch {
14
13
  throw new CLIError('Community CLI plugin is not installed.');
15
14
  }
16
- return communityCliPlugin;
15
+ return require(communityCliPluginPath);
17
16
  }
18
17
  export { getCommunityCliPlugin };
@@ -1,4 +1,4 @@
1
- import type { OutputOptions } from 'metro/src/shared/types';
1
+ import type { OutputOptions } from '../../utils/metro-compat';
2
2
  export declare function saveBundleAndMap(bundle: {
3
3
  code: string;
4
4
  map: string;
@@ -38,11 +38,10 @@ __webpack_require__.d(__webpack_exports__, {
38
38
  const external_node_fs_namespaceObject = require("node:fs");
39
39
  const external_node_util_namespaceObject = require("node:util");
40
40
  var external_node_util_default = /*#__PURE__*/ __webpack_require__.n(external_node_util_namespaceObject);
41
- const relativizeSourceMap_namespaceObject = require("metro/src/lib/relativizeSourceMap");
42
- var relativizeSourceMap_default = /*#__PURE__*/ __webpack_require__.n(relativizeSourceMap_namespaceObject);
41
+ const metro_compat_js_namespaceObject = require("../../utils/metro-compat.js");
43
42
  function relativizeSerializedMap(map, sourceMapSourcesRoot) {
44
43
  const sourceMap = JSON.parse(map);
45
- relativizeSourceMap_default()(sourceMap, sourceMapSourcesRoot);
44
+ (0, metro_compat_js_namespaceObject.relativizeSourceMapInline)(sourceMap, sourceMapSourcesRoot);
46
45
  return JSON.stringify(sourceMap);
47
46
  }
48
47
  async function saveBundleAndMap(bundle, options, log) {
@@ -2,33 +2,10 @@ import 'module';
2
2
  /*#__PURE__*/ import.meta.url;
3
3
  import { promises } from "node:fs";
4
4
  import node_util from "node:util";
5
- import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "node:module";
6
- var __webpack_require__ = {};
7
- (()=>{
8
- __webpack_require__.n = (module)=>{
9
- var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
10
- __webpack_require__.d(getter, {
11
- a: getter
12
- });
13
- return getter;
14
- };
15
- })();
16
- (()=>{
17
- __webpack_require__.d = (exports, definition)=>{
18
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
19
- enumerable: true,
20
- get: definition[key]
21
- });
22
- };
23
- })();
24
- (()=>{
25
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
- })();
27
- const relativizeSourceMap_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("metro/src/lib/relativizeSourceMap");
28
- var relativizeSourceMap_default = /*#__PURE__*/ __webpack_require__.n(relativizeSourceMap_namespaceObject);
5
+ import { relativizeSourceMapInline } from "../../utils/metro-compat.mjs";
29
6
  function relativizeSerializedMap(map, sourceMapSourcesRoot) {
30
7
  const sourceMap = JSON.parse(map);
31
- relativizeSourceMap_default()(sourceMap, sourceMapSourcesRoot);
8
+ relativizeSourceMapInline(sourceMap, sourceMapSourcesRoot);
32
9
  return JSON.stringify(sourceMap);
33
10
  }
34
11
  async function saveBundleAndMap(bundle, options, log) {
@@ -37,13 +37,8 @@ __webpack_require__.d(__webpack_exports__, {
37
37
  });
38
38
  const external_node_path_namespaceObject = require("node:path");
39
39
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
40
- const baseJSBundle_namespaceObject = require("metro/src/DeltaBundler/Serializers/baseJSBundle");
41
- var baseJSBundle_default = /*#__PURE__*/ __webpack_require__.n(baseJSBundle_namespaceObject);
42
- const CountingSet_namespaceObject = require("metro/src/lib/CountingSet");
43
- var CountingSet_default = /*#__PURE__*/ __webpack_require__.n(CountingSet_namespaceObject);
44
- const bundleToString_namespaceObject = require("metro/src/lib/bundleToString");
45
- var bundleToString_default = /*#__PURE__*/ __webpack_require__.n(bundleToString_namespaceObject);
46
40
  const errors_js_namespaceObject = require("../utils/errors.js");
41
+ const metro_compat_js_namespaceObject = require("../utils/metro-compat.js");
47
42
  function getModuleFederationSerializer(mfConfig, isUsingMFBundleCommand) {
48
43
  return async (entryPoint, preModules, graph, options)=>{
49
44
  const syncRemoteModules = collectSyncRemoteModules(graph, mfConfig.remotes);
@@ -122,7 +117,7 @@ function generateVirtualModule(name, code) {
122
117
  return {
123
118
  dependencies: new Map(),
124
119
  getSource: ()=>Buffer.from(code),
125
- inverseDependencies: new (CountingSet_default())(),
120
+ inverseDependencies: new metro_compat_js_namespaceObject.CountingSet(),
126
121
  path: name,
127
122
  output: [
128
123
  {
@@ -159,7 +154,7 @@ function getBundlePath(entryPoint, projectRoot, exposes, isUsingMFBundleCommand)
159
154
  throw new errors_js_namespaceObject.ConfigError(`Unable to handle entry point: ${relativeEntryPath}. Expected to match an entrypoint with one of the exposed keys, but failed. This is most likely a configuration error. If you believe this is not a configuration issue, please report it as a bug. Debug info: entryPoint="${entryPoint}", projectRoot="${projectRoot}", exposesKeys=[${Object.keys(exposes).join(', ')}]`);
160
155
  }
161
156
  function getBundleCode(entryPoint, preModules, graph, options) {
162
- const { code } = bundleToString_default()(baseJSBundle_default()(entryPoint, preModules, graph, options));
157
+ const { code } = (0, metro_compat_js_namespaceObject.bundleToString)((0, metro_compat_js_namespaceObject.baseJSBundle)(entryPoint, preModules, graph, options));
163
158
  return code;
164
159
  }
165
160
  exports.getModuleFederationSerializer = __webpack_exports__.getModuleFederationSerializer;
@@ -2,34 +2,7 @@ import 'module';
2
2
  /*#__PURE__*/ import.meta.url;
3
3
  import node_path from "node:path";
4
4
  import { ConfigError } from "../utils/errors.mjs";
5
- import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "node:module";
6
- var __webpack_require__ = {};
7
- (()=>{
8
- __webpack_require__.n = (module)=>{
9
- var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
10
- __webpack_require__.d(getter, {
11
- a: getter
12
- });
13
- return getter;
14
- };
15
- })();
16
- (()=>{
17
- __webpack_require__.d = (exports, definition)=>{
18
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, {
19
- enumerable: true,
20
- get: definition[key]
21
- });
22
- };
23
- })();
24
- (()=>{
25
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
- })();
27
- const baseJSBundle_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("metro/src/DeltaBundler/Serializers/baseJSBundle");
28
- var baseJSBundle_default = /*#__PURE__*/ __webpack_require__.n(baseJSBundle_namespaceObject);
29
- const CountingSet_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("metro/src/lib/CountingSet");
30
- var CountingSet_default = /*#__PURE__*/ __webpack_require__.n(CountingSet_namespaceObject);
31
- const bundleToString_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("metro/src/lib/bundleToString");
32
- var bundleToString_default = /*#__PURE__*/ __webpack_require__.n(bundleToString_namespaceObject);
5
+ import { CountingSet, baseJSBundle, bundleToString } from "../utils/metro-compat.mjs";
33
6
  function getModuleFederationSerializer(mfConfig, isUsingMFBundleCommand) {
34
7
  return async (entryPoint, preModules, graph, options)=>{
35
8
  const syncRemoteModules = collectSyncRemoteModules(graph, mfConfig.remotes);
@@ -108,7 +81,7 @@ function generateVirtualModule(name, code) {
108
81
  return {
109
82
  dependencies: new Map(),
110
83
  getSource: ()=>Buffer.from(code),
111
- inverseDependencies: new (CountingSet_default())(),
84
+ inverseDependencies: new CountingSet(),
112
85
  path: name,
113
86
  output: [
114
87
  {
@@ -145,7 +118,7 @@ function getBundlePath(entryPoint, projectRoot, exposes, isUsingMFBundleCommand)
145
118
  throw new ConfigError(`Unable to handle entry point: ${relativeEntryPath}. Expected to match an entrypoint with one of the exposed keys, but failed. This is most likely a configuration error. If you believe this is not a configuration issue, please report it as a bug. Debug info: entryPoint="${entryPoint}", projectRoot="${projectRoot}", exposesKeys=[${Object.keys(exposes).join(', ')}]`);
146
119
  }
147
120
  function getBundleCode(entryPoint, preModules, graph, options) {
148
- const { code } = bundleToString_default()(baseJSBundle_default()(entryPoint, preModules, graph, options));
121
+ const { code } = bundleToString(baseJSBundle(entryPoint, preModules, graph, options));
149
122
  return code;
150
123
  }
151
124
  export { getModuleFederationSerializer };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Metro Compatibility Layer
3
+ *
4
+ * Provides backwards-compatible imports for Metro 0.82 and 0.83+
5
+ *
6
+ * Metro 0.83 introduced a restrictive `exports` field that only allows
7
+ * `metro/private/*` paths instead of direct `metro/src/*` imports.
8
+ *
9
+ * This module dynamically resolves the correct import path based on the
10
+ * installed Metro version, ensuring compatibility with both versions.
11
+ */
12
+ import type DefaultServer from 'metro/src/Server';
13
+ import type DefaultBaseJSBundle from 'metro/src/DeltaBundler/Serializers/baseJSBundle';
14
+ import type DefaultCountingSet from 'metro/src/lib/CountingSet';
15
+ import type DefaultBundleToString from 'metro/src/lib/bundleToString';
16
+ import type { MixedSourceMap } from 'metro-source-map';
17
+ export declare const Server: typeof DefaultServer;
18
+ export type Server = DefaultServer;
19
+ export declare const baseJSBundle: typeof DefaultBaseJSBundle;
20
+ export declare const CountingSet: typeof DefaultCountingSet;
21
+ export declare const bundleToString: typeof DefaultBundleToString;
22
+ export declare const relativizeSourceMapInline: (sourceMap: MixedSourceMap, sourcesRoot: string) => void;
23
+ export type { RequestOptions, OutputOptions } from 'metro/src/shared/types';
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ CountingSet: ()=>CountingSet,
28
+ Server: ()=>Server,
29
+ baseJSBundle: ()=>baseJSBundle,
30
+ bundleToString: ()=>bundleToString,
31
+ relativizeSourceMapInline: ()=>relativizeSourceMapInline
32
+ });
33
+ function resolveAndImport(metro83Path, metro82Path) {
34
+ let resolvedPath;
35
+ try {
36
+ resolvedPath = require.resolve(metro83Path);
37
+ } catch {
38
+ try {
39
+ resolvedPath = require.resolve(metro82Path);
40
+ } catch {
41
+ throw new Error(`Could not resolve 'metro' module. Tried:\n - ${metro83Path}\n - ${metro82Path}\nEnsure 'metro' is installed.`);
42
+ }
43
+ }
44
+ return require(resolvedPath);
45
+ }
46
+ function getDefaultExport(mod) {
47
+ if (null != mod && 'object' == typeof mod && 'default' in mod) return mod.default;
48
+ return mod;
49
+ }
50
+ const Server = getDefaultExport(resolveAndImport('metro/private/Server', 'metro/src/Server'));
51
+ const baseJSBundle = getDefaultExport(resolveAndImport('metro/private/DeltaBundler/Serializers/baseJSBundle', 'metro/src/DeltaBundler/Serializers/baseJSBundle'));
52
+ const CountingSet = getDefaultExport(resolveAndImport('metro/private/lib/CountingSet', 'metro/src/lib/CountingSet'));
53
+ const bundleToString = getDefaultExport(resolveAndImport('metro/private/lib/bundleToString', 'metro/src/lib/bundleToString'));
54
+ const relativizeSourceMapModule = resolveAndImport('metro/private/lib/relativizeSourceMap', 'metro/src/lib/relativizeSourceMap');
55
+ const relativizeSourceMapInline = relativizeSourceMapModule.relativizeSourceMapInline || getDefaultExport(relativizeSourceMapModule);
56
+ exports.CountingSet = __webpack_exports__.CountingSet;
57
+ exports.Server = __webpack_exports__.Server;
58
+ exports.baseJSBundle = __webpack_exports__.baseJSBundle;
59
+ exports.bundleToString = __webpack_exports__.bundleToString;
60
+ exports.relativizeSourceMapInline = __webpack_exports__.relativizeSourceMapInline;
61
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
62
+ "CountingSet",
63
+ "Server",
64
+ "baseJSBundle",
65
+ "bundleToString",
66
+ "relativizeSourceMapInline"
67
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
68
+ Object.defineProperty(exports, '__esModule', {
69
+ value: true
70
+ });
@@ -0,0 +1,26 @@
1
+ import __rslib_shim_module__ from 'module';
2
+ const require = /*#__PURE__*/ __rslib_shim_module__.createRequire(import.meta.url);
3
+ function resolveAndImport(metro83Path, metro82Path) {
4
+ let resolvedPath;
5
+ try {
6
+ resolvedPath = require.resolve(metro83Path);
7
+ } catch {
8
+ try {
9
+ resolvedPath = require.resolve(metro82Path);
10
+ } catch {
11
+ throw new Error(`Could not resolve 'metro' module. Tried:\n - ${metro83Path}\n - ${metro82Path}\nEnsure 'metro' is installed.`);
12
+ }
13
+ }
14
+ return require(resolvedPath);
15
+ }
16
+ function getDefaultExport(mod) {
17
+ if (null != mod && 'object' == typeof mod && 'default' in mod) return mod.default;
18
+ return mod;
19
+ }
20
+ const Server = getDefaultExport(resolveAndImport('metro/private/Server', 'metro/src/Server'));
21
+ const baseJSBundle = getDefaultExport(resolveAndImport('metro/private/DeltaBundler/Serializers/baseJSBundle', 'metro/src/DeltaBundler/Serializers/baseJSBundle'));
22
+ const CountingSet = getDefaultExport(resolveAndImport('metro/private/lib/CountingSet', 'metro/src/lib/CountingSet'));
23
+ const bundleToString = getDefaultExport(resolveAndImport('metro/private/lib/bundleToString', 'metro/src/lib/bundleToString'));
24
+ const relativizeSourceMapModule = resolveAndImport('metro/private/lib/relativizeSourceMap', 'metro/src/lib/relativizeSourceMap');
25
+ const relativizeSourceMapInline = relativizeSourceMapModule.relativizeSourceMapInline || getDefaultExport(relativizeSourceMapModule);
26
+ export { CountingSet, Server, baseJSBundle, bundleToString, relativizeSourceMapInline };
@@ -1,5 +1,5 @@
1
1
  import type { MetroConfig, ServerConfigT, TransformerConfigT } from 'metro-config';
2
- import type MetroServer from 'metro/src/Server';
2
+ import type { Server as MetroServer } from './metro-compat';
3
3
  type EnhanceMiddleware = ServerConfigT['enhanceMiddleware'];
4
4
  type GetTransformOptions = TransformerConfigT['getTransformOptions'];
5
5
  type Bundler = ReturnType<ReturnType<MetroServer['getBundler']>['getBundler']>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/metro",
3
- "version": "0.24.1",
3
+ "version": "2.0.1",
4
4
  "description": "Module Federation for Metro bundler",
5
5
  "keywords": [
6
6
  "module-federation",
@@ -57,8 +57,8 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@expo/metro-runtime": "^5.0.4",
60
- "@module-federation/runtime": "0.24.1",
61
- "@module-federation/sdk": "0.24.1"
60
+ "@module-federation/runtime": "2.0.1",
61
+ "@module-federation/sdk": "2.0.1"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "@babel/types": "^7.25.0",