vxrn 2.13.8 → 2.13.9

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.
Files changed (118) hide show
  1. package/dist/cli.mjs +3 -2
  2. package/dist/cli.mjs.map +1 -1
  3. package/dist/cli.native.js +5 -2
  4. package/dist/cli.native.js.map +1 -1
  5. package/dist/config/getBaseViteConfigOnly.mjs +3 -3
  6. package/dist/config/getBaseViteConfigOnly.mjs.map +1 -1
  7. package/dist/config/getBaseViteConfigOnly.native.js +3 -3
  8. package/dist/config/getBaseViteConfigOnly.native.js.map +1 -1
  9. package/dist/config/getOptionsFilled.mjs +24 -2
  10. package/dist/config/getOptionsFilled.mjs.map +1 -1
  11. package/dist/config/getOptionsFilled.native.js +25 -2
  12. package/dist/config/getOptionsFilled.native.js.map +1 -1
  13. package/dist/config/getServerOptionsFilled.mjs +119 -1
  14. package/dist/config/getServerOptionsFilled.mjs.map +1 -1
  15. package/dist/config/getServerOptionsFilled.native.js +137 -1
  16. package/dist/config/getServerOptionsFilled.native.js.map +1 -1
  17. package/dist/exports/build.mjs +5 -5
  18. package/dist/exports/build.mjs.map +1 -1
  19. package/dist/exports/build.native.js +5 -5
  20. package/dist/exports/build.native.js.map +1 -1
  21. package/dist/exports/dev.mjs +4 -6
  22. package/dist/exports/dev.mjs.map +1 -1
  23. package/dist/exports/dev.native.js +6 -6
  24. package/dist/exports/dev.native.js.map +1 -1
  25. package/dist/exports/prebuild.mjs +4 -4
  26. package/dist/exports/prebuild.mjs.map +1 -1
  27. package/dist/exports/prebuild.native.js +4 -4
  28. package/dist/exports/prebuild.native.js.map +1 -1
  29. package/dist/exports/prebuildWithoutExpo.mjs +95 -88
  30. package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
  31. package/dist/exports/prebuildWithoutExpo.native.js +95 -88
  32. package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
  33. package/dist/plugins/autoDepOptimizePlugin.mjs +3 -3
  34. package/dist/plugins/autoDepOptimizePlugin.mjs.map +1 -1
  35. package/dist/plugins/autoDepOptimizePlugin.native.js +3 -3
  36. package/dist/plugins/autoDepOptimizePlugin.native.js.map +1 -1
  37. package/dist/plugins/reactNativeDevAssetPlugin.mjs +4 -4
  38. package/dist/plugins/reactNativeDevAssetPlugin.mjs.map +1 -1
  39. package/dist/plugins/reactNativeDevAssetPlugin.native.js +4 -4
  40. package/dist/plugins/reactNativeDevAssetPlugin.native.js.map +1 -1
  41. package/dist/rn-commands/bundle/buildBundle.mjs +18 -5
  42. package/dist/rn-commands/bundle/buildBundle.mjs.map +1 -1
  43. package/dist/rn-commands/bundle/buildBundle.native.js +18 -5
  44. package/dist/rn-commands/bundle/buildBundle.native.js.map +1 -1
  45. package/dist/user-interface/index.mjs +1 -1
  46. package/dist/user-interface/index.mjs.map +1 -1
  47. package/dist/user-interface/index.native.js +1 -1
  48. package/dist/user-interface/index.native.js.map +1 -1
  49. package/dist/utils/env-editor.mjs +198 -0
  50. package/dist/utils/env-editor.mjs.map +1 -0
  51. package/dist/utils/env-editor.native.js +266 -0
  52. package/dist/utils/env-editor.native.js.map +1 -0
  53. package/dist/utils/fs.mjs +48 -0
  54. package/dist/utils/fs.mjs.map +1 -0
  55. package/dist/utils/fs.native.js +48 -0
  56. package/dist/utils/fs.native.js.map +1 -0
  57. package/dist/utils/getVitePath.mjs +2 -2
  58. package/dist/utils/getVitePath.mjs.map +1 -1
  59. package/dist/utils/getVitePath.native.js +2 -2
  60. package/dist/utils/getVitePath.native.js.map +1 -1
  61. package/dist/utils/patches.mjs +38 -29
  62. package/dist/utils/patches.mjs.map +1 -1
  63. package/dist/utils/patches.native.js +38 -29
  64. package/dist/utils/patches.native.js.map +1 -1
  65. package/dist/utils/scanDepsToOptimize.mjs +12 -11
  66. package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
  67. package/dist/utils/scanDepsToOptimize.native.js +12 -11
  68. package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
  69. package/dist/utils/state.mjs +5 -5
  70. package/dist/utils/state.mjs.map +1 -1
  71. package/dist/utils/state.native.js +5 -5
  72. package/dist/utils/state.native.js.map +1 -1
  73. package/dist/utils/utils.mjs +4 -3
  74. package/dist/utils/utils.mjs.map +1 -1
  75. package/dist/utils/utils.native.js +4 -3
  76. package/dist/utils/utils.native.js.map +1 -1
  77. package/package.json +12 -18
  78. package/src/cli.ts +5 -4
  79. package/src/config/getBaseViteConfigOnly.ts +3 -3
  80. package/src/config/getOptionsFilled.ts +35 -2
  81. package/src/config/getServerOptionsFilled.test.ts +37 -0
  82. package/src/config/getServerOptionsFilled.ts +57 -1
  83. package/src/exports/build.ts +5 -5
  84. package/src/exports/clean.test.ts +1 -1
  85. package/src/exports/dev.ts +5 -6
  86. package/src/exports/prebuild.ts +4 -4
  87. package/src/exports/prebuildWithoutExpo.ts +102 -89
  88. package/src/plugins/autoDepOptimizePlugin.ts +3 -3
  89. package/src/plugins/reactNativeDevAssetPlugin.ts +4 -4
  90. package/src/rn-commands/bundle/buildBundle.ts +15 -5
  91. package/src/user-interface/index.ts +1 -1
  92. package/src/utils/env-editor.LICENSE +9 -0
  93. package/src/utils/env-editor.ts +214 -0
  94. package/src/utils/fs.ts +59 -0
  95. package/src/utils/getVitePath.ts +2 -2
  96. package/src/utils/patches.test.ts +36 -36
  97. package/src/utils/patches.ts +39 -27
  98. package/src/utils/scanDepsToOptimize.test.ts +2 -2
  99. package/src/utils/scanDepsToOptimize.ts +6 -5
  100. package/src/utils/state.ts +5 -7
  101. package/src/utils/utils.ts +5 -5
  102. package/types/config/getOptionsFilled.d.ts +9 -2
  103. package/types/config/getOptionsFilled.d.ts.map +1 -1
  104. package/types/config/getServerOptionsFilled.d.ts.map +1 -1
  105. package/types/exports/build.d.ts +1 -1
  106. package/types/exports/dev.d.ts.map +1 -1
  107. package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
  108. package/types/rn-commands/bundle/buildBundle.d.ts.map +1 -1
  109. package/types/user-interface/index.d.ts.map +1 -1
  110. package/types/utils/env-editor.d.ts +9 -0
  111. package/types/utils/env-editor.d.ts.map +1 -0
  112. package/types/utils/fs.d.ts +9 -0
  113. package/types/utils/fs.d.ts.map +1 -0
  114. package/types/utils/patches.d.ts.map +1 -1
  115. package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
  116. package/types/utils/state.d.ts.map +1 -1
  117. package/types/utils/utils.d.ts +2 -2
  118. package/types/utils/utils.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getVitePath.native.js","names":[],"sources":["utils/getVitePath.native.js"],"sourcesContent":["import { dirname, join } from \"path\";\nimport FSExtra from \"fs-extra\";\nimport { normalizePath } from \"vite\";\nasync function getVitePath(rootPath, importer, moduleName, resolver, resolverWithPlugins) {\n var absolute = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : false;\n if (moduleName === \"react-native\") {\n return \"react-native\";\n }\n if (moduleName === \"react\") {\n return \"react\";\n }\n if (moduleName === \"react/jsx-runtime\") {\n return \"react/jsx-runtime\";\n }\n if (moduleName === \"react/jsx-dev-runtime\") {\n return \"react/jsx-dev-runtime\";\n }\n if (moduleName.includes(\"one/dist/esm/index\")) {\n return \"one\";\n }\n if (moduleName[0] === \".\") {\n var rootAt = importer.indexOf(rootPath);\n var base = join(dirname(importer.slice(rootAt)), moduleName);\n return base + \".js\";\n }\n if (moduleName === \"one\") {\n return \"one\";\n }\n if (moduleName === \"one\") {\n return \"one\";\n }\n var sourceFile = join(process.cwd(), \"index.js\");\n var resolved = await resolver(moduleName, sourceFile) || await resolverWithPlugins(moduleName, importer);\n if (!resolved) {\n return \"one\";\n }\n if (!resolved) {\n throw new Error(` \\u274C Path not found ${sourceFile} (rootPath ${rootPath}, importer ${importer}, moduleName ${moduleName})`);\n }\n var real = await FSExtra.realpath(resolved);\n var id = real;\n if (normalizePath(id).endsWith(`/react/jsx-dev-runtime.js`)) {\n id = \"react/jsx-runtime\";\n }\n return id;\n}\nexport {\n getVitePath\n};\n//# sourceMappingURL=getVitePath.js.map\n"],"mappings":";;;;;AAGA,eAAe,YAAY,UAAU,UAAU,YAAY,UAAU,qBAAqB;CACxF,IAAI,WAAW,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAChF,IAAI,eAAe,gBAAgB;EACjC,OAAO;CACT;CACA,IAAI,eAAe,SAAS;EAC1B,OAAO;CACT;CACA,IAAI,eAAe,qBAAqB;EACtC,OAAO;CACT;CACA,IAAI,eAAe,yBAAyB;EAC1C,OAAO;CACT;CACA,IAAI,WAAW,SAAS,oBAAoB,GAAG;EAC7C,OAAO;CACT;CACA,IAAI,WAAW,OAAO,KAAK;EACzB,IAAI,SAAS,SAAS,QAAQ,QAAQ;EACtC,IAAI,OAAO,KAAK,QAAQ,SAAS,MAAM,MAAM,CAAC,GAAG,UAAU;EAC3D,OAAO,OAAO;CAChB;CACA,IAAI,eAAe,OAAO;EACxB,OAAO;CACT;CACA,IAAI,eAAe,OAAO;EACxB,OAAO;CACT;CACA,IAAI,aAAa,KAAK,QAAQ,IAAI,GAAG,UAAU;CAC/C,IAAI,WAAW,MAAM,SAAS,YAAY,UAAU,KAAK,MAAM,oBAAoB,YAAY,QAAQ;CACvG,IAAI,CAAC,UAAU;EACb,OAAO;CACT;CACA,IAAI,CAAC,UAAU;EACb,MAAM,IAAI,MAAM,0BAA0B,WAAW,aAAa,SAAS,aAAa,SAAS,eAAe,WAAW,EAAE;CAC/H;CACA,IAAI,OAAO,MAAM,QAAQ,SAAS,QAAQ;CAC1C,IAAI,KAAK;CACT,IAAI,cAAc,EAAE,CAAC,CAAC,SAAS,2BAA2B,GAAG;EAC3D,KAAK;CACP;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"getVitePath.native.js","names":[],"sources":["utils/getVitePath.native.js"],"sourcesContent":["import { dirname, join } from \"path\";\nimport { realpath } from \"fs/promises\";\nimport { normalizePath } from \"vite\";\nasync function getVitePath(rootPath, importer, moduleName, resolver, resolverWithPlugins) {\n var absolute = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : false;\n if (moduleName === \"react-native\") {\n return \"react-native\";\n }\n if (moduleName === \"react\") {\n return \"react\";\n }\n if (moduleName === \"react/jsx-runtime\") {\n return \"react/jsx-runtime\";\n }\n if (moduleName === \"react/jsx-dev-runtime\") {\n return \"react/jsx-dev-runtime\";\n }\n if (moduleName.includes(\"one/dist/esm/index\")) {\n return \"one\";\n }\n if (moduleName[0] === \".\") {\n var rootAt = importer.indexOf(rootPath);\n var base = join(dirname(importer.slice(rootAt)), moduleName);\n return base + \".js\";\n }\n if (moduleName === \"one\") {\n return \"one\";\n }\n if (moduleName === \"one\") {\n return \"one\";\n }\n var sourceFile = join(process.cwd(), \"index.js\");\n var resolved = await resolver(moduleName, sourceFile) || await resolverWithPlugins(moduleName, importer);\n if (!resolved) {\n return \"one\";\n }\n if (!resolved) {\n throw new Error(` \\u274C Path not found ${sourceFile} (rootPath ${rootPath}, importer ${importer}, moduleName ${moduleName})`);\n }\n var real = await realpath(resolved);\n var id = real;\n if (normalizePath(id).endsWith(`/react/jsx-dev-runtime.js`)) {\n id = \"react/jsx-runtime\";\n }\n return id;\n}\nexport {\n getVitePath\n};\n//# sourceMappingURL=getVitePath.js.map\n"],"mappings":";;;;;AAGA,eAAe,YAAY,UAAU,UAAU,YAAY,UAAU,qBAAqB;CACxF,IAAI,WAAW,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAChF,IAAI,eAAe,gBAAgB;EACjC,OAAO;CACT;CACA,IAAI,eAAe,SAAS;EAC1B,OAAO;CACT;CACA,IAAI,eAAe,qBAAqB;EACtC,OAAO;CACT;CACA,IAAI,eAAe,yBAAyB;EAC1C,OAAO;CACT;CACA,IAAI,WAAW,SAAS,oBAAoB,GAAG;EAC7C,OAAO;CACT;CACA,IAAI,WAAW,OAAO,KAAK;EACzB,IAAI,SAAS,SAAS,QAAQ,QAAQ;EACtC,IAAI,OAAO,KAAK,QAAQ,SAAS,MAAM,MAAM,CAAC,GAAG,UAAU;EAC3D,OAAO,OAAO;CAChB;CACA,IAAI,eAAe,OAAO;EACxB,OAAO;CACT;CACA,IAAI,eAAe,OAAO;EACxB,OAAO;CACT;CACA,IAAI,aAAa,KAAK,QAAQ,IAAI,GAAG,UAAU;CAC/C,IAAI,WAAW,MAAM,SAAS,YAAY,UAAU,KAAK,MAAM,oBAAoB,YAAY,QAAQ;CACvG,IAAI,CAAC,UAAU;EACb,OAAO;CACT;CACA,IAAI,CAAC,UAAU;EACb,MAAM,IAAI,MAAM,0BAA0B,WAAW,aAAa,SAAS,aAAa,SAAS,eAAe,WAAW,EAAE;CAC/H;CACA,IAAI,OAAO,MAAM,SAAS,QAAQ;CAClC,IAAI,KAAK;CACT,IAAI,cAAc,EAAE,CAAC,CAAC,SAAS,2BAA2B,GAAG;EAC3D,KAAK;CACP;CACA,OAAO;AACT"}
