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),