vxrn 2.0.0-beta.33.1 → 2.0.0-beta.362.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 (581) hide show
  1. package/dist/backgroundComputation.mjs +145 -0
  2. package/dist/backgroundComputation.mjs.map +1 -0
  3. package/dist/backgroundComputation.native.js +163 -0
  4. package/dist/backgroundComputation.native.js.map +1 -0
  5. package/dist/backgroundComputationNative.mjs +16 -0
  6. package/dist/backgroundComputationNative.mjs.map +1 -0
  7. package/dist/backgroundComputationNative.native.js +18 -0
  8. package/dist/backgroundComputationNative.native.js.map +1 -0
  9. package/dist/cli.mjs +229 -261
  10. package/dist/cli.mjs.map +1 -1
  11. package/dist/cli.native.js +233 -265
  12. package/dist/cli.native.js.map +1 -1
  13. package/dist/config/getAdditionalViteConfig.mjs +32 -62
  14. package/dist/config/getAdditionalViteConfig.mjs.map +1 -1
  15. package/dist/config/getAdditionalViteConfig.native.js +32 -62
  16. package/dist/config/getAdditionalViteConfig.native.js.map +1 -1
  17. package/dist/config/getBaseViteConfigOnly.mjs +79 -77
  18. package/dist/config/getBaseViteConfigOnly.mjs.map +1 -1
  19. package/dist/config/getBaseViteConfigOnly.native.js +81 -79
  20. package/dist/config/getBaseViteConfigOnly.native.js.map +1 -1
  21. package/dist/config/getBaseViteConfigWithPlugins.mjs +6 -4
  22. package/dist/config/getBaseViteConfigWithPlugins.mjs.map +1 -1
  23. package/dist/config/getBaseViteConfigWithPlugins.native.js +6 -4
  24. package/dist/config/getBaseViteConfigWithPlugins.native.js.map +1 -1
  25. package/dist/config/getBaseVitePlugins.mjs +106 -130
  26. package/dist/config/getBaseVitePlugins.mjs.map +1 -1
  27. package/dist/config/getBaseVitePlugins.native.js +127 -152
  28. package/dist/config/getBaseVitePlugins.native.js.map +1 -1
  29. package/dist/config/getNonCliModeOnlyVitePlugins.mjs +3 -3
  30. package/dist/config/getNonCliModeOnlyVitePlugins.mjs.map +1 -1
  31. package/dist/config/getNonCliModeOnlyVitePlugins.native.js +3 -1
  32. package/dist/config/getNonCliModeOnlyVitePlugins.native.js.map +1 -1
  33. package/dist/config/getOptimizeDeps.mjs +132 -42
  34. package/dist/config/getOptimizeDeps.mjs.map +1 -1
  35. package/dist/config/getOptimizeDeps.native.js +132 -42
  36. package/dist/config/getOptimizeDeps.native.js.map +1 -1
  37. package/dist/config/getOptionsFilled.mjs +48 -52
  38. package/dist/config/getOptionsFilled.mjs.map +1 -1
  39. package/dist/config/getOptionsFilled.native.js +51 -55
  40. package/dist/config/getOptionsFilled.native.js.map +1 -1
  41. package/dist/config/getReactNativePlugins.mjs +17 -15
  42. package/dist/config/getReactNativePlugins.mjs.map +1 -1
  43. package/dist/config/getReactNativePlugins.native.js +19 -16
  44. package/dist/config/getReactNativePlugins.native.js.map +1 -1
  45. package/dist/config/getServerOptionsFilled.mjs +33 -35
  46. package/dist/config/getServerOptionsFilled.mjs.map +1 -1
  47. package/dist/config/getServerOptionsFilled.native.js +35 -38
  48. package/dist/config/getServerOptionsFilled.native.js.map +1 -1
  49. package/dist/config/getViteServerConfig.mjs +34 -45
  50. package/dist/config/getViteServerConfig.mjs.map +1 -1
  51. package/dist/config/getViteServerConfig.native.js +35 -46
  52. package/dist/config/getViteServerConfig.native.js.map +1 -1
  53. package/dist/config/mergeUserConfig.mjs +50 -28
  54. package/dist/config/mergeUserConfig.mjs.map +1 -1
  55. package/dist/config/mergeUserConfig.native.js +60 -38
  56. package/dist/config/mergeUserConfig.native.js.map +1 -1
  57. package/dist/constants/defaults.mjs +34 -12
  58. package/dist/constants/defaults.mjs.map +1 -1
  59. package/dist/constants/defaults.native.js +34 -12
  60. package/dist/constants/defaults.native.js.map +1 -1
  61. package/dist/constants.mjs +41 -6
  62. package/dist/constants.mjs.map +1 -1
  63. package/dist/constants.native.js +41 -6
  64. package/dist/constants.native.js.map +1 -1
  65. package/dist/exports/build.mjs +221 -270
  66. package/dist/exports/build.mjs.map +1 -1
  67. package/dist/exports/build.native.js +229 -283
  68. package/dist/exports/build.native.js.map +1 -1
  69. package/dist/exports/clean.mjs +71 -78
  70. package/dist/exports/clean.mjs.map +1 -1
  71. package/dist/exports/clean.native.js +76 -90
  72. package/dist/exports/clean.native.js.map +1 -1
  73. package/dist/exports/createServer.mjs +43 -46
  74. package/dist/exports/createServer.mjs.map +1 -1
  75. package/dist/exports/createServer.native.js +45 -48
  76. package/dist/exports/createServer.native.js.map +1 -1
  77. package/dist/exports/dev.mjs +180 -201
  78. package/dist/exports/dev.mjs.map +1 -1
  79. package/dist/exports/dev.native.js +194 -215
  80. package/dist/exports/dev.native.js.map +1 -1
  81. package/dist/exports/loadEnv.mjs +58 -49
  82. package/dist/exports/loadEnv.mjs.map +1 -1
  83. package/dist/exports/loadEnv.native.js +83 -58
  84. package/dist/exports/loadEnv.native.js.map +1 -1
  85. package/dist/exports/patch.mjs +9 -7
  86. package/dist/exports/patch.mjs.map +1 -1
  87. package/dist/exports/patch.native.js +9 -7
  88. package/dist/exports/patch.native.js.map +1 -1
  89. package/dist/exports/prebuild.mjs +74 -175
  90. package/dist/exports/prebuild.mjs.map +1 -1
  91. package/dist/exports/prebuild.native.js +77 -178
  92. package/dist/exports/prebuild.native.js.map +1 -1
  93. package/dist/exports/prebuildWithoutExpo.mjs +2300 -45
  94. package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
  95. package/dist/exports/prebuildWithoutExpo.native.js +2891 -46
  96. package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
  97. package/dist/exports/runAndroid.mjs +10 -11
  98. package/dist/exports/runAndroid.mjs.map +1 -1
  99. package/dist/exports/runAndroid.native.js +11 -12
  100. package/dist/exports/runAndroid.native.js.map +1 -1
  101. package/dist/exports/runIos.mjs +12 -11
  102. package/dist/exports/runIos.mjs.map +1 -1
  103. package/dist/exports/runIos.native.js +13 -12
  104. package/dist/exports/runIos.native.js.map +1 -1
  105. package/dist/exports/serve.mjs +23 -31
  106. package/dist/exports/serve.mjs.map +1 -1
  107. package/dist/exports/serve.native.js +26 -34
  108. package/dist/exports/serve.native.js.map +1 -1
  109. package/dist/exports/serveStaticAssets.mjs +109 -113
  110. package/dist/exports/serveStaticAssets.mjs.map +1 -1
  111. package/dist/exports/serveStaticAssets.native.js +180 -192
  112. package/dist/exports/serveStaticAssets.native.js.map +1 -1
  113. package/dist/index.js +32 -14
  114. package/dist/index.mjs +32 -14
  115. package/dist/index.native.js +32 -14
  116. package/dist/native-source-contract.mjs +3 -0
  117. package/dist/native-source-contract.native.js +3 -0
  118. package/dist/patches/builtInDepPatches.mjs +234 -424
  119. package/dist/patches/builtInDepPatches.mjs.map +1 -1
  120. package/dist/patches/builtInDepPatches.native.js +237 -427
  121. package/dist/patches/builtInDepPatches.native.js.map +1 -1
  122. package/dist/plugins/applyBuiltInPatchesPlugin.mjs +11 -11
  123. package/dist/plugins/applyBuiltInPatchesPlugin.mjs.map +1 -1
  124. package/dist/plugins/applyBuiltInPatchesPlugin.native.js +11 -11
  125. package/dist/plugins/applyBuiltInPatchesPlugin.native.js.map +1 -1
  126. package/dist/plugins/autoDepOptimizePlugin.mjs +87 -90
  127. package/dist/plugins/autoDepOptimizePlugin.mjs.map +1 -1
  128. package/dist/plugins/autoDepOptimizePlugin.native.js +99 -102
  129. package/dist/plugins/autoDepOptimizePlugin.native.js.map +1 -1
  130. package/dist/plugins/backgroundComputationPlugin.mjs +27 -0
  131. package/dist/plugins/backgroundComputationPlugin.mjs.map +1 -0
  132. package/dist/plugins/backgroundComputationPlugin.native.js +32 -0
  133. package/dist/plugins/backgroundComputationPlugin.native.js.map +1 -0
  134. package/dist/plugins/clientInjectPlugin.mjs +13 -11
  135. package/dist/plugins/clientInjectPlugin.mjs.map +1 -1
  136. package/dist/plugins/clientInjectPlugin.native.js +13 -11
  137. package/dist/plugins/clientInjectPlugin.native.js.map +1 -1
  138. package/dist/plugins/defaultDepOptimizePlugin.mjs +15 -23
  139. package/dist/plugins/defaultDepOptimizePlugin.mjs.map +1 -1
  140. package/dist/plugins/defaultDepOptimizePlugin.native.js +15 -23
  141. package/dist/plugins/defaultDepOptimizePlugin.native.js.map +1 -1
  142. package/dist/plugins/getResolvedConfigSubset.mjs +6 -5
  143. package/dist/plugins/getResolvedConfigSubset.mjs.map +1 -1
  144. package/dist/plugins/getResolvedConfigSubset.native.js +6 -5
  145. package/dist/plugins/getResolvedConfigSubset.native.js.map +1 -1
  146. package/dist/plugins/reactNativeCommonJsPlugin.mjs +210 -178
  147. package/dist/plugins/reactNativeCommonJsPlugin.mjs.map +1 -1
  148. package/dist/plugins/reactNativeCommonJsPlugin.native.js +283 -259
  149. package/dist/plugins/reactNativeCommonJsPlugin.native.js.map +1 -1
  150. package/dist/plugins/reactNativeDevAssetPlugin.mjs +73 -83
  151. package/dist/plugins/reactNativeDevAssetPlugin.mjs.map +1 -1
  152. package/dist/plugins/reactNativeDevAssetPlugin.native.js +76 -92
  153. package/dist/plugins/reactNativeDevAssetPlugin.native.js.map +1 -1
  154. package/dist/plugins/reactNativeDevServer.mjs +416 -328
  155. package/dist/plugins/reactNativeDevServer.mjs.map +1 -1
  156. package/dist/plugins/reactNativeDevServer.native.js +470 -391
  157. package/dist/plugins/reactNativeDevServer.native.js.map +1 -1
  158. package/dist/plugins/rnCodegenPlugin.mjs +13 -12
  159. package/dist/plugins/rnCodegenPlugin.mjs.map +1 -1
  160. package/dist/plugins/rnCodegenPlugin.native.js +13 -12
  161. package/dist/plugins/rnCodegenPlugin.native.js.map +1 -1
  162. package/dist/plugins/rollupRemoveUnusedImports.mjs +8 -7
  163. package/dist/plugins/rollupRemoveUnusedImports.mjs.map +1 -1
  164. package/dist/plugins/rollupRemoveUnusedImports.native.js +8 -7
  165. package/dist/plugins/rollupRemoveUnusedImports.native.js.map +1 -1
  166. package/dist/plugins/workletImportsPlugin.mjs +123 -149
  167. package/dist/plugins/workletImportsPlugin.mjs.map +1 -1
  168. package/dist/plugins/workletImportsPlugin.native.js +183 -219
  169. package/dist/plugins/workletImportsPlugin.native.js.map +1 -1
  170. package/dist/rn-commands/bundle/buildBundle.mjs +48 -79
  171. package/dist/rn-commands/bundle/buildBundle.mjs.map +1 -1
  172. package/dist/rn-commands/bundle/buildBundle.native.js +49 -85
  173. package/dist/rn-commands/bundle/buildBundle.native.js.map +1 -1
  174. package/dist/runtime/hmr-client.mjs +133 -140
  175. package/dist/runtime/hmr-client.mjs.map +1 -1
  176. package/dist/runtime/hmr-client.native.js +223 -222
  177. package/dist/runtime/hmr-client.native.js.map +1 -1
  178. package/dist/runtime/hmr-runtime.mjs +192 -194
  179. package/dist/runtime/hmr-runtime.mjs.map +1 -1
  180. package/dist/runtime/hmr-runtime.native.js +424 -411
  181. package/dist/runtime/hmr-runtime.native.js.map +1 -1
  182. package/dist/runtime/hmr-types.mjs +0 -2
  183. package/dist/runtime/hmr-types.native.js +0 -2
  184. package/dist/runtime/native-prelude.mjs +3 -1
  185. package/dist/runtime/native-prelude.mjs.map +1 -1
  186. package/dist/runtime/native-prelude.native.js +3 -1
  187. package/dist/runtime/native-prelude.native.js.map +1 -1
  188. package/dist/runtime/react-refresh-utils.mjs +23 -22
  189. package/dist/runtime/react-refresh-utils.mjs.map +1 -1
  190. package/dist/runtime/react-refresh-utils.native.js +23 -27
  191. package/dist/runtime/react-refresh-utils.native.js.map +1 -1
  192. package/dist/serve/node.mjs +49 -49
  193. package/dist/serve/node.mjs.map +1 -1
  194. package/dist/serve/node.native.js +92 -96
  195. package/dist/serve/node.native.js.map +1 -1
  196. package/dist/swift-package-id.mjs +3 -0
  197. package/dist/swift-package-id.native.js +3 -0
  198. package/dist/types.mjs +0 -2
  199. package/dist/types.native.js +0 -2
  200. package/dist/user-interface/index.mjs +203 -270
  201. package/dist/user-interface/index.mjs.map +1 -1
  202. package/dist/user-interface/index.native.js +215 -306
  203. package/dist/user-interface/index.native.js.map +1 -1
  204. package/dist/utils/assert.mjs +7 -6
  205. package/dist/utils/assert.mjs.map +1 -1
  206. package/dist/utils/assert.native.js +7 -18
  207. package/dist/utils/assert.native.js.map +1 -1
  208. package/dist/utils/bindKeypressInput.mjs +36 -38
  209. package/dist/utils/bindKeypressInput.mjs.map +1 -1
  210. package/dist/utils/bindKeypressInput.native.js +36 -38
  211. package/dist/utils/bindKeypressInput.native.js.map +1 -1
  212. package/dist/utils/coerceToArray.mjs +2 -1
  213. package/dist/utils/coerceToArray.mjs.map +1 -1
  214. package/dist/utils/coerceToArray.native.js +2 -1
  215. package/dist/utils/coerceToArray.native.js.map +1 -1
  216. package/dist/utils/compileNativeDevBytecode.mjs +93 -0
  217. package/dist/utils/compileNativeDevBytecode.mjs.map +1 -0
  218. package/dist/utils/compileNativeDevBytecode.native.js +98 -0
  219. package/dist/utils/compileNativeDevBytecode.native.js.map +1 -0
  220. package/dist/utils/connectedNativeClients.mjs +3 -2
  221. package/dist/utils/connectedNativeClients.mjs.map +1 -1
  222. package/dist/utils/connectedNativeClients.native.js +3 -2
  223. package/dist/utils/connectedNativeClients.native.js.map +1 -1
  224. package/dist/utils/createNativeDevEngine.mjs +1168 -952
  225. package/dist/utils/createNativeDevEngine.mjs.map +1 -1
  226. package/dist/utils/createNativeDevEngine.native.js +1366 -1167
  227. package/dist/utils/createNativeDevEngine.native.js.map +1 -1
  228. package/dist/utils/dispose.mjs +4 -3
  229. package/dist/utils/dispose.mjs.map +1 -1
  230. package/dist/utils/dispose.native.js +6 -5
  231. package/dist/utils/dispose.native.js.map +1 -1
  232. package/dist/utils/environmentUtils.mjs +5 -4
  233. package/dist/utils/environmentUtils.mjs.map +1 -1
  234. package/dist/utils/environmentUtils.native.js +5 -4
  235. package/dist/utils/environmentUtils.native.js.map +1 -1
  236. package/dist/utils/execSync.mjs +7 -5
  237. package/dist/utils/execSync.mjs.map +1 -1
  238. package/dist/utils/execSync.native.js +8 -6
  239. package/dist/utils/execSync.native.js.map +1 -1
  240. package/dist/utils/filterViteServerResolvedUrls.mjs +24 -22
  241. package/dist/utils/filterViteServerResolvedUrls.mjs.map +1 -1
  242. package/dist/utils/filterViteServerResolvedUrls.native.js +61 -63
  243. package/dist/utils/filterViteServerResolvedUrls.native.js.map +1 -1
  244. package/dist/utils/getBoundPort.mjs +6 -5
  245. package/dist/utils/getBoundPort.mjs.map +1 -1
  246. package/dist/utils/getBoundPort.native.js +8 -12
  247. package/dist/utils/getBoundPort.native.js.map +1 -1
  248. package/dist/utils/getCacheDir.mjs +3 -1
  249. package/dist/utils/getCacheDir.mjs.map +1 -1
  250. package/dist/utils/getCacheDir.native.js +3 -1
  251. package/dist/utils/getCacheDir.native.js.map +1 -1
  252. package/dist/utils/getServerEntry.mjs +6 -4
  253. package/dist/utils/getServerEntry.mjs.map +1 -1
  254. package/dist/utils/getServerEntry.native.js +8 -11
  255. package/dist/utils/getServerEntry.native.js.map +1 -1
  256. package/dist/utils/getVitePath.mjs +42 -42
  257. package/dist/utils/getVitePath.mjs.map +1 -1
  258. package/dist/utils/getVitePath.native.js +43 -41
  259. package/dist/utils/getVitePath.native.js.map +1 -1
  260. package/dist/utils/globDir.mjs +7 -11
  261. package/dist/utils/globDir.mjs.map +1 -1
  262. package/dist/utils/globDir.native.js +10 -14
  263. package/dist/utils/globDir.native.js.map +1 -1
  264. package/dist/utils/isWithin.mjs +4 -2
  265. package/dist/utils/isWithin.mjs.map +1 -1
  266. package/dist/utils/isWithin.native.js +4 -2
  267. package/dist/utils/isWithin.native.js.map +1 -1
  268. package/dist/utils/nativeRun.mjs +150 -0
  269. package/dist/utils/nativeRun.mjs.map +1 -0
  270. package/dist/utils/nativeRun.native.js +189 -0
  271. package/dist/utils/nativeRun.native.js.map +1 -0
  272. package/dist/utils/nativeSourceContract.mjs +843 -0
  273. package/dist/utils/nativeSourceContract.mjs.map +1 -0
  274. package/dist/utils/nativeSourceContract.native.js +1050 -0
  275. package/dist/utils/nativeSourceContract.native.js.map +1 -0
  276. package/dist/utils/nearestPackageJson.mjs +16 -0
  277. package/dist/utils/nearestPackageJson.mjs.map +1 -0
  278. package/dist/utils/nearestPackageJson.native.js +16 -0
  279. package/dist/utils/nearestPackageJson.native.js.map +1 -0
  280. package/dist/utils/patches.mjs +233 -255
  281. package/dist/utils/patches.mjs.map +1 -1
  282. package/dist/utils/patches.native.js +415 -460
  283. package/dist/utils/patches.native.js.map +1 -1
  284. package/dist/utils/printServerUrls.mjs +9 -7
  285. package/dist/utils/printServerUrls.mjs.map +1 -1
  286. package/dist/utils/printServerUrls.native.js +48 -51
  287. package/dist/utils/printServerUrls.native.js.map +1 -1
  288. package/dist/utils/removeUndefined.mjs +8 -7
  289. package/dist/utils/removeUndefined.mjs.map +1 -1
  290. package/dist/utils/removeUndefined.native.js +8 -7
  291. package/dist/utils/removeUndefined.native.js.map +1 -1
  292. package/dist/utils/scanDepsToOptimize.mjs +196 -159
  293. package/dist/utils/scanDepsToOptimize.mjs.map +1 -1
  294. package/dist/utils/scanDepsToOptimize.native.js +232 -195
  295. package/dist/utils/scanDepsToOptimize.native.js.map +1 -1
  296. package/dist/utils/state.mjs +18 -18
  297. package/dist/utils/state.mjs.map +1 -1
  298. package/dist/utils/state.native.js +18 -18
  299. package/dist/utils/state.native.js.map +1 -1
  300. package/dist/utils/swiftPackageId.mjs +43 -0
  301. package/dist/utils/swiftPackageId.mjs.map +1 -0
  302. package/dist/utils/swiftPackageId.native.js +62 -0
  303. package/dist/utils/swiftPackageId.native.js.map +1 -0
  304. package/dist/utils/symbolicateNativeStack.mjs +54 -54
  305. package/dist/utils/symbolicateNativeStack.mjs.map +1 -1
  306. package/dist/utils/symbolicateNativeStack.native.js +58 -58
  307. package/dist/utils/symbolicateNativeStack.native.js.map +1 -1
  308. package/dist/utils/uniq.mjs +2 -1
  309. package/dist/utils/uniq.mjs.map +1 -1
  310. package/dist/utils/uniq.native.js +2 -1
  311. package/dist/utils/uniq.native.js.map +1 -1
  312. package/dist/utils/utils.mjs +19 -19
  313. package/dist/utils/utils.mjs.map +1 -1
  314. package/dist/utils/utils.native.js +38 -40
  315. package/dist/utils/utils.native.js.map +1 -1
  316. package/dist/vendor/debugger-app/index.mjs +0 -2
  317. package/dist/vendor/debugger-app/index.native.js +0 -2
  318. package/dist/vendor/debugger-app/src/debuggerWorker.mjs +0 -2
  319. package/dist/vendor/debugger-app/src/debuggerWorker.native.js +0 -2
  320. package/dist/vendor/debugger-app/src/index.mjs +0 -2
  321. package/dist/vendor/debugger-app/src/index.native.js +0 -2
  322. package/dist/vxrn-vite-plugin.mjs +34 -33
  323. package/dist/vxrn-vite-plugin.mjs.map +1 -1
  324. package/dist/vxrn-vite-plugin.native.js +35 -34
  325. package/dist/vxrn-vite-plugin.native.js.map +1 -1
  326. package/expo-plugin.cjs +502 -888
  327. package/native-project-patches.cjs +740 -0
  328. package/package.json +40 -22
  329. package/react-native-commands.cjs +36 -30
  330. package/src/backgroundComputation.ts +220 -0
  331. package/src/backgroundComputationNative.ts +23 -0
  332. package/src/cli.ts +29 -6
  333. package/src/config/getAdditionalViteConfig.ts +0 -1
  334. package/src/config/getBaseViteConfigOnly.ts +12 -8
  335. package/src/config/getBaseVitePlugins.ts +2 -1
  336. package/src/config/getOptimizeDeps.test.ts +7 -0
  337. package/src/config/getOptimizeDeps.ts +20 -12
  338. package/src/config/getReactNativePlugins.ts +3 -15
  339. package/src/config/getServerOptionsFilled.ts +1 -1
  340. package/src/config/glbAssets.test.ts +228 -0
  341. package/src/constants/defaults.ts +7 -0
  342. package/src/exports/build.ts +4 -1
  343. package/src/exports/dev.ts +5 -1
  344. package/src/exports/expoPlugin.test.mjs +239 -0
  345. package/src/exports/loadEnv.test.ts +22 -0
  346. package/src/exports/loadEnv.ts +20 -11
  347. package/src/exports/prebuild.ts +68 -255
  348. package/src/exports/prebuildWithoutExpo.test.ts +2669 -0
  349. package/src/exports/prebuildWithoutExpo.ts +3110 -34
  350. package/src/exports/runAndroid.ts +2 -2
  351. package/src/exports/runIos.ts +13 -3
  352. package/src/index.ts +10 -0
  353. package/src/native-source-contract.ts +16 -0
  354. package/src/patches/builtInDepPatches.ts +0 -184
  355. package/src/plugins/backgroundComputationPlugin.test.ts +77 -0
  356. package/src/plugins/backgroundComputationPlugin.ts +29 -0
  357. package/src/plugins/reactNativeDevAssetPlugin.ts +5 -1
  358. package/src/plugins/reactNativeDevServer.ts +176 -6
  359. package/src/plugins/rnCodegenPlugin.test.ts +30 -0
  360. package/src/plugins/workletImportsPlugin.ts +20 -38
  361. package/src/rn-commands/bundle/buildBundle.ts +10 -8
  362. package/src/runtime/native-prelude.ts +1 -0
  363. package/src/swift-package-id.ts +1 -0
  364. package/src/user-interface/index.ts +3 -85
  365. package/src/utils/compileNativeDevBytecode.test.ts +168 -0
  366. package/src/utils/compileNativeDevBytecode.ts +117 -0
  367. package/src/utils/createNativeDevEngine.test.ts +424 -22
  368. package/src/utils/createNativeDevEngine.ts +308 -60
  369. package/src/utils/nativeRun.test.ts +184 -0
  370. package/src/utils/nativeRun.ts +184 -0
  371. package/src/utils/nativeSourceContract.test.ts +183 -0
  372. package/src/utils/nativeSourceContract.ts +812 -0
  373. package/src/utils/nearestPackageJson.ts +24 -0
  374. package/src/utils/scanDepsToOptimize.test.ts +113 -0
  375. package/src/utils/scanDepsToOptimize.ts +24 -12
  376. package/src/utils/swiftPackageId.ts +38 -0
  377. package/src/vxrn-vite-plugin.ts +2 -5
  378. package/types/backgroundComputation.d.ts +28 -0
  379. package/types/backgroundComputation.d.ts.map +1 -0
  380. package/types/backgroundComputationNative.d.ts +2 -0
  381. package/types/backgroundComputationNative.d.ts.map +1 -0
  382. package/types/config/getAdditionalViteConfig.d.ts.map +1 -1
  383. package/types/config/getBaseViteConfigOnly.d.ts.map +1 -1
  384. package/types/config/getBaseVitePlugins.d.ts.map +1 -1
  385. package/types/config/getOptimizeDeps.d.ts +5 -0
  386. package/types/config/getOptimizeDeps.d.ts.map +1 -1
  387. package/types/config/getOptionsFilled.d.ts +15 -15
  388. package/types/config/getOptionsFilled.d.ts.map +1 -1
  389. package/types/config/getReactNativePlugins.d.ts +2 -2
  390. package/types/config/getReactNativePlugins.d.ts.map +1 -1
  391. package/types/constants/defaults.d.ts.map +1 -1
  392. package/types/exports/build.d.ts +11 -11
  393. package/types/exports/build.d.ts.map +1 -1
  394. package/types/exports/clean.d.ts +1 -1
  395. package/types/exports/clean.d.ts.map +1 -1
  396. package/types/exports/createServer.d.ts.map +1 -1
  397. package/types/exports/dev.d.ts.map +1 -1
  398. package/types/exports/loadEnv.d.ts +1 -3
  399. package/types/exports/loadEnv.d.ts.map +1 -1
  400. package/types/exports/patch.d.ts.map +1 -1
  401. package/types/exports/prebuild.d.ts +5 -4
  402. package/types/exports/prebuild.d.ts.map +1 -1
  403. package/types/exports/prebuildWithoutExpo.d.ts +37 -1
  404. package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
  405. package/types/exports/runAndroid.d.ts.map +1 -1
  406. package/types/exports/runIos.d.ts +3 -1
  407. package/types/exports/runIos.d.ts.map +1 -1
  408. package/types/exports/serve.d.ts.map +1 -1
  409. package/types/index.d.ts +4 -0
  410. package/types/index.d.ts.map +1 -1
  411. package/types/native-source-contract.d.ts +2 -0
  412. package/types/native-source-contract.d.ts.map +1 -0
  413. package/types/patches/builtInDepPatches.d.ts.map +1 -1
  414. package/types/plugins/autoDepOptimizePlugin.d.ts.map +1 -1
  415. package/types/plugins/backgroundComputationPlugin.d.ts +3 -0
  416. package/types/plugins/backgroundComputationPlugin.d.ts.map +1 -0
  417. package/types/plugins/reactNativeDevAssetPlugin.d.ts.map +1 -1
  418. package/types/plugins/reactNativeDevServer.d.ts.map +1 -1
  419. package/types/plugins/rollupRemoveUnusedImports.d.ts.map +1 -1
  420. package/types/plugins/workletImportsPlugin.d.ts.map +1 -1
  421. package/types/rn-commands/bundle/buildBundle.d.ts.map +1 -1
  422. package/types/runtime/hmr-client.d.ts.map +1 -1
  423. package/types/runtime/hmr-runtime.d.ts.map +1 -1
  424. package/types/runtime/hmr-types.d.ts.map +1 -1
  425. package/types/runtime/native-prelude.d.ts.map +1 -1
  426. package/types/swift-package-id.d.ts +2 -0
  427. package/types/swift-package-id.d.ts.map +1 -0
  428. package/types/user-interface/index.d.ts.map +1 -1
  429. package/types/utils/compileNativeDevBytecode.d.ts +3 -0
  430. package/types/utils/compileNativeDevBytecode.d.ts.map +1 -0
  431. package/types/utils/createNativeDevEngine.d.ts +8 -23
  432. package/types/utils/createNativeDevEngine.d.ts.map +1 -1
  433. package/types/utils/execSync.d.ts.map +1 -1
  434. package/types/utils/getServerEntry.d.ts.map +1 -1
  435. package/types/utils/nativeRun.d.ts +25 -0
  436. package/types/utils/nativeRun.d.ts.map +1 -0
  437. package/types/utils/nativeSourceContract.d.ts +67 -0
  438. package/types/utils/nativeSourceContract.d.ts.map +1 -0
  439. package/types/utils/nearestPackageJson.d.ts +2 -0
  440. package/types/utils/nearestPackageJson.d.ts.map +1 -0
  441. package/types/utils/scanDepsToOptimize.d.ts.map +1 -1
  442. package/types/utils/swiftPackageId.d.ts +4 -0
  443. package/types/utils/swiftPackageId.d.ts.map +1 -0
  444. package/types/vxrn-vite-plugin.d.ts +2 -2
  445. package/types/vxrn-vite-plugin.d.ts.map +1 -1
  446. package/dist/config/getOptimizeDeps.test.mjs +0 -20
  447. package/dist/config/getOptimizeDeps.test.mjs.map +0 -1
  448. package/dist/config/getOptimizeDeps.test.native.js +0 -39
  449. package/dist/config/getOptimizeDeps.test.native.js.map +0 -1
  450. package/dist/config/getServerOptionsFilled.test.mjs +0 -20
  451. package/dist/config/getServerOptionsFilled.test.mjs.map +0 -1
  452. package/dist/config/getServerOptionsFilled.test.native.js +0 -20
  453. package/dist/config/getServerOptionsFilled.test.native.js.map +0 -1
  454. package/dist/config/getViteServerConfig.test.mjs +0 -26
  455. package/dist/config/getViteServerConfig.test.mjs.map +0 -1
  456. package/dist/config/getViteServerConfig.test.native.js +0 -26
  457. package/dist/config/getViteServerConfig.test.native.js.map +0 -1
  458. package/dist/config/mergeUserConfig.test.mjs +0 -108
  459. package/dist/config/mergeUserConfig.test.mjs.map +0 -1
  460. package/dist/config/mergeUserConfig.test.native.js +0 -108
  461. package/dist/config/mergeUserConfig.test.native.js.map +0 -1
  462. package/dist/exports/clean.test.mjs +0 -81
  463. package/dist/exports/clean.test.mjs.map +0 -1
  464. package/dist/exports/clean.test.native.js +0 -88
  465. package/dist/exports/clean.test.native.js.map +0 -1
  466. package/dist/exports/loadEnv.test.mjs +0 -65
  467. package/dist/exports/loadEnv.test.mjs.map +0 -1
  468. package/dist/exports/loadEnv.test.native.js +0 -65
  469. package/dist/exports/loadEnv.test.native.js.map +0 -1
  470. package/dist/index.js.map +0 -1
  471. package/dist/index.mjs.map +0 -1
  472. package/dist/index.native.js.map +0 -1
  473. package/dist/plugins/autoDepOptimizePlugin.test.mjs +0 -31
  474. package/dist/plugins/autoDepOptimizePlugin.test.mjs.map +0 -1
  475. package/dist/plugins/autoDepOptimizePlugin.test.native.js +0 -39
  476. package/dist/plugins/autoDepOptimizePlugin.test.native.js.map +0 -1
  477. package/dist/plugins/expoManifestRequestHandlerPlugin.mjs +0 -189
  478. package/dist/plugins/expoManifestRequestHandlerPlugin.mjs.map +0 -1
  479. package/dist/plugins/expoManifestRequestHandlerPlugin.native.js +0 -202
  480. package/dist/plugins/expoManifestRequestHandlerPlugin.native.js.map +0 -1
  481. package/dist/plugins/resolveIdScan.test.mjs +0 -31
  482. package/dist/plugins/resolveIdScan.test.mjs.map +0 -1
  483. package/dist/plugins/resolveIdScan.test.native.js +0 -38
  484. package/dist/plugins/resolveIdScan.test.native.js.map +0 -1
  485. package/dist/plugins/rnCodegenPlugin.test.mjs +0 -239
  486. package/dist/plugins/rnCodegenPlugin.test.mjs.map +0 -1
  487. package/dist/plugins/rnCodegenPlugin.test.native.js +0 -242
  488. package/dist/plugins/rnCodegenPlugin.test.native.js.map +0 -1
  489. package/dist/plugins/serverExtensions.test.mjs +0 -106
  490. package/dist/plugins/serverExtensions.test.mjs.map +0 -1
  491. package/dist/plugins/serverExtensions.test.native.js +0 -117
  492. package/dist/plugins/serverExtensions.test.native.js.map +0 -1
  493. package/dist/runtime/hmr-types.mjs.map +0 -1
  494. package/dist/runtime/hmr-types.native.js.map +0 -1
  495. package/dist/serve/node.test.mjs +0 -60
  496. package/dist/serve/node.test.mjs.map +0 -1
  497. package/dist/serve/node.test.native.js +0 -72
  498. package/dist/serve/node.test.native.js.map +0 -1
  499. package/dist/types.mjs.map +0 -1
  500. package/dist/types.native.js.map +0 -1
  501. package/dist/utils/bindKeypressInput.test.mjs +0 -48
  502. package/dist/utils/bindKeypressInput.test.mjs.map +0 -1
  503. package/dist/utils/bindKeypressInput.test.native.js +0 -48
  504. package/dist/utils/bindKeypressInput.test.native.js.map +0 -1
  505. package/dist/utils/createNativeDevEngine.test.mjs +0 -1788
  506. package/dist/utils/createNativeDevEngine.test.mjs.map +0 -1
  507. package/dist/utils/createNativeDevEngine.test.native.js +0 -1942
  508. package/dist/utils/createNativeDevEngine.test.native.js.map +0 -1
  509. package/dist/utils/createNativeDevEngineFailure.test.mjs +0 -44
  510. package/dist/utils/createNativeDevEngineFailure.test.mjs.map +0 -1
  511. package/dist/utils/createNativeDevEngineFailure.test.native.js +0 -54
  512. package/dist/utils/createNativeDevEngineFailure.test.native.js.map +0 -1
  513. package/dist/utils/expoRun.mjs +0 -48
  514. package/dist/utils/expoRun.mjs.map +0 -1
  515. package/dist/utils/expoRun.native.js +0 -49
  516. package/dist/utils/expoRun.native.js.map +0 -1
  517. package/dist/utils/getBoundPort.test.mjs +0 -71
  518. package/dist/utils/getBoundPort.test.mjs.map +0 -1
  519. package/dist/utils/getBoundPort.test.native.js +0 -82
  520. package/dist/utils/getBoundPort.test.native.js.map +0 -1
  521. package/dist/utils/imageSizePatch.test.mjs +0 -29
  522. package/dist/utils/imageSizePatch.test.mjs.map +0 -1
  523. package/dist/utils/imageSizePatch.test.native.js +0 -30
  524. package/dist/utils/imageSizePatch.test.native.js.map +0 -1
  525. package/dist/utils/patches.test.mjs +0 -242
  526. package/dist/utils/patches.test.mjs.map +0 -1
  527. package/dist/utils/patches.test.native.js +0 -271
  528. package/dist/utils/patches.test.native.js.map +0 -1
  529. package/dist/utils/symbolicateNativeStack.test.mjs +0 -96
  530. package/dist/utils/symbolicateNativeStack.test.mjs.map +0 -1
  531. package/dist/utils/symbolicateNativeStack.test.native.js +0 -96
  532. package/dist/utils/symbolicateNativeStack.test.native.js.map +0 -1
  533. package/dist/vendor/debugger-app/index.mjs.map +0 -1
  534. package/dist/vendor/debugger-app/index.native.js.map +0 -1
  535. package/dist/vendor/debugger-app/src/debuggerWorker.mjs.map +0 -1
  536. package/dist/vendor/debugger-app/src/debuggerWorker.native.js.map +0 -1
  537. package/dist/vendor/debugger-app/src/index.mjs.map +0 -1
  538. package/dist/vendor/debugger-app/src/index.native.js.map +0 -1
  539. package/expo-js-native-debugging-plugin.cjs +0 -241
  540. package/src/plugins/expoManifestRequestHandlerPlugin.ts +0 -260
  541. package/src/utils/expoRun.ts +0 -71
  542. package/types/config/getOptimizeDeps.test.d.ts +0 -2
  543. package/types/config/getOptimizeDeps.test.d.ts.map +0 -1
  544. package/types/config/getServerOptionsFilled.test.d.ts +0 -2
  545. package/types/config/getServerOptionsFilled.test.d.ts.map +0 -1
  546. package/types/config/getViteServerConfig.test.d.ts +0 -2
  547. package/types/config/getViteServerConfig.test.d.ts.map +0 -1
  548. package/types/config/mergeUserConfig.test.d.ts +0 -2
  549. package/types/config/mergeUserConfig.test.d.ts.map +0 -1
  550. package/types/exports/clean.test.d.ts +0 -2
  551. package/types/exports/clean.test.d.ts.map +0 -1
  552. package/types/exports/loadEnv.test.d.ts +0 -2
  553. package/types/exports/loadEnv.test.d.ts.map +0 -1
  554. package/types/plugins/autoDepOptimizePlugin.test.d.ts +0 -2
  555. package/types/plugins/autoDepOptimizePlugin.test.d.ts.map +0 -1
  556. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts +0 -8
  557. package/types/plugins/expoManifestRequestHandlerPlugin.d.ts.map +0 -1
  558. package/types/plugins/resolveIdScan.test.d.ts +0 -2
  559. package/types/plugins/resolveIdScan.test.d.ts.map +0 -1
  560. package/types/plugins/rnCodegenPlugin.test.d.ts +0 -2
  561. package/types/plugins/rnCodegenPlugin.test.d.ts.map +0 -1
  562. package/types/plugins/serverExtensions.test.d.ts +0 -2
  563. package/types/plugins/serverExtensions.test.d.ts.map +0 -1
  564. package/types/serve/node.test.d.ts +0 -2
  565. package/types/serve/node.test.d.ts.map +0 -1
  566. package/types/utils/bindKeypressInput.test.d.ts +0 -2
  567. package/types/utils/bindKeypressInput.test.d.ts.map +0 -1
  568. package/types/utils/createNativeDevEngine.test.d.ts +0 -2
  569. package/types/utils/createNativeDevEngine.test.d.ts.map +0 -1
  570. package/types/utils/createNativeDevEngineFailure.test.d.ts +0 -2
  571. package/types/utils/createNativeDevEngineFailure.test.d.ts.map +0 -1
  572. package/types/utils/expoRun.d.ts +0 -6
  573. package/types/utils/expoRun.d.ts.map +0 -1
  574. package/types/utils/getBoundPort.test.d.ts +0 -2
  575. package/types/utils/getBoundPort.test.d.ts.map +0 -1
  576. package/types/utils/imageSizePatch.test.d.ts +0 -2
  577. package/types/utils/imageSizePatch.test.d.ts.map +0 -1
  578. package/types/utils/patches.test.d.ts +0 -2
  579. package/types/utils/patches.test.d.ts.map +0 -1
  580. package/types/utils/symbolicateNativeStack.test.d.ts +0 -2
  581. package/types/utils/symbolicateNativeStack.test.d.ts.map +0 -1
