@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.
Files changed (130) hide show
  1. package/dist/cjs/cache.cjs +4 -2
  2. package/dist/cjs/configure.cjs +9 -1
  3. package/dist/cjs/index.cjs +87 -5
  4. package/dist/cjs/reactNativeCodegen.cjs +140 -0
  5. package/dist/cjs/reactNativeViewConfig.cjs +489 -0
  6. package/dist/cjs/transformBabel.cjs +15 -20
  7. package/dist/cjs/transformBabel.test.cjs +260 -0
  8. package/dist/cjs/transformHermesAsync.cjs +61 -0
  9. package/dist/cjs/transformHermesLoops.cjs +319 -0
  10. package/dist/cjs/transformHermesLoops.test.cjs +257 -0
  11. package/dist/cjs/transformSWC.cjs +110 -138
  12. package/dist/cjs/transformSWC.test.cjs +117 -0
  13. package/dist/cjs/transformWorklets.cjs +123 -0
  14. package/dist/cjs/transformWorklets.test.cjs +604 -0
  15. package/dist/cjs/worklets/autoworklet.cjs +265 -0
  16. package/dist/cjs/worklets/globals.cjs +73 -0
  17. package/dist/cjs/worklets/hash.cjs +38 -0
  18. package/dist/cjs/worklets/scope.cjs +370 -0
  19. package/dist/cjs/worklets/serialize.cjs +101 -0
  20. package/dist/cjs/worklets/transform.cjs +266 -0
  21. package/dist/cjs/worklets/types.cjs +18 -0
  22. package/dist/esm/cache.mjs +5 -3
  23. package/dist/esm/cache.mjs.map +1 -1
  24. package/dist/esm/configure.mjs +8 -1
  25. package/dist/esm/configure.mjs.map +1 -1
  26. package/dist/esm/index.js +75 -6
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/index.mjs +75 -6
  29. package/dist/esm/index.mjs.map +1 -1
  30. package/dist/esm/reactNativeCodegen.mjs +104 -0
  31. package/dist/esm/reactNativeCodegen.mjs.map +1 -0
  32. package/dist/esm/reactNativeViewConfig.mjs +460 -0
  33. package/dist/esm/reactNativeViewConfig.mjs.map +1 -0
  34. package/dist/esm/transformBabel.mjs +14 -19
  35. package/dist/esm/transformBabel.mjs.map +1 -1
  36. package/dist/esm/transformBabel.test.mjs +261 -1
  37. package/dist/esm/transformBabel.test.mjs.map +1 -1
  38. package/dist/esm/transformHermesAsync.mjs +25 -0
  39. package/dist/esm/transformHermesAsync.mjs.map +1 -0
  40. package/dist/esm/transformHermesLoops.mjs +283 -0
  41. package/dist/esm/transformHermesLoops.mjs.map +1 -0
  42. package/dist/esm/transformHermesLoops.test.mjs +234 -0
  43. package/dist/esm/transformHermesLoops.test.mjs.map +1 -0
  44. package/dist/esm/transformSWC.mjs +96 -139
  45. package/dist/esm/transformSWC.mjs.map +1 -1
  46. package/dist/esm/transformSWC.test.mjs +118 -0
  47. package/dist/esm/transformSWC.test.mjs.map +1 -0
  48. package/dist/esm/transformWorklets.mjs +82 -0
  49. package/dist/esm/transformWorklets.mjs.map +1 -0
  50. package/dist/esm/transformWorklets.test.mjs +581 -0
  51. package/dist/esm/transformWorklets.test.mjs.map +1 -0
  52. package/dist/esm/worklets/autoworklet.mjs +234 -0
  53. package/dist/esm/worklets/autoworklet.mjs.map +1 -0
  54. package/dist/esm/worklets/globals.mjs +46 -0
  55. package/dist/esm/worklets/globals.mjs.map +1 -0
  56. package/dist/esm/worklets/hash.mjs +13 -0
  57. package/dist/esm/worklets/hash.mjs.map +1 -0
  58. package/dist/esm/worklets/scope.mjs +345 -0
  59. package/dist/esm/worklets/scope.mjs.map +1 -0
  60. package/dist/esm/worklets/serialize.mjs +75 -0
  61. package/dist/esm/worklets/serialize.mjs.map +1 -0
  62. package/dist/esm/worklets/transform.mjs +229 -0
  63. package/dist/esm/worklets/transform.mjs.map +1 -0
  64. package/dist/esm/worklets/types.mjs +2 -0
  65. package/dist/esm/worklets/types.mjs.map +1 -0
  66. package/package.json +11 -6
  67. package/src/cache.ts +10 -3
  68. package/src/configure.ts +12 -0
  69. package/src/index.ts +96 -13
  70. package/src/reactNativeCodegen.ts +181 -0
  71. package/src/reactNativeViewConfig.ts +593 -0
  72. package/src/transformBabel.test.ts +268 -1
  73. package/src/transformBabel.ts +21 -31
  74. package/src/transformHermesAsync.ts +30 -0
  75. package/src/transformHermesLoops.test.ts +341 -0
  76. package/src/transformHermesLoops.ts +435 -0
  77. package/src/transformSWC.test.ts +132 -0
  78. package/src/transformSWC.ts +121 -161
  79. package/src/transformWorklets.test.ts +708 -0
  80. package/src/transformWorklets.ts +160 -0
  81. package/src/types.ts +4 -4
  82. package/src/worklets/autoworklet.ts +391 -0
  83. package/src/worklets/globals.ts +129 -0
  84. package/src/worklets/hash.ts +14 -0
  85. package/src/worklets/scope.ts +401 -0
  86. package/src/worklets/serialize.ts +114 -0
  87. package/src/worklets/transform.ts +319 -0
  88. package/src/worklets/types.ts +26 -0
  89. package/types/cache.d.ts +1 -0
  90. package/types/cache.d.ts.map +1 -1
  91. package/types/configure.d.ts +2 -0
  92. package/types/configure.d.ts.map +1 -1
  93. package/types/index.d.ts +6 -0
  94. package/types/index.d.ts.map +1 -1
  95. package/types/reactNativeCodegen.d.ts +5 -0
  96. package/types/reactNativeCodegen.d.ts.map +1 -0
  97. package/types/reactNativeViewConfig.d.ts +35 -0
  98. package/types/reactNativeViewConfig.d.ts.map +1 -0
  99. package/types/transformBabel.d.ts +3 -3
  100. package/types/transformBabel.d.ts.map +1 -1
  101. package/types/transformHermesAsync.d.ts +5 -0
  102. package/types/transformHermesAsync.d.ts.map +1 -0
  103. package/types/transformHermesLoops.d.ts +5 -0
  104. package/types/transformHermesLoops.d.ts.map +1 -0
  105. package/types/transformHermesLoops.test.d.ts +2 -0
  106. package/types/transformHermesLoops.test.d.ts.map +1 -0
  107. package/types/transformSWC.d.ts +13 -3
  108. package/types/transformSWC.d.ts.map +1 -1
  109. package/types/transformSWC.test.d.ts +2 -0
  110. package/types/transformSWC.test.d.ts.map +1 -0
  111. package/types/transformWorklets.d.ts +23 -0
  112. package/types/transformWorklets.d.ts.map +1 -0
  113. package/types/transformWorklets.test.d.ts +2 -0
  114. package/types/transformWorklets.test.d.ts.map +1 -0
  115. package/types/types.d.ts +4 -4
  116. package/types/types.d.ts.map +1 -1
  117. package/types/worklets/autoworklet.d.ts +14 -0
  118. package/types/worklets/autoworklet.d.ts.map +1 -0
  119. package/types/worklets/globals.d.ts +4 -0
  120. package/types/worklets/globals.d.ts.map +1 -0
  121. package/types/worklets/hash.d.ts +5 -0
  122. package/types/worklets/hash.d.ts.map +1 -0
  123. package/types/worklets/scope.d.ts +7 -0
  124. package/types/worklets/scope.d.ts.map +1 -0
  125. package/types/worklets/serialize.d.ts +12 -0
  126. package/types/worklets/serialize.d.ts.map +1 -0
  127. package/types/worklets/transform.d.ts +10 -0
  128. package/types/worklets/transform.d.ts.map +1 -0
  129. package/types/worklets/types.d.ts +21 -0
  130. package/types/worklets/types.d.ts.map +1 -0
