@vxrn/vite-plugin-metro 2.13.9 → 2.13.10

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.
@@ -65,6 +65,21 @@ var import_publicEnv = require("@vxrn/utils/publicEnv");
65
65
  var import_expoVirtualEnv = require("./expoVirtualEnv.cjs");
66
66
  var import_rejectDOMDirective = require("./rejectDOMDirective.cjs");
67
67
  var import_platformEnv = require("@vxrn/utils/platformEnv");
68
+ function createTransformError(message, code, diagnostic) {
69
+ let loc = diagnostic.loc ?? diagnostic.errors?.[0]?.location;
70
+ const label = diagnostic.labels?.[0];
71
+ if (!loc && label) {
72
+ const lines = code.slice(0, label.start).split(/\r\n|[\n\r\u2028\u2029]/);
73
+ loc = {
74
+ line: lines.length,
75
+ column: lines.at(-1).length
76
+ };
77
+ }
78
+ return Object.assign(new Error(message), {
79
+ loc,
80
+ codeFrame: diagnostic.codeFrame ?? diagnostic.codeframe
81
+ });
82
+ }
68
83
  function collectModuleLiteralBindings(program) {
69
84
  const reassigned = /* @__PURE__ */ new Set();
70
85
  const declCount = /* @__PURE__ */ new Map();
@@ -258,7 +273,7 @@ function resolveAliasSpecifier(specifier, filename, projectRoot, aliases) {
258
273
  function applyModuleResolverAliases(code, filename, projectRoot, aliases) {
259
274
  const parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
260
275
  if (parsed?.errors?.length) {
261
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for alias resolution: ${parsed.errors[0].message}`);
276
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for alias resolution: ${parsed.errors[0].message}`, code, parsed.errors[0]);
262
277
  }
263
278
  if (!parsed?.program) return code;
264
279
  const ms = new import_magic_string.default(code);
@@ -293,7 +308,7 @@ function applyModuleResolverAliases(code, filename, projectRoot, aliases) {
293
308
  function applyInlineEnvVars(code, filename, isProduction, env = {}) {
294
309
  const parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
295
310
  if (parsed?.errors?.length) {
296
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`);
311
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`, code, parsed.errors[0]);
297
312
  }
298
313
  if (!parsed?.program) return code;
299
314
  const processPublicEnv = Object.fromEntries(Object.entries(process.env).filter(([key]) => key.startsWith("ONE_PUBLIC_") || key.startsWith("EXPO_PUBLIC_")));
@@ -436,7 +451,7 @@ const GUARD_SPECIFIERS = /* @__PURE__ */ new Set([
436
451
  function applyEnvironmentGuard(code, filename) {
437
452
  const parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
438
453
  if (parsed?.errors?.length) {
439
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for environment guards: ${parsed.errors[0].message}`);
454
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for environment guards: ${parsed.errors[0].message}`, code, parsed.errors[0]);
440
455
  }
441
456
  const body = parsed?.program?.body;
442
457
  if (!body) return code;
@@ -461,7 +476,7 @@ function applyOneRouterMetro(code, filename, options) {
461
476
  if (!isMetroEntry && !isEntryCtx) return code;
462
477
  const parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
463
478
  if (parsed?.errors?.length) {
464
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for one-router-metro: ${parsed.errors[0].message}`);
479
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for one-router-metro: ${parsed.errors[0].message}`, code, parsed.errors[0]);
465
480
  }
466
481
  if (!parsed?.program) return code;
467
482
  const ms = new import_magic_string.default(code);
@@ -752,10 +767,10 @@ function rewriteDependencyCalls(code, dependencies, depMapName = "_dependencyMap
752
767
  try {
753
768
  parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
754
769
  } catch (err) {
755
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${err.message || err}`);
770
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${err.message || err}`, code, err);
756
771
  }
757
772
  if (parsed?.errors?.length) {
758
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${parsed.errors[0].message}`);
773
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${parsed.errors[0].message}`, code, parsed.errors[0]);
759
774
  }
760
775
  if (!parsed?.program) return emptyResult;
761
776
  const contextLiteralBindings = collectModuleLiteralBindings(parsed.program);
@@ -896,10 +911,10 @@ function extractDependencies(code, filename, options) {
896
911
  try {
897
912
  parseResult = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
898
913
  } catch (err) {
899
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${err.message || err}`);
914
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${err.message || err}`, code, err);
900
915
  }
901
916
  if (parseResult?.errors?.length) {
902
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${parseResult.errors[0].message}`);
917
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${parseResult.errors[0].message}`, code, parseResult.errors[0]);
903
918
  }
904
919
  if (!parseResult?.program) {
905
920
  return [];
@@ -1171,7 +1186,7 @@ async function transform(config, projectRoot, filename, data, options) {
1171
1186
  });
1172
1187
  code2 = minified.code;
1173
1188
  } catch (err) {
1174
- throw new Error(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`);
1189
+ throw createTransformError(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`, code2, err);
1175
1190
  }
1176
1191
  }
1177
1192
  const { lineCount: lineCount2, map: map2 } = countLinesAndTerminateMap(code2, []);
@@ -1284,7 +1299,7 @@ async function transform(config, projectRoot, filename, data, options) {
1284
1299
  }
1285
1300
  }
