@vxrn/compiler 2.0.0-beta.33.1 → 2.0.0-beta.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/cjs/cache.cjs +112 -109
  2. package/dist/cjs/configure.cjs +26 -28
  3. package/dist/cjs/constants.cjs +56 -60
  4. package/dist/cjs/index.cjs +420 -438
  5. package/dist/cjs/reactNativeCodegen.cjs +105 -114
  6. package/dist/cjs/reactNativeViewConfig.cjs +362 -381
  7. package/dist/cjs/refresh-runtime.cjs +390 -397
  8. package/dist/cjs/transformBabel.cjs +278 -218
  9. package/dist/cjs/transformHermesAsync.cjs +36 -47
  10. package/dist/cjs/transformHermesLoops.cjs +279 -281
  11. package/dist/cjs/transformSWC.cjs +183 -200
  12. package/dist/cjs/transformWorklets.cjs +107 -95
  13. package/dist/cjs/types.cjs +9 -11
  14. package/dist/cjs/worklets/autoworklet.cjs +277 -222
  15. package/dist/cjs/worklets/globals.cjs +124 -60
  16. package/dist/cjs/worklets/hash.cjs +23 -27
  17. package/dist/cjs/worklets/scope.cjs +338 -359
  18. package/dist/cjs/worklets/serialize.cjs +73 -75
  19. package/dist/cjs/worklets/transform.cjs +217 -222
  20. package/dist/cjs/worklets/types.cjs +9 -11
  21. package/dist/esm/cache.mjs +96 -89
  22. package/dist/esm/cache.mjs.map +1 -1
  23. package/dist/esm/configure.mjs +11 -10
  24. package/dist/esm/configure.mjs.map +1 -1
  25. package/dist/esm/constants.mjs +41 -41
  26. package/dist/esm/constants.mjs.map +1 -1
  27. package/dist/esm/index.js +417 -420
  28. package/dist/esm/index.js.map +1 -1
  29. package/dist/esm/index.mjs +417 -420
  30. package/dist/esm/index.mjs.map +1 -1
  31. package/dist/esm/reactNativeCodegen.mjs +90 -88
  32. package/dist/esm/reactNativeCodegen.mjs.map +1 -1
  33. package/dist/esm/reactNativeViewConfig.mjs +347 -362
  34. package/dist/esm/reactNativeViewConfig.mjs.map +1 -1
  35. package/dist/esm/refresh-runtime.mjs +372 -376
  36. package/dist/esm/refresh-runtime.mjs.map +1 -1
  37. package/dist/esm/transformBabel.mjs +261 -194
  38. package/dist/esm/transformBabel.mjs.map +1 -1
  39. package/dist/esm/transformHermesAsync.mjs +20 -21
  40. package/dist/esm/transformHermesAsync.mjs.map +1 -1
  41. package/dist/esm/transformHermesLoops.mjs +264 -255
  42. package/dist/esm/transformHermesLoops.mjs.map +1 -1
  43. package/dist/esm/transformSWC.mjs +163 -171
  44. package/dist/esm/transformSWC.mjs.map +1 -1
  45. package/dist/esm/transformWorklets.mjs +89 -69
  46. package/dist/esm/transformWorklets.mjs.map +1 -1
  47. package/dist/esm/types.mjs +0 -2
  48. package/dist/esm/worklets/autoworklet.mjs +258 -200
  49. package/dist/esm/worklets/autoworklet.mjs.map +1 -1
  50. package/dist/esm/worklets/globals.mjs +109 -42
  51. package/dist/esm/worklets/globals.mjs.map +1 -1
  52. package/dist/esm/worklets/hash.mjs +10 -9
  53. package/dist/esm/worklets/hash.mjs.map +1 -1
  54. package/dist/esm/worklets/scope.mjs +325 -341
  55. package/dist/esm/worklets/scope.mjs.map +1 -1
  56. package/dist/esm/worklets/serialize.mjs +60 -58
  57. package/dist/esm/worklets/serialize.mjs.map +1 -1
  58. package/dist/esm/worklets/transform.mjs +201 -197
  59. package/dist/esm/worklets/transform.mjs.map +1 -1
  60. package/dist/esm/worklets/types.mjs +0 -2
  61. package/package.json +7 -6
  62. package/src/cache.ts +37 -7
  63. package/src/index.ts +33 -18
  64. package/src/transformBabel.test.ts +311 -1
  65. package/src/transformBabel.ts +110 -13
  66. package/types/cache.d.ts +2 -2
  67. package/types/cache.d.ts.map +1 -1
  68. package/types/index.d.ts.map +1 -1
  69. package/types/transformBabel.d.ts +16 -1
  70. package/types/transformBabel.d.ts.map +1 -1
  71. package/types/transformSWC.d.ts +1 -4
  72. package/types/transformSWC.d.ts.map +1 -1
  73. package/dist/cjs/transformBabel.test.cjs +0 -360
  74. package/dist/cjs/transformHermesLoops.test.cjs +0 -257
  75. package/dist/cjs/transformSWC.test.cjs +0 -117
  76. package/dist/cjs/transformWorklets.test.cjs +0 -604
  77. package/dist/esm/transformBabel.test.mjs +0 -337
  78. package/dist/esm/transformBabel.test.mjs.map +0 -1
  79. package/dist/esm/transformHermesLoops.test.mjs +0 -234
  80. package/dist/esm/transformHermesLoops.test.mjs.map +0 -1
  81. package/dist/esm/transformSWC.test.mjs +0 -118
  82. package/dist/esm/transformSWC.test.mjs.map +0 -1
  83. package/dist/esm/transformWorklets.test.mjs +0 -581
  84. package/dist/esm/transformWorklets.test.mjs.map +0 -1
  85. package/dist/esm/types.mjs.map +0 -1
  86. package/dist/esm/worklets/types.mjs.map +0 -1
  87. package/types/transformBabel.test.d.ts +0 -2
  88. package/types/transformBabel.test.d.ts.map +0 -1
  89. package/types/transformHermesLoops.test.d.ts +0 -2
  90. package/types/transformHermesLoops.test.d.ts.map +0 -1
  91. package/types/transformSWC.test.d.ts +0 -2
  92. package/types/transformSWC.test.d.ts.map +0 -1
  93. package/types/transformWorklets.test.d.ts +0 -2
  94. package/types/transformWorklets.test.d.ts.map +0 -1
