@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,319 @@
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'
6
+ import { createGlobalsSet } from './globals'
7
+ import { calculateWorkletHash } from './hash'
8
+ import { getClosureVariables } from './scope'
9
+ import { buildLocalFunction, serializeWorkletForUI } from './serialize'
10
+ import type { TransformWorkletsOptions } from './types'
11
+
12
+ const FUNCTION_TYPES = new Set([
13
+ 'FunctionDeclaration',
14
+ 'FunctionExpression',
15
+ 'ArrowFunctionExpression',
16
+ ])
17
+
18
+ export function prepareWorkletsForReactCompiler(
19
+ id: string,
20
+ code: string,
21
+ sourceMaps = false
22
+ ): { code: string; map?: any } | null {
23
+ const cleanId = id.split('?')[0]
24
+ const parsed = parseSync(cleanId, code, {
25
+ sourceType: 'module',
26
+ lang: /\.[cm]?ts$/.test(cleanId) ? 'ts' : cleanId.endsWith('.tsx') ? 'tsx' : 'jsx',
27
+ })
28
+ if (parsed.errors.length) {
29
+ const error = parsed.errors[0]
30
+ throw new Error(error.codeframe || error.message || 'Syntax Error while parsing worklet')
31
+ }
32
+ const candidates = findWorkletCandidates(parsed.program).filter(
33
+ (candidate) => candidate.isAutoWorklet && !hasDirective(candidate.fnNode, 'worklet')
34
+ )
35
+ if (!candidates.length) return null
36
+
37
+ const output = new MagicString(code)
38
+ for (const { fnNode } of candidates) {
39
+ const body = fnNode.body
40
+ if (body.type === 'BlockStatement') {
41
+ output.appendLeft(body.start + 1, "'worklet';")
42
+ } else {
43
+ output.appendLeft(body.start, "{ 'worklet'; return (")
44
+ output.appendLeft(body.end, '); }')
45
+ }
46
+ }
47
+ return {
48
+ code: output.toString(),
49
+ map: sourceMaps
50
+ ? output.generateMap({ source: cleanId, hires: true, includeContent: true })
51
+ : undefined,
52
+ }
53
+ }
54
+
55
+ /**
56
+ * Innermost function whose body strictly contains `node`. A worklet marked
57
+ * `limit-init-data-hoisting` puts its init data at the top of that body instead
58
+ * of at module scope, so a `no-worklet-closure` parent can still reach it after
59
+ * being serialized to a string and evaluated on a worklet runtime.
60
+ */
61
+ function findEnclosingFunction(program: any, node: any): any {
62
+ let best: any = undefined
63
+ const walk = (n: any) => {
64
+ if (!n || typeof n !== 'object') return
65
+ if (Array.isArray(n)) {
66
+ for (const c of n) walk(c)
67
+ return
68
+ }
69
+ if (typeof n.type !== 'string') return
70
+ // a node that does not span the target cannot contain it, so skip its subtree
71
+ if (typeof n.start === 'number' && (n.start > node.start || n.end < node.end)) return
72
+ if (
73
+ FUNCTION_TYPES.has(n.type) &&
74
+ n !== node &&
75
+ n.body?.type === 'BlockStatement' &&
76
+ n.body.start < node.start &&
77
+ n.body.end > node.end &&
78
+ (!best || n.body.start > best.body.start)
79
+ ) {
80
+ best = n
81
+ }
82
+ for (const key in n) {
83
+ if (key === 'parent') continue
84
+ walk(n[key])
85
+ }
86
+ }
87
+ walk(program)
88
+ return best
89
+ }
90
+
91
+ export function executeWorkletTransform(
92
+ id: string,
93
+ code: string,
94
+ sourceMaps = false,
95
+ options?: TransformWorkletsOptions,
96
+ resolveVersionFn?: (projectRoot?: string, filename?: string) => string
97
+ ): { code: string; map?: any } {
98
+ const cleanId = id.split('?')[0]
99
+
100
+ // react-native ships jsx inside plain .js files, and oxc disables jsx for .js
101
+ // unless told otherwise, so those files fail to parse on their first element.
102
+ // a .ts file is not tsx: `<T>(x: T) => x` is a generic arrow, not an element.
103
+ const lang = /\.[cm]?ts$/.test(cleanId)
104
+ ? ('ts' as const)
105
+ : cleanId.endsWith('.tsx')
106
+ ? ('tsx' as const)
107
+ : ('jsx' as const)
108
+
109
+ // 1. Initial quick parse to check if any worklet candidates exist
110
+ const initialParse = parseSync(cleanId, code, {
111
+ sourceType: 'module',
112
+ lang,
113
+ })
114
+
115
+ if (initialParse.errors && initialParse.errors.length > 0) {
116
+ const err = initialParse.errors[0]
117
+ throw new Error(err.codeframe || err.message || 'Syntax Error while parsing worklet')
118
+ }
119
+
120
+ const initialCandidates = findWorkletCandidates(initialParse.program)
121
+ if (initialCandidates.length === 0) {
122
+ let map: any = undefined
123
+ if (sourceMaps) {
124
+ const ms = new MagicString(code)
125
+ map = ms.generateMap({
126
+ source: cleanId,
127
+ file: cleanId,
128
+ hires: true,
129
+ includeContent: true,
130
+ })
131
+ }
132
+ return { code, map }
133
+ }
134
+
135
+ // 2. Resolve plugin version and location
136
+ const pluginVersion =
137
+ options?.pluginVersion ||
138
+ (resolveVersionFn ? resolveVersionFn(options?.projectRoot, cleanId) : '0.0.0')
139
+
140
+ const globals = createGlobalsSet(options?.globals, options?.strictGlobal)
141
+
142
+ let location = cleanId
143
+ if (options?.relativeSourceLocation && options?.projectRoot) {
144
+ location = path.relative(options.projectRoot, cleanId).replace(/\\/g, '/')
145
+ }
146
+
147
+ let currentCode = code
148
+ const initDataDefs = new Map<string, string>()
149
+ const passMaps: any[] = []
150
+
151
+ // 3. Iterative bottom-up transformation
152
+ // In each pass, we transform all innermost candidates (candidates that contain NO other candidates in their body).
153
+ // All innermost candidates are disjoint, so they can be rewritten simultaneously in a single MagicString.
154
+ let remainingPassBudget = 100
155
+ while (remainingPassBudget-- > 0) {
156
+ const parseResult = parseSync(cleanId, currentCode, {
157
+ sourceType: 'module',
158
+ lang,
159
+ })
160
+
161
+ if (parseResult.errors && parseResult.errors.length > 0) {
162
+ const err = parseResult.errors[0]
163
+ throw new Error(err.codeframe || err.message || 'Syntax Error while parsing worklet')
164
+ }
165
+
166
+ const candidates = findWorkletCandidates(parseResult.program)
167
+ if (candidates.length === 0) {
168
+ break
169
+ }
170
+
171
+ // Find ALL innermost candidates in this pass
172
+ const innermostCandidates = candidates.filter((c) => {
173
+ return !candidates.some(
174
+ (other) =>
175
+ other !== c &&
176
+ other.fnNode.start >= c.fnNode.start &&
177
+ other.fnNode.end <= c.fnNode.end
178
+ )
179
+ })
180
+
181
+ if (innermostCandidates.length === 0) {
182
+ throw new Error(`[worklets] Cyclic or unresolvable worklet nesting detected in ${cleanId}`)
183
+ }
184
+
185
+ const ms = new MagicString(currentCode)
186
+
187
+ // init data declared inside an enclosing function body, keyed by that body's
188
+ // start offset, so the same hash is not declared twice in one function.
189
+ const inlinedInitData = new Map<number, Set<string>>()
190
+
191
+ for (const candidate of innermostCandidates) {
192
+ // `no-worklet-closure` says the worklet captures nothing, so it gets no
193
+ // unpacker line and an empty `__closure`. it is what lets the worklets
194
+ // runtime evaluate the serialized code with no closure to bind.
195
+ const closureVars = hasDirective(candidate.fnNode, 'no-worklet-closure')
196
+ ? []
197
+ : getClosureVariables(candidate.fnNode, globals)
198
+ const fnName = candidate.name
199
+
200
+ const serializedCode = serializeWorkletForUI(candidate.fnNode, currentCode, fnName, closureVars)
201
+ const workletHash = calculateWorkletHash(serializedCode)
202
+ const initDataVar = `_worklet_${workletHash}_init_data`
203
+
204
+ const initDataDecl = `var ${initDataVar} = {\n code: ${JSON.stringify(serializedCode)},\n location: ${JSON.stringify(location)}\n};`
205
+
206
+ const enclosingFn = hasDirective(candidate.fnNode, 'limit-init-data-hoisting')
207
+ ? findEnclosingFunction(parseResult.program, candidate.fnNode)
208
+ : undefined
209
+
210
+ if (enclosingFn) {
211
+ // past the parent's own directive prologue, or inserting here would stop
212
+ // its `'worklet'` from being a directive at all.
213
+ const insertAt = bodyStartAfterDirectives(enclosingFn, currentCode)
214
+ let declared = inlinedInitData.get(insertAt)
215
+ if (!declared) {
216
+ declared = new Set()
217
+ inlinedInitData.set(insertAt, declared)
218
+ }
219
+ if (!declared.has(initDataVar)) {
220
+ declared.add(initDataVar)
221
+ ms.appendLeft(insertAt, `\n${initDataDecl}\n`)
222
+ }
223
+ } else if (!initDataDefs.has(initDataVar)) {
224
+ initDataDefs.set(initDataVar, initDataDecl)
225
+ }
226
+
227
+ const localFnCode = buildLocalFunction(candidate.fnNode, currentCode, fnName)
228
+ const localName = fnName || '_worklet'
229
+ const closureProps = closureVars.map((v) => `${v}: ${v}`).join(', ')
230
+
231
+ const iife = `(function () {
232
+ var _e = [new (typeof global !== 'undefined' ? global : globalThis).Error(), 1, -27];
233
+ var ${localName} = ${localFnCode};
234
+ ${localName}.__closure = { ${closureProps} };
235
+ ${localName}.__workletHash = ${workletHash};
236
+ ${localName}.__pluginVersion = ${JSON.stringify(pluginVersion)};
237
+ ${localName}.__initData = ${initDataVar};
238
+ ${localName}.__stackDetails = _e;
239
+ return ${localName};
240
+ })()`
241
+
242
+ if (candidate.kind === 'function_declaration') {
243
+ if (candidate.parent?.type === 'ExportNamedDeclaration') {
244
+ ms.overwrite(candidate.parent.start, candidate.parent.end, `export var ${candidate.name} = ${iife};`)
245
+ } else if (candidate.parent?.type === 'ExportDefaultDeclaration') {
246
+ ms.overwrite(
247
+ candidate.parent.start,
248
+ candidate.parent.end,
249
+ `var ${candidate.name || '_defaultWorklet'} = ${iife};\nexport default ${candidate.name || '_defaultWorklet'};`
250
+ )
251
+ } else {
252
+ ms.overwrite(candidate.node.start, candidate.node.end, `var ${candidate.name} = ${iife};`)
253
+ }
254
+ } else if (candidate.kind === 'object_method') {
255
+ ms.overwrite(candidate.node.start, candidate.node.end, `${candidate.name}: ${iife}`)
256
+ } else {
257
+ ms.overwrite(candidate.node.start, candidate.node.end, iife)
258
+ }
259
+ }
260
+
261
+ if (sourceMaps) {
262
+ passMaps.push(
263
+ ms.generateMap({
264
+ source: cleanId,
265
+ file: cleanId,
266
+ hires: true,
267
+ includeContent: true,
268
+ })
269
+ )
270
+ }
271
+
272
+ currentCode = ms.toString()
273
+ }
274
+
275
+ // Check if any candidates remain untransformed after budget
276
+ const finalCheck = parseSync(cleanId, currentCode, { sourceType: 'module', lang })
277
+ const remaining = findWorkletCandidates(finalCheck.program)
278
+ if (remaining.length > 0) {
279
+ throw new Error(
280
+ `[worklets] Exceeded maximum pass budget while transforming worklets in ${cleanId}. ${remaining.length} worklet(s) remained untransformed.`
281
+ )
282
+ }
283
+
284
+ // Prepend initData definitions
285
+ if (initDataDefs.size > 0) {
286
+ const initDataCode = Array.from(initDataDefs.values()).join('\n') + '\n'
287
+ const msPrepend = new MagicString(currentCode)
288
+ msPrepend.prepend(initDataCode)
289
+ if (sourceMaps) {
290
+ passMaps.push(
291
+ msPrepend.generateMap({
292
+ source: cleanId,
293
+ file: cleanId,
294
+ hires: true,
295
+ includeContent: true,
296
+ })
297
+ )
298
+ }
299
+ currentCode = msPrepend.toString()
300
+ }
301
+
302
+ let map: any = undefined
303
+ if (sourceMaps && passMaps.length > 0) {
304
+ if (passMaps.length === 1) {
305
+ map = passMaps[0]
306
+ } else {
307
+ map = remapping(passMaps.slice().reverse(), () => null)
308
+ }
309
+ if (map) {
310
+ map.sources = [cleanId]
311
+ map.file = cleanId
312
+ }
313
+ }
314
+
315
+ return {
316
+ code: currentCode,
317
+ map,
318
+ }
319
+ }
@@ -0,0 +1,26 @@
1
+ export type TransformWorkletsOptions = {
2
+ projectRoot?: string
3
+ bundleMode?: boolean
4
+ disableInlineStylesWarning?: boolean
5
+ disableSourceMaps?: boolean
6
+ disableWorkletClasses?: boolean
7
+ globals?: string[]
8
+ relativeSourceLocation?: boolean
9
+ strictGlobal?: boolean
10
+ pluginVersion?: string
11
+ }
12
+
13
+ export type WorkletCandidateKind =
14
+ | 'function_declaration'
15
+ | 'function_expression'
16
+ | 'arrow_function'
17
+ | 'object_method'
18
+
19
+ export interface WorkletCandidate {
20
+ node: any
21
+ fnNode: any
22
+ kind: WorkletCandidateKind
23
+ name?: string
24
+ parent?: any
25
+ isAutoWorklet: boolean
26
+ }
package/types/cache.d.ts CHANGED
@@ -2,6 +2,7 @@ interface CacheStats {
2
2
  hits: 0;
3
3
  misses: 0;
4
4
  writes: 0;
5
+ errors: 0;
5
6
  }
