@vxrn/compiler 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 (130) hide show
  1. package/dist/cjs/cache.cjs +4 -2
  2. package/dist/cjs/configure.cjs +9 -1
  3. package/dist/cjs/index.cjs +87 -5
  4. package/dist/cjs/reactNativeCodegen.cjs +140 -0
  5. package/dist/cjs/reactNativeViewConfig.cjs +489 -0
  6. package/dist/cjs/transformBabel.cjs +15 -20
  7. package/dist/cjs/transformBabel.test.cjs +260 -0
  8. package/dist/cjs/transformHermesAsync.cjs +61 -0
  9. package/dist/cjs/transformHermesLoops.cjs +319 -0
  10. package/dist/cjs/transformHermesLoops.test.cjs +257 -0
  11. package/dist/cjs/transformSWC.cjs +110 -138
  12. package/dist/cjs/transformSWC.test.cjs +117 -0
  13. package/dist/cjs/transformWorklets.cjs +123 -0
  14. package/dist/cjs/transformWorklets.test.cjs +604 -0
  15. package/dist/cjs/worklets/autoworklet.cjs +265 -0
  16. package/dist/cjs/worklets/globals.cjs +73 -0
  17. package/dist/cjs/worklets/hash.cjs +38 -0
  18. package/dist/cjs/worklets/scope.cjs +370 -0
  19. package/dist/cjs/worklets/serialize.cjs +101 -0
  20. package/dist/cjs/worklets/transform.cjs +266 -0
  21. package/dist/cjs/worklets/types.cjs +18 -0
  22. package/dist/esm/cache.mjs +5 -3
  23. package/dist/esm/cache.mjs.map +1 -1
  24. package/dist/esm/configure.mjs +8 -1
  25. package/dist/esm/configure.mjs.map +1 -1
  26. package/dist/esm/index.js +75 -6
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/index.mjs +75 -6
  29. package/dist/esm/index.mjs.map +1 -1
  30. package/dist/esm/reactNativeCodegen.mjs +104 -0
  31. package/dist/esm/reactNativeCodegen.mjs.map +1 -0
  32. package/dist/esm/reactNativeViewConfig.mjs +460 -0
  33. package/dist/esm/reactNativeViewConfig.mjs.map +1 -0
  34. package/dist/esm/transformBabel.mjs +14 -19
  35. package/dist/esm/transformBabel.mjs.map +1 -1
  36. package/dist/esm/transformBabel.test.mjs +261 -1
  37. package/dist/esm/transformBabel.test.mjs.map +1 -1
  38. package/dist/esm/transformHermesAsync.mjs +25 -0
  39. package/dist/esm/transformHermesAsync.mjs.map +1 -0
  40. package/dist/esm/transformHermesLoops.mjs +283 -0
  41. package/dist/esm/transformHermesLoops.mjs.map +1 -0
  42. package/dist/esm/transformHermesLoops.test.mjs +234 -0
  43. package/dist/esm/transformHermesLoops.test.mjs.map +1 -0
  44. package/dist/esm/transformSWC.mjs +96 -139
  45. package/dist/esm/transformSWC.mjs.map +1 -1
  46. package/dist/esm/transformSWC.test.mjs +118 -0
  47. package/dist/esm/transformSWC.test.mjs.map +1 -0
  48. package/dist/esm/transformWorklets.mjs +82 -0
  49. package/dist/esm/transformWorklets.mjs.map +1 -0
  50. package/dist/esm/transformWorklets.test.mjs +581 -0
  51. package/dist/esm/transformWorklets.test.mjs.map +1 -0
  52. package/dist/esm/worklets/autoworklet.mjs +234 -0
  53. package/dist/esm/worklets/autoworklet.mjs.map +1 -0
  54. package/dist/esm/worklets/globals.mjs +46 -0
  55. package/dist/esm/worklets/globals.mjs.map +1 -0
  56. package/dist/esm/worklets/hash.mjs +13 -0
  57. package/dist/esm/worklets/hash.mjs.map +1 -0
  58. package/dist/esm/worklets/scope.mjs +345 -0
  59. package/dist/esm/worklets/scope.mjs.map +1 -0
  60. package/dist/esm/worklets/serialize.mjs +75 -0
  61. package/dist/esm/worklets/serialize.mjs.map +1 -0
  62. package/dist/esm/worklets/transform.mjs +229 -0
  63. package/dist/esm/worklets/transform.mjs.map +1 -0
  64. package/dist/esm/worklets/types.mjs +2 -0
  65. package/dist/esm/worklets/types.mjs.map +1 -0
  66. package/package.json +11 -6
  67. package/src/cache.ts +10 -3
  68. package/src/configure.ts +12 -0
  69. package/src/index.ts +96 -13
  70. package/src/reactNativeCodegen.ts +181 -0
  71. package/src/reactNativeViewConfig.ts +593 -0
  72. package/src/transformBabel.test.ts +268 -1
  73. package/src/transformBabel.ts +21 -31
  74. package/src/transformHermesAsync.ts +30 -0
  75. package/src/transformHermesLoops.test.ts +341 -0
  76. package/src/transformHermesLoops.ts +435 -0
  77. package/src/transformSWC.test.ts +132 -0
  78. package/src/transformSWC.ts +121 -161
  79. package/src/transformWorklets.test.ts +708 -0
  80. package/src/transformWorklets.ts +160 -0
  81. package/src/types.ts +4 -4
  82. package/src/worklets/autoworklet.ts +391 -0
  83. package/src/worklets/globals.ts +129 -0
  84. package/src/worklets/hash.ts +14 -0
  85. package/src/worklets/scope.ts +401 -0
  86. package/src/worklets/serialize.ts +114 -0
  87. package/src/worklets/transform.ts +319 -0
  88. package/src/worklets/types.ts +26 -0
  89. package/types/cache.d.ts +1 -0
  90. package/types/cache.d.ts.map +1 -1
  91. package/types/configure.d.ts +2 -0
  92. package/types/configure.d.ts.map +1 -1
  93. package/types/index.d.ts +6 -0
  94. package/types/index.d.ts.map +1 -1
  95. package/types/reactNativeCodegen.d.ts +5 -0
  96. package/types/reactNativeCodegen.d.ts.map +1 -0
  97. package/types/reactNativeViewConfig.d.ts +35 -0
  98. package/types/reactNativeViewConfig.d.ts.map +1 -0
  99. package/types/transformBabel.d.ts +3 -3
  100. package/types/transformBabel.d.ts.map +1 -1
  101. package/types/transformHermesAsync.d.ts +5 -0
  102. package/types/transformHermesAsync.d.ts.map +1 -0
  103. package/types/transformHermesLoops.d.ts +5 -0
  104. package/types/transformHermesLoops.d.ts.map +1 -0
  105. package/types/transformHermesLoops.test.d.ts +2 -0
  106. package/types/transformHermesLoops.test.d.ts.map +1 -0
  107. package/types/transformSWC.d.ts +13 -3
  108. package/types/transformSWC.d.ts.map +1 -1
  109. package/types/transformSWC.test.d.ts +2 -0
  110. package/types/transformSWC.test.d.ts.map +1 -0
  111. package/types/transformWorklets.d.ts +23 -0
  112. package/types/transformWorklets.d.ts.map +1 -0
  113. package/types/transformWorklets.test.d.ts +2 -0
  114. package/types/transformWorklets.test.d.ts.map +1 -0
  115. package/types/types.d.ts +4 -4
  116. package/types/types.d.ts.map +1 -1
  117. package/types/worklets/autoworklet.d.ts +14 -0
  118. package/types/worklets/autoworklet.d.ts.map +1 -0
  119. package/types/worklets/globals.d.ts +4 -0
  120. package/types/worklets/globals.d.ts.map +1 -0
  121. package/types/worklets/hash.d.ts +5 -0
  122. package/types/worklets/hash.d.ts.map +1 -0
  123. package/types/worklets/scope.d.ts +7 -0
  124. package/types/worklets/scope.d.ts.map +1 -0
  125. package/types/worklets/serialize.d.ts +12 -0
  126. package/types/worklets/serialize.d.ts.map +1 -0
  127. package/types/worklets/transform.d.ts +10 -0
  128. package/types/worklets/transform.d.ts.map +1 -0
  129. package/types/worklets/types.d.ts +21 -0
  130. package/types/worklets/types.d.ts.map +1 -0
