@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.
- package/dist/commands/bundle-host/index.js +2 -3
- package/dist/commands/bundle-host/index.mjs +2 -25
- package/dist/commands/bundle-remote/index.js +3 -4
- package/dist/commands/bundle-remote/index.mjs +3 -25
- package/dist/commands/utils/create-resolver.d.ts +1 -1
- package/dist/commands/utils/get-community-plugin.d.ts +1 -2
- package/dist/commands/utils/get-community-plugin.js +3 -4
- package/dist/commands/utils/get-community-plugin.mjs +3 -4
- package/dist/commands/utils/save-bundle-and-map.d.ts +1 -1
- package/dist/commands/utils/save-bundle-and-map.js +2 -3
- package/dist/commands/utils/save-bundle-and-map.mjs +2 -25
- package/dist/plugin/serializer.js +3 -8
- package/dist/plugin/serializer.mjs +3 -30
- package/dist/utils/metro-compat.d.ts +23 -0
- package/dist/utils/metro-compat.js +70 -0
- package/dist/utils/metro-compat.mjs +26 -0
- package/dist/utils/vm-manager.d.ts +1 -1
- package/package.json +3 -3
|
@@ -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
|
-
...
|
|
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
|
-
...
|
|
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
|
-
...
|
|
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 (
|
|
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
|
-
...
|
|
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 (
|
|
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,6 +1,5 @@
|
|
|
1
1
|
import type { ConfigT } from 'metro-config';
|
|
2
|
-
import type Server from 'metro
|
|
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
|
|
31
|
+
let communityCliPluginPath;
|
|
32
32
|
try {
|
|
33
|
-
|
|
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
|
|
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
|
|
5
|
+
let communityCliPluginPath;
|
|
6
6
|
try {
|
|
7
|
-
|
|
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
|
|
15
|
+
return require(communityCliPluginPath);
|
|
17
16
|
}
|
|
18
17
|
export { getCommunityCliPlugin };
|
|
@@ -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
|
|
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
|
-
|
|
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 {
|
|
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
|
-
|
|
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 (
|
|
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 } =
|
|
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 {
|
|
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 (
|
|
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 } =
|
|
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
|
|
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.
|
|
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.
|
|
61
|
-
"@module-federation/sdk": "0.
|
|
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",
|