vxrn 1.25.16 → 1.26.0

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 (72) hide show
  1. package/dist/index.js +2 -0
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.mjs +2 -0
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/index.native.js +2 -0
  6. package/dist/index.native.js.map +1 -1
  7. package/dist/patches/builtInDepPatches.mjs +21 -0
  8. package/dist/patches/builtInDepPatches.mjs.map +1 -1
  9. package/dist/patches/builtInDepPatches.native.js +21 -0
  10. package/dist/patches/builtInDepPatches.native.js.map +1 -1
  11. package/dist/plugins/reactNativeDevServer.mjs +5 -0
  12. package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
  13. package/dist/plugins/reactNativeDevServer.native.js +5 -0
  14. package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
  15. package/dist/plugins/rnCodegenPlugin.mjs +16 -0
  16. package/dist/plugins/rnCodegenPlugin.mjs.map +1 -0
  17. package/dist/plugins/rnCodegenPlugin.native.js +16 -0
  18. package/dist/plugins/rnCodegenPlugin.native.js.map +1 -0
  19. package/dist/plugins/rnCodegenPlugin.test.mjs +239 -0
  20. package/dist/plugins/rnCodegenPlugin.test.mjs.map +1 -0
  21. package/dist/plugins/rnCodegenPlugin.test.native.js +242 -0
  22. package/dist/plugins/rnCodegenPlugin.test.native.js.map +1 -0
  23. package/dist/plugins/workletImportsPlugin.mjs +160 -0
  24. package/dist/plugins/workletImportsPlugin.mjs.map +1 -0
  25. package/dist/plugins/workletImportsPlugin.native.js +230 -0
  26. package/dist/plugins/workletImportsPlugin.native.js.map +1 -0
  27. package/dist/utils/createNativeDevEngine.mjs +198 -92
  28. package/dist/utils/createNativeDevEngine.mjs.map +1 -1
  29. package/dist/utils/createNativeDevEngine.native.js +252 -99
  30. package/dist/utils/createNativeDevEngine.native.js.map +1 -1
  31. package/dist/utils/createNativeDevEngine.test.mjs +775 -4
  32. package/dist/utils/createNativeDevEngine.test.mjs.map +1 -1
  33. package/dist/utils/createNativeDevEngine.test.native.js +836 -4
  34. package/dist/utils/createNativeDevEngine.test.native.js.map +1 -1
  35. package/dist/utils/patches.mjs +12 -5
  36. package/dist/utils/patches.mjs.map +1 -1
  37. package/dist/utils/patches.native.js +13 -5
  38. package/dist/utils/patches.native.js.map +1 -1
  39. package/dist/utils/patches.test.mjs +28 -0
  40. package/dist/utils/patches.test.mjs.map +1 -1
  41. package/dist/utils/patches.test.native.js +47 -0
  42. package/dist/utils/patches.test.native.js.map +1 -1
  43. package/dist/utils/scanDepsToOptimize.mjs +5 -1
  44. package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
  45. package/dist/utils/scanDepsToOptimize.native.js +5 -1
  46. package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
  47. package/package.json +19 -12
  48. package/src/index.ts +2 -0
  49. package/src/patches/builtInDepPatches.ts +25 -0
  50. package/src/plugins/reactNativeDevServer.ts +12 -0
  51. package/src/plugins/rnCodegenPlugin.test.ts +313 -0
  52. package/src/plugins/rnCodegenPlugin.ts +20 -0
  53. package/src/plugins/workletImportsPlugin.ts +226 -0
  54. package/src/utils/createNativeDevEngine.test.ts +877 -3
  55. package/src/utils/createNativeDevEngine.ts +259 -107
  56. package/src/utils/patches.test.ts +33 -0
  57. package/src/utils/patches.ts +17 -6
  58. package/src/utils/scanDepsToOptimize.ts +9 -0
  59. package/types/index.d.ts +2 -0
  60. package/types/index.d.ts.map +1 -1
  61. package/types/patches/builtInDepPatches.d.ts.map +1 -1
  62. package/types/plugins/reactNativeDevServer.d.ts.map +1 -1
  63. package/types/plugins/rnCodegenPlugin.d.ts +6 -0
  64. package/types/plugins/rnCodegenPlugin.d.ts.map +1 -0
  65. package/types/plugins/rnCodegenPlugin.test.d.ts +2 -0
  66. package/types/plugins/rnCodegenPlugin.test.d.ts.map +1 -0
  67. package/types/plugins/workletImportsPlugin.d.ts +8 -0
  68. package/types/plugins/workletImportsPlugin.d.ts.map +1 -0
  69. package/types/utils/createNativeDevEngine.d.ts +13 -0
  70. package/types/utils/createNativeDevEngine.d.ts.map +1 -1
  71. package/types/utils/patches.d.ts.map +1 -1
  72. package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createHash","isBuiltin","dirname","isAbsolute","join","statSync","rolldown","parseSync","getClosureVariables","JS_GLOBALS","transformHermesLoops","hermesCompatSWCPlugin","hermesLoopsPlugin","workletImportsPlugin","imports","selections","Map","Object","entries","map","source","names","Set","rejectRuntimeDependency","normalized","replace","test","Error","name","options","nativeOptions","modules","instance","resolveId","importer","get","length","kind","resolved","resolve","skipSelf","external","id","throwIfNoEntry","isFile","key","update","JSON","stringify","digest","slice","set","entry","moduleParsed","info","code","keys","some","includes","program","errors","lang","endsWith","message","node","body","type","value","specifier","specifiers","imported","local","load","selected","outerContext","innerEntry","bundle","cwd","input","platform","transform","shimMissingExports","plugins","_importer","index","addWatchFile","packageJsonPath","output","generate","format","chunk","dynamicImports","file","watchFiles","close","loader","loaderCode","parsed","captures"],"sources":["../../src/plugins/workletImportsPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,230 @@
