@vxrn/compiler 1.27.1 → 2.0.0-beta.45.1

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 (89) hide show
  1. package/dist/cjs/cache.cjs +106 -117
  2. package/dist/cjs/configure.cjs +26 -28
  3. package/dist/cjs/constants.cjs +56 -60
  4. package/dist/cjs/index.cjs +420 -443
  5. package/dist/cjs/reactNativeCodegen.cjs +105 -114
  6. package/dist/cjs/reactNativeViewConfig.cjs +362 -381
  7. package/dist/cjs/refresh-runtime.cjs +390 -397
  8. package/dist/cjs/transformBabel.cjs +273 -263
  9. package/dist/cjs/transformHermesAsync.cjs +36 -47
  10. package/dist/cjs/transformHermesLoops.cjs +279 -281
  11. package/dist/cjs/transformSWC.cjs +183 -200
  12. package/dist/cjs/transformWorklets.cjs +107 -95
  13. package/dist/cjs/types.cjs +9 -11
  14. package/dist/cjs/worklets/autoworklet.cjs +277 -222
  15. package/dist/cjs/worklets/globals.cjs +124 -60
  16. package/dist/cjs/worklets/hash.cjs +23 -27
  17. package/dist/cjs/worklets/scope.cjs +338 -359
  18. package/dist/cjs/worklets/serialize.cjs +73 -75
  19. package/dist/cjs/worklets/transform.cjs +217 -222
  20. package/dist/cjs/worklets/types.cjs +9 -11
  21. package/dist/esm/cache.mjs +90 -97
  22. package/dist/esm/cache.mjs.map +1 -1
  23. package/dist/esm/configure.mjs +11 -10
  24. package/dist/esm/configure.mjs.map +1 -1
  25. package/dist/esm/constants.mjs +41 -41
  26. package/dist/esm/constants.mjs.map +1 -1
  27. package/dist/esm/index.js +417 -425
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/index.mjs +417 -425
  30. package/dist/esm/index.mjs.map +1 -1
  31. package/dist/esm/reactNativeCodegen.mjs +90 -88
  32. package/dist/esm/reactNativeCodegen.mjs.map +1 -1
  33. package/dist/esm/reactNativeViewConfig.mjs +347 -362
  34. package/dist/esm/reactNativeViewConfig.mjs.map +1 -1
  35. package/dist/esm/refresh-runtime.mjs +372 -376
  36. package/dist/esm/refresh-runtime.mjs.map +1 -1
  37. package/dist/esm/transformBabel.mjs +255 -237
  38. package/dist/esm/transformBabel.mjs.map +1 -1
  39. package/dist/esm/transformHermesAsync.mjs +20 -21
  40. package/dist/esm/transformHermesAsync.mjs.map +1 -1
  41. package/dist/esm/transformHermesLoops.mjs +264 -255
  42. package/dist/esm/transformHermesLoops.mjs.map +1 -1
  43. package/dist/esm/transformSWC.mjs +163 -171
  44. package/dist/esm/transformSWC.mjs.map +1 -1
  45. package/dist/esm/transformWorklets.mjs +89 -69
  46. package/dist/esm/transformWorklets.mjs.map +1 -1
  47. package/dist/esm/types.mjs +0 -2
  48. package/dist/esm/worklets/autoworklet.mjs +258 -200
  49. package/dist/esm/worklets/autoworklet.mjs.map +1 -1
  50. package/dist/esm/worklets/globals.mjs +109 -42
  51. package/dist/esm/worklets/globals.mjs.map +1 -1
  52. package/dist/esm/worklets/hash.mjs +10 -9
  53. package/dist/esm/worklets/hash.mjs.map +1 -1
  54. package/dist/esm/worklets/scope.mjs +325 -341
  55. package/dist/esm/worklets/scope.mjs.map +1 -1
  56. package/dist/esm/worklets/serialize.mjs +60 -58
  57. package/dist/esm/worklets/serialize.mjs.map +1 -1
  58. package/dist/esm/worklets/transform.mjs +201 -197
  59. package/dist/esm/worklets/transform.mjs.map +1 -1
  60. package/dist/esm/worklets/types.mjs +0 -2
  61. package/package.json +7 -6
  62. package/src/transformBabel.test.ts +77 -17
  63. package/src/transformBabel.ts +28 -12
  64. package/types/transformBabel.d.ts +12 -0
  65. package/types/transformBabel.d.ts.map +1 -1
  66. package/types/transformSWC.d.ts +1 -4
  67. package/types/transformSWC.d.ts.map +1 -1
  68. package/dist/cjs/transformBabel.test.cjs +0 -652
  69. package/dist/cjs/transformHermesLoops.test.cjs +0 -257
  70. package/dist/cjs/transformSWC.test.cjs +0 -117
  71. package/dist/cjs/transformWorklets.test.cjs +0 -604
  72. package/dist/esm/transformBabel.test.mjs +0 -629
  73. package/dist/esm/transformBabel.test.mjs.map +0 -1
  74. package/dist/esm/transformHermesLoops.test.mjs +0 -234
  75. package/dist/esm/transformHermesLoops.test.mjs.map +0 -1
  76. package/dist/esm/transformSWC.test.mjs +0 -118
  77. package/dist/esm/transformSWC.test.mjs.map +0 -1
  78. package/dist/esm/transformWorklets.test.mjs +0 -581
  79. package/dist/esm/transformWorklets.test.mjs.map +0 -1
  80. package/dist/esm/types.mjs.map +0 -1
  81. package/dist/esm/worklets/types.mjs.map +0 -1
  82. package/types/transformBabel.test.d.ts +0 -2
  83. package/types/transformBabel.test.d.ts.map +0 -1
  84. package/types/transformHermesLoops.test.d.ts +0 -2
  85. package/types/transformHermesLoops.test.d.ts.map +0 -1
  86. package/types/transformSWC.test.d.ts +0 -2
  87. package/types/transformSWC.test.d.ts.map +0 -1
  88. package/types/transformWorklets.test.d.ts +0 -2
  89. package/types/transformWorklets.test.d.ts.map +0 -1