@@ -3,99 +3,97 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
5
  var __export = (target, all) => {
6
- for (var name in all) __defProp(target, name, {
7
- get: all[name],
8
- enumerable: true
9
- });
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
10
  };
11
11
  var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
- get: () => from[key],
15
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
- });
17
- }
18
- return to;
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
19
  };
20
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
- value: true
22
- }), mod);
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
21
  var serialize_exports = {};
24
22
  __export(serialize_exports, {
25
- buildLocalFunction: () => buildLocalFunction,
26
- serializeWorkletForUI: () => serializeWorkletForUI
23
+ buildLocalFunction: () => buildLocalFunction,
24
+ serializeWorkletForUI: () => serializeWorkletForUI
27
25
  });
28
26
  module.exports = __toCommonJS(serialize_exports);
29
27
  var import_oxc_transform = require("oxc-transform");
30
28
  var import_autoworklet = require("./autoworklet.cjs");
31
29
  function assertTransformed(transformed, name, what) {
32
- const error = transformed.errors?.[0];
33
- if (error) {
34
- throw new Error(`[worklets] failed to build ${what} code for ${name || "anonymous worklet"}: ${error.message || error}`);
35
- }
36
- if (!transformed.code.trim()) {
37
- throw new Error(`[worklets] built empty ${what} code for ${name || "anonymous worklet"}`);
38
- }
30
+ const error = transformed.errors?.[0];
31
+ if (error) {
32
+ throw new Error(`[worklets] failed to build ${what} code for ${name || "anonymous worklet"}: ${error.message || error}`);
33
+ }
34
+ if (!transformed.code.trim()) {
35
+ throw new Error(`[worklets] built empty ${what} code for ${name || "anonymous worklet"}`);
36
+ }
39
37
  }