@@ -1,15 +1,25 @@
1
1
  import { transformSWC } from "@vxrn/compiler";
2
2
  import { transformFlowBabel } from "@vxrn/vite-flow";
3
3
  import Glob from "fast-glob";
4
- import findNodeModules from "find-node-modules";
5
- import FSExtra from "fs-extra";
6
- import { realpathSync } from "node:fs";
7
- import { join } from "node:path";
8
- import { rename } from "node:fs/promises";
4
+ import { existsSync, realpathSync } from "node:fs";
5
+ import { dirname, join, resolve } from "node:path";
6
+ import { readFile, rename, stat, writeFile } from "node:fs/promises";
9
7
  import semver from "semver";
10
8
  import { builtInDepPatches } from "../patches/builtInDepPatches.mjs";
9
+ import { readJSON, writeJSON } from "./fs.mjs";
11
10
  import { globDir } from "./globDir.mjs";
12
11
 
12
+ function findNodeModulesDirs(root) {
13
+ const dirs = [];
14
+ let dir = resolve(root);
15
+ for (;;) {
16
+ const candidate = join(dir, "node_modules");
17
+ if (existsSync(candidate)) dirs.push(candidate);
18
+ const parent = dirname(dir);
19
+ if (parent === dir) return dirs;
20
+ dir = parent;
21
+ }
22
+ }
13
23
  var Bail = class extends Error {};