@@ -0,0 +1,145 @@
1
+ import MagicString from "magic-string";
2
+ import { parse } from "sucrase/dist/parser/index.js";
3
+ import { IdentifierRole } from "sucrase/dist/parser/tokenizer/index.js";
4
+ import { TokenType } from "sucrase/dist/parser/tokenizer/types.js";
5
+
6
+ const marker = ".__one_background_worker_";
7
+ const hex = (name) => [...new TextEncoder().encode(name)].map((byte) => byte.toString(16).padStart(2, "0")).join("");
8
+ function loadBackgroundComputationModule(id) {
9
+ const match = id.match(/^(.*?)\.__one_background_worker_([a-f0-9]+)\.js(?:\?.*)?$/);
10
+ if (!match) return;
11
+ const [, calculate, encoded] = match;
12
+ const name = new TextDecoder().decode(Uint8Array.from(encoded.match(/../g), (byte) => Number.parseInt(byte, 16)));
13
+ return {
14
+ id,
15
+ calculate,
16
+ name,
17
+ platform: "web",
18
+ source: `import { ${name} as calculate } from ${JSON.stringify(calculate)};
19
+ self.onmessage = ({ data: { revision, input } }) => {
20
+ try {
21
+ const value = calculate(input);
22
+ if (value instanceof Promise) throw new TypeError('background computations must be synchronous');
23
+ self.postMessage({ ok: true, result: { revision, value } });
24
+ } catch (error) {
25
+ self.postMessage({ ok: false, revision, error: String(error) });
26
+ }
27
+ };`
28
+ };
29
+ }
30
+ function transformBackgroundComputations(source, id, options) {
31
+ if (!source.includes("defineBackgroundComputation") || id.includes(marker)) return;
32
+ const file = parse(source, !/\.[cm]?ts(?:\?|$)/.test(id), /\.[cm]?tsx?(?:\?|$)/.test(id), false);
33
+ const { tokens } = file;
34
+ const text = (index) => tokens[index] ? source.slice(tokens[index].start, tokens[index].end) : "";
35
+ const imports = /* @__PURE__ */ new Map();
36
+ const definitions = /* @__PURE__ */ new Set();
37
+ for (let index = 0; index < tokens.length; index++) {
38
+ if (text(index) !== "import" || tokens[index].isType || text(index + 1) !== "{") continue;
39
+ const start = index + 2;
40
+ let end = start;
41
+ while (end < tokens.length && text(end) !== "}") end++;
42
+ if (text(end + 1) !== "from" || tokens[end + 2]?.type !== TokenType.string) continue;
43
+ const specifier = text(end + 2).slice(1, -1);
44
+ for (let binding = start; binding < end; binding++) {
45
+ if (tokens[binding].isType || tokens[binding].type !== TokenType.name) continue;
46
+ const name = text(binding);
47
+ const local = text(binding + 1) === "as" ? text(binding + 2) : name;
48
+ imports.set(local, {
49
+ source: specifier,
50
+ name
51
+ });
52
+ if (specifier === "one/background" && name === "defineBackgroundComputation") definitions.add(local);
53
+ if (local !== name) binding += 2;
54
+ }
55
+ index = end + 2;
56
+ }
57
+ if (!definitions.size) return;
58
+ const code = new MagicString(source);
59
+ const modules = [];
60
+ for (let index = 0; index < tokens.length; index++) {
61
+ const token = tokens[index];
62
+ if (token.identifierRole !== IdentifierRole.Access || !definitions.has(text(index))) continue;
63
+ let opening = index + 1;
64
+ while (tokens[opening]?.isType) opening++;
65
+ if (text(opening) !== "(") continue;
66
+ let binding = index - 2;
67
+ while (tokens[binding]?.isType) binding--;
68
+ if (token.scopeDepth !== 0 || text(index - 1) !== "=" || tokens[binding]?.identifierRole !== IdentifierRole.TopLevelDeclaration) throw new Error(`[one background] ${id}: definitions must be module-scope variables`);
69
+ const argument = tokens[opening + 1];
70
+ const calculate = argument?.type === TokenType.name ? imports.get(text(opening + 1)) : void 0;
71
+ if (!calculate || !calculate.source.startsWith(".") || text(opening + 2) !== ")") throw new Error(`[one background] ${id}: defineBackgroundComputation requires one named import from a relative pure module at module scope`);
72
+ const resolved = options.resolve(calculate.source, id);
73
+ if (options.platform === "native") {
74
+ const local = `__oneBackgroundCalculate${modules.length}`;
75
+ const module = {
76
+ id: `${resolved}.__one_background_native_${hex(calculate.name)}.js`,
77
+ source: `export { ${calculate.name} } from ${JSON.stringify(resolved)};`,
78
+ calculate: resolved,
79
+ name: calculate.name,
80
+ platform: "native"
81
+ };
82
+ const selected = options.nativeModule ? options.nativeModule(module) : `${calculate.source}?one-background=${encodeURIComponent(calculate.name)}`;
83
+ code.prepend(`import { ${calculate.name} as ${local} } from ${JSON.stringify(selected)};
84
+ `);
85
+ code.overwrite(argument.start, argument.end, local);
86
+ modules.push(module);
87
+ } else {
88
+ const module = loadBackgroundComputationModule(`${resolved}${marker}${hex(calculate.name)}.js`);
89
+ const factory = options.workerFactory ? options.workerFactory(module) : `() => new Worker(new URL(${JSON.stringify(module.id)}, import.meta.url), { type: 'module' })`;
90
+ code.appendLeft(tokens[opening + 2].start, `, ${factory}`);
91
+ modules.push(module);
92
+ }
93
+ }
94
+ if (!modules.length) return;
95
+ return {
96
+ code: code.toString(),
97
+ map: code.generateMap({ hires: true }),
98
+ modules
99
+ };
100
+ }
101
+ function createBackgroundWorkletModule(bundle, names, key) {
102
+ const loader = `__oneLoadWorkletModule_${key}`;
103
+ return `function ${loader}() {
104
+ 'worklet';
105
+ const cache = globalThis.__oneWorkletImportCache || (globalThis.__oneWorkletImportCache = new WeakMap());
106
+ let namespace = cache.get(${loader});
107
+ if (namespace === undefined) {
108
+ ${bundle}
109
+ namespace = __oneWorkletBundle;
110
+ cache.set(${loader}, namespace);
111
+ }
112
+ return namespace;
113
+ }
114
+ ${names.map((name, index) => `function __oneExport${index}(...args) {
115
+ 'worklet';
116
+ return (0, ${loader}().__export${index})(...args);
117
+ }
118
+ export { __oneExport${index} as ${name} };`).join("\n")}`;
119
+ }
120
+ function assertBackgroundDependency(source) {
121
+ const name = source.replaceAll("\\", "/");
122
+ if (name.startsWith("node:") || /(?:^|\/node_modules\/)(?:react|react-native|react-native-worklets|react-native-reanimated|@react-native)(?:\/|$)/.test(name)) throw new Error(`[one background] runtime dependency ${source} is not pure JavaScript`);
123
+ }
124
+ function bundleBackgroundGraph(modules, entry, names) {
125
+ return `var __oneWorkletBundle = (function () {
126
+ const factories = { ${modules.map((module) => `${module.id}: function(global, _require, _importDefault, _importAll, module, exports, _dependencyMap) {
127
+ ${module.code}
128
+ }`).join(",\n")} };
129
+ const dependencies = ${JSON.stringify(Object.fromEntries(modules.map((module) => [module.id, module.dependencies])))};
130
+ const cache = Object.create(null);
131
+ function require(id) {
132
+ if (cache[id]) return cache[id].exports;
133
+ const module = cache[id] = { exports: {} };
134
+ factories[id](globalThis, require, importDefault, importAll, module, module.exports, dependencies[id]);
135
+ return module.exports;
136
+ }
137
+ function importDefault(id) { const value = require(id); return value && value.__esModule ? value.default : value; }
138
+ function importAll(id) { const value = require(id); return value && value.__esModule ? value : Object.assign({ default: value }, value); }
139
+ const namespace = require(${entry});
140
+ return { ${names.map((name, index) => `__export${index}: namespace[${JSON.stringify(name)}]`).join(", ")} };
141
+ })();`;
142
+ }
143
+
144
+ export { assertBackgroundDependency, bundleBackgroundGraph, createBackgroundWorkletModule, loadBackgroundComputationModule, transformBackgroundComputations };
145
+ //# sourceMappingURL=backgroundComputation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backgroundComputation.js","names":[],"sources":["backgroundComputation.js"],"sourcesContent":["import MagicString from \"magic-string\";\nimport { parse } from \"sucrase/dist/parser/index.js\";\nimport { IdentifierRole } from \"sucrase/dist/parser/tokenizer/index.js\";\nimport { TokenType } from \"sucrase/dist/parser/tokenizer/types.js\";\nconst marker = \".__one_background_worker_\";\nconst hex = (name) => [...new TextEncoder().encode(name)].map((byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\nfunction loadBackgroundComputationModule(id) {\n const match = id.match(/^(.*?)\\.__one_background_worker_([a-f0-9]+)\\.js(?:\\?.*)?$/);\n if (!match) return;\n const [, calculate, encoded] = match;\n const name = new TextDecoder().decode(\n Uint8Array.from(encoded.match(/../g), (byte) => Number.parseInt(byte, 16))\n );\n return {\n id,\n calculate,\n name,\n platform: \"web\",\n source: `import { ${name} as calculate } from ${JSON.stringify(calculate)};\nself.onmessage = ({ data: { revision, input } }) => {\n try {\n const value = calculate(input);\n if (value instanceof Promise) throw new TypeError('background computations must be synchronous');\n self.postMessage({ ok: true, result: { revision, value } });\n } catch (error) {\n self.postMessage({ ok: false, revision, error: String(error) });\n }\n};`\n };\n}\nfunction transformBackgroundComputations(source, id, options) {\n if (!source.includes(\"defineBackgroundComputation\") || id.includes(marker)) return;\n const file = parse(\n source,\n !/\\.[cm]?ts(?:\\?|$)/.test(id),\n /\\.[cm]?tsx?(?:\\?|$)/.test(id),\n false\n );\n const { tokens } = file;\n const text = (index) => tokens[index] ? source.slice(tokens[index].start, tokens[index].end) : \"\";\n const imports = /* @__PURE__ */ new Map();\n const definitions = /* @__PURE__ */ new Set();\n for (let index = 0; index < tokens.length; index++) {\n if (text(index) !== \"import\" || tokens[index].isType || text(index + 1) !== \"{\")\n continue;\n const start = index + 2;\n let end = start;\n while (end < tokens.length && text(end) !== \"}\") end++;\n if (text(end + 1) !== \"from\" || tokens[end + 2]?.type !== TokenType.string) continue;\n const specifier = text(end + 2).slice(1, -1);\n for (let binding = start; binding < end; binding++) {\n if (tokens[binding].isType || tokens[binding].type !== TokenType.name) continue;\n const name = text(binding);\n const local = text(binding + 1) === \"as\" ? text(binding + 2) : name;\n imports.set(local, { source: specifier, name });\n if (specifier === \"one/background\" && name === \"defineBackgroundComputation\")\n definitions.add(local);\n if (local !== name) binding += 2;\n }\n index = end + 2;\n }\n if (!definitions.size) return;\n const code = new MagicString(source);\n const modules = [];\n for (let index = 0; index < tokens.length; index++) {\n const token = tokens[index];\n if (token.identifierRole !== IdentifierRole.Access || !definitions.has(text(index)))\n continue;\n let opening = index + 1;\n while (tokens[opening]?.isType) opening++;\n if (text(opening) !== \"(\") continue;\n let binding = index - 2;\n while (tokens[binding]?.isType) binding--;\n if (token.scopeDepth !== 0 || text(index - 1) !== \"=\" || tokens[binding]?.identifierRole !== IdentifierRole.TopLevelDeclaration)\n throw new Error(\n `[one background] ${id}: definitions must be module-scope variables`\n );\n const argument = tokens[opening + 1];\n const calculate = argument?.type === TokenType.name ? imports.get(text(opening + 1)) : void 0;\n if (!calculate || !calculate.source.startsWith(\".\") || text(opening + 2) !== \")\")\n throw new Error(\n `[one background] ${id}: defineBackgroundComputation requires one named import from a relative pure module at module scope`\n );\n const resolved = options.resolve(calculate.source, id);\n if (options.platform === \"native\") {\n const local = `__oneBackgroundCalculate${modules.length}`;\n const module = {\n id: `${resolved}.__one_background_native_${hex(calculate.name)}.js`,\n source: `export { ${calculate.name} } from ${JSON.stringify(resolved)};`,\n calculate: resolved,\n name: calculate.name,\n platform: \"native\"\n };\n const selected = options.nativeModule ? options.nativeModule(module) : `${calculate.source}?one-background=${encodeURIComponent(calculate.name)}`;\n code.prepend(\n `import { ${calculate.name} as ${local} } from ${JSON.stringify(selected)};\n`\n );\n code.overwrite(argument.start, argument.end, local);\n modules.push(module);\n } else {\n const module = loadBackgroundComputationModule(\n `${resolved}${marker}${hex(calculate.name)}.js`\n );\n const factory = options.workerFactory ? options.workerFactory(module) : `() => new Worker(new URL(${JSON.stringify(module.id)}, import.meta.url), { type: 'module' })`;\n code.appendLeft(tokens[opening + 2].start, `, ${factory}`);\n modules.push(module);\n }\n }\n if (!modules.length) return;\n return { code: code.toString(), map: code.generateMap({ hires: true }), modules };\n}\nfunction createBackgroundWorkletModule(bundle, names, key) {\n const loader = `__oneLoadWorkletModule_${key}`;\n return `function ${loader}() {\n 'worklet';\n const cache = globalThis.__oneWorkletImportCache || (globalThis.__oneWorkletImportCache = new WeakMap());\n let namespace = cache.get(${loader});\n if (namespace === undefined) {\n ${bundle}\n namespace = __oneWorkletBundle;\n cache.set(${loader}, namespace);\n }\n return namespace;\n}\n${names.map(\n (name, index) => `function __oneExport${index}(...args) {\n 'worklet';\n return (0, ${loader}().__export${index})(...args);\n}\nexport { __oneExport${index} as ${name} };`\n ).join(\"\\n\")}`;\n}\nfunction assertBackgroundDependency(source) {\n const name = source.replaceAll(\"\\\\\", \"/\");\n if (name.startsWith(\"node:\") || /(?:^|\\/node_modules\\/)(?:react|react-native|react-native-worklets|react-native-reanimated|@react-native)(?:\\/|$)/.test(\n name\n ))\n throw new Error(\n `[one background] runtime dependency ${source} is not pure JavaScript`\n );\n}\nfunction bundleBackgroundGraph(modules, entry, names) {\n return `var __oneWorkletBundle = (function () {\n const factories = { ${modules.map((module) => `${module.id}: function(global, _require, _importDefault, _importAll, module, exports, _dependencyMap) {\n${module.code}\n}`).join(\",\\n\")} };\n const dependencies = ${JSON.stringify(Object.fromEntries(modules.map((module) => [module.id, module.dependencies])))};\n const cache = Object.create(null);\n function require(id) {\n if (cache[id]) return cache[id].exports;\n const module = cache[id] = { exports: {} };\n factories[id](globalThis, require, importDefault, importAll, module, module.exports, dependencies[id]);\n return module.exports;\n }\n function importDefault(id) { const value = require(id); return value && value.__esModule ? value.default : value; }\n function importAll(id) { const value = require(id); return value && value.__esModule ? value : Object.assign({ default: value }, value); }\n const namespace = require(${entry});\n return { ${names.map((name, index) => `__export${index}: namespace[${JSON.stringify(name)}]`).join(\", \")} };\n})();`;\n}\nexport {\n assertBackgroundDependency,\n bundleBackgroundGraph,\n createBackgroundWorkletModule,\n loadBackgroundComputationModule,\n transformBackgroundComputations\n};\n//# sourceMappingURL=backgroundComputation.js.map\n"],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ import MagicString from "magic-string";
2
+ import { parse } from "sucrase/dist/parser/index.js";
3
+ import { IdentifierRole } from "sucrase/dist/parser/tokenizer/index.js";
4
+ import { TokenType } from "sucrase/dist/parser/tokenizer/types.js";
5
+
6
+ var marker = ".__one_background_worker_";
7
+ var hex = function(name) {
8
+ return [...new TextEncoder().encode(name)].map(function(byte) {
9
+ return byte.toString(16).padStart(2, "0");
10
+ }).join("");
11
+ };
12
+ function loadBackgroundComputationModule(id) {
13
+ var match = id.match(/^(.*?)\.__one_background_worker_([a-f0-9]+)\.js(?:\?.*)?$/);
14
+ if (!match) return;
15
+ var [, calculate, encoded] = match;
16
+ var name = new TextDecoder().decode(Uint8Array.from(encoded.match(/../g), function(byte) {
17
+ return Number.parseInt(byte, 16);
18
+ }));
19
+ return {
20
+ id,
21
+ calculate,
22
+ name,
23
+ platform: "web",
24
+ source: `import { ${name} as calculate } from ${JSON.stringify(calculate)};
25
+ self.onmessage = ({ data: { revision, input } }) => {
26
+ try {
27
+ const value = calculate(input);
28
+ if (value instanceof Promise) throw new TypeError('background computations must be synchronous');
29
+ self.postMessage({ ok: true, result: { revision, value } });
30
+ } catch (error) {
31
+ self.postMessage({ ok: false, revision, error: String(error) });
32
+ }
33
+ };`
34
+ };
35
+ }
36
+ function transformBackgroundComputations(source, id, options) {
37
+ if (!source.includes("defineBackgroundComputation") || id.includes(marker)) return;
38
+ var file = parse(source, !/\.[cm]?ts(?:\?|$)/.test(id), /\.[cm]?tsx?(?:\?|$)/.test(id), false);
39
+ var { tokens } = file;
40
+ var text = function(index2) {
41
+ return tokens[index2] ? source.slice(tokens[index2].start, tokens[index2].end) : "";
42
+ };
43
+ var imports = /* @__PURE__ */ new Map();
44
+ var definitions = /* @__PURE__ */ new Set();
45
+ for (var index = 0; index < tokens.length; index++) {
46
+ var _tokens_;
47
+ if (text(index) !== "import" || tokens[index].isType || text(index + 1) !== "{") continue;
48
+ var start = index + 2;
49
+ var end = start;
50
+ while (end < tokens.length && text(end) !== "}") end++;
51
+ if (text(end + 1) !== "from" || ((_tokens_ = tokens[end + 2]) === null || _tokens_ === void 0 ? void 0 : _tokens_.type) !== TokenType.string) continue;
52
+ var specifier = text(end + 2).slice(1, -1);
53
+ for (var binding = start; binding < end; binding++) {
54
+ if (tokens[binding].isType || tokens[binding].type !== TokenType.name) continue;
55
+ var name = text(binding);
56
+ var local = text(binding + 1) === "as" ? text(binding + 2) : name;
57
+ imports.set(local, {
58
+ source: specifier,
59
+ name
60
+ });
61
+ if (specifier === "one/background" && name === "defineBackgroundComputation") definitions.add(local);
62
+ if (local !== name) binding += 2;
63
+ }
64
+ index = end + 2;
65
+ }
66
+ if (!definitions.size) return;
67
+ var code = new MagicString(source);
68
+ var modules = [];
69
+ for (var index1 = 0; index1 < tokens.length; index1++) {
70
+ var _tokens_opening, _tokens_binding, _tokens_binding1;
71
+ var token = tokens[index1];
72
+ if (token.identifierRole !== IdentifierRole.Access || !definitions.has(text(index1))) continue;
73
+ var opening = index1 + 1;
74
+ while ((_tokens_opening = tokens[opening]) === null || _tokens_opening === void 0 ? void 0 : _tokens_opening.isType) opening++;
75
+ if (text(opening) !== "(") continue;
76
+ var binding1 = index1 - 2;
77
+ while ((_tokens_binding = tokens[binding1]) === null || _tokens_binding === void 0 ? void 0 : _tokens_binding.isType) binding1--;
78
+ if (token.scopeDepth !== 0 || text(index1 - 1) !== "=" || ((_tokens_binding1 = tokens[binding1]) === null || _tokens_binding1 === void 0 ? void 0 : _tokens_binding1.identifierRole) !== IdentifierRole.TopLevelDeclaration) throw new Error(`[one background] ${id}: definitions must be module-scope variables`);
79
+ var argument = tokens[opening + 1];
80
+ var calculate = (argument === null || argument === void 0 ? void 0 : argument.type) === TokenType.name ? imports.get(text(opening + 1)) : void 0;
81
+ if (!calculate || !calculate.source.startsWith(".") || text(opening + 2) !== ")") throw new Error(`[one background] ${id}: defineBackgroundComputation requires one named import from a relative pure module at module scope`);
82
+ var resolved = options.resolve(calculate.source, id);
83
+ if (options.platform === "native") {
84
+ var local1 = `__oneBackgroundCalculate${modules.length}`;
85
+ var module = {
86
+ id: `${resolved}.__one_background_native_${hex(calculate.name)}.js`,
87
+ source: `export { ${calculate.name} } from ${JSON.stringify(resolved)};`,
88
+ calculate: resolved,
89
+ name: calculate.name,
90
+ platform: "native"
91
+ };
92
+ var selected = options.nativeModule ? options.nativeModule(module) : `${calculate.source}?one-background=${encodeURIComponent(calculate.name)}`;
93
+ code.prepend(`import { ${calculate.name} as ${local1} } from ${JSON.stringify(selected)};
94
+ `);
95
+ code.overwrite(argument.start, argument.end, local1);
96
+ modules.push(module);
97
+ } else {
98
+ var module1 = loadBackgroundComputationModule(`${resolved}${marker}${hex(calculate.name)}.js`);
99
+ var factory = options.workerFactory ? options.workerFactory(module1) : `() => new Worker(new URL(${JSON.stringify(module1.id)}, import.meta.url), { type: 'module' })`;
100
+ code.appendLeft(tokens[opening + 2].start, `, ${factory}`);
101
+ modules.push(module1);
102
+ }
103
+ }
104
+ if (!modules.length) return;
105
+ return {
106
+ code: code.toString(),
107
+ map: code.generateMap({ hires: true }),
108
+ modules
109
+ };
110
+ }
111
+ function createBackgroundWorkletModule(bundle, names, key) {
112
+ var loader = `__oneLoadWorkletModule_${key}`;
113
+ return `function ${loader}() {
114
+ 'worklet';
115
+ const cache = globalThis.__oneWorkletImportCache || (globalThis.__oneWorkletImportCache = new WeakMap());
116
+ let namespace = cache.get(${loader});
117
+ if (namespace === undefined) {
118
+ ${bundle}
119
+ namespace = __oneWorkletBundle;
120
+ cache.set(${loader}, namespace);
121
+ }
122
+ return namespace;
123
+ }
124
+ ${names.map(function(name, index) {
125
+ return `function __oneExport${index}(...args) {
126
+ 'worklet';
127
+ return (0, ${loader}().__export${index})(...args);
128
+ }
129
+ export { __oneExport${index} as ${name} };`;
130
+ }).join("\n")}`;
131
+ }
132
+ function assertBackgroundDependency(source) {
133
+ var name = source.replaceAll("\\", "/");
134
+ if (name.startsWith("node:") || /(?:^|\/node_modules\/)(?:react|react-native|react-native-worklets|react-native-reanimated|@react-native)(?:\/|$)/.test(name)) throw new Error(`[one background] runtime dependency ${source} is not pure JavaScript`);
135
+ }
136
+ function bundleBackgroundGraph(modules, entry, names) {
137
+ return `var __oneWorkletBundle = (function () {
138
+ const factories = { ${modules.map(function(module) {
139
+ return `${module.id}: function(global, _require, _importDefault, _importAll, module, exports, _dependencyMap) {
140
+ ${module.code}
141
+ }`;
142
+ }).join(",\n")} };
143
+ const dependencies = ${JSON.stringify(Object.fromEntries(modules.map(function(module) {
144
+ return [module.id, module.dependencies];
145
+ })))};
146
+ const cache = Object.create(null);
147
+ function require(id) {
148
+ if (cache[id]) return cache[id].exports;
149
+ const module = cache[id] = { exports: {} };
150
+ factories[id](globalThis, require, importDefault, importAll, module, module.exports, dependencies[id]);
151
+ return module.exports;
152
+ }
153
+ function importDefault(id) { const value = require(id); return value && value.__esModule ? value.default : value; }
154
+ function importAll(id) { const value = require(id); return value && value.__esModule ? value : Object.assign({ default: value }, value); }
155
+ const namespace = require(${entry});
156
+ return { ${names.map(function(name, index) {
157
+ return `__export${index}: namespace[${JSON.stringify(name)}]`;
158
+ }).join(", ")} };
159
+ })();`;
160
+ }
161
+
162
+ export { assertBackgroundDependency, bundleBackgroundGraph, createBackgroundWorkletModule, loadBackgroundComputationModule, transformBackgroundComputations };
163
+ //# sourceMappingURL=backgroundComputation.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backgroundComputation.native.js","names":[],"sources":["backgroundComputation.native.js"],"sourcesContent":["import MagicString from \"magic-string\";\nimport { parse } from \"sucrase/dist/parser/index.js\";\nimport { IdentifierRole } from \"sucrase/dist/parser/tokenizer/index.js\";\nimport { TokenType } from \"sucrase/dist/parser/tokenizer/types.js\";\nvar marker = \".__one_background_worker_\";\nvar hex = function(name) {\n return [\n ...new TextEncoder().encode(name)\n ].map(function(byte) {\n return byte.toString(16).padStart(2, \"0\");\n }).join(\"\");\n};\nfunction loadBackgroundComputationModule(id) {\n var match = id.match(/^(.*?)\\.__one_background_worker_([a-f0-9]+)\\.js(?:\\?.*)?$/);\n if (!match) return;\n var [, calculate, encoded] = match;\n var name = new TextDecoder().decode(Uint8Array.from(encoded.match(/../g), function(byte) {\n return Number.parseInt(byte, 16);\n }));\n return {\n id,\n calculate,\n name,\n platform: \"web\",\n source: `import { ${name} as calculate } from ${JSON.stringify(calculate)};\nself.onmessage = ({ data: { revision, input } }) => {\n try {\n const value = calculate(input);\n if (value instanceof Promise) throw new TypeError('background computations must be synchronous');\n self.postMessage({ ok: true, result: { revision, value } });\n } catch (error) {\n self.postMessage({ ok: false, revision, error: String(error) });\n }\n};`\n };\n}\nfunction transformBackgroundComputations(source, id, options) {\n if (!source.includes(\"defineBackgroundComputation\") || id.includes(marker)) return;\n var file = parse(source, !/\\.[cm]?ts(?:\\?|$)/.test(id), /\\.[cm]?tsx?(?:\\?|$)/.test(id), false);\n var { tokens } = file;\n var text = function(index2) {\n return tokens[index2] ? source.slice(tokens[index2].start, tokens[index2].end) : \"\";\n };\n var imports = /* @__PURE__ */ new Map();\n var definitions = /* @__PURE__ */ new Set();\n for (var index = 0; index < tokens.length; index++) {\n var _tokens_;\n if (text(index) !== \"import\" || tokens[index].isType || text(index + 1) !== \"{\") continue;\n var start = index + 2;\n var end = start;\n while (end < tokens.length && text(end) !== \"}\") end++;\n if (text(end + 1) !== \"from\" || ((_tokens_ = tokens[end + 2]) === null || _tokens_ === void 0 ? void 0 : _tokens_.type) !== TokenType.string) continue;\n var specifier = text(end + 2).slice(1, -1);\n for (var binding = start; binding < end; binding++) {\n if (tokens[binding].isType || tokens[binding].type !== TokenType.name) continue;\n var name = text(binding);\n var local = text(binding + 1) === \"as\" ? text(binding + 2) : name;\n imports.set(local, {\n source: specifier,\n name\n });\n if (specifier === \"one/background\" && name === \"defineBackgroundComputation\") definitions.add(local);\n if (local !== name) binding += 2;\n }\n index = end + 2;\n }\n if (!definitions.size) return;\n var code = new MagicString(source);\n var modules = [];\n for (var index1 = 0; index1 < tokens.length; index1++) {\n var _tokens_opening, _tokens_binding, _tokens_binding1;\n var token = tokens[index1];\n if (token.identifierRole !== IdentifierRole.Access || !definitions.has(text(index1))) continue;\n var opening = index1 + 1;\n while ((_tokens_opening = tokens[opening]) === null || _tokens_opening === void 0 ? void 0 : _tokens_opening.isType) opening++;\n if (text(opening) !== \"(\") continue;\n var binding1 = index1 - 2;\n while ((_tokens_binding = tokens[binding1]) === null || _tokens_binding === void 0 ? void 0 : _tokens_binding.isType) binding1--;\n if (token.scopeDepth !== 0 || text(index1 - 1) !== \"=\" || ((_tokens_binding1 = tokens[binding1]) === null || _tokens_binding1 === void 0 ? void 0 : _tokens_binding1.identifierRole) !== IdentifierRole.TopLevelDeclaration) throw new Error(`[one background] ${id}: definitions must be module-scope variables`);\n var argument = tokens[opening + 1];\n var calculate = (argument === null || argument === void 0 ? void 0 : argument.type) === TokenType.name ? imports.get(text(opening + 1)) : void 0;\n if (!calculate || !calculate.source.startsWith(\".\") || text(opening + 2) !== \")\") throw new Error(`[one background] ${id}: defineBackgroundComputation requires one named import from a relative pure module at module scope`);\n var resolved = options.resolve(calculate.source, id);\n if (options.platform === \"native\") {\n var local1 = `__oneBackgroundCalculate${modules.length}`;\n var module = {\n id: `${resolved}.__one_background_native_${hex(calculate.name)}.js`,\n source: `export { ${calculate.name} } from ${JSON.stringify(resolved)};`,\n calculate: resolved,\n name: calculate.name,\n platform: \"native\"\n };\n var selected = options.nativeModule ? options.nativeModule(module) : `${calculate.source}?one-background=${encodeURIComponent(calculate.name)}`;\n code.prepend(`import { ${calculate.name} as ${local1} } from ${JSON.stringify(selected)};\n`);\n code.overwrite(argument.start, argument.end, local1);\n modules.push(module);\n } else {\n var module1 = loadBackgroundComputationModule(`${resolved}${marker}${hex(calculate.name)}.js`);\n var factory = options.workerFactory ? options.workerFactory(module1) : `() => new Worker(new URL(${JSON.stringify(module1.id)}, import.meta.url), { type: 'module' })`;\n code.appendLeft(tokens[opening + 2].start, `, ${factory}`);\n modules.push(module1);\n }\n }\n if (!modules.length) return;\n return {\n code: code.toString(),\n map: code.generateMap({\n hires: true\n }),\n modules\n };\n}\nfunction createBackgroundWorkletModule(bundle, names, key) {\n var loader = `__oneLoadWorkletModule_${key}`;\n return `function ${loader}() {\n 'worklet';\n const cache = globalThis.__oneWorkletImportCache || (globalThis.__oneWorkletImportCache = new WeakMap());\n let namespace = cache.get(${loader});\n if (namespace === undefined) {\n ${bundle}\n namespace = __oneWorkletBundle;\n cache.set(${loader}, namespace);\n }\n return namespace;\n}\n${names.map(function(name, index) {\n return `function __oneExport${index}(...args) {\n 'worklet';\n return (0, ${loader}().__export${index})(...args);\n}\nexport { __oneExport${index} as ${name} };`;\n }).join(\"\\n\")}`;\n}\nfunction assertBackgroundDependency(source) {\n var name = source.replaceAll(\"\\\\\", \"/\");\n if (name.startsWith(\"node:\") || /(?:^|\\/node_modules\\/)(?:react|react-native|react-native-worklets|react-native-reanimated|@react-native)(?:\\/|$)/.test(name)) throw new Error(`[one background] runtime dependency ${source} is not pure JavaScript`);\n}\nfunction bundleBackgroundGraph(modules, entry, names) {\n return `var __oneWorkletBundle = (function () {\n const factories = { ${modules.map(function(module) {\n return `${module.id}: function(global, _require, _importDefault, _importAll, module, exports, _dependencyMap) {\n${module.code}\n}`;\n }).join(\",\\n\")} };\n const dependencies = ${JSON.stringify(Object.fromEntries(modules.map(function(module) {\n return [\n module.id,\n module.dependencies\n ];\n })))};\n const cache = Object.create(null);\n function require(id) {\n if (cache[id]) return cache[id].exports;\n const module = cache[id] = { exports: {} };\n factories[id](globalThis, require, importDefault, importAll, module, module.exports, dependencies[id]);\n return module.exports;\n }\n function importDefault(id) { const value = require(id); return value && value.__esModule ? value.default : value; }\n function importAll(id) { const value = require(id); return value && value.__esModule ? value : Object.assign({ default: value }, value); }\n const namespace = require(${entry});\n return { ${names.map(function(name, index) {\n return `__export${index}: namespace[${JSON.stringify(name)}]`;\n }).join(\", \")} };\n})();`;\n}\nexport {\n assertBackgroundDependency,\n bundleBackgroundGraph,\n createBackgroundWorkletModule,\n loadBackgroundComputationModule,\n transformBackgroundComputations\n};\n//# sourceMappingURL=backgroundComputation.js.map\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { JS_GLOBALS, getClosureVariables, transformHermesLoops } from "@vxrn/compiler/worklet-utils";
2
+ import { parseSync } from "oxc-parser";
3
+
4
+ function prepareBackgroundWorkletModule(source, id) {
5
+ const code = transformHermesLoops(source, id)?.code ?? source;
6
+ const parsed = parseSync(id, code, { lang: "js" });
7
+ if (parsed.errors.length) throw new Error(parsed.errors[0].message);
8
+ const captures = getClosureVariables(parsed.program.body[0], /* @__PURE__ */ new Set([...JS_GLOBALS, "arguments"]));
9
+ if (captures.length) {
10
+ throw new Error(`[worklet imports] ${id} requires unsupported runtime globals: ${captures.join(", ")}`);
11
+ }
12
+ return code;
13
+ }
14
+
15
+ export { prepareBackgroundWorkletModule };
16
+ //# sourceMappingURL=backgroundComputationNative.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backgroundComputationNative.js","names":[],"sources":["backgroundComputationNative.js"],"sourcesContent":["import {\n getClosureVariables,\n JS_GLOBALS,\n transformHermesLoops\n} from \"@vxrn/compiler/worklet-utils\";\nimport { parseSync } from \"oxc-parser\";\nfunction prepareBackgroundWorkletModule(source, id) {\n const code = transformHermesLoops(source, id)?.code ?? source;\n const parsed = parseSync(id, code, { lang: \"js\" });\n if (parsed.errors.length) throw new Error(parsed.errors[0].message);\n const captures = getClosureVariables(\n parsed.program.body[0],\n /* @__PURE__ */ new Set([...JS_GLOBALS, \"arguments\"])\n );\n if (captures.length) {\n throw new Error(\n `[worklet imports] ${id} requires unsupported runtime globals: ${captures.join(\", \")}`\n );\n }\n return code;\n}\nexport {\n prepareBackgroundWorkletModule\n};\n//# sourceMappingURL=backgroundComputationNative.js.map\n"],"mappings":";;;;AAMA,SAAS,+BAA+B,QAAQ,IAAI;CAClD,MAAM,OAAO,qBAAqB,QAAQ,EAAE,CAAC,EAAE,QAAQ;CACvD,MAAM,SAAS,UAAU,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC;CACjD,IAAI,OAAO,OAAO,QAAQ,MAAM,IAAI,MAAM,OAAO,OAAO,EAAE,CAAC,OAAO;CAClE,MAAM,WAAW,oBACf,OAAO,QAAQ,KAAK,oBACJ,IAAI,IAAI,CAAC,GAAG,YAAY,WAAW,CAAC,CACtD;CACA,IAAI,SAAS,QAAQ;EACnB,MAAM,IAAI,MACR,qBAAqB,GAAG,yCAAyC,SAAS,KAAK,IAAI,GACrF;CACF;CACA,OAAO;AACT"}
@@ -0,0 +1,18 @@
1
+ import { JS_GLOBALS, getClosureVariables, transformHermesLoops } from "@vxrn/compiler/worklet-utils";
2
+ import { parseSync } from "oxc-parser";
3
+
4
+ function prepareBackgroundWorkletModule(source, id) {
5
+ var _ref;
6
+ var _transformHermesLoops;
7
+ var code = (_ref = (_transformHermesLoops = transformHermesLoops(source, id)) === null || _transformHermesLoops === void 0 ? void 0 : _transformHermesLoops.code) !== null && _ref !== void 0 ? _ref : source;
8
+ var parsed = parseSync(id, code, { lang: "js" });
9
+ if (parsed.errors.length) throw new Error(parsed.errors[0].message);
10
+ var captures = getClosureVariables(parsed.program.body[0], /* @__PURE__ */ new Set([...JS_GLOBALS, "arguments"]));
11
+ if (captures.length) {
12
+ throw new Error(`[worklet imports] ${id} requires unsupported runtime globals: ${captures.join(", ")}`);
13
+ }
14
+ return code;
15
+ }
16
+
17
+ export { prepareBackgroundWorkletModule };
18
+ //# sourceMappingURL=backgroundComputationNative.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backgroundComputationNative.native.js","names":[],"sources":["backgroundComputationNative.native.js"],"sourcesContent":["import { getClosureVariables, JS_GLOBALS, transformHermesLoops } from \"@vxrn/compiler/worklet-utils\";\nimport { parseSync } from \"oxc-parser\";\nfunction prepareBackgroundWorkletModule(source, id) {\n var _ref;\n var _transformHermesLoops;\n var code = (_ref = (_transformHermesLoops = transformHermesLoops(source, id)) === null || _transformHermesLoops === void 0 ? void 0 : _transformHermesLoops.code) !== null && _ref !== void 0 ? _ref : source;\n var parsed = parseSync(id, code, {\n lang: \"js\"\n });\n if (parsed.errors.length) throw new Error(parsed.errors[0].message);\n var captures = getClosureVariables(parsed.program.body[0], /* @__PURE__ */ new Set([\n ...JS_GLOBALS,\n \"arguments\"\n ]));\n if (captures.length) {\n throw new Error(`[worklet imports] ${id} requires unsupported runtime globals: ${captures.join(\", \")}`);\n }\n return code;\n}\nexport {\n prepareBackgroundWorkletModule\n};\n//# sourceMappingURL=backgroundComputationNative.js.map\n"],"mappings":";;;;AAEA,SAAS,+BAA+B,QAAQ,IAAI;CAClD,IAAI;CACJ,IAAI;CACJ,IAAI,QAAQ,QAAQ,wBAAwB,qBAAqB,QAAQ,EAAE,OAAO,QAAQ,0BAA0B,KAAK,IAAI,KAAK,IAAI,sBAAsB,UAAU,QAAQ,SAAS,KAAK,IAAI,OAAO;CACvM,IAAI,SAAS,UAAU,IAAI,MAAM,EAC/B,MAAM,KACR,CAAC;CACD,IAAI,OAAO,OAAO,QAAQ,MAAM,IAAI,MAAM,OAAO,OAAO,EAAE,CAAC,OAAO;CAClE,IAAI,WAAW,oBAAoB,OAAO,QAAQ,KAAK,oBAAoB,IAAI,IAAI,CACjF,GAAG,YACH,WACF,CAAC,CAAC;CACF,IAAI,SAAS,QAAQ;EACnB,MAAM,IAAI,MAAM,qBAAqB,GAAG,yCAAyC,SAAS,KAAK,IAAI,GAAG;CACxG;CACA,OAAO;AACT"}