1286
1301
  } catch (err) {
1287
- throw new Error(`[vxrn/metro] React Native codegen failed for ${filename}: ${err.message || err}`);
1302
+ throw createTransformError(`[vxrn/metro] React Native codegen failed for ${filename}: ${err.message || err}`, code, err);
1288
1303
  }
1289
1304
  if ((0, import_compiler.shouldStripFlow)(filename, code)) {
1290
1305
  try {
@@ -1296,7 +1311,7 @@ async function transform(config, projectRoot, filename, data, options) {
1296
1311
  }
1297
1312
  }
1298
1313
  } catch (err) {
1299
- throw new Error(`[vxrn/metro] Flow transform failed for ${filename}: ${err.message || err}`);
1314
+ throw createTransformError(`[vxrn/metro] Flow transform failed for ${filename}: ${err.message || err}`, code, err);
1300
1315
  }
1301
1316
  }
1302
1317
  const asyncRequirePath = config.asyncRequireModulePath || "metro-runtime/src/modules/asyncRequire";
@@ -1355,7 +1370,7 @@ async function transform(config, projectRoot, filename, data, options) {
1355
1370
  }
1356
1371
  }
1357
1372
  } catch (err) {
1358
- throw new Error(`[vxrn/metro] React Compiler failed for ${filename}: ${err.message || err}`);
1373
+ throw createTransformError(`[vxrn/metro] React Compiler failed for ${filename}: ${err.message || err}`, code, err);
1359
1374
  }
1360
1375
  }
1361
1376
  if (shouldRunWorklets) {
@@ -1369,7 +1384,7 @@ async function transform(config, projectRoot, filename, data, options) {
1369
1384
  }
1370
1385
  }
1371
1386
  } catch (err) {
1372
- throw new Error(`[vxrn/metro] Worklets transform failed for ${filename}: ${err.message || err}`);
1387
+ throw createTransformError(`[vxrn/metro] Worklets transform failed for ${filename}: ${err.message || err}`, code, err);
1373
1388
  }
1374
1389
  }
1375
1390
  const lang = langForFilename(filename);
@@ -1387,10 +1402,10 @@ async function transform(config, projectRoot, filename, data, options) {
1387
1402
  sourcemap: true
1388
1403
  });
1389
1404
  } catch (err) {
1390
- throw new Error(`[vxrn/metro] Oxc transform failed for ${filename}: ${err.message || err}`);
1405
+ throw createTransformError(`[vxrn/metro] Oxc transform failed for ${filename}: ${err.message || err}`, code, err);
1391
1406
  }
