@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
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getClosureVariables","fnNode","globals","rootScope","parent","isFunction","bindings","Set","varBindings","currentScope","freeVariables","id","name","add","pushScope","newScope","popScope","addBindings","pattern","targetSet","type","left","walk","right","argument","el","elements","prop","properties","computed","key","value","addBindingsOnly","hoistDeclarations","node","direct","kind","d","declarations","declaration","Object","keys","child","Array","isArray","item","params","param","isDeclaredInScopes","fromScope","s","has","resolveIdentifier","expression","isRootBody","body","stmt","isVar","decl","init","test","update","superClass","object","property","openingElement","nameNode","root","attributes","attr","children","from","sort"],"sources":["../../../src/worklets/scope.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ import { transformSync } from "oxc-transform";
2
+ import { bodyStartAfterDirectives } from "./autoworklet.mjs";
3
+ function assertTransformed(transformed, name, what) {
4
+ const error = transformed.errors?.[0];
5
+ if (error) {
6
+ throw new Error(`[worklets] failed to build ${what} code for ${name || "anonymous worklet"}: ${error.message || error}`);
7
+ }
8
+ if (!transformed.code.trim()) {
9
+ throw new Error(`[worklets] built empty ${what} code for ${name || "anonymous worklet"}`);
10
+ }
11
+ }
12
+ function serializeWorkletForUI(fnNode, code, name, closureVars) {
13
+ let rawParams = "";
14
+ if (fnNode.params && fnNode.params.length > 0) {
15
+ const pStart = fnNode.params[0].start;
16
+ const pEnd = fnNode.params[fnNode.params.length - 1].end;
17
+ rawParams = code.slice(pStart, pEnd);
18
+ }
19
+ let rawBody = "";
20
+ if (fnNode.body.type === "BlockStatement") {
21
+ const bodyStart = bodyStartAfterDirectives(fnNode, code);
22
+ const bodyEnd = fnNode.body.end - 1;
23
+ rawBody = code.slice(bodyStart, bodyEnd);
24
+ } else {
25
+ rawBody = `return ${code.slice(fnNode.body.start, fnNode.body.end)};`;
26
+ }
27
+ const unpacker = closureVars.length > 0 ? `const { ${closureVars.join(", ")} } = this.__closure ?? this._closure;
28
+ ` : "";
29
+ const asyncPrefix = fnNode.async ? "async " : "";
30
+ const genPrefix = fnNode.generator ? "*" : "";
31
+ const fnName = name || "_worklet";
32
+ const fullFn = `${asyncPrefix}function${genPrefix} ${fnName}(${rawParams}) {
33
+ ${unpacker}${rawBody}
34
+ }`;
35
+ const transformed = transformSync("worklet.ts", fullFn);
36
+ assertTransformed(transformed, name, "serialized");
37
+ return transformed.code.trim();
38
+ }
39
+ function buildLocalFunction(fnNode, code, name) {
40
+ let rawParams = "";
41
+ if (fnNode.params && fnNode.params.length > 0) {
42
+ const pStart = fnNode.params[0].start;
43
+ const pEnd = fnNode.params[fnNode.params.length - 1].end;
44
+ rawParams = code.slice(pStart, pEnd);
45
+ }
46
+ let rawBody = "";
47
+ if (fnNode.body.type === "BlockStatement") {
48
+ const bodyStart = bodyStartAfterDirectives(fnNode, code);
49
+ const bodyEnd = fnNode.body.end - 1;
50
+ rawBody = code.slice(bodyStart, bodyEnd);
51
+ } else {
52
+ rawBody = code.slice(fnNode.body.start, fnNode.body.end);
53
+ }
54
+ let rawFn = "";
55
+ const asyncPrefix = fnNode.async ? "async " : "";
56
+ const genPrefix = fnNode.generator ? "*" : "";
57
+ if (fnNode.type === "ArrowFunctionExpression") {
58
+ if (fnNode.body.type === "BlockStatement") {
59
+ rawFn = `${asyncPrefix}(${rawParams}) => {
60
+ ${rawBody}
61
+ }`;
62
+ } else {
63
+ rawFn = `${asyncPrefix}(${rawParams}) => (${rawBody})`;
64
+ }
65
+ } else {
66
+ rawFn = `${asyncPrefix}function${genPrefix} ${name || "_worklet"}(${rawParams}) {
67
+ ${rawBody}
68
+ }`;
69
+ }
70
+ const transformed = transformSync("local.ts", rawFn);
71
+ assertTransformed(transformed, name, "local");
72
+ return transformed.code.trim().replace(/;$/, "");
73
+ }
74
+ export { buildLocalFunction, serializeWorkletForUI };
75
+ //# sourceMappingURL=serialize.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["transformSync","bodyStartAfterDirectives","assertTransformed","transformed","name","what","error","errors","Error","message","code","trim","serializeWorkletForUI","fnNode","closureVars","rawParams","params","length","pStart","start","pEnd","end","slice","rawBody","body","type","bodyStart","bodyEnd","unpacker","join","asyncPrefix","async","genPrefix","generator","fnName","fullFn","buildLocalFunction","rawFn","replace"],"sources":["../../../src/worklets/serialize.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,229 @@
1
+ import path from "node:path";
2
+ import MagicString from "magic-string";
3
+ import remapping from "@jridgewell/remapping";
4
+ import { parseSync } from "oxc-parser";
5
+ import { bodyStartAfterDirectives, findWorkletCandidates, hasDirective } from "./autoworklet.mjs";
6
+ import { createGlobalsSet } from "./globals.mjs";
7
+ import { calculateWorkletHash } from "./hash.mjs";
8
+ import { getClosureVariables } from "./scope.mjs";
9
+ import { buildLocalFunction, serializeWorkletForUI } from "./serialize.mjs";
10
+ const FUNCTION_TYPES = /* @__PURE__ */new Set(["FunctionDeclaration", "FunctionExpression", "ArrowFunctionExpression"]);
11
+ function prepareWorkletsForReactCompiler(id, code, sourceMaps = false) {
12
+ const cleanId = id.split("?")[0];
13
+ const parsed = parseSync(cleanId, code, {
14
+ sourceType: "module",
15
+ lang: /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx"
16
+ });
17
+ if (parsed.errors.length) {
18
+ const error = parsed.errors[0];
19
+ throw new Error(error.codeframe || error.message || "Syntax Error while parsing worklet");
20
+ }
21
+ const candidates = findWorkletCandidates(parsed.program).filter(candidate => candidate.isAutoWorklet && !hasDirective(candidate.fnNode, "worklet"));
22
+ if (!candidates.length) return null;
23
+ const output = new MagicString(code);
24
+ for (const {
25
+ fnNode
26
+ } of candidates) {
27
+ const body = fnNode.body;
28
+ if (body.type === "BlockStatement") {
29
+ output.appendLeft(body.start + 1, "'worklet';");
30
+ } else {
31
+ output.appendLeft(body.start, "{ 'worklet'; return (");
32
+ output.appendLeft(body.end, "); }");
33
+ }
34
+ }
35
+ return {
36
+ code: output.toString(),
37
+ map: sourceMaps ? output.generateMap({
38
+ source: cleanId,
39
+ hires: true,
40
+ includeContent: true
41
+ }) : void 0
42
+ };
43
+ }
44
+ function findEnclosingFunction(program, node) {
45
+ let best = void 0;
46
+ const walk = n => {
47
+ if (!n || typeof n !== "object") return;
48
+ if (Array.isArray(n)) {
49
+ for (const c of n) walk(c);
50
+ return;
51
+ }
52
+ if (typeof n.type !== "string") return;
53
+ if (typeof n.start === "number" && (n.start > node.start || n.end < node.end)) return;
54
+ if (FUNCTION_TYPES.has(n.type) && n !== node && n.body?.type === "BlockStatement" && n.body.start < node.start && n.body.end > node.end && (!best || n.body.start > best.body.start)) {
55
+ best = n;
56
+ }
57
+ for (const key in n) {
58
+ if (key === "parent") continue;
59
+ walk(n[key]);
60
+ }
61
+ };
62
+ walk(program);
63
+ return best;
64
+ }
65
+ function executeWorkletTransform(id, code, sourceMaps = false, options, resolveVersionFn) {
66
+ const cleanId = id.split("?")[0];
67
+ const lang = /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx";
68
+ const initialParse = parseSync(cleanId, code, {
69
+ sourceType: "module",
70
+ lang
71
+ });
72
+ if (initialParse.errors && initialParse.errors.length > 0) {
73
+ const err = initialParse.errors[0];
74
+ throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
75
+ }
76
+ const initialCandidates = findWorkletCandidates(initialParse.program);
77
+ if (initialCandidates.length === 0) {
78
+ let map2 = void 0;
79
+ if (sourceMaps) {
80
+ const ms = new MagicString(code);
81
+ map2 = ms.generateMap({
82
+ source: cleanId,
83
+ file: cleanId,
84
+ hires: true,
85
+ includeContent: true
86
+ });
87
+ }
88
+ return {
89
+ code,
90
+ map: map2
91
+ };
92
+ }
93
+ const pluginVersion = options?.pluginVersion || (resolveVersionFn ? resolveVersionFn(options?.projectRoot, cleanId) : "0.0.0");
94
+ const globals = createGlobalsSet(options?.globals, options?.strictGlobal);
95
+ let location = cleanId;
96
+ if (options?.relativeSourceLocation && options?.projectRoot) {
97
+ location = path.relative(options.projectRoot, cleanId).replace(/\\/g, "/");
98
+ }
99
+ let currentCode = code;
100
+ const initDataDefs = /* @__PURE__ */new Map();
101
+ const passMaps = [];
102
+ let remainingPassBudget = 100;
103
+ while (remainingPassBudget-- > 0) {
104
+ const parseResult = parseSync(cleanId, currentCode, {
105
+ sourceType: "module",
106
+ lang
107
+ });
108
+ if (parseResult.errors && parseResult.errors.length > 0) {
109
+ const err = parseResult.errors[0];
110
+ throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
111
+ }
112
+ const candidates = findWorkletCandidates(parseResult.program);
113
+ if (candidates.length === 0) {
114
+ break;
115
+ }
116
+ const innermostCandidates = candidates.filter(c => {
117
+ return !candidates.some(other => other !== c && other.fnNode.start >= c.fnNode.start && other.fnNode.end <= c.fnNode.end);
118
+ });
119
+ if (innermostCandidates.length === 0) {
120
+ throw new Error(`[worklets] Cyclic or unresolvable worklet nesting detected in ${cleanId}`);
121
+ }
122
+ const ms = new MagicString(currentCode);
123
+ const inlinedInitData = /* @__PURE__ */new Map();
124
+ for (const candidate of innermostCandidates) {
125
+ const closureVars = hasDirective(candidate.fnNode, "no-worklet-closure") ? [] : getClosureVariables(candidate.fnNode, globals);
126
+ const fnName = candidate.name;
127
+ const serializedCode = serializeWorkletForUI(candidate.fnNode, currentCode, fnName, closureVars);
128
+ const workletHash = calculateWorkletHash(serializedCode);
129
+ const initDataVar = `_worklet_${workletHash}_init_data`;
130
+ const initDataDecl = `var ${initDataVar} = {
131
+ code: ${JSON.stringify(serializedCode)},
132
+ location: ${JSON.stringify(location)}
133
+ };`;
134
+ const enclosingFn = hasDirective(candidate.fnNode, "limit-init-data-hoisting") ? findEnclosingFunction(parseResult.program, candidate.fnNode) : void 0;
135
+ if (enclosingFn) {
136
+ const insertAt = bodyStartAfterDirectives(enclosingFn, currentCode);
137
+ let declared = inlinedInitData.get(insertAt);
138
+ if (!declared) {
139
+ declared = /* @__PURE__ */new Set();
140
+ inlinedInitData.set(insertAt, declared);
141
+ }
142
+ if (!declared.has(initDataVar)) {
143
+ declared.add(initDataVar);
144
+ ms.appendLeft(insertAt, `
145
+ ${initDataDecl}
146
+ `);
147
+ }
148
+ } else if (!initDataDefs.has(initDataVar)) {
149
+ initDataDefs.set(initDataVar, initDataDecl);
150
+ }
151
+ const localFnCode = buildLocalFunction(candidate.fnNode, currentCode, fnName);
152
+ const localName = fnName || "_worklet";
153
+ const closureProps = closureVars.map(v => `${v}: ${v}`).join(", ");
154
+ const iife = `(function () {
155
+ var _e = [new (typeof global !== 'undefined' ? global : globalThis).Error(), 1, -27];
156
+ var ${localName} = ${localFnCode};
157
+ ${localName}.__closure = { ${closureProps} };
158
+ ${localName}.__workletHash = ${workletHash};
159
+ ${localName}.__pluginVersion = ${JSON.stringify(pluginVersion)};
160
+ ${localName}.__initData = ${initDataVar};
161
+ ${localName}.__stackDetails = _e;
162
+ return ${localName};
163
+ })()`;
164
+ if (candidate.kind === "function_declaration") {
165
+ if (candidate.parent?.type === "ExportNamedDeclaration") {
166
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `export var ${candidate.name} = ${iife};`);
167
+ } else if (candidate.parent?.type === "ExportDefaultDeclaration") {
168
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `var ${candidate.name || "_defaultWorklet"} = ${iife};
169
+ export default ${candidate.name || "_defaultWorklet"};`);
170
+ } else {
171
+ ms.overwrite(candidate.node.start, candidate.node.end, `var ${candidate.name} = ${iife};`);
172
+ }
173
+ } else if (candidate.kind === "object_method") {
174
+ ms.overwrite(candidate.node.start, candidate.node.end, `${candidate.name}: ${iife}`);
175
+ } else {
176
+ ms.overwrite(candidate.node.start, candidate.node.end, iife);
177
+ }
178
+ }
179
+ if (sourceMaps) {
180
+ passMaps.push(ms.generateMap({
181
+ source: cleanId,
182
+ file: cleanId,
183
+ hires: true,
184
+ includeContent: true
185
+ }));
186
+ }
187
+ currentCode = ms.toString();
188
+ }
189
+ const finalCheck = parseSync(cleanId, currentCode, {
190
+ sourceType: "module",
191
+ lang
192
+ });
193
+ const remaining = findWorkletCandidates(finalCheck.program);
194
+ if (remaining.length > 0) {
195
+ throw new Error(`[worklets] Exceeded maximum pass budget while transforming worklets in ${cleanId}. ${remaining.length} worklet(s) remained untransformed.`);
196
+ }
197
+ if (initDataDefs.size > 0) {
198
+ const initDataCode = Array.from(initDataDefs.values()).join("\n") + "\n";
199
+ const msPrepend = new MagicString(currentCode);
200
+ msPrepend.prepend(initDataCode);
201
+ if (sourceMaps) {
202
+ passMaps.push(msPrepend.generateMap({
203
+ source: cleanId,
204
+ file: cleanId,
205
+ hires: true,
206
+ includeContent: true
207
+ }));
208
+ }
209
+ currentCode = msPrepend.toString();
210
+ }
211
+ let map = void 0;
212
+ if (sourceMaps && passMaps.length > 0) {
213
+ if (passMaps.length === 1) {
214
+ map = passMaps[0];
215
+ } else {
216
+ map = remapping(passMaps.slice().reverse(), () => null);
217
+ }
218
+ if (map) {
219
+ map.sources = [cleanId];
220
+ map.file = cleanId;
221
+ }
222
+ }
223
+ return {
224
+ code: currentCode,
225
+ map
226
+ };
227
+ }
228
+ export { executeWorkletTransform, prepareWorkletsForReactCompiler };
229
+ //# sourceMappingURL=transform.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["path","MagicString","remapping","parseSync","bodyStartAfterDirectives","findWorkletCandidates","hasDirective","createGlobalsSet","calculateWorkletHash","getClosureVariables","buildLocalFunction","serializeWorkletForUI","FUNCTION_TYPES","Set","prepareWorkletsForReactCompiler","id","code","sourceMaps","cleanId","split","parsed","sourceType","lang","test","endsWith","errors","length","error","Error","codeframe","message","candidates","program","filter","candidate","isAutoWorklet","fnNode","output","body","type","appendLeft","start","end","toString","map","generateMap","source","hires","includeContent","findEnclosingFunction","node","best","walk","n","Array","isArray","c","has","key","executeWorkletTransform","options","resolveVersionFn","initialParse","err","initialCandidates","ms","file","map2","pluginVersion","projectRoot","globals","strictGlobal","location","relativeSourceLocation","relative","replace","currentCode","initDataDefs","Map","passMaps","remainingPassBudget","parseResult","innermostCandidates","some","other","inlinedInitData","closureVars","fnName","name","serializedCode","workletHash","initDataVar","initDataDecl","JSON","stringify","enclosingFn","insertAt","declared","get","set","add","localFnCode","localName","closureProps","v","join","iife","kind","parent","overwrite","push","finalCheck","remaining","size","initDataCode","from","values","msPrepend","prepend","slice","reverse","sources"],"sources":["../../../src/worklets/transform.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,IAAA,MAAU;AACjB,OAAOC,WAAA,MAAiB;AACxB,OAAOC,SAAA,MAAe;AACtB,SAASC,SAAA,QAAiB;AAC1B,SAASC,wBAAA,EAA0BC,qBAAA,EAAuBC,YAAA,QAAoB;AAC9E,SAASC,gBAAA,QAAwB;AACjC,SAASC,oBAAA,QAA4B;AACrC,SAASC,mBAAA,QAA2B;AACpC,SAASC,kBAAA,EAAoBC,qBAAA,QAA6B;AAG1D,MAAMC,cAAA,GAAiB,mBAAIC,GAAA,CAAI,CAC7B,uBACA,sBACA,0BACD;AAEM,SAASC,gCACdC,EAAA,EACAC,IAAA,EACAC,UAAA,GAAa,OACuB;EACpC,MAAMC,OAAA,GAAUH,EAAA,CAAGI,KAAA,CAAM,GAAG,EAAE,CAAC;EAC/B,MAAMC,MAAA,GAASjB,SAAA,CAAUe,OAAA,EAASF,IAAA,EAAM;IACtCK,UAAA,EAAY;IACZC,IAAA,EAAM,aAAaC,IAAA,CAAKL,OAAO,IAAI,OAAOA,OAAA,CAAQM,QAAA,CAAS,MAAM,IAAI,QAAQ;EAC/E,CAAC;EACD,IAAIJ,MAAA,CAAOK,MAAA,CAAOC,MAAA,EAAQ;IACxB,MAAMC,KAAA,GAAQP,MAAA,CAAOK,MAAA,CAAO,CAAC;IAC7B,MAAM,IAAIG,KAAA,CAAMD,KAAA,CAAME,SAAA,IAAaF,KAAA,CAAMG,OAAA,IAAW,oCAAoC;EAC1F;EACA,MAAMC,UAAA,GAAa1B,qBAAA,CAAsBe,MAAA,CAAOY,OAAO,EAAEC,MAAA,CACtDC,SAAA,IAAcA,SAAA,CAAUC,aAAA,IAAiB,CAAC7B,YAAA,CAAa4B,SAAA,CAAUE,MAAA,EAAQ,SAAS,CACrF;EACA,IAAI,CAACL,UAAA,CAAWL,MAAA,EAAQ,OAAO;EAE/B,MAAMW,MAAA,GAAS,IAAIpC,WAAA,CAAYe,IAAI;EACnC,WAAW;IAAEoB;EAAO,KAAKL,UAAA,EAAY;IACnC,MAAMO,IAAA,GAAOF,MAAA,CAAOE,IAAA;IACpB,IAAIA,IAAA,CAAKC,IAAA,KAAS,kBAAkB;MAClCF,MAAA,CAAOG,UAAA,CAAWF,IAAA,CAAKG,KAAA,GAAQ,GAAG,YAAY;IAChD,OAAO;MACLJ,MAAA,CAAOG,UAAA,CAAWF,IAAA,CAAKG,KAAA,EAAO,uBAAuB;MACrDJ,MAAA,CAAOG,UAAA,CAAWF,IAAA,CAAKI,GAAA,EAAK,MAAM;IACpC;EACF;EACA,OAAO;IACL1B,IAAA,EAAMqB,MAAA,CAAOM,QAAA,CAAS;IACtBC,GAAA,EAAK3B,UAAA,GACDoB,MAAA,CAAOQ,WAAA,CAAY;MAAEC,MAAA,EAAQ5B,OAAA;MAAS6B,KAAA,EAAO;MAAMC,cAAA,EAAgB;IAAK,CAAC,IACzE;EACN;AACF;AAQA,SAASC,sBAAsBjB,OAAA,EAAckB,IAAA,EAAgB;EAC3D,IAAIC,IAAA,GAAY;EAChB,MAAMC,IAAA,GAAQC,CAAA,IAAW;IACvB,IAAI,CAACA,CAAA,IAAK,OAAOA,CAAA,KAAM,UAAU;IACjC,IAAIC,KAAA,CAAMC,OAAA,CAAQF,CAAC,GAAG;MACpB,WAAWG,CAAA,IAAKH,CAAA,EAAGD,IAAA,CAAKI,CAAC;MACzB;IACF;IACA,IAAI,OAAOH,CAAA,CAAEd,IAAA,KAAS,UAAU;IAEhC,IAAI,OAAOc,CAAA,CAAEZ,KAAA,KAAU,aAAaY,CAAA,CAAEZ,KAAA,GAAQS,IAAA,CAAKT,KAAA,IAASY,CAAA,CAAEX,GAAA,GAAMQ,IAAA,CAAKR,GAAA,GAAM;IAC/E,IACE9B,cAAA,CAAe6C,GAAA,CAAIJ,CAAA,CAAEd,IAAI,KACzBc,CAAA,KAAMH,IAAA,IACNG,CAAA,CAAEf,IAAA,EAAMC,IAAA,KAAS,oBACjBc,CAAA,CAAEf,IAAA,CAAKG,KAAA,GAAQS,IAAA,CAAKT,KAAA,IACpBY,CAAA,CAAEf,IAAA,CAAKI,GAAA,GAAMQ,IAAA,CAAKR,GAAA,KACjB,CAACS,IAAA,IAAQE,CAAA,CAAEf,IAAA,CAAKG,KAAA,GAAQU,IAAA,CAAKb,IAAA,CAAKG,KAAA,GACnC;MACAU,IAAA,GAAOE,CAAA;IACT;IACA,WAAWK,GAAA,IAAOL,CAAA,EAAG;MACnB,IAAIK,GAAA,KAAQ,UAAU;MACtBN,IAAA,CAAKC,CAAA,CAAEK,GAAG,CAAC;IACb;EACF;EACAN,IAAA,CAAKpB,OAAO;EACZ,OAAOmB,IAAA;AACT;AAEO,SAASQ,wBACd5C,EAAA,EACAC,IAAA,EACAC,UAAA,GAAa,OACb2C,OAAA,EACAC,gBAAA,EAC6B;EAC7B,MAAM3C,OAAA,GAAUH,EAAA,CAAGI,KAAA,CAAM,GAAG,EAAE,CAAC;EAK/B,MAAMG,IAAA,GAAO,aAAaC,IAAA,CAAKL,OAAO,IACjC,OACDA,OAAA,CAAQM,QAAA,CAAS,MAAM,IACpB,QACA;EAGP,MAAMsC,YAAA,GAAe3D,SAAA,CAAUe,OAAA,EAASF,IAAA,EAAM;IAC5CK,UAAA,EAAY;IACZC;EACF,CAAC;EAED,IAAIwC,YAAA,CAAarC,MAAA,IAAUqC,YAAA,CAAarC,MAAA,CAAOC,MAAA,GAAS,GAAG;IACzD,MAAMqC,GAAA,GAAMD,YAAA,CAAarC,MAAA,CAAO,CAAC;IACjC,MAAM,IAAIG,KAAA,CAAMmC,GAAA,CAAIlC,SAAA,IAAakC,GAAA,CAAIjC,OAAA,IAAW,oCAAoC;EACtF;EAEA,MAAMkC,iBAAA,GAAoB3D,qBAAA,CAAsByD,YAAA,CAAa9B,OAAO;EACpE,IAAIgC,iBAAA,CAAkBtC,MAAA,KAAW,GAAG;IAClC,IAAIkB,IAAA,GAAW;IACf,IAAI3B,UAAA,EAAY;MACd,MAAMgD,EAAA,GAAK,IAAIhE,WAAA,CAAYe,IAAI;MAC/B4B,IAAA,GAAMqB,EAAA,CAAGpB,WAAA,CAAY;QACnBC,MAAA,EAAQ5B,OAAA;QACRgD,IAAA,EAAMhD,OAAA;QACN6B,KAAA,EAAO;QACPC,cAAA,EAAgB;MAClB,CAAC;IACH;IACA,OAAO;MAAEhC,IAAA;MAAM4B,GAAA,EAAAuB;IAAI;EACrB;EAGA,MAAMC,aAAA,GACJR,OAAA,EAASQ,aAAA,KACRP,gBAAA,GAAmBA,gBAAA,CAAiBD,OAAA,EAASS,WAAA,EAAanD,OAAO,IAAI;EAExE,MAAMoD,OAAA,GAAU/D,gBAAA,CAAiBqD,OAAA,EAASU,OAAA,EAASV,OAAA,EAASW,YAAY;EAExE,IAAIC,QAAA,GAAWtD,OAAA;EACf,IAAI0C,OAAA,EAASa,sBAAA,IAA0Bb,OAAA,EAASS,WAAA,EAAa;IAC3DG,QAAA,GAAWxE,IAAA,CAAK0E,QAAA,CAASd,OAAA,CAAQS,WAAA,EAAanD,OAAO,EAAEyD,OAAA,CAAQ,OAAO,GAAG;EAC3E;EAEA,IAAIC,WAAA,GAAc5D,IAAA;EAClB,MAAM6D,YAAA,GAAe,mBAAIC,GAAA,CAAoB;EAC7C,MAAMC,QAAA,GAAkB,EAAC;EAKzB,IAAIC,mBAAA,GAAsB;EAC1B,OAAOA,mBAAA,KAAwB,GAAG;IAChC,MAAMC,WAAA,GAAc9E,SAAA,CAAUe,OAAA,EAAS0D,WAAA,EAAa;MAClDvD,UAAA,EAAY;MACZC;IACF,CAAC;IAED,IAAI2D,WAAA,CAAYxD,MAAA,IAAUwD,WAAA,CAAYxD,MAAA,CAAOC,MAAA,GAAS,GAAG;MACvD,MAAMqC,GAAA,GAAMkB,WAAA,CAAYxD,MAAA,CAAO,CAAC;MAChC,MAAM,IAAIG,KAAA,CAAMmC,GAAA,CAAIlC,SAAA,IAAakC,GAAA,CAAIjC,OAAA,IAAW,oCAAoC;IACtF;IAEA,MAAMC,UAAA,GAAa1B,qBAAA,CAAsB4E,WAAA,CAAYjD,OAAO;IAC5D,IAAID,UAAA,CAAWL,MAAA,KAAW,GAAG;MAC3B;IACF;IAGA,MAAMwD,mBAAA,GAAsBnD,UAAA,CAAWE,MAAA,CAAQuB,CAAA,IAAM;MACnD,OAAO,CAACzB,UAAA,CAAWoD,IAAA,CAChBC,KAAA,IACCA,KAAA,KAAU5B,CAAA,IACV4B,KAAA,CAAMhD,MAAA,CAAOK,KAAA,IAASe,CAAA,CAAEpB,MAAA,CAAOK,KAAA,IAC/B2C,KAAA,CAAMhD,MAAA,CAAOM,GAAA,IAAOc,CAAA,CAAEpB,MAAA,CAAOM,GACjC;IACF,CAAC;IAED,IAAIwC,mBAAA,CAAoBxD,MAAA,KAAW,GAAG;MACpC,MAAM,IAAIE,KAAA,CAAM,iEAAiEV,OAAO,EAAE;IAC5F;IAEA,MAAM+C,EAAA,GAAK,IAAIhE,WAAA,CAAY2E,WAAW;IAItC,MAAMS,eAAA,GAAkB,mBAAIP,GAAA,CAAyB;IAErD,WAAW5C,SAAA,IAAagD,mBAAA,EAAqB;MAI3C,MAAMI,WAAA,GAAchF,YAAA,CAAa4B,SAAA,CAAUE,MAAA,EAAQ,oBAAoB,IACnE,EAAC,GACD3B,mBAAA,CAAoByB,SAAA,CAAUE,MAAA,EAAQkC,OAAO;MACjD,MAAMiB,MAAA,GAASrD,SAAA,CAAUsD,IAAA;MAEzB,MAAMC,cAAA,GAAiB9E,qBAAA,CAAsBuB,SAAA,CAAUE,MAAA,EAAQwC,WAAA,EAAaW,MAAA,EAAQD,WAAW;MAC/F,MAAMI,WAAA,GAAclF,oBAAA,CAAqBiF,cAAc;MACvD,MAAME,WAAA,GAAc,YAAYD,WAAW;MAE3C,MAAME,YAAA,GAAe,OAAOD,WAAW;AAAA,YAAmBE,IAAA,CAAKC,SAAA,CAAUL,cAAc,CAAC;AAAA,gBAAoBI,IAAA,CAAKC,SAAA,CAAUtB,QAAQ,CAAC;AAAA;MAEpI,MAAMuB,WAAA,GAAczF,YAAA,CAAa4B,SAAA,CAAUE,MAAA,EAAQ,0BAA0B,IACzEa,qBAAA,CAAsBgC,WAAA,CAAYjD,OAAA,EAASE,SAAA,CAAUE,MAAM,IAC3D;MAEJ,IAAI2D,WAAA,EAAa;QAGf,MAAMC,QAAA,GAAW5F,wBAAA,CAAyB2F,WAAA,EAAanB,WAAW;QAClE,IAAIqB,QAAA,GAAWZ,eAAA,CAAgBa,GAAA,CAAIF,QAAQ;QAC3C,IAAI,CAACC,QAAA,EAAU;UACbA,QAAA,GAAW,mBAAIpF,GAAA,CAAI;UACnBwE,eAAA,CAAgBc,GAAA,CAAIH,QAAA,EAAUC,QAAQ;QACxC;QACA,IAAI,CAACA,QAAA,CAASxC,GAAA,CAAIkC,WAAW,GAAG;UAC9BM,QAAA,CAASG,GAAA,CAAIT,WAAW;UACxB1B,EAAA,CAAGzB,UAAA,CAAWwD,QAAA,EAAU;AAAA,EAAKJ,YAAY;AAAA,CAAI;QAC/C;MACF,WAAW,CAACf,YAAA,CAAapB,GAAA,CAAIkC,WAAW,GAAG;QACzCd,YAAA,CAAasB,GAAA,CAAIR,WAAA,EAAaC,YAAY;MAC5C;MAEA,MAAMS,WAAA,GAAc3F,kBAAA,CAAmBwB,SAAA,CAAUE,MAAA,EAAQwC,WAAA,EAAaW,MAAM;MAC5E,MAAMe,SAAA,GAAYf,MAAA,IAAU;MAC5B,MAAMgB,YAAA,GAAejB,WAAA,CAAY1C,GAAA,CAAK4D,CAAA,IAAM,GAAGA,CAAC,KAAKA,CAAC,EAAE,EAAEC,IAAA,CAAK,IAAI;MAEnE,MAAMC,IAAA,GAAO;AAAA;AAAA,UAETJ,SAAS,MAAMD,WAAW;AAAA,MAC9BC,SAAS,kBAAkBC,YAAY;AAAA,MACvCD,SAAS,oBAAoBZ,WAAW;AAAA,MACxCY,SAAS,sBAAsBT,IAAA,CAAKC,SAAA,CAAU1B,aAAa,CAAC;AAAA,MAC5DkC,SAAS,iBAAiBX,WAAW;AAAA,MACrCW,SAAS;AAAA,aACFA,SAAS;AAAA;MAGhB,IAAIpE,SAAA,CAAUyE,IAAA,KAAS,wBAAwB;QAC7C,IAAIzE,SAAA,CAAU0E,MAAA,EAAQrE,IAAA,KAAS,0BAA0B;UACvD0B,EAAA,CAAG4C,SAAA,CAAU3E,SAAA,CAAU0E,MAAA,CAAOnE,KAAA,EAAOP,SAAA,CAAU0E,MAAA,CAAOlE,GAAA,EAAK,cAAcR,SAAA,CAAUsD,IAAI,MAAMkB,IAAI,GAAG;QACtG,WAAWxE,SAAA,CAAU0E,MAAA,EAAQrE,IAAA,KAAS,4BAA4B;UAChE0B,EAAA,CAAG4C,SAAA,CACD3E,SAAA,CAAU0E,MAAA,CAAOnE,KAAA,EACjBP,SAAA,CAAU0E,MAAA,CAAOlE,GAAA,EACjB,OAAOR,SAAA,CAAUsD,IAAA,IAAQ,iBAAiB,MAAMkB,IAAI;AAAA,iBAAqBxE,SAAA,CAAUsD,IAAA,IAAQ,iBAAiB,GAC9G;QACF,OAAO;UACLvB,EAAA,CAAG4C,SAAA,CAAU3E,SAAA,CAAUgB,IAAA,CAAKT,KAAA,EAAOP,SAAA,CAAUgB,IAAA,CAAKR,GAAA,EAAK,OAAOR,SAAA,CAAUsD,IAAI,MAAMkB,IAAI,GAAG;QAC3F;MACF,WAAWxE,SAAA,CAAUyE,IAAA,KAAS,iBAAiB;QAC7C1C,EAAA,CAAG4C,SAAA,CAAU3E,SAAA,CAAUgB,IAAA,CAAKT,KAAA,EAAOP,SAAA,CAAUgB,IAAA,CAAKR,GAAA,EAAK,GAAGR,SAAA,CAAUsD,IAAI,KAAKkB,IAAI,EAAE;MACrF,OAAO;QACLzC,EAAA,CAAG4C,SAAA,CAAU3E,SAAA,CAAUgB,IAAA,CAAKT,KAAA,EAAOP,SAAA,CAAUgB,IAAA,CAAKR,GAAA,EAAKgE,IAAI;MAC7D;IACF;IAEA,IAAIzF,UAAA,EAAY;MACd8D,QAAA,CAAS+B,IAAA,CACP7C,EAAA,CAAGpB,WAAA,CAAY;QACbC,MAAA,EAAQ5B,OAAA;QACRgD,IAAA,EAAMhD,OAAA;QACN6B,KAAA,EAAO;QACPC,cAAA,EAAgB;MAClB,CAAC,CACH;IACF;IAEA4B,WAAA,GAAcX,EAAA,CAAGtB,QAAA,CAAS;EAC5B;EAGA,MAAMoE,UAAA,GAAa5G,SAAA,CAAUe,OAAA,EAAS0D,WAAA,EAAa;IAAEvD,UAAA,EAAY;IAAUC;EAAK,CAAC;EACjF,MAAM0F,SAAA,GAAY3G,qBAAA,CAAsB0G,UAAA,CAAW/E,OAAO;EAC1D,IAAIgF,SAAA,CAAUtF,MAAA,GAAS,GAAG;IACxB,MAAM,IAAIE,KAAA,CACR,0EAA0EV,OAAO,KAAK8F,SAAA,CAAUtF,MAAM,qCACxG;EACF;EAGA,IAAImD,YAAA,CAAaoC,IAAA,GAAO,GAAG;IACzB,MAAMC,YAAA,GAAe5D,KAAA,CAAM6D,IAAA,CAAKtC,YAAA,CAAauC,MAAA,CAAO,CAAC,EAAEX,IAAA,CAAK,IAAI,IAAI;IACpE,MAAMY,SAAA,GAAY,IAAIpH,WAAA,CAAY2E,WAAW;IAC7CyC,SAAA,CAAUC,OAAA,CAAQJ,YAAY;IAC9B,IAAIjG,UAAA,EAAY;MACd8D,QAAA,CAAS+B,IAAA,CACPO,SAAA,CAAUxE,WAAA,CAAY;QACpBC,MAAA,EAAQ5B,OAAA;QACRgD,IAAA,EAAMhD,OAAA;QACN6B,KAAA,EAAO;QACPC,cAAA,EAAgB;MAClB,CAAC,CACH;IACF;IACA4B,WAAA,GAAcyC,SAAA,CAAU1E,QAAA,CAAS;EACnC;EAEA,IAAIC,GAAA,GAAW;EACf,IAAI3B,UAAA,IAAc8D,QAAA,CAASrD,MAAA,GAAS,GAAG;IACrC,IAAIqD,QAAA,CAASrD,MAAA,KAAW,GAAG;MACzBkB,GAAA,GAAMmC,QAAA,CAAS,CAAC;IAClB,OAAO;MACLnC,GAAA,GAAM1C,SAAA,CAAU6E,QAAA,CAASwC,KAAA,CAAM,EAAEC,OAAA,CAAQ,GAAG,MAAM,IAAI;IACxD;IACA,IAAI5E,GAAA,EAAK;MACPA,GAAA,CAAI6E,OAAA,GAAU,CAACvG,OAAO;MACtB0B,GAAA,CAAIsB,IAAA,GAAOhD,OAAA;IACb;EACF;EAEA,OAAO;IACLF,IAAA,EAAM4D,WAAA;IACNhC;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vxrn/compiler",
3
- "version": "1.25.16",
3
+ "version": "1.26.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
@@ -35,16 +35,21 @@
35
35
  "@babel/plugin-transform-flow-strip-types": "^7.27.1",
