45 lines
1.6 KiB
Diff
45 lines
1.6 KiB
Diff
|
diff --git a/node_modules/metro/src/ModuleGraph/worker/JsFileWrapping.js b/node_modules/metro/src/ModuleGraph/worker/JsFileWrapping.js
|
||
|
index 48a1409..ef185c9 100644
|
||
|
--- a/node_modules/metro/src/ModuleGraph/worker/JsFileWrapping.js
|
||
|
+++ b/node_modules/metro/src/ModuleGraph/worker/JsFileWrapping.js
|
||
|
@@ -70,14 +70,19 @@ function wrapModule(
|
||
|
importDefaultName,
|
||
|
importAllName,
|
||
|
dependencyMapName,
|
||
|
- globalPrefix
|
||
|
+ globalPrefix,
|
||
|
+ moduleFactoryName
|
||
|
) {
|
||
|
const params = buildParameters(
|
||
|
importDefaultName,
|
||
|
importAllName,
|
||
|
dependencyMapName
|
||
|
);
|
||
|
- const factory = functionFromProgram(fileAst.program, params);
|
||
|
+ const factory = functionFromProgram(
|
||
|
+ fileAst.program,
|
||
|
+ params,
|
||
|
+ moduleFactoryName
|
||
|
+ );
|
||
|
const def = t.callExpression(t.identifier(`${globalPrefix}__d`), [factory]);
|
||
|
const ast = t.file(t.program([t.expressionStatement(def)]));
|
||
|
const requireName = renameRequires(ast);
|
||
|
@@ -107,7 +112,16 @@ function wrapJson(source, globalPrefix) {
|
||
|
"});",
|
||
|
].join("\n");
|
||
|
}
|
||
|
-function functionFromProgram(program, parameters) {
|
||
|
+const JS_INVALID_IDENT_RE = /[^a-zA-Z0-9$_]/g;
|
||
|
+function functionFromProgram(program, parameters, moduleFactoryName) {
|
||
|
+ let identifier;
|
||
|
+ if (typeof moduleFactoryName === "string" && moduleFactoryName !== "") {
|
||
|
+ // Keep the name readable so it shows up in profiler traces.
|
||
|
+ // Add an unlikely suffix to avoid collisions with the module code.
|
||
|
+ identifier = t.identifier(
|
||
|
+ `${moduleFactoryName.replace(JS_INVALID_IDENT_RE, "_")}__module_factory__`
|
||
|
+ );
|
||
|
+ }
|
||
|
return t.functionExpression(
|
||
|
undefined,
|
||
|
parameters.map(makeIdentifier),
|