1392
1407
  if (oxcRes.errors?.length) {
1393
- throw new Error(`[vxrn/metro] Oxc transform failed for ${filename}: ${oxcRes.errors[0].message || oxcRes.errors[0]}`);
1408
+ throw createTransformError(`[vxrn/metro] Oxc transform failed for ${filename}: ${oxcRes.errors[0].message || oxcRes.errors[0]}`, code, oxcRes.errors[0]);
1394
1409
  }
1395
1410
  code = oxcRes.code || code;
1396
1411
  if (oxcRes.map) {
@@ -1405,7 +1420,7 @@ async function transform(config, projectRoot, filename, data, options) {
1405
1420
  }
1406
1421
  }
1407
1422
  } catch (err) {
1408
- throw new Error(`[vxrn/metro] native async/CJS lowering failed for ${filename}: ${err.message || err}`);
1423
+ throw createTransformError(`[vxrn/metro] native async/CJS lowering failed for ${filename}: ${err.message || err}`, code, err);
1409
1424
  }
1410
1425
  try {
1411
1426
  const loopsRes = (0, import_compiler.transformHermesLoops)(code, filename);
@@ -1416,7 +1431,7 @@ async function transform(config, projectRoot, filename, data, options) {
1416
1431
  }
1417
1432
  }
1418
1433
  } catch (err) {
1419
- throw new Error(`[vxrn/metro] Hermes loop-binding transform failed for ${filename}: ${err.message || err}`);
1434
+ throw createTransformError(`[vxrn/metro] Hermes loop-binding transform failed for ${filename}: ${err.message || err}`, code, err);
1420
1435
  }
1421
1436
  const finalDeps = extractDependencies(code, filename, {
1422
1437
  asyncRequireModulePath: asyncRequirePath,
@@ -1503,7 +1518,7 @@ var require = _$$_REQUIRE;
1503
1518
  intermediateMaps.length = 0;
1504
1519
  }
1505
1520
  } catch (err) {
1506
- throw new Error(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`);
1521
+ throw createTransformError(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`, code, err);
1507
1522
  }
1508
1523
  }
1509
1524
  let rawMappings = [];
@@ -95,6 +95,23 @@ function _define_property(obj, key, value) {
95
95
  } else obj[key] = value;
96
96
  return obj;
97
97
  }
98
+ function createTransformError(message, code, diagnostic) {
99
+ var _diagnostic_loc, _diagnostic_codeFrame;
100
+ var _diagnostic_errors_, _diagnostic_errors, _diagnostic_labels;
101
+ var loc = (_diagnostic_loc = diagnostic.loc) !== null && _diagnostic_loc !== void 0 ? _diagnostic_loc : (_diagnostic_errors = diagnostic.errors) === null || _diagnostic_errors === void 0 ? void 0 : (_diagnostic_errors_ = _diagnostic_errors[0]) === null || _diagnostic_errors_ === void 0 ? void 0 : _diagnostic_errors_.location;
102
+ var label = (_diagnostic_labels = diagnostic.labels) === null || _diagnostic_labels === void 0 ? void 0 : _diagnostic_labels[0];
103
+ if (!loc && label) {
104
+ var lines = code.slice(0, label.start).split(/\r\n|[\n\r\u2028\u2029]/);
105
+ loc = {
106
+ line: lines.length,
107
+ column: lines.at(-1).length
108
+ };
109
+ }
110
+ return Object.assign(new Error(message), {
111
+ loc,
112
+ codeFrame: (_diagnostic_codeFrame = diagnostic.codeFrame) !== null && _diagnostic_codeFrame !== void 0 ? _diagnostic_codeFrame : diagnostic.codeframe
113
+ });
114
+ }
98
115
  function collectModuleLiteralBindings(program) {
99
116
  var reassigned = /* @__PURE__ */ new Set();
100
117
  var declCount = /* @__PURE__ */ new Map();
@@ -501,7 +518,7 @@ function applyModuleResolverAliases(code, filename, projectRoot, aliases) {
501
518
  var _parsed_errors;
502
519
  var parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
503
520
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
504
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for alias resolution: ${parsed.errors[0].message}`);
521
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for alias resolution: ${parsed.errors[0].message}`, code, parsed.errors[0]);
505
522
  }