@@ -0,0 +1,234 @@
1
+ const AUTOWORKLET_FUNCTION_ARGS = Object.assign(/* @__PURE__ */Object.create(null), {
2
+ useFrameCallback: [0],
3
+ useAnimatedStyle: [0],
4
+ useAnimatedProps: [0],
5
+ createAnimatedPropAdapter: [0],
6
+ useDerivedValue: [0],
7
+ useAnimatedScrollHandler: [0],
8
+ useAnimatedGestureHandler: [0],
9
+ useAnimatedReaction: [0, 1],
10
+ withTiming: [2],
11
+ withSpring: [2],
12
+ withDecay: [1],
13
+ withRepeat: [3],
14
+ runOnUI: [0],
15
+ executeOnUIRuntimeSync: [0],
16
+ scheduleOnUI: [0],
17
+ runOnUISync: [0],
18
+ runOnUIAsync: [0],
19
+ runOnRuntime: [1],
20
+ runOnRuntimeSync: [1],
21
+ runOnRuntimeAsync: [1],
22
+ scheduleOnRuntime: [1],
23
+ runOnRuntimeSyncWithId: [1],
24
+ scheduleOnRuntimeWithId: [1],
25
+ useTapGesture: [0],
26
+ usePanGesture: [0],
27
+ usePinchGesture: [0],
28
+ useRotationGesture: [0],
29
+ useFlingGesture: [0],
30
+ useLongPressGesture: [0],
31
+ useNativeGesture: [0],
32
+ useManualGesture: [0],
33
+ useHoverGesture: [0]
34
+ });
35
+ const GESTURE_BUILDER_METHODS = /* @__PURE__ */new Set(["onBegin", "onStart", "onEnd", "onFinalize", "onUpdate", "onChange", "onTouchesDown", "onTouchesMove", "onTouchesUp", "onTouchesCancelled"]);
36
+ const GESTURE_KINDS = /* @__PURE__ */new Set(["Tap", "Pan", "Pinch", "Rotation", "Fling", "LongPress", "ForceTouch", "Native", "Manual", "Race", "Simultaneous", "Exclusive", "Hover"]);
37
+ const LAYOUT_ANIMATIONS = new Set(`BounceIn BounceInDown BounceInLeft BounceInRight BounceInUp BounceOut BounceOutDown
38
+ BounceOutLeft BounceOutRight BounceOutUp FadeIn FadeInDown FadeInLeft FadeInRight FadeInUp
39
+ FadeOut FadeOutDown FadeOutLeft FadeOutRight FadeOutUp FlipInEasyX FlipInEasyY FlipInXDown
40
+ FlipInXUp FlipInYLeft FlipInYRight FlipOutEasyX FlipOutEasyY FlipOutXDown FlipOutXUp
41
+ FlipOutYLeft FlipOutYRight LightSpeedInLeft LightSpeedInRight LightSpeedOutLeft
42
+ LightSpeedOutRight PinwheelIn PinwheelOut RollInLeft RollInRight RollOutLeft RollOutRight
43
+ RotateInDownLeft RotateInDownRight RotateInUpLeft RotateInUpRight RotateOutDownLeft
44
+ RotateOutDownRight RotateOutUpLeft RotateOutUpRight SlideInDown SlideInLeft SlideInRight
45
+ SlideInUp SlideOutDown SlideOutLeft SlideOutRight SlideOutUp StretchInX StretchInY
46
+ StretchOutX StretchOutY ZoomIn ZoomInDown ZoomInEasyDown ZoomInEasyUp ZoomInLeft ZoomInRight
47
+ ZoomInRotate ZoomInUp ZoomOut ZoomOutDown ZoomOutEasyDown ZoomOutEasyUp ZoomOutLeft
48
+ ZoomOutRight ZoomOutRotate ZoomOutUp Layout LinearTransition SequencedTransition
49
+ FadingTransition JumpingTransition CurvedTransition EntryExitTransition`.split(/\s+/));
50
+ const LAYOUT_ANIMATION_CHAIN_METHODS = /* @__PURE__ */new Set(["build", "duration", "delay", "getDuration", "randomDelay", "getDelay", "getDelayFunction", "easing", "rotate", "springify", "damping", "mass", "stiffness", "overshootClamping", "energyThreshold", "restDisplacementThreshold", "restSpeedThreshold", "withInitialValues", "getAnimationAndConfig", "easingX", "easingY", "easingWidth", "easingHeight", "entering", "exiting", "reverse"]);
51
+ function isGestureObject(exp) {
52
+ return exp?.type === "CallExpression" && exp.callee?.type === "MemberExpression" && exp.callee.object?.type === "Identifier" && exp.callee.object.name === "Gesture" && exp.callee.property?.type === "Identifier" && GESTURE_KINDS.has(exp.callee.property.name);
53
+ }
54
+ function containsGestureObject(exp) {
55
+ if (isGestureObject(exp)) return true;
56
+ return exp?.type === "CallExpression" && exp.callee?.type === "MemberExpression" && containsGestureObject(exp.callee.object);
57
+ }
58
+ function isLayoutAnimationChain(exp) {
59
+ if (exp?.type === "Identifier" && LAYOUT_ANIMATIONS.has(exp.name)) return true;
60
+ if (exp?.type === "NewExpression" && exp.callee?.type === "Identifier" && LAYOUT_ANIMATIONS.has(exp.callee.name)) {
61
+ return true;
62
+ }
63
+ return exp?.type === "CallExpression" && exp.callee?.type === "MemberExpression" && exp.callee.property?.type === "Identifier" && LAYOUT_ANIMATION_CHAIN_METHODS.has(exp.callee.property.name) && isLayoutAnimationChain(exp.callee.object);
64
+ }
65
+ function isChainedCallback(callee) {
66
+ if (callee?.type !== "MemberExpression" || callee.property?.type !== "Identifier") {
67
+ return false;
68
+ }
69
+ const name = callee.property.name;
70
+ if (GESTURE_BUILDER_METHODS.has(name)) return containsGestureObject(callee.object);
71
+ if (name === "withCallback") return isLayoutAnimationChain(callee.object);
72
+ return false;
73
+ }
74
+ const WORKLET_DIRECTIVES = ["worklet", "no-worklet-closure", "limit-init-data-hoisting"];
75
+ function statementDirective(stmt) {
76
+ if (!stmt || stmt.type !== "ExpressionStatement") return void 0;
77
+ if (typeof stmt.directive === "string") return stmt.directive;
78
+ if (stmt.expression?.type === "Literal" && typeof stmt.expression.value === "string") {
79
+ return stmt.expression.value;
80
+ }
81
+ return void 0;
82
+ }
83
+ function hasDirective(fnNode, directive) {
84
+ if (!fnNode || !fnNode.body) return false;
85
+ if (Array.isArray(fnNode.body.directives)) {
86
+ for (const d of fnNode.body.directives) {
87
+ if (d.directive === directive || d.value === directive) {
88
+ return true;
89
+ }
90
+ }
91
+ }
92
+ if (fnNode.body.type === "BlockStatement" && Array.isArray(fnNode.body.body)) {
93
+ for (const stmt of fnNode.body.body) {
94
+ const found = statementDirective(stmt);
95
+ if (found === void 0) break;
96
+ if (found === directive) return true;
97
+ }
98
+ }
99
+ return false;
100
+ }
101
+ function hasWorkletDirective(fnNode) {
102
+ return hasDirective(fnNode, "worklet");
103
+ }
104
+ function bodyStartAfterDirectives(fnNode, code) {
105
+ let start = fnNode.body.start + 1;
106
+ if (fnNode.body.type !== "BlockStatement" || !Array.isArray(fnNode.body.body)) return start;
107
+ for (const stmt of fnNode.body.body) {
108
+ const found = statementDirective(stmt);
109
+ if (found === void 0 || !WORKLET_DIRECTIVES.includes(found)) break;
110
+ start = stmt.end;
111
+ while (start < fnNode.body.end && (code[start] === ";" || /\s/.test(code[start]))) {
112
+ start++;
113
+ }
114
+ }
115
+ return start;
116
+ }
117
+ function findWorkletCandidates(program) {
118
+ const candidates = [];
119
+ const seenStarts = /* @__PURE__ */new Set();
120
+ function addCandidate(candidate) {
121
+ const fnStart = candidate.fnNode.start;
122
+ if (seenStarts.has(fnStart)) return;
123
+ seenStarts.add(fnStart);
124
+ candidates.push(candidate);
125
+ }
126
+ function getCalleeName(callee) {
127
+ if (!callee) return null;
128
+ if (callee.type === "Identifier") {
129
+ return callee.name;
130
+ }
131
+ if (callee.type === "MemberExpression" && !callee.computed && callee.property?.type === "Identifier") {
132
+ return callee.property.name;
133
+ }
134
+ return null;
135
+ }
136
+ function walk(node, parent) {
137
+ if (!node || typeof node !== "object") return;
138
+ if (node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression") {
139
+ if (hasWorkletDirective(node)) {
140
+ let kind = "function_expression";
141
+ if (node.type === "FunctionDeclaration") kind = "function_declaration";else if (node.type === "ArrowFunctionExpression") kind = "arrow_function";
142
+ let name = node.id?.name;
143
+ if (!name && parent?.type === "VariableDeclarator" && parent.id?.name) {
144
+ name = parent.id.name;
145
+ }
146
+ addCandidate({
147
+ node,
148
+ fnNode: node,
149
+ kind,
150
+ name,
151
+ parent,
152
+ isAutoWorklet: false
153
+ });
154
+ }
155
+ } else if (node.type === "Property" && (node.method || node.value?.type === "FunctionExpression" || node.value?.type === "ArrowFunctionExpression")) {
156
+ const fn = node.value;
157
+ if (hasWorkletDirective(fn)) {
158
+ addCandidate({
159
+ node: node.method ? node : fn,
160
+ fnNode: fn,
161
+ kind: node.method ? "object_method" : fn.type === "ArrowFunctionExpression" ? "arrow_function" : "function_expression",
162
+ name: node.key?.name,
163
+ parent,
164
+ isAutoWorklet: false
165
+ });
166
+ }
167
+ }
168
+ if (node.type === "CallExpression") {
169
+ const calleeName = getCalleeName(node.callee);
170
+ const argIndices = calleeName ? AUTOWORKLET_FUNCTION_ARGS[calleeName] : void 0;
171
+ const chained = !argIndices && isChainedCallback(node.callee);
172
+ const indices = argIndices ?? (chained ? node.arguments.map((_, i) => i) : void 0);
173
+ if (indices) {
174
+ for (const idx of indices) {
175
+ const arg = node.arguments[idx];
176
+ if (!arg) continue;
177
+ if (arg.type === "ArrowFunctionExpression" || arg.type === "FunctionExpression") {
178
+ let name = arg.id?.name;
179
+ if (!name && parent?.type === "VariableDeclarator" && parent.id?.name) {
180
+ name = parent.id.name;
181
+ }
182
+ addCandidate({
183
+ node: arg,
184
+ fnNode: arg,
185
+ kind: arg.type === "ArrowFunctionExpression" ? "arrow_function" : "function_expression",
186
+ name,
187
+ parent: node,
188
+ isAutoWorklet: true
189
+ });
190
+ } else if (arg.type === "ObjectExpression" && Array.isArray(arg.properties)) {
191
+ for (const prop of arg.properties) {
192
+ if (prop.type === "Property") {
193
+ if (prop.method) {
194
+ addCandidate({
195
+ node: prop,
196
+ fnNode: prop.value,
197
+ kind: "object_method",
198
+ name: prop.key?.name,
199
+ parent: arg,
200
+ isAutoWorklet: true
201
+ });
202
+ } else if (prop.value?.type === "ArrowFunctionExpression" || prop.value?.type === "FunctionExpression") {
203
+ addCandidate({
204
+ node: prop.value,
205
+ fnNode: prop.value,
206
+ kind: prop.value.type === "ArrowFunctionExpression" ? "arrow_function" : "function_expression",
207
+ name: prop.key?.name,
208
+ parent: prop,
209
+ isAutoWorklet: true
210
+ });
211
+ }
212
+ }
213
+ }
214
+ }
215
+ }
216
+ }
217
+ }
218
+ for (const key of Object.keys(node)) {
219
+ if (key === "start" || key === "end" || key === "loc" || key === "range") continue;
220
+ const child = node[key];
221
+ if (Array.isArray(child)) {
222
+ for (const item of child) {
223
+ walk(item, node);
224
+ }
225
+ } else if (child && typeof child === "object") {
226
+ walk(child, node);
227
+ }
228
+ }
229
+ }
230
+ walk(program, null);
231
+ return candidates;
232
+ }
233
+ export { AUTOWORKLET_FUNCTION_ARGS, GESTURE_BUILDER_METHODS, WORKLET_DIRECTIVES, bodyStartAfterDirectives, findWorkletCandidates, hasDirective, hasWorkletDirective };
234
+ //# sourceMappingURL=autoworklet.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AUTOWORKLET_FUNCTION_ARGS","Object","assign","create","useFrameCallback","useAnimatedStyle","useAnimatedProps","createAnimatedPropAdapter","useDerivedValue","useAnimatedScrollHandler","useAnimatedGestureHandler","useAnimatedReaction","withTiming","withSpring","withDecay","withRepeat","runOnUI","executeOnUIRuntimeSync","scheduleOnUI","runOnUISync","runOnUIAsync","runOnRuntime","runOnRuntimeSync","runOnRuntimeAsync","scheduleOnRuntime","runOnRuntimeSyncWithId","scheduleOnRuntimeWithId","useTapGesture","usePanGesture","usePinchGesture","useRotationGesture","useFlingGesture","useLongPressGesture","useNativeGesture","useManualGesture","useHoverGesture","GESTURE_BUILDER_METHODS","Set","GESTURE_KINDS","LAYOUT_ANIMATIONS","split","LAYOUT_ANIMATION_CHAIN_METHODS","isGestureObject","exp","type","callee","object","name","property","has","containsGestureObject","isLayoutAnimationChain","isChainedCallback","WORKLET_DIRECTIVES","statementDirective","stmt","directive","expression","value","hasDirective","fnNode","body","Array","isArray","directives","d","found","hasWorkletDirective","bodyStartAfterDirectives","code","start","includes","end","test","findWorkletCandidates","program","candidates","seenStarts","addCandidate","candidate","fnStart","add","push","getCalleeName","computed","walk","node","parent","kind","id","isAutoWorklet","method","fn","key","calleeName","argIndices","chained","indices","arguments","map","_","i","idx","arg","properties","prop","keys","child","item"],"sources":["../../../src/worklets/autoworklet.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ const JS_GLOBALS = /* @__PURE__ */new Set([
2
+ // Value properties
3
+ "globalThis", "Infinity", "NaN", "undefined",
4
+ // Function properties
5
+ "eval", "isFinite", "isNaN", "parseFloat", "parseInt", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "unescape",
6
+ // Fundamental objects
7
+ "Object", "Function", "Boolean", "Symbol",
8
+ // Error objects
9
+ "Error", "AggregateError", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError", "InternalError",
10
+ // Numbers and dates
11
+ "Number", "BigInt", "Math", "Date",
12
+ // Text processing
13
+ "String", "RegExp",
14
+ // Indexed collections
15
+ "Array", "Int8Array", "Uint8Array", "Uint8ClampedArray", "Int16Array", "Uint16Array", "Int32Array", "Uint32Array", "BigInt64Array", "BigUint64Array", "Float32Array", "Float64Array",
16
+ // Keyed collections
17
+ "Map", "Set", "WeakMap", "WeakSet",
18
+ // Structured data
19
+ "ArrayBuffer", "SharedArrayBuffer", "DataView", "Atomics", "JSON",
20
+ // Managing memory
21
+ "WeakRef", "FinalizationRegistry",
22
+ // Control abstraction objects
23
+ "Iterator", "AsyncIterator", "Promise", "GeneratorFunction", "AsyncGeneratorFunction", "Generator", "AsyncGenerator", "AsyncFunction",
24
+ // Reflection
25
+ "Reflect", "Proxy",
26
+ // Internationalization
27
+ "Intl"]);
28
+ const DEFAULT_GLOBALS = /* @__PURE__ */new Set([...JS_GLOBALS,
29
+ // Environment / Runtime
30
+ "null", "this", "global", "window", "self", "console", "performance", "arguments", "require", "fetch", "XMLHttpRequest", "WebSocket", "queueMicrotask", "requestAnimationFrame", "cancelAnimationFrame", "setTimeout", "clearTimeout", "setImmediate", "clearImmediate", "setInterval", "clearInterval", "HermesInternal", "_WORKLET"]);
31
+ function createGlobalsSet(customGlobals, strictGlobal) {
32
+ const set = /* @__PURE__ */new Set();
33
+ if (!strictGlobal) {
34
+ for (const g of DEFAULT_GLOBALS) {
35
+ set.add(g);
36
+ }
37
+ }
38
+ if (customGlobals) {
39
+ for (const g of customGlobals) {
40
+ set.add(g);
41
+ }
42
+ }
43
+ return set;
44
+ }
45
+ export { DEFAULT_GLOBALS, JS_GLOBALS, createGlobalsSet };
46
+ //# sourceMappingURL=globals.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["JS_GLOBALS","Set","DEFAULT_GLOBALS","createGlobalsSet","customGlobals","strictGlobal","set","g","add"],"sources":["../../../src/worklets/globals.ts"],"sourcesContent":[null],"mappings":"AAAO,MAAMA,UAAA,GAAa,mBAAIC,GAAA,CAAI;AAAA;AAEhC,cACA,YACA,OACA;AAAA;AAEA,QACA,YACA,SACA,cACA,YACA,aACA,sBACA,aACA,sBACA,UACA;AAAA;AAEA,UACA,YACA,WACA;AAAA;AAEA,SACA,kBACA,aACA,cACA,kBACA,eACA,aACA,YACA;AAAA;AAEA,UACA,UACA,QACA;AAAA;AAEA,UACA;AAAA;AAEA,SACA,aACA,cACA,qBACA,cACA,eACA,cACA,eACA,iBACA,kBACA,gBACA;AAAA;AAEA,OACA,OACA,WACA;AAAA;AAEA,eACA,qBACA,YACA,WACA;AAAA;AAEA,WACA;AAAA;AAEA,YACA,iBACA,WACA,qBACA,0BACA,aACA,kBACA;AAAA;AAEA,WACA;AAAA;AAEA,OACD;AAEM,MAAMC,eAAA,GAAkB,mBAAID,GAAA,CAAI,CACrC,GAAGD,UAAA;AAAA;AAEH,QACA,QACA,UACA,UACA,QACA,WACA,eACA,aACA,WACA,SACA,kBACA,aACA,kBACA,yBACA,wBACA,cACA,gBACA,gBACA,kBACA,eACA,iBACA,kBACA,WACD;AAEM,SAASG,iBACdC,aAAA,EACAC,YAAA,EACa;EACb,MAAMC,GAAA,GAAM,mBAAIL,GAAA,CAAY;EAC5B,IAAI,CAACI,YAAA,EAAc;IACjB,WAAWE,CAAA,IAAKL,eAAA,EAAiB;MAC/BI,GAAA,CAAIE,GAAA,CAAID,CAAC;IACX;EACF;EACA,IAAIH,aAAA,EAAe;IACjB,WAAWG,CAAA,IAAKH,aAAA,EAAe;MAC7BE,GAAA,CAAIE,GAAA,CAAID,CAAC;IACX;EACF;EACA,OAAOD,GAAA;AACT","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ function calculateWorkletHash(str) {
2
+ let i = str.length;
3
+ let hash1 = 5381;
4
+ let hash2 = 52711;
5
+ while (i--) {
6
+ const char = str.charCodeAt(i);
7
+ hash1 = hash1 * 33 ^ char;
8
+ hash2 = hash2 * 33 ^ char;
9
+ }
10
+ return (hash1 >>> 0) * 4096 + (hash2 >>> 0);
11
+ }
12
+ export { calculateWorkletHash };
13
+ //# sourceMappingURL=hash.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["calculateWorkletHash","str","i","length","hash1","hash2","char","charCodeAt"],"sources":["../../../src/worklets/hash.ts"],"sourcesContent":[null],"mappings":"AAGO,SAASA,qBAAqBC,GAAA,EAAqB;EACxD,IAAIC,CAAA,GAAID,GAAA,CAAIE,MAAA;EACZ,IAAIC,KAAA,GAAQ;EACZ,IAAIC,KAAA,GAAQ;EACZ,OAAOH,CAAA,IAAK;IACV,MAAMI,IAAA,GAAOL,GAAA,CAAIM,UAAA,CAAWL,CAAC;IAC7BE,KAAA,GAASA,KAAA,GAAQ,KAAME,IAAA;IACvBD,KAAA,GAASA,KAAA,GAAQ,KAAMC,IAAA;EACzB;EACA,QAAQF,KAAA,KAAU,KAAK,QAAQC,KAAA,KAAU;AAC3C","ignoreList":[]}
@@ -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