about summary refs log tree commit diff
path: root/patches/metro+0.76.8.patch
blob: f8ef67c84c98a14fafbd53204803dd500f2f1c03 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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),