506
523
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return code;
507
524
  var ms = new import_magic_string.default(code);
@@ -576,7 +593,7 @@ function applyInlineEnvVars(code, filename, isProduction) {
576
593
  var _parsed_errors;
577
594
  var parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
578
595
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
579
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`);
596
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`, code, parsed.errors[0]);
580
597
  }
581
598
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return code;
582
599
  var processPublicEnv = Object.fromEntries(Object.entries(process.env).filter(function(param) {
@@ -836,7 +853,7 @@ function applyEnvironmentGuard(code, filename) {
836
853
  var _parsed_errors, _parsed_program;
837
854
  var parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
838
855
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
839
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for environment guards: ${parsed.errors[0].message}`);
856
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for environment guards: ${parsed.errors[0].message}`, code, parsed.errors[0]);
840
857
  }
841
858
  var body = parsed === null || parsed === void 0 ? void 0 : (_parsed_program = parsed.program) === null || _parsed_program === void 0 ? void 0 : _parsed_program.body;
842
859
  if (!body) return code;
@@ -880,7 +897,7 @@ function applyOneRouterMetro(code, filename, options) {
880
897
  if (!isMetroEntry && !isEntryCtx) return code;
881
898
  var parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
882
899
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
883
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for one-router-metro: ${parsed.errors[0].message}`);
900
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for one-router-metro: ${parsed.errors[0].message}`, code, parsed.errors[0]);
884
901
  }
885
902
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return code;
886
903
  var ms = new import_magic_string.default(code);
@@ -1397,10 +1414,10 @@ function rewriteDependencyCalls(code, dependencies) {
1397
1414
  try {
1398
1415
  parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
1399
1416
  } catch (err) {
1400
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${err.message || err}`);
1417
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${err.message || err}`, code, err);
1401
1418
  }
1402
1419
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
1403
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${parsed.errors[0].message}`);
1420
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${parsed.errors[0].message}`, code, parsed.errors[0]);
1404
1421
  }
1405
1422
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return emptyResult;
1406
1423
  var contextLiteralBindings = collectModuleLiteralBindings(parsed.program);
@@ -1667,10 +1684,10 @@ function extractDependencies(code, filename, options) {
1667
1684
  try {
1668
1685
  parseResult = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
1669
1686
  } catch (err) {
1670
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${err.message || err}`);
1687
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${err.message || err}`, code, err);
1671
1688
  }
1672
1689
  if (parseResult === null || parseResult === void 0 ? void 0 : (_parseResult_errors = parseResult.errors) === null || _parseResult_errors === void 0 ? void 0 : _parseResult_errors.length) {
1673
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${parseResult.errors[0].message}`);
1690
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${parseResult.errors[0].message}`, code, parseResult.errors[0]);
1674
1691
  }
1675
1692
  if (!(parseResult === null || parseResult === void 0 ? void 0 : parseResult.program)) {
1676
1693
  return [];
@@ -2074,7 +2091,7 @@ async function transform(config, projectRoot, filename, data, options) {
2074
2091
  });
2075
2092
  code = minified.code;
2076
2093
  } catch (err) {
2077
- throw new Error(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`);
2094
+ throw createTransformError(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`, code, err);
2078
2095
  }
2079
2096
  }
2080
2097
  var { lineCount, map } = countLinesAndTerminateMap(code, []);
@@ -2204,7 +2221,7 @@ async function transform(config, projectRoot, filename, data, options) {
2204
2221
  }
2205
2222
  }
2206
2223
  } catch (err) {
2207
- throw new Error(`[vxrn/metro] React Native codegen failed for ${filename}: ${err.message || err}`);
2224
+ throw createTransformError(`[vxrn/metro] React Native codegen failed for ${filename}: ${err.message || err}`, code2, err);
2208
2225
  }