@@ -7,151 +7,154 @@ import { createGlobalsSet } from "./globals.mjs";
7
7
  import { calculateWorkletHash } from "./hash.mjs";
8
8
  import { getClosureVariables } from "./scope.mjs";
9
9
  import { buildLocalFunction, serializeWorkletForUI } from "./serialize.mjs";
10
- const FUNCTION_TYPES = /* @__PURE__ */new Set(["FunctionDeclaration", "FunctionExpression", "ArrowFunctionExpression"]);
10
+
11
+ const FUNCTION_TYPES = /* @__PURE__ */ new Set([
12
+ "FunctionDeclaration",
13
+ "FunctionExpression",
14
+ "ArrowFunctionExpression"
15
+ ]);
11
16
  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
- };
17
+ const cleanId = id.split("?")[0];
18
+ const parsed = parseSync(cleanId, code, {
19
+ sourceType: "module",
20
+ lang: /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx"
21
+ });
22
+ if (parsed.errors.length) {
23
+ const error = parsed.errors[0];
24
+ throw new Error(error.codeframe || error.message || "Syntax Error while parsing worklet");
25
+ }
26
+ const candidates = findWorkletCandidates(parsed.program).filter((candidate) => candidate.isAutoWorklet && !hasDirective(candidate.fnNode, "worklet"));
27
+ if (!candidates.length) return null;
28
+ const output = new MagicString(code);
29
+ for (const { fnNode } of candidates) {
30
+ const body = fnNode.body;
31
+ if (body.type === "BlockStatement") {
32
+ output.appendLeft(body.start + 1, "'worklet';");
33
+ } else {
34
+ output.appendLeft(body.start, "{ 'worklet'; return (");
35
+ output.appendLeft(body.end, "); }");
36
+ }
37
+ }
38
+ return {
39
+ code: output.toString(),
40
+ map: sourceMaps ? output.generateMap({
41
+ source: cleanId,
42
+ hires: true,
43
+ includeContent: true
44
+ }) : void 0
45
+ };
43
46
  }