1
+ import { createHash } from "crypto";
2
+ import { isBuiltin } from "module";
3
+ import { dirname, isAbsolute, join } from "path";
4
+ import { statSync } from "fs";
5
+ import { rolldown } from "rolldown";
6
+ import { parseSync } from "oxc-parser";
7
+ import { getClosureVariables, JS_GLOBALS, transformHermesLoops } from "@vxrn/compiler";
8
+ import { hermesCompatSWCPlugin, hermesLoopsPlugin } from "../utils/createNativeDevEngine.native.js";
9
+ function workletImportsPlugin(imports) {
10
+ var selections = new Map(Object.entries(imports).map(function (param) {
11
+ var [source, names] = param;
12
+ return [source, [...new Set(names)]];
13
+ }));
14
+ var rejectRuntimeDependency = function (source) {
15
+ var normalized = source.replace(/\\/g, "/");
16
+ if (isBuiltin(source) || /(?:^|\/node_modules\/)(?:react|react-native|react-native-worklets|react-native-reanimated|expo-modules-core)(?:\/|$)/.test(normalized) || /(?:^|\/node_modules\/)@react-native\//.test(normalized)) {
17
+ throw new Error(`[worklet imports] runtime dependency ${source} is not pure JavaScript`);
18
+ }
19
+ };
20
+ return {
21
+ name: "vxrn:worklet-imports",
22
+ options(nativeOptions) {
23
+ var modules = /* @__PURE__ */new Map();
24
+ var instance = {
25
+ name: "vxrn:worklet-imports:bundle",
26
+ async resolveId(source, importer, options) {
27
+ var _statSync;
28
+ var names = selections.get(source);
29
+ if (!names) return;
30
+ if (!names.length) throw new Error(`[worklet imports] no exports selected for ${source}`);
31
+ if (options.kind !== "import-statement") {
32
+ throw new Error(`[worklet imports] ${source} requires a static ESM import`);
33
+ }
34
+ rejectRuntimeDependency(source);
35
+ var resolved = await this.resolve(source, importer, {
36
+ skipSelf: true
37
+ });
38
+ if (!resolved || resolved.external || !isAbsolute(resolved.id) || !((_statSync = statSync(resolved.id, {
39
+ throwIfNoEntry: false
40
+ })) === null || _statSync === void 0 ? void 0 : _statSync.isFile())) {
41
+ throw new Error(`[worklet imports] ${source} must resolve to a JavaScript file`);
42
+ }
43
+ rejectRuntimeDependency(resolved.id);
44
+ var key = createHash("sha256").update(JSON.stringify([resolved.id, names])).digest("hex").slice(0, 16);
45
+ var id = join(dirname(resolved.id), `__one_worklet_imports_${key}.js`);
46
+ modules.set(id, {
47
+ entry: resolved.id,
48
+ names,
49
+ key
50
+ });
51
+ return id;
52
+ },
53
+ moduleParsed(info) {
54
+ if (!info.code || ![...selections.keys()].some(function (source2) {
55
+ return info.code.includes(source2);
56
+ })) return;
57
+ var {
58
+ program,
59
+ errors
60
+ } = parseSync(info.id, info.code, {
61
+ lang: /\.[cm]?ts$/.test(info.id) ? "ts" : info.id.endsWith(".tsx") ? "tsx" : "jsx"
62
+ });
63
+ if (errors.length) throw new Error(errors[0].message);
64
+ var _iteratorNormalCompletion = true,
65
+ _didIteratorError = false,
66
+ _iteratorError = void 0;
67
+ try {
68
+ for (var _iterator = program.body[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
69
+ var node = _step.value;
70
+ var _node_source;
71
+ if (node.type !== "ImportDeclaration" && node.type !== "ExportNamedDeclaration") continue;
72
+ var source = (_node_source = node.source) === null || _node_source === void 0 ? void 0 : _node_source.value;
73
+ if (!source) continue;
74
+ var names = selections.get(source);
75
+ if (!names) continue;
76
+ var _iteratorNormalCompletion1 = true,
77
+ _didIteratorError1 = false,
78
+ _iteratorError1 = void 0;
79
+ try {
80
+ for (var _iterator1 = node.specifiers[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
81
+ var specifier = _step1.value;
82
+ var imported = specifier.type === "ImportDefaultSpecifier" ? "default" : specifier.type === "ImportSpecifier" ? specifier.imported.type === "Identifier" ? specifier.imported.name : specifier.imported.value : specifier.type === "ExportSpecifier" ? specifier.local.type === "Identifier" ? specifier.local.name : specifier.local.value : void 0;
83
+ if (imported !== void 0 && !names.includes(imported)) {
84
+ throw new Error(`[worklet imports] ${info.id} imports unselected export ${imported} from ${source}`);
85
+ }
86
+ }
87
+ } catch (err) {
88
+ _didIteratorError1 = true;
89
+ _iteratorError1 = err;
90
+ } finally {
91
+ try {
92
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
93
+ _iterator1.return();
94
+ }
95
+ } finally {
96
+ if (_didIteratorError1) {
97
+ throw _iteratorError1;
98
+ }
99
+ }
100
+ }
101
+ }
102
+ } catch (err) {
103
+ _didIteratorError = true;
104
+ _iteratorError = err;
105
+ } finally {
106
+ try {
107
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
108
+ _iterator.return();
109
+ }
110
+ } finally {
111
+ if (_didIteratorError) {
112
+ throw _iteratorError;
113
+ }
114
+ }
115
+ }
116
+ },
117
+ async load(id) {
118
+ var selected = modules.get(id);
119
+ if (!selected) return;
120
+ var outerContext = this;
121
+ var innerEntry = "\0one-worklet-import-entry";
122
+ var bundle = await rolldown({
123
+ cwd: nativeOptions.cwd,
124
+ input: innerEntry,
125
+ platform: "neutral",
126
+ resolve: nativeOptions.resolve,
127
+ transform: nativeOptions.transform,
128
+ shimMissingExports: false,
129
+ plugins: [{
130
+ name: "vxrn:pure-worklet-module",
131
+ resolveId(source, _importer, options) {
132
+ if (source === innerEntry) return source;
133
+ if (options.kind === "dynamic-import") {
134
+ throw new Error(`[worklet imports] dynamic imports are unsupported in ${selected.entry}`);
135
+ }
136
+ rejectRuntimeDependency(source);
137
+ },
138
+ load(source) {
139
+ if (source === innerEntry) {
140
+ return `export { ${selected.names.map(function (name, index) {
141
+ return `${JSON.stringify(name)} as __export${index}`;
142
+ }).join(", ")} } from ${JSON.stringify(selected.entry)};`;
143
+ }
144
+ },
145
+ moduleParsed(info) {
146
+ rejectRuntimeDependency(info.id);
147
+ if (isAbsolute(info.id)) outerContext.addWatchFile(info.id);
148
+ if (info.packageJsonPath) outerContext.addWatchFile(info.packageJsonPath);
149
+ }
150
+ }, hermesCompatSWCPlugin(false), hermesLoopsPlugin()]
151
+ });
152
+ var code;
153
+ try {
154
+ var _ref;
155
+ var _transformHermesLoops;
156
+ var output = await bundle.generate({
157
+ format: "iife",
158
+ name: "__oneWorkletBundle"
159
+ });
160
+ var chunk = output.output[0];
161
+ if (output.output.length !== 1 || chunk.type !== "chunk" || chunk.imports.length || chunk.dynamicImports.length) {
162
+ throw new Error(`[worklet imports] ${selected.entry} must produce one self-contained JavaScript module`);
163
+ }
164
+ code = (_ref = (_transformHermesLoops = transformHermesLoops(chunk.code, id)) === null || _transformHermesLoops === void 0 ? void 0 : _transformHermesLoops.code) !== null && _ref !== void 0 ? _ref : chunk.code;
165
+ var _iteratorNormalCompletion = true,
166
+ _didIteratorError = false,
167
+ _iteratorError = void 0;
168
+ try {
169
+ for (var _iterator = (await bundle.watchFiles)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
170
+ var file = _step.value;
171
+ if (isAbsolute(file)) outerContext.addWatchFile(file);
172
+ }
173
+ } catch (err) {
174
+ _didIteratorError = true;
175
+ _iteratorError = err;
176
+ } finally {
177
+ try {
178
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
179
+ _iterator.return();
180
+ }
181
+ } finally {
182
+ if (_didIteratorError) {
183
+ throw _iteratorError;
184
+ }
185
+ }
186
+ }
187
+ } finally {
188
+ await bundle.close();
189
+ }
190
+ var loader = `__oneLoadWorkletModule_${selected.key}`;
191
+ var loaderCode = `function ${loader}() {
192
+ 'worklet';
193
+ const cache = globalThis.__oneWorkletImportCache || (globalThis.__oneWorkletImportCache = new WeakMap());
194
+ let namespace = cache.get(${loader});
195
+ if (namespace === undefined) {
196
+ ${code}
197
+ namespace = __oneWorkletBundle;
198
+ cache.set(${loader}, namespace);
199
+ }
200
+ return namespace;
201
+ }`;
202
+ var parsed = parseSync(id, loaderCode, {
203
+ lang: "js"
204
+ });
205
+ if (parsed.errors.length) throw new Error(parsed.errors[0].message);
206
+ var captures = getClosureVariables(parsed.program.body[0], /* @__PURE__ */new Set([...JS_GLOBALS, "arguments"]));
207
+ if (captures.length) {
208
+ throw new Error(`[worklet imports] ${selected.entry} requires unsupported runtime globals: ${captures.join(", ")}`);
209
+ }
210
+ return `${loaderCode}
211
+ ${selected.names.map(function (name, index) {
212
+ return `
213
+ function __oneExport${index}(...args) {
214
+ 'worklet';
215
+ return (0, ${loader}().__export${index})(...args);
216
+ }
217
+ export { __oneExport${index} as ${JSON.stringify(name)} };
218
+ `;
219
+ }).join("\n")}`;
220
+ }
221
+ };
222
+ return {
223
+ ...nativeOptions,
224
+ plugins: [instance, nativeOptions.plugins]
225
+ };
226
+ }
227
+ };
228
+ }
229
+ export { workletImportsPlugin };
230
+ //# sourceMappingURL=workletImportsPlugin.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createHash","isBuiltin","dirname","isAbsolute","join","statSync","rolldown","parseSync","getClosureVariables","JS_GLOBALS","transformHermesLoops","hermesCompatSWCPlugin","hermesLoopsPlugin","workletImportsPlugin","imports","selections","Map","Object","entries","map","param","source","names","Set","rejectRuntimeDependency","normalized","replace","test","Error","name","options","nativeOptions","modules","instance","resolveId","importer","_statSync","get","length","kind","resolved","resolve","skipSelf","external","id","throwIfNoEntry","isFile","key","update","JSON","stringify","digest","slice","set","entry","moduleParsed","info","code","keys","some","source2","includes","program","errors","lang","endsWith","message","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","body","Symbol","iterator","_step","next","done","node","value","_node_source","type","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","specifiers","_step1","specifier","imported","local","err","return","load","selected","outerContext","innerEntry","bundle","cwd","input","platform","transform","shimMissingExports","plugins","_importer","index","addWatchFile","packageJsonPath","_ref","_transformHermesLoops","output","generate","format","chunk","dynamicImports","watchFiles"],"sources":["../../src/plugins/workletImportsPlugin.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,9 +3,10 @@ import { basename, dirname, extname, join, relative, resolve } from "node:path";
3
3
  import { copyFileSync, mkdirSync, readFileSync, readdirSync, realpathSync } from "node:fs";
