@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.
- package/dist/cjs/cache.cjs +3 -1
- package/dist/cjs/configure.cjs +9 -1
- package/dist/cjs/index.cjs +82 -4
- package/dist/cjs/reactNativeCodegen.cjs +140 -0
- package/dist/cjs/reactNativeViewConfig.cjs +489 -0
- package/dist/cjs/transformBabel.cjs +15 -20
- package/dist/cjs/transformBabel.test.cjs +260 -0
- package/dist/cjs/transformHermesLoops.cjs +317 -0
- package/dist/cjs/transformHermesLoops.test.cjs +220 -0
- package/dist/cjs/transformSWC.cjs +102 -137
- package/dist/cjs/transformSWC.test.cjs +74 -0
- package/dist/cjs/transformWorklets.cjs +121 -0
- package/dist/cjs/transformWorklets.test.cjs +604 -0
- package/dist/cjs/worklets/autoworklet.cjs +265 -0
- package/dist/cjs/worklets/globals.cjs +71 -0
- package/dist/cjs/worklets/hash.cjs +38 -0
- package/dist/cjs/worklets/scope.cjs +370 -0
- package/dist/cjs/worklets/serialize.cjs +101 -0
- package/dist/cjs/worklets/transform.cjs +232 -0
- package/dist/cjs/worklets/types.cjs +18 -0
- package/dist/esm/cache.mjs +4 -2
- package/dist/esm/cache.mjs.map +1 -1
- package/dist/esm/configure.mjs +8 -1
- package/dist/esm/configure.mjs.map +1 -1
- package/dist/esm/index.js +72 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +72 -5
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/reactNativeCodegen.mjs +104 -0
- package/dist/esm/reactNativeCodegen.mjs.map +1 -0
- package/dist/esm/reactNativeViewConfig.mjs +460 -0
- package/dist/esm/reactNativeViewConfig.mjs.map +1 -0
- package/dist/esm/transformBabel.mjs +14 -19
- package/dist/esm/transformBabel.mjs.map +1 -1
- package/dist/esm/transformBabel.test.mjs +261 -1
- package/dist/esm/transformBabel.test.mjs.map +1 -1
- package/dist/esm/transformHermesLoops.mjs +281 -0
- package/dist/esm/transformHermesLoops.mjs.map +1 -0
- package/dist/esm/transformHermesLoops.test.mjs +197 -0
- package/dist/esm/transformHermesLoops.test.mjs.map +1 -0
- package/dist/esm/transformSWC.mjs +89 -138
- package/dist/esm/transformSWC.mjs.map +1 -1
- package/dist/esm/transformSWC.test.mjs +75 -0
- package/dist/esm/transformSWC.test.mjs.map +1 -0
- package/dist/esm/transformWorklets.mjs +81 -0
- package/dist/esm/transformWorklets.mjs.map +1 -0
- package/dist/esm/transformWorklets.test.mjs +581 -0
- package/dist/esm/transformWorklets.test.mjs.map +1 -0
- package/dist/esm/worklets/autoworklet.mjs +234 -0
- package/dist/esm/worklets/autoworklet.mjs.map +1 -0
- package/dist/esm/worklets/globals.mjs +45 -0
- package/dist/esm/worklets/globals.mjs.map +1 -0
- package/dist/esm/worklets/hash.mjs +13 -0
- package/dist/esm/worklets/hash.mjs.map +1 -0
- package/dist/esm/worklets/scope.mjs +345 -0
- package/dist/esm/worklets/scope.mjs.map +1 -0
- package/dist/esm/worklets/serialize.mjs +75 -0
- package/dist/esm/worklets/serialize.mjs.map +1 -0
- package/dist/esm/worklets/transform.mjs +196 -0
- package/dist/esm/worklets/transform.mjs.map +1 -0
- package/dist/esm/worklets/types.mjs +2 -0
- package/dist/esm/worklets/types.mjs.map +1 -0
- package/package.json +10 -6
- package/src/cache.ts +9 -2
- package/src/configure.ts +12 -0
- package/src/index.ts +93 -13
- package/src/reactNativeCodegen.ts +181 -0
- package/src/reactNativeViewConfig.ts +593 -0
- package/src/transformBabel.test.ts +268 -1
- package/src/transformBabel.ts +21 -31
- package/src/transformHermesLoops.test.ts +282 -0
- package/src/transformHermesLoops.ts +433 -0
- package/src/transformSWC.test.ts +88 -0
- package/src/transformSWC.ts +109 -160
- package/src/transformWorklets.test.ts +708 -0
- package/src/transformWorklets.ts +160 -0
- package/src/types.ts +4 -4
- package/src/worklets/autoworklet.ts +391 -0
- package/src/worklets/globals.ts +125 -0
- package/src/worklets/hash.ts +14 -0
- package/src/worklets/scope.ts +401 -0
- package/src/worklets/serialize.ts +114 -0
- package/src/worklets/transform.ts +282 -0
- package/src/worklets/types.ts +26 -0
- package/types/cache.d.ts +1 -0
- package/types/cache.d.ts.map +1 -1
- package/types/configure.d.ts +2 -0
- package/types/configure.d.ts.map +1 -1
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -1
- package/types/reactNativeCodegen.d.ts +5 -0
- package/types/reactNativeCodegen.d.ts.map +1 -0
- package/types/reactNativeViewConfig.d.ts +35 -0
- package/types/reactNativeViewConfig.d.ts.map +1 -0
- package/types/transformBabel.d.ts +3 -3
- package/types/transformBabel.d.ts.map +1 -1
- package/types/transformHermesLoops.d.ts +5 -0
- package/types/transformHermesLoops.d.ts.map +1 -0
- package/types/transformHermesLoops.test.d.ts +2 -0
- package/types/transformHermesLoops.test.d.ts.map +1 -0
- package/types/transformSWC.d.ts +12 -3
- package/types/transformSWC.d.ts.map +1 -1
- package/types/transformSWC.test.d.ts +2 -0
- package/types/transformSWC.test.d.ts.map +1 -0
- package/types/transformWorklets.d.ts +22 -0
- package/types/transformWorklets.d.ts.map +1 -0
- package/types/transformWorklets.test.d.ts +2 -0
- package/types/transformWorklets.test.d.ts.map +1 -0
- package/types/types.d.ts +4 -4
- package/types/types.d.ts.map +1 -1
- package/types/worklets/autoworklet.d.ts +14 -0
- package/types/worklets/autoworklet.d.ts.map +1 -0
- package/types/worklets/globals.d.ts +3 -0
- package/types/worklets/globals.d.ts.map +1 -0
- package/types/worklets/hash.d.ts +5 -0
- package/types/worklets/hash.d.ts.map +1 -0
- package/types/worklets/scope.d.ts +7 -0
- package/types/worklets/scope.d.ts.map +1 -0
- package/types/worklets/serialize.d.ts +12 -0
- package/types/worklets/serialize.d.ts.map +1 -0
- package/types/worklets/transform.d.ts +6 -0
- package/types/worklets/transform.d.ts.map +1 -0
- package/types/worklets/types.d.ts +21 -0
- package/types/worklets/types.d.ts.map +1 -0
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|