36
36
  "@babel/plugin-transform-react-jsx": "^7.27.1",
37
37
  "@babel/plugin-transform-regenerator": "^7.28.4",
38
- "@react-native/babel-plugin-codegen": "^0.86.2",
39
- "@vxrn/utils": "1.25.16",
40
- "@vxrn/vite-native-client": "1.25.16",
38
+ "@jridgewell/remapping": "^2.3.0",
39
+ "@vxrn/utils": "1.26.0",
40
+ "@vxrn/vite-native-client": "1.26.0",
41
41
  "babel-plugin-react-compiler": "^1.0.0",
42
42
  "babel-plugin-syntax-hermes-parser": "^0.32.0",
43
+ "esbuild": "^0.25.12",
44
+ "hermes-parser": "^0.32.0",
45
+ "magic-string": "^0.30.21",
46
+ "oxc-parser": "^0.112.0",
47
+ "oxc-transform": "^0.148.0",
43
48
  "oxc-transform-react": "^0.145.0",
44
- "react-native-css-interop": "^0.2.6",
45
- "ts-deepmerge": "^7.0.2"
49
+ "react-native-css-interop": "^0.2.6"
46
50
  },
47
51
  "devDependencies": {
52
+ "@jridgewell/trace-mapping": "^0.3.25",
48
53
  "@tamagui/build": "2.6.2",
49
54
  "depcheck": "^1.4.7",
50
55
  "rolldown": "^1.2.4",
package/src/cache.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createHash } from 'node:crypto'
2
2
  import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs'