40
38
  function serializeWorkletForUI(fnNode, code, name, closureVars) {
41
- let rawParams = "";
42
- if (fnNode.params && fnNode.params.length > 0) {
43
- const pStart = fnNode.params[0].start;
44
- const pEnd = fnNode.params[fnNode.params.length - 1].end;
45
- rawParams = code.slice(pStart, pEnd);
46
- }
47
- let rawBody = "";
48
- if (fnNode.body.type === "BlockStatement") {
49
- const bodyStart = (0, import_autoworklet.bodyStartAfterDirectives)(fnNode, code);
50
- const bodyEnd = fnNode.body.end - 1;
51
- rawBody = code.slice(bodyStart, bodyEnd);
52
- } else {
53
- rawBody = `return ${code.slice(fnNode.body.start, fnNode.body.end)};`;
54
- }
55
- const unpacker = closureVars.length > 0 ? `const { ${closureVars.join(", ")} } = this.__closure ?? this._closure;
39
+ let rawParams = "";
40
+ if (fnNode.params && fnNode.params.length > 0) {
41
+ const pStart = fnNode.params[0].start;
42
+ const pEnd = fnNode.params[fnNode.params.length - 1].end;
43
+ rawParams = code.slice(pStart, pEnd);
44
+ }
45
+ let rawBody = "";
46
+ if (fnNode.body.type === "BlockStatement") {
47
+ const bodyStart = (0, import_autoworklet.bodyStartAfterDirectives)(fnNode, code);
48
+ const bodyEnd = fnNode.body.end - 1;
49
+ rawBody = code.slice(bodyStart, bodyEnd);
50
+ } else {
51
+ rawBody = `return ${code.slice(fnNode.body.start, fnNode.body.end)};`;
52
+ }
53
+ const unpacker = closureVars.length > 0 ? `const { ${closureVars.join(", ")} } = this.__closure ?? this._closure;
56
54
  ` : "";
57
- const asyncPrefix = fnNode.async ? "async " : "";
58
- const genPrefix = fnNode.generator ? "*" : "";
59
- const fnName = name || "_worklet";
60
- const fullFn = `${asyncPrefix}function${genPrefix} ${fnName}(${rawParams}) {
55
+ const asyncPrefix = fnNode.async ? "async " : "";
56
+ const genPrefix = fnNode.generator ? "*" : "";
57
+ const fnName = name || "_worklet";
58
+ const fullFn = `${asyncPrefix}function${genPrefix} ${fnName}(${rawParams}) {
61
59
  ${unpacker}${rawBody}
62
60
  }`;
63
- const transformed = (0, import_oxc_transform.transformSync)("worklet.ts", fullFn);
64
- assertTransformed(transformed, name, "serialized");
65
- return transformed.code.trim();
61
+ const transformed = (0, import_oxc_transform.transformSync)("worklet.ts", fullFn);
62
+ assertTransformed(transformed, name, "serialized");
63
+ return transformed.code.trim();
66
64
  }
67
65
  function buildLocalFunction(fnNode, code, name) {
68
- let rawParams = "";
69
- if (fnNode.params && fnNode.params.length > 0) {
70
- const pStart = fnNode.params[0].start;
71
- const pEnd = fnNode.params[fnNode.params.length - 1].end;
72
- rawParams = code.slice(pStart, pEnd);
73
- }
74
- let rawBody = "";
75
- if (fnNode.body.type === "BlockStatement") {
76
- const bodyStart = (0, import_autoworklet.bodyStartAfterDirectives)(fnNode, code);
77
- const bodyEnd = fnNode.body.end - 1;
78
- rawBody = code.slice(bodyStart, bodyEnd);
79
- } else {
80
- rawBody = code.slice(fnNode.body.start, fnNode.body.end);
81
- }
82
- let rawFn = "";
83
- const asyncPrefix = fnNode.async ? "async " : "";
84
- const genPrefix = fnNode.generator ? "*" : "";
85
- if (fnNode.type === "ArrowFunctionExpression") {
86
- if (fnNode.body.type === "BlockStatement") {
87
- rawFn = `${asyncPrefix}(${rawParams}) => {
66
+ let rawParams = "";
67
+ if (fnNode.params && fnNode.params.length > 0) {
68
+ const pStart = fnNode.params[0].start;
69
+ const pEnd = fnNode.params[fnNode.params.length - 1].end;
70
+ rawParams = code.slice(pStart, pEnd);
71
+ }
72
+ let rawBody = "";
73
+ if (fnNode.body.type === "BlockStatement") {
74
+ const bodyStart = (0, import_autoworklet.bodyStartAfterDirectives)(fnNode, code);
75
+ const bodyEnd = fnNode.body.end - 1;
76
+ rawBody = code.slice(bodyStart, bodyEnd);
77
+ } else {
78
+ rawBody = code.slice(fnNode.body.start, fnNode.body.end);
79
+ }
80
+ let rawFn = "";
81
+ const asyncPrefix = fnNode.async ? "async " : "";
82
+ const genPrefix = fnNode.generator ? "*" : "";
83
+ if (fnNode.type === "ArrowFunctionExpression") {
84
+ if (fnNode.body.type === "BlockStatement") {
85
+ rawFn = `${asyncPrefix}(${rawParams}) => {
88
86
  ${rawBody}
89
87
  }`;
90
- } else {
91
- rawFn = `${asyncPrefix}(${rawParams}) => (${rawBody})`;
92
- }
93
- } else {
94
- rawFn = `${asyncPrefix}function${genPrefix} ${name || "_worklet"}(${rawParams}) {
88
+ } else {
89
+ rawFn = `${asyncPrefix}(${rawParams}) => (${rawBody})`;
90
+ }
91
+ } else {
92
+ rawFn = `${asyncPrefix}function${genPrefix} ${name || "_worklet"}(${rawParams}) {
95
93
  ${rawBody}
96
94
  }`;
97
- }
98
- const transformed = (0, import_oxc_transform.transformSync)("local.ts", rawFn);
99
- assertTransformed(transformed, name, "local");
100
- return transformed.code.trim().replace(/;$/, "");
101
- }
95
+ }
96
+ const transformed = (0, import_oxc_transform.transformSync)("local.ts", rawFn);
97
+ assertTransformed(transformed, name, "local");
98
+ return transformed.code.trim().replace(/;$/, "");
99
+ }
@@ -5,36 +5,29 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getProtoOf = Object.getPrototypeOf;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
7
  var __export = (target, all) => {
8
- for (var name in all) __defProp(target, name, {
9
- get: all[name],
10
- enumerable: true
11
- });
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
12
  };
