@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.
- package/dist/cjs/cache.cjs +4 -2
- package/dist/cjs/configure.cjs +9 -1
- package/dist/cjs/index.cjs +87 -5
- package/dist/cjs/reactNativeCodegen.cjs +140 -0
- package/dist/cjs/reactNativeViewConfig.cjs +489 -0
- package/dist/cjs/transformBabel.cjs +15 -20
- package/dist/cjs/transformBabel.test.cjs +260 -0
- package/dist/cjs/transformHermesAsync.cjs +61 -0
- package/dist/cjs/transformHermesLoops.cjs +319 -0
- package/dist/cjs/transformHermesLoops.test.cjs +257 -0
- package/dist/cjs/transformSWC.cjs +110 -138
- package/dist/cjs/transformSWC.test.cjs +117 -0
- package/dist/cjs/transformWorklets.cjs +123 -0
- package/dist/cjs/transformWorklets.test.cjs +604 -0
- package/dist/cjs/worklets/autoworklet.cjs +265 -0
- package/dist/cjs/worklets/globals.cjs +73 -0
- package/dist/cjs/worklets/hash.cjs +38 -0
- package/dist/cjs/worklets/scope.cjs +370 -0
- package/dist/cjs/worklets/serialize.cjs +101 -0
- package/dist/cjs/worklets/transform.cjs +266 -0
- package/dist/cjs/worklets/types.cjs +18 -0
- package/dist/esm/cache.mjs +5 -3
- package/dist/esm/cache.mjs.map +1 -1
- package/dist/esm/configure.mjs +8 -1
- package/dist/esm/configure.mjs.map +1 -1
- package/dist/esm/index.js +75 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +75 -6
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/reactNativeCodegen.mjs +104 -0
- package/dist/esm/reactNativeCodegen.mjs.map +1 -0
- package/dist/esm/reactNativeViewConfig.mjs +460 -0
- package/dist/esm/reactNativeViewConfig.mjs.map +1 -0
- package/dist/esm/transformBabel.mjs +14 -19
- package/dist/esm/transformBabel.mjs.map +1 -1
- package/dist/esm/transformBabel.test.mjs +261 -1
- package/dist/esm/transformBabel.test.mjs.map +1 -1
- package/dist/esm/transformHermesAsync.mjs +25 -0
- package/dist/esm/transformHermesAsync.mjs.map +1 -0
- package/dist/esm/transformHermesLoops.mjs +283 -0
- package/dist/esm/transformHermesLoops.mjs.map +1 -0
- package/dist/esm/transformHermesLoops.test.mjs +234 -0
- package/dist/esm/transformHermesLoops.test.mjs.map +1 -0
- package/dist/esm/transformSWC.mjs +96 -139
- package/dist/esm/transformSWC.mjs.map +1 -1
- package/dist/esm/transformSWC.test.mjs +118 -0
- package/dist/esm/transformSWC.test.mjs.map +1 -0
- package/dist/esm/transformWorklets.mjs +82 -0
- package/dist/esm/transformWorklets.mjs.map +1 -0
- package/dist/esm/transformWorklets.test.mjs +581 -0
- package/dist/esm/transformWorklets.test.mjs.map +1 -0
- package/dist/esm/worklets/autoworklet.mjs +234 -0
- package/dist/esm/worklets/autoworklet.mjs.map +1 -0
- package/dist/esm/worklets/globals.mjs +46 -0
- package/dist/esm/worklets/globals.mjs.map +1 -0
- package/dist/esm/worklets/hash.mjs +13 -0
- package/dist/esm/worklets/hash.mjs.map +1 -0
- package/dist/esm/worklets/scope.mjs +345 -0
- package/dist/esm/worklets/scope.mjs.map +1 -0
- package/dist/esm/worklets/serialize.mjs +75 -0
- package/dist/esm/worklets/serialize.mjs.map +1 -0
- package/dist/esm/worklets/transform.mjs +229 -0
- package/dist/esm/worklets/transform.mjs.map +1 -0
- package/dist/esm/worklets/types.mjs +2 -0
- package/dist/esm/worklets/types.mjs.map +1 -0
- package/package.json +11 -6
- package/src/cache.ts +10 -3
- package/src/configure.ts +12 -0
- package/src/index.ts +96 -13
- package/src/reactNativeCodegen.ts +181 -0
- package/src/reactNativeViewConfig.ts +593 -0
- package/src/transformBabel.test.ts +268 -1
- package/src/transformBabel.ts +21 -31
- package/src/transformHermesAsync.ts +30 -0
- package/src/transformHermesLoops.test.ts +341 -0
- package/src/transformHermesLoops.ts +435 -0
- package/src/transformSWC.test.ts +132 -0
- package/src/transformSWC.ts +121 -161
- package/src/transformWorklets.test.ts +708 -0
- package/src/transformWorklets.ts +160 -0
- package/src/types.ts +4 -4
- package/src/worklets/autoworklet.ts +391 -0
- package/src/worklets/globals.ts +129 -0
- package/src/worklets/hash.ts +14 -0
- package/src/worklets/scope.ts +401 -0
- package/src/worklets/serialize.ts +114 -0
- package/src/worklets/transform.ts +319 -0
- package/src/worklets/types.ts +26 -0
- package/types/cache.d.ts +1 -0
- package/types/cache.d.ts.map +1 -1
- package/types/configure.d.ts +2 -0
- package/types/configure.d.ts.map +1 -1
- package/types/index.d.ts +6 -0
- package/types/index.d.ts.map +1 -1
- package/types/reactNativeCodegen.d.ts +5 -0
- package/types/reactNativeCodegen.d.ts.map +1 -0
- package/types/reactNativeViewConfig.d.ts +35 -0
- package/types/reactNativeViewConfig.d.ts.map +1 -0
- package/types/transformBabel.d.ts +3 -3
- package/types/transformBabel.d.ts.map +1 -1
- package/types/transformHermesAsync.d.ts +5 -0
- package/types/transformHermesAsync.d.ts.map +1 -0
- package/types/transformHermesLoops.d.ts +5 -0
- package/types/transformHermesLoops.d.ts.map +1 -0
- package/types/transformHermesLoops.test.d.ts +2 -0
- package/types/transformHermesLoops.test.d.ts.map +1 -0
- package/types/transformSWC.d.ts +13 -3
- package/types/transformSWC.d.ts.map +1 -1
- package/types/transformSWC.test.d.ts +2 -0
- package/types/transformSWC.test.d.ts.map +1 -0
- package/types/transformWorklets.d.ts +23 -0
- package/types/transformWorklets.d.ts.map +1 -0
- package/types/transformWorklets.test.d.ts +2 -0
- package/types/transformWorklets.test.d.ts.map +1 -0
- package/types/types.d.ts +4 -4
- package/types/types.d.ts.map +1 -1
- package/types/worklets/autoworklet.d.ts +14 -0
- package/types/worklets/autoworklet.d.ts.map +1 -0
- package/types/worklets/globals.d.ts +4 -0
- package/types/worklets/globals.d.ts.map +1 -0
- package/types/worklets/hash.d.ts +5 -0
- package/types/worklets/hash.d.ts.map +1 -0
- package/types/worklets/scope.d.ts +7 -0
- package/types/worklets/scope.d.ts.map +1 -0
- package/types/worklets/serialize.d.ts +12 -0
- package/types/worklets/serialize.d.ts.map +1 -0
- package/types/worklets/transform.d.ts +10 -0
- package/types/worklets/transform.d.ts.map +1 -0
- package/types/worklets/types.d.ts +21 -0
- 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":"AAAA,OAAOA,WAAA,MAAiB;AACxB,SAASC,SAAA,QAAiB;AAkC1B,MAAMC,OAAA,GAAU;AAChB,MAAMC,UAAA,GAAa;AAOnB,SAASC,QAAQC,QAAA,EAAkB;EACjC,MAAMC,GAAA,GAAMD,QAAA,CAASE,KAAA,CAAM,GAAG,EAAE,CAAC,EAAEA,KAAA,CAAM,GAAG,EAAEC,GAAA,CAAI,KAAK;EAIvD,IAAIF,GAAA,KAAQ,QAAQA,GAAA,KAAQ,SAASA,GAAA,KAAQ,OAAO,OAAO;EAC3D,IAAIA,GAAA,KAAQ,OAAO,OAAO;EAC1B,OAAO;AACT;AAEA,SAASG,oBAAoBC,IAAA,EAAWC,GAAA,EAAe;EACrD,IAAI,CAACD,IAAA,IAAQ,OAAOA,IAAA,KAAS,UAAU;EACvC,QAAQA,IAAA,CAAKE,IAAA;IACX,KAAK;MACHD,GAAA,CAAIE,IAAA,CAAKH,IAAA,CAAKI,IAAI;MAClB;IACF,KAAK;MACH,WAAWC,CAAA,IAAKL,IAAA,CAAKM,UAAA,IAAc,EAAC,EAAG;QACrCP,mBAAA,CAAoBM,CAAA,CAAEE,KAAA,IAASF,CAAA,CAAEG,QAAA,EAAUP,GAAG;MAChD;MACA;IACF,KAAK;MACH,WAAWQ,EAAA,IAAMT,IAAA,CAAKU,QAAA,IAAY,EAAC,EAAGX,mBAAA,CAAoBU,EAAA,EAAIR,GAAG;MACjE;IACF,KAAK;MACHF,mBAAA,CAAoBC,IAAA,CAAKW,IAAA,EAAMV,GAAG;MAClC;IACF,KAAK;MACHF,mBAAA,CAAoBC,IAAA,CAAKQ,QAAA,EAAUP,GAAG;MACtC;EACJ;AACF;AAEA,MAAMW,cAAA,GAAiB,mBAAIC,GAAA,CAAI,CAC7B,uBACA,sBACA,0BACD;AAED,SAASC,UAAUd,IAAA,EAAWe,EAAA,EAA0B;EACtD,WAAWC,GAAA,IAAOhB,IAAA,EAAM;IACtB,IAAIgB,GAAA,KAAQ,UAAUA,GAAA,KAAQ,WAAWA,GAAA,KAAQ,SAASA,GAAA,KAAQ,UAAU;IAC5E,MAAMT,KAAA,GAAQP,IAAA,CAAKgB,GAAG;IACtB,IAAIC,KAAA,CAAMC,OAAA,CAAQX,KAAK,GAAG;MACxB,WAAWY,IAAA,IAAQZ,KAAA,EAAO;QACxB,IAAIY,IAAA,IAAQ,OAAOA,IAAA,CAAKjB,IAAA,KAAS,UAAUa,EAAA,CAAGI,IAAI;MACpD;IACF,WAAWZ,KAAA,IAAS,OAAOA,KAAA,KAAU,YAAY,OAAOA,KAAA,CAAML,IAAA,KAAS,UAAU;MAC/Ea,EAAA,CAAGR,KAAK;IACV;EACF;AACF;AAGA,SAASa,kBAAkBC,IAAA,EAAWC,KAAA,EAA6B;EACjE,IAAIC,KAAA,GAAQ;EAEZ,SAASC,mBAAmBxB,IAAA,EAAWyB,QAAA,EAAuB;IAC5D,IAAIF,KAAA,IAAS,CAACvB,IAAA,IAAQ,OAAOA,IAAA,KAAS,UAAU;IAChD,IAAIA,IAAA,CAAKE,IAAA,KAAS,gBAAgBoB,KAAA,CAAMI,GAAA,CAAI1B,IAAA,CAAKI,IAAI,KAAK,CAACqB,QAAA,CAASC,GAAA,CAAI1B,IAAA,CAAKI,IAAI,GAAG;MAClFmB,KAAA,GAAQ;MACR;IACF;IACA,IAAIX,cAAA,CAAec,GAAA,CAAI1B,IAAA,CAAKE,IAAI,GAAG;MACjC,MAAMyB,KAAA,GAAQ,IAAId,GAAA,CAAIY,QAAQ;MAC9B,MAAMG,MAAA,GAAmB,EAAC;MAC1B,WAAWvB,CAAA,IAAKL,IAAA,CAAK4B,MAAA,IAAU,EAAC,EAAG7B,mBAAA,CAAoBM,CAAA,EAAGuB,MAAM;MAChE,WAAWvB,CAAA,IAAKuB,MAAA,EAAQD,KAAA,CAAME,GAAA,CAAIxB,CAAC;MACnC,IAAIL,IAAA,CAAK8B,EAAA,EAAI1B,IAAA,EAAMuB,KAAA,CAAME,GAAA,CAAI7B,IAAA,CAAK8B,EAAA,CAAG1B,IAAI;MACzCU,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IAAMP,kBAAA,CAAmBO,CAAA,EAAGJ,KAAK,CAAC;MACnD;IACF;IAEA,IAAI3B,IAAA,CAAKE,IAAA,KAAS,sBAAsB,CAACF,IAAA,CAAKgC,QAAA,EAAU;MACtDR,kBAAA,CAAmBxB,IAAA,CAAKiC,MAAA,EAAQR,QAAQ;MACxC;IACF;IACA,IAAIzB,IAAA,CAAKE,IAAA,KAAS,cAAc,CAACF,IAAA,CAAKgC,QAAA,IAAYhC,IAAA,CAAKgB,GAAA,KAAQhB,IAAA,CAAKO,KAAA,EAAO;MAEzEiB,kBAAA,CAAmBxB,IAAA,CAAKO,KAAA,EAAOkB,QAAQ;MACvC;IACF;IACAX,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IAAMP,kBAAA,CAAmBO,CAAA,EAAGN,QAAQ,CAAC;EACxD;EAEA,SAASS,KAAKlC,IAAA,EAAW;IACvB,IAAIuB,KAAA,IAAS,CAACvB,IAAA,IAAQ,OAAOA,IAAA,KAAS,UAAU;IAChD,IAAIY,cAAA,CAAec,GAAA,CAAI1B,IAAA,CAAKE,IAAI,GAAG;MACjC,MAAMuB,QAAA,GAAW,mBAAIZ,GAAA,CAAY;MACjC,MAAMe,MAAA,GAAmB,EAAC;MAC1B,WAAWvB,CAAA,IAAKL,IAAA,CAAK4B,MAAA,IAAU,EAAC,EAAG7B,mBAAA,CAAoBM,CAAA,EAAGuB,MAAM;MAChE,WAAWvB,CAAA,IAAKuB,MAAA,EAAQH,QAAA,CAASI,GAAA,CAAIxB,CAAC;MACtCS,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IAAMP,kBAAA,CAAmBO,CAAA,EAAGN,QAAQ,CAAC;MACtD;IACF;IACAX,SAAA,CAAUd,IAAA,EAAMkC,IAAI;EACtB;EAEAA,IAAA,CAAKb,IAAI;EACT,OAAOE,KAAA;AACT;AAiBA,SAASY,YAAYd,IAAA,EAAWC,KAAA,EAA+B;EAC7D,MAAMc,KAAA,GAAmB;IACvBC,QAAA,EAAU;IACVC,WAAA,EAAa;IACbC,SAAA,EAAW;IACXC,QAAA,EAAU;IACVC,QAAA,EAAU;IACVC,cAAA,EAAgB;IAChBC,cAAA,EAAgB;EAClB;EAEA,SAAST,KAAKlC,IAAA,EAAW4C,iBAAA,EAA4BC,YAAA,EAAuBC,UAAA,EAAqB;IAC/F,IAAI,CAAC9C,IAAA,IAAQ,OAAOA,IAAA,KAAS,UAAU;IAEvC,IAAIY,cAAA,CAAec,GAAA,CAAI1B,IAAA,CAAKE,IAAI,GAAG;MACjCY,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IAAMG,IAAA,CAAKH,CAAA,EAAGa,iBAAA,EAAmBC,YAAA,EAAc,IAAI,CAAC;MACrE;IACF;IAEA,QAAQ7C,IAAA,CAAKE,IAAA;MACX,KAAK;QACH,IAAIF,IAAA,CAAK+C,KAAA,EAAOX,KAAA,CAAMO,cAAA,GAAiB,cAC9B,CAACC,iBAAA,EAAmBR,KAAA,CAAMC,QAAA,GAAW;QAC9C;MACF,KAAK;QACH,IAAIrC,IAAA,CAAK+C,KAAA,EAAOX,KAAA,CAAMO,cAAA,GAAiB,cAC9B,CAACE,YAAA,EAAcT,KAAA,CAAME,WAAA,GAAc;QAC5C;MACF,KAAK;QACH,IAAI,CAACQ,UAAA,EAAYV,KAAA,CAAMG,SAAA,GAAY;QACnC;MACF,KAAK;QACH,IAAI,CAACO,UAAA,EAAYV,KAAA,CAAMI,QAAA,GAAW;QAClC;MACF,KAAK;QACH,IAAI,CAACM,UAAA,EAAYV,KAAA,CAAMK,QAAA,GAAW;QAClC;MACF,KAAK;QACH,IAAIzC,IAAA,CAAKW,IAAA,EAAMT,IAAA,KAAS,gBAAgBoB,KAAA,CAAMI,GAAA,CAAI1B,IAAA,CAAKW,IAAA,CAAKP,IAAI,GAAG;UACjEgC,KAAA,CAAMM,cAAA,GAAiB;QACzB;QACA;MACF,KAAK;QACH,IAAI1C,IAAA,CAAKQ,QAAA,EAAUN,IAAA,KAAS,gBAAgBoB,KAAA,CAAMI,GAAA,CAAI1B,IAAA,CAAKQ,QAAA,CAASJ,IAAI,GAAG;UACzEgC,KAAA,CAAMM,cAAA,GAAiB;QACzB;QACA;IACJ;IAEA,MAAMM,MAAA,GACJhD,IAAA,CAAKE,IAAA,KAAS,kBACdF,IAAA,CAAKE,IAAA,KAAS,oBACdF,IAAA,CAAKE,IAAA,KAAS,oBACdF,IAAA,CAAKE,IAAA,KAAS,oBACdF,IAAA,CAAKE,IAAA,KAAS;IAChB,MAAM+C,WAAA,GAAcD,MAAA,IAAUhD,IAAA,CAAKE,IAAA,KAAS;IAE5CY,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IACfG,IAAA,CAAKH,CAAA,EAAGa,iBAAA,IAAqBK,WAAA,EAAaJ,YAAA,IAAgBG,MAAA,EAAQF,UAAU,CAC9E;EACF;EAEAZ,IAAA,CAAKb,IAAA,EAAM,OAAO,OAAO,KAAK;EAC9B,OAAOe,KAAA;AACT;AAQA,SAASc,wBAAwBlD,IAAA,EAAWC,GAAA,EAAe;EACzD,IAAI,CAACD,IAAA,IAAQ,OAAOA,IAAA,KAAS,YAAY,OAAOA,IAAA,CAAKE,IAAA,KAAS,UAAU;EACxE,IAAIU,cAAA,CAAec,GAAA,CAAI1B,IAAA,CAAKE,IAAI,KAAKF,IAAA,CAAKE,IAAA,KAAS,aAAa;EAChE,IAAIF,IAAA,CAAKE,IAAA,KAAS,uBAAuB;IACvC,IAAIF,IAAA,CAAKmD,IAAA,KAAS,SAASnD,IAAA,CAAKmD,IAAA,KAAS,SAAS;MAChD,WAAWC,CAAA,IAAKpD,IAAA,CAAKqD,YAAA,IAAgB,EAAC,EAAGtD,mBAAA,CAAoBqD,CAAA,CAAEtB,EAAA,EAAI7B,GAAG;IACxE;IACA;EACF;EACA,IAAID,IAAA,CAAKE,IAAA,KAAS,oBAAoB;IACpC,IAAIF,IAAA,CAAK8B,EAAA,EAAI1B,IAAA,EAAMH,GAAA,CAAIE,IAAA,CAAKH,IAAA,CAAK8B,EAAA,CAAG1B,IAAI;IACxC;EACF;EACAU,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IAAMmB,uBAAA,CAAwBnB,CAAA,EAAG9B,GAAG,CAAC;AACxD;AAEA,MAAMqD,UAAA,GAAa,mBAAIzC,GAAA,CAAI,CACzB,gBACA,kBACA,kBACA,kBACA,mBACD;AAED,SAAS0C,gBAAgBvD,IAAA,EAAgB;EACvC,IAAIA,IAAA,CAAKE,IAAA,KAAS,gBAAgB,OAAOF,IAAA,CAAKwD,IAAA;EAC9C,IAAIxD,IAAA,CAAKE,IAAA,KAAS,oBAAoBF,IAAA,CAAKE,IAAA,KAAS,kBAAkB,OAAOF,IAAA,CAAKW,IAAA;EAClF,OAAO;AACT;AAQA,SAAS8C,cACPC,IAAA,EACA/D,QAAA,EACmC;EACnC,MAAMgE,MAAA,GAASpE,SAAA,CAAUI,QAAA,EAAU+D,IAAA,EAAM;IAAEE,IAAA,EAAMlE,OAAA,CAAQC,QAAQ;EAAE,CAAC;EACpE,IAAI,CAACgE,MAAA,EAAQE,OAAA,IAAWF,MAAA,CAAOG,MAAA,EAAQC,MAAA,EAAQ,OAAO;EAEtD,MAAMC,UAAA,GAAqB,EAAC;EAE5B,SAASC,UAAUjE,IAAA,EAAWkE,eAAA,EAA0B;IACtD,IAAI,CAAClE,IAAA,IAAQ,OAAOA,IAAA,KAAS,UAAU;IAEvC,IAAImE,WAAA,GAAc;IAClB,IAAIb,UAAA,CAAW5B,GAAA,CAAI1B,IAAA,CAAKE,IAAI,KAAKF,IAAA,CAAKqB,IAAA,EAAM;MAG1C,MAAMC,KAAA,GAAkB,EAAC;MACzB,MAAM8C,IAAA,GAAOb,eAAA,CAAgBvD,IAAI;MACjC,IAAIoE,IAAA,EAAMlE,IAAA,KAAS,0BAA0BkE,IAAA,CAAKjB,IAAA,KAAS,SAASiB,IAAA,CAAKjB,IAAA,KAAS,UAAU;QAC1F,WAAWC,CAAA,IAAKgB,IAAA,CAAKf,YAAA,IAAgB,EAAC,EAAGtD,mBAAA,CAAoBqD,CAAA,CAAEtB,EAAA,EAAIR,KAAK;MAC1E;MACA,MAAM+C,MAAA,GAAS,CAAC,GAAG/C,KAAK;MACxB4B,uBAAA,CAAwBlD,IAAA,CAAKqB,IAAA,EAAMgD,MAAM;MACzC,IAAIA,MAAA,CAAON,MAAA,IAAU3C,iBAAA,CAAkBpB,IAAA,CAAKqB,IAAA,EAAM,IAAIR,GAAA,CAAIwD,MAAM,CAAC,GAAG;QAClEF,WAAA,GAAc;QACd,IAAI,CAACD,eAAA,EAAiBF,UAAA,CAAW7D,IAAA,CAAK;UAAEH,IAAA;UAAMsB;QAAM,CAAC;MACvD;IACF;IAEAR,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IAAMkC,SAAA,CAAUlC,CAAA,EAAGmC,eAAA,IAAmBC,WAAW,CAAC;EACrE;EAEAF,SAAA,CAAUN,MAAA,CAAOE,OAAA,EAAS,KAAK;EAC/B,IAAI,CAACG,UAAA,CAAWD,MAAA,EAAQ,OAAO;EAE/B,MAAMO,CAAA,GAAI,IAAIhF,WAAA,CAAYoE,IAAI;EAC9B,IAAIa,OAAA,GAAU;EACd,IAAIC,OAAA,GAAU;EAEd,WAAW;IAAExE,IAAA;IAAMsB;EAAM,KAAK0C,UAAA,EAAY;IACxC,MAAMS,OAAA,GAAU,IAAI5D,GAAA,CAAIS,KAAK;IAC7B,MAAMc,KAAA,GAAQD,WAAA,CAAYnC,IAAA,CAAKqB,IAAA,EAAMoD,OAAO;IAK5C,IAAIrC,KAAA,CAAMK,QAAA,IAAYL,KAAA,CAAMM,cAAA,IAAkBN,KAAA,CAAMO,cAAA,EAAgB;IAMpE,MAAM+B,MAAA,GAAS,cAAcH,OAAA,EAAS;IACtC,MAAM3C,MAAA,GAASN,KAAA,CAAMqD,IAAA,CAAK,IAAI;IAE9B,IAAIC,QAAA,GAAWlB,IAAA,CAAKmB,KAAA,CAAM7E,IAAA,CAAKqB,IAAA,CAAKyD,KAAA,EAAO9E,IAAA,CAAKqB,IAAA,CAAK0D,GAAG;IACxD,IAAI/E,IAAA,CAAKqB,IAAA,CAAKnB,IAAA,KAAS,kBAAkB;MACvC0E,QAAA,GAAW,KAAKA,QAAQ;IAC1B;IAEA,IAAIxC,KAAA,CAAMC,QAAA,IAAYD,KAAA,CAAMG,SAAA,IAAaH,KAAA,CAAME,WAAA,EAAa;MAC1DsC,QAAA,GAAWI,YAAA,CAAaJ,QAAA,EAAU5E,IAAA,CAAKqB,IAAA,EAAMqC,IAAA,EAAMe,OAAO;IAC5D;IAEA,MAAMQ,OAAA,GAAU7C,KAAA,CAAMI,QAAA,GAAW,WAAW;IAC5C,MAAM0C,OAAA,GAAU9C,KAAA,CAAMI,QAAA,GAAW,WAAW;IAE5C,IAAI2C,IAAA,GAAO,GAAGD,OAAO,GAAGR,MAAM,IAAI9C,MAAM;IACxC,IAAIQ,KAAA,CAAMC,QAAA,IAAYD,KAAA,CAAMG,SAAA,EAAW;MACrC,MAAM6C,MAAA,GAAmB,EAAC;MAC1B,IAAIhD,KAAA,CAAMC,QAAA,EAAU+C,MAAA,CAAOjF,IAAA,CAAK,sBAAsB;MACtD,IAAIiC,KAAA,CAAMG,SAAA,EAAW6C,MAAA,CAAOjF,IAAA,CAAK,sBAAsB;MACvDgF,IAAA,GAAO,cAAcA,IAAI,KAAKC,MAAA,CAAOT,IAAA,CAAK,GAAG,CAAC;IAChD,OAAO;MACLQ,IAAA,GAAO,KAAKA,IAAI;IAClB;IAEAb,CAAA,CAAEe,SAAA,CAAUrF,IAAA,CAAKqB,IAAA,CAAKyD,KAAA,EAAO9E,IAAA,CAAKqB,IAAA,CAAK0D,GAAA,EAAKI,IAAI;IAIhDb,CAAA,CAAEgB,UAAA,CAAWtF,IAAA,CAAK8E,KAAA,EAAO;AAAA,MAAUJ,MAAM,MAAMO,OAAO,IAAIrD,MAAM,QAAQgD,QAAQ;AAAA,CAAK;IACrFN,CAAA,CAAEgB,UAAA,CAAWtF,IAAA,CAAK+E,GAAA,EAAK,KAAK;IAC5BP,OAAA,GAAU;EACZ;EAEA,IAAI,CAACA,OAAA,EAAS,OAAO;EACrB,OAAO;IACLd,IAAA,EAAMY,CAAA,CAAEiB,QAAA,CAAS;IACjBC,GAAA,EAAKlB,CAAA,CAAEmB,WAAA,CAAY;MAAEC,KAAA,EAAO;MAAMC,MAAA,EAAQhG,QAAA;MAAUiG,cAAA,EAAgB;IAAM,CAAC;EAC7E;AACF;AASA,SAASZ,aAAaJ,QAAA,EAAkBiB,QAAA,EAAenC,IAAA,EAAcpC,KAAA,EAA4B;EAC/F,MAAMwE,MAAA,GAASD,QAAA,CAASf,KAAA;EACxB,MAAMR,CAAA,GAAI,IAAIhF,WAAA,CAAYsF,QAAQ;EAClC,MAAMmB,GAAA,GAAMF,QAAA,CAAS3F,IAAA,KAAS,mBAAmB,IAAI;EAErD,SAASgC,KAAKlC,IAAA,EAAW4C,iBAAA,EAA4BC,YAAA,EAAuBC,UAAA,EAAqB;IAC/F,IAAI,CAAC9C,IAAA,IAAQ,OAAOA,IAAA,KAAS,UAAU;IAEvC,IAAIY,cAAA,CAAec,GAAA,CAAI1B,IAAA,CAAKE,IAAI,GAAG;MACjCY,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IAAMG,IAAA,CAAKH,CAAA,EAAGa,iBAAA,EAAmBC,YAAA,EAAc,IAAI,CAAC;MACrE;IACF;IAEA,IAAI7C,IAAA,CAAKE,IAAA,KAAS,oBAAoB,CAACF,IAAA,CAAK+C,KAAA,IAAS,CAACH,iBAAA,EAAmB;MACvE0B,CAAA,CAAEe,SAAA,CAAUrF,IAAA,CAAK8E,KAAA,GAAQgB,MAAA,GAASC,GAAA,EAAK/F,IAAA,CAAK+E,GAAA,GAAMe,MAAA,GAASC,GAAA,EAAK,WAAW;MAC3E;IACF;IACA,IAAI/F,IAAA,CAAKE,IAAA,KAAS,uBAAuB,CAACF,IAAA,CAAK+C,KAAA,IAAS,CAACF,YAAA,EAAc;MACrEyB,CAAA,CAAEe,SAAA,CAAUrF,IAAA,CAAK8E,KAAA,GAAQgB,MAAA,GAASC,GAAA,EAAK/F,IAAA,CAAK+E,GAAA,GAAMe,MAAA,GAASC,GAAA,EAAK,SAAS;MACzE;IACF;IACA,IAAI/F,IAAA,CAAKE,IAAA,KAAS,qBAAqB,CAAC4C,UAAA,EAAY;MAClD,MAAMkD,GAAA,GAAMhG,IAAA,CAAKQ,QAAA;MACjB,MAAMyF,WAAA,GAAcD,GAAA,GAChB,eAAetC,IAAA,CAAKmB,KAAA,CAAMmB,GAAA,CAAIlB,KAAA,EAAOkB,GAAA,CAAIjB,GAAG,CAAC,QAC7C;MACJT,CAAA,CAAEe,SAAA,CAAUrF,IAAA,CAAK8E,KAAA,GAAQgB,MAAA,GAASC,GAAA,EAAK/F,IAAA,CAAK+E,GAAA,GAAMe,MAAA,GAASC,GAAA,EAAKE,WAAW;MAC3E;IACF;IAEA,MAAMjD,MAAA,GACJhD,IAAA,CAAKE,IAAA,KAAS,kBACdF,IAAA,CAAKE,IAAA,KAAS,oBACdF,IAAA,CAAKE,IAAA,KAAS,oBACdF,IAAA,CAAKE,IAAA,KAAS,oBACdF,IAAA,CAAKE,IAAA,KAAS;IAChB,MAAM+C,WAAA,GAAcD,MAAA,IAAUhD,IAAA,CAAKE,IAAA,KAAS;IAE5CY,SAAA,CAAUd,IAAA,EAAO+B,CAAA,IACfG,IAAA,CAAKH,CAAA,EAAGa,iBAAA,IAAqBK,WAAA,EAAaJ,YAAA,IAAgBG,MAAA,EAAQF,UAAU,CAC9E;EACF;EAEAZ,IAAA,CAAK2D,QAAA,EAAU,OAAO,OAAO,KAAK;EAClC,OAAOvB,CAAA,CAAEiB,QAAA,CAAS;AACpB;AAEO,SAASW,qBACdxC,IAAA,EACA/D,QAAA,EACsC;EACtC,IAAI,CAACH,OAAA,CAAQ2G,IAAA,CAAKzC,IAAI,KAAK,CAACjE,UAAA,CAAW0G,IAAA,CAAKzC,IAAI,GAAG,OAAO;EAE1D,IAAI0C,OAAA,GAAU1C,IAAA;EACd,MAAM2C,IAAA,GAAc,EAAC;EAIrB,SAASC,CAAA,GAAI,GAAGA,CAAA,GAAI,IAAIA,CAAA,IAAK;IAC3B,MAAMC,IAAA,GAAO9C,aAAA,CAAc2C,OAAA,EAASzG,QAAQ;IAC5C,IAAI,CAAC4G,IAAA,EAAM;IACXH,OAAA,GAAUG,IAAA,CAAK7C,IAAA;IACf2C,IAAA,CAAKlG,IAAA,CAAKoG,IAAA,CAAKf,GAAG;EACpB;EAEA,OAAOa,IAAA,CAAKtC,MAAA,GAAS;IAAEL,IAAA,EAAM0C,OAAA;IAASC;EAAK,IAAI;AACjD","ignoreList":[]}
|