14
24
  function bailIfUnchanged(obj1, obj2) {
15
25
  if (JSON.stringify(obj1) === JSON.stringify(obj2)) {
@@ -50,26 +60,25 @@ function getOriginalPath(fullPath) {
50
60
  }
51
61
  async function readPatchStats(nodeModulesDir) {
52
62
  try {
53
- return await FSExtra.readJSON(join(nodeModulesDir, STATS_FILE));
63
+ return await readJSON(join(nodeModulesDir, STATS_FILE));
54
64
  } catch {
55
65
  return {};
56
66
  }
57
67
  }
58
68
  async function writePatchStats(nodeModulesDir, stats) {
59
- await FSExtra.writeJSON(join(nodeModulesDir, STATS_FILE), stats);
69
+ await writeJSON(join(nodeModulesDir, STATS_FILE), stats);
60
70
  }
61
71
  function moduleToPnpmStorePattern(moduleName) {
62
72
  return moduleName.replace("/", "+");
63
73
  }
64
74
  async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
65
75
  const patchModuleNames = [...new Set(patches.map((p) => p.module))];
66
- const nodeModulesDirs = findNodeModules({ cwd: root }).flatMap((relativePath) => {
67
- const dir = join(root, relativePath);
76
+ const nodeModulesDirs = findNodeModulesDirs(root).flatMap((dir) => {
68
77
  const dirs = [dir];
69
78
  const pnpmBase = join(dir, ".pnpm");
70
- if (!FSExtra.existsSync(pnpmBase)) return dirs;
79
+ if (!existsSync(pnpmBase)) return dirs;
71
80
  const pnpmHoistedDir = join(pnpmBase, "node_modules");
72
- if (FSExtra.existsSync(pnpmHoistedDir)) {
81
+ if (existsSync(pnpmHoistedDir)) {
73
82
  dirs.push(pnpmHoistedDir);
74
83
  }
75
84
  for (const moduleName of patchModuleNames) {
@@ -93,7 +102,7 @@ async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
93
102
  await Promise.all(patches.map(async (patch) => {
94
103
  try {
95
104
  const nodeModuleDir = join(nodeModulesDir, patch.module);
96
- if (!FSExtra.existsSync(nodeModuleDir)) return;
105
+ if (!existsSync(nodeModuleDir)) return;
97
106
  let realModuleDir;
98
107
  try {
99
108
  realModuleDir = realpathSync(nodeModuleDir);
@@ -106,7 +115,7 @@ async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
106
115
  patchedRealPaths.add(dedupKey);
107
116
  const version = patch.patchFiles.version;
108
117
  if (typeof version === "string") {
109
- const pkgJSON = await FSExtra.readJSON(join(nodeModuleDir, "package.json"));
118
+ const pkgJSON = await readJSON(join(nodeModuleDir, "package.json"));
110
119
  if (!semver.satisfies(pkgJSON.version, version)) return;
111
120
  }
112
121
  const filePatches = [];
@@ -123,11 +132,11 @@ async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
123
132
  const fileStatsResults = await Promise.all(filePatches.map(async ({ relativePath }) => {
124
133
  const fullPath = join(nodeModuleDir, relativePath);
125
134
  try {
126
- const stat = await FSExtra.stat(fullPath);
135
+ const fileStat = await stat(fullPath);
127
136
  return {
128
137
  relativePath,
129
138
  fullPath,
130
- stat,
139
+ stat: fileStat,
131
140
  exists: true
132
141
  };
133
142
  } catch {
@@ -139,12 +148,12 @@ async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
139
148
  };
140
149
  }
141
150
  }));
142
- const filesToProcess = fileStatsResults.filter(({ fullPath, stat, exists }) => {
143
- if (!exists || !stat) return false;
151
+ const filesToProcess = fileStatsResults.filter(({ fullPath, stat: fileStat, exists }) => {
152
+ if (!exists || !fileStat) return false;
144
153
  if (process.env.VXRN_FORCE_PATCH) return true;
145
154
  const cached = patchStats[fullPath];
146
155
  if (!cached) return true;
147
- return stat.size !== cached.size || stat.mtimeMs !== cached.mtimeMs;
156
+ return fileStat.size !== cached.size || fileStat.mtimeMs !== cached.mtimeMs;
148
157
  });
149
158
  if (filesToProcess.length === 0) {
150
159
  if (!results.has(patch.module)) {
@@ -157,7 +166,7 @@ async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
157
166
  try {
158
167
  const patchDef = filePatches.find((p) => p.relativePath === relativePath).patchDefinition;
159
168
  const originalPath = getOriginalPath(fullPath);
160
- const [targetContent, originalContent] = await Promise.all([FSExtra.readFile(fullPath, "utf-8"), FSExtra.readFile(originalPath, "utf-8").catch(() => null)]);
169
+ const [targetContent, originalContent] = await Promise.all([readFile(fullPath, "utf-8"), readFile(originalPath, "utf-8").catch(() => null)]);
161
170
  const sourceContent = originalContent ?? targetContent;
162
171
  let patchedContent = null;
163
172
  if (typeof patchDef === "string") {
@@ -200,19 +209,19 @@ async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
200
209
  }
201
210
  if (patchedContent !== null) {
202
211
  if (targetContent === patchedContent) {
203
- const stat2 = await FSExtra.stat(fullPath);
212
+ const fileStat2 = await stat(fullPath);
204
213
  patchStats[fullPath] = {
205
- size: stat2.size,
206
- mtimeMs: stat2.mtimeMs
214
+ size: fileStat2.size,
215
+ mtimeMs: fileStat2.mtimeMs
207
216
  };
208
217
  statsChanged = true;
209
218
  return;
210
219
  }
211
220
  await Promise.all([originalContent === null && atomicWriteFile(originalPath, sourceContent), atomicWriteFile(fullPath, patchedContent)]);
212
- const stat = await FSExtra.stat(fullPath);
221
+ const fileStat = await stat(fullPath);
213
222
  patchStats[fullPath] = {
214
- size: stat.size,
215
- mtimeMs: stat.mtimeMs
223
+ size: fileStat.size,
224
+ mtimeMs: fileStat.mtimeMs
216
225
  };
217
226
  statsChanged = true;
218
227
  didApplyPatch = true;
@@ -220,10 +229,10 @@ async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
220
229
  console.info(` - Applied patch to ${patch.module}: ${relativePath}`);
221
230
  }
222
231
  } else {
223
- const stat = await FSExtra.stat(fullPath);
232
+ const fileStat = await stat(fullPath);
224
233
  patchStats[fullPath] = {
225
- size: stat.size,
226
- mtimeMs: stat.mtimeMs
234
+ size: fileStat.size,
235
+ mtimeMs: fileStat.mtimeMs
227
236
  };
228
237
  statsChanged = true;
229
238
  }
@@ -256,7 +265,7 @@ async function applyDependencyPatches(patches, { root = process.cwd() } = {}) {
256
265
  }
257
266
  async function atomicWriteFile(filePath, contents) {
258
267
  const tempPath = filePath + ".vxrn.tmp." + process.pid + "." + Date.now();
259
- await FSExtra.writeFile(tempPath, contents);
268
+ await writeFile(tempPath, contents);
260
269
  await rename(tempPath, filePath);
261
270
  }
262
271
 
@@ -1 +1 @@
1
- {"version":3,"file":"patches.js","names":[],"sources":["utils/patches.js"],"sourcesContent":["import { transformSWC } from \"@vxrn/compiler\";\nimport { transformFlowBabel } from \"@vxrn/vite-flow\";\nimport Glob from \"fast-glob\";\nimport findNodeModules from \"find-node-modules\";\nimport FSExtra from \"fs-extra\";\nimport { realpathSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { rename } from \"node:fs/promises\";\nimport semver from \"semver\";\nimport { builtInDepPatches } from \"../patches/builtInDepPatches\";\nimport { globDir } from \"./globDir\";\nclass Bail extends Error {\n}\nfunction bailIfUnchanged(obj1, obj2) {\n if (JSON.stringify(obj1) === JSON.stringify(obj2)) {\n throw new Bail();\n }\n}\nfunction bailIfExists(haystack, needle) {\n if (haystack.includes(needle)) {\n throw new Bail();\n }\n}\nasync function applyBuiltInPatches(options, extraPatches) {\n const all = [...builtInDepPatches];\n if (extraPatches) {\n for (const key in extraPatches) {\n const extraPatchFiles = extraPatches[key];\n const existing = all.find((x) => x.module === key);\n if (existing) {\n for (const patchKey in extraPatchFiles) {\n if (existing.patchFiles[patchKey]) {\n console.warn(\n `Warning: Overwriting One built-in patch with user patch`,\n key,\n patchKey\n );\n }\n existing.patchFiles[patchKey] = extraPatchFiles[patchKey];\n }\n } else {\n all.push({ module: key, patchFiles: extraPatchFiles });\n }\n }\n }\n await applyDependencyPatches(all, { root: options.root });\n}\nconst STATS_FILE = \".vxrn.patch-stats.json\";\nfunction getOriginalPath(fullPath) {\n return fullPath + \".vxrn.original\";\n}\nasync function readPatchStats(nodeModulesDir) {\n try {\n return await FSExtra.readJSON(join(nodeModulesDir, STATS_FILE));\n } catch {\n return {};\n }\n}\nasync function writePatchStats(nodeModulesDir, stats) {\n await FSExtra.writeJSON(join(nodeModulesDir, STATS_FILE), stats);\n}\nfunction moduleToPnpmStorePattern(moduleName) {\n return moduleName.replace(\"/\", \"+\");\n}\nasync function applyDependencyPatches(patches, { root = process.cwd() } = {}) {\n const patchModuleNames = [...new Set(patches.map((p) => p.module))];\n const nodeModulesDirs = findNodeModules({ cwd: root }).flatMap((relativePath) => {\n const dir = join(root, relativePath);\n const dirs = [dir];\n const pnpmBase = join(dir, \".pnpm\");\n if (!FSExtra.existsSync(pnpmBase)) return dirs;\n const pnpmHoistedDir = join(pnpmBase, \"node_modules\");\n if (FSExtra.existsSync(pnpmHoistedDir)) {\n dirs.push(pnpmHoistedDir);\n }\n for (const moduleName of patchModuleNames) {\n const storePattern = moduleToPnpmStorePattern(moduleName);\n const storeMatches = Glob.sync(`${storePattern}@*/node_modules`, {\n cwd: pnpmBase,\n onlyDirectories: true\n });\n for (const match of storeMatches) {\n dirs.push(join(pnpmBase, match));\n }\n }\n return dirs;\n });\n const results = /* @__PURE__ */ new Map();\n const transformWarnedModules = /* @__PURE__ */ new Set();\n const patchedRealPaths = /* @__PURE__ */ new Set();\n await Promise.all(\n nodeModulesDirs.map(async (nodeModulesDir) => {\n const patchStats = await readPatchStats(nodeModulesDir);\n let statsChanged = false;\n await Promise.all(\n patches.map(async (patch) => {\n try {\n const nodeModuleDir = join(nodeModulesDir, patch.module);\n if (!FSExtra.existsSync(nodeModuleDir)) return;\n let realModuleDir;\n try {\n realModuleDir = realpathSync(nodeModuleDir);\n } catch {\n return;\n }\n const patchIdx = patches.indexOf(patch);\n const dedupKey = `${patchIdx}\\0${realModuleDir}`;\n if (patchedRealPaths.has(dedupKey)) return;\n patchedRealPaths.add(dedupKey);\n const version = patch.patchFiles.version;\n if (typeof version === \"string\") {\n const pkgJSON = await FSExtra.readJSON(join(nodeModuleDir, \"package.json\"));\n if (!semver.satisfies(pkgJSON.version, version)) return;\n }\n const filePatches = [];\n for (const file in patch.patchFiles) {\n if (file === \"version\") continue;\n const filesToApply = file.includes(\"*\") ? globDir(nodeModuleDir, file) : [file];\n for (const relativePath of filesToApply) {\n filePatches.push({\n relativePath,\n patchDefinition: patch.patchFiles[file]\n });\n }\n }\n const fileStatsResults = await Promise.all(\n filePatches.map(async ({ relativePath }) => {\n const fullPath = join(nodeModuleDir, relativePath);\n try {\n const stat = await FSExtra.stat(fullPath);\n return { relativePath, fullPath, stat, exists: true };\n } catch {\n return { relativePath, fullPath, stat: null, exists: false };\n }\n })\n );\n const filesToProcess = fileStatsResults.filter(\n ({ fullPath, stat, exists }) => {\n if (!exists || !stat) return false;\n if (process.env.VXRN_FORCE_PATCH) return true;\n const cached = patchStats[fullPath];\n if (!cached) return true;\n return stat.size !== cached.size || stat.mtimeMs !== cached.mtimeMs;\n }\n );\n if (filesToProcess.length === 0) {\n if (!results.has(patch.module)) {\n results.set(patch.module, \"ok\");\n }\n return;\n }\n let didApplyPatch = false;\n await Promise.all(\n filesToProcess.map(async ({ relativePath, fullPath }) => {\n try {\n const patchDef = filePatches.find(\n (p) => p.relativePath === relativePath\n ).patchDefinition;\n const originalPath = getOriginalPath(fullPath);\n const [targetContent, originalContent] = await Promise.all([\n FSExtra.readFile(fullPath, \"utf-8\"),\n FSExtra.readFile(originalPath, \"utf-8\").catch(() => null)\n ]);\n const sourceContent = originalContent ?? targetContent;\n let patchedContent = null;\n if (typeof patchDef === \"string\") {\n patchedContent = patchDef;\n } else if (Array.isArray(patchDef)) {\n try {\n let contents = sourceContent;\n for (const strategy of patchDef) {\n if (strategy === \"flow\") {\n contents = await transformFlowBabel(contents);\n }\n if (strategy === \"swc\" || strategy === \"jsx\") {\n contents = (await transformSWC(fullPath, contents, {\n mode: \"build\",\n environment: \"ios\",\n forceJSX: strategy === \"jsx\",\n noHMR: true,\n fixNonTypeSpecificImports: true,\n // a patch is written to node_modules ONCE and then read by\n // every later build, dev and production alike, so its output\n // has to be valid in both. the automatic JSX runtime is not:\n // its dev form emits `jsxDEV` from react/jsx-dev-runtime, and\n // React's production build exports `jsxDEV = void 0`, so a\n // patched dependency that renders JSX throws \"undefined is not\n // a function\" from render in any production bundle. `jsx`/`jsxs`\n // work in both builds, and refresh is already off for\n // node_modules, so the stable runtime is the only correct output.\n production: true\n }))?.code || contents;\n }\n }\n if (contents !== sourceContent) {\n patchedContent = contents;\n }\n } catch (transformErr) {\n if (!transformWarnedModules.has(patch.module)) {\n transformWarnedModules.add(patch.module);\n console.warn(\n ` \\u26A0 Patch transform failed for ${patch.module} in ${relativePath}, skipping non-critical patch: ${transformErr?.stack ?? transformErr}`\n );\n }\n return;\n }\n } else {\n const out = await patchDef(sourceContent);\n if (typeof out === \"string\" && out !== sourceContent) {\n patchedContent = out;\n } else if (typeof out === \"string\") {\n console.warn(\n `[vxrn] patch for ${patch.module} matched nothing in ${relativePath} \\u2014 it is stale and is no longer protecting anything`\n );\n }\n }\n if (patchedContent !== null) {\n if (targetContent === patchedContent) {\n const stat2 = await FSExtra.stat(fullPath);\n patchStats[fullPath] = { size: stat2.size, mtimeMs: stat2.mtimeMs };\n statsChanged = true;\n return;\n }\n await Promise.all([\n originalContent === null && atomicWriteFile(originalPath, sourceContent),\n atomicWriteFile(fullPath, patchedContent)\n ]);\n const stat = await FSExtra.stat(fullPath);\n patchStats[fullPath] = { size: stat.size, mtimeMs: stat.mtimeMs };\n statsChanged = true;\n didApplyPatch = true;\n if (process.env.DEBUG) {\n console.info(\n ` - Applied patch to ${patch.module}: ${relativePath}`\n );\n }\n } else {\n const stat = await FSExtra.stat(fullPath);\n patchStats[fullPath] = { size: stat.size, mtimeMs: stat.mtimeMs };\n statsChanged = true;\n }\n } catch (err) {\n if (err instanceof Bail) return;\n throw err;\n }\n })\n );\n if (didApplyPatch) {\n results.set(patch.module, \"applied\");\n } else if (!results.has(patch.module)) {\n results.set(patch.module, \"ok\");\n }\n } catch (err) {\n console.error(`\\u{1F6A8} Error applying patch to`, patch.module);\n console.error(err);\n }\n })\n );\n if (statsChanged) {\n await writePatchStats(nodeModulesDir, patchStats);\n }\n })\n );\n for (const [module, result] of results) {\n if (result === \"applied\") {\n console.info(` \\u{1FA79} ${module}`);\n } else if (result === \"ok\" && process.env.VXRN_FORCE_PATCH) {\n console.info(` \\u2713 ${module}`);\n }\n }\n}\nasync function atomicWriteFile(filePath, contents) {\n const tempPath = filePath + \".vxrn.tmp.\" + process.pid + \".\" + Date.now();\n await FSExtra.writeFile(tempPath, contents);\n await rename(tempPath, filePath);\n}\nexport {\n applyBuiltInPatches,\n applyDependencyPatches,\n bailIfExists,\n bailIfUnchanged,\n moduleToPnpmStorePattern\n};\n//# sourceMappingURL=patches.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"patches.js","names":[],"sources":["utils/patches.js"],"sourcesContent":["import { transformSWC } from \"@vxrn/compiler\";\nimport { transformFlowBabel } from \"@vxrn/vite-flow\";\nimport Glob from \"fast-glob\";\nimport { existsSync, realpathSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { readFile, rename, stat, writeFile } from \"node:fs/promises\";\nimport semver from \"semver\";\nimport { builtInDepPatches } from \"../patches/builtInDepPatches\";\nimport { readJSON, writeJSON } from \"./fs\";\nimport { globDir } from \"./globDir\";\nfunction findNodeModulesDirs(root) {\n const dirs = [];\n let dir = resolve(root);\n for (; ; ) {\n const candidate = join(dir, \"node_modules\");\n if (existsSync(candidate)) dirs.push(candidate);\n const parent = dirname(dir);\n if (parent === dir) return dirs;\n dir = parent;\n }\n}\nclass Bail extends Error {\n}\nfunction bailIfUnchanged(obj1, obj2) {\n if (JSON.stringify(obj1) === JSON.stringify(obj2)) {\n throw new Bail();\n }\n}\nfunction bailIfExists(haystack, needle) {\n if (haystack.includes(needle)) {\n throw new Bail();\n }\n}\nasync function applyBuiltInPatches(options, extraPatches) {\n const all = [...builtInDepPatches];\n if (extraPatches) {\n for (const key in extraPatches) {\n const extraPatchFiles = extraPatches[key];\n const existing = all.find((x) => x.module === key);\n if (existing) {\n for (const patchKey in extraPatchFiles) {\n if (existing.patchFiles[patchKey]) {\n console.warn(\n `Warning: Overwriting One built-in patch with user patch`,\n key,\n patchKey\n );\n }\n existing.patchFiles[patchKey] = extraPatchFiles[patchKey];\n }\n } else {\n all.push({ module: key, patchFiles: extraPatchFiles });\n }\n }\n }\n await applyDependencyPatches(all, { root: options.root });\n}\nconst STATS_FILE = \".vxrn.patch-stats.json\";\nfunction getOriginalPath(fullPath) {\n return fullPath + \".vxrn.original\";\n}\nasync function readPatchStats(nodeModulesDir) {\n try {\n return await readJSON(join(nodeModulesDir, STATS_FILE));\n } catch {\n return {};\n }\n}\nasync function writePatchStats(nodeModulesDir, stats) {\n await writeJSON(join(nodeModulesDir, STATS_FILE), stats);\n}\nfunction moduleToPnpmStorePattern(moduleName) {\n return moduleName.replace(\"/\", \"+\");\n}\nasync function applyDependencyPatches(patches, { root = process.cwd() } = {}) {\n const patchModuleNames = [...new Set(patches.map((p) => p.module))];\n const nodeModulesDirs = findNodeModulesDirs(root).flatMap((dir) => {\n const dirs = [dir];\n const pnpmBase = join(dir, \".pnpm\");\n if (!existsSync(pnpmBase)) return dirs;\n const pnpmHoistedDir = join(pnpmBase, \"node_modules\");\n if (existsSync(pnpmHoistedDir)) {\n dirs.push(pnpmHoistedDir);\n }\n for (const moduleName of patchModuleNames) {\n const storePattern = moduleToPnpmStorePattern(moduleName);\n const storeMatches = Glob.sync(`${storePattern}@*/node_modules`, {\n cwd: pnpmBase,\n onlyDirectories: true\n });\n for (const match of storeMatches) {\n dirs.push(join(pnpmBase, match));\n }\n }\n return dirs;\n });\n const results = /* @__PURE__ */ new Map();\n const transformWarnedModules = /* @__PURE__ */ new Set();\n const patchedRealPaths = /* @__PURE__ */ new Set();\n await Promise.all(\n nodeModulesDirs.map(async (nodeModulesDir) => {\n const patchStats = await readPatchStats(nodeModulesDir);\n let statsChanged = false;\n await Promise.all(\n patches.map(async (patch) => {\n try {\n const nodeModuleDir = join(nodeModulesDir, patch.module);\n if (!existsSync(nodeModuleDir)) return;\n let realModuleDir;\n try {\n realModuleDir = realpathSync(nodeModuleDir);\n } catch {\n return;\n }\n const patchIdx = patches.indexOf(patch);\n const dedupKey = `${patchIdx}\\0${realModuleDir}`;\n if (patchedRealPaths.has(dedupKey)) return;\n patchedRealPaths.add(dedupKey);\n const version = patch.patchFiles.version;\n if (typeof version === \"string\") {\n const pkgJSON = await readJSON(join(nodeModuleDir, \"package.json\"));\n if (!semver.satisfies(pkgJSON.version, version)) return;\n }\n const filePatches = [];\n for (const file in patch.patchFiles) {\n if (file === \"version\") continue;\n const filesToApply = file.includes(\"*\") ? globDir(nodeModuleDir, file) : [file];\n for (const relativePath of filesToApply) {\n filePatches.push({\n relativePath,\n patchDefinition: patch.patchFiles[file]\n });\n }\n }\n const fileStatsResults = await Promise.all(\n filePatches.map(async ({ relativePath }) => {\n const fullPath = join(nodeModuleDir, relativePath);\n try {\n const fileStat = await stat(fullPath);\n return { relativePath, fullPath, stat: fileStat, exists: true };\n } catch {\n return { relativePath, fullPath, stat: null, exists: false };\n }\n })\n );\n const filesToProcess = fileStatsResults.filter(\n ({ fullPath, stat: fileStat, exists }) => {\n if (!exists || !fileStat) return false;\n if (process.env.VXRN_FORCE_PATCH) return true;\n const cached = patchStats[fullPath];\n if (!cached) return true;\n return fileStat.size !== cached.size || fileStat.mtimeMs !== cached.mtimeMs;\n }\n );\n if (filesToProcess.length === 0) {\n if (!results.has(patch.module)) {\n results.set(patch.module, \"ok\");\n }\n return;\n }\n let didApplyPatch = false;\n await Promise.all(\n filesToProcess.map(async ({ relativePath, fullPath }) => {\n try {\n const patchDef = filePatches.find(\n (p) => p.relativePath === relativePath\n ).patchDefinition;\n const originalPath = getOriginalPath(fullPath);\n const [targetContent, originalContent] = await Promise.all([\n readFile(fullPath, \"utf-8\"),\n readFile(originalPath, \"utf-8\").catch(() => null)\n ]);\n const sourceContent = originalContent ?? targetContent;\n let patchedContent = null;\n if (typeof patchDef === \"string\") {\n patchedContent = patchDef;\n } else if (Array.isArray(patchDef)) {\n try {\n let contents = sourceContent;\n for (const strategy of patchDef) {\n if (strategy === \"flow\") {\n contents = await transformFlowBabel(contents);\n }\n if (strategy === \"swc\" || strategy === \"jsx\") {\n contents = (await transformSWC(fullPath, contents, {\n mode: \"build\",\n environment: \"ios\",\n forceJSX: strategy === \"jsx\",\n noHMR: true,\n fixNonTypeSpecificImports: true,\n // a patch is written to node_modules ONCE and then read by\n // every later build, dev and production alike, so its output\n // has to be valid in both. the automatic JSX runtime is not:\n // its dev form emits `jsxDEV` from react/jsx-dev-runtime, and\n // React's production build exports `jsxDEV = void 0`, so a\n // patched dependency that renders JSX throws \"undefined is not\n // a function\" from render in any production bundle. `jsx`/`jsxs`\n // work in both builds, and refresh is already off for\n // node_modules, so the stable runtime is the only correct output.\n production: true\n }))?.code || contents;\n }\n }\n if (contents !== sourceContent) {\n patchedContent = contents;\n }\n } catch (transformErr) {\n if (!transformWarnedModules.has(patch.module)) {\n transformWarnedModules.add(patch.module);\n console.warn(\n ` \\u26A0 Patch transform failed for ${patch.module} in ${relativePath}, skipping non-critical patch: ${transformErr?.stack ?? transformErr}`\n );\n }\n return;\n }\n } else {\n const out = await patchDef(sourceContent);\n if (typeof out === \"string\" && out !== sourceContent) {\n patchedContent = out;\n } else if (typeof out === \"string\") {\n console.warn(\n `[vxrn] patch for ${patch.module} matched nothing in ${relativePath} \\u2014 it is stale and is no longer protecting anything`\n );\n }\n }\n if (patchedContent !== null) {\n if (targetContent === patchedContent) {\n const fileStat2 = await stat(fullPath);\n patchStats[fullPath] = { size: fileStat2.size, mtimeMs: fileStat2.mtimeMs };\n statsChanged = true;\n return;\n }\n await Promise.all([\n originalContent === null && atomicWriteFile(originalPath, sourceContent),\n atomicWriteFile(fullPath, patchedContent)\n ]);\n const fileStat = await stat(fullPath);\n patchStats[fullPath] = { size: fileStat.size, mtimeMs: fileStat.mtimeMs };\n statsChanged = true;\n didApplyPatch = true;\n if (process.env.DEBUG) {\n console.info(\n ` - Applied patch to ${patch.module}: ${relativePath}`\n );\n }\n } else {\n const fileStat = await stat(fullPath);\n patchStats[fullPath] = { size: fileStat.size, mtimeMs: fileStat.mtimeMs };\n statsChanged = true;\n }\n } catch (err) {\n if (err instanceof Bail) return;\n throw err;\n }\n })\n );\n if (didApplyPatch) {\n results.set(patch.module, \"applied\");\n } else if (!results.has(patch.module)) {\n results.set(patch.module, \"ok\");\n }\n } catch (err) {\n console.error(`\\u{1F6A8} Error applying patch to`, patch.module);\n console.error(err);\n }\n })\n );\n if (statsChanged) {\n await writePatchStats(nodeModulesDir, patchStats);\n }\n })\n );\n for (const [module, result] of results) {\n if (result === \"applied\") {\n console.info(` \\u{1FA79} ${module}`);\n } else if (result === \"ok\" && process.env.VXRN_FORCE_PATCH) {\n console.info(` \\u2713 ${module}`);\n }\n }\n}\nasync function atomicWriteFile(filePath, contents) {\n const tempPath = filePath + \".vxrn.tmp.\" + process.pid + \".\" + Date.now();\n await writeFile(tempPath, contents);\n await rename(tempPath, filePath);\n}\nexport {\n applyBuiltInPatches,\n applyDependencyPatches,\n bailIfExists,\n bailIfUnchanged,\n moduleToPnpmStorePattern\n};\n//# sourceMappingURL=patches.js.map\n"],"mappings":";;;;;;;;;;;;AAUA,SAAS,oBAAoB,MAAM;CACjC,MAAM,OAAO,CAAC;CACd,IAAI,MAAM,QAAQ,IAAI;CACtB,SAAW;EACT,MAAM,YAAY,KAAK,KAAK,cAAc;EAC1C,IAAI,WAAW,SAAS,GAAG,KAAK,KAAK,SAAS;EAC9C,MAAM,SAAS,QAAQ,GAAG;EAC1B,IAAI,WAAW,KAAK,OAAO;EAC3B,MAAM;CACR;AACF;AACA,IAAM,OAAN,cAAmB,MAAM,CACzB;AACA,SAAS,gBAAgB,MAAM,MAAM;CACnC,IAAI,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,IAAI,GAAG;EACjD,MAAM,IAAI,KAAK;CACjB;AACF;AACA,SAAS,aAAa,UAAU,QAAQ;CACtC,IAAI,SAAS,SAAS,MAAM,GAAG;EAC7B,MAAM,IAAI,KAAK;CACjB;AACF;AACA,eAAe,oBAAoB,SAAS,cAAc;CACxD,MAAM,MAAM,CAAC,GAAG,iBAAiB;CACjC,IAAI,cAAc;EAChB,KAAK,MAAM,OAAO,cAAc;GAC9B,MAAM,kBAAkB,aAAa;GACrC,MAAM,WAAW,IAAI,MAAM,MAAM,EAAE,WAAW,GAAG;GACjD,IAAI,UAAU;IACZ,KAAK,MAAM,YAAY,iBAAiB;KACtC,IAAI,SAAS,WAAW,WAAW;MACjC,QAAQ,KACN,2DACA,KACA,QACF;KACF;KACA,SAAS,WAAW,YAAY,gBAAgB;IAClD;GACF,OAAO;IACL,IAAI,KAAK;KAAE,QAAQ;KAAK,YAAY;IAAgB,CAAC;GACvD;EACF;CACF;CACA,MAAM,uBAAuB,KAAK,EAAE,MAAM,QAAQ,KAAK,CAAC;AAC1D;AACA,MAAM,aAAa;AACnB,SAAS,gBAAgB,UAAU;CACjC,OAAO,WAAW;AACpB;AACA,eAAe,eAAe,gBAAgB;CAC5C,IAAI;EACF,OAAO,MAAM,SAAS,KAAK,gBAAgB,UAAU,CAAC;CACxD,QAAQ;EACN,OAAO,CAAC;CACV;AACF;AACA,eAAe,gBAAgB,gBAAgB,OAAO;CACpD,MAAM,UAAU,KAAK,gBAAgB,UAAU,GAAG,KAAK;AACzD;AACA,SAAS,yBAAyB,YAAY;CAC5C,OAAO,WAAW,QAAQ,KAAK,GAAG;AACpC;AACA,eAAe,uBAAuB,SAAS,EAAE,OAAO,QAAQ,IAAI,MAAM,CAAC,GAAG;CAC5E,MAAM,mBAAmB,CAAC,GAAG,IAAI,IAAI,QAAQ,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC;CAClE,MAAM,kBAAkB,oBAAoB,IAAI,CAAC,CAAC,SAAS,QAAQ;EACjE,MAAM,OAAO,CAAC,GAAG;EACjB,MAAM,WAAW,KAAK,KAAK,OAAO;EAClC,IAAI,CAAC,WAAW,QAAQ,GAAG,OAAO;EAClC,MAAM,iBAAiB,KAAK,UAAU,cAAc;EACpD,IAAI,WAAW,cAAc,GAAG;GAC9B,KAAK,KAAK,cAAc;EAC1B;EACA,KAAK,MAAM,cAAc,kBAAkB;GACzC,MAAM,eAAe,yBAAyB,UAAU;GACxD,MAAM,eAAe,KAAK,KAAK,GAAG,aAAa,kBAAkB;IAC/D,KAAK;IACL,iBAAiB;GACnB,CAAC;GACD,KAAK,MAAM,SAAS,cAAc;IAChC,KAAK,KAAK,KAAK,UAAU,KAAK,CAAC;GACjC;EACF;EACA,OAAO;CACT,CAAC;CACD,MAAM,0BAA0B,IAAI,IAAI;CACxC,MAAM,yCAAyC,IAAI,IAAI;CACvD,MAAM,mCAAmC,IAAI,IAAI;CACjD,MAAM,QAAQ,IACZ,gBAAgB,IAAI,OAAO,mBAAmB;EAC5C,MAAM,aAAa,MAAM,eAAe,cAAc;EACtD,IAAI,eAAe;EACnB,MAAM,QAAQ,IACZ,QAAQ,IAAI,OAAO,UAAU;GAC3B,IAAI;IACF,MAAM,gBAAgB,KAAK,gBAAgB,MAAM,MAAM;IACvD,IAAI,CAAC,WAAW,aAAa,GAAG;IAChC,IAAI;IACJ,IAAI;KACF,gBAAgB,aAAa,aAAa;IAC5C,QAAQ;KACN;IACF;IACA,MAAM,WAAW,QAAQ,QAAQ,KAAK;IACtC,MAAM,WAAW,GAAG,SAAS,IAAI;IACjC,IAAI,iBAAiB,IAAI,QAAQ,GAAG;IACpC,iBAAiB,IAAI,QAAQ;IAC7B,MAAM,UAAU,MAAM,WAAW;IACjC,IAAI,OAAO,YAAY,UAAU;KAC/B,MAAM,UAAU,MAAM,SAAS,KAAK,eAAe,cAAc,CAAC;KAClE,IAAI,CAAC,OAAO,UAAU,QAAQ,SAAS,OAAO,GAAG;IACnD;IACA,MAAM,cAAc,CAAC;IACrB,KAAK,MAAM,QAAQ,MAAM,YAAY;KACnC,IAAI,SAAS,WAAW;KACxB,MAAM,eAAe,KAAK,SAAS,GAAG,IAAI,QAAQ,eAAe,IAAI,IAAI,CAAC,IAAI;KAC9E,KAAK,MAAM,gBAAgB,cAAc;MACvC,YAAY,KAAK;OACf;OACA,iBAAiB,MAAM,WAAW;MACpC,CAAC;KACH;IACF;IACA,MAAM,mBAAmB,MAAM,QAAQ,IACrC,YAAY,IAAI,OAAO,EAAE,mBAAmB;KAC1C,MAAM,WAAW,KAAK,eAAe,YAAY;KACjD,IAAI;MACF,MAAM,WAAW,MAAM,KAAK,QAAQ;MACpC,OAAO;OAAE;OAAc;OAAU,MAAM;OAAU,QAAQ;MAAK;KAChE,QAAQ;MACN,OAAO;OAAE;OAAc;OAAU,MAAM;OAAM,QAAQ;MAAM;KAC7D;IACF,CAAC,CACH;IACA,MAAM,iBAAiB,iBAAiB,QACrC,EAAE,UAAU,MAAM,UAAU,aAAa;KACxC,IAAI,CAAC,UAAU,CAAC,UAAU,OAAO;KACjC,IAAI,QAAQ,IAAI,kBAAkB,OAAO;KACzC,MAAM,SAAS,WAAW;KAC1B,IAAI,CAAC,QAAQ,OAAO;KACpB,OAAO,SAAS,SAAS,OAAO,QAAQ,SAAS,YAAY,OAAO;IACtE,CACF;IACA,IAAI,eAAe,WAAW,GAAG;KAC/B,IAAI,CAAC,QAAQ,IAAI,MAAM,MAAM,GAAG;MAC9B,QAAQ,IAAI,MAAM,QAAQ,IAAI;KAChC;KACA;IACF;IACA,IAAI,gBAAgB;IACpB,MAAM,QAAQ,IACZ,eAAe,IAAI,OAAO,EAAE,cAAc,eAAe;KACvD,IAAI;MACF,MAAM,WAAW,YAAY,MAC1B,MAAM,EAAE,iBAAiB,YAC5B,CAAC,CAAC;MACF,MAAM,eAAe,gBAAgB,QAAQ;MAC7C,MAAM,CAAC,eAAe,mBAAmB,MAAM,QAAQ,IAAI,CACzD,SAAS,UAAU,OAAO,GAC1B,SAAS,cAAc,OAAO,CAAC,CAAC,YAAY,IAAI,CAClD,CAAC;MACD,MAAM,gBAAgB,mBAAmB;MACzC,IAAI,iBAAiB;MACrB,IAAI,OAAO,aAAa,UAAU;OAChC,iBAAiB;MACnB,OAAO,IAAI,MAAM,QAAQ,QAAQ,GAAG;OAClC,IAAI;QACF,IAAI,WAAW;QACf,KAAK,MAAM,YAAY,UAAU;SAC/B,IAAI,aAAa,QAAQ;UACvB,WAAW,MAAM,mBAAmB,QAAQ;SAC9C;SACA,IAAI,aAAa,SAAS,aAAa,OAAO;UAC5C,YAAY,MAAM,aAAa,UAAU,UAAU;WACjD,MAAM;WACN,aAAa;WACb,UAAU,aAAa;WACvB,OAAO;WACP,2BAA2B;WAU3B,YAAY;UACd,CAAC,EAAC,EAAG,QAAQ;SACf;QACF;QACA,IAAI,aAAa,eAAe;SAC9B,iBAAiB;QACnB;OACF,SAAS,cAAc;QACrB,IAAI,CAAC,uBAAuB,IAAI,MAAM,MAAM,GAAG;SAC7C,uBAAuB,IAAI,MAAM,MAAM;SACvC,QAAQ,KACN,uCAAuC,MAAM,OAAO,MAAM,aAAa,iCAAiC,cAAc,SAAS,cACjI;QACF;QACA;OACF;MACF,OAAO;OACL,MAAM,MAAM,MAAM,SAAS,aAAa;OACxC,IAAI,OAAO,QAAQ,YAAY,QAAQ,eAAe;QACpD,iBAAiB;OACnB,OAAO,IAAI,OAAO,QAAQ,UAAU;QAClC,QAAQ,KACN,oBAAoB,MAAM,OAAO,sBAAsB,aAAa,yDACtE;OACF;MACF;MACA,IAAI,mBAAmB,MAAM;OAC3B,IAAI,kBAAkB,gBAAgB;QACpC,MAAM,YAAY,MAAM,KAAK,QAAQ;QACrC,WAAW,YAAY;SAAE,MAAM,UAAU;SAAM,SAAS,UAAU;QAAQ;QAC1E,eAAe;QACf;OACF;OACA,MAAM,QAAQ,IAAI,CAChB,oBAAoB,QAAQ,gBAAgB,cAAc,aAAa,GACvE,gBAAgB,UAAU,cAAc,CAC1C,CAAC;OACD,MAAM,WAAW,MAAM,KAAK,QAAQ;OACpC,WAAW,YAAY;QAAE,MAAM,SAAS;QAAM,SAAS,SAAS;OAAQ;OACxE,eAAe;OACf,gBAAgB;OAChB,IAAI,QAAQ,IAAI,OAAO;QACrB,QAAQ,KACN,wBAAwB,MAAM,OAAO,IAAI,cAC3C;OACF;MACF,OAAO;OACL,MAAM,WAAW,MAAM,KAAK,QAAQ;OACpC,WAAW,YAAY;QAAE,MAAM,SAAS;QAAM,SAAS,SAAS;OAAQ;OACxE,eAAe;MACjB;KACF,SAAS,KAAK;MACZ,IAAI,eAAe,MAAM;MACzB,MAAM;KACR;IACF,CAAC,CACH;IACA,IAAI,eAAe;KACjB,QAAQ,IAAI,MAAM,QAAQ,SAAS;IACrC,OAAO,IAAI,CAAC,QAAQ,IAAI,MAAM,MAAM,GAAG;KACrC,QAAQ,IAAI,MAAM,QAAQ,IAAI;IAChC;GACF,SAAS,KAAK;IACZ,QAAQ,MAAM,qCAAqC,MAAM,MAAM;IAC/D,QAAQ,MAAM,GAAG;GACnB;EACF,CAAC,CACH;EACA,IAAI,cAAc;GAChB,MAAM,gBAAgB,gBAAgB,UAAU;EAClD;CACF,CAAC,CACH;CACA,KAAK,MAAM,CAAC,QAAQ,WAAW,SAAS;EACtC,IAAI,WAAW,WAAW;GACxB,QAAQ,KAAK,cAAc,QAAQ;EACrC,OAAO,IAAI,WAAW,QAAQ,QAAQ,IAAI,kBAAkB;GAC1D,QAAQ,KAAK,WAAW,QAAQ;EAClC;CACF;AACF;AACA,eAAe,gBAAgB,UAAU,UAAU;CACjD,MAAM,WAAW,WAAW,eAAe,QAAQ,MAAM,MAAM,KAAK,IAAI;CACxE,MAAM,UAAU,UAAU,QAAQ;CAClC,MAAM,OAAO,UAAU,QAAQ;AACjC"}
@@ -1,13 +1,12 @@
1
1
  import { transformSWC } from "@vxrn/compiler";
2
2
  import { transformFlowBabel } from "@vxrn/vite-flow";
3
3
  import Glob from "fast-glob";
4
- import findNodeModules from "find-node-modules";
5
- import FSExtra from "fs-extra";
6
- import { realpathSync } from "fs";
7
- import { join } from "path";
8
- import { rename } from "fs/promises";
4
+ import { existsSync, realpathSync } from "fs";
5
+ import { dirname, join, resolve } from "path";
6
+ import { readFile, rename, stat, writeFile } from "fs/promises";
9
7
  import semver from "semver";
10
8
  import { builtInDepPatches } from "../patches/builtInDepPatches.native.js";
9
+ import { readJSON, writeJSON } from "./fs.native.js";
11
10
  import { globDir } from "./globDir.native.js";
12
11
 
13
12
  function _assert_this_initialized(self) {
@@ -100,6 +99,17 @@ function _wrap_native_super(Class) {
100
99
  };
101
100
  return _wrap_native_super(Class);
102
101
  }
102
+ function findNodeModulesDirs(root) {
103
+ var dirs = [];
104
+ var dir = resolve(root);
105
+ for (;;) {
106
+ var candidate = join(dir, "node_modules");
107
+ if (existsSync(candidate)) dirs.push(candidate);
108
+ var parent = dirname(dir);
109
+ if (parent === dir) return dirs;
110
+ dir = parent;
111
+ }
112
+ }
103
113
  var Bail = /* @__PURE__ */ (function(Error1) {
104
114
  "use strict";
105
115
  _inherits(Bail2, Error1);
@@ -151,13 +161,13 @@ function getOriginalPath(fullPath) {
151
161
  }
152
162
  async function readPatchStats(nodeModulesDir) {
153
163
  try {
154
- return await FSExtra.readJSON(join(nodeModulesDir, STATS_FILE));
164
+ return await readJSON(join(nodeModulesDir, STATS_FILE));
155
165
  } catch (unused) {
156
166
  return {};
157
167
  }
158
168
  }
159
169
  async function writePatchStats(nodeModulesDir, stats) {
160
- await FSExtra.writeJSON(join(nodeModulesDir, STATS_FILE), stats);
170
+ await writeJSON(join(nodeModulesDir, STATS_FILE), stats);
161
171
  }
162
172
  function moduleToPnpmStorePattern(moduleName) {
163
173
  return moduleName.replace("/", "+");
@@ -167,13 +177,12 @@ async function applyDependencyPatches(patches) {
167
177
  var patchModuleNames = [...new Set(patches.map(function(p) {
168
178
  return p.module;
169
179
  }))];
170
- var nodeModulesDirs = findNodeModules({ cwd: root }).flatMap(function(relativePath) {
171
- var dir = join(root, relativePath);
180
+ var nodeModulesDirs = findNodeModulesDirs(root).flatMap(function(dir) {
172
181
  var dirs = [dir];
173
182
  var pnpmBase = join(dir, ".pnpm");
174
- if (!FSExtra.existsSync(pnpmBase)) return dirs;
183
+ if (!existsSync(pnpmBase)) return dirs;
175
184
  var pnpmHoistedDir = join(pnpmBase, "node_modules");
176
- if (FSExtra.existsSync(pnpmHoistedDir)) {
185
+ if (existsSync(pnpmHoistedDir)) {
177
186
  dirs.push(pnpmHoistedDir);
178
187
  }
179
188
  var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
@@ -231,7 +240,7 @@ async function applyDependencyPatches(patches) {
231
240
  await Promise.all(patches.map(async function(patch) {
232
241
  try {
233
242
  var nodeModuleDir = join(nodeModulesDir, patch.module);
234
- if (!FSExtra.existsSync(nodeModuleDir)) return;
243
+ if (!existsSync(nodeModuleDir)) return;
235
244
  var realModuleDir;
236
245
  try {
237
246
  realModuleDir = realpathSync(nodeModuleDir);
@@ -244,7 +253,7 @@ async function applyDependencyPatches(patches) {
244
253
  patchedRealPaths.add(dedupKey);
245
254
  var version = patch.patchFiles.version;
246
255
  if (typeof version === "string") {
247
- var pkgJSON = await FSExtra.readJSON(join(nodeModuleDir, "package.json"));
256
+ var pkgJSON = await readJSON(join(nodeModuleDir, "package.json"));
248
257
  if (!semver.satisfies(pkgJSON.version, version)) return;
249
258
  }
250
259
  var filePatches = [];
@@ -279,11 +288,11 @@ async function applyDependencyPatches(patches) {
279
288
  var { relativePath: relativePath2 } = param;
280
289
  var fullPath = join(nodeModuleDir, relativePath2);
281
290
  try {
282
- var stat = await FSExtra.stat(fullPath);
291
+ var fileStat = await stat(fullPath);
283
292
  return {
284
293
  relativePath: relativePath2,
285
294
  fullPath,
286
- stat,
295
+ stat: fileStat,
287
296
  exists: true
288
297
  };
289
298
  } catch (unused) {
@@ -296,12 +305,12 @@ async function applyDependencyPatches(patches) {
296
305
  }
297
306
  }));
298
307
  var filesToProcess = fileStatsResults.filter(function(param) {
299
- var { fullPath, stat, exists } = param;
300
- if (!exists || !stat) return false;
308
+ var { fullPath, stat: fileStat, exists } = param;
309
+ if (!exists || !fileStat) return false;
301
310
  if (process.env.VXRN_FORCE_PATCH) return true;
302
311
  var cached = patchStats[fullPath];
303
312
  if (!cached) return true;
304
- return stat.size !== cached.size || stat.mtimeMs !== cached.mtimeMs;
313
+ return fileStat.size !== cached.size || fileStat.mtimeMs !== cached.mtimeMs;
305
314
  });
306
315
  if (filesToProcess.length === 0) {
307
316
  if (!results.has(patch.module)) {
@@ -317,7 +326,7 @@ async function applyDependencyPatches(patches) {
317
326
  return p.relativePath === relativePath2;
318
327
  }).patchDefinition;
319
328
  var originalPath = getOriginalPath(fullPath);
320
- var [targetContent, originalContent] = await Promise.all([FSExtra.readFile(fullPath, "utf-8"), FSExtra.readFile(originalPath, "utf-8").catch(function() {
329
+ var [targetContent, originalContent] = await Promise.all([readFile(fullPath, "utf-8"), readFile(originalPath, "utf-8").catch(function() {
321
330
  return null;
322
331
  })]);
323
332
  var sourceContent = originalContent !== null && originalContent !== void 0 ? originalContent : targetContent;
@@ -381,19 +390,19 @@ async function applyDependencyPatches(patches) {
381
390
  }
382
391
  if (patchedContent !== null) {
383
392
  if (targetContent === patchedContent) {
384
- var stat = await FSExtra.stat(fullPath);
393
+ var fileStat = await stat(fullPath);
385
394
  patchStats[fullPath] = {
386
- size: stat.size,
387
- mtimeMs: stat.mtimeMs
395
+ size: fileStat.size,
396
+ mtimeMs: fileStat.mtimeMs
388
397
  };
389
398
  statsChanged = true;
390
399
  return;
391
400
  }
392
401
  await Promise.all([originalContent === null && atomicWriteFile(originalPath, sourceContent), atomicWriteFile(fullPath, patchedContent)]);
393
- var stat1 = await FSExtra.stat(fullPath);
402
+ var fileStat1 = await stat(fullPath);
394
403
  patchStats[fullPath] = {
395
- size: stat1.size,
396
- mtimeMs: stat1.mtimeMs
404
+ size: fileStat1.size,
405
+ mtimeMs: fileStat1.mtimeMs
397
406
  };
398
407
  statsChanged = true;
399
408
  didApplyPatch = true;
@@ -401,10 +410,10 @@ async function applyDependencyPatches(patches) {
401
410
  console.info(` - Applied patch to ${patch.module}: ${relativePath2}`);
402
411
  }
403
412
  } else {
404
- var stat2 = await FSExtra.stat(fullPath);
413
+ var fileStat2 = await stat(fullPath);
405
414
  patchStats[fullPath] = {
406
- size: stat2.size,
407
- mtimeMs: stat2.mtimeMs
415
+ size: fileStat2.size,
416
+ mtimeMs: fileStat2.mtimeMs
408
417
  };
409
418
  statsChanged = true;
410
419
  }
@@ -454,7 +463,7 @@ async function applyDependencyPatches(patches) {
454
463
  }
455
464
  async function atomicWriteFile(filePath, contents) {
456
465
  var tempPath = filePath + ".vxrn.tmp." + process.pid + "." + Date.now();
457
- await FSExtra.writeFile(tempPath, contents);
466
+ await writeFile(tempPath, contents);
458
467
  await rename(tempPath, filePath);
459
468
  }
460
469
 
@@ -1 +1 @@
1
- {"version":3,"file":"patches.native.js","names":[],"sources":["utils/patches.native.js"],"sourcesContent":["import { transformSWC } from \"@vxrn/compiler\";\nimport { transformFlowBabel } from \"@vxrn/vite-flow\";\nimport Glob from \"fast-glob\";\nimport findNodeModules from \"find-node-modules\";\nimport FSExtra from \"fs-extra\";\nimport { realpathSync } from \"fs\";\nimport { join } from \"path\";\nimport { rename } from \"fs/promises\";\nimport semver from \"semver\";\nimport { builtInDepPatches } from \"../patches/builtInDepPatches\";\nimport { globDir } from \"./globDir\";\nfunction _assert_this_initialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction _call_super(_this, derived, args) {\n derived = _get_prototype_of(derived);\n return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));\n}\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent2, args2, Class2) {\n var a = [\n null\n ];\n a.push.apply(a, args2);\n var Constructor = Function.bind.apply(Parent2, a);\n var instance = new Constructor();\n if (Class2) _set_prototype_of(instance, Class2.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o2) {\n return o2.__proto__ || Object.getPrototypeOf(o2);\n };\n return _get_prototype_of(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _is_native_reflect_construct() {\n try {\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n }));\n } catch (_) {\n }\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\nfunction _possible_constructor_return(self, call) {\n if (call && (_type_of(call) === \"object\" || typeof call === \"function\")) return call;\n return _assert_this_initialized(self);\n}\nfunction _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _set_prototype_of(o, p);\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? /* @__PURE__ */ new Map() : void 0;\n _wrap_native_super = function(Class2) {\n if (Class2 === null || !_is_native_function(Class2)) return Class2;\n if (typeof Class2 !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class2)) return _cache.get(Class2);\n _cache.set(Class2, Wrapper);\n }\n function Wrapper() {\n return _construct(Class2, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class2.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _set_prototype_of(Wrapper, Class2);\n };\n return _wrap_native_super(Class);\n}\nvar Bail = /* @__PURE__ */ (function(Error1) {\n \"use strict\";\n _inherits(Bail2, Error1);\n function Bail2() {\n _class_call_check(this, Bail2);\n return _call_super(this, Bail2, arguments);\n }\n return Bail2;\n})(_wrap_native_super(Error));\nfunction bailIfUnchanged(obj1, obj2) {\n if (JSON.stringify(obj1) === JSON.stringify(obj2)) {\n throw new Bail();\n }\n}\nfunction bailIfExists(haystack, needle) {\n if (haystack.includes(needle)) {\n throw new Bail();\n }\n}\nasync function applyBuiltInPatches(options, extraPatches) {\n var all = [\n ...builtInDepPatches\n ];\n if (extraPatches) {\n var _loop = function(key2) {\n var extraPatchFiles = extraPatches[key2];\n var existing = all.find(function(x) {\n return x.module === key2;\n });\n if (existing) {\n for (var patchKey in extraPatchFiles) {\n if (existing.patchFiles[patchKey]) {\n console.warn(`Warning: Overwriting One built-in patch with user patch`, key2, patchKey);\n }\n existing.patchFiles[patchKey] = extraPatchFiles[patchKey];\n }\n } else {\n all.push({\n module: key2,\n patchFiles: extraPatchFiles\n });\n }\n };\n for (var key in extraPatches) _loop(key);\n }\n await applyDependencyPatches(all, {\n root: options.root\n });\n}\nvar STATS_FILE = \".vxrn.patch-stats.json\";\nfunction getOriginalPath(fullPath) {\n return fullPath + \".vxrn.original\";\n}\nasync function readPatchStats(nodeModulesDir) {\n try {\n return await FSExtra.readJSON(join(nodeModulesDir, STATS_FILE));\n } catch (unused) {\n return {};\n }\n}\nasync function writePatchStats(nodeModulesDir, stats) {\n await FSExtra.writeJSON(join(nodeModulesDir, STATS_FILE), stats);\n}\nfunction moduleToPnpmStorePattern(moduleName) {\n return moduleName.replace(\"/\", \"+\");\n}\nasync function applyDependencyPatches(patches) {\n var { root = process.cwd() } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var patchModuleNames = [\n ...new Set(patches.map(function(p) {\n return p.module;\n }))\n ];\n var nodeModulesDirs = findNodeModules({\n cwd: root\n }).flatMap(function(relativePath) {\n var dir = join(root, relativePath);\n var dirs = [\n dir\n ];\n var pnpmBase = join(dir, \".pnpm\");\n if (!FSExtra.existsSync(pnpmBase)) return dirs;\n var pnpmHoistedDir = join(pnpmBase, \"node_modules\");\n if (FSExtra.existsSync(pnpmHoistedDir)) {\n dirs.push(pnpmHoistedDir);\n }\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = patchModuleNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var moduleName = _step2.value;\n var storePattern = moduleToPnpmStorePattern(moduleName);\n var storeMatches = Glob.sync(`${storePattern}@*/node_modules`, {\n cwd: pnpmBase,\n onlyDirectories: true\n });\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = storeMatches[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var match = _step1.value;\n dirs.push(join(pnpmBase, match));\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return dirs;\n });\n var results = /* @__PURE__ */ new Map();\n var transformWarnedModules = /* @__PURE__ */ new Set();\n var patchedRealPaths = /* @__PURE__ */ new Set();\n await Promise.all(nodeModulesDirs.map(async function(nodeModulesDir) {\n var patchStats = await readPatchStats(nodeModulesDir);\n var statsChanged = false;\n await Promise.all(patches.map(async function(patch) {\n try {\n var nodeModuleDir = join(nodeModulesDir, patch.module);\n if (!FSExtra.existsSync(nodeModuleDir)) return;\n var realModuleDir;\n try {\n realModuleDir = realpathSync(nodeModuleDir);\n } catch (unused) {\n return;\n }\n var patchIdx = patches.indexOf(patch);\n var dedupKey = `${patchIdx}\\0${realModuleDir}`;\n if (patchedRealPaths.has(dedupKey)) return;\n patchedRealPaths.add(dedupKey);\n var version = patch.patchFiles.version;\n if (typeof version === \"string\") {\n var pkgJSON = await FSExtra.readJSON(join(nodeModuleDir, \"package.json\"));\n if (!semver.satisfies(pkgJSON.version, version)) return;\n }\n var filePatches = [];\n for (var file in patch.patchFiles) {\n if (file === \"version\") continue;\n var filesToApply = file.includes(\"*\") ? globDir(nodeModuleDir, file) : [\n file\n ];\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = filesToApply[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var relativePath = _step2.value;\n filePatches.push({\n relativePath,\n patchDefinition: patch.patchFiles[file]\n });\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n var fileStatsResults = await Promise.all(filePatches.map(async function(param) {\n var { relativePath: relativePath2 } = param;\n var fullPath = join(nodeModuleDir, relativePath2);\n try {\n var stat = await FSExtra.stat(fullPath);\n return {\n relativePath: relativePath2,\n fullPath,\n stat,\n exists: true\n };\n } catch (unused) {\n return {\n relativePath: relativePath2,\n fullPath,\n stat: null,\n exists: false\n };\n }\n }));\n var filesToProcess = fileStatsResults.filter(function(param) {\n var { fullPath, stat, exists } = param;\n if (!exists || !stat) return false;\n if (process.env.VXRN_FORCE_PATCH) return true;\n var cached = patchStats[fullPath];\n if (!cached) return true;\n return stat.size !== cached.size || stat.mtimeMs !== cached.mtimeMs;\n });\n if (filesToProcess.length === 0) {\n if (!results.has(patch.module)) {\n results.set(patch.module, \"ok\");\n }\n return;\n }\n var didApplyPatch = false;\n await Promise.all(filesToProcess.map(async function(param) {\n var { relativePath: relativePath2, fullPath } = param;\n try {\n var patchDef = filePatches.find(function(p) {\n return p.relativePath === relativePath2;\n }).patchDefinition;\n var originalPath = getOriginalPath(fullPath);\n var [targetContent, originalContent] = await Promise.all([\n FSExtra.readFile(fullPath, \"utf-8\"),\n FSExtra.readFile(originalPath, \"utf-8\").catch(function() {\n return null;\n })\n ]);\n var sourceContent = originalContent !== null && originalContent !== void 0 ? originalContent : targetContent;\n var patchedContent = null;\n if (typeof patchDef === \"string\") {\n patchedContent = patchDef;\n } else if (Array.isArray(patchDef)) {\n try {\n var contents = sourceContent;\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = patchDef[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var strategy = _step3.value;\n if (strategy === \"flow\") {\n contents = await transformFlowBabel(contents);\n }\n if (strategy === \"swc\" || strategy === \"jsx\") {\n var _this;\n contents = ((_this = await transformSWC(fullPath, contents, {\n mode: \"build\",\n environment: \"ios\",\n forceJSX: strategy === \"jsx\",\n noHMR: true,\n fixNonTypeSpecificImports: true,\n // a patch is written to node_modules ONCE and then read by\n // every later build, dev and production alike, so its output\n // has to be valid in both. the automatic JSX runtime is not:\n // its dev form emits `jsxDEV` from react/jsx-dev-runtime, and\n // React's production build exports `jsxDEV = void 0`, so a\n // patched dependency that renders JSX throws \"undefined is not\n // a function\" from render in any production bundle. `jsx`/`jsxs`\n // work in both builds, and refresh is already off for\n // node_modules, so the stable runtime is the only correct output.\n production: true\n })) === null || _this === void 0 ? void 0 : _this.code) || contents;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n if (contents !== sourceContent) {\n patchedContent = contents;\n }\n } catch (transformErr) {\n if (!transformWarnedModules.has(patch.module)) {\n var _ref;\n transformWarnedModules.add(patch.module);\n console.warn(` \\u26A0 Patch transform failed for ${patch.module} in ${relativePath2}, skipping non-critical patch: ${(_ref = transformErr === null || transformErr === void 0 ? void 0 : transformErr.stack) !== null && _ref !== void 0 ? _ref : transformErr}`);\n }\n return;\n }\n } else {\n var out = await patchDef(sourceContent);\n if (typeof out === \"string\" && out !== sourceContent) {\n patchedContent = out;\n } else if (typeof out === \"string\") {\n console.warn(`[vxrn] patch for ${patch.module} matched nothing in ${relativePath2} \\u2014 it is stale and is no longer protecting anything`);\n }\n }\n if (patchedContent !== null) {\n if (targetContent === patchedContent) {\n var stat = await FSExtra.stat(fullPath);\n patchStats[fullPath] = {\n size: stat.size,\n mtimeMs: stat.mtimeMs\n };\n statsChanged = true;\n return;\n }\n await Promise.all([\n originalContent === null && atomicWriteFile(originalPath, sourceContent),\n atomicWriteFile(fullPath, patchedContent)\n ]);\n var stat1 = await FSExtra.stat(fullPath);\n patchStats[fullPath] = {\n size: stat1.size,\n mtimeMs: stat1.mtimeMs\n };\n statsChanged = true;\n didApplyPatch = true;\n if (process.env.DEBUG) {\n console.info(` - Applied patch to ${patch.module}: ${relativePath2}`);\n }\n } else {\n var stat2 = await FSExtra.stat(fullPath);\n patchStats[fullPath] = {\n size: stat2.size,\n mtimeMs: stat2.mtimeMs\n };\n statsChanged = true;\n }\n } catch (err) {\n if (err instanceof Bail) return;\n throw err;\n }\n }));\n if (didApplyPatch) {\n results.set(patch.module, \"applied\");\n } else if (!results.has(patch.module)) {\n results.set(patch.module, \"ok\");\n }\n } catch (err) {\n console.error(`\\u{1F6A8} Error applying patch to`, patch.module);\n console.error(err);\n }\n }));\n if (statsChanged) {\n await writePatchStats(nodeModulesDir, patchStats);\n }\n }));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = results[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [module, result] = _step.value;\n if (result === \"applied\") {\n console.info(` \\u{1FA79} ${module}`);\n } else if (result === \"ok\" && process.env.VXRN_FORCE_PATCH) {\n console.info(` \\u2713 ${module}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nasync function atomicWriteFile(filePath, contents) {\n var tempPath = filePath + \".vxrn.tmp.\" + process.pid + \".\" + Date.now();\n await FSExtra.writeFile(tempPath, contents);\n await rename(tempPath, filePath);\n}\nexport {\n applyBuiltInPatches,\n applyDependencyPatches,\n bailIfExists,\n bailIfUnchanged,\n moduleToPnpmStorePattern\n};\n//# sourceMappingURL=patches.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"patches.native.js","names":[],"sources":["utils/patches.native.js"],"sourcesContent":["import { transformSWC } from \"@vxrn/compiler\";\nimport { transformFlowBabel } from \"@vxrn/vite-flow\";\nimport Glob from \"fast-glob\";\nimport { existsSync, realpathSync } from \"fs\";\nimport { dirname, join, resolve } from \"path\";\nimport { readFile, rename, stat, writeFile } from \"fs/promises\";\nimport semver from \"semver\";\nimport { builtInDepPatches } from \"../patches/builtInDepPatches\";\nimport { readJSON, writeJSON } from \"./fs\";\nimport { globDir } from \"./globDir\";\nfunction _assert_this_initialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n}\nfunction _call_super(_this, derived, args) {\n derived = _get_prototype_of(derived);\n return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));\n}\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent2, args2, Class2) {\n var a = [\n null\n ];\n a.push.apply(a, args2);\n var Constructor = Function.bind.apply(Parent2, a);\n var instance = new Constructor();\n if (Class2) _set_prototype_of(instance, Class2.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o2) {\n return o2.__proto__ || Object.getPrototypeOf(o2);\n };\n return _get_prototype_of(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nfunction _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _is_native_reflect_construct() {\n try {\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {\n }));\n } catch (_) {\n }\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\nfunction _possible_constructor_return(self, call) {\n if (call && (_type_of(call) === \"object\" || typeof call === \"function\")) return call;\n return _assert_this_initialized(self);\n}\nfunction _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o2, p2) {\n o2.__proto__ = p2;\n return o2;\n };\n return _set_prototype_of(o, p);\n}\nfunction _type_of(obj) {\n \"@swc/helpers - typeof\";\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? /* @__PURE__ */ new Map() : void 0;\n _wrap_native_super = function(Class2) {\n if (Class2 === null || !_is_native_function(Class2)) return Class2;\n if (typeof Class2 !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class2)) return _cache.get(Class2);\n _cache.set(Class2, Wrapper);\n }\n function Wrapper() {\n return _construct(Class2, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class2.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _set_prototype_of(Wrapper, Class2);\n };\n return _wrap_native_super(Class);\n}\nfunction findNodeModulesDirs(root) {\n var dirs = [];\n var dir = resolve(root);\n for (; ; ) {\n var candidate = join(dir, \"node_modules\");\n if (existsSync(candidate)) dirs.push(candidate);\n var parent = dirname(dir);\n if (parent === dir) return dirs;\n dir = parent;\n }\n}\nvar Bail = /* @__PURE__ */ (function(Error1) {\n \"use strict\";\n _inherits(Bail2, Error1);\n function Bail2() {\n _class_call_check(this, Bail2);\n return _call_super(this, Bail2, arguments);\n }\n return Bail2;\n})(_wrap_native_super(Error));\nfunction bailIfUnchanged(obj1, obj2) {\n if (JSON.stringify(obj1) === JSON.stringify(obj2)) {\n throw new Bail();\n }\n}\nfunction bailIfExists(haystack, needle) {\n if (haystack.includes(needle)) {\n throw new Bail();\n }\n}\nasync function applyBuiltInPatches(options, extraPatches) {\n var all = [\n ...builtInDepPatches\n ];\n if (extraPatches) {\n var _loop = function(key2) {\n var extraPatchFiles = extraPatches[key2];\n var existing = all.find(function(x) {\n return x.module === key2;\n });\n if (existing) {\n for (var patchKey in extraPatchFiles) {\n if (existing.patchFiles[patchKey]) {\n console.warn(`Warning: Overwriting One built-in patch with user patch`, key2, patchKey);\n }\n existing.patchFiles[patchKey] = extraPatchFiles[patchKey];\n }\n } else {\n all.push({\n module: key2,\n patchFiles: extraPatchFiles\n });\n }\n };\n for (var key in extraPatches) _loop(key);\n }\n await applyDependencyPatches(all, {\n root: options.root\n });\n}\nvar STATS_FILE = \".vxrn.patch-stats.json\";\nfunction getOriginalPath(fullPath) {\n return fullPath + \".vxrn.original\";\n}\nasync function readPatchStats(nodeModulesDir) {\n try {\n return await readJSON(join(nodeModulesDir, STATS_FILE));\n } catch (unused) {\n return {};\n }\n}\nasync function writePatchStats(nodeModulesDir, stats) {\n await writeJSON(join(nodeModulesDir, STATS_FILE), stats);\n}\nfunction moduleToPnpmStorePattern(moduleName) {\n return moduleName.replace(\"/\", \"+\");\n}\nasync function applyDependencyPatches(patches) {\n var { root = process.cwd() } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var patchModuleNames = [\n ...new Set(patches.map(function(p) {\n return p.module;\n }))\n ];\n var nodeModulesDirs = findNodeModulesDirs(root).flatMap(function(dir) {\n var dirs = [\n dir\n ];\n var pnpmBase = join(dir, \".pnpm\");\n if (!existsSync(pnpmBase)) return dirs;\n var pnpmHoistedDir = join(pnpmBase, \"node_modules\");\n if (existsSync(pnpmHoistedDir)) {\n dirs.push(pnpmHoistedDir);\n }\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = patchModuleNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var moduleName = _step2.value;\n var storePattern = moduleToPnpmStorePattern(moduleName);\n var storeMatches = Glob.sync(`${storePattern}@*/node_modules`, {\n cwd: pnpmBase,\n onlyDirectories: true\n });\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = storeMatches[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var match = _step1.value;\n dirs.push(join(pnpmBase, match));\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return dirs;\n });\n var results = /* @__PURE__ */ new Map();\n var transformWarnedModules = /* @__PURE__ */ new Set();\n var patchedRealPaths = /* @__PURE__ */ new Set();\n await Promise.all(nodeModulesDirs.map(async function(nodeModulesDir) {\n var patchStats = await readPatchStats(nodeModulesDir);\n var statsChanged = false;\n await Promise.all(patches.map(async function(patch) {\n try {\n var nodeModuleDir = join(nodeModulesDir, patch.module);\n if (!existsSync(nodeModuleDir)) return;\n var realModuleDir;\n try {\n realModuleDir = realpathSync(nodeModuleDir);\n } catch (unused) {\n return;\n }\n var patchIdx = patches.indexOf(patch);\n var dedupKey = `${patchIdx}\\0${realModuleDir}`;\n if (patchedRealPaths.has(dedupKey)) return;\n patchedRealPaths.add(dedupKey);\n var version = patch.patchFiles.version;\n if (typeof version === \"string\") {\n var pkgJSON = await readJSON(join(nodeModuleDir, \"package.json\"));\n if (!semver.satisfies(pkgJSON.version, version)) return;\n }\n var filePatches = [];\n for (var file in patch.patchFiles) {\n if (file === \"version\") continue;\n var filesToApply = file.includes(\"*\") ? globDir(nodeModuleDir, file) : [\n file\n ];\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = filesToApply[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var relativePath = _step2.value;\n filePatches.push({\n relativePath,\n patchDefinition: patch.patchFiles[file]\n });\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n var fileStatsResults = await Promise.all(filePatches.map(async function(param) {\n var { relativePath: relativePath2 } = param;\n var fullPath = join(nodeModuleDir, relativePath2);\n try {\n var fileStat = await stat(fullPath);\n return {\n relativePath: relativePath2,\n fullPath,\n stat: fileStat,\n exists: true\n };\n } catch (unused) {\n return {\n relativePath: relativePath2,\n fullPath,\n stat: null,\n exists: false\n };\n }\n }));\n var filesToProcess = fileStatsResults.filter(function(param) {\n var { fullPath, stat: fileStat, exists } = param;\n if (!exists || !fileStat) return false;\n if (process.env.VXRN_FORCE_PATCH) return true;\n var cached = patchStats[fullPath];\n if (!cached) return true;\n return fileStat.size !== cached.size || fileStat.mtimeMs !== cached.mtimeMs;\n });\n if (filesToProcess.length === 0) {\n if (!results.has(patch.module)) {\n results.set(patch.module, \"ok\");\n }\n return;\n }\n var didApplyPatch = false;\n await Promise.all(filesToProcess.map(async function(param) {\n var { relativePath: relativePath2, fullPath } = param;\n try {\n var patchDef = filePatches.find(function(p) {\n return p.relativePath === relativePath2;\n }).patchDefinition;\n var originalPath = getOriginalPath(fullPath);\n var [targetContent, originalContent] = await Promise.all([\n readFile(fullPath, \"utf-8\"),\n readFile(originalPath, \"utf-8\").catch(function() {\n return null;\n })\n ]);\n var sourceContent = originalContent !== null && originalContent !== void 0 ? originalContent : targetContent;\n var patchedContent = null;\n if (typeof patchDef === \"string\") {\n patchedContent = patchDef;\n } else if (Array.isArray(patchDef)) {\n try {\n var contents = sourceContent;\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = patchDef[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var strategy = _step3.value;\n if (strategy === \"flow\") {\n contents = await transformFlowBabel(contents);\n }\n if (strategy === \"swc\" || strategy === \"jsx\") {\n var _this;\n contents = ((_this = await transformSWC(fullPath, contents, {\n mode: \"build\",\n environment: \"ios\",\n forceJSX: strategy === \"jsx\",\n noHMR: true,\n fixNonTypeSpecificImports: true,\n // a patch is written to node_modules ONCE and then read by\n // every later build, dev and production alike, so its output\n // has to be valid in both. the automatic JSX runtime is not:\n // its dev form emits `jsxDEV` from react/jsx-dev-runtime, and\n // React's production build exports `jsxDEV = void 0`, so a\n // patched dependency that renders JSX throws \"undefined is not\n // a function\" from render in any production bundle. `jsx`/`jsxs`\n // work in both builds, and refresh is already off for\n // node_modules, so the stable runtime is the only correct output.\n production: true\n })) === null || _this === void 0 ? void 0 : _this.code) || contents;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n if (contents !== sourceContent) {\n patchedContent = contents;\n }\n } catch (transformErr) {\n if (!transformWarnedModules.has(patch.module)) {\n var _ref;\n transformWarnedModules.add(patch.module);\n console.warn(` \\u26A0 Patch transform failed for ${patch.module} in ${relativePath2}, skipping non-critical patch: ${(_ref = transformErr === null || transformErr === void 0 ? void 0 : transformErr.stack) !== null && _ref !== void 0 ? _ref : transformErr}`);\n }\n return;\n }\n } else {\n var out = await patchDef(sourceContent);\n if (typeof out === \"string\" && out !== sourceContent) {\n patchedContent = out;\n } else if (typeof out === \"string\") {\n console.warn(`[vxrn] patch for ${patch.module} matched nothing in ${relativePath2} \\u2014 it is stale and is no longer protecting anything`);\n }\n }\n if (patchedContent !== null) {\n if (targetContent === patchedContent) {\n var fileStat = await stat(fullPath);\n patchStats[fullPath] = {\n size: fileStat.size,\n mtimeMs: fileStat.mtimeMs\n };\n statsChanged = true;\n return;\n }\n await Promise.all([\n originalContent === null && atomicWriteFile(originalPath, sourceContent),\n atomicWriteFile(fullPath, patchedContent)\n ]);\n var fileStat1 = await stat(fullPath);\n patchStats[fullPath] = {\n size: fileStat1.size,\n mtimeMs: fileStat1.mtimeMs\n };\n statsChanged = true;\n didApplyPatch = true;\n if (process.env.DEBUG) {\n console.info(` - Applied patch to ${patch.module}: ${relativePath2}`);\n }\n } else {\n var fileStat2 = await stat(fullPath);\n patchStats[fullPath] = {\n size: fileStat2.size,\n mtimeMs: fileStat2.mtimeMs\n };\n statsChanged = true;\n }\n } catch (err) {\n if (err instanceof Bail) return;\n throw err;\n }\n }));\n if (didApplyPatch) {\n results.set(patch.module, \"applied\");\n } else if (!results.has(patch.module)) {\n results.set(patch.module, \"ok\");\n }\n } catch (err) {\n console.error(`\\u{1F6A8} Error applying patch to`, patch.module);\n console.error(err);\n }\n }));\n if (statsChanged) {\n await writePatchStats(nodeModulesDir, patchStats);\n }\n }));\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = results[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [module, result] = _step.value;\n if (result === \"applied\") {\n console.info(` \\u{1FA79} ${module}`);\n } else if (result === \"ok\" && process.env.VXRN_FORCE_PATCH) {\n console.info(` \\u2713 ${module}`);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nasync function atomicWriteFile(filePath, contents) {\n var tempPath = filePath + \".vxrn.tmp.\" + process.pid + \".\" + Date.now();\n await writeFile(tempPath, contents);\n await rename(tempPath, filePath);\n}\nexport {\n applyBuiltInPatches,\n applyDependencyPatches,\n bailIfExists,\n bailIfUnchanged,\n moduleToPnpmStorePattern\n};\n//# sourceMappingURL=patches.js.map\n"],"mappings":"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"}