vxrn 0.1.50 → 0.1.52

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 (330) hide show
  1. package/dist/cjs/exports/bindKeypressInput.js +58 -0
  2. package/dist/cjs/exports/bindKeypressInput.js.map +6 -0
  3. package/dist/cjs/exports/bindKeypressInput.native.js +63 -0
  4. package/dist/cjs/exports/bindKeypressInput.native.js.map +6 -0
  5. package/dist/cjs/exports/build.js +26 -93
  6. package/dist/cjs/exports/build.js.map +2 -2
  7. package/dist/cjs/exports/build.native.js +70 -360
  8. package/dist/cjs/exports/build.native.js.map +2 -2
  9. package/dist/cjs/exports/coerceToArray.js +23 -0
  10. package/dist/cjs/exports/coerceToArray.js.map +6 -0
  11. package/dist/cjs/exports/connectedNativeClients.js +21 -0
  12. package/dist/cjs/exports/connectedNativeClients.js.map +6 -0
  13. package/dist/cjs/exports/dev.js +10 -416
  14. package/dist/cjs/exports/dev.js.map +2 -2
  15. package/dist/cjs/exports/dev.native.js +16 -732
  16. package/dist/cjs/exports/dev.native.js.map +2 -2
  17. package/dist/cjs/exports/entryRoot.js +69 -0
  18. package/dist/cjs/exports/entryRoot.js.map +6 -0
  19. package/dist/cjs/exports/getIndexJsonResponse.js +71 -0
  20. package/dist/cjs/exports/getIndexJsonResponse.js.map +6 -0
  21. package/dist/cjs/exports/getIndexJsonResponse.native.js +99 -0
  22. package/dist/cjs/exports/getIndexJsonResponse.native.js.map +6 -0
  23. package/dist/cjs/exports/getReactNativeBundle.js +160 -0
  24. package/dist/cjs/exports/getReactNativeBundle.js.map +6 -0
  25. package/dist/cjs/exports/getViteServerConfig.js +77 -0
  26. package/dist/cjs/exports/getViteServerConfig.js.map +6 -0
  27. package/dist/cjs/exports/getViteServerConfig.native.js +253 -0
  28. package/dist/cjs/exports/getViteServerConfig.native.js.map +6 -0
  29. package/dist/cjs/exports/hotUpdateCache.js +21 -0
  30. package/dist/cjs/exports/hotUpdateCache.js.map +6 -0
  31. package/dist/cjs/exports/isBuildingNativeBundle.js +21 -0
  32. package/dist/cjs/exports/isBuildingNativeBundle.js.map +6 -0
  33. package/dist/cjs/exports/isWithin.js +25 -0
  34. package/dist/cjs/exports/isWithin.js.map +6 -0
  35. package/dist/cjs/exports/reactNativeHMRPlugin.js +69 -0
  36. package/dist/cjs/exports/reactNativeHMRPlugin.js.map +6 -0
  37. package/dist/cjs/exports/resolveFile.js +28 -0
  38. package/dist/cjs/exports/resolveFile.js.map +6 -0
  39. package/dist/cjs/exports/resolveFile.native.js +34 -0
  40. package/dist/cjs/exports/resolveFile.native.js.map +6 -0
  41. package/dist/cjs/exports/serve.js +1 -1
  42. package/dist/cjs/exports/serve.js.map +1 -1
  43. package/dist/cjs/exports/serve.native.js +1 -1
  44. package/dist/cjs/exports/serve.native.js.map +1 -1
  45. package/dist/cjs/exports/swapPrebuiltReactModules.js +100 -0
  46. package/dist/cjs/exports/swapPrebuiltReactModules.js.map +6 -0
  47. package/dist/cjs/exports/uniq.js +23 -0
  48. package/dist/cjs/exports/uniq.js.map +6 -0
  49. package/dist/cjs/index.js +4 -0
  50. package/dist/cjs/index.js.map +1 -1
  51. package/dist/cjs/index.native.js +8 -0
  52. package/dist/cjs/index.native.js.map +1 -1
  53. package/dist/cjs/plugins/reactNativeCommonJsPlugin.js.map +1 -1
  54. package/dist/cjs/plugins/reactNativeCommonJsPlugin.native.js.map +1 -1
  55. package/dist/cjs/plugins/reactNativeHMRPlugin.js +67 -0
  56. package/dist/cjs/plugins/reactNativeHMRPlugin.js.map +6 -0
  57. package/dist/cjs/plugins/reactNativeHMRPlugin.native.js +307 -0
  58. package/dist/cjs/plugins/reactNativeHMRPlugin.native.js.map +6 -0
  59. package/dist/cjs/types.native.js.map +1 -1
  60. package/dist/cjs/utils/bindKeypressInput.js +58 -0
  61. package/dist/cjs/utils/bindKeypressInput.js.map +6 -0
  62. package/dist/cjs/utils/bindKeypressInput.native.js +63 -0
  63. package/dist/cjs/utils/bindKeypressInput.native.js.map +6 -0
  64. package/dist/cjs/utils/coerceToArray.js +23 -0
  65. package/dist/cjs/utils/coerceToArray.js.map +6 -0
  66. package/dist/cjs/utils/coerceToArray.native.js +30 -0
  67. package/dist/cjs/utils/coerceToArray.native.js.map +6 -0
  68. package/dist/cjs/utils/connectedNativeClients.js +29 -0
  69. package/dist/cjs/utils/connectedNativeClients.js.map +6 -0
  70. package/dist/cjs/utils/connectedNativeClients.native.js +36 -0
  71. package/dist/cjs/utils/connectedNativeClients.native.js.map +6 -0
  72. package/dist/cjs/utils/getIndexJsonResponse.js +71 -0
  73. package/dist/cjs/utils/getIndexJsonResponse.js.map +6 -0
  74. package/dist/cjs/utils/getIndexJsonResponse.native.js +99 -0
  75. package/dist/cjs/utils/getIndexJsonResponse.native.js.map +6 -0
  76. package/dist/cjs/utils/getOptimizeDeps.js +8 -7
  77. package/dist/cjs/utils/getOptimizeDeps.js.map +1 -1
  78. package/dist/cjs/utils/getOptimizeDeps.native.js +8 -7
  79. package/dist/cjs/utils/getOptimizeDeps.native.js.map +1 -1
  80. package/dist/cjs/utils/getOptionsFilled.js.map +1 -1
  81. package/dist/cjs/utils/getOptionsFilled.native.js.map +1 -1
  82. package/dist/cjs/utils/getReactNativeBundle.js +165 -0
  83. package/dist/cjs/utils/getReactNativeBundle.js.map +6 -0
  84. package/dist/cjs/utils/getReactNativeBundle.native.js +389 -0
  85. package/dist/cjs/utils/getReactNativeBundle.native.js.map +6 -0
  86. package/dist/cjs/utils/getVitePath.js +2 -2
  87. package/dist/cjs/utils/getVitePath.js.map +2 -2
  88. package/dist/cjs/utils/getVitePath.native.js +8 -8
  89. package/dist/cjs/utils/getVitePath.native.js.map +2 -2
  90. package/dist/cjs/utils/getViteServerConfig.js +80 -0
  91. package/dist/cjs/utils/getViteServerConfig.js.map +6 -0
  92. package/dist/cjs/utils/getViteServerConfig.native.js +256 -0
  93. package/dist/cjs/utils/getViteServerConfig.native.js.map +6 -0
  94. package/dist/cjs/utils/hotUpdateCache.js +21 -0
  95. package/dist/cjs/utils/hotUpdateCache.js.map +6 -0
  96. package/dist/cjs/utils/hotUpdateCache.native.js +26 -0
  97. package/dist/cjs/utils/hotUpdateCache.native.js.map +6 -0
  98. package/dist/cjs/utils/isBuildingNativeBundle.js +25 -0
  99. package/dist/cjs/utils/isBuildingNativeBundle.js.map +6 -0
  100. package/dist/cjs/utils/isBuildingNativeBundle.native.js +32 -0
  101. package/dist/cjs/utils/isBuildingNativeBundle.native.js.map +6 -0
  102. package/dist/cjs/utils/isWithin.js +25 -0
  103. package/dist/cjs/utils/isWithin.js.map +6 -0
  104. package/dist/cjs/utils/isWithin.native.js +30 -0
  105. package/dist/cjs/utils/isWithin.native.js.map +6 -0
  106. package/dist/cjs/utils/readVXRNConfig.js +15 -18
  107. package/dist/cjs/utils/readVXRNConfig.js.map +2 -2
  108. package/dist/cjs/utils/readVXRNConfig.native.js +104 -49
  109. package/dist/cjs/utils/readVXRNConfig.native.js.map +2 -2
  110. package/dist/cjs/utils/resolveFile.js +28 -0
  111. package/dist/cjs/utils/resolveFile.js.map +6 -0
  112. package/dist/cjs/utils/resolveFile.native.js +34 -0
  113. package/dist/cjs/utils/resolveFile.native.js.map +6 -0
  114. package/dist/cjs/utils/swapPrebuiltReactModules.js +108 -0
  115. package/dist/cjs/utils/swapPrebuiltReactModules.js.map +6 -0
  116. package/dist/cjs/utils/swapPrebuiltReactModules.native.js +272 -0
  117. package/dist/cjs/utils/swapPrebuiltReactModules.native.js.map +6 -0
  118. package/dist/cjs/utils/uniq.js +23 -0
  119. package/dist/cjs/utils/uniq.js.map +6 -0
  120. package/dist/cjs/utils/uniq.native.js +59 -0
  121. package/dist/cjs/utils/uniq.native.js.map +6 -0
  122. package/dist/esm/exports/bindKeypressInput.js +34 -0
  123. package/dist/esm/exports/bindKeypressInput.js.map +6 -0
  124. package/dist/esm/exports/bindKeypressInput.mjs +31 -0
  125. package/dist/esm/exports/bindKeypressInput.native.js +34 -0
  126. package/dist/esm/exports/bindKeypressInput.native.js.map +6 -0
  127. package/dist/esm/exports/build.js +27 -98
  128. package/dist/esm/exports/build.js.map +1 -1
  129. package/dist/esm/exports/build.mjs +38 -135
  130. package/dist/esm/exports/build.native.js +71 -366
  131. package/dist/esm/exports/build.native.js.map +2 -2
  132. package/dist/esm/exports/coerceToArray.js +7 -0
  133. package/dist/esm/exports/coerceToArray.js.map +6 -0
  134. package/dist/esm/exports/coerceToArray.mjs +4 -0
  135. package/dist/esm/exports/connectedNativeClients.js +5 -0
  136. package/dist/esm/exports/connectedNativeClients.js.map +6 -0
  137. package/dist/esm/exports/connectedNativeClients.mjs +2 -0
  138. package/dist/esm/exports/dev.js +17 -431
  139. package/dist/esm/exports/dev.js.map +2 -2
  140. package/dist/esm/exports/dev.mjs +15 -430
  141. package/dist/esm/exports/dev.native.js +19 -738
  142. package/dist/esm/exports/dev.native.js.map +2 -2
  143. package/dist/esm/exports/entryRoot.js +58 -0
  144. package/dist/esm/exports/entryRoot.js.map +6 -0
  145. package/dist/esm/exports/entryRoot.mjs +62 -0
  146. package/dist/esm/exports/getIndexJsonResponse.js +55 -0
  147. package/dist/esm/exports/getIndexJsonResponse.js.map +6 -0
  148. package/dist/esm/exports/getIndexJsonResponse.mjs +71 -0
  149. package/dist/esm/exports/getIndexJsonResponse.native.js +78 -0
  150. package/dist/esm/exports/getIndexJsonResponse.native.js.map +6 -0
  151. package/dist/esm/exports/getReactNativeBundle.js +146 -0
  152. package/dist/esm/exports/getReactNativeBundle.js.map +6 -0
  153. package/dist/esm/exports/getReactNativeBundle.mjs +136 -0
  154. package/dist/esm/exports/getViteServerConfig.js +64 -0
  155. package/dist/esm/exports/getViteServerConfig.js.map +6 -0
  156. package/dist/esm/exports/getViteServerConfig.mjs +44 -0
  157. package/dist/esm/exports/getViteServerConfig.native.js +235 -0
  158. package/dist/esm/exports/getViteServerConfig.native.js.map +6 -0
  159. package/dist/esm/exports/hotUpdateCache.js +5 -0
  160. package/dist/esm/exports/hotUpdateCache.js.map +6 -0
  161. package/dist/esm/exports/hotUpdateCache.mjs +2 -0
  162. package/dist/esm/exports/isBuildingNativeBundle.js +5 -0
  163. package/dist/esm/exports/isBuildingNativeBundle.js.map +6 -0
  164. package/dist/esm/exports/isBuildingNativeBundle.mjs +2 -0
  165. package/dist/esm/exports/isWithin.js +9 -0
  166. package/dist/esm/exports/isWithin.js.map +6 -0
  167. package/dist/esm/exports/isWithin.mjs +6 -0
  168. package/dist/esm/exports/reactNativeHMRPlugin.js +58 -0
  169. package/dist/esm/exports/reactNativeHMRPlugin.js.map +6 -0
  170. package/dist/esm/exports/reactNativeHMRPlugin.mjs +62 -0
  171. package/dist/esm/exports/resolveFile.js +12 -0
  172. package/dist/esm/exports/resolveFile.js.map +6 -0
  173. package/dist/esm/exports/resolveFile.mjs +9 -0
  174. package/dist/esm/exports/resolveFile.native.js +12 -0
  175. package/dist/esm/exports/resolveFile.native.js.map +6 -0
  176. package/dist/esm/exports/serve.js +1 -1
  177. package/dist/esm/exports/serve.js.map +1 -1
  178. package/dist/esm/exports/serve.mjs +1 -1
  179. package/dist/esm/exports/serve.native.js +1 -1
  180. package/dist/esm/exports/serve.native.js.map +1 -1
  181. package/dist/esm/exports/swapPrebuiltReactModules.js +87 -0
  182. package/dist/esm/exports/swapPrebuiltReactModules.js.map +6 -0
  183. package/dist/esm/exports/swapPrebuiltReactModules.mjs +73 -0
  184. package/dist/esm/exports/uniq.js +7 -0
  185. package/dist/esm/exports/uniq.js.map +6 -0
  186. package/dist/esm/exports/uniq.mjs +4 -0
  187. package/dist/esm/index.js +4 -0
  188. package/dist/esm/index.js.map +1 -1
  189. package/dist/esm/index.mjs +4 -0
  190. package/dist/esm/index.native.js +4 -0
  191. package/dist/esm/index.native.js.map +1 -1
  192. package/dist/esm/plugins/reactNativeCommonJsPlugin.js.map +1 -1
  193. package/dist/esm/plugins/reactNativeCommonJsPlugin.native.js.map +1 -1
  194. package/dist/esm/plugins/reactNativeHMRPlugin.js +57 -0
  195. package/dist/esm/plugins/reactNativeHMRPlugin.js.map +6 -0
  196. package/dist/esm/plugins/reactNativeHMRPlugin.mjs +62 -0
  197. package/dist/esm/plugins/reactNativeHMRPlugin.native.js +292 -0
  198. package/dist/esm/plugins/reactNativeHMRPlugin.native.js.map +6 -0
  199. package/dist/esm/utils/bindKeypressInput.js +34 -0
  200. package/dist/esm/utils/bindKeypressInput.js.map +6 -0
  201. package/dist/esm/utils/bindKeypressInput.mjs +31 -0
  202. package/dist/esm/utils/bindKeypressInput.native.js +34 -0
  203. package/dist/esm/utils/bindKeypressInput.native.js.map +6 -0
  204. package/dist/esm/utils/coerceToArray.js +7 -0
  205. package/dist/esm/utils/coerceToArray.js.map +6 -0
  206. package/dist/esm/utils/coerceToArray.mjs +4 -0
  207. package/dist/esm/utils/coerceToArray.native.js +9 -0
  208. package/dist/esm/utils/coerceToArray.native.js.map +6 -0
  209. package/dist/esm/utils/connectedNativeClients.js +13 -0
  210. package/dist/esm/utils/connectedNativeClients.js.map +6 -0
  211. package/dist/esm/utils/connectedNativeClients.mjs +8 -0
  212. package/dist/esm/utils/connectedNativeClients.native.js +13 -0
  213. package/dist/esm/utils/connectedNativeClients.native.js.map +6 -0
  214. package/dist/esm/utils/getIndexJsonResponse.js +55 -0
  215. package/dist/esm/utils/getIndexJsonResponse.js.map +6 -0
  216. package/dist/esm/utils/getIndexJsonResponse.mjs +71 -0
  217. package/dist/esm/utils/getIndexJsonResponse.native.js +78 -0
  218. package/dist/esm/utils/getIndexJsonResponse.native.js.map +6 -0
  219. package/dist/esm/utils/getOptimizeDeps.js +8 -7
  220. package/dist/esm/utils/getOptimizeDeps.js.map +1 -1
  221. package/dist/esm/utils/getOptimizeDeps.mjs +2 -2
  222. package/dist/esm/utils/getOptimizeDeps.native.js +8 -7
  223. package/dist/esm/utils/getOptimizeDeps.native.js.map +1 -1
  224. package/dist/esm/utils/getOptionsFilled.js.map +1 -1
  225. package/dist/esm/utils/getOptionsFilled.native.js.map +1 -1
  226. package/dist/esm/utils/getReactNativeBundle.js +153 -0
  227. package/dist/esm/utils/getReactNativeBundle.js.map +6 -0
  228. package/dist/esm/utils/getReactNativeBundle.mjs +142 -0
  229. package/dist/esm/utils/getReactNativeBundle.native.js +371 -0
  230. package/dist/esm/utils/getReactNativeBundle.native.js.map +6 -0
  231. package/dist/esm/utils/getVitePath.js +2 -2
  232. package/dist/esm/utils/getVitePath.js.map +1 -1
  233. package/dist/esm/utils/getVitePath.mjs +2 -2
  234. package/dist/esm/utils/getVitePath.native.js +8 -8
  235. package/dist/esm/utils/getVitePath.native.js.map +2 -2
  236. package/dist/esm/utils/getViteServerConfig.js +69 -0
  237. package/dist/esm/utils/getViteServerConfig.js.map +6 -0
  238. package/dist/esm/utils/getViteServerConfig.mjs +49 -0
  239. package/dist/esm/utils/getViteServerConfig.native.js +240 -0
  240. package/dist/esm/utils/getViteServerConfig.native.js.map +6 -0
  241. package/dist/esm/utils/hotUpdateCache.js +5 -0
  242. package/dist/esm/utils/hotUpdateCache.js.map +6 -0
  243. package/dist/esm/utils/hotUpdateCache.mjs +2 -0
  244. package/dist/esm/utils/hotUpdateCache.native.js +5 -0
  245. package/dist/esm/utils/hotUpdateCache.native.js.map +6 -0
  246. package/dist/esm/utils/isBuildingNativeBundle.js +9 -0
  247. package/dist/esm/utils/isBuildingNativeBundle.js.map +6 -0
  248. package/dist/esm/utils/isBuildingNativeBundle.mjs +5 -0
  249. package/dist/esm/utils/isBuildingNativeBundle.native.js +10 -0
  250. package/dist/esm/utils/isBuildingNativeBundle.native.js.map +6 -0
  251. package/dist/esm/utils/isWithin.js +9 -0
  252. package/dist/esm/utils/isWithin.js.map +6 -0
  253. package/dist/esm/utils/isWithin.mjs +6 -0
  254. package/dist/esm/utils/isWithin.native.js +9 -0
  255. package/dist/esm/utils/isWithin.native.js.map +6 -0
  256. package/dist/esm/utils/readVXRNConfig.js +16 -19
  257. package/dist/esm/utils/readVXRNConfig.js.map +1 -1
  258. package/dist/esm/utils/readVXRNConfig.mjs +17 -21
  259. package/dist/esm/utils/readVXRNConfig.native.js +105 -50
  260. package/dist/esm/utils/readVXRNConfig.native.js.map +2 -2
  261. package/dist/esm/utils/resolveFile.js +12 -0
  262. package/dist/esm/utils/resolveFile.js.map +6 -0
  263. package/dist/esm/utils/resolveFile.mjs +9 -0
  264. package/dist/esm/utils/resolveFile.native.js +12 -0
  265. package/dist/esm/utils/resolveFile.native.js.map +6 -0
  266. package/dist/esm/utils/swapPrebuiltReactModules.js +89 -0
  267. package/dist/esm/utils/swapPrebuiltReactModules.js.map +6 -0
  268. package/dist/esm/utils/swapPrebuiltReactModules.mjs +75 -0
  269. package/dist/esm/utils/swapPrebuiltReactModules.native.js +248 -0
  270. package/dist/esm/utils/swapPrebuiltReactModules.native.js.map +6 -0
  271. package/dist/esm/utils/uniq.js +7 -0
  272. package/dist/esm/utils/uniq.js.map +6 -0
  273. package/dist/esm/utils/uniq.mjs +4 -0
  274. package/dist/esm/utils/uniq.native.js +38 -0
  275. package/dist/esm/utils/uniq.native.js.map +6 -0
  276. package/package.json +8 -8
  277. package/src/exports/build.ts +46 -183
  278. package/src/exports/dev.ts +18 -646
  279. package/src/exports/serve.ts +4 -0
  280. package/src/index.ts +5 -0
  281. package/src/plugins/reactNativeCommonJsPlugin.ts +0 -2
  282. package/src/plugins/reactNativeHMRPlugin.ts +105 -0
  283. package/src/types.ts +9 -0
  284. package/src/utils/bindKeypressInput.ts +46 -0
  285. package/src/utils/coerceToArray.ts +3 -0
  286. package/src/utils/connectedNativeClients.ts +9 -0
  287. package/src/utils/getIndexJsonResponse.ts +52 -0
  288. package/src/utils/getOptimizeDeps.ts +9 -8
  289. package/src/utils/getOptionsFilled.ts +0 -1
  290. package/src/utils/getReactNativeBundle.ts +228 -0
  291. package/src/utils/getVitePath.ts +3 -3
  292. package/src/utils/getViteServerConfig.ts +104 -0
  293. package/src/utils/hotUpdateCache.ts +1 -0
  294. package/src/utils/isBuildingNativeBundle.ts +7 -0
  295. package/src/utils/isWithin.ts +6 -0
  296. package/src/utils/readVXRNConfig.ts +81 -25
  297. package/src/utils/resolveFile.ts +9 -0
  298. package/src/utils/swapPrebuiltReactModules.ts +126 -0
  299. package/src/utils/uniq.ts +3 -0
  300. package/types/exports/bindKeypressInput.d.ts +2 -0
  301. package/types/exports/coerceToArray.d.ts +2 -0
  302. package/types/exports/connectedNativeClients.d.ts +2 -0
  303. package/types/exports/dev.d.ts +0 -2
  304. package/types/exports/entryRoot.d.ts +11 -0
  305. package/types/exports/getIndexJsonResponse.d.ts +68 -0
  306. package/types/exports/getReactNativeBundle.d.ts +3 -0
  307. package/types/exports/getViteServerConfig.d.ts +4 -0
  308. package/types/exports/hotUpdateCache.d.ts +2 -0
  309. package/types/exports/isBuildingNativeBundle.d.ts +2 -0
  310. package/types/exports/isWithin.d.ts +2 -0
  311. package/types/exports/reactNativeHMRPlugin.d.ts +11 -0
  312. package/types/exports/resolveFile.d.ts +2 -0
  313. package/types/exports/swapPrebuiltReactModules.d.ts +7 -0
  314. package/types/exports/uniq.d.ts +2 -0
  315. package/types/index.d.ts +4 -0
  316. package/types/plugins/reactNativeHMRPlugin.d.ts +10 -0
  317. package/types/types.d.ts +4 -0
  318. package/types/utils/bindKeypressInput.d.ts +2 -0
  319. package/types/utils/coerceToArray.d.ts +2 -0
  320. package/types/utils/connectedNativeClients.d.ts +4 -0
  321. package/types/utils/getIndexJsonResponse.d.ts +68 -0
  322. package/types/utils/getOptionsFilled.d.ts +2 -0
  323. package/types/utils/getReactNativeBundle.d.ts +4 -0
  324. package/types/utils/getViteServerConfig.d.ts +4 -0
  325. package/types/utils/hotUpdateCache.d.ts +2 -0
  326. package/types/utils/isBuildingNativeBundle.d.ts +3 -0
  327. package/types/utils/isWithin.d.ts +2 -0
  328. package/types/utils/resolveFile.d.ts +2 -0
  329. package/types/utils/swapPrebuiltReactModules.d.ts +7 -0
  330. package/types/utils/uniq.d.ts +2 -0