2209
2226
  if ((0, import_compiler.shouldStripFlow)(filename, code2)) {
2210
2227
  try {
@@ -2216,7 +2233,7 @@ async function transform(config, projectRoot, filename, data, options) {
2216
2233
  }
2217
2234
  }
2218
2235
  } catch (err) {
2219
- throw new Error(`[vxrn/metro] Flow transform failed for ${filename}: ${err.message || err}`);
2236
+ throw createTransformError(`[vxrn/metro] Flow transform failed for ${filename}: ${err.message || err}`, code2, err);
2220
2237
  }
2221
2238
  }
2222
2239
  var asyncRequirePath = config.asyncRequireModulePath || "metro-runtime/src/modules/asyncRequire";
@@ -2277,7 +2294,7 @@ async function transform(config, projectRoot, filename, data, options) {
2277
2294
  }
2278
2295
  }
2279
2296
  } catch (err) {
2280
- throw new Error(`[vxrn/metro] React Compiler failed for ${filename}: ${err.message || err}`);
2297
+ throw createTransformError(`[vxrn/metro] React Compiler failed for ${filename}: ${err.message || err}`, code2, err);
2281
2298
  }
2282
2299
  }
2283
2300
  if (shouldRunWorklets) {
@@ -2291,7 +2308,7 @@ async function transform(config, projectRoot, filename, data, options) {
2291
2308
  }
2292
2309
  }
2293
2310
  } catch (err) {
2294
- throw new Error(`[vxrn/metro] Worklets transform failed for ${filename}: ${err.message || err}`);
2311
+ throw createTransformError(`[vxrn/metro] Worklets transform failed for ${filename}: ${err.message || err}`, code2, err);
2295
2312
  }
2296
2313
  }
2297
2314
  var lang = langForFilename(filename);
@@ -2309,10 +2326,10 @@ async function transform(config, projectRoot, filename, data, options) {
2309
2326
  sourcemap: true
2310
2327
  });
2311
2328
  } catch (err) {
2312
- throw new Error(`[vxrn/metro] Oxc transform failed for ${filename}: ${err.message || err}`);
2329
+ throw createTransformError(`[vxrn/metro] Oxc transform failed for ${filename}: ${err.message || err}`, code2, err);
2313
2330
  }
2314
2331
  if ((_oxcRes_errors = oxcRes.errors) === null || _oxcRes_errors === void 0 ? void 0 : _oxcRes_errors.length) {
2315
- throw new Error(`[vxrn/metro] Oxc transform failed for ${filename}: ${oxcRes.errors[0].message || oxcRes.errors[0]}`);
2332
+ throw createTransformError(`[vxrn/metro] Oxc transform failed for ${filename}: ${oxcRes.errors[0].message || oxcRes.errors[0]}`, code2, oxcRes.errors[0]);
2316
2333
  }
2317
2334
  code2 = oxcRes.code || code2;
2318
2335
  if (oxcRes.map) {
@@ -2327,7 +2344,7 @@ async function transform(config, projectRoot, filename, data, options) {
2327
2344
  }
2328
2345
  }
2329
2346
  } catch (err) {
2330
- throw new Error(`[vxrn/metro] native async/CJS lowering failed for ${filename}: ${err.message || err}`);
2347
+ throw createTransformError(`[vxrn/metro] native async/CJS lowering failed for ${filename}: ${err.message || err}`, code2, err);
2331
2348
  }
2332
2349
  try {
2333
2350
  var loopsRes = (0, import_compiler.transformHermesLoops)(code2, filename);
@@ -2355,7 +2372,7 @@ async function transform(config, projectRoot, filename, data, options) {
2355
2372
  }
2356
2373
  }