4
4
  import { pathToFileURL } from "node:url";
5
5
  import { loadEnv, normalizePath } from "vite";
6
+ import { shouldStripFlow, transformHermesAsync } from "@vxrn/compiler";
6
7
  import { DEFAULT_ASSET_EXTS } from "../constants/defaults.mjs";
7
8
  import { getNativePrelude } from "../runtime/native-prelude.mjs";
8
- const FLOW_FILE_PATTERN = /node_modules[\\/](?:react-native|@react-native)[\\/].*\.js$/;
9
+ import { rnCodegenPlugin } from "../plugins/rnCodegenPlugin.mjs";
9
10
  const HERMES_CLASS_TRANSFORMS = ["transform-classes", "transform-parameters", "transform-block-scoping", "transform-class-properties", "transform-class-static-block", "transform-private-methods", "transform-private-property-in-object"];
10
11
  const HERMES_ASYNC_TRANSFORMS = ["transform-async-to-generator"];
11
12
  function getHermesSWCIncludes(dev) {
@@ -55,6 +56,8 @@ function getNativeTransformConfig(platform, dev, root) {
55
56
  })
56
57
  };
57
58
  })();
59
+ const userDefines = {};
60
+ for (const [key, value] of Object.entries(globalThis.__vxrnNativeUserDefine || {})) userDefines[key] = typeof value === "string" ? value : JSON.stringify(value);
58
61
  const mode = dev ? "development" : "production";