package/src/index.ts CHANGED
@@ -1,4 +1,9 @@
1
1
  export { build } from './exports/build'
2
2
  export { dev } from './exports/dev'
3
3
 
4
+ export * from './utils/getHtml'
5
+ export * from './utils/getOptionsFilled'
6
+ export * from './utils/getOptimizeDeps'
7
+ export * from './utils/getBaseViteConfig'
8
+
4
9
  export * from './types'
@@ -1,9 +1,7 @@
1
1
  import { dirname } from 'node:path'
2
-
3
2
  import { parse } from 'es-module-lexer'
4
3
  import type { OutputOptions } from 'rollup'
5
4
  import type { Plugin } from 'vite'
6
-
7
5
  import { getVitePath } from '../utils/getVitePath'
8
6
 
9
7
  const extensions = [
@@ -0,0 +1,105 @@
1
+ import { swcTransform, transformForBuild } from '@vxrn/vite-native-swc'
2
+ import { parse } from 'es-module-lexer'
3
+ import { connectedNativeClients } from '../utils/connectedNativeClients'
4
+ import type { VXRNConfigFilled } from '../utils/getOptionsFilled'
5
+ import { entryRoot } from '../utils/getReactNativeBundle'
6
+ import { getVitePath } from '../utils/getVitePath'
7
+ import { hotUpdateCache } from '../utils/hotUpdateCache'
8
+ import { isWithin } from '../utils/isWithin'
9
+
10
+ export function reactNativeHMRPlugin({ root }: VXRNConfigFilled) {
11
+ return {
12
+ name: 'client-transform',
13
+
14
+ async handleHotUpdate({ read, modules, file }) {
15
+ try {
16
+ if (!isWithin(root, file)) {
17
+ return
18
+ }
19
+ if (!connectedNativeClients) {
20
+ return
21
+ }
22
+
23
+ const [module] = modules
24
+ if (!module) return
25
+
26
+ const id = module?.url || file.replace(root, '')
27
+
28
+ const code = await read()
29
+
30
+ // got a weird pre compiled file on startup
31
+ if (code.startsWith(`'use strict';`)) return
32
+
33
+ if (!code) {
34
+ return
35
+ }
36
+
37
+ let source = code
38
+
39
+ // we have to remove jsx before we can parse imports...
40
+ source = (await transformForBuild(id, source))?.code || ''
41
+
42
+ const importsMap = {}
43
+
44
+ // parse imports of modules into ids:
45
+ // eg `import x from '@tamagui/core'` => `import x from '/me/node_modules/@tamagui/core/index.js'`
46
+ const [imports] = parse(source)
47
+
48
+ let accumulatedSliceOffset = 0
49
+
50
+ for (const specifier of imports) {
51
+ const { n: importName, s: start } = specifier
52
+
53
+ if (importName) {
54
+ const id = await getVitePath(entryRoot, file, importName)
55
+ if (!id) {
56
+ console.warn('???')
57
+ continue
58
+ }
59
+
60
+ importsMap[id] = id.replace(/^(\.\.\/)+/, '')
61
+
62
+ // replace module name with id for hmr
63
+ const len = importName.length
64
+ const extraLen = id.length - len
65
+ source =
66
+ source.slice(0, start + accumulatedSliceOffset) +
67
+ id +
68
+ source.slice(start + accumulatedSliceOffset + len)
69
+ accumulatedSliceOffset += extraLen
70
+ }
71
+ }
72
+
73
+ // then we have to convert to commonjs..
74
+ source =
75
+ (
76
+ await swcTransform(id, source, {
77
+ mode: 'serve-cjs',
78
+ })
79
+ )?.code || ''
80
+
81
+ if (!source) {
82
+ throw '❌ no source'
83
+ }
84
+
85
+ importsMap['currentPath'] = id
86
+
87
+ const hotUpdateSource = `exports = ((exports) => {
88
+ const require = createRequire(${JSON.stringify(importsMap, null, 2)})
89
+ ${source
90
+ .replace(`import.meta.hot.accept(() => {})`, ``)
91
+ // replace import.meta.glob with empty array in hot reloads
92
+ .replaceAll(/import.meta.glob\(.*\)/gi, `globalThis['__importMetaGlobbed'] || {}`)};
93
+ return exports })({})`
94
+
95
+ if (process.env.DEBUG) {
96
+ console.info(`Sending hot update`, hotUpdateSource)
97
+ }
98
+
99
+ hotUpdateCache.set(id, hotUpdateSource)
100
+ } catch (err) {
101
+ console.error(`Error processing hmr update:`, err)
102
+ }
103
+ },
104
+ }
105
+ }
package/src/types.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import type { Options as FlowOptions } from '@vxrn/vite-flow'
2
+ import type { App } from 'h3'
3
+ import type { OutputAsset, OutputChunk } from 'rollup'
2
4
  import type { InlineConfig } from 'vite'
3
5
 
4
6
  export type VXRNConfig = {
@@ -19,6 +21,13 @@ export type VXRNConfig = {
19
21
  webConfig?: InlineConfig
20
22
  nativeConfig?: InlineConfig
21
23
  flow?: FlowOptions
24
+
25
+ afterBuild?: (
26
+ options: VXRNConfig,
27
+ output: [OutputChunk, ...(OutputChunk | OutputAsset)[]]
28
+ ) => void | Promise<void>
29
+
30
+ serve?: (options: VXRNConfig, app: App) => void
22
31
  }
23
32
 
24
33
  export type HMRListener = (update: { file: string; contents: string }) => void
@@ -0,0 +1,46 @@
1
+ import readline from 'node:readline'
2
+
3
+ export function bindKeypressInput() {
4
+ if (!process.stdin.setRawMode) {
5
+ console.warn({
6
+ msg: 'Interactive mode is not supported in this environment',
7
+ })
8
+ return
9
+ }
10
+
11
+ readline.emitKeypressEvents(process.stdin)
12
+ process.stdin.setRawMode(true)
13
+
14
+ process.stdin.on('keypress', (_key, data) => {
15
+ const { ctrl, name } = data
16
+ if (ctrl === true) {
17
+ switch (name) {
18
+ // biome-ignore lint/suspicious/noFallthroughSwitchClause: <explanation>
19
+ case 'c':
20
+ process.exit()
21
+ case 'z':
22
+ process.emit('SIGTSTP', 'SIGTSTP')
23
+ break
24
+ }
25
+ } else {
26
+ switch (name) {
27
+ case 'r':
28
+ // ctx.broadcastToMessageClients({ method: 'reload' })
29
+ // ctx.log.info({
30
+ // msg: 'Reloading app',
31
+ // })
32
+ break
33
+ case 'd':
34
+ // ctx.broadcastToMessageClients({ method: 'devMenu' })
35
+ // ctx.log.info({
36
+ // msg: 'Opening developer menu',
37
+ // })
38
+ break
39
+ case 'c':
40
+ process.stdout.write('\u001b[2J\u001b[0;0H')
41
+ // TODO: after logging we should print information about port and host
42
+ break
43
+ }
44
+ }
45
+ })
46
+ }
@@ -0,0 +1,3 @@
1
+ export function coerceToArray<A>(thing: A | A[]): A[] {
2
+ return Array.isArray(thing) ? thing : [thing]
3
+ }
@@ -0,0 +1,9 @@
1
+ export let connectedNativeClients = 0
2
+
3
+ export function addConnectedNativeClient() {
4
+ connectedNativeClients++
5
+ }
6
+
7
+ export function removeConnectedNativeClient() {
8
+ connectedNativeClients--
9
+ }
@@ -0,0 +1,52 @@
1
+ import { join } from 'node:path'
2
+
3
+ export function getIndexJsonResponse({ port, root }: { port: number | string; root }) {
4
+ return {
5
+ name: 'myapp',
6
+ slug: 'myapp',
7
+ scheme: 'myapp',
8
+ version: '1.0.0',
9
+ jsEngine: 'jsc',
10
+ orientation: 'portrait',
11
+ icon: './assets/icon.png',
12
+ userInterfaceStyle: 'light',
13
+ splash: {
14
+ image: './assets/splash.png',
15
+ resizeMode: 'contain',
16
+ backgroundColor: '#ffffff',
17
+ imageUrl: 'http://127.0.0.1:8081/assets/./assets/splash.png',
18
+ },
19
+ updates: { fallbackToCacheTimeout: 0 },
20
+ assetBundlePatterns: ['**/*'],
21
+ ios: { supportsTablet: true, bundleIdentifier: 'com.natew.myapp' },
22
+ android: {
23
+ package: 'com.tamagui.myapp',
24
+ adaptiveIcon: {
25
+ foregroundImage: './assets/adaptive-icon.png',
26
+ backgroundColor: '#FFFFFF',
27
+ foregroundImageUrl: 'http://127.0.0.1:8081/assets/./assets/adaptive-icon.png',
28
+ },
29
+ },
30
+ web: { favicon: './assets/favicon.png' },
31
+ extra: { eas: { projectId: '061b4470-78c7-4d6a-b850-8167fb0a3434' } },
32
+ _internal: {
33
+ isDebug: false,
34
+ projectRoot: root,
35
+ dynamicConfigPath: null,
36
+ staticConfigPath: join(root, 'app.json'),
37
+ packageJsonPath: join(root, 'package.json'),
38
+ },
39
+ sdkVersion: '50.0.0',
40
+ platforms: ['ios', 'android', 'web'],
41
+ iconUrl: `http://127.0.0.1:${port}/assets/./assets/icon.png`,
42
+ debuggerHost: `127.0.0.1:${port}`,
43
+ logUrl: `http://127.0.0.1:${port}/logs`,
44
+ developer: { tool: 'expo-cli', projectRoot: root },
45
+ packagerOpts: { dev: true },
46
+ mainModuleName: 'index',
47
+ __flipperHack: 'React Native packager is running',
48
+ hostUri: `127.0.0.1:${port}`,
49
+ bundleUrl: `http://127.0.0.1:${port}/index.bundle?platform=ios&dev=true&hot=false&lazy=true`,
50
+ id: '@anonymous/myapp-473c4543-3c36-4786-9db1-c66a62ac9b78',
51
+ }
52
+ }
@@ -1,15 +1,15 @@
1
- import { optimizeDeps, type UserConfig } from 'vite'
1
+ import type { UserConfig } from 'vite'
2
2
  import { webExtensions } from '../constants'
3
3
 
4
4
  export function getOptimizeDeps(mode: 'build' | 'serve') {
5
5
  const needsInterop = [
6
6
  'react',
7
- 'react/jsx-runtime',
8
- 'react/jsx-dev-runtime',
9
7
  'react-native-web-internals',
10
8
  'react-dom',
11
9
  'react-native-web',
12
10
  'react-dom/server',
11
+ 'react/jsx-runtime',
12
+ 'react/jsx-dev-runtime',
13
13
  'react-dom/client',
14
14
  'url-parse',
15
15
  '@vxrn/safe-area',
@@ -26,11 +26,6 @@ export function getOptimizeDeps(mode: 'build' | 'serve') {
26
26
  'expo-constants',
27
27
  'expo-linking',
28
28
  'uuid',
29
- '@react-navigation/core',
30
- '@react-navigation/native',
31
- '@react-navigation/elements',
32
- '@react-navigation/bottom-tabs',
33
- '@react-navigation/native-stack',
34
29
  'inline-style-prefixer',
35
30
  '@docsearch/react',
36
31
  '@algolia/autocomplete-core',
@@ -42,6 +37,11 @@ export function getOptimizeDeps(mode: 'build' | 'serve') {
42
37
 
43
38
  const depsToOptimize = [
44
39
  ...needsInterop,
40
+ '@react-navigation/core',
41
+ '@react-navigation/native',
42
+ '@react-navigation/elements',
43
+ '@react-navigation/bottom-tabs',
44
+ '@react-navigation/native-stack',
45
45
  'requires-port',
46
46
  'querystringify',
47
47
  'compare-versions',
@@ -62,6 +62,7 @@ export function getOptimizeDeps(mode: 'build' | 'serve') {
62
62
  '@tamagui/linear-gradient',
63
63
  '@react-native/normalize-color',
64
64
  '@vxrn/router',
65
+ '@vxrn/router/server-render',
65
66
  'expo-modules-core',
66
67
  'expo-status-bar',
67
68
  'react-native-web',
@@ -19,7 +19,6 @@ export async function getOptionsFilled(options: VXRNConfig) {
19
19
  })
20
20
 
21
21
  const packageRootDir = join(require.resolve('vxrn'), '../../..')
22
-
23
22
  const cacheDir = join(root, 'node_modules', '.vxrn')
24
23
  const internalPatchesDir = join(packageRootDir, 'patches')
25
24
  const userPatchesDir = join(root, 'patches')
@@ -0,0 +1,228 @@
1
+ import * as babel from '@babel/core'
2
+ import createViteFlow from '@vxrn/vite-flow'
3
+ import viteReactPlugin from '@vxrn/vite-native-swc'
4
+ import { readFile } from 'node:fs/promises'
5
+ import { dirname, join, relative } from 'node:path'
6
+ import { build, mergeConfig, resolveConfig, transformWithEsbuild, type InlineConfig } from 'vite'
7
+ import { nativeExtensions } from '../constants'
8
+ import { resolveFile } from './resolveFile'
9
+ import { isBuildingNativeBundle, setIsBuildingNativeBundle } from './isBuildingNativeBundle'
10
+ import { swapPrebuiltReactModules } from './swapPrebuiltReactModules'
11
+ import { reactNativeCommonJsPlugin } from '../plugins/reactNativeCommonJsPlugin'
12
+ import { getOptimizeDeps } from './getOptimizeDeps'
13
+ import type { VXRNConfigFilled } from './getOptionsFilled'
14
+ import FSExtra from 'fs-extra'
15
+
16
+ const { pathExists } = FSExtra
17
+
18
+ // used for normalizing hot reloads
19
+ export let entryRoot = ''
20
+
21
+ export async function getReactNativeBundle(options: VXRNConfigFilled, viteRNClientPlugin: any) {
22
+ const { root, port, cacheDir } = options
23
+ const { depsToOptimize } = getOptimizeDeps('build')
24
+
25
+ if (process.env.LOAD_TMP_BUNDLE) {
26
+ // for easier quick testing things:
27
+ const tmpBundle = join(process.cwd(), 'bundle.tmp.js')
28
+ if (await pathExists(tmpBundle)) {
29
+ console.info('⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ returning temp bundle ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️', tmpBundle)
30
+ return await readFile(tmpBundle, 'utf-8')
31
+ }
32
+ }
33
+
34
+ if (isBuildingNativeBundle) {
35
+ const res = await isBuildingNativeBundle
36
+ return res
37
+ }
38
+
39
+ let done
40
+ setIsBuildingNativeBundle(
41
+ new Promise((res) => {
42
+ done = res
43
+ })
44
+ )
45
+
46
+ async function babelReanimated(input: string, filename: string) {
47
+ return await new Promise<string>((res, rej) => {
48
+ babel.transform(
49
+ input,
50
+ {
51
+ plugins: ['react-native-reanimated/plugin'],
52
+ filename,
53
+ },
54
+ (err: any, result) => {
55
+ if (!result || err) rej(err || 'no res')
56
+ res(result!.code!)
57
+ }
58
+ )
59
+ })
60
+ }
61
+
62
+ const viteFlow = options.flow ? createViteFlow(options.flow) : null
63
+
64
+ // build app
65
+ let nativeBuildConfig = {
66
+ plugins: [
67
+ viteFlow,
68
+
69
+ swapPrebuiltReactModules(cacheDir),
70
+
71
+ {
72
+ name: 'reanimated',
73
+ async transform(code, id) {
74
+ if (code.includes('worklet')) {
75
+ const out = await babelReanimated(code, id)
76
+ return out
77
+ }
78
+ },
79
+ },
80
+
81
+ viteRNClientPlugin,
82
+
83
+ reactNativeCommonJsPlugin({
84
+ root,
85
+ port,
86
+ mode: 'build',
87
+ }),
88
+
89
+ viteReactPlugin({
90
+ tsDecorators: true,
91
+ mode: 'build',
92
+ }),
93
+
94
+ {
95
+ name: 'treat-js-files-as-jsx',
96
+ async transform(code, id) {
97
+ if (!id.includes(`expo-status-bar`)) return null
98
+ // Use the exposed transform from vite, instead of directly
99
+ // transforming with esbuild
100
+ return transformWithEsbuild(code, id, {
101
+ loader: 'jsx',
102
+ jsx: 'automatic',
103
+ })
104
+ },
105
+ },
106
+ ].filter(Boolean),
107
+
108
+ appType: 'custom',
109
+ root,
110
+ clearScreen: false,
111
+
112
+ optimizeDeps: {
113
+ include: depsToOptimize,
114
+ esbuildOptions: {
115
+ jsx: 'automatic',
116
+ },
117
+ },
118
+
119
+ resolve: {
120
+ extensions: nativeExtensions,
121
+ },
122
+
123
+ mode: 'development',
124
+
125
+ define: {
126
+ 'process.env.NODE_ENV': `"development"`,
127
+ },
128
+
129
+ build: {
130
+ ssr: false,
131
+ minify: false,
132
+ commonjsOptions: {
133
+ transformMixedEsModules: true,
134
+ },
135
+ rollupOptions: {
136
+ input: options.entries.native,
137
+ treeshake: false,
138
+ preserveEntrySignatures: 'strict',
139
+ output: {
140
+ preserveModules: true,
141
+ format: 'cjs',
142
+ },
143
+ },
144
+ },
145
+ } satisfies InlineConfig
146
+
147
+ if (options.nativeConfig) {
148
+ nativeBuildConfig = mergeConfig(nativeBuildConfig, options.nativeConfig) as any
149
+ }
150
+
151
+ // // this fixes my swap-react-native plugin not being called pre 😳
152
+ await resolveConfig(nativeBuildConfig, 'build')
153
+
154
+ const buildOutput = await build(nativeBuildConfig)
155
+
156
+ if (!('output' in buildOutput)) {
157
+ throw `❌`
158
+ }
159
+
160
+ let appCode = buildOutput.output
161
+ // entry last
162
+ .sort((a, b) => (a['isEntry'] ? 1 : -1))
163
+ .map((outputModule) => {
164
+ if (outputModule.type == 'chunk') {
165
+ const importsMap = {
166
+ currentPath: outputModule.fileName,
167
+ }
168
+ for (const imp of outputModule.imports) {
169
+ const relativePath = relative(dirname(outputModule.fileName), imp)
170
+ importsMap[relativePath[0] === '.' ? relativePath : './' + relativePath] = imp
171
+ }
172
+
173
+ if (outputModule.isEntry) {
174
+ entryRoot = dirname(outputModule.fileName)
175
+ }
176
+
177
+ return `
178
+ ___modules___["${outputModule.fileName}"] = ((exports, module) => {
179
+ const require = createRequire(${JSON.stringify(importsMap, null, 2)})
180
+
181
+ ${outputModule.code}
182
+ })
183
+
184
+ ${
185
+ outputModule.isEntry
186
+ ? `
187
+ // run entry
188
+ const __require = createRequire({})
189
+ __require("react-native")
190
+ __require("${outputModule.fileName}")
191
+ `
192
+ : ''
193
+ }
194
+ `
195
+ }
196
+ })
197
+ .join('\n')
198
+
199
+ if (!appCode) {
200
+ throw `❌`
201
+ }
202
+
203
+ appCode = appCode
204
+ // TEMP FIX for router tamagui thing since expo router 3 upgrade
205
+ .replaceAll('dist/esm/index.mjs"', 'dist/esm/index.js"')
206
+
207
+ // TODO this is not stable based on cwd
208
+ const appRootParent = join(root, '..', '..')
209
+
210
+ const prebuilds = {
211
+ reactJSX: join(cacheDir, 'react-jsx-runtime.js'),
212
+ react: join(cacheDir, 'react.js'),
213
+ reactNative: join(cacheDir, 'react-native.js'),
214
+ }
215
+
216
+ const templateFile = resolveFile('vxrn/react-native-template.js')
217
+ const template = (await readFile(templateFile, 'utf-8'))
218
+ .replace('_virtual/virtual_react-native.js', relative(appRootParent, prebuilds.reactNative))
219
+ .replace('_virtual/virtual_react.js', relative(appRootParent, prebuilds.react))
220
+ .replaceAll('_virtual/virtual_react-jsx.js', relative(appRootParent, prebuilds.reactJSX))
221
+
222
+ const out = template + appCode
223
+
224
+ done(out)
225
+ setIsBuildingNativeBundle(null)
226
+
227
+ return out
228
+ }
@@ -1,7 +1,6 @@
1
1
  import { join, relative, dirname } from 'node:path'
2
+ import { createRequire } from 'node:module'
2
3
 
3
- // @ts-ignore
4
- import resolve from 'esm-resolve'
5
4
  import FSExtra from 'fs-extra'
6
5
 
7
6
  export async function getVitePath(
@@ -31,7 +30,8 @@ export async function getVitePath(
31
30
  }
32
31
 
33
32
  const sourceFile = join(process.cwd(), 'index.js')
34
- const resolved = resolve(sourceFile)(moduleName)
33
+ const require = createRequire(moduleName)
34
+ const resolved = require.resolve(sourceFile)
35
35
  // figure out symlinks
36
36
  if (!resolved) {
37
37
  throw new Error(
@@ -0,0 +1,104 @@
1
+ import { mergeConfig, type InlineConfig, type UserConfig } from 'vite'
2
+ import { getBaseViteConfig } from './getBaseViteConfig'
3
+ import type { VXRNConfigFilled } from './getOptionsFilled'
4
+ import { getOptimizeDeps } from './getOptimizeDeps'
5
+ import { uniq } from './uniq'
6
+ import { coerceToArray } from './coerceToArray'
7
+ import { reactNativeHMRPlugin } from '../plugins/reactNativeHMRPlugin'
8
+
9
+ export async function getViteServerConfig(config: VXRNConfigFilled) {
10
+ const { root, host, webConfig } = config
11
+ const { optimizeDeps } = getOptimizeDeps('serve')
12
+
13
+ let serverConfig: UserConfig = mergeConfig(
14
+ getBaseViteConfig({
15
+ mode: 'development',
16
+ }),
17
+ {
18
+ root,
19
+ clearScreen: false,
20
+ plugins: [
21
+ reactNativeHMRPlugin(config),
22
+
23
+ {
24
+ name: 'process-env-ssr',
25
+ transform(code, id, options) {
26
+ if (id.includes('node_modules')) return
27
+ if (code.includes('process.env.TAMAGUI_IS_SERVER')) {
28
+ return code.replaceAll('process.env.TAMAGUI_IS_SERVER', `${!!options?.ssr}`)
29
+ }
30
+ },
31
+ },
32
+ ],
33
+
34
+ optimizeDeps,
35
+
36
+ ssr: {
37
+ optimizeDeps,
38
+ },
39
+
40
+ server: {
41
+ hmr: {
42
+ path: '/__vxrnhmr',
43
+ },
44
+ cors: true,
45
+ host,
46
+ },
47
+ } satisfies UserConfig
48
+ ) satisfies InlineConfig
49
+
50
+ if (webConfig) {
51
+ serverConfig = mergeConfig(serverConfig, webConfig) as any
52
+ }
53
+
54
+ if (serverConfig.ssr?.noExternal && !Array.isArray(serverConfig.ssr?.noExternal)) {
55
+ throw new Error(`ssr.noExternal must be array`)
56
+ }
57
+
58
+ // vite doesnt merge arrays but we want that
59
+ serverConfig.ssr ||= {}
60
+ serverConfig.ssr.noExternal = [
61
+ ...coerceToArray((serverConfig.ssr?.noExternal as string[]) || []),
62
+ ...optimizeDeps.include,
63
+ 'react',
64
+ 'react-dom',
65
+ 'react-dom/server',
66
+ 'react-dom/client',
67
+ ]
68
+
69
+ serverConfig.ssr.optimizeDeps = {}
70
+ serverConfig.ssr.optimizeDeps.exclude = uniq([
71
+ ...(serverConfig.ssr?.optimizeDeps.exclude || []),
72
+ ...optimizeDeps.exclude,
73
+ ])
74
+
75
+ serverConfig.ssr.optimizeDeps.include = uniq([
76
+ ...(serverConfig.ssr?.optimizeDeps.include || []),
77
+ ...optimizeDeps.include,
78
+ ])
79
+
80
+ serverConfig.ssr.optimizeDeps.needsInterop = uniq([
81
+ ...(serverConfig.ssr?.optimizeDeps.needsInterop || []),
82
+ ...optimizeDeps.needsInterop,
83
+ ])
84
+
85
+ serverConfig.ssr.optimizeDeps.esbuildOptions = {
86
+ ...(serverConfig.ssr?.optimizeDeps.esbuildOptions || {}),
87
+ ...optimizeDeps.esbuildOptions,
88
+ }
89
+
90
+ // manually merge
91
+ if (process.env.DEBUG) {
92
+ console.debug('server config is', serverConfig)
93
+ console.debug('server ssr\n', JSON.stringify(serverConfig.ssr, null, 2))
94
+ }
95
+
96
+ serverConfig = {
97
+ ...serverConfig,
98
+ plugins: [...serverConfig.plugins!],
99
+ }
100
+
101
+ console.log(`final server config ssr`, serverConfig.ssr)
102
+
103
+ return serverConfig
104
+ }
@@ -0,0 +1 @@
1
+ export const hotUpdateCache = new Map<string, string>()
@@ -0,0 +1,7 @@
1
+ // sorry for the mess, exploring before abstracting
2
+
3
+ export let isBuildingNativeBundle: Promise<string> | null = null
4
+
5
+ export function setIsBuildingNativeBundle(val: Promise<string> | null = null) {
6
+ isBuildingNativeBundle = val
7
+ }
@@ -0,0 +1,6 @@
1
+ import { relative } from 'node:path'
2
+
3
+ export function isWithin(outer: string, inner: string) {
4
+ const rel = relative(outer, inner)
5
+ return !rel.startsWith('../') && rel !== '..'
6
+ }