2357
2374
  } catch (err) {
2358
- throw new Error(`[vxrn/metro] Hermes loop-binding transform failed for ${filename}: ${err.message || err}`);
2375
+ throw createTransformError(`[vxrn/metro] Hermes loop-binding transform failed for ${filename}: ${err.message || err}`, code2, err);
2359
2376
  }
2360
2377
  var finalDeps = extractDependencies(code2, filename, {
2361
2378
  asyncRequireModulePath: asyncRequirePath,
@@ -2483,7 +2500,7 @@ var require = _$$_REQUIRE;
2483
2500
  intermediateMaps.length = 0;
2484
2501
  }
2485
2502
  } catch (err) {
2486
- throw new Error(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`);
2503
+ throw createTransformError(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`, code2, err);
2487
2504
  }
2488
2505
  }
2489
2506
  var rawMappings = [];
@@ -95,6 +95,23 @@ function _define_property(obj, key, value) {
95
95
  } else obj[key] = value;
96
96
  return obj;
97
97
  }
98
+ function createTransformError(message, code, diagnostic) {
99
+ var _diagnostic_loc, _diagnostic_codeFrame;
100
+ var _diagnostic_errors_, _diagnostic_errors, _diagnostic_labels;
101
+ var loc = (_diagnostic_loc = diagnostic.loc) !== null && _diagnostic_loc !== void 0 ? _diagnostic_loc : (_diagnostic_errors = diagnostic.errors) === null || _diagnostic_errors === void 0 ? void 0 : (_diagnostic_errors_ = _diagnostic_errors[0]) === null || _diagnostic_errors_ === void 0 ? void 0 : _diagnostic_errors_.location;
102
+ var label = (_diagnostic_labels = diagnostic.labels) === null || _diagnostic_labels === void 0 ? void 0 : _diagnostic_labels[0];
103
+ if (!loc && label) {
104
+ var lines = code.slice(0, label.start).split(/\r\n|[\n\r\u2028\u2029]/);
105
+ loc = {
106
+ line: lines.length,
107
+ column: lines.at(-1).length
108
+ };
109
+ }
110
+ return Object.assign(new Error(message), {
111
+ loc,
112
+ codeFrame: (_diagnostic_codeFrame = diagnostic.codeFrame) !== null && _diagnostic_codeFrame !== void 0 ? _diagnostic_codeFrame : diagnostic.codeframe
113
+ });
114
+ }
98
115
  function collectModuleLiteralBindings(program) {
99
116
  var reassigned = /* @__PURE__ */ new Set();
100
117
  var declCount = /* @__PURE__ */ new Map();
@@ -501,7 +518,7 @@ function applyModuleResolverAliases(code, filename, projectRoot, aliases) {
501
518
  var _parsed_errors;
502
519
  var parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
503
520
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
504
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for alias resolution: ${parsed.errors[0].message}`);
521
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for alias resolution: ${parsed.errors[0].message}`, code, parsed.errors[0]);
505
522
  }
506
523
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return code;
507
524
  var ms = new import_magic_string.default(code);
@@ -576,7 +593,7 @@ function applyInlineEnvVars(code, filename, isProduction) {
576
593
  var _parsed_errors;
577
594
  var parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
578
595
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
579
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`);
596
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for env inlining: ${parsed.errors[0].message}`, code, parsed.errors[0]);
580
597
  }
