@vxrn/compiler 1.25.13 → 1.25.16-1788753284749

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 (124) hide show
  1. package/dist/cjs/cache.cjs +3 -1
  2. package/dist/cjs/configure.cjs +9 -1
  3. package/dist/cjs/index.cjs +82 -4
  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/transformHermesLoops.cjs +317 -0
  9. package/dist/cjs/transformHermesLoops.test.cjs +220 -0
  10. package/dist/cjs/transformSWC.cjs +102 -137
  11. package/dist/cjs/transformSWC.test.cjs +74 -0
  12. package/dist/cjs/transformWorklets.cjs +121 -0
  13. package/dist/cjs/transformWorklets.test.cjs +604 -0
  14. package/dist/cjs/worklets/autoworklet.cjs +265 -0
  15. package/dist/cjs/worklets/globals.cjs +71 -0
  16. package/dist/cjs/worklets/hash.cjs +38 -0
  17. package/dist/cjs/worklets/scope.cjs +370 -0
  18. package/dist/cjs/worklets/serialize.cjs +101 -0
  19. package/dist/cjs/worklets/transform.cjs +232 -0
  20. package/dist/cjs/worklets/types.cjs +18 -0
  21. package/dist/esm/cache.mjs +4 -2
  22. package/dist/esm/cache.mjs.map +1 -1
  23. package/dist/esm/configure.mjs +8 -1
  24. package/dist/esm/configure.mjs.map +1 -1
  25. package/dist/esm/index.js +72 -5
  26. package/dist/esm/index.js.map +1 -1
  27. package/dist/esm/index.mjs +72 -5
  28. package/dist/esm/index.mjs.map +1 -1
  29. package/dist/esm/reactNativeCodegen.mjs +104 -0
  30. package/dist/esm/reactNativeCodegen.mjs.map +1 -0
  31. package/dist/esm/reactNativeViewConfig.mjs +460 -0
  32. package/dist/esm/reactNativeViewConfig.mjs.map +1 -0
  33. package/dist/esm/transformBabel.mjs +14 -19
  34. package/dist/esm/transformBabel.mjs.map +1 -1
  35. package/dist/esm/transformBabel.test.mjs +261 -1
  36. package/dist/esm/transformBabel.test.mjs.map +1 -1
  37. package/dist/esm/transformHermesLoops.mjs +281 -0
  38. package/dist/esm/transformHermesLoops.mjs.map +1 -0
  39. package/dist/esm/transformHermesLoops.test.mjs +197 -0
  40. package/dist/esm/transformHermesLoops.test.mjs.map +1 -0
  41. package/dist/esm/transformSWC.mjs +89 -138
  42. package/dist/esm/transformSWC.mjs.map +1 -1
  43. package/dist/esm/transformSWC.test.mjs +75 -0
  44. package/dist/esm/transformSWC.test.mjs.map +1 -0
  45. package/dist/esm/transformWorklets.mjs +81 -0
  46. package/dist/esm/transformWorklets.mjs.map +1 -0
  47. package/dist/esm/transformWorklets.test.mjs +581 -0
  48. package/dist/esm/transformWorklets.test.mjs.map +1 -0
  49. package/dist/esm/worklets/autoworklet.mjs +234 -0
  50. package/dist/esm/worklets/autoworklet.mjs.map +1 -0
  51. package/dist/esm/worklets/globals.mjs +45 -0
  52. package/dist/esm/worklets/globals.mjs.map +1 -0
  53. package/dist/esm/worklets/hash.mjs +13 -0
  54. package/dist/esm/worklets/hash.mjs.map +1 -0
  55. package/dist/esm/worklets/scope.mjs +345 -0
  56. package/dist/esm/worklets/scope.mjs.map +1 -0
  57. package/dist/esm/worklets/serialize.mjs +75 -0
  58. package/dist/esm/worklets/serialize.mjs.map +1 -0
  59. package/dist/esm/worklets/transform.mjs +196 -0
  60. package/dist/esm/worklets/transform.mjs.map +1 -0
  61. package/dist/esm/worklets/types.mjs +2 -0
  62. package/dist/esm/worklets/types.mjs.map +1 -0
  63. package/package.json +10 -6
  64. package/src/cache.ts +9 -2
  65. package/src/configure.ts +12 -0
  66. package/src/index.ts +93 -13
  67. package/src/reactNativeCodegen.ts +181 -0
  68. package/src/reactNativeViewConfig.ts +593 -0
  69. package/src/transformBabel.test.ts +268 -1
  70. package/src/transformBabel.ts +21 -31
  71. package/src/transformHermesLoops.test.ts +282 -0
  72. package/src/transformHermesLoops.ts +433 -0
  73. package/src/transformSWC.test.ts +88 -0
  74. package/src/transformSWC.ts +109 -160
  75. package/src/transformWorklets.test.ts +708 -0
  76. package/src/transformWorklets.ts +160 -0
  77. package/src/types.ts +4 -4
  78. package/src/worklets/autoworklet.ts +391 -0
  79. package/src/worklets/globals.ts +125 -0
  80. package/src/worklets/hash.ts +14 -0
  81. package/src/worklets/scope.ts +401 -0
  82. package/src/worklets/serialize.ts +114 -0
  83. package/src/worklets/transform.ts +282 -0
  84. package/src/worklets/types.ts +26 -0
  85. package/types/cache.d.ts +1 -0
  86. package/types/cache.d.ts.map +1 -1
  87. package/types/configure.d.ts +2 -0
  88. package/types/configure.d.ts.map +1 -1
  89. package/types/index.d.ts +3 -0
  90. package/types/index.d.ts.map +1 -1
  91. package/types/reactNativeCodegen.d.ts +5 -0
  92. package/types/reactNativeCodegen.d.ts.map +1 -0
  93. package/types/reactNativeViewConfig.d.ts +35 -0
  94. package/types/reactNativeViewConfig.d.ts.map +1 -0
  95. package/types/transformBabel.d.ts +3 -3
  96. package/types/transformBabel.d.ts.map +1 -1
  97. package/types/transformHermesLoops.d.ts +5 -0
  98. package/types/transformHermesLoops.d.ts.map +1 -0
  99. package/types/transformHermesLoops.test.d.ts +2 -0
  100. package/types/transformHermesLoops.test.d.ts.map +1 -0
  101. package/types/transformSWC.d.ts +12 -3
  102. package/types/transformSWC.d.ts.map +1 -1
  103. package/types/transformSWC.test.d.ts +2 -0
  104. package/types/transformSWC.test.d.ts.map +1 -0
  105. package/types/transformWorklets.d.ts +22 -0
  106. package/types/transformWorklets.d.ts.map +1 -0
  107. package/types/transformWorklets.test.d.ts +2 -0
  108. package/types/transformWorklets.test.d.ts.map +1 -0
  109. package/types/types.d.ts +4 -4
  110. package/types/types.d.ts.map +1 -1
  111. package/types/worklets/autoworklet.d.ts +14 -0
  112. package/types/worklets/autoworklet.d.ts.map +1 -0
  113. package/types/worklets/globals.d.ts +3 -0
  114. package/types/worklets/globals.d.ts.map +1 -0
  115. package/types/worklets/hash.d.ts +5 -0
  116. package/types/worklets/hash.d.ts.map +1 -0
  117. package/types/worklets/scope.d.ts +7 -0
  118. package/types/worklets/scope.d.ts.map +1 -0
  119. package/types/worklets/serialize.d.ts +12 -0
  120. package/types/worklets/serialize.d.ts.map +1 -0
  121. package/types/worklets/transform.d.ts +6 -0
  122. package/types/worklets/transform.d.ts.map +1 -0
  123. package/types/worklets/types.d.ts +21 -0
  124. package/types/worklets/types.d.ts.map +1 -0