@@ -3,7 +3,7 @@ import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { afterEach, describe, expect, it } from "vitest";
5
5
  import { configureVXRNCompilerPlugin } from "./configure.mjs";
6
- import { getBabelOptions, transformBabel } from "./transformBabel.mjs";
6
+ import { getBabelOptions, transformBabel, transformOxcReactCompiler } from "./transformBabel.mjs";
7
7
  afterEach(() => {
8
8
  configureVXRNCompilerPlugin({
9
9
  enableReanimated: false
@@ -74,4 +74,264 @@ describe("transformBabel Flow parsing", () => {
74
74
  })).rejects.toThrow("NATIVE_TRANSFORM_NEGATIVE_CONTROL");
75
75
  });
76
76
  });
77
+ describe("transformOxcReactCompiler", () => {
78
+ const componentCode = `
79
+ import { useState } from 'react'
80
+
81
+ export function Counter() {
82
+ const [count, setCount] = useState(0)
83
+ return <button onClick={() => setCount(count + 1)}>{count}</button>
84
+ }
85
+ `;
86
+ it("compiles and memoizes React components with Rust React Compiler", async () => {
87
+ const result = await transformOxcReactCompiler("/project/Counter.tsx", componentCode, "19", false);
88
+ expect(result.code).toContain("_c(");
89
+ expect(result.code).toContain("react/compiler-runtime");
90
+ expect(result.map).toBeUndefined();
91
+ });
92
+ it("generates source maps when requested", async () => {
93
+ const result = await transformOxcReactCompiler("/project/Counter.tsx", componentCode, "19", true);
94
+ expect(result.code).toContain("_c(");
95
+ expect(result.map).toBeDefined();
96
+ expect(result.map?.mappings).toBeDefined();
97
+ });
98
+ it("supports target 18", async () => {
99
+ const result = await transformOxcReactCompiler("/project/Counter.tsx", componentCode, "18", false);
100
+ expect(result.code).toContain("_c(");
101
+ });
102
+ });
103
+ describe("compiler plugin multi-stage source map composition", () => {
104
+ it("composes earlier compiler maps when Babel also runs", async () => {
105
+ const {
106
+ createVXRNCompilerPlugin
107
+ } = await import("./index.mjs");
108
+ const {
109
+ TraceMap,
110
+ originalPositionFor
111
+ } = await import("@jridgewell/trace-mapping");
112
+ const origSourceMap = process.env.VXRN_ENABLE_SOURCE_MAP;
113
+ const origBabelGen = process.env.VXRN_USE_BABEL_FOR_GENERATORS;
114
+ process.env.VXRN_ENABLE_SOURCE_MAP = "1";
115
+ process.env.VXRN_USE_BABEL_FOR_GENERATORS = "1";
116
+ configureVXRNCompilerPlugin({
117
+ enableCompiler: true
118
+ });
119
+ const tempFile = path.join(os.tmpdir(), `Counter-${Date.now()}.tsx`);
120
+ fs.writeFileSync(tempFile, `import { useState } from 'react'
121
+
122
+ export function Counter() {
123
+ const [count, setCount] = useState(0)
124
+ return <button onClick={() => setCount(count + 1)}>{count}</button>
125
+ }
126
+
127
+ export async function* generatorProbe() {
128
+ throw new Error("MARKER")
129
+ }
130
+ `);
131
+ try {
132
+ const plugins = await createVXRNCompilerPlugin();
133
+ const plugin = plugins.find(p => p.name === "one:compiler");
134
+ await plugin.configResolved({
135
+ root: os.tmpdir(),
136
+ build: {}
137
+ });
138
+ const hook = plugin.transform.handler || plugin.transform;
139
+ const code = fs.readFileSync(tempFile, "utf8");
140
+ const context = {
141
+ environment: {
142
+ name: "client"
143
+ }
144
+ };
145
+ const result = await hook.call(context, code, tempFile);
146
+ expect(result).toBeDefined();
147
+ expect(result.map).toBeDefined();
148
+ const tracer = new TraceMap(result.map);
149
+ const lines = result.code.split("\n");
150
+ const markerLineIndex = lines.findIndex(l => l.includes("MARKER"));
151
+ expect(markerLineIndex).toBeGreaterThan(0);
152
+ const markerCol = lines[markerLineIndex].indexOf("throw");
153
+ const pos = originalPositionFor(tracer, {
154
+ line: markerLineIndex + 1,
155
+ column: markerCol
156
+ });
157
+ expect(pos.source).toBe(tempFile);
158
+ expect(pos.line).toBe(9);
159
+ } finally {
160
+ if (origSourceMap !== void 0) {
161
+ process.env.VXRN_ENABLE_SOURCE_MAP = origSourceMap;
162
+ } else {
163
+ delete process.env.VXRN_ENABLE_SOURCE_MAP;
164
+ }
165
+ if (origBabelGen !== void 0) {
166
+ process.env.VXRN_USE_BABEL_FOR_GENERATORS = origBabelGen;
167
+ } else {
168
+ delete process.env.VXRN_USE_BABEL_FOR_GENERATORS;
169
+ }
170
+ configureVXRNCompilerPlugin({
171
+ enableCompiler: false
172
+ });
173
+ fs.rmSync(tempFile, {
174
+ force: true
175
+ });
176
+ }
177
+ });
178
+ });
179
+ describe("shared compiler worklets backend selection", () => {
180
+ it("retains Babel for worklets by default when enableNativeWorklets is false", async () => {
181
+ const {
182
+ vi
183
+ } = await import("vitest");
184
+ const {
185
+ createVXRNCompilerPlugin
186
+ } = await import("./index.mjs");
187
+ const workletsModule = await import("./transformWorklets.mjs");
188
+ const workletSpy = vi.spyOn(workletsModule, "transformWorklets");
189
+ configureVXRNCompilerPlugin({
190
+ enableReanimated: true,
191
+ enableNativeWorklets: false
192
+ });
193
+ const tempFile = path.join(process.cwd(), `test-default-worklet-${Date.now()}.tsx`);
194
+ const inputCode = `export function fn() { 'worklet'; return 1 }`;
195
+ fs.writeFileSync(tempFile, inputCode);
196
+ try {
197
+ const plugins = await createVXRNCompilerPlugin();
198
+ const plugin = plugins.find(p => p.name === "one:compiler");
199
+ await plugin.configResolved({
200
+ root: process.cwd(),
201
+ build: {}
202
+ });
203
+ const hook = plugin.transform.handler || plugin.transform;
204
+ const context = {
205
+ environment: {
206
+ name: "ios"
207
+ }
208
+ };
209
+ const result = await hook.call(context, inputCode, tempFile);
210
+ expect(result).toBeDefined();
211
+ expect(workletSpy).not.toHaveBeenCalled();
212
+ } finally {
213
+ workletSpy.mockRestore();
214
+ configureVXRNCompilerPlugin({
215
+ enableReanimated: false,
216
+ enableNativeWorklets: false
217
+ });
218
+ fs.rmSync(tempFile, {
219
+ force: true
220
+ });
221
+ }
222
+ });
223
+ it("uses native SWC for worklets when enableNativeWorklets is true", async () => {
224
+ const compiler = await import("./index.mjs");
225
+ const {
226
+ vi
227
+ } = await import("vitest");
228
+ const workletsModule = await import("./transformWorklets.mjs");
229
+ const workletSpy = vi.spyOn(workletsModule, "transformWorklets");
230
+ configureVXRNCompilerPlugin({
231
+ enableReanimated: true,
232
+ enableNativeWorklets: true
233
+ });
234
+ const tempFile = path.join(process.cwd(), `test-native-worklet-${Date.now()}.tsx`);
235
+ const inputCode = `export function fn() { 'worklet'; return 1 }`;
236
+ fs.writeFileSync(tempFile, inputCode);
237
+ try {
238
+ const plugins = await compiler.createVXRNCompilerPlugin();
239
+ const plugin = plugins.find(p => p.name === "one:compiler");
240
+ await plugin.configResolved({
241
+ root: process.cwd(),
242
+ build: {}
243
+ });
244
+ const hook = plugin.transform.handler || plugin.transform;
245
+ const context = {
246
+ environment: {
247
+ name: "ios"
248
+ }
249
+ };
250
+ const result = await hook.call(context, inputCode, tempFile);
251
+ expect(result).toBeDefined();
252
+ expect(workletSpy).toHaveBeenCalled();
253
+ } finally {
254
+ workletSpy.mockRestore();
255
+ configureVXRNCompilerPlugin({
256
+ enableReanimated: false,
257
+ enableNativeWorklets: false
258
+ });
259
+ fs.rmSync(tempFile, {
260
+ force: true
261
+ });
262
+ }
263
+ });
264
+ it("invalidates cache when toggling worklets backend on the same unchanged file", async () => {
265
+ const compiler = await import("./index.mjs");
266
+ const {
267
+ vi
268
+ } = await import("vitest");
269
+ const workletsModule = await import("./transformWorklets.mjs");
270
+ const workletSpy = vi.spyOn(workletsModule, "transformWorklets");
271
+ const tempFile = path.join(process.cwd(), `test-cache-toggle-${Date.now()}.tsx`);
272
+ const inputCode = `export function fn() { 'worklet'; return 1 }`;
273
+ fs.writeFileSync(tempFile, inputCode);
274
+ try {
275
+ configureVXRNCompilerPlugin({
276
+ enableReanimated: true,
277
+ enableNativeWorklets: false
278
+ });
279
+ const plugins1 = await compiler.createVXRNCompilerPlugin();
280
+ const plugin1 = plugins1.find(p => p.name === "one:compiler");
281
+ await plugin1.configResolved({
282
+ root: process.cwd(),
283
+ build: {}
284
+ });
285
+ const hook1 = plugin1.transform.handler || plugin1.transform;
286
+ const context = {
287
+ environment: {
288
+ name: "ios"
289
+ }
290
+ };
291
+ const res1 = await hook1.call(context, inputCode, tempFile);
292
+ expect(res1).toBeDefined();
293
+ expect(workletSpy).toHaveBeenCalledTimes(0);
294
+ configureVXRNCompilerPlugin({
295
+ enableReanimated: true,
296
+ enableNativeWorklets: true
297
+ });
298
+ const plugins2 = await compiler.createVXRNCompilerPlugin();
299
+ const plugin2 = plugins2.find(p => p.name === "one:compiler");
300
+ await plugin2.configResolved({
301
+ root: process.cwd(),
302
+ build: {}
303
+ });
304
+ const hook2 = plugin2.transform.handler || plugin2.transform;
305
+ const res2 = await hook2.call(context, inputCode, tempFile);
306
+ expect(res2).toBeDefined();
307
+ expect(workletSpy).toHaveBeenCalledTimes(1);
308
+ const res3 = await hook2.call(context, inputCode, tempFile);
309
+ expect(res3).toBeDefined();
310
+ expect(workletSpy).toHaveBeenCalledTimes(1);
311
+ configureVXRNCompilerPlugin({
312
+ enableReanimated: true,
313
+ enableNativeWorklets: false
314
+ });
315
+ const plugins3 = await compiler.createVXRNCompilerPlugin();
316
+ const plugin3 = plugins3.find(p => p.name === "one:compiler");
317
+ await plugin3.configResolved({
318
+ root: process.cwd(),
319
+ build: {}
320
+ });
321
+ const hook3 = plugin3.transform.handler || plugin3.transform;
322
+ const res4 = await hook3.call(context, inputCode, tempFile);
323
+ expect(res4).toBeDefined();
324
+ expect(workletSpy).toHaveBeenCalledTimes(1);
325
+ } finally {
326
+ workletSpy.mockRestore();
327
+ configureVXRNCompilerPlugin({
328
+ enableReanimated: false,
329
+ enableNativeWorklets: false
330
+ });
331
+ fs.rmSync(tempFile, {
332
+ force: true
333
+ });
334
+ }
335
+ });
336
+ });
77
337
  //# sourceMappingURL=transformBabel.test.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["fs","os","path","afterEach","describe","expect","it","configureVXRNCompilerPlugin","getBabelOptions","transformBabel","enableReanimated","projectRoot","realpathSync","mkdtempSync","join","tmpdir","packageRoot","pluginPath","mkdirSync","recursive","writeFileSync","JSON","stringify","name","version","options","id","code","development","environment","reactForRNVersion","plugins","toContain","rmSync","force","result","not","negativeControl","visitor","Program","Error","rejects","toThrow"],"sources":["../../src/transformBabel.test.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,EAAA,MAAQ;AACf,OAAOC,EAAA,MAAQ;AACf,OAAOC,IAAA,MAAU;AACjB,SAASC,SAAA,EAAWC,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AAChD,SAASC,2BAAA,QAAmC;AAC5C,SAASC,eAAA,EAAiBC,cAAA,QAAsB;AAEhDN,SAAA,CAAU,MAAM;EACdI,2BAAA,CAA4B;IAAEG,gBAAA,EAAkB;EAAM,CAAC;AACzD,CAAC;AAEDN,QAAA,CAAS,uCAAuC,MAAM;EACpDE,EAAA,CAAG,gDAAgD,MAAM;IACvD,MAAMK,WAAA,GAAcX,EAAA,CAAGY,YAAA,CACrBZ,EAAA,CAAGa,WAAA,CAAYX,IAAA,CAAKY,IAAA,CAAKb,EAAA,CAAGc,MAAA,CAAO,GAAG,gBAAgB,CAAC,CACzD;IACA,MAAMC,WAAA,GAAcd,IAAA,CAAKY,IAAA,CAAKH,WAAA,EAAa,gBAAgB,uBAAuB;IAClF,MAAMM,UAAA,GAAaf,IAAA,CAAKY,IAAA,CAAKE,WAAA,EAAa,WAAW;IACrDhB,EAAA,CAAGkB,SAAA,CAAUF,WAAA,EAAa;MAAEG,SAAA,EAAW;IAAK,CAAC;IAC7CnB,EAAA,CAAGoB,aAAA,CACDlB,IAAA,CAAKY,IAAA,CAAKE,WAAA,EAAa,cAAc,GACrCK,IAAA,CAAKC,SAAA,CAAU;MAAEC,IAAA,EAAM;MAAyBC,OAAA,EAAS;IAAS,CAAC,CACrE;IACAxB,EAAA,CAAGoB,aAAA,CAAcH,UAAA,EAAY,0CAA0C;IAEvE,IAAI;MACFV,2BAAA,CAA4B;QAAEG,gBAAA,EAAkB;MAAK,CAAC;MACtD,MAAMe,OAAA,GAAUjB,eAAA,CAAgB;QAC9BkB,EAAA,EAAIxB,IAAA,CAAKY,IAAA,CAAKH,WAAA,EAAa,UAAU;QACrCgB,IAAA,EAAM;AAAA;AAAA;QAGNC,WAAA,EAAa;QACbC,WAAA,EAAa;QACbC,iBAAA,EAAmB;QACnBnB;MACF,CAAC;MAEDN,MAAA,CAAOoB,OAAA,EAASM,OAAO,EAAEC,SAAA,CAAUf,UAAU;IAC/C,UAAE;MACAjB,EAAA,CAAGiC,MAAA,CAAOtB,WAAA,EAAa;QAAEQ,SAAA,EAAW;QAAMe,KAAA,EAAO;MAAK,CAAC;IACzD;EACF,CAAC;AACH,CAAC;AAED9B,QAAA,CAAS,+BAA+B,MAAM;EAC5CE,EAAA,CAAG,gDAAgD,YAAY;IAC7D,MAAM6B,MAAA,GAAS,MAAM1B,cAAA,CACnB,0CACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SASA;MAAEsB,OAAA,EAAS;IAAG,CAChB;IAEA1B,MAAA,CAAO8B,MAAA,EAAQR,IAAI,EAAEK,SAAA,CAAU,uCAAuC;IACtE3B,MAAA,CAAO8B,MAAA,EAAQR,IAAI,EAAES,GAAA,CAAIJ,SAAA,CAAU,eAAe;EACpD,CAAC;EAED1B,EAAA,CAAG,gFAAgF,YAAY;IAC7F,MAAM+B,eAAA,GAAkBA,CAAA,MAAO;MAC7BC,OAAA,EAAS;QACPC,QAAA,EAAU;UACR,MAAM,IAAIC,KAAA,CAAM,mCAAmC;QACrD;MACF;IACF;IAEA,MAAMnC,MAAA,CACJI,cAAA,CAAe,8BAA8B,2BAA2B;MACtEsB,OAAA,EAAS,CAACM,eAAe;IAC3B,CAAC,CACH,EAAEI,OAAA,CAAQC,OAAA,CAAQ,mCAAmC;EACvD,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["fs","os","path","afterEach","describe","expect","it","configureVXRNCompilerPlugin","getBabelOptions","transformBabel","transformOxcReactCompiler","enableReanimated","projectRoot","realpathSync","mkdtempSync","join","tmpdir","packageRoot","pluginPath","mkdirSync","recursive","writeFileSync","JSON","stringify","name","version","options","id","code","development","environment","reactForRNVersion","plugins","toContain","rmSync","force","result","not","negativeControl","visitor","Program","Error","rejects","toThrow","componentCode","map","toBeUndefined","toBeDefined","mappings","createVXRNCompilerPlugin","TraceMap","originalPositionFor","origSourceMap","process","env","VXRN_ENABLE_SOURCE_MAP","origBabelGen","VXRN_USE_BABEL_FOR_GENERATORS","enableCompiler","tempFile","Date","now","plugin","find","p","configResolved","root","build","hook","transform","handler","readFileSync","context","call","tracer","lines","split","markerLineIndex","findIndex","l","includes","toBeGreaterThan","markerCol","indexOf","pos","line","column","source","toBe","vi","workletsModule","workletSpy","spyOn","enableNativeWorklets","cwd","inputCode","toHaveBeenCalled","mockRestore","compiler","plugins1","plugin1","hook1","res1","toHaveBeenCalledTimes","plugins2","plugin2","hook2","res2","res3","plugins3","plugin3","hook3","res4"],"sources":["../../src/transformBabel.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ async function transformHermesAsync(code, filename, sourceMaps = false, format) {