581
598
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return code;
582
599
  var processPublicEnv = Object.fromEntries(Object.entries(process.env).filter(function(param) {
@@ -836,7 +853,7 @@ function applyEnvironmentGuard(code, filename) {
836
853
  var _parsed_errors, _parsed_program;
837
854
  var parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
838
855
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
839
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for environment guards: ${parsed.errors[0].message}`);
856
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for environment guards: ${parsed.errors[0].message}`, code, parsed.errors[0]);
840
857
  }
841
858
  var body = parsed === null || parsed === void 0 ? void 0 : (_parsed_program = parsed.program) === null || _parsed_program === void 0 ? void 0 : _parsed_program.body;
842
859
  if (!body) return code;
@@ -880,7 +897,7 @@ function applyOneRouterMetro(code, filename, options) {
880
897
  if (!isMetroEntry && !isEntryCtx) return code;
881
898
  var parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
882
899
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
883
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for one-router-metro: ${parsed.errors[0].message}`);
900
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for one-router-metro: ${parsed.errors[0].message}`, code, parsed.errors[0]);
884
901
  }
885
902
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return code;
886
903
  var ms = new import_magic_string.default(code);
@@ -1397,10 +1414,10 @@ function rewriteDependencyCalls(code, dependencies) {
1397
1414
  try {
1398
1415
  parsed = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
1399
1416
  } catch (err) {
1400
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${err.message || err}`);
1417
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${err.message || err}`, code, err);
1401
1418
  }
1402
1419
  if (parsed === null || parsed === void 0 ? void 0 : (_parsed_errors = parsed.errors) === null || _parsed_errors === void 0 ? void 0 : _parsed_errors.length) {
1403
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${parsed.errors[0].message}`);
1420
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency rewriting: ${parsed.errors[0].message}`, code, parsed.errors[0]);
1404
1421
  }
1405
1422
  if (!(parsed === null || parsed === void 0 ? void 0 : parsed.program)) return emptyResult;
1406
1423
  var contextLiteralBindings = collectModuleLiteralBindings(parsed.program);
@@ -1667,10 +1684,10 @@ function extractDependencies(code, filename, options) {
1667
1684
  try {
1668
1685
  parseResult = (0, import_oxc_parser.parseSync)(filename, code, { lang: langForFilename(filename) });
1669
1686
  } catch (err) {
1670
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${err.message || err}`);
1687
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${err.message || err}`, code, err);
1671
1688
  }