44
47
  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;
48
+ let best = void 0;
49
+ const walk = (n) => {
50
+ if (!n || typeof n !== "object") return;
51
+ if (Array.isArray(n)) {
52
+ for (const c of n) walk(c);
53
+ return;
54
+ }
55
+ if (typeof n.type !== "string") return;
56
+ if (typeof n.start === "number" && (n.start > node.start || n.end < node.end)) return;
57
+ 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)) {
58
+ best = n;
59
+ }
60
+ for (const key in n) {
61
+ if (key === "parent") continue;
62
+ walk(n[key]);
63
+ }
64
+ };
65
+ walk(program);
66
+ return best;
64
67
  }
65
68
  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} = {
69
+ const cleanId = id.split("?")[0];
70
+ const lang = /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx";
71
+ const initialParse = parseSync(cleanId, code, {
72
+ sourceType: "module",
73
+ lang
74
+ });
75
+ if (initialParse.errors && initialParse.errors.length > 0) {
76
+ const err = initialParse.errors[0];
77
+ throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
78
+ }
79
+ const initialCandidates = findWorkletCandidates(initialParse.program);
80
+ if (initialCandidates.length === 0) {
81
+ let map2 = void 0;
82
+ if (sourceMaps) {
83
+ const ms = new MagicString(code);
84
+ map2 = ms.generateMap({
85
+ source: cleanId,
86
+ file: cleanId,
87
+ hires: true,
88
+ includeContent: true
89
+ });
90
+ }
91
+ return {
92
+ code,
93
+ map: map2
94
+ };
95
+ }
96
+ const pluginVersion = options?.pluginVersion || (resolveVersionFn ? resolveVersionFn(options?.projectRoot, cleanId) : "0.0.0");
97
+ const globals = createGlobalsSet(options?.globals, options?.strictGlobal);
98
+ let location = cleanId;
99
+ if (options?.relativeSourceLocation && options?.projectRoot) {
100
+ location = path.relative(options.projectRoot, cleanId).replace(/\\/g, "/");
101
+ }
102
+ let currentCode = code;
103
+ const initDataDefs = /* @__PURE__ */ new Map();
104
+ const passMaps = [];
105
+ let remainingPassBudget = 100;
106
+ while (remainingPassBudget-- > 0) {
107
+ const parseResult = parseSync(cleanId, currentCode, {
108
+ sourceType: "module",
109
+ lang
110
+ });
111
+ if (parseResult.errors && parseResult.errors.length > 0) {
112
+ const err = parseResult.errors[0];
113
+ throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
114
+ }
115
+ const candidates = findWorkletCandidates(parseResult.program);
116
+ if (candidates.length === 0) {
117
+ break;
118
+ }
119
+ const innermostCandidates = candidates.filter((c) => {
120
+ return !candidates.some((other) => other !== c && other.fnNode.start >= c.fnNode.start && other.fnNode.end <= c.fnNode.end);
121
+ });
122
+ if (innermostCandidates.length === 0) {
123
+ throw new Error(`[worklets] Cyclic or unresolvable worklet nesting detected in ${cleanId}`);
124
+ }
125
+ const ms = new MagicString(currentCode);
126
+ const inlinedInitData = /* @__PURE__ */ new Map();
127
+ for (const candidate of innermostCandidates) {
128
+ const closureVars = hasDirective(candidate.fnNode, "no-worklet-closure") ? [] : getClosureVariables(candidate.fnNode, globals);
129
+ const fnName = candidate.name;
130
+ const serializedCode = serializeWorkletForUI(candidate.fnNode, currentCode, fnName, closureVars);
131
+ const workletHash = calculateWorkletHash(serializedCode);
132
+ const initDataVar = `_worklet_${workletHash}_init_data`;
133
+ const initDataDecl = `var ${initDataVar} = {
131
134
  code: ${JSON.stringify(serializedCode)},
132
135
  location: ${JSON.stringify(location)}
133
136
  };`;
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, `
137
+ const enclosingFn = hasDirective(candidate.fnNode, "limit-init-data-hoisting") ? findEnclosingFunction(parseResult.program, candidate.fnNode) : void 0;
138
+ if (enclosingFn) {
139
+ const insertAt = bodyStartAfterDirectives(enclosingFn, currentCode);
140
+ let declared = inlinedInitData.get(insertAt);
141
+ if (!declared) {
142
+ declared = /* @__PURE__ */ new Set();
143
+ inlinedInitData.set(insertAt, declared);
144
+ }
145
+ if (!declared.has(initDataVar)) {
146
+ declared.add(initDataVar);
147
+ ms.appendLeft(insertAt, `
145
148
  ${initDataDecl}
146
149
  `);
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 () {
150
+ }
151
+ } else if (!initDataDefs.has(initDataVar)) {
152
+ initDataDefs.set(initDataVar, initDataDecl);
153
+ }
154
+ const localFnCode = buildLocalFunction(candidate.fnNode, currentCode, fnName);
155
+ const localName = fnName || "_worklet";
156
+ const closureProps = closureVars.map((v) => `${v}: ${v}`).join(", ");
157
+ const iife = `(function () {
155
158
  var _e = [new (typeof global !== 'undefined' ? global : globalThis).Error(), 1, -27];
156
159
  var ${localName} = ${localFnCode};
157
160
  ${localName}.__closure = { ${closureProps} };
@@ -161,69 +164,70 @@ ${initDataDecl}
161
164
  ${localName}.__stackDetails = _e;
162
165
  return ${localName};
163
166
  })()`;
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};
167
+ if (candidate.kind === "function_declaration") {
168
+ if (candidate.parent?.type === "ExportNamedDeclaration") {
169
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `export var ${candidate.name} = ${iife};`);
170
+ } else if (candidate.parent?.type === "ExportDefaultDeclaration") {
171
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `var ${candidate.name || "_defaultWorklet"} = ${iife};
169
172
  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
- };
173
+ } else {
174
+ ms.overwrite(candidate.node.start, candidate.node.end, `var ${candidate.name} = ${iife};`);
175
+ }
176
+ } else if (candidate.kind === "object_method") {
177
+ ms.overwrite(candidate.node.start, candidate.node.end, `${candidate.name}: ${iife}`);
178
+ } else {
179
+ ms.overwrite(candidate.node.start, candidate.node.end, iife);
180
+ }
181
+ }
182
+ if (sourceMaps) {
183
+ passMaps.push(ms.generateMap({
184
+ source: cleanId,
185
+ file: cleanId,
186
+ hires: true,
187
+ includeContent: true
188
+ }));
189
+ }
190
+ currentCode = ms.toString();
191
+ }
192
+ const finalCheck = parseSync(cleanId, currentCode, {
193
+ sourceType: "module",
194
+ lang
195
+ });
196
+ const remaining = findWorkletCandidates(finalCheck.program);
197
+ if (remaining.length > 0) {
198
+ throw new Error(`[worklets] Exceeded maximum pass budget while transforming worklets in ${cleanId}. ${remaining.length} worklet(s) remained untransformed.`);
199
+ }
200
+ if (initDataDefs.size > 0) {
201
+ const initDataCode = Array.from(initDataDefs.values()).join("\n") + "\n";
202
+ const msPrepend = new MagicString(currentCode);
203
+ msPrepend.prepend(initDataCode);
204
+ if (sourceMaps) {
205
+ passMaps.push(msPrepend.generateMap({
206
+ source: cleanId,
207
+ file: cleanId,
208
+ hires: true,
209
+ includeContent: true
210
+ }));
211
+ }
212
+ currentCode = msPrepend.toString();
213
+ }
214
+ let map = void 0;
215
+ if (sourceMaps && passMaps.length > 0) {
216
+ if (passMaps.length === 1) {
217
+ map = passMaps[0];
218
+ } else {
219
+ map = remapping(passMaps.slice().reverse(), () => null);
220
+ }
221
+ if (map) {
222
+ map.sources = [cleanId];
223
+ map.file = cleanId;
224
+ }
225
+ }
226
+ return {
227
+ code: currentCode,
228
+ map
229
+ };
227
230
  }