@@ -0,0 +1,345 @@
1
+ function getClosureVariables(fnNode, globals) {
2
+ const rootScope = {
3
+ parent: null,
4
+ isFunction: true,
5
+ bindings: /* @__PURE__ */new Set(),
6
+ varBindings: /* @__PURE__ */new Set()
7
+ };
8
+ let currentScope = rootScope;
9
+ const freeVariables = /* @__PURE__ */new Set();
10
+ if (fnNode.id && fnNode.id.name) {
11
+ rootScope.bindings.add(fnNode.id.name);
12
+ }
13
+ function pushScope(isFunction) {
14
+ const newScope = {
15
+ parent: currentScope,
16
+ isFunction,
17
+ bindings: /* @__PURE__ */new Set(),
18
+ varBindings: isFunction ? /* @__PURE__ */new Set() : currentScope.varBindings
19
+ };
20
+ currentScope = newScope;
21
+ return newScope;
22
+ }
23
+ function popScope() {
24
+ if (currentScope.parent) {
25
+ currentScope = currentScope.parent;
26
+ }
27
+ }
28
+ function addBindings(pattern, targetSet) {
29
+ if (!pattern) return;
30
+ switch (pattern.type) {
31
+ case "Identifier":
32
+ targetSet.add(pattern.name);
33
+ break;
34
+ case "AssignmentPattern":
35
+ addBindings(pattern.left, targetSet);
36
+ walk(pattern.right);
37
+ break;
38
+ case "RestElement":
39
+ addBindings(pattern.argument, targetSet);
40
+ break;
41
+ case "ArrayPattern":
42
+ for (const el of pattern.elements) {
43
+ if (el) addBindings(el, targetSet);
44
+ }
45
+ break;
46
+ case "ObjectPattern":
47
+ for (const prop of pattern.properties) {
48
+ if (prop.type === "Property") {
49
+ if (prop.computed) walk(prop.key);
50
+ addBindings(prop.value, targetSet);
51
+ } else if (prop.type === "RestElement") {
52
+ addBindings(prop.argument, targetSet);
53
+ }
54
+ }
55
+ break;
56
+ }
57
+ }
58
+ function addBindingsOnly(pattern, targetSet) {
59
+ if (!pattern) return;
60
+ switch (pattern.type) {
61
+ case "Identifier":
62
+ targetSet.add(pattern.name);
63
+ break;
64
+ case "AssignmentPattern":
65
+ addBindingsOnly(pattern.left, targetSet);
66
+ break;
67
+ case "RestElement":
68
+ addBindingsOnly(pattern.argument, targetSet);
69
+ break;
70
+ case "ArrayPattern":
71
+ for (const el of pattern.elements) {
72
+ if (el) addBindingsOnly(el, targetSet);
73
+ }
74
+ break;
75
+ case "ObjectPattern":
76
+ for (const prop of pattern.properties) {
77
+ if (prop.type === "Property") {
78
+ addBindingsOnly(prop.value, targetSet);
79
+ } else if (prop.type === "RestElement") {
80
+ addBindingsOnly(prop.argument, targetSet);
81
+ }
82
+ }
83
+ break;
84
+ }
85
+ }
86
+ function hoistDeclarations(node, direct) {
87
+ if (!node || typeof node !== "object" || typeof node.type !== "string") return;
88
+ switch (node.type) {
89
+ case "FunctionDeclaration":
90
+ if (node.id?.name) {
91
+ currentScope.bindings.add(node.id.name);
92
+ currentScope.varBindings.add(node.id.name);
93
+ }
94
+ return;
95
+ case "FunctionExpression":
96
+ case "ArrowFunctionExpression":
97
+ return;
98
+ case "ClassDeclaration":
99
+ if (direct && node.id?.name) currentScope.bindings.add(node.id.name);
100
+ return;
101
+ case "VariableDeclaration":
102
+ if (node.kind === "var") {
103
+ for (const d of node.declarations) addBindingsOnly(d.id, currentScope.varBindings);
104
+ } else if (direct) {
105
+ for (const d of node.declarations) addBindingsOnly(d.id, currentScope.bindings);
106
+ }
107
+ return;
108
+ case "ExportNamedDeclaration":
109
+ case "ExportDefaultDeclaration":
110
+ hoistDeclarations(node.declaration, direct);
111
+ return;
112
+ }
113
+ for (const key of Object.keys(node)) {
114
+ if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
115
+ const child = node[key];
116
+ if (Array.isArray(child)) {
117
+ for (const item of child) hoistDeclarations(item, false);
118
+ } else if (child && typeof child === "object") {
119
+ hoistDeclarations(child, false);
120
+ }
121
+ }
122
+ }
123
+ if (fnNode.params) {
124
+ for (const param of fnNode.params) {
125
+ addBindings(param, rootScope.bindings);
126
+ }
127
+ }
128
+ function isDeclaredInScopes(name, fromScope) {
129
+ let s = fromScope;
130
+ while (s) {
131
+ if (s.bindings.has(name) || s.varBindings.has(name)) {
132
+ return true;
133
+ }
134
+ s = s.parent;
135
+ }
136
+ return false;
137
+ }
138
+ function resolveIdentifier(name) {
139
+ if (!isDeclaredInScopes(name, currentScope) && !globals.has(name)) {
140
+ freeVariables.add(name);
141
+ }
142
+ }
143
+ function walk(node) {
144
+ if (!node || typeof node !== "object") return;
145
+ if (node.type === "TSTypeAnnotation" || node.type === "TSTypeReference" || node.type === "TSTypeAliasDeclaration" || node.type === "TSInterfaceDeclaration" || node.type === "TSTypeParameterDeclaration" || node.type === "TSTypeParameterInstantiation" || node.type === "TSTypeQuery" || node.type === "TSQualifiedName") {
146
+ return;
147
+ }
148
+ if (node.type === "TSAsExpression" || node.type === "TSSatisfiesExpression" || node.type === "TSTypeAssertion" || node.type === "TSNonNullExpression" || node.type === "TSInstantiationExpression") {
149
+ walk(node.expression);
150
+ return;
151
+ }
152
+ switch (node.type) {
153
+ case "BlockStatement":
154
+ {
155
+ const isRootBody = node === fnNode.body;
156
+ if (!isRootBody) {
157
+ pushScope(false);
158
+ }
159
+ for (const stmt of node.body) {
160
+ hoistDeclarations(stmt, true);
161
+ }
162
+ for (const stmt of node.body) {
163
+ walk(stmt);
164
+ }
165
+ if (!isRootBody) {
166
+ popScope();
167
+ }
168
+ return;
169
+ }
170
+ case "VariableDeclaration":
171
+ {
172
+ const isVar = node.kind === "var";
173
+ const targetSet = isVar ? currentScope.varBindings : currentScope.bindings;
174
+ for (const decl of node.declarations) {
175
+ addBindings(decl.id, targetSet);
176
+ if (decl.init) walk(decl.init);
177
+ }
178
+ return;
179
+ }
180
+ case "FunctionDeclaration":
181
+ case "FunctionExpression":
182
+ {
183
+ if (node.id && node.id.name) {
184
+ currentScope.bindings.add(node.id.name);
185
+ }
186
+ pushScope(true);
187
+ if (node.params) {
188
+ for (const param of node.params) {
189
+ addBindings(param, currentScope.bindings);
190
+ }
191
+ }
192
+ walk(node.body);
193
+ popScope();
194
+ return;
195
+ }
196
+ case "ArrowFunctionExpression":
197
+ {
198
+ pushScope(true);
199
+ if (node.params) {
200
+ for (const param of node.params) {
201
+ addBindings(param, currentScope.bindings);
202
+ }
203
+ }
204
+ walk(node.body);
205
+ popScope();
206
+ return;
207
+ }
208
+ case "CatchClause":
209
+ {
210
+ pushScope(false);
211
+ if (node.param) {
212
+ addBindings(node.param, currentScope.bindings);
213
+ }
214
+ walk(node.body);
215
+ popScope();
216
+ return;
217
+ }
218
+ case "ForStatement":
219
+ {
220
+ pushScope(false);
221
+ if (node.init) walk(node.init);
222
+ if (node.test) walk(node.test);
223
+ if (node.update) walk(node.update);
224
+ walk(node.body);
225
+ popScope();
226
+ return;
227
+ }
228
+ case "ForInStatement":
229
+ case "ForOfStatement":
230
+ {
231
+ pushScope(false);
232
+ walk(node.left);
233
+ walk(node.right);
234
+ walk(node.body);
235
+ popScope();
236
+ return;
237
+ }
238
+ case "ClassDeclaration":
239
+ case "ClassExpression":
240
+ {
241
+ if (node.id && node.id.name) {
242
+ currentScope.bindings.add(node.id.name);
243
+ }
244
+ if (node.superClass) walk(node.superClass);
245
+ pushScope(false);
246
+ walk(node.body);
247
+ popScope();
248
+ return;
249
+ }
250
+ case "MemberExpression":
251
+ {
252
+ walk(node.object);
253
+ if (node.computed) {
254
+ walk(node.property);
255
+ }
256
+ return;
257
+ }
258
+ case "Property":
259
+ {
260
+ if (node.computed) {
261
+ walk(node.key);
262
+ }
263
+ walk(node.value);
264
+ return;
265
+ }
266
+ case "MethodDefinition":
267
+ {
268
+ if (node.computed) {
269
+ walk(node.key);
270
+ }
271
+ walk(node.value);
272
+ return;
273
+ }
274
+ case "Identifier":
275
+ {
276
+ resolveIdentifier(node.name);
277
+ return;
278
+ }
279
+ case "JSXElement":
280
+ {
281
+ if (node.openingElement) {
282
+ const nameNode = node.openingElement.name;
283
+ if (nameNode.type === "JSXIdentifier") {
284
+ if (/^[A-Z]/.test(nameNode.name)) {
285
+ resolveIdentifier(nameNode.name);
286
+ }
287
+ } else if (nameNode.type === "JSXMemberExpression") {
288
+ let root = nameNode.object;
289
+ while (root.type === "JSXMemberExpression") {
290
+ root = root.object;
291
+ }
292
+ if (root.type === "JSXIdentifier") {
293
+ resolveIdentifier(root.name);
294
+ }
295
+ }
296
+ if (node.openingElement.attributes) {
297
+ for (const attr of node.openingElement.attributes) {
298
+ walk(attr);
299
+ }
300
+ }
301
+ }
302
+ if (node.children) {
303
+ for (const child of node.children) {
304
+ walk(child);
305
+ }
306
+ }
307
+ return;
308
+ }
309
+ case "JSXAttribute":
310
+ {
311
+ if (node.value) {
312
+ walk(node.value);
313
+ }
314
+ return;
315
+ }
316
+ case "JSXExpressionContainer":
317
+ {
318
+ walk(node.expression);
319
+ return;
320
+ }
321
+ case "BreakStatement":
322
+ case "ContinueStatement":
323
+ case "LabeledStatement":
324
+ {
325
+ if (node.body) walk(node.body);
326
+ return;
327
+ }
328
+ }
329
+ for (const key of Object.keys(node)) {
330
+ if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
331
+ const child = node[key];
332
+ if (Array.isArray(child)) {
333
+ for (const item of child) {
334
+ walk(item);
335
+ }
336
+ } else if (child && typeof child === "object") {
337
+ walk(child);
338
+ }
339
+ }
340
+ }
341
+ walk(fnNode.body);
342
+ return Array.from(freeVariables).sort();
343
+ }
344
+ export { getClosureVariables };
345
+ //# sourceMappingURL=scope.mjs.map
@@ -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,196 @@
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 findEnclosingFunction(program, node) {
12
+ let best = void 0;
13
+ const walk = n => {
14
+ if (!n || typeof n !== "object") return;
15
+ if (Array.isArray(n)) {
16
+ for (const c of n) walk(c);
17
+ return;
18
+ }
19
+ if (typeof n.type !== "string") return;
20
+ if (typeof n.start === "number" && (n.start > node.start || n.end < node.end)) return;
21
+ 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)) {
22
+ best = n;
23
+ }
24
+ for (const key in n) {
25
+ if (key === "parent") continue;
26
+ walk(n[key]);
27
+ }
28
+ };
29
+ walk(program);
30
+ return best;
31
+ }
32
+ function executeWorkletTransform(id, code, sourceMaps = false, options, resolveVersionFn) {
33
+ const cleanId = id.split("?")[0];
34
+ const lang = /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx";
35
+ const initialParse = parseSync(cleanId, code, {
36
+ sourceType: "module",
37
+ lang
38
+ });
39
+ if (initialParse.errors && initialParse.errors.length > 0) {
40
+ const err = initialParse.errors[0];
41
+ throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
42
+ }
43
+ const initialCandidates = findWorkletCandidates(initialParse.program);
44
+ if (initialCandidates.length === 0) {
45
+ let map2 = void 0;
46
+ if (sourceMaps) {
47
+ const ms = new MagicString(code);
48
+ map2 = ms.generateMap({
49
+ source: cleanId,
50
+ file: cleanId,
51
+ hires: true,
52
+ includeContent: true
53
+ });
54
+ }
55
+ return {
56
+ code,
57
+ map: map2
58
+ };
59
+ }
60
+ const pluginVersion = options?.pluginVersion || (resolveVersionFn ? resolveVersionFn(options?.projectRoot, cleanId) : "0.0.0");
61
+ const globals = createGlobalsSet(options?.globals, options?.strictGlobal);
62
+ let location = cleanId;
63
+ if (options?.relativeSourceLocation && options?.projectRoot) {
64
+ location = path.relative(options.projectRoot, cleanId).replace(/\\/g, "/");
65
+ }
66
+ let currentCode = code;
67
+ const initDataDefs = /* @__PURE__ */new Map();
68
+ const passMaps = [];
69
+ let remainingPassBudget = 100;
70
+ while (remainingPassBudget-- > 0) {
71
+ const parseResult = parseSync(cleanId, currentCode, {
72
+ sourceType: "module",
73
+ lang
74
+ });
75
+ if (parseResult.errors && parseResult.errors.length > 0) {
76
+ const err = parseResult.errors[0];
77
+ throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
78
+ }
79
+ const candidates = findWorkletCandidates(parseResult.program);
80
+ if (candidates.length === 0) {
81
+ break;
82
+ }
83
+ const innermostCandidates = candidates.filter(c => {
84
+ return !candidates.some(other => other !== c && other.fnNode.start >= c.fnNode.start && other.fnNode.end <= c.fnNode.end);
85
+ });
86
+ if (innermostCandidates.length === 0) {
87
+ throw new Error(`[worklets] Cyclic or unresolvable worklet nesting detected in ${cleanId}`);
88
+ }
89
+ const ms = new MagicString(currentCode);
90
+ const inlinedInitData = /* @__PURE__ */new Map();
91
+ for (const candidate of innermostCandidates) {
92
+ const closureVars = hasDirective(candidate.fnNode, "no-worklet-closure") ? [] : getClosureVariables(candidate.fnNode, globals);
93
+ const fnName = candidate.name;
94
+ const serializedCode = serializeWorkletForUI(candidate.fnNode, currentCode, fnName, closureVars);
95
+ const workletHash = calculateWorkletHash(serializedCode);
96
+ const initDataVar = `_worklet_${workletHash}_init_data`;
97
+ const initDataDecl = `var ${initDataVar} = {
98
+ code: ${JSON.stringify(serializedCode)},
99
+ location: ${JSON.stringify(location)}
100
+ };`;
101
+ const enclosingFn = hasDirective(candidate.fnNode, "limit-init-data-hoisting") ? findEnclosingFunction(parseResult.program, candidate.fnNode) : void 0;
102
+ if (enclosingFn) {
103
+ const insertAt = bodyStartAfterDirectives(enclosingFn, currentCode);
104
+ let declared = inlinedInitData.get(insertAt);
105
+ if (!declared) {
106
+ declared = /* @__PURE__ */new Set();
107
+ inlinedInitData.set(insertAt, declared);
108
+ }
109
+ if (!declared.has(initDataVar)) {
110
+ declared.add(initDataVar);
111
+ ms.appendLeft(insertAt, `
112
+ ${initDataDecl}
113
+ `);
114
+ }
115
+ } else if (!initDataDefs.has(initDataVar)) {
116
+ initDataDefs.set(initDataVar, initDataDecl);
117
+ }
118
+ const localFnCode = buildLocalFunction(candidate.fnNode, currentCode, fnName);
119
+ const localName = fnName || "_worklet";
120
+ const closureProps = closureVars.map(v => `${v}: ${v}`).join(", ");
121
+ const iife = `(function () {
122
+ var _e = [new (typeof global !== 'undefined' ? global : globalThis).Error(), 1, -27];
123
+ var ${localName} = ${localFnCode};
124
+ ${localName}.__closure = { ${closureProps} };
125
+ ${localName}.__workletHash = ${workletHash};
126
+ ${localName}.__pluginVersion = ${JSON.stringify(pluginVersion)};
127
+ ${localName}.__initData = ${initDataVar};
128
+ ${localName}.__stackDetails = _e;
129
+ return ${localName};
130
+ })()`;
131
+ if (candidate.kind === "function_declaration") {
132
+ if (candidate.parent?.type === "ExportNamedDeclaration") {
133
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `export var ${candidate.name} = ${iife};`);
134
+ } else if (candidate.parent?.type === "ExportDefaultDeclaration") {
135
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `var ${candidate.name || "_defaultWorklet"} = ${iife};
136
+ export default ${candidate.name || "_defaultWorklet"};`);
137
+ } else {
138
+ ms.overwrite(candidate.node.start, candidate.node.end, `var ${candidate.name} = ${iife};`);
139
+ }
140
+ } else if (candidate.kind === "object_method") {
141
+ ms.overwrite(candidate.node.start, candidate.node.end, `${candidate.name}: ${iife}`);
142
+ } else {
143
+ ms.overwrite(candidate.node.start, candidate.node.end, iife);
144
+ }
145
+ }
146
+ if (sourceMaps) {
147
+ passMaps.push(ms.generateMap({
148
+ source: cleanId,
149
+ file: cleanId,
150
+ hires: true,
151
+ includeContent: true
152
+ }));
153
+ }
154
+ currentCode = ms.toString();
155
+ }
156
+ const finalCheck = parseSync(cleanId, currentCode, {
157
+ sourceType: "module",
158
+ lang
159
+ });
160
+ const remaining = findWorkletCandidates(finalCheck.program);
161
+ if (remaining.length > 0) {
162
+ throw new Error(`[worklets] Exceeded maximum pass budget while transforming worklets in ${cleanId}. ${remaining.length} worklet(s) remained untransformed.`);
163
+ }
164
+ if (initDataDefs.size > 0) {
165
+ const initDataCode = Array.from(initDataDefs.values()).join("\n") + "\n";
166
+ const msPrepend = new MagicString(currentCode);
167
+ msPrepend.prepend(initDataCode);
168
+ if (sourceMaps) {
169
+ passMaps.push(msPrepend.generateMap({
170
+ source: cleanId,
171
+ file: cleanId,
172
+ hires: true,
173
+ includeContent: true
174
+ }));
175
+ }
176
+ currentCode = msPrepend.toString();
177
+ }
178
+ let map = void 0;
179
+ if (sourceMaps && passMaps.length > 0) {
180
+ if (passMaps.length === 1) {
181
+ map = passMaps[0];
182
+ } else {
183
+ map = remapping(passMaps.slice().reverse(), () => null);
184
+ }
185
+ if (map) {
186
+ map.sources = [cleanId];
187
+ map.file = cleanId;
188
+ }
189
+ }
190
+ return {
191
+ code: currentCode,
192
+ map
193
+ };
194
+ }
195
+ export { executeWorkletTransform };
196
+ //# 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","findEnclosingFunction","program","node","best","walk","n","Array","isArray","c","type","start","end","has","body","key","executeWorkletTransform","id","code","sourceMaps","options","resolveVersionFn","cleanId","split","lang","test","endsWith","initialParse","sourceType","errors","length","err","Error","codeframe","message","initialCandidates","map","ms","generateMap","source","file","hires","includeContent","map2","pluginVersion","projectRoot","globals","strictGlobal","location","relativeSourceLocation","relative","replace","currentCode","initDataDefs","Map","passMaps","remainingPassBudget","parseResult","candidates","innermostCandidates","filter","some","other","fnNode","inlinedInitData","candidate","closureVars","fnName","name","serializedCode","workletHash","initDataVar","initDataDecl","JSON","stringify","enclosingFn","insertAt","declared","get","set","add","appendLeft","localFnCode","localName","closureProps","v","join","iife","kind","parent","overwrite","push","toString","finalCheck","remaining","size","initDataCode","from","values","msPrepend","prepend","slice","reverse","sources"],"sources":["../../../src/worklets/transform.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}