2
+ if (!format && !code.includes("async")) return;
3
+ const {
4
+ transformSync
5
+ } = await import("esbuild");
6
+ const cleanId = filename.split("?")[0];
7
+ const result = transformSync(code, {
8
+ loader: /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx",
9
+ jsx: "preserve",
10
+ format,
11
+ supported: {
12
+ "async-await": false,
13
+ "async-generator": false,
14
+ "for-await": false
15
+ },
16
+ sourcefile: filename,
17
+ sourcemap: sourceMaps ? "external" : false
18
+ });
19
+ return {
20
+ code: result.code,
21
+ map: result.map ? JSON.parse(result.map) : void 0
22
+ };
23
+ }
24
+ export { transformHermesAsync };
25
+ //# sourceMappingURL=transformHermesAsync.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["transformHermesAsync","code","filename","sourceMaps","format","includes","transformSync","cleanId","split","result","loader","test","endsWith","jsx","supported","sourcefile","sourcemap","map","JSON","parse"],"sources":["../../src/transformHermesAsync.ts"],"sourcesContent":[null],"mappings":"AAGA,eAAsBA,qBACpBC,IAAA,EACAC,QAAA,EACAC,UAAA,GAAa,OACbC,MAAA,EACkD;EAClD,IAAI,CAACA,MAAA,IAAU,CAACH,IAAA,CAAKI,QAAA,CAAS,OAAO,GAAG;EAExC,MAAM;IAAEC;EAAc,IAAI,MAAM,OAAO,SAAS;EAChD,MAAMC,OAAA,GAAUL,QAAA,CAASM,KAAA,CAAM,GAAG,EAAE,CAAC;EACrC,MAAMC,MAAA,GAASH,aAAA,CAAcL,IAAA,EAAM;IACjCS,MAAA,EAAQ,aAAaC,IAAA,CAAKJ,OAAO,IAAI,OAAOA,OAAA,CAAQK,QAAA,CAAS,MAAM,IAAI,QAAQ;IAC/EC,GAAA,EAAK;IACLT,MAAA;IACAU,SAAA,EAAW;MACT,eAAe;MACf,mBAAmB;MACnB,aAAa;IACf;IACAC,UAAA,EAAYb,QAAA;IACZc,SAAA,EAAWb,UAAA,GAAa,aAAa;EACvC,CAAC;EACD,OAAO;IACLF,IAAA,EAAMQ,MAAA,CAAOR,IAAA;IACbgB,GAAA,EAAKR,MAAA,CAAOQ,GAAA,GAAMC,IAAA,CAAKC,KAAA,CAAMV,MAAA,CAAOQ,GAAG,IAAI;EAC7C;AACF","ignoreList":[]}
@@ -0,0 +1,283 @@
1
+ import MagicString from "magic-string";
2
+ import { parseSync } from "oxc-parser";
3
+ const LOOP_RE = /\b(?:for|while)\s*(?:await\s+)?\(/;
4
+ const LEXICAL_RE = /\b(?:let|const|class)\b/;
5
+ function langFor(filename) {
6
+ const ext = filename.split("?")[0].split(".").pop() || "js";
7
+ if (ext === "ts" || ext === "cts" || ext === "mts") return "ts";
8
+ if (ext === "tsx") return "tsx";
9
+ return "jsx";
10
+ }
11
+ function collectPatternNames(node, out) {
12
+ if (!node || typeof node !== "object") return;
13
+ switch (node.type) {
14
+ case "Identifier":
15
+ out.push(node.name);
16
+ return;
17
+ case "ObjectPattern":
18
+ for (const p of node.properties || []) {
19
+ collectPatternNames(p.value ?? p.argument, out);
20
+ }
21
+ return;
22
+ case "ArrayPattern":
23
+ for (const el of node.elements || []) collectPatternNames(el, out);
24
+ return;
25
+ case "AssignmentPattern":
26
+ collectPatternNames(node.left, out);
27
+ return;
28
+ case "RestElement":
29
+ collectPatternNames(node.argument, out);
30
+ return;
31
+ }
32
+ }
33
+ const FUNCTION_TYPES = /* @__PURE__ */new Set(["FunctionDeclaration", "FunctionExpression", "ArrowFunctionExpression"]);
34
+ function eachChild(node, fn) {
35
+ for (const key in node) {
36
+ if (key === "type" || key === "start" || key === "end" || key === "parent") continue;
37
+ const value = node[key];
38
+ if (Array.isArray(value)) {
39
+ for (const item of value) {
40
+ if (item && typeof item.type === "string") fn(item);
41
+ }
42
+ } else if (value && typeof value === "object" && typeof value.type === "string") {
43
+ fn(value);
44
+ }
45
+ }
46
+ }
47
+ function capturesInClosure(body, names) {
48
+ let found = false;
49
+ function scanInsideFunction(node, shadowed) {
50
+ if (found || !node || typeof node !== "object") return;
51
+ if (node.type === "Identifier" && names.has(node.name) && !shadowed.has(node.name)) {
52
+ found = true;
53
+ return;
54
+ }
55
+ if (FUNCTION_TYPES.has(node.type)) {
56
+ const inner = new Set(shadowed);
57
+ const params = [];
58
+ for (const p of node.params || []) collectPatternNames(p, params);
59
+ for (const p of params) inner.add(p);
60
+ if (node.id?.name) inner.add(node.id.name);
61
+ eachChild(node, c => scanInsideFunction(c, inner));
62
+ return;
63
+ }
64
+ if (node.type === "MemberExpression" && !node.computed) {
65
+ scanInsideFunction(node.object, shadowed);
66
+ return;
67
+ }
68
+ if (node.type === "Property" && !node.computed && node.key === node.value) {
69
+ scanInsideFunction(node.value, shadowed);
70
+ return;
71
+ }
72
+ eachChild(node, c => scanInsideFunction(c, shadowed));
73
+ }
74
+ function walk(node) {
75
+ if (found || !node || typeof node !== "object") return;
76
+ if (FUNCTION_TYPES.has(node.type)) {
77
+ const shadowed = /* @__PURE__ */new Set();
78
+ const params = [];
79
+ for (const p of node.params || []) collectPatternNames(p, params);
80
+ for (const p of params) shadowed.add(p);
81
+ eachChild(node, c => scanInsideFunction(c, shadowed));
82
+ return;
83
+ }
84
+ eachChild(node, walk);
85
+ }
86
+ walk(body);
87
+ return found;
88
+ }
89
+ function analyzeBody(body, names) {
90
+ const facts = {
91
+ hasBreak: false,
92
+ hasContinue: false,
93
+ hasReturn: false,
94
+ hasAwait: false,
95
+ hasYield: false,
96
+ assignsBinding: false,
97
+ hasLabeledJump: false
98
+ };
99
+ function walk(node, inNestedBreakable, inNestedLoop, inFunction) {
100
+ if (!node || typeof node !== "object") return;
101
+ if (FUNCTION_TYPES.has(node.type)) {
102
+ eachChild(node, c => walk(c, inNestedBreakable, inNestedLoop, true));
103
+ return;
104
+ }
105
+ switch (node.type) {
106
+ case "BreakStatement":
107
+ if (node.label) facts.hasLabeledJump = true;else if (!inNestedBreakable) facts.hasBreak = true;
108
+ break;
109
+ case "ContinueStatement":
110
+ if (node.label) facts.hasLabeledJump = true;else if (!inNestedLoop) facts.hasContinue = true;
111
+ break;
112
+ case "ReturnStatement":
113
+ if (!inFunction) facts.hasReturn = true;
114
+ break;
115
+ case "AwaitExpression":
116
+ if (!inFunction) facts.hasAwait = true;
117
+ break;
118
+ case "YieldExpression":
119
+ if (!inFunction) facts.hasYield = true;
120
+ break;
121
+ case "AssignmentExpression":
122
+ if (node.left?.type === "Identifier" && names.has(node.left.name)) {
123
+ facts.assignsBinding = true;
124
+ }
125
+ break;
126
+ case "UpdateExpression":
127
+ if (node.argument?.type === "Identifier" && names.has(node.argument.name)) {
128
+ facts.assignsBinding = true;
129
+ }
130
+ break;
131
+ }
132
+ const isLoop = node.type === "ForStatement" || node.type === "ForOfStatement" || node.type === "ForInStatement" || node.type === "WhileStatement" || node.type === "DoWhileStatement";
133
+ const isBreakable = isLoop || node.type === "SwitchStatement";
134
+ eachChild(node, c => walk(c, inNestedBreakable || isBreakable, inNestedLoop || isLoop, inFunction));
135
+ }
136
+ walk(body, false, false, false);
137
+ return facts;
138
+ }
139
+ function collectBodyLexicalNames(node, out) {
140
+ if (!node || typeof node !== "object" || typeof node.type !== "string") return;
141
+ if (FUNCTION_TYPES.has(node.type) || node.type === "ClassBody") return;
142
+ if (node.type === "VariableDeclaration") {
143
+ if (node.kind === "let" || node.kind === "const") {
144
+ for (const d of node.declarations || []) collectPatternNames(d.id, out);
145
+ }
146
+ return;
147
+ }
148
+ if (node.type === "ClassDeclaration") {
149
+ if (node.id?.name) out.push(node.id.name);
150
+ return;
151
+ }
152
+ eachChild(node, c => collectBodyLexicalNames(c, out));
153
+ }
154
+ const LOOP_TYPES = /* @__PURE__ */new Set(["ForStatement", "ForOfStatement", "ForInStatement", "WhileStatement", "DoWhileStatement"]);
155
+ function headDeclaration(node) {
156
+ if (node.type === "ForStatement") return node.init;
157
+ if (node.type === "ForOfStatement" || node.type === "ForInStatement") return node.left;
158
+ return null;
159
+ }
160
+ function transformOnce(code, filename) {
161
+ const parsed = parseSync(filename, code, {
162
+ lang: langFor(filename)
163
+ });
164
+ if (!parsed?.program || parsed.errors?.length) return null;
165
+ const candidates = [];
166
+ function findLoops(node, insideCandidate) {
167
+ if (!node || typeof node !== "object") return;
168
+ let isCandidate = false;
169
+ if (LOOP_TYPES.has(node.type) && node.body) {
170
+ const names = [];
171
+ const decl = headDeclaration(node);
172
+ if (decl?.type === "VariableDeclaration" && (decl.kind === "let" || decl.kind === "const")) {
173
+ for (const d of decl.declarations || []) collectPatternNames(d.id, names);
174
+ }
175
+ const shared = [...names];
176
+ collectBodyLexicalNames(node.body, shared);
177
+ if (shared.length && capturesInClosure(node.body, new Set(shared))) {
178
+ isCandidate = true;
179
+ if (!insideCandidate) candidates.push({
180
+ node,
181
+ names
182
+ });
183
+ }
184
+ }
185
+ eachChild(node, c => findLoops(c, insideCandidate || isCandidate));
186
+ }
187
+ findLoops(parsed.program, false);
188
+ if (!candidates.length) return null;
189
+ const s = new MagicString(code);
190
+ let counter = 0;
191
+ let changed = false;
192
+ for (const {
193
+ node,
194
+ names
195
+ } of candidates) {
196
+ const nameSet = new Set(names);
197
+ const facts = analyzeBody(node.body, nameSet);
198
+ if (facts.hasYield || facts.assignsBinding || facts.hasLabeledJump) continue;
199
+ const fnName = `_hermesLoop${counter++}`;
200
+ const params = names.join(", ");
201
+ let bodyText = code.slice(node.body.start, node.body.end);
202
+ if (node.body.type !== "BlockStatement") {
203
+ bodyText = `{ ${bodyText} }`;
204
+ }
205
+ if (facts.hasBreak || facts.hasReturn || facts.hasContinue) {
206
+ bodyText = rewriteJumps(bodyText, node.body, code, nameSet);
207
+ }
208
+ const asyncKw = facts.hasAwait ? "async " : "";
209
+ const awaitKw = facts.hasAwait ? "await " : "";
210
+ let call = `${awaitKw}${fnName}(${params})`;
211
+ if (facts.hasBreak || facts.hasReturn) {
212
+ const checks = [];
213
+ if (facts.hasBreak) checks.push("if (_r === 1) break;");
214
+ if (facts.hasReturn) checks.push("if (_r) return _r.v;");
215
+ call = `{ var _r = ${call}; ${checks.join(" ")} }`;
216
+ } else {
217
+ call = `{ ${call}; }`;
218
+ }
219
+ s.overwrite(node.body.start, node.body.end, call);
220
+ s.appendLeft(node.start, `{
221
+ var ${fnName} = ${asyncKw}(${params}) => ${bodyText};
222
+ `);
223
+ s.appendLeft(node.end, "\n}");
224
+ changed = true;
225
+ }
226
+ if (!changed) return null;
227
+ return {
228
+ code: s.toString(),
229
+ map: s.generateMap({
230
+ hires: true,
231
+ source: filename,
232
+ includeContent: false
233
+ })
234
+ };
235
+ }
236
+ function rewriteJumps(bodyText, bodyNode, code, names) {
237
+ const offset = bodyNode.start;
238
+ const s = new MagicString(bodyText);
239
+ const pad = bodyNode.type === "BlockStatement" ? 0 : 2;
240
+ function walk(node, inNestedBreakable, inNestedLoop, inFunction) {
241
+ if (!node || typeof node !== "object") return;
242
+ if (FUNCTION_TYPES.has(node.type)) {
243
+ eachChild(node, c => walk(c, inNestedBreakable, inNestedLoop, true));
244
+ return;
245
+ }
246
+ if (node.type === "BreakStatement" && !node.label && !inNestedBreakable) {
247
+ s.overwrite(node.start - offset + pad, node.end - offset + pad, "return 1;");
248
+ return;
249
+ }
250
+ if (node.type === "ContinueStatement" && !node.label && !inNestedLoop) {
251
+ s.overwrite(node.start - offset + pad, node.end - offset + pad, "return;");
252
+ return;
253
+ }
254
+ if (node.type === "ReturnStatement" && !inFunction) {
255
+ const arg = node.argument;
256
+ const replacement = arg ? `return { v: ${code.slice(arg.start, arg.end)} };` : "return { v: undefined };";
257
+ s.overwrite(node.start - offset + pad, node.end - offset + pad, replacement);
258
+ return;
259
+ }
260
+ const isLoop = node.type === "ForStatement" || node.type === "ForOfStatement" || node.type === "ForInStatement" || node.type === "WhileStatement" || node.type === "DoWhileStatement";
261
+ const isBreakable = isLoop || node.type === "SwitchStatement";
262
+ eachChild(node, c => walk(c, inNestedBreakable || isBreakable, inNestedLoop || isLoop, inFunction));
263
+ }
264
+ walk(bodyNode, false, false, false);
265
+ return s.toString();
266
+ }
267
+ function transformHermesLoops(code, filename) {
268
+ if (!LOOP_RE.test(code) || !LEXICAL_RE.test(code)) return null;
269
+ let current = code;
270
+ const maps = [];
271
+ for (let i = 0; i < 10; i++) {
272
+ const next = transformOnce(current, filename);
273
+ if (!next) break;
274
+ current = next.code;
275
+ maps.push(next.map);
276
+ }
277
+ return maps.length ? {
278
+ code: current,
279
+ maps
280
+ } : null;
281
+ }
282
+ export { transformHermesLoops };
283
+ //# sourceMappingURL=transformHermesLoops.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MagicString","parseSync","LOOP_RE","LEXICAL_RE","langFor","filename","ext","split","pop","collectPatternNames","node","out","type","push","name","p","properties","value","argument","el","elements","left","FUNCTION_TYPES","Set","eachChild","fn","key","Array","isArray","item","capturesInClosure","body","names","found","scanInsideFunction","shadowed","has","inner","params","add","id","c","computed","object","walk","analyzeBody","facts","hasBreak","hasContinue","hasReturn","hasAwait","hasYield","assignsBinding","hasLabeledJump","inNestedBreakable","inNestedLoop","inFunction","label","isLoop","isBreakable","collectBodyLexicalNames","kind","d","declarations","LOOP_TYPES","headDeclaration","init","transformOnce","code","parsed","lang","program","errors","length","candidates","findLoops","insideCandidate","isCandidate","decl","shared","s","counter","changed","nameSet","fnName","join","bodyText","slice","start","end","rewriteJumps","asyncKw","awaitKw","call","checks","overwrite","appendLeft","toString","map","generateMap","hires","source","includeContent","bodyNode","offset","pad","arg","replacement","transformHermesLoops","test","current","maps","i","next"],"sources":["../../src/transformHermesLoops.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}