@vxrn/compiler 1.25.16 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cache.cjs +4 -2
- package/dist/cjs/configure.cjs +9 -1
- package/dist/cjs/index.cjs +87 -5
- package/dist/cjs/reactNativeCodegen.cjs +140 -0
- package/dist/cjs/reactNativeViewConfig.cjs +489 -0
- package/dist/cjs/transformBabel.cjs +15 -20
- package/dist/cjs/transformBabel.test.cjs +260 -0
- package/dist/cjs/transformHermesAsync.cjs +61 -0
- package/dist/cjs/transformHermesLoops.cjs +319 -0
- package/dist/cjs/transformHermesLoops.test.cjs +257 -0
- package/dist/cjs/transformSWC.cjs +110 -138
- package/dist/cjs/transformSWC.test.cjs +117 -0
- package/dist/cjs/transformWorklets.cjs +123 -0
- package/dist/cjs/transformWorklets.test.cjs +604 -0
- package/dist/cjs/worklets/autoworklet.cjs +265 -0
- package/dist/cjs/worklets/globals.cjs +73 -0
- package/dist/cjs/worklets/hash.cjs +38 -0
- package/dist/cjs/worklets/scope.cjs +370 -0
- package/dist/cjs/worklets/serialize.cjs +101 -0
- package/dist/cjs/worklets/transform.cjs +266 -0
- package/dist/cjs/worklets/types.cjs +18 -0
- package/dist/esm/cache.mjs +5 -3
- package/dist/esm/cache.mjs.map +1 -1
- package/dist/esm/configure.mjs +8 -1
- package/dist/esm/configure.mjs.map +1 -1
- package/dist/esm/index.js +75 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +75 -6
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/reactNativeCodegen.mjs +104 -0
- package/dist/esm/reactNativeCodegen.mjs.map +1 -0
- package/dist/esm/reactNativeViewConfig.mjs +460 -0
- package/dist/esm/reactNativeViewConfig.mjs.map +1 -0
- package/dist/esm/transformBabel.mjs +14 -19
- package/dist/esm/transformBabel.mjs.map +1 -1
- package/dist/esm/transformBabel.test.mjs +261 -1
- package/dist/esm/transformBabel.test.mjs.map +1 -1
- package/dist/esm/transformHermesAsync.mjs +25 -0
- package/dist/esm/transformHermesAsync.mjs.map +1 -0
- package/dist/esm/transformHermesLoops.mjs +283 -0
- package/dist/esm/transformHermesLoops.mjs.map +1 -0
- package/dist/esm/transformHermesLoops.test.mjs +234 -0
- package/dist/esm/transformHermesLoops.test.mjs.map +1 -0
- package/dist/esm/transformSWC.mjs +96 -139
- package/dist/esm/transformSWC.mjs.map +1 -1
- package/dist/esm/transformSWC.test.mjs +118 -0
- package/dist/esm/transformSWC.test.mjs.map +1 -0
- package/dist/esm/transformWorklets.mjs +82 -0
- package/dist/esm/transformWorklets.mjs.map +1 -0
- package/dist/esm/transformWorklets.test.mjs +581 -0
- package/dist/esm/transformWorklets.test.mjs.map +1 -0
- package/dist/esm/worklets/autoworklet.mjs +234 -0
- package/dist/esm/worklets/autoworklet.mjs.map +1 -0
- package/dist/esm/worklets/globals.mjs +46 -0
- package/dist/esm/worklets/globals.mjs.map +1 -0
- package/dist/esm/worklets/hash.mjs +13 -0
- package/dist/esm/worklets/hash.mjs.map +1 -0
- package/dist/esm/worklets/scope.mjs +345 -0
- package/dist/esm/worklets/scope.mjs.map +1 -0
- package/dist/esm/worklets/serialize.mjs +75 -0
- package/dist/esm/worklets/serialize.mjs.map +1 -0
- package/dist/esm/worklets/transform.mjs +229 -0
- package/dist/esm/worklets/transform.mjs.map +1 -0
- package/dist/esm/worklets/types.mjs +2 -0
- package/dist/esm/worklets/types.mjs.map +1 -0
- package/package.json +11 -6
- package/src/cache.ts +10 -3
- package/src/configure.ts +12 -0
- package/src/index.ts +96 -13
- package/src/reactNativeCodegen.ts +181 -0
- package/src/reactNativeViewConfig.ts +593 -0
- package/src/transformBabel.test.ts +268 -1
- package/src/transformBabel.ts +21 -31
- package/src/transformHermesAsync.ts +30 -0
- package/src/transformHermesLoops.test.ts +341 -0
- package/src/transformHermesLoops.ts +435 -0
- package/src/transformSWC.test.ts +132 -0
- package/src/transformSWC.ts +121 -161
- package/src/transformWorklets.test.ts +708 -0
- package/src/transformWorklets.ts +160 -0
- package/src/types.ts +4 -4
- package/src/worklets/autoworklet.ts +391 -0
- package/src/worklets/globals.ts +129 -0
- package/src/worklets/hash.ts +14 -0
- package/src/worklets/scope.ts +401 -0
- package/src/worklets/serialize.ts +114 -0
- package/src/worklets/transform.ts +319 -0
- package/src/worklets/types.ts +26 -0
- package/types/cache.d.ts +1 -0
- package/types/cache.d.ts.map +1 -1
- package/types/configure.d.ts +2 -0
- package/types/configure.d.ts.map +1 -1
- package/types/index.d.ts +6 -0
- package/types/index.d.ts.map +1 -1
- package/types/reactNativeCodegen.d.ts +5 -0
- package/types/reactNativeCodegen.d.ts.map +1 -0
- package/types/reactNativeViewConfig.d.ts +35 -0
- package/types/reactNativeViewConfig.d.ts.map +1 -0
- package/types/transformBabel.d.ts +3 -3
- package/types/transformBabel.d.ts.map +1 -1
- package/types/transformHermesAsync.d.ts +5 -0
- package/types/transformHermesAsync.d.ts.map +1 -0
- package/types/transformHermesLoops.d.ts +5 -0
- package/types/transformHermesLoops.d.ts.map +1 -0
- package/types/transformHermesLoops.test.d.ts +2 -0
- package/types/transformHermesLoops.test.d.ts.map +1 -0
- package/types/transformSWC.d.ts +13 -3
- package/types/transformSWC.d.ts.map +1 -1
- package/types/transformSWC.test.d.ts +2 -0
- package/types/transformSWC.test.d.ts.map +1 -0
- package/types/transformWorklets.d.ts +23 -0
- package/types/transformWorklets.d.ts.map +1 -0
- package/types/transformWorklets.test.d.ts +2 -0
- package/types/transformWorklets.test.d.ts.map +1 -0
- package/types/types.d.ts +4 -4
- package/types/types.d.ts.map +1 -1
- package/types/worklets/autoworklet.d.ts +14 -0
- package/types/worklets/autoworklet.d.ts.map +1 -0
- package/types/worklets/globals.d.ts +4 -0
- package/types/worklets/globals.d.ts.map +1 -0
- package/types/worklets/hash.d.ts +5 -0
- package/types/worklets/hash.d.ts.map +1 -0
- package/types/worklets/scope.d.ts +7 -0
- package/types/worklets/scope.d.ts.map +1 -0
- package/types/worklets/serialize.d.ts +12 -0
- package/types/worklets/serialize.d.ts.map +1 -0
- package/types/worklets/transform.d.ts +10 -0
- package/types/worklets/transform.d.ts.map +1 -0
- package/types/worklets/types.d.ts +21 -0
- package/types/worklets/types.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getClosureVariables","fnNode","globals","rootScope","parent","isFunction","bindings","Set","varBindings","currentScope","freeVariables","id","name","add","pushScope","newScope","popScope","addBindings","pattern","targetSet","type","left","walk","right","argument","el","elements","prop","properties","computed","key","value","addBindingsOnly","hoistDeclarations","node","direct","kind","d","declarations","declaration","Object","keys","child","Array","isArray","item","params","param","isDeclaredInScopes","fromScope","s","has","resolveIdentifier","expression","isRootBody","body","stmt","isVar","decl","init","test","update","superClass","object","property","openingElement","nameNode","root","attributes","attr","children","from","sort"],"sources":["../../../src/worklets/scope.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { transformSync } from "oxc-transform";
|
|
2
|
+
import { bodyStartAfterDirectives } from "./autoworklet.mjs";
|
|
3
|
+
function assertTransformed(transformed, name, what) {
|
|
4
|
+
const error = transformed.errors?.[0];
|
|
5
|
+
if (error) {
|
|
6
|
+
throw new Error(`[worklets] failed to build ${what} code for ${name || "anonymous worklet"}: ${error.message || error}`);
|
|
7
|
+
}
|
|
8
|
+
if (!transformed.code.trim()) {
|
|
9
|
+
throw new Error(`[worklets] built empty ${what} code for ${name || "anonymous worklet"}`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function serializeWorkletForUI(fnNode, code, name, closureVars) {
|
|
13
|
+
let rawParams = "";
|
|
14
|
+
if (fnNode.params && fnNode.params.length > 0) {
|
|
15
|
+
const pStart = fnNode.params[0].start;
|
|
16
|
+
const pEnd = fnNode.params[fnNode.params.length - 1].end;
|
|
17
|
+
rawParams = code.slice(pStart, pEnd);
|
|
18
|
+
}
|
|
19
|
+
let rawBody = "";
|
|
20
|
+
if (fnNode.body.type === "BlockStatement") {
|
|
21
|
+
const bodyStart = bodyStartAfterDirectives(fnNode, code);
|
|
22
|
+
const bodyEnd = fnNode.body.end - 1;
|
|
23
|
+
rawBody = code.slice(bodyStart, bodyEnd);
|
|
24
|
+
} else {
|
|
25
|
+
rawBody = `return ${code.slice(fnNode.body.start, fnNode.body.end)};`;
|
|
26
|
+
}
|
|
27
|
+
const unpacker = closureVars.length > 0 ? `const { ${closureVars.join(", ")} } = this.__closure ?? this._closure;
|
|
28
|
+
` : "";
|
|
29
|
+
const asyncPrefix = fnNode.async ? "async " : "";
|
|
30
|
+
const genPrefix = fnNode.generator ? "*" : "";
|
|
31
|
+
const fnName = name || "_worklet";
|
|
32
|
+
const fullFn = `${asyncPrefix}function${genPrefix} ${fnName}(${rawParams}) {
|
|
33
|
+
${unpacker}${rawBody}
|
|
34
|
+
}`;
|
|
35
|
+
const transformed = transformSync("worklet.ts", fullFn);
|
|
36
|
+
assertTransformed(transformed, name, "serialized");
|
|
37
|
+
return transformed.code.trim();
|
|
38
|
+
}
|
|
39
|
+
function buildLocalFunction(fnNode, code, name) {
|
|
40
|
+
let rawParams = "";
|
|
41
|
+
if (fnNode.params && fnNode.params.length > 0) {
|
|
42
|
+
const pStart = fnNode.params[0].start;
|
|
43
|
+
const pEnd = fnNode.params[fnNode.params.length - 1].end;
|
|
44
|
+
rawParams = code.slice(pStart, pEnd);
|
|
45
|
+
}
|
|
46
|
+
let rawBody = "";
|
|
47
|
+
if (fnNode.body.type === "BlockStatement") {
|
|
48
|
+
const bodyStart = bodyStartAfterDirectives(fnNode, code);
|
|
49
|
+
const bodyEnd = fnNode.body.end - 1;
|
|
50
|
+
rawBody = code.slice(bodyStart, bodyEnd);
|
|
51
|
+
} else {
|
|
52
|
+
rawBody = code.slice(fnNode.body.start, fnNode.body.end);
|
|
53
|
+
}
|
|
54
|
+
let rawFn = "";
|
|
55
|
+
const asyncPrefix = fnNode.async ? "async " : "";
|
|
56
|
+
const genPrefix = fnNode.generator ? "*" : "";
|
|
57
|
+
if (fnNode.type === "ArrowFunctionExpression") {
|
|
58
|
+
if (fnNode.body.type === "BlockStatement") {
|
|
59
|
+
rawFn = `${asyncPrefix}(${rawParams}) => {
|
|
60
|
+
${rawBody}
|
|
61
|
+
}`;
|
|
62
|
+
} else {
|
|
63
|
+
rawFn = `${asyncPrefix}(${rawParams}) => (${rawBody})`;
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
rawFn = `${asyncPrefix}function${genPrefix} ${name || "_worklet"}(${rawParams}) {
|
|
67
|
+
${rawBody}
|
|
68
|
+
}`;
|
|
69
|
+
}
|
|
70
|
+
const transformed = transformSync("local.ts", rawFn);
|
|
71
|
+
assertTransformed(transformed, name, "local");
|
|
72
|
+
return transformed.code.trim().replace(/;$/, "");
|
|
73
|
+
}
|
|
74
|
+
export { buildLocalFunction, serializeWorkletForUI };
|
|
75
|
+
//# sourceMappingURL=serialize.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["transformSync","bodyStartAfterDirectives","assertTransformed","transformed","name","what","error","errors","Error","message","code","trim","serializeWorkletForUI","fnNode","closureVars","rawParams","params","length","pStart","start","pEnd","end","slice","rawBody","body","type","bodyStart","bodyEnd","unpacker","join","asyncPrefix","async","genPrefix","generator","fnName","fullFn","buildLocalFunction","rawFn","replace"],"sources":["../../../src/worklets/serialize.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import MagicString from "magic-string";
|
|
3
|
+
import remapping from "@jridgewell/remapping";
|
|
4
|
+
import { parseSync } from "oxc-parser";
|
|
5
|
+
import { bodyStartAfterDirectives, findWorkletCandidates, hasDirective } from "./autoworklet.mjs";
|
|
6
|
+
import { createGlobalsSet } from "./globals.mjs";
|
|
7
|
+
import { calculateWorkletHash } from "./hash.mjs";
|
|
8
|
+
import { getClosureVariables } from "./scope.mjs";
|
|
9
|
+
import { buildLocalFunction, serializeWorkletForUI } from "./serialize.mjs";
|
|
10
|
+
const FUNCTION_TYPES = /* @__PURE__ */new Set(["FunctionDeclaration", "FunctionExpression", "ArrowFunctionExpression"]);
|
|
11
|
+
function prepareWorkletsForReactCompiler(id, code, sourceMaps = false) {
|
|
12
|
+
const cleanId = id.split("?")[0];
|
|
13
|
+
const parsed = parseSync(cleanId, code, {
|
|
14
|
+
sourceType: "module",
|
|
15
|
+
lang: /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx"
|
|
16
|
+
});
|
|
17
|
+
if (parsed.errors.length) {
|
|
18
|
+
const error = parsed.errors[0];
|
|
19
|
+
throw new Error(error.codeframe || error.message || "Syntax Error while parsing worklet");
|
|
20
|
+
}
|
|
21
|
+
const candidates = findWorkletCandidates(parsed.program).filter(candidate => candidate.isAutoWorklet && !hasDirective(candidate.fnNode, "worklet"));
|
|
22
|
+
if (!candidates.length) return null;
|
|
23
|
+
const output = new MagicString(code);
|
|
24
|
+
for (const {
|
|
25
|
+
fnNode
|
|
26
|
+
} of candidates) {
|
|
27
|
+
const body = fnNode.body;
|
|
28
|
+
if (body.type === "BlockStatement") {
|
|
29
|
+
output.appendLeft(body.start + 1, "'worklet';");
|
|
30
|
+
} else {
|
|
31
|
+
output.appendLeft(body.start, "{ 'worklet'; return (");
|
|
32
|
+
output.appendLeft(body.end, "); }");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
code: output.toString(),
|
|
37
|
+
map: sourceMaps ? output.generateMap({
|
|
38
|
+
source: cleanId,
|
|
39
|
+
hires: true,
|
|
40
|
+
includeContent: true
|
|
41
|
+
}) : void 0
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function findEnclosingFunction(program, node) {
|
|
45
|
+
let best = void 0;
|
|
46
|
+
const walk = n => {
|
|
47
|
+
if (!n || typeof n !== "object") return;
|
|
48
|
+
if (Array.isArray(n)) {
|
|
49
|
+
for (const c of n) walk(c);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (typeof n.type !== "string") return;
|
|
53
|
+
if (typeof n.start === "number" && (n.start > node.start || n.end < node.end)) return;
|
|
54
|
+
if (FUNCTION_TYPES.has(n.type) && n !== node && n.body?.type === "BlockStatement" && n.body.start < node.start && n.body.end > node.end && (!best || n.body.start > best.body.start)) {
|
|
55
|
+
best = n;
|
|
56
|
+
}
|
|
57
|
+
for (const key in n) {
|
|
58
|
+
if (key === "parent") continue;
|
|
59
|
+
walk(n[key]);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
walk(program);
|
|
63
|
+
return best;
|
|
64
|
+
}
|
|
65
|
+
function executeWorkletTransform(id, code, sourceMaps = false, options, resolveVersionFn) {
|
|
66
|
+
const cleanId = id.split("?")[0];
|
|
67
|
+
const lang = /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx";
|
|
68
|
+
const initialParse = parseSync(cleanId, code, {
|
|
69
|
+
sourceType: "module",
|
|
70
|
+
lang
|
|
71
|
+
});
|
|
72
|
+
if (initialParse.errors && initialParse.errors.length > 0) {
|
|
73
|
+
const err = initialParse.errors[0];
|
|
74
|
+
throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
|
|
75
|
+
}
|
|
76
|
+
const initialCandidates = findWorkletCandidates(initialParse.program);
|
|
77
|
+
if (initialCandidates.length === 0) {
|
|
78
|
+
let map2 = void 0;
|
|
79
|
+
if (sourceMaps) {
|
|
80
|
+
const ms = new MagicString(code);
|
|
81
|
+
map2 = ms.generateMap({
|
|
82
|
+
source: cleanId,
|
|
83
|
+
file: cleanId,
|
|
84
|
+
hires: true,
|
|
85
|
+
includeContent: true
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
code,
|
|
90
|
+
map: map2
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const pluginVersion = options?.pluginVersion || (resolveVersionFn ? resolveVersionFn(options?.projectRoot, cleanId) : "0.0.0");
|
|
94
|
+
const globals = createGlobalsSet(options?.globals, options?.strictGlobal);
|
|
95
|
+
let location = cleanId;
|
|
96
|
+
if (options?.relativeSourceLocation && options?.projectRoot) {
|
|
97
|
+
location = path.relative(options.projectRoot, cleanId).replace(/\\/g, "/");
|
|
98
|
+
}
|
|
99
|
+
let currentCode = code;
|
|
100
|
+
const initDataDefs = /* @__PURE__ */new Map();
|
|
101
|
+
const passMaps = [];
|
|
102
|
+
let remainingPassBudget = 100;
|
|
103
|
+
while (remainingPassBudget-- > 0) {
|
|
104
|
+
const parseResult = parseSync(cleanId, currentCode, {
|
|
105
|
+
sourceType: "module",
|
|
106
|
+
lang
|
|
107
|
+
});
|
|
108
|
+
if (parseResult.errors && parseResult.errors.length > 0) {
|
|
109
|
+
const err = parseResult.errors[0];
|
|
110
|
+
throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
|
|
111
|
+
}
|
|
112
|
+
const candidates = findWorkletCandidates(parseResult.program);
|
|
113
|
+
if (candidates.length === 0) {
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
const innermostCandidates = candidates.filter(c => {
|
|
117
|
+
return !candidates.some(other => other !== c && other.fnNode.start >= c.fnNode.start && other.fnNode.end <= c.fnNode.end);
|
|
118
|
+
});
|
|
119
|
+
if (innermostCandidates.length === 0) {
|
|
120
|
+
throw new Error(`[worklets] Cyclic or unresolvable worklet nesting detected in ${cleanId}`);
|
|
121
|
+
}
|
|
122
|
+
const ms = new MagicString(currentCode);
|
|
123
|
+
const inlinedInitData = /* @__PURE__ */new Map();
|
|
124
|
+
for (const candidate of innermostCandidates) {
|
|
125
|
+
const closureVars = hasDirective(candidate.fnNode, "no-worklet-closure") ? [] : getClosureVariables(candidate.fnNode, globals);
|
|
126
|
+
const fnName = candidate.name;
|
|
127
|
+
const serializedCode = serializeWorkletForUI(candidate.fnNode, currentCode, fnName, closureVars);
|
|
128
|
+
const workletHash = calculateWorkletHash(serializedCode);
|
|
129
|
+
const initDataVar = `_worklet_${workletHash}_init_data`;
|
|
130
|
+
const initDataDecl = `var ${initDataVar} = {
|
|
131
|
+
code: ${JSON.stringify(serializedCode)},
|
|
132
|
+
location: ${JSON.stringify(location)}
|
|
133
|
+
};`;
|
|
134
|
+
const enclosingFn = hasDirective(candidate.fnNode, "limit-init-data-hoisting") ? findEnclosingFunction(parseResult.program, candidate.fnNode) : void 0;
|
|
135
|
+
if (enclosingFn) {
|
|
136
|
+
const insertAt = bodyStartAfterDirectives(enclosingFn, currentCode);
|
|
137
|
+
let declared = inlinedInitData.get(insertAt);
|
|
138
|
+
if (!declared) {
|
|
139
|
+
declared = /* @__PURE__ */new Set();
|
|
140
|
+
inlinedInitData.set(insertAt, declared);
|
|
141
|
+
}
|
|
142
|
+
if (!declared.has(initDataVar)) {
|
|
143
|
+
declared.add(initDataVar);
|
|
144
|
+
ms.appendLeft(insertAt, `
|
|
145
|
+
${initDataDecl}
|
|
146
|
+
`);
|
|
147
|
+
}
|
|
148
|
+
} else if (!initDataDefs.has(initDataVar)) {
|
|
149
|
+
initDataDefs.set(initDataVar, initDataDecl);
|
|
150
|
+
}
|
|
151
|
+
const localFnCode = buildLocalFunction(candidate.fnNode, currentCode, fnName);
|
|
152
|
+
const localName = fnName || "_worklet";
|
|
153
|
+
const closureProps = closureVars.map(v => `${v}: ${v}`).join(", ");
|
|
154
|
+
const iife = `(function () {
|
|
155
|
+
var _e = [new (typeof global !== 'undefined' ? global : globalThis).Error(), 1, -27];
|
|
156
|
+
var ${localName} = ${localFnCode};
|
|
157
|
+
${localName}.__closure = { ${closureProps} };
|
|
158
|
+
${localName}.__workletHash = ${workletHash};
|
|
159
|
+
${localName}.__pluginVersion = ${JSON.stringify(pluginVersion)};
|
|
160
|
+
${localName}.__initData = ${initDataVar};
|
|
161
|
+
${localName}.__stackDetails = _e;
|
|
162
|
+
return ${localName};
|
|
163
|
+
})()`;
|
|
164
|
+
if (candidate.kind === "function_declaration") {
|
|
165
|
+
if (candidate.parent?.type === "ExportNamedDeclaration") {
|
|
166
|
+
ms.overwrite(candidate.parent.start, candidate.parent.end, `export var ${candidate.name} = ${iife};`);
|
|
167
|
+
} else if (candidate.parent?.type === "ExportDefaultDeclaration") {
|
|
168
|
+
ms.overwrite(candidate.parent.start, candidate.parent.end, `var ${candidate.name || "_defaultWorklet"} = ${iife};
|
|
169
|
+
export default ${candidate.name || "_defaultWorklet"};`);
|
|
170
|
+
} else {
|
|
171
|
+
ms.overwrite(candidate.node.start, candidate.node.end, `var ${candidate.name} = ${iife};`);
|
|
172
|
+
}
|
|
173
|
+
} else if (candidate.kind === "object_method") {
|
|
174
|
+
ms.overwrite(candidate.node.start, candidate.node.end, `${candidate.name}: ${iife}`);
|
|
175
|
+
} else {
|
|
176
|
+
ms.overwrite(candidate.node.start, candidate.node.end, iife);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (sourceMaps) {
|
|
180
|
+
passMaps.push(ms.generateMap({
|
|
181
|
+
source: cleanId,
|
|
182
|
+
file: cleanId,
|
|
183
|
+
hires: true,
|
|
184
|
+
includeContent: true
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
currentCode = ms.toString();
|
|
188
|
+
}
|
|
189
|
+
const finalCheck = parseSync(cleanId, currentCode, {
|
|
190
|
+
sourceType: "module",
|
|
191
|
+
lang
|
|
192
|
+
});
|
|
193
|
+
const remaining = findWorkletCandidates(finalCheck.program);
|
|
194
|
+
if (remaining.length > 0) {
|
|
195
|
+
throw new Error(`[worklets] Exceeded maximum pass budget while transforming worklets in ${cleanId}. ${remaining.length} worklet(s) remained untransformed.`);
|
|
196
|
+
}
|
|
197
|
+
if (initDataDefs.size > 0) {
|
|
198
|
+
const initDataCode = Array.from(initDataDefs.values()).join("\n") + "\n";
|
|
199
|
+
const msPrepend = new MagicString(currentCode);
|
|
200
|
+
msPrepend.prepend(initDataCode);
|
|
201
|
+
if (sourceMaps) {
|
|
202
|
+
passMaps.push(msPrepend.generateMap({
|
|
203
|
+
source: cleanId,
|
|
204
|
+
file: cleanId,
|
|
205
|
+
hires: true,
|
|
206
|
+
includeContent: true
|
|
207
|
+
}));
|
|
208
|
+
}
|
|
209
|
+
currentCode = msPrepend.toString();
|
|
210
|
+
}
|
|
211
|
+
let map = void 0;
|
|
212
|
+
if (sourceMaps && passMaps.length > 0) {
|
|
213
|
+
if (passMaps.length === 1) {
|
|
214
|
+
map = passMaps[0];
|
|
215
|
+
} else {
|
|
216
|
+
map = remapping(passMaps.slice().reverse(), () => null);
|
|
217
|
+
}
|
|
218
|
+
if (map) {
|
|
219
|
+
map.sources = [cleanId];
|
|
220
|
+
map.file = cleanId;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
code: currentCode,
|
|
225
|
+
map
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
export { executeWorkletTransform, prepareWorkletsForReactCompiler };
|
|
229
|
+
//# sourceMappingURL=transform.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["path","MagicString","remapping","parseSync","bodyStartAfterDirectives","findWorkletCandidates","hasDirective","createGlobalsSet","calculateWorkletHash","getClosureVariables","buildLocalFunction","serializeWorkletForUI","FUNCTION_TYPES","Set","prepareWorkletsForReactCompiler","id","code","sourceMaps","cleanId","split","parsed","sourceType","lang","test","endsWith","errors","length","error","Error","codeframe","message","candidates","program","filter","candidate","isAutoWorklet","fnNode","output","body","type","appendLeft","start","end","toString","map","generateMap","source","hires","includeContent","findEnclosingFunction","node","best","walk","n","Array","isArray","c","has","key","executeWorkletTransform","options","resolveVersionFn","initialParse","err","initialCandidates","ms","file","map2","pluginVersion","projectRoot","globals","strictGlobal","location","relativeSourceLocation","relative","replace","currentCode","initDataDefs","Map","passMaps","remainingPassBudget","parseResult","innermostCandidates","some","other","inlinedInitData","closureVars","fnName","name","serializedCode","workletHash","initDataVar","initDataDecl","JSON","stringify","enclosingFn","insertAt","declared","get","set","add","localFnCode","localName","closureProps","v","join","iife","kind","parent","overwrite","push","finalCheck","remaining","size","initDataCode","from","values","msPrepend","prepend","slice","reverse","sources"],"sources":["../../../src/worklets/transform.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vxrn/compiler",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.26.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json",
|
|
@@ -35,16 +35,21 @@
|
|
|
35
35
|
"@babel/plugin-transform-flow-strip-types": "^7.27.1",
|
|
36
36
|
"@babel/plugin-transform-react-jsx": "^7.27.1",
|
|
37
37
|
"@babel/plugin-transform-regenerator": "^7.28.4",
|
|
38
|
-
"@
|
|
39
|
-
"@vxrn/utils": "1.
|
|
40
|
-
"@vxrn/vite-native-client": "1.
|
|
38
|
+
"@jridgewell/remapping": "^2.3.0",
|
|
39
|
+
"@vxrn/utils": "1.26.0",
|
|
40
|
+
"@vxrn/vite-native-client": "1.26.0",
|
|
41
41
|
"babel-plugin-react-compiler": "^1.0.0",
|
|
42
42
|
"babel-plugin-syntax-hermes-parser": "^0.32.0",
|
|
43
|
+
"esbuild": "^0.25.12",
|
|
44
|
+
"hermes-parser": "^0.32.0",
|
|
45
|
+
"magic-string": "^0.30.21",
|
|
46
|
+
"oxc-parser": "^0.112.0",
|
|
47
|
+
"oxc-transform": "^0.148.0",
|
|
43
48
|
"oxc-transform-react": "^0.145.0",
|
|
44
|
-
"react-native-css-interop": "^0.2.6"
|
|
45
|
-
"ts-deepmerge": "^7.0.2"
|
|
49
|
+
"react-native-css-interop": "^0.2.6"
|
|
46
50
|
},
|
|
47
51
|
"devDependencies": {
|
|
52
|
+
"@jridgewell/trace-mapping": "^0.3.25",
|
|
48
53
|
"@tamagui/build": "2.6.2",
|
|
49
54
|
"depcheck": "^1.4.7",
|
|
50
55
|
"rolldown": "^1.2.4",
|
package/src/cache.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto'
|
|
2
2
|
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs'
|
|
3
3
|
import { join } from 'node:path'
|
|
4
|
-
import { configuration } from './configure'
|
|
4
|
+
import { configuration, isNativeWorkletsEnabled } from './configure'
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Fast file-based cache for babel transforms
|
|
@@ -23,9 +23,15 @@ interface CacheStats {
|
|
|
23
23
|
hits: 0
|
|
24
24
|
misses: 0
|
|
25
25
|
writes: 0
|
|
26
|
+
errors: 0
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
const stats: CacheStats = {
|
|
29
|
+
const stats: CacheStats = {
|
|
30
|
+
hits: 0,
|
|
31
|
+
misses: 0,
|
|
32
|
+
writes: 0,
|
|
33
|
+
errors: 0,
|
|
34
|
+
}
|
|
29
35
|
|
|
30
36
|
function getCacheDir(): string {
|
|
31
37
|
// Use .vxrn cache directory
|
|
@@ -43,11 +49,12 @@ function getConfigFingerprint(): string {
|
|
|
43
49
|
JSON.stringify({
|
|
44
50
|
compiler: configuration.enableCompiler,
|
|
45
51
|
reanimated: configuration.enableReanimated,
|
|
52
|
+
nativeWorklets: isNativeWorkletsEnabled(),
|
|
46
53
|
nativewind: configuration.enableNativewind,
|
|
47
54
|
nativeCSS: configuration.enableNativeCSS,
|
|
48
55
|
// bump when the transform engine changes, so entries written by a
|
|
49
56
|
// previous engine aren't served for the same source
|
|
50
|
-
engine: 'oxc-
|
|
57
|
+
engine: 'oxc-worklets-hermes-async',
|
|
51
58
|
})
|
|
52
59
|
)
|
|
53
60
|
.digest('hex')
|
package/src/configure.ts
CHANGED
|
@@ -18,6 +18,7 @@ type CompilerConfig =
|
|
|
18
18
|
type Conf = {
|
|
19
19
|
enableNativewind?: boolean
|
|
20
20
|
enableReanimated?: boolean
|
|
21
|
+
enableNativeWorklets?: boolean
|
|
21
22
|
enableCompiler?: CompilerConfig
|
|
22
23
|
enableNativeCSS?: boolean
|
|
23
24
|
}
|
|
@@ -25,10 +26,21 @@ type Conf = {
|
|
|
25
26
|
export const configuration: Conf = {
|
|
26
27
|
enableNativewind: false,
|
|
27
28
|
enableReanimated: false,
|
|
29
|
+
enableNativeWorklets: true,
|
|
28
30
|
enableCompiler: false,
|
|
29
31
|
enableNativeCSS: false,
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
export function isNativeWorkletsEnabled() {
|
|
35
|
+
if (
|
|
36
|
+
process.env.VXRN_NATIVE_WORKLETS === 'false' ||
|
|
37
|
+
process.env.VXRN_NATIVE_WORKLETS === '0'
|
|
38
|
+
) {
|
|
39
|
+
return false
|
|
40
|
+
}
|
|
41
|
+
return configuration.enableNativeWorklets !== false
|
|
42
|
+
}
|
|
43
|
+
|
|
32
44
|
export function configureVXRNCompilerPlugin(_: Conf) {
|
|
33
45
|
Object.assign(configuration, _)
|
|
34
46
|
}
|
package/src/index.ts
CHANGED
|
@@ -12,19 +12,31 @@ import { resolvePath } from '@vxrn/utils'
|
|
|
12
12
|
import { cssToReactNativeRuntime } from 'react-native-css-interop/css-to-rn/index.js'
|
|
13
13
|
import type { OutputChunk } from 'rolldown'
|
|
14
14
|
import type { PluginOption, ResolvedConfig, UserConfig } from 'vite'
|
|
15
|
-
import { configuration } from './configure'
|
|
15
|
+
import { configuration, isNativeWorkletsEnabled } from './configure'
|
|
16
16
|
import { debug, runtimePublicPath, validParsers } from './constants'
|
|
17
17
|
import {
|
|
18
18
|
getBabelOptions,
|
|
19
19
|
transformBabel,
|
|
20
20
|
transformOxcReactCompiler,
|
|
21
21
|
} from './transformBabel'
|
|
22
|
+
import { shouldSourceMap } from './transformSWC'
|
|
23
|
+
import {
|
|
24
|
+
prepareWorkletsForReactCompiler,
|
|
25
|
+
shouldTransformWorklets,
|
|
26
|
+
transformWorklets,
|
|
27
|
+
} from './transformWorklets'
|
|
22
28
|
import type { Environment, GetTransformProps, Options } from './types'
|
|
23
29
|
import { getCachedTransform, logCacheStats, setCachedTransform } from './cache'
|
|
24
30
|
|
|
25
31
|
export * from './configure'
|
|
26
32
|
export * from './transformBabel'
|
|
27
33
|
export * from './transformSWC'
|
|
34
|
+
export * from './transformWorklets'
|
|
35
|
+
export * from './reactNativeCodegen'
|
|
36
|
+
export * from './transformHermesLoops'
|
|
37
|
+
export * from './transformHermesAsync'
|
|
38
|
+
export { JS_GLOBALS } from './worklets/globals'
|
|
39
|
+
export { getClosureVariables } from './worklets/scope'
|
|
28
40
|
export type { GetTransform } from './types'
|
|
29
41
|
|
|
30
42
|
// Performance tracking
|
|
@@ -148,7 +160,7 @@ async function performBabelTransform({
|
|
|
148
160
|
return null
|
|
149
161
|
}
|
|
150
162
|
|
|
151
|
-
if (userTransform !== 'swc') {
|
|
163
|
+
if (userTransform !== 'swc' && userTransform !== 'oxc') {
|
|
152
164
|
const babelOptions = getBabelOptions({
|
|
153
165
|
...transformProps,
|
|
154
166
|
userSetting: userTransform,
|
|
@@ -175,20 +187,91 @@ async function performBabelTransform({
|
|
|
175
187
|
return cached
|
|
176
188
|
}
|
|
177
189
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
190
|
+
const isWorkletPlugin = (entry: any) => {
|
|
191
|
+
if (!entry) return false
|
|
192
|
+
const name =
|
|
193
|
+
typeof entry === 'string' ? entry : Array.isArray(entry) ? entry[0] : null
|
|
194
|
+
return (
|
|
195
|
+
typeof name === 'string' &&
|
|
196
|
+
(name.includes('react-native-worklets') ||
|
|
197
|
+
name.includes('react-native-reanimated'))
|
|
198
|
+
)
|
|
199
|
+
}
|
|
200
|
+
const workletEntry = babelOptions.plugins?.find(isWorkletPlugin)
|
|
201
|
+
const workletPluginOptions = Array.isArray(workletEntry) ? workletEntry[1] : undefined
|
|
202
|
+
const useWorklets =
|
|
203
|
+
isNativeWorkletsEnabled() &&
|
|
204
|
+
(Boolean(workletEntry) || shouldTransformWorklets({ id, code }))
|
|
205
|
+
let curCode = code
|
|
206
|
+
let workletPreparation: { code: string; map?: any } | null = null
|
|
207
|
+
let compilerOut: { code: string; map?: any } | null = null
|
|
208
|
+
const compilerPluginIndex =
|
|
209
|
+
babelOptions.plugins?.findIndex(
|
|
210
|
+
(x) => Array.isArray(x) && x[0] === 'babel-plugin-react-compiler'
|
|
211
|
+
) ?? -1
|
|
212
|
+
|
|
213
|
+
if (compilerPluginIndex !== -1) {
|
|
214
|
+
// mark callbacks before react compiler moves them into memoized bindings.
|
|
215
|
+
if (useWorklets) {
|
|
216
|
+
workletPreparation = prepareWorkletsForReactCompiler(
|
|
217
|
+
id, curCode, shouldSourceMap()
|
|
218
|
+
)
|
|
219
|
+
if (workletPreparation) curCode = workletPreparation.code
|
|
220
|
+
}
|
|
221
|
+
const compilerTarget =
|
|
222
|
+
(babelOptions.plugins![compilerPluginIndex] as any[])[1]?.target ?? '19'
|
|
223
|
+
compilerOut = await transformOxcReactCompiler(
|
|
224
|
+
id, curCode, compilerTarget, shouldSourceMap()
|
|
225
|
+
)
|
|
226
|
+
if (compilerOut) curCode = compilerOut.code
|
|
227
|
+
babelOptions.plugins!.splice(compilerPluginIndex, 1)
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
let workletsOut: { code: string; map?: any } | null = null
|
|
231
|
+
if (useWorklets) {
|
|
232
|
+
workletsOut = await transformWorklets(id, curCode, shouldSourceMap(), {
|
|
233
|
+
projectRoot,
|
|
234
|
+
...workletPluginOptions,
|
|
235
|
+
})
|
|
236
|
+
babelOptions.plugins = babelOptions.plugins?.filter(
|
|
237
|
+
(entry) => !isWorkletPlugin(entry)
|
|
238
|
+
)
|
|
239
|
+
curCode = workletsOut.code
|
|
240
|
+
}
|
|
186
241
|
|
|
187
242
|
// Cache miss - do the transform
|
|
188
243
|
const startTime = Date.now()
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
244
|
+
let babelOut: { code?: string | null; map?: any } | null = null
|
|
245
|
+
|
|
246
|
+
if (babelOptions.plugins?.length === 0) {
|
|
247
|
+
let finalMap: any = undefined
|
|
248
|
+
if (shouldSourceMap()) {
|
|
249
|
+
const intermediateMaps = [workletPreparation?.map, compilerOut?.map, workletsOut?.map].filter(Boolean)
|
|
250
|
+
if (intermediateMaps.length === 1) {
|
|
251
|
+
finalMap = intermediateMaps[0]
|
|
252
|
+
} else if (intermediateMaps.length > 1) {
|
|
253
|
+
const remapping = (await import('@jridgewell/remapping')).default
|
|
254
|
+
finalMap = remapping(intermediateMaps.slice().reverse(), () => null)
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
babelOut = { code: curCode, map: finalMap }
|
|
258
|
+
} else {
|
|
259
|
+
const babelOptsWithMap =
|
|
260
|
+
shouldSourceMap() && (workletsOut?.map || compilerOut?.map || workletPreparation?.map)
|
|
261
|
+
? { ...babelOptions, sourceMaps: true }
|
|
262
|
+
: babelOptions
|
|
263
|
+
babelOut = await transformBabel(id, curCode, babelOptsWithMap)
|
|
264
|
+
if (shouldSourceMap() && babelOut?.map) {
|
|
265
|
+
const priorMaps = [workletPreparation?.map, compilerOut?.map, workletsOut?.map].filter(Boolean)
|
|
266
|
+
if (priorMaps.length > 0) {
|
|
267
|
+
const remapping = (await import('@jridgewell/remapping')).default
|
|
268
|
+
babelOut.map = remapping(
|
|
269
|
+
[babelOut.map, ...priorMaps.slice().reverse()],
|
|
270
|
+
() => null
|
|
271
|
+
)
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
192
275
|
const babelTime = Date.now() - startTime
|
|
193
276
|
|
|
194
277
|
if (babelOut?.code) {
|