231
+
228
232
  export { executeWorkletTransform, prepareWorkletsForReactCompiler };
229
233
  //# sourceMappingURL=transform.mjs.map
@@ -1 +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":"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","ignoreList":[]}
1
+ {"version":3,"file":"transform.js","names":[],"sources":["esm/worklets/transform.js"],"sourcesContent":["import path from \"node:path\";\nimport MagicString from \"magic-string\";\nimport remapping from \"@jridgewell/remapping\";\nimport { parseSync } from \"oxc-parser\";\nimport {\n bodyStartAfterDirectives,\n findWorkletCandidates,\n hasDirective\n} from \"./autoworklet\";\nimport { createGlobalsSet } from \"./globals\";\nimport { calculateWorkletHash } from \"./hash\";\nimport { getClosureVariables } from \"./scope\";\nimport { buildLocalFunction, serializeWorkletForUI } from \"./serialize\";\nconst FUNCTION_TYPES = /* @__PURE__ */ new Set([\n \"FunctionDeclaration\",\n \"FunctionExpression\",\n \"ArrowFunctionExpression\"\n]);\nfunction prepareWorkletsForReactCompiler(id, code, sourceMaps = false) {\n const cleanId = id.split(\"?\")[0];\n const parsed = parseSync(cleanId, code, {\n sourceType: \"module\",\n lang: /\\.[cm]?ts$/.test(cleanId) ? \"ts\" : cleanId.endsWith(\".tsx\") ? \"tsx\" : \"jsx\"\n });\n if (parsed.errors.length) {\n const error = parsed.errors[0];\n throw new Error(\n error.codeframe || error.message || \"Syntax Error while parsing worklet\"\n );\n }\n const candidates = findWorkletCandidates(parsed.program).filter(\n (candidate) => candidate.isAutoWorklet && !hasDirective(candidate.fnNode, \"worklet\")\n );\n if (!candidates.length) return null;\n const output = new MagicString(code);\n for (const { fnNode } of candidates) {\n const body = fnNode.body;\n if (body.type === \"BlockStatement\") {\n output.appendLeft(body.start + 1, \"'worklet';\");\n } else {\n output.appendLeft(body.start, \"{ 'worklet'; return (\");\n output.appendLeft(body.end, \"); }\");\n }\n }\n return {\n code: output.toString(),\n map: sourceMaps ? output.generateMap({ source: cleanId, hires: true, includeContent: true }) : void 0\n };\n}\nfunction findEnclosingFunction(program, node) {\n let best = void 0;\n const walk = (n) => {\n if (!n || typeof n !== \"object\") return;\n if (Array.isArray(n)) {\n for (const c of n) walk(c);\n return;\n }\n if (typeof n.type !== \"string\") return;\n if (typeof n.start === \"number\" && (n.start > node.start || n.end < node.end)) return;\n 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)) {\n best = n;\n }\n for (const key in n) {\n if (key === \"parent\") continue;\n walk(n[key]);\n }\n };\n walk(program);\n return best;\n}\nfunction executeWorkletTransform(id, code, sourceMaps = false, options, resolveVersionFn) {\n const cleanId = id.split(\"?\")[0];\n const lang = /\\.[cm]?ts$/.test(cleanId) ? \"ts\" : cleanId.endsWith(\".tsx\") ? \"tsx\" : \"jsx\";\n const initialParse = parseSync(cleanId, code, {\n sourceType: \"module\",\n lang\n });\n if (initialParse.errors && initialParse.errors.length > 0) {\n const err = initialParse.errors[0];\n throw new Error(err.codeframe || err.message || \"Syntax Error while parsing worklet\");\n }\n const initialCandidates = findWorkletCandidates(initialParse.program);\n if (initialCandidates.length === 0) {\n let map2 = void 0;\n if (sourceMaps) {\n const ms = new MagicString(code);\n map2 = ms.generateMap({\n source: cleanId,\n file: cleanId,\n hires: true,\n includeContent: true\n });\n }\n return { code, map: map2 };\n }\n const pluginVersion = options?.pluginVersion || (resolveVersionFn ? resolveVersionFn(options?.projectRoot, cleanId) : \"0.0.0\");\n const globals = createGlobalsSet(options?.globals, options?.strictGlobal);\n let location = cleanId;\n if (options?.relativeSourceLocation && options?.projectRoot) {\n location = path.relative(options.projectRoot, cleanId).replace(/\\\\/g, \"/\");\n }\n let currentCode = code;\n const initDataDefs = /* @__PURE__ */ new Map();\n const passMaps = [];\n let remainingPassBudget = 100;\n while (remainingPassBudget-- > 0) {\n const parseResult = parseSync(cleanId, currentCode, {\n sourceType: \"module\",\n lang\n });\n if (parseResult.errors && parseResult.errors.length > 0) {\n const err = parseResult.errors[0];\n throw new Error(\n err.codeframe || err.message || \"Syntax Error while parsing worklet\"\n );\n }\n const candidates = findWorkletCandidates(parseResult.program);\n if (candidates.length === 0) {\n break;\n }\n const innermostCandidates = candidates.filter((c) => {\n return !candidates.some(\n (other) => other !== c && other.fnNode.start >= c.fnNode.start && other.fnNode.end <= c.fnNode.end\n );\n });\n if (innermostCandidates.length === 0) {\n throw new Error(\n `[worklets] Cyclic or unresolvable worklet nesting detected in ${cleanId}`\n );\n }\n const ms = new MagicString(currentCode);\n const inlinedInitData = /* @__PURE__ */ new Map();\n for (const candidate of innermostCandidates) {\n const closureVars = hasDirective(candidate.fnNode, \"no-worklet-closure\") ? [] : getClosureVariables(candidate.fnNode, globals);\n const fnName = candidate.name;\n const serializedCode = serializeWorkletForUI(\n candidate.fnNode,\n currentCode,\n fnName,\n closureVars\n );\n const workletHash = calculateWorkletHash(serializedCode);\n const initDataVar = `_worklet_${workletHash}_init_data`;\n const initDataDecl = `var ${initDataVar} = {\n code: ${JSON.stringify(serializedCode)},\n location: ${JSON.stringify(location)}\n};`;\n const enclosingFn = hasDirective(candidate.fnNode, \"limit-init-data-hoisting\") ? findEnclosingFunction(parseResult.program, candidate.fnNode) : void 0;\n if (enclosingFn) {\n const insertAt = bodyStartAfterDirectives(enclosingFn, currentCode);\n let declared = inlinedInitData.get(insertAt);\n if (!declared) {\n declared = /* @__PURE__ */ new Set();\n inlinedInitData.set(insertAt, declared);\n }\n if (!declared.has(initDataVar)) {\n declared.add(initDataVar);\n ms.appendLeft(insertAt, `\n${initDataDecl}\n`);\n }\n } else if (!initDataDefs.has(initDataVar)) {\n initDataDefs.set(initDataVar, initDataDecl);\n }\n const localFnCode = buildLocalFunction(candidate.fnNode, currentCode, fnName);\n const localName = fnName || \"_worklet\";\n const closureProps = closureVars.map((v) => `${v}: ${v}`).join(\", \");\n const iife = `(function () {\n var _e = [new (typeof global !== 'undefined' ? global : globalThis).Error(), 1, -27];\n var ${localName} = ${localFnCode};\n ${localName}.__closure = { ${closureProps} };\n ${localName}.__workletHash = ${workletHash};\n ${localName}.__pluginVersion = ${JSON.stringify(pluginVersion)};\n ${localName}.__initData = ${initDataVar};\n ${localName}.__stackDetails = _e;\n return ${localName};\n})()`;\n if (candidate.kind === \"function_declaration\") {\n if (candidate.parent?.type === \"ExportNamedDeclaration\") {\n ms.overwrite(\n candidate.parent.start,\n candidate.parent.end,\n `export var ${candidate.name} = ${iife};`\n );\n } else if (candidate.parent?.type === \"ExportDefaultDeclaration\") {\n ms.overwrite(\n candidate.parent.start,\n candidate.parent.end,\n `var ${candidate.name || \"_defaultWorklet\"} = ${iife};\nexport default ${candidate.name || \"_defaultWorklet\"};`\n );\n } else {\n ms.overwrite(\n candidate.node.start,\n candidate.node.end,\n `var ${candidate.name} = ${iife};`\n );\n }\n } else if (candidate.kind === \"object_method\") {\n ms.overwrite(\n candidate.node.start,\n candidate.node.end,\n `${candidate.name}: ${iife}`\n );\n } else {\n ms.overwrite(candidate.node.start, candidate.node.end, iife);\n }\n }\n if (sourceMaps) {\n passMaps.push(\n ms.generateMap({\n source: cleanId,\n file: cleanId,\n hires: true,\n includeContent: true\n })\n );\n }\n currentCode = ms.toString();\n }\n const finalCheck = parseSync(cleanId, currentCode, { sourceType: \"module\", lang });\n const remaining = findWorkletCandidates(finalCheck.program);\n if (remaining.length > 0) {\n throw new Error(\n `[worklets] Exceeded maximum pass budget while transforming worklets in ${cleanId}. ${remaining.length} worklet(s) remained untransformed.`\n );\n }\n if (initDataDefs.size > 0) {\n const initDataCode = Array.from(initDataDefs.values()).join(\"\\n\") + \"\\n\";\n const msPrepend = new MagicString(currentCode);\n msPrepend.prepend(initDataCode);\n if (sourceMaps) {\n passMaps.push(\n msPrepend.generateMap({\n source: cleanId,\n file: cleanId,\n hires: true,\n includeContent: true\n })\n );\n }\n currentCode = msPrepend.toString();\n }\n let map = void 0;\n if (sourceMaps && passMaps.length > 0) {\n if (passMaps.length === 1) {\n map = passMaps[0];\n } else {\n map = remapping(passMaps.slice().reverse(), () => null);\n }\n if (map) {\n map.sources = [cleanId];\n map.file = cleanId;\n }\n }\n return {\n code: currentCode,\n map\n };\n}\nexport {\n executeWorkletTransform,\n prepareWorkletsForReactCompiler\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=types.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vxrn/compiler",
3
- "version": "1.27.1",
3
+ "version": "2.0.0-beta.45.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
@@ -36,12 +36,13 @@
36
36
  "@babel/plugin-transform-react-jsx": "^7.27.1",
37
37
  "@babel/plugin-transform-regenerator": "^7.28.4",
38
38
  "@jridgewell/remapping": "^2.3.0",
39
- "@vxrn/utils": "1.27.1",
40
- "@vxrn/vite-native-client": "1.27.1",
39
+ "@vxrn/utils": "2.0.0-beta.45.1",
40
+ "@vxrn/vite-native-client": "2.0.0-beta.45.1",
41
41
  "babel-plugin-react-compiler": "^1.0.0",
42
- "babel-plugin-syntax-hermes-parser": "^0.32.0",
42
+ "babel-plugin-syntax-hermes-parser": "^0.36.1",
43
+ "babel-plugin-transform-flow-enums": "^0.0.2",
43
44
  "esbuild": "^0.25.12",
44
- "hermes-parser": "^0.32.0",
45
+ "hermes-parser": "^0.36.1",
45
46
  "magic-string": "^0.30.21",
46
47
  "oxc-parser": "^0.112.0",
47
48
  "oxc-transform": "^0.148.0",
@@ -50,7 +51,7 @@
50
51
  },
51
52
  "devDependencies": {
52
53
  "@jridgewell/trace-mapping": "^0.3.25",
53
- "@tamagui/build": "2.6.2",
54
+ "@tamagui/build": "3.0.0-beta.1309.1",
54
55
  "depcheck": "^1.4.7",
55
56
  "rolldown": "^1.2.8",
56
57
  "vite": "^8.2.2",