1672
1689
  if (parseResult === null || parseResult === void 0 ? void 0 : (_parseResult_errors = parseResult.errors) === null || _parseResult_errors === void 0 ? void 0 : _parseResult_errors.length) {
1673
- throw new Error(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${parseResult.errors[0].message}`);
1690
+ throw createTransformError(`[vxrn/metro] Failed to parse ${filename} for dependency extraction: ${parseResult.errors[0].message}`, code, parseResult.errors[0]);
1674
1691
  }
1675
1692
  if (!(parseResult === null || parseResult === void 0 ? void 0 : parseResult.program)) {
1676
1693
  return [];
@@ -2074,7 +2091,7 @@ async function transform(config, projectRoot, filename, data, options) {
2074
2091
  });
2075
2092
  code = minified.code;
2076
2093
  } catch (err) {
2077
- throw new Error(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`);
2094
+ throw createTransformError(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`, code, err);
2078
2095
  }
2079
2096
  }
2080
2097
  var { lineCount, map } = countLinesAndTerminateMap(code, []);
@@ -2204,7 +2221,7 @@ async function transform(config, projectRoot, filename, data, options) {
2204
2221
  }
2205
2222
  }
2206
2223
  } catch (err) {
2207
- throw new Error(`[vxrn/metro] React Native codegen failed for ${filename}: ${err.message || err}`);
2224
+ throw createTransformError(`[vxrn/metro] React Native codegen failed for ${filename}: ${err.message || err}`, code2, err);
2208
2225
  }
2209
2226
  if ((0, import_compiler.shouldStripFlow)(filename, code2)) {
2210
2227
  try {
@@ -2216,7 +2233,7 @@ async function transform(config, projectRoot, filename, data, options) {
2216
2233
  }
2217
2234
  }
2218
2235
  } catch (err) {
2219
- throw new Error(`[vxrn/metro] Flow transform failed for ${filename}: ${err.message || err}`);
2236
+ throw createTransformError(`[vxrn/metro] Flow transform failed for ${filename}: ${err.message || err}`, code2, err);
2220
2237
  }
2221
2238
  }
2222
2239
  var asyncRequirePath = config.asyncRequireModulePath || "metro-runtime/src/modules/asyncRequire";
@@ -2277,7 +2294,7 @@ async function transform(config, projectRoot, filename, data, options) {
2277
2294
  }
2278
2295
  }
2279
2296
  } catch (err) {
2280
- throw new Error(`[vxrn/metro] React Compiler failed for ${filename}: ${err.message || err}`);
2297
+ throw createTransformError(`[vxrn/metro] React Compiler failed for ${filename}: ${err.message || err}`, code2, err);
2281
2298
  }
2282
2299
  }
2283
2300
  if (shouldRunWorklets) {
@@ -2291,7 +2308,7 @@ async function transform(config, projectRoot, filename, data, options) {
2291
2308
  }
2292
2309
  }
2293
2310
  } catch (err) {
2294
- throw new Error(`[vxrn/metro] Worklets transform failed for ${filename}: ${err.message || err}`);
2311
+ throw createTransformError(`[vxrn/metro] Worklets transform failed for ${filename}: ${err.message || err}`, code2, err);
2295
2312
  }
2296
2313
  }
2297
2314
  var lang = langForFilename(filename);
@@ -2309,10 +2326,10 @@ async function transform(config, projectRoot, filename, data, options) {
2309
2326
  sourcemap: true
2310
2327
  });
2311
2328
  } catch (err) {
2312
- throw new Error(`[vxrn/metro] Oxc transform failed for ${filename}: ${err.message || err}`);
2329
+ throw createTransformError(`[vxrn/metro] Oxc transform failed for ${filename}: ${err.message || err}`, code2, err);
2313
2330
  }
2314
2331
  if ((_oxcRes_errors = oxcRes.errors) === null || _oxcRes_errors === void 0 ? void 0 : _oxcRes_errors.length) {
2315
- throw new Error(`[vxrn/metro] Oxc transform failed for ${filename}: ${oxcRes.errors[0].message || oxcRes.errors[0]}`);
2332
+ throw createTransformError(`[vxrn/metro] Oxc transform failed for ${filename}: ${oxcRes.errors[0].message || oxcRes.errors[0]}`, code2, oxcRes.errors[0]);
2316
2333
  }
2317
2334
  code2 = oxcRes.code || code2;
2318
2335
  if (oxcRes.map) {
@@ -2327,7 +2344,7 @@ async function transform(config, projectRoot, filename, data, options) {
2327
2344
  }
2328
2345
  }
2329
2346
  } catch (err) {
2330
- throw new Error(`[vxrn/metro] native async/CJS lowering failed for ${filename}: ${err.message || err}`);
2347
+ throw createTransformError(`[vxrn/metro] native async/CJS lowering failed for ${filename}: ${err.message || err}`, code2, err);
2331
2348
  }
2332
2349
  try {
2333
2350
  var loopsRes = (0, import_compiler.transformHermesLoops)(code2, filename);
@@ -2355,7 +2372,7 @@ async function transform(config, projectRoot, filename, data, options) {
2355
2372
  }
2356
2373
  }
2357
2374
  } catch (err) {
2358
- throw new Error(`[vxrn/metro] Hermes loop-binding transform failed for ${filename}: ${err.message || err}`);
2375
+ throw createTransformError(`[vxrn/metro] Hermes loop-binding transform failed for ${filename}: ${err.message || err}`, code2, err);
2359
2376
  }
2360
2377
  var finalDeps = extractDependencies(code2, filename, {
2361
2378
  asyncRequireModulePath: asyncRequirePath,
@@ -2483,7 +2500,7 @@ var require = _$$_REQUIRE;
2483
2500
  intermediateMaps.length = 0;
2484
2501
  }
2485
2502
  } catch (err) {
2486
- throw new Error(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`);
2503
+ throw createTransformError(`[vxrn/metro] Minifier failed for ${filename}: ${err.message || err}`, code2, err);
2487
2504
  }
2488
2505
  }
2489
2506
  var rawMappings = [];