3
3
  import { join } from 'node:path'
4
- import { configuration } from './configure'
4
+ import { configuration, isNativeWorkletsEnabled } from './configure'
5
5
 
6
6
  /**
7
7
  * Fast file-based cache for babel transforms
@@ -23,9 +23,15 @@ interface CacheStats {
23
23
  hits: 0
24
24
  misses: 0
25
25
  writes: 0
26
+ errors: 0
26
27
  }
27
28
 
28
- const stats: CacheStats = { hits: 0, misses: 0, writes: 0 }
29
+ const stats: CacheStats = {
30
+ hits: 0,
31
+ misses: 0,
32
+ writes: 0,
33
+ errors: 0,
34
+ }
29
35
 
30
36
  function getCacheDir(): string {
31
37
  // Use .vxrn cache directory
@@ -43,11 +49,12 @@ function getConfigFingerprint(): string {
43
49
  JSON.stringify({
44
50
  compiler: configuration.enableCompiler,
45
51
  reanimated: configuration.enableReanimated,
52
+ nativeWorklets: isNativeWorkletsEnabled(),
46
53
  nativewind: configuration.enableNativewind,
47
54
  nativeCSS: configuration.enableNativeCSS,
48
55
  // bump when the transform engine changes, so entries written by a
49
56
  // previous engine aren't served for the same source
50
- engine: 'oxc-react-compiler',
57
+ engine: 'oxc-worklets-hermes-async',
51
58
  })
52
59
  )
53
60
  .digest('hex')
package/src/configure.ts CHANGED
@@ -18,6 +18,7 @@ type CompilerConfig =
18
18
  type Conf = {
19
19
  enableNativewind?: boolean
20
20
  enableReanimated?: boolean
21
+ enableNativeWorklets?: boolean
21
22
  enableCompiler?: CompilerConfig
22
23
  enableNativeCSS?: boolean
23
24
  }
@@ -25,10 +26,21 @@ type Conf = {
25
26
  export const configuration: Conf = {
26
27
  enableNativewind: false,
27
28
  enableReanimated: false,
29
+ enableNativeWorklets: true,
28
30
  enableCompiler: false,
29
31
  enableNativeCSS: false,
30
32
  }
31
33
 
34
+ export function isNativeWorkletsEnabled() {
35
+ if (
36
+ process.env.VXRN_NATIVE_WORKLETS === 'false' ||
37
+ process.env.VXRN_NATIVE_WORKLETS === '0'
38
+ ) {
39
+ return false
40
+ }
41
+ return configuration.enableNativeWorklets !== false
42
+ }
43
+
32
44
  export function configureVXRNCompilerPlugin(_: Conf) {
33
45
  Object.assign(configuration, _)
34
46
  }
package/src/index.ts CHANGED
@@ -12,19 +12,31 @@ import { resolvePath } from '@vxrn/utils'
12
12
  import { cssToReactNativeRuntime } from 'react-native-css-interop/css-to-rn/index.js'
13
13
  import type { OutputChunk } from 'rolldown'
14
14
  import type { PluginOption, ResolvedConfig, UserConfig } from 'vite'
15
- import { configuration } from './configure'
15
+ import { configuration, isNativeWorkletsEnabled } from './configure'
16
16
  import { debug, runtimePublicPath, validParsers } from './constants'
17
17
  import {
18
18
  getBabelOptions,
19
19
  transformBabel,
20
20
  transformOxcReactCompiler,
21
21
  } from './transformBabel'
22
+ import { shouldSourceMap } from './transformSWC'
23
+ import {
24
+ prepareWorkletsForReactCompiler,
25
+ shouldTransformWorklets,
26
+ transformWorklets,
27
+ } from './transformWorklets'
22
28
  import type { Environment, GetTransformProps, Options } from './types'
23
29
  import { getCachedTransform, logCacheStats, setCachedTransform } from './cache'
24
30
 
25
31
  export * from './configure'
26
32
  export * from './transformBabel'
27
33
  export * from './transformSWC'
34
+ export * from './transformWorklets'
35
+ export * from './reactNativeCodegen'
36
+ export * from './transformHermesLoops'
37
+ export * from './transformHermesAsync'
38
+ export { JS_GLOBALS } from './worklets/globals'
39
+ export { getClosureVariables } from './worklets/scope'
28
40
  export type { GetTransform } from './types'
29
41
 
30
42
  // Performance tracking
@@ -148,7 +160,7 @@ async function performBabelTransform({
148
160
  return null
149
161
  }
150
162
 
151
- if (userTransform !== 'swc') {
163
+ if (userTransform !== 'swc' && userTransform !== 'oxc') {
152
164
  const babelOptions = getBabelOptions({
153
165
  ...transformProps,
154
166
  userSetting: userTransform,
@@ -175,20 +187,91 @@ async function performBabelTransform({
175
187
  return cached
176
188
  }
177
189
 
178
- // when the react compiler is the only transform this file needs (the
179
- // common case on web) run oxc's rust port instead of babel. files that
180
- // also need reanimated, nativewind, RN codegen or generator lowering
181
- // still go through babel, which is the only implementation of those.
182
- const compilerOnly = hasCompilerPlugin && babelOptions.plugins?.length === 1
183
- const compilerTarget = compilerOnly
184
- ? ((babelOptions.plugins![0] as any[])[1]?.target ?? '19')
185
- : '19'
190
+ const isWorkletPlugin = (entry: any) => {
191
+ if (!entry) return false
192
+ const name =
193
+ typeof entry === 'string' ? entry : Array.isArray(entry) ? entry[0] : null
194
+ return (
195
+ typeof name === 'string' &&
196
+ (name.includes('react-native-worklets') ||
197
+ name.includes('react-native-reanimated'))
198
+ )
199
+ }
200
+ const workletEntry = babelOptions.plugins?.find(isWorkletPlugin)
201
+ const workletPluginOptions = Array.isArray(workletEntry) ? workletEntry[1] : undefined
202
+ const useWorklets =
203
+ isNativeWorkletsEnabled() &&
204
+ (Boolean(workletEntry) || shouldTransformWorklets({ id, code }))
205
+ let curCode = code
206
+ let workletPreparation: { code: string; map?: any } | null = null
207
+ let compilerOut: { code: string; map?: any } | null = null
208
+ const compilerPluginIndex =
209
+ babelOptions.plugins?.findIndex(
210
+ (x) => Array.isArray(x) && x[0] === 'babel-plugin-react-compiler'
211
+ ) ?? -1
212
+
213
+ if (compilerPluginIndex !== -1) {
214
+ // mark callbacks before react compiler moves them into memoized bindings.
215
+ if (useWorklets) {
216
+ workletPreparation = prepareWorkletsForReactCompiler(
217
+ id, curCode, shouldSourceMap()
218
+ )
219
+ if (workletPreparation) curCode = workletPreparation.code
220
+ }
221
+ const compilerTarget =
222
+ (babelOptions.plugins![compilerPluginIndex] as any[])[1]?.target ?? '19'
223
+ compilerOut = await transformOxcReactCompiler(
224
+ id, curCode, compilerTarget, shouldSourceMap()
225
+ )
226
+ if (compilerOut) curCode = compilerOut.code
227
+ babelOptions.plugins!.splice(compilerPluginIndex, 1)
228
+ }
229
+
230
+ let workletsOut: { code: string; map?: any } | null = null
231
+ if (useWorklets) {
232
+ workletsOut = await transformWorklets(id, curCode, shouldSourceMap(), {
233
+ projectRoot,
234
+ ...workletPluginOptions,
235
+ })
236
+ babelOptions.plugins = babelOptions.plugins?.filter(
237
+ (entry) => !isWorkletPlugin(entry)
238
+ )
239
+ curCode = workletsOut.code
240
+ }
186
241
 
187
242
  // Cache miss - do the transform
188
243
  const startTime = Date.now()
189
- const babelOut = compilerOnly
190
- ? await transformOxcReactCompiler(id, code, compilerTarget)
191
- : await transformBabel(id, code, babelOptions)
244
+ let babelOut: { code?: string | null; map?: any } | null = null
245
+
246
+ if (babelOptions.plugins?.length === 0) {
247
+ let finalMap: any = undefined
248
+ if (shouldSourceMap()) {
249
+ const intermediateMaps = [workletPreparation?.map, compilerOut?.map, workletsOut?.map].filter(Boolean)
250
+ if (intermediateMaps.length === 1) {
251
+ finalMap = intermediateMaps[0]
252
+ } else if (intermediateMaps.length > 1) {
253
+ const remapping = (await import('@jridgewell/remapping')).default
254
+ finalMap = remapping(intermediateMaps.slice().reverse(), () => null)
255
+ }
256
+ }
257
+ babelOut = { code: curCode, map: finalMap }
258
+ } else {
259
+ const babelOptsWithMap =
260
+ shouldSourceMap() && (workletsOut?.map || compilerOut?.map || workletPreparation?.map)
261
+ ? { ...babelOptions, sourceMaps: true }
262
+ : babelOptions
263
+ babelOut = await transformBabel(id, curCode, babelOptsWithMap)
264
+ if (shouldSourceMap() && babelOut?.map) {
265
+ const priorMaps = [workletPreparation?.map, compilerOut?.map, workletsOut?.map].filter(Boolean)
266
+ if (priorMaps.length > 0) {
267
+ const remapping = (await import('@jridgewell/remapping')).default
268
+ babelOut.map = remapping(
269
+ [babelOut.map, ...priorMaps.slice().reverse()],
270
+ () => null
271
+ )
272
+ }
273
+ }
274
+ }
192
275
  const babelTime = Date.now() - startTime
193
276
 
194
277
  if (babelOut?.code) {