59
62
  const publicEnv = loadEnv(mode, root, ["VITE_", "EXPO_PUBLIC_"]);
60
63
  const envDefines = {};
@@ -79,6 +82,7 @@ function getNativeTransformConfig(platform, dev, root) {
79
82
  runtime: "classic"
80
83
  },
81
84
  define: {
85
+ ...userDefines,
82
86
  ...envDefines,
83
87
  "process.env.NODE_ENV": JSON.stringify(mode),
84
88
  "process.env.VXRN_REACT_19": "false",
@@ -108,12 +112,14 @@ function getNativeTransformConfig(platform, dev, root) {
108
112
  function getNativePlugins(root, platform, viteImportGlobPlugin, dev, assetsDest, onAsset, sourceMaps = false) {
109
113
  return [...(globalThis.__vxrnAddNativePlugins || []), serverFileExclusionPlugin(), environmentGuardPlugin(), hmrClientNoopPlugin(), cssStubPlugin(), viteImportGlobPlugin({
110
114
  root
111
- }), vxrnCompilerPlugin(platform, dev, root, sourceMaps), flowStripPlugin(), nativeAnimatedGuardPlugin(), assetPlugin({
115
+ }), vxrnCompilerPlugin(platform, dev, root, sourceMaps), rnCodegenPlugin({
116
+ projectRoot: root
117
+ }), flowStripPlugin(), nativeAnimatedGuardPlugin(), assetPlugin({
112
118
  root,
113
119
  platform,
114
120
  assetsDest,
115
121
  onAsset
116
- }), hermesCompatSWCPlugin(dev, sourceMaps)];
122
+ }), hermesCompatSWCPlugin(dev, sourceMaps), hermesLoopsPlugin(sourceMaps)];
117
123
  }