13
13
  var __copyProps = (to, from, except, desc) => {
14
- if (from && typeof from === "object" || typeof from === "function") {
15
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
- get: () => from[key],
17
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
- });
19
- }
20
- return to;
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
21
  };
22
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
- value: mod,
29
- enumerable: true
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
30
25
  }) : target, mod));
31
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
- value: true
33
- }), mod);
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
27
  var transform_exports = {};
35
28
  __export(transform_exports, {
36
- executeWorkletTransform: () => executeWorkletTransform,
37
- prepareWorkletsForReactCompiler: () => prepareWorkletsForReactCompiler
29
+ executeWorkletTransform: () => executeWorkletTransform,
30
+ prepareWorkletsForReactCompiler: () => prepareWorkletsForReactCompiler
38
31
  });
39
32
  module.exports = __toCommonJS(transform_exports);
40
33
  var import_node_path = __toESM(require("node:path"), 1);
@@ -46,151 +39,153 @@ var import_globals = require("./globals.cjs");
46
39
  var import_hash = require("./hash.cjs");
47
40
  var import_scope = require("./scope.cjs");
48
41
  var import_serialize = require("./serialize.cjs");
49
- const FUNCTION_TYPES = /* @__PURE__ */new Set(["FunctionDeclaration", "FunctionExpression", "ArrowFunctionExpression"]);
42
+ const FUNCTION_TYPES = /* @__PURE__ */ new Set([
43
+ "FunctionDeclaration",
44
+ "FunctionExpression",
45
+ "ArrowFunctionExpression"
46
+ ]);
50
47
  function prepareWorkletsForReactCompiler(id, code, sourceMaps = false) {
51
- const cleanId = id.split("?")[0];
52
- const parsed = (0, import_oxc_parser.parseSync)(cleanId, code, {
53
- sourceType: "module",
54
- lang: /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx"
55
- });
56
- if (parsed.errors.length) {
57
- const error = parsed.errors[0];
58
- throw new Error(error.codeframe || error.message || "Syntax Error while parsing worklet");
59
- }
60
- const candidates = (0, import_autoworklet.findWorkletCandidates)(parsed.program).filter(candidate => candidate.isAutoWorklet && !(0, import_autoworklet.hasDirective)(candidate.fnNode, "worklet"));
61
- if (!candidates.length) return null;
62
- const output = new import_magic_string.default(code);
63
- for (const {
64
- fnNode
65
- } of candidates) {
66
- const body = fnNode.body;
67
- if (body.type === "BlockStatement") {
68
- output.appendLeft(body.start + 1, "'worklet';");
69
- } else {
70
- output.appendLeft(body.start, "{ 'worklet'; return (");
71
- output.appendLeft(body.end, "); }");
72
- }
73
- }
74
- return {
75
- code: output.toString(),
76
- map: sourceMaps ? output.generateMap({
77
- source: cleanId,
78
- hires: true,
79
- includeContent: true
80
- }) : void 0
81
- };
48
+ const cleanId = id.split("?")[0];
49
+ const parsed = (0, import_oxc_parser.parseSync)(cleanId, code, {
50
+ sourceType: "module",
51
+ lang: /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx"
52
+ });
53
+ if (parsed.errors.length) {
54
+ const error = parsed.errors[0];
55
+ throw new Error(error.codeframe || error.message || "Syntax Error while parsing worklet");
56
+ }
57
+ const candidates = (0, import_autoworklet.findWorkletCandidates)(parsed.program).filter((candidate) => candidate.isAutoWorklet && !(0, import_autoworklet.hasDirective)(candidate.fnNode, "worklet"));
58
+ if (!candidates.length) return null;
59
+ const output = new import_magic_string.default(code);
60
+ for (const { fnNode } of candidates) {
61
+ const body = fnNode.body;
62
+ if (body.type === "BlockStatement") {
63
+ output.appendLeft(body.start + 1, "'worklet';");
64
+ } else {
65
+ output.appendLeft(body.start, "{ 'worklet'; return (");
66
+ output.appendLeft(body.end, "); }");
67
+ }
68
+ }
69
+ return {
70
+ code: output.toString(),
71
+ map: sourceMaps ? output.generateMap({
72
+ source: cleanId,
73
+ hires: true,
74
+ includeContent: true
75
+ }) : void 0
76
+ };
82
77
  }