6
7
  export declare function getCachedTransform(filePath: string, code: string, environment: string): {
7
8
  code: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAqBA,UAAU,UAAU;IAClB,IAAI,EAAE,CAAC,CAAA;IACP,MAAM,EAAE,CAAC,CAAA;IACT,MAAM,EAAE,CAAC,CAAA;CACV;AA2CD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,CAoCpC;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,EACnC,WAAW,EAAE,MAAM,GAClB,IAAI,CAwBN;AAED,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAapC"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAqBA,UAAU,UAAU;IAClB,IAAI,EAAE,CAAC,CAAA;IACP,MAAM,EAAE,CAAC,CAAA;IACT,MAAM,EAAE,CAAC,CAAA;IACT,MAAM,EAAE,CAAC,CAAA;CACV;AAiDD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,CAoCpC;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,EACnC,WAAW,EAAE,MAAM,GAClB,IAAI,CAwBN;AAED,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAapC"}
@@ -7,10 +7,12 @@ type CompilerConfig = boolean | Environment[] | RegExp | ((id: string, environme
7
7
  type Conf = {
8
8
  enableNativewind?: boolean;
9
9
  enableReanimated?: boolean;
10
+ enableNativeWorklets?: boolean;
10
11
  enableCompiler?: CompilerConfig;
11
12
  enableNativeCSS?: boolean;
12
13
  };
13
14
  export declare const configuration: Conf;
15
+ export declare function isNativeWorkletsEnabled(): boolean;
14
16
  export declare function configureVXRNCompilerPlugin(_: Conf): void;
15
17
  export {};
16
18
  //# sourceMappingURL=configure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,KAAK,cAAc,GACf,OAAO,GACP,MAAM,GACN,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,CAAA;AAEvD,KAAK,cAAc,GACf,OAAO,GACP,WAAW,EAAE,GACb,MAAM,GACN,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,GACnD;IACE,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB,CAAA;AAEL,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,IAK3B,CAAA;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,IAAI,QAElD"}
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,KAAK,cAAc,GACf,OAAO,GACP,MAAM,GACN,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,CAAA;AAEvD,KAAK,cAAc,GACf,OAAO,GACP,WAAW,EAAE,GACb,MAAM,GACN,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,GACnD;IACE,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB,CAAA;AAEL,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,IAM3B,CAAA;AAED,wBAAgB,uBAAuB,YAQtC;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,IAAI,QAElD"}
package/types/index.d.ts CHANGED
@@ -8,6 +8,12 @@ import type { Options } from './types';
8
8
  export * from './configure';
9
9
  export * from './transformBabel';
10
10
  export * from './transformSWC';
11
+ export * from './transformWorklets';
12
+ export * from './reactNativeCodegen';
13
+ export * from './transformHermesLoops';
14
+ export * from './transformHermesAsync';
15
+ export { JS_GLOBALS } from './worklets/globals';
16
+ export { getClosureVariables } from './worklets/scope';
11
17
  export type { GetTransform } from './types';
12
18
  export declare function createVXRNCompilerPlugin(optionsIn?: Partial<Options>): Promise<PluginOption[]>;
13
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,MAAM,CAAA;AAQpE,OAAO,KAAK,EAAkC,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtE,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAoM3C,wBAAsB,wBAAwB,CAC5C,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,YAAY,EAAE,CAAC,CA6VzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,MAAM,CAAA;AAcpE,OAAO,KAAK,EAAkC,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtE,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AA2Q3C,wBAAsB,wBAAwB,CAC5C,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,YAAY,EAAE,CAAC,CA6VzB"}
@@ -0,0 +1,5 @@
1
+ export declare function transformReactNativeCodegen(code: string, id: string, projectRoot?: string): {
2
+ code: string;
3
+ map: any;
4
+ } | null | undefined;
5
+ //# sourceMappingURL=reactNativeCodegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactNativeCodegen.d.ts","sourceRoot":"","sources":["../src/reactNativeCodegen.ts"],"names":[],"mappings":"AAyEA,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,WAAW,CAAC,EAAE,MAAM,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAuG/C"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * View-config generation for react-native component specs, without babel.
3
+ *
4
+ * `@react-native/codegen` builds a full CodegenSchema with @babel/parser and
5
+ * emits the module with @babel/generator, which is the last thing in the native
6
+ * pipeline that runs babel at all: 11,774 babel calls per bundle of the soot
7
+ * app, every one of them from codegen. The view config itself is a plain object
8
+ * literal, so it can be read off the spec's own AST and printed as text.
9
+ *
10
+ * Only what a view config needs is modeled here: the prop list in declaration
11
+ * order, the five prop types that get a custom attribute descriptor, the two
12
+ * event handler shapes, and the command list. Everything else about a prop's
13
+ * type is irrelevant to the runtime, which is why the generated `validAttributes`
14
+ * is almost entirely `true`.
15
+ *
16
+ * TypeScript specs are parsed with oxc. React Native's own specs are Flow, which
17
+ * oxc cannot parse, so those go through hermes-parser (which is not babel).
18
+ */
19
+ export declare function parseSpec(code: string, filename: string, projectRoot?: string): any;
20
+ /**
21
+ * Generate the replacement for a spec's default export, plus the `Commands`
22
+ * export when the spec declares one. Returns null when the file is not a spec
23
+ * this can handle, so the caller can leave it alone.
24
+ */
25
+ export declare function generateViewConfig(program: any): {
26
+ imports: string[];
27
+ body: string;
28
+ } | null;
29
+ /** the full generated block, matching the layout codegen's file template emits */
30
+ export declare function renderViewConfigModule(result: {
31
+ imports: string[];
32
+ body: string;
33
+ }): string;
34
+ export declare function getLibraryName(filename: string): string;
35
+ //# sourceMappingURL=reactNativeViewConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactNativeViewConfig.d.ts","sourceRoot":"","sources":["../src/reactNativeViewConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAkdH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,CAmBnF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,GAAG,GACX;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAsE5C;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,UAEjF;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIvD"}
@@ -1,4 +1,4 @@
1
- import babel from '@babel/core';
1
+ import type * as babel from '@babel/core';
2
2
  import type { GetTransformProps, GetTransformResponse } from './types';
3
3
  type Props = GetTransformProps & {
4
4
  userSetting?: GetTransformResponse;
@@ -13,9 +13,9 @@ export declare function getBabelOptions(props: Props): babel.TransformOptions |
13
13
  * still applies the project's jsxImportSource and dev-mode settings, exactly
14
14
  * as it did when babel only stripped types here.
15
15
  */
16
- export declare function transformOxcReactCompiler(id: string, code: string, target: '18' | '19'): Promise<{
16
+ export declare function transformOxcReactCompiler(id: string, code: string, target: '18' | '19', sourceMap?: boolean): Promise<{
17
17
  code: string;
18
- map: undefined;
18
+ map: any;
19
19
  }>;
20
20
  /**
21
21
  * Transform input to mostly ES5 compatible code, keep ESM syntax, and transform generators.
@@ -1 +1 @@
1
- {"version":3,"file":"transformBabel.d.ts","sourceRoot":"","sources":["../src/transformBabel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,aAAa,CAAA;AAM/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEtE,KAAK,KAAK,GAAG,iBAAiB,GAAG;IAC/B,WAAW,CAAC,EAAE,oBAAoB,CAAA;CACnC,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAoB3E;AA6CD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,GAAG,IAAI;;;GA2BpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,KAAK,CAAC,gBAAgB,kCAkDhC"}
1
+ {"version":3,"file":"transformBabel.d.ts","sourceRoot":"","sources":["../src/transformBabel.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,KAAK,MAAM,aAAa,CAAA;AAKzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEtE,KAAK,KAAK,GAAG,iBAAiB,GAAG;IAC/B,WAAW,CAAC,EAAE,oBAAoB,CAAA;CACnC,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAoB3E;AA8CD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,IAAI,GAAG,IAAI,EACnB,SAAS,UAAQ;;;GA4BlB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,KAAK,CAAC,gBAAgB,kCAsDhC"}
@@ -0,0 +1,5 @@
1
+ export declare function transformHermesAsync(code: string, filename: string, sourceMaps?: boolean, format?: 'cjs'): Promise<{
2
+ code: string;
3
+ map?: any;
4
+ } | undefined>;
5
+ //# sourceMappingURL=transformHermesAsync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformHermesAsync.d.ts","sourceRoot":"","sources":["../src/transformHermesAsync.ts"],"names":[],"mappings":"AAGA,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,UAAQ,EAClB,MAAM,CAAC,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,SAAS,CAAC,CAqBlD"}
@@ -0,0 +1,5 @@
1
+ export declare function transformHermesLoops(code: string, filename: string): {
2
+ code: string;
3
+ maps: any[];
4
+ } | null;
5
+ //# sourceMappingURL=transformHermesLoops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformHermesLoops.d.ts","sourceRoot":"","sources":["../src/transformHermesLoops.ts"],"names":[],"mappings":"AA+ZA,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,GAAG,IAAI,CAgBtC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transformHermesLoops.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformHermesLoops.test.d.ts","sourceRoot":"","sources":["../src/transformHermesLoops.test.ts"],"names":[],"mappings":""}
@@ -1,10 +1,20 @@
1
- import { type Output, type Options as SWCOptions } from '@swc/core';
2
1
  import type { Options } from './types';
2
+ export interface Output {
3
+ code: string;
4
+ map?: any;
5
+ }
6
+ export declare function shouldStripFlow(id: string, code: string): boolean;
3
7
  export declare function transformSWC(id: string, code: string, options: Options & {
4
8
  es5?: boolean;
5
- }, swcOptions?: SWCOptions): Promise<Output | {
9
+ }, swcOptions?: any): Promise<Output | undefined>;
10
+ export declare const transformOxc: typeof transformSWC;
11
+ export declare function shouldSourceMap(): boolean;
12
+ export declare const transformSWCStripJSX: (id: string, code: string) => Promise<{
13
+ code: string;
14
+ map: any;
15
+ } | undefined>;
16
+ export declare const transformOxcStripJSX: (id: string, code: string) => Promise<{
6
17
  code: string;
7
18
  map: any;
8
19
  } | undefined>;
9
- export declare const transformSWCStripJSX: (id: string, code: string) => Promise<Output | undefined>;
10
20
  //# sourceMappingURL=transformSWC.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformSWC.d.ts","sourceRoot":"","sources":["../src/transformSWC.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,OAAO,IAAI,UAAU,EAG3B,MAAM,WAAW,CAAA;AAKlB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EACpC,UAAU,CAAC,EAAE,UAAU;;;eAkLxB;AAoKD,eAAO,MAAM,oBAAoB,GAAU,IAAI,MAAM,EAAE,MAAM,MAAM,gCAqBlE,CAAA"}
1
+ {"version":3,"file":"transformSWC.d.ts","sourceRoot":"","sources":["../src/transformSWC.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,GAAG,CAAA;CACV;AAKD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAUjE;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,EACpC,UAAU,CAAC,EAAE,GAAG,GACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkI7B;AAED,eAAO,MAAM,YAAY,qBAAe,CAAA;AA+HxC,wBAAgB,eAAe,YAE9B;AAyBD,eAAO,MAAM,oBAAoB,GAAU,IAAI,MAAM,EAAE,MAAM,MAAM;;SAwBxB,GAAG;cAC7C,CAAA;AAED,eAAO,MAAM,oBAAoB,OA3Bc,MAAM,QAAQ,MAAM;;SAwBxB,GAAG;cAGU,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transformSWC.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformSWC.test.d.ts","sourceRoot":"","sources":["../src/transformSWC.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ export declare const REANIMATED_AUTOWORKLETIZATION_KEYWORDS: string[];
2
+ export declare function shouldTransformWorklets({ id, code }: {
3
+ id: string;
4
+ code: string;
5
+ }): boolean;
6
+ export declare function getWorkletsVersion(projectRoot?: string, filename?: string): string;
7
+ export type TransformWorkletsOptions = {
8
+ projectRoot?: string;
9
+ bundleMode?: boolean;
10
+ disableInlineStylesWarning?: boolean;
11
+ disableSourceMaps?: boolean;
12
+ disableWorkletClasses?: boolean;
13
+ globals?: string[];
14
+ relativeSourceLocation?: boolean;
15
+ strictGlobal?: boolean;
16
+ pluginVersion?: string;
17
+ };
18
+ export { prepareWorkletsForReactCompiler } from './worklets/transform';
19
+ export declare function transformWorklets(id: string, code: string, sourceMaps?: boolean, options?: TransformWorkletsOptions): Promise<{
20
+ code: string;
21
+ map?: any;
22
+ }>;
23
+ //# sourceMappingURL=transformWorklets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformWorklets.d.ts","sourceRoot":"","sources":["../src/transformWorklets.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,sCAAsC,UAiBlD,CAAA;AAiCD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,WAWjF;AAED,wBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA8DlF;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAGD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AAEtE,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,UAAU,UAAQ,EAClB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,CAEtC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transformWorklets.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformWorklets.test.d.ts","sourceRoot":"","sources":["../src/transformWorklets.test.ts"],"names":[],"mappings":""}
package/types/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Options as SWCOptions } from '@swc/core';
1
+ import type { TransformOptions as OxcTransformOptions } from 'oxc-transform';
2
2
  export type Environment = 'ios' | 'android' | 'ssr' | 'client';
3
3
  export type Options = {
4
4
  environment: Environment;
@@ -18,11 +18,11 @@ export type GetTransformProps = {
18
18
  reactForRNVersion: '18' | '19';
19
19
  };
20
20
  export type GetTransform = (props: GetTransformProps) => GetTransformResponse;
21
- export type GetTransformResponse = boolean | 'babel' | 'swc' | TransformOptions;
21
+ export type GetTransformResponse = boolean | 'babel' | 'swc' | 'oxc' | TransformOptions;
22
22
  export type TransformOptions = BabelTransformOptions | SWCTransformOptions;
23
23
  export type SWCTransformOptions = {
24
- transform: 'swc';
25
- } & SWCOptions;
24
+ transform: 'swc' | 'oxc';
25
+ } & OxcTransformOptions;
26
26
  export type BabelTransformOptions = {
27
27
  transform: 'babel';
28
28
  excludeDefaultPlugins?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9D,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,CAAA;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,SAAS,CAAC,EAAE,YAAY,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,oBAAoB,CAAA;AAE7E,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,gBAAgB,CAAA;AAE/E,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,mBAAmB,CAAA;AAE1E,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,KAAK,CAAA;CACjB,GAAG,UAAU,CAAA;AAEd,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,GAAG,KAAK,CAAC,gBAAgB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAE5E,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE9D,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,CAAA;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,SAAS,CAAC,EAAE,YAAY,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,WAAW,CAAA;IACxB,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,oBAAoB,CAAA;AAE7E,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,gBAAgB,CAAA;AAEvF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,mBAAmB,CAAA;AAE1E,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,KAAK,GAAG,KAAK,CAAA;CACzB,GAAG,mBAAmB,CAAA;AAEvB,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,GAAG,KAAK,CAAC,gBAAgB,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { WorkletCandidate } from './types';
2
+ export declare const AUTOWORKLET_FUNCTION_ARGS: Record<string, number[]>;
3
+ export declare const GESTURE_BUILDER_METHODS: Set<string>;
4
+ export declare const WORKLET_DIRECTIVES: string[];
5
+ export declare function hasDirective(fnNode: any, directive: string): boolean;
6
+ export declare function hasWorkletDirective(fnNode: any): boolean;
7
+ /**
8
+ * Source offset just past every leading worklets directive in the body, so a
9
+ * body slice drops all of them rather than only the first. Returns the offset
10
+ * of the first real statement.
11
+ */
12
+ export declare function bodyStartAfterDirectives(fnNode: any, code: string): number;
13
+ export declare function findWorkletCandidates(program: any): WorkletCandidate[];
14
+ //# sourceMappingURL=autoworklet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoworklet.d.ts","sourceRoot":"","sources":["../../src/worklets/autoworklet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK/C,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAoC9D,CAAA;AAOD,eAAO,MAAM,uBAAuB,aAWlC,CAAA;AAoHF,eAAO,MAAM,kBAAkB,UAAgE,CAAA;AAW/F,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAsBpE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAY1E;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB,EAAE,CA6JtE"}
@@ -0,0 +1,4 @@
1
+ export declare const JS_GLOBALS: Set<string>;
2
+ export declare const DEFAULT_GLOBALS: Set<string>;
3
+ export declare function createGlobalsSet(customGlobals?: string[], strictGlobal?: boolean): Set<string>;
4
+ //# sourceMappingURL=globals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../src/worklets/globals.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,aAkFrB,CAAA;AAEF,eAAO,MAAM,eAAe,aA0B1B,CAAA;AAEF,wBAAgB,gBAAgB,CAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,YAAY,CAAC,EAAE,OAAO,GACrB,GAAG,CAAC,MAAM,CAAC,CAab"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Deterministic hash algorithm matching Reanimated / React Native Worklets.
3
+ */
4
+ export declare function calculateWorkletHash(str: string): number;
5
+ //# sourceMappingURL=hash.d.ts.map