118
124
  function getNativeOutputOptions(prelude, sourcemap) {
119
125
  return {
@@ -125,7 +131,7 @@ function getNativeOutputOptions(prelude, sourcemap) {
125
131
  };
126
132
  }
127
133
  function normalizeNativeCommonJSInterop(code) {
128
- return code.replace(/(\b__toESM(?:\$\d+)?\(\s*require[\w$]*\(\)\s*),\s*1(\s*\))/g, "$1$2");
134
+ return code.replace(/(\b__toESM(?:\$\d+)?\(\s*(?:require[\w$]*\(\)|__rolldown_runtime__\.loadExports\("(?:\\.|[^"\\])*"\))\s*),\s*1(\s*\))/g, "$1$2");
129
135
  }
130
136
  function postProcessNativeBundle(code) {
131
137
  code = normalizeNativeCommonJSInterop(code);
@@ -167,36 +173,17 @@ async function downlevelClassFieldsInBundle(code) {
167
173
  const runtimeEnd = endIdx + 12;
168
174
  const runtimeSection = code.slice(startIdx, runtimeEnd);
169
175
  const originalNewlines = runtimeSection.match(/\n/g)?.length ?? 0;
170
- const transformedCode = (await (await import("@swc/core")).transform(runtimeSection, {
171
- filename: "rolldown-runtime.js",
172
- configFile: false,
173
- swcrc: false,
174
- sourceMaps: false,
175
- inputSourceMap: false,
176
- isModule: false,
177
- minify: true,
178
- env: {
179
- targets: {
180
- node: 9999
181
- },
182
- include: [...HERMES_CLASS_TRANSFORMS]
183
- },
184
- jsc: {
185
- parser: {
186
- syntax: "ecmascript"
187
- },
188
- transform: {
189
- react: {
190
- runtime: "preserve"
191
- }
192
- },
193
- externalHelpers: false,
194
- assumptions: {
195
- setPublicClassFields: true,
196
- privateFieldsAsProperties: true
197
- }
176
+ const {
177
+ transformSync
178
+ } = await import("oxc-transform");
179
+ const result = transformSync("rolldown-runtime.js", runtimeSection, {
180
+ target: "es2020",
181
+ assumptions: {
182
+ setPublicClassFields: true
198
183
  }
199
- })).code.trimEnd();
184
+ });
185
+ if (result.errors?.length) throw new Error(result.errors.map(e => e.message).join("\n"));
186
+ const transformedCode = result.code.trimEnd();
200
187
  const transformed = transformedCode.includes(startMarker) ? transformedCode : `${startMarker}
201
188
  ${transformedCode}`;
202
189
  const transformedNewlines = transformed.match(/\n/g)?.length ?? 0;
@@ -333,7 +320,7 @@ try {
333
320
  } of result.updates) if (update.type === "Patch" && update.code) onHmrUpdate?.({
334
321
  type: "hmr:update",
335
322
  clientId,
336
- code: update.code,
323
+ code: normalizeNativeCommonJSInterop(update.code),
337
324
  changedIds: update.changedIds,
338
325
  seq: update.seq
339
326
  });else if (update.type === "FullReload") onHmrUpdate?.({
@@ -603,28 +590,111 @@ function vxrnCompilerPlugin(platform, dev, projectRoot = process.cwd(), sourceMa
603
590
  reactForRNVersion: "19"
604
591
  };
605
592
  let babelOptions = compiler.getBabelOptions(props);
606
- if (needsRefresh) {
607
- const existingPlugins = babelOptions?.plugins || [];
593
+ let curCode = code;
594
+ const intermediateMaps = [];
595
+ const isWorkletPlugin = entry => {
596
+ if (!entry) return false;
597
+ const name = typeof entry === "string" ? entry : Array.isArray(entry) ? entry[0] : null;
598
+ return typeof name === "string" && (name.includes("react-native-worklets") || name.includes("react-native-reanimated"));
599
+ };
600
+ const workletEntry = babelOptions?.plugins?.find(isWorkletPlugin);
601
+ const workletPluginOptions = Array.isArray(workletEntry) ? workletEntry[1] : void 0;
602
+ const useWorklets = compiler.isNativeWorkletsEnabled() && (Boolean(workletEntry) || compiler.shouldTransformWorklets({
603
+ id,
604
+ code
605
+ }));
606
+ const compilerPluginIndex = babelOptions?.plugins?.findIndex(x => Array.isArray(x) && x[0] === "babel-plugin-react-compiler") ?? -1;
607
+ if (compilerPluginIndex !== -1) {
608
+ if (useWorklets) {
609
+ const prepared = compiler.prepareWorkletsForReactCompiler(id, curCode, sourceMaps);
610
+ if (prepared) {
611
+ curCode = prepared.code;
612
+ if (prepared.map) intermediateMaps.push(prepared.map);
613
+ }
614
+ }
615
+ const compilerTarget = babelOptions.plugins[compilerPluginIndex][1]?.target ?? "19";
616
+ const compilerOut = await compiler.transformOxcReactCompiler(id, curCode, compilerTarget, sourceMaps);
617
+ if (compilerOut?.code) {
618
+ curCode = compilerOut.code;
619
+ if (sourceMaps && compilerOut.map) intermediateMaps.push(compilerOut.map);
620
+ }
621
+ babelOptions.plugins.splice(compilerPluginIndex, 1);
622
+ if (babelOptions.plugins.length === 0) babelOptions = null;
623
+ }
624
+ if (useWorklets) {
625
+ const workletOut = await compiler.transformWorklets(id, curCode, sourceMaps, {
626
+ projectRoot,
627
+ ...workletPluginOptions
628
+ });
629
+ if (workletOut?.code) {
630
+ curCode = workletOut.code;
631
+ if (sourceMaps && workletOut.map) intermediateMaps.push(workletOut.map);
632
+ }
633
+ if (babelOptions?.plugins) {
634
+ babelOptions.plugins = babelOptions.plugins.filter(entry => !isWorkletPlugin(entry));
635
+ if (babelOptions.plugins.length === 0) babelOptions = null;
636
+ }
637
+ }
638
+ if (!babelOptions && !needsRefresh) {
639
+ if (curCode !== code) {
640
+ let finalMap = void 0;
641
+ if (sourceMaps && intermediateMaps.length > 0) if (intermediateMaps.length === 1) finalMap = intermediateMaps[0];else {
642
+ const remapping = (await import("@jridgewell/remapping")).default;
643
+ finalMap = remapping(intermediateMaps.slice().reverse(), () => null);
644
+ }
645
+ return {
646
+ code: curCode,
647
+ map: finalMap
648
+ };
649
+ }
650
+ return;
651
+ }
652
+ if (sourceMaps && babelOptions) {
608
653
  babelOptions = {
609
654
  ...babelOptions,
610
- plugins: [...existingPlugins, ["react-refresh/babel", {
611
- skipEnvCheck: true,
612
- refreshReg: "__vxrnRefreshReg",
613
- refreshSig: "__vxrnRefreshSig"
614
- }]]
655
+ sourceMaps: true,
656
+ sourceFileName: id
615
657
  };
658
+ delete babelOptions.inputSourceMap;
616
659
  }
617
- if (!babelOptions) return;
618
- if (sourceMaps) babelOptions = {
619
- ...babelOptions,
620
- sourceMaps: true,
621
- sourceFileName: id
622
- };
623
- const result = await compiler.transformBabel(id, code, babelOptions);
624
- if (result?.code) {
625
- let out = result.code;
626
- if (needsRefresh) out = `
627
- var __prevRefreshReg = globalThis.$RefreshReg$;
660
+ if (babelOptions) {
661
+ const result = await compiler.transformBabel(id, curCode, babelOptions);
662
+ if (result?.code) {
663
+ curCode = result.code;
664
+ if (sourceMaps && result.map) intermediateMaps.push(result.map);
665
+ if (!needsRefresh) {
666
+ let finalMap = void 0;
667
+ if (sourceMaps && intermediateMaps.length > 0) if (intermediateMaps.length === 1) finalMap = intermediateMaps[0];else {
668
+ const remapping = (await import("@jridgewell/remapping")).default;
669
+ finalMap = remapping(intermediateMaps.slice().reverse(), () => null);
670
+ }
671
+ return {
672
+ code: curCode,
673
+ map: finalMap
674
+ };
675
+ }
676
+ }
677
+ }
678
+ if (needsRefresh) {
679
+ const {
680
+ transformSync
681
+ } = await import("oxc-transform-react");
682
+ const jsxImportSource = compiler.configuration?.enableNativewind && !id.includes("node_modules") ? "nativewind" : "react";
683
+ const res = transformSync(id, curCode, {
684
+ jsx: {
685
+ development: dev,
686
+ runtime: "automatic",
687
+ importSource: jsxImportSource,
688
+ refresh: {
689
+ refreshReg: "__vxrnRefreshReg",
690
+ refreshSig: "__vxrnRefreshSig"
691
+ }
692
+ },
693
+ reactCompiler: false,
694
+ sourcemap: sourceMaps
695
+ });
696
+ if (res.fatal) throw new Error(`[vxrn:compiler] oxc react transform failed on ${id}: ${(res.errors ?? []).map(e => e.message ?? String(e)).join(", ")}`);
697
+ const header = `var __prevRefreshReg = globalThis.$RefreshReg$;
628
698
  var __prevRefreshSig = globalThis.$RefreshSig$;
629
699
  if (globalThis.__ReactRefresh) {
630
700
  globalThis.$RefreshReg$ = function(type, id) {
@@ -636,7 +706,8 @@ if (globalThis.__ReactRefresh) {
636
706
  var __vxrnRefreshReg = globalThis.$RefreshReg$;
637
707
  var __vxrnRefreshSig = globalThis.$RefreshSig$;
638
708
 
639
- ${out}
709
+ `;
710
+ const footer = `
640
711
 
641
712
  globalThis.$RefreshReg$ = __prevRefreshReg;
642
713
  globalThis.$RefreshSig$ = __prevRefreshSig;
@@ -648,9 +719,24 @@ if (import.meta.hot) {
648
719
  });
649
720
  }
650
721
  `;
722
+ let out;
723
+ let finalMap = void 0;
724
+ if (sourceMaps) {
725
+ const MagicString = (await import("magic-string")).default;
726
+ const ms = new MagicString(res.code);
727
+ ms.prepend(header);
728
+ ms.append(footer);
729
+ out = ms.toString();
730
+ const allMaps = [ms.generateMap({
731
+ source: id,
732
+ hires: true
733
+ }), res.map, ...intermediateMaps.slice().reverse()].filter(Boolean);
734
+ const remapping = (await import("@jridgewell/remapping")).default;
735
+ finalMap = remapping(allMaps, () => null);
736
+ } else out = header + res.code + footer;
651
737
  return {
652
738
  code: out,
653
- map: sourceMaps ? result.map : void 0
739
+ map: finalMap
654
740
  };
655
741
  }
656
742
  }
@@ -661,7 +747,7 @@ function flowStripPlugin() {
661
747
  name: "vxrn:flow-strip",
662
748
  transform: {
663
749
  async handler(code, id) {
664
- if (!FLOW_FILE_PATTERN.test(id)) return;
750
+ if (!shouldStripFlow(id, code)) return;
665
751
  const result = await (await import("fast-flow-transform")).default({
666
752
  filename: id,
667
753
  source: code,
@@ -805,53 +891,73 @@ function copyNativeAssetFiles(asset, assetsDest, platform) {
805
891
  }
806
892
  }
807
893
  function hermesCompatSWCPlugin(dev, sourceMaps = false) {
808
- let swc = null;
894
+ let oxc = null;
809
895
  return {
810
896
  name: "vxrn:hermes-compat",
811
897
  async transform(code, id) {
812
898
  if (!/\.[cm]?[jt]sx?$/.test(id)) return;
813
899
  if (id.includes("\0") || id.includes("virtual:")) return;
814
900
  const hasClass = code.includes("class ") || code.includes("class{");
815
- const hasAsync = code.includes("async ");
901
+ const hasAsync = code.includes("async");
816
902
  const hasBlockScopedLoop = /\bfor\s*\(\s*(?:const|let)\b/.test(code);
817
903
  if (!hasClass && !hasAsync && !hasBlockScopedLoop) return;
818
- if (code.length > 5e5) return;
819
- if (!swc) swc = await import("@swc/core");
820
- const envIncludes = getHermesSWCIncludes(dev);
821
- const result = await swc.transform(code, {
822
- filename: id,
823
- configFile: false,
824
- swcrc: false,
825
- sourceMaps,
826
- sourceFileName: sourceMaps ? id : void 0,
827
- inputSourceMap: false,
828
- env: {
829
- targets: {
830
- node: 9999
831
- },
832
- include: envIncludes
833
- },
834
- jsc: {
835
- parser: {
836
- syntax: "typescript",
837
- tsx: true
838
- },
839
- transform: {
840
- react: {
841
- runtime: "preserve"
842
- }
843
- },
844
- externalHelpers: false,
904
+ let output;
905
+ if (code.length <= 5e5) {
906
+ if (!oxc) oxc = await import("oxc-transform");
907
+ const lang = /\.[cm]?ts$/.test(id) ? "ts" : id.endsWith(".tsx") ? "tsx" : "jsx";
908
+ const result = oxc.transformSync(id, code, {
909
+ lang,
910
+ target: "es2020",
845
911
  assumptions: {
846
- setPublicClassFields: true,
847
- privateFieldsAsProperties: true
848
- }
849
- },
850
- isModule: !id.endsWith(".cjs")
851
- });
912
+ setPublicClassFields: true
913
+ },
914
+ jsx: "preserve",
915
+ sourcemap: sourceMaps,
916
+ sourceType: id.endsWith(".cjs") ? "script" : "module"
917
+ });
918
+ if (result.errors?.length) {
919
+ const err = result.errors[0];
920
+ throw new Error(err.message + (err.codeframe ? `
921
+ ${err.codeframe}` : ""));
922
+ }
923
+ output = {
924
+ code: result.code,
925
+ map: sourceMaps ? result.map : void 0
926
+ };
927
+ }
928
+ const lowered = await transformHermesAsync(output?.code ?? code, id, sourceMaps);
929
+ if (!lowered) return output;
930
+ if (lowered.map && output?.map) {
931
+ const remapping = (await import("@jridgewell/remapping")).default;
932
+ lowered.map = remapping([lowered.map, output.map], () => null);
933
+ }
934
+ return lowered;
935
+ }
936
+ };
937
+ }
938
+ const hermesCompatPlugin = hermesCompatSWCPlugin;
939
+ function hermesLoopsPlugin(sourceMaps = false) {
940
+ let compiler = null;
941
+ return {
942
+ name: "vxrn:hermes-loops",
943
+ async transform(code, id) {
944
+ if (!/\.[cm]?[jt]sx?$/.test(id)) return;
945
+ if (id.includes("\0") || id.includes("virtual:")) return;
946
+ if (!compiler) compiler = await import("@vxrn/compiler");
947
+ const result = compiler.transformHermesLoops(code, id);
948
+ if (!result) return;
949
+ if (!sourceMaps) return {
950
+ code: result.code,
951
+ map: null
952
+ };
953
+ if (result.maps.length === 1) return {
954
+ code: result.code,
955
+ map: result.maps[0]
956
+ };
957
+ const remapping = (await import("@jridgewell/remapping")).default;
852
958
  return {
853
959
  code: result.code,
854
- map: sourceMaps ? result.map : void 0
960
+ map: remapping(result.maps.slice().reverse(), () => null)
855
961
  };
856
962
  }
857
963
  };
@@ -1057,5 +1163,5 @@ class ReactNativeDevRuntime extends BaseDevRuntime {
1057
1163
  globalThis.__rolldown_runtime__ = new ReactNativeDevRuntime();
1058
1164
  `;
1059
1165
  }
1060
- export { buildNativeBundle, createNativeDevAssetRegistry, createNativeDevEngine, getHermesSWCIncludes, getHmrRuntimeSource, getNativeAssetData, getNativeTransformConfig, hermesCompatSWCPlugin, hmrClientNoopPlugin, nativeAnimatedGuardPlugin, normalizeNativeCommonJSInterop, vxrnCompilerPlugin, wrapNativeBundleModuleScope };
1166
+ export { buildNativeBundle, createNativeDevAssetRegistry, createNativeDevEngine, getHermesSWCIncludes, getHmrRuntimeSource, getNativeAssetData, getNativeTransformConfig, hermesCompatPlugin, hermesCompatSWCPlugin, hermesLoopsPlugin, hmrClientNoopPlugin, nativeAnimatedGuardPlugin, normalizeNativeCommonJSInterop, vxrnCompilerPlugin, wrapNativeBundleModuleScope };
1061
1167
  //# sourceMappingURL=createNativeDevEngine.mjs.map