83
78
  function findEnclosingFunction(program, node) {
84
- let best = void 0;
85
- const walk = n => {
86
- if (!n || typeof n !== "object") return;
87
- if (Array.isArray(n)) {
88
- for (const c of n) walk(c);
89
- return;
90
- }
91
- if (typeof n.type !== "string") return;
92
- if (typeof n.start === "number" && (n.start > node.start || n.end < node.end)) return;
93
- 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)) {
94
- best = n;
95
- }
96
- for (const key in n) {
97
- if (key === "parent") continue;
98
- walk(n[key]);
99
- }
100
- };
101
- walk(program);
102
- return best;
79
+ let best = void 0;
80
+ const walk = (n) => {
81
+ if (!n || typeof n !== "object") return;
82
+ if (Array.isArray(n)) {
83
+ for (const c of n) walk(c);
84
+ return;
85
+ }
86
+ if (typeof n.type !== "string") return;
87
+ if (typeof n.start === "number" && (n.start > node.start || n.end < node.end)) return;
88
+ 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)) {
89
+ best = n;
90
+ }
91
+ for (const key in n) {
92
+ if (key === "parent") continue;
93
+ walk(n[key]);
94
+ }
95
+ };
96
+ walk(program);
97
+ return best;
103
98
  }
104
99
  function executeWorkletTransform(id, code, sourceMaps = false, options, resolveVersionFn) {
105
- const cleanId = id.split("?")[0];
106
- const lang = /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx";
107
- const initialParse = (0, import_oxc_parser.parseSync)(cleanId, code, {
108
- sourceType: "module",
109
- lang
110
- });
111
- if (initialParse.errors && initialParse.errors.length > 0) {
112
- const err = initialParse.errors[0];
113
- throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
114
- }
115
- const initialCandidates = (0, import_autoworklet.findWorkletCandidates)(initialParse.program);
116
- if (initialCandidates.length === 0) {
117
- let map2 = void 0;
118
- if (sourceMaps) {
119
- const ms = new import_magic_string.default(code);
120
- map2 = ms.generateMap({
121
- source: cleanId,
122
- file: cleanId,
123
- hires: true,
124
- includeContent: true
125
- });
126
- }
127
- return {
128
- code,
129
- map: map2
130
- };
131
- }
132
- const pluginVersion = options?.pluginVersion || (resolveVersionFn ? resolveVersionFn(options?.projectRoot, cleanId) : "0.0.0");
133
- const globals = (0, import_globals.createGlobalsSet)(options?.globals, options?.strictGlobal);
134
- let location = cleanId;
135
- if (options?.relativeSourceLocation && options?.projectRoot) {
136
- location = import_node_path.default.relative(options.projectRoot, cleanId).replace(/\\/g, "/");
137
- }
138
- let currentCode = code;
139
- const initDataDefs = /* @__PURE__ */new Map();
140
- const passMaps = [];
141
- let remainingPassBudget = 100;
142
- while (remainingPassBudget-- > 0) {
143
- const parseResult = (0, import_oxc_parser.parseSync)(cleanId, currentCode, {
144
- sourceType: "module",
145
- lang
146
- });
147
- if (parseResult.errors && parseResult.errors.length > 0) {
148
- const err = parseResult.errors[0];
149
- throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
150
- }
151
- const candidates = (0, import_autoworklet.findWorkletCandidates)(parseResult.program);
152
- if (candidates.length === 0) {
153
- break;
154
- }
155
- const innermostCandidates = candidates.filter(c => {
156
- return !candidates.some(other => other !== c && other.fnNode.start >= c.fnNode.start && other.fnNode.end <= c.fnNode.end);
157
- });
158
- if (innermostCandidates.length === 0) {
159
- throw new Error(`[worklets] Cyclic or unresolvable worklet nesting detected in ${cleanId}`);
160
- }
161
- const ms = new import_magic_string.default(currentCode);
162
- const inlinedInitData = /* @__PURE__ */new Map();
163
- for (const candidate of innermostCandidates) {
164
- const closureVars = (0, import_autoworklet.hasDirective)(candidate.fnNode, "no-worklet-closure") ? [] : (0, import_scope.getClosureVariables)(candidate.fnNode, globals);
165
- const fnName = candidate.name;
166
- const serializedCode = (0, import_serialize.serializeWorkletForUI)(candidate.fnNode, currentCode, fnName, closureVars);
167
- const workletHash = (0, import_hash.calculateWorkletHash)(serializedCode);
168
- const initDataVar = `_worklet_${workletHash}_init_data`;
169
- const initDataDecl = `var ${initDataVar} = {
100
+ const cleanId = id.split("?")[0];
101
+ const lang = /\.[cm]?ts$/.test(cleanId) ? "ts" : cleanId.endsWith(".tsx") ? "tsx" : "jsx";
102
+ const initialParse = (0, import_oxc_parser.parseSync)(cleanId, code, {
103
+ sourceType: "module",
104
+ lang
105
+ });
106
+ if (initialParse.errors && initialParse.errors.length > 0) {
107
+ const err = initialParse.errors[0];
108
+ throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
109
+ }
110
+ const initialCandidates = (0, import_autoworklet.findWorkletCandidates)(initialParse.program);
111
+ if (initialCandidates.length === 0) {
112
+ let map2 = void 0;
113
+ if (sourceMaps) {
114
+ const ms = new import_magic_string.default(code);
115
+ map2 = ms.generateMap({
116
+ source: cleanId,
117
+ file: cleanId,
118
+ hires: true,
119
+ includeContent: true
120
+ });
121
+ }
122
+ return {
123
+ code,
124
+ map: map2
125
+ };
126
+ }
127
+ const pluginVersion = options?.pluginVersion || (resolveVersionFn ? resolveVersionFn(options?.projectRoot, cleanId) : "0.0.0");
128
+ const globals = (0, import_globals.createGlobalsSet)(options?.globals, options?.strictGlobal);
129
+ let location = cleanId;
130
+ if (options?.relativeSourceLocation && options?.projectRoot) {
131
+ location = import_node_path.default.relative(options.projectRoot, cleanId).replace(/\\/g, "/");
132
+ }
133
+ let currentCode = code;
134
+ const initDataDefs = /* @__PURE__ */ new Map();
135
+ const passMaps = [];
136
+ let remainingPassBudget = 100;
137
+ while (remainingPassBudget-- > 0) {
138
+ const parseResult = (0, import_oxc_parser.parseSync)(cleanId, currentCode, {
139
+ sourceType: "module",
140
+ lang
141
+ });
142
+ if (parseResult.errors && parseResult.errors.length > 0) {
143
+ const err = parseResult.errors[0];
144
+ throw new Error(err.codeframe || err.message || "Syntax Error while parsing worklet");
145
+ }
146
+ const candidates = (0, import_autoworklet.findWorkletCandidates)(parseResult.program);
147
+ if (candidates.length === 0) {
148
+ break;
149
+ }
150
+ const innermostCandidates = candidates.filter((c) => {
151
+ return !candidates.some((other) => other !== c && other.fnNode.start >= c.fnNode.start && other.fnNode.end <= c.fnNode.end);
152
+ });
153
+ if (innermostCandidates.length === 0) {
154
+ throw new Error(`[worklets] Cyclic or unresolvable worklet nesting detected in ${cleanId}`);
155
+ }
156
+ const ms = new import_magic_string.default(currentCode);
157
+ const inlinedInitData = /* @__PURE__ */ new Map();
158
+ for (const candidate of innermostCandidates) {
159
+ const closureVars = (0, import_autoworklet.hasDirective)(candidate.fnNode, "no-worklet-closure") ? [] : (0, import_scope.getClosureVariables)(candidate.fnNode, globals);
160
+ const fnName = candidate.name;
161
+ const serializedCode = (0, import_serialize.serializeWorkletForUI)(candidate.fnNode, currentCode, fnName, closureVars);
162
+ const workletHash = (0, import_hash.calculateWorkletHash)(serializedCode);
163
+ const initDataVar = `_worklet_${workletHash}_init_data`;
164
+ const initDataDecl = `var ${initDataVar} = {
170
165
  code: ${JSON.stringify(serializedCode)},
171
166
  location: ${JSON.stringify(location)}
172
167
  };`;
173
- const enclosingFn = (0, import_autoworklet.hasDirective)(candidate.fnNode, "limit-init-data-hoisting") ? findEnclosingFunction(parseResult.program, candidate.fnNode) : void 0;
174
- if (enclosingFn) {
175
- const insertAt = (0, import_autoworklet.bodyStartAfterDirectives)(enclosingFn, currentCode);
176
- let declared = inlinedInitData.get(insertAt);
177
- if (!declared) {
178
- declared = /* @__PURE__ */new Set();
179
- inlinedInitData.set(insertAt, declared);
180
- }
181
- if (!declared.has(initDataVar)) {
182
- declared.add(initDataVar);
183
- ms.appendLeft(insertAt, `
168
+ const enclosingFn = (0, import_autoworklet.hasDirective)(candidate.fnNode, "limit-init-data-hoisting") ? findEnclosingFunction(parseResult.program, candidate.fnNode) : void 0;
169
+ if (enclosingFn) {
170
+ const insertAt = (0, import_autoworklet.bodyStartAfterDirectives)(enclosingFn, currentCode);
171
+ let declared = inlinedInitData.get(insertAt);
172
+ if (!declared) {
173
+ declared = /* @__PURE__ */ new Set();
174
+ inlinedInitData.set(insertAt, declared);
175
+ }
176
+ if (!declared.has(initDataVar)) {
177
+ declared.add(initDataVar);
178
+ ms.appendLeft(insertAt, `
184
179
  ${initDataDecl}
185
180
  `);
186
- }
187
- } else if (!initDataDefs.has(initDataVar)) {
188
- initDataDefs.set(initDataVar, initDataDecl);
189
- }
190
- const localFnCode = (0, import_serialize.buildLocalFunction)(candidate.fnNode, currentCode, fnName);
191
- const localName = fnName || "_worklet";
192
- const closureProps = closureVars.map(v => `${v}: ${v}`).join(", ");
193
- const iife = `(function () {
181
+ }
182
+ } else if (!initDataDefs.has(initDataVar)) {
183
+ initDataDefs.set(initDataVar, initDataDecl);
184
+ }
185
+ const localFnCode = (0, import_serialize.buildLocalFunction)(candidate.fnNode, currentCode, fnName);
186
+ const localName = fnName || "_worklet";
187
+ const closureProps = closureVars.map((v) => `${v}: ${v}`).join(", ");
188
+ const iife = `(function () {
194
189
  var _e = [new (typeof global !== 'undefined' ? global : globalThis).Error(), 1, -27];
195
190
  var ${localName} = ${localFnCode};
196
191
  ${localName}.__closure = { ${closureProps} };
@@ -200,67 +195,67 @@ ${initDataDecl}
200
195
  ${localName}.__stackDetails = _e;
201
196
  return ${localName};
202
197
  })()`;
203
- if (candidate.kind === "function_declaration") {
204
- if (candidate.parent?.type === "ExportNamedDeclaration") {
205
- ms.overwrite(candidate.parent.start, candidate.parent.end, `export var ${candidate.name} = ${iife};`);
206
- } else if (candidate.parent?.type === "ExportDefaultDeclaration") {
207
- ms.overwrite(candidate.parent.start, candidate.parent.end, `var ${candidate.name || "_defaultWorklet"} = ${iife};
198
+ if (candidate.kind === "function_declaration") {
199
+ if (candidate.parent?.type === "ExportNamedDeclaration") {
200
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `export var ${candidate.name} = ${iife};`);
201
+ } else if (candidate.parent?.type === "ExportDefaultDeclaration") {
202
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `var ${candidate.name || "_defaultWorklet"} = ${iife};
208
203
  export default ${candidate.name || "_defaultWorklet"};`);
209
- } else {
210
- ms.overwrite(candidate.node.start, candidate.node.end, `var ${candidate.name} = ${iife};`);
211
- }
212
- } else if (candidate.kind === "object_method") {
213
- ms.overwrite(candidate.node.start, candidate.node.end, `${candidate.name}: ${iife}`);
214
- } else {
215
- ms.overwrite(candidate.node.start, candidate.node.end, iife);
216
- }
217
- }
218
- if (sourceMaps) {
219
- passMaps.push(ms.generateMap({
220
- source: cleanId,
221
- file: cleanId,
222
- hires: true,
223
- includeContent: true
224
- }));
225
- }
226
- currentCode = ms.toString();
227
- }
228
- const finalCheck = (0, import_oxc_parser.parseSync)(cleanId, currentCode, {
229
- sourceType: "module",
230
- lang
231
- });
232
- const remaining = (0, import_autoworklet.findWorkletCandidates)(finalCheck.program);
233
- if (remaining.length > 0) {
234
- throw new Error(`[worklets] Exceeded maximum pass budget while transforming worklets in ${cleanId}. ${remaining.length} worklet(s) remained untransformed.`);
235
- }
236
- if (initDataDefs.size > 0) {
237
- const initDataCode = Array.from(initDataDefs.values()).join("\n") + "\n";
238
- const msPrepend = new import_magic_string.default(currentCode);
239
- msPrepend.prepend(initDataCode);
240
- if (sourceMaps) {
241
- passMaps.push(msPrepend.generateMap({
242
- source: cleanId,
243
- file: cleanId,
244
- hires: true,
245
- includeContent: true
246
- }));
247
- }
248
- currentCode = msPrepend.toString();
249
- }
250
- let map = void 0;
251
- if (sourceMaps && passMaps.length > 0) {
252
- if (passMaps.length === 1) {
253
- map = passMaps[0];
254
- } else {
255
- map = (0, import_remapping.default)(passMaps.slice().reverse(), () => null);
256
- }
257
- if (map) {
258
- map.sources = [cleanId];
259
- map.file = cleanId;
260
- }
261
- }
262
- return {
263
- code: currentCode,
264
- map
265
- };
266
- }
204
+ } else {
205
+ ms.overwrite(candidate.node.start, candidate.node.end, `var ${candidate.name} = ${iife};`);
206
+ }
207
+ } else if (candidate.kind === "object_method") {
208
+ ms.overwrite(candidate.node.start, candidate.node.end, `${candidate.name}: ${iife}`);
209
+ } else {
210
+ ms.overwrite(candidate.node.start, candidate.node.end, iife);
211
+ }
212
+ }
213
+ if (sourceMaps) {
214
+ passMaps.push(ms.generateMap({
215
+ source: cleanId,
216
+ file: cleanId,
217
+ hires: true,
218
+ includeContent: true
219
+ }));
220
+ }
221
+ currentCode = ms.toString();
222
+ }
223
+ const finalCheck = (0, import_oxc_parser.parseSync)(cleanId, currentCode, {
224
+ sourceType: "module",
225
+ lang
226
+ });
227
+ const remaining = (0, import_autoworklet.findWorkletCandidates)(finalCheck.program);
228
+ if (remaining.length > 0) {
229
+ throw new Error(`[worklets] Exceeded maximum pass budget while transforming worklets in ${cleanId}. ${remaining.length} worklet(s) remained untransformed.`);
230
+ }
231
+ if (initDataDefs.size > 0) {
232
+ const initDataCode = Array.from(initDataDefs.values()).join("\n") + "\n";
233
+ const msPrepend = new import_magic_string.default(currentCode);
234
+ msPrepend.prepend(initDataCode);
235
+ if (sourceMaps) {
236
+ passMaps.push(msPrepend.generateMap({
237
+ source: cleanId,
238
+ file: cleanId,
239
+ hires: true,
240
+ includeContent: true
241
+ }));
242
+ }
243
+ currentCode = msPrepend.toString();
244
+ }
245
+ let map = void 0;
246
+ if (sourceMaps && passMaps.length > 0) {
247
+ if (passMaps.length === 1) {
248
+ map = passMaps[0];
249
+ } else {
250
+ map = (0, import_remapping.default)(passMaps.slice().reverse(), () => null);
251
+ }
252
+ if (map) {
253
+ map.sources = [cleanId];
254
+ map.file = cleanId;
255
+ }
256
+ }
257
+ return {
258
+ code: currentCode,
259
+ map
260
+ };
261
+ }