rwsdk 0.1.16 → 0.1.17

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 (327) hide show
  1. package/dist/lib/$.d.mts +8 -0
  2. package/dist/lib/$.mjs +5 -0
  3. package/dist/lib/compileTsModule.d.mts +1 -0
  4. package/dist/lib/compileTsModule.mjs +27 -0
  5. package/dist/lib/constants.d.mts +4 -0
  6. package/dist/lib/constants.mjs +6 -0
  7. package/dist/lib/findWranglerConfig.d.mts +1 -0
  8. package/dist/lib/findWranglerConfig.mjs +12 -0
  9. package/dist/lib/getShortName.d.mts +1 -0
  10. package/dist/lib/getShortName.mjs +2 -0
  11. package/dist/lib/getSrcPaths.d.ts +15 -0
  12. package/dist/lib/getSrcPaths.js +80 -0
  13. package/dist/lib/hasPkgScript.d.mts +1 -0
  14. package/dist/lib/hasPkgScript.mjs +9 -0
  15. package/dist/lib/jsonUtils.d.mts +28 -0
  16. package/dist/lib/jsonUtils.mjs +167 -0
  17. package/dist/lib/setupEnvFiles.d.mts +4 -0
  18. package/dist/lib/setupEnvFiles.mjs +31 -0
  19. package/dist/lib/smokeTests/artifacts.d.mts +10 -0
  20. package/dist/lib/smokeTests/artifacts.mjs +164 -0
  21. package/dist/lib/smokeTests/browser.d.mts +48 -0
  22. package/dist/lib/smokeTests/browser.mjs +1041 -0
  23. package/dist/lib/smokeTests/cleanup.d.mts +5 -0
  24. package/dist/lib/smokeTests/cleanup.mjs +214 -0
  25. package/dist/lib/smokeTests/codeUpdates.d.mts +8 -0
  26. package/dist/lib/smokeTests/codeUpdates.mjs +229 -0
  27. package/dist/lib/smokeTests/constants.d.mts +5 -0
  28. package/dist/lib/smokeTests/constants.mjs +10 -0
  29. package/dist/lib/smokeTests/development.d.mts +11 -0
  30. package/dist/lib/smokeTests/development.mjs +209 -0
  31. package/dist/lib/smokeTests/environment.d.mts +14 -0
  32. package/dist/lib/smokeTests/environment.mjs +163 -0
  33. package/dist/lib/smokeTests/release.d.mts +61 -0
  34. package/dist/lib/smokeTests/release.mjs +526 -0
  35. package/dist/lib/smokeTests/reporting.d.mts +13 -0
  36. package/dist/lib/smokeTests/reporting.mjs +355 -0
  37. package/dist/lib/smokeTests/runSmokeTests.d.mts +5 -0
  38. package/dist/lib/smokeTests/runSmokeTests.mjs +144 -0
  39. package/dist/lib/smokeTests/state.d.mts +48 -0
  40. package/dist/lib/smokeTests/state.mjs +57 -0
  41. package/dist/lib/smokeTests/templates/SmokeTest.template.d.ts +1 -0
  42. package/dist/lib/smokeTests/templates/SmokeTest.template.js +81 -0
  43. package/dist/lib/smokeTests/templates/SmokeTestClient.template.d.ts +1 -0
  44. package/dist/lib/smokeTests/templates/SmokeTestClient.template.js +159 -0
  45. package/dist/lib/smokeTests/templates/smokeTestFunctions.template.d.ts +1 -0
  46. package/dist/lib/smokeTests/templates/smokeTestFunctions.template.js +19 -0
  47. package/dist/lib/smokeTests/types.d.mts +75 -0
  48. package/dist/lib/smokeTests/types.mjs +1 -0
  49. package/dist/lib/smokeTests/utils.d.mts +15 -0
  50. package/dist/lib/smokeTests/utils.mjs +147 -0
  51. package/dist/llms/index.d.ts +3 -0
  52. package/dist/llms/index.js +35 -0
  53. package/dist/llms/rules/interruptors.d.ts +1 -0
  54. package/dist/llms/rules/interruptors.js +243 -0
  55. package/dist/llms/rules/middleware.d.ts +1 -0
  56. package/dist/llms/rules/middleware.js +71 -0
  57. package/dist/llms/rules/react.d.ts +1 -0
  58. package/dist/llms/rules/react.js +106 -0
  59. package/dist/llms/rules/request-response.d.ts +1 -0
  60. package/dist/llms/rules/request-response.js +209 -0
  61. package/dist/runtime/client.d.ts +17 -0
  62. package/dist/runtime/client.js +74 -0
  63. package/dist/runtime/clientNavigation.d.ts +4 -0
  64. package/dist/runtime/clientNavigation.js +53 -0
  65. package/dist/runtime/clientNavigation.test.d.ts +1 -0
  66. package/dist/runtime/clientNavigation.test.js +55 -0
  67. package/dist/runtime/constants.d.ts +1 -0
  68. package/dist/runtime/constants.js +1 -0
  69. package/dist/runtime/entries/auth.d.ts +1 -0
  70. package/dist/runtime/entries/auth.js +1 -0
  71. package/dist/runtime/entries/client.d.ts +4 -0
  72. package/dist/runtime/entries/client.js +4 -0
  73. package/dist/runtime/entries/clientSSR.d.ts +1 -0
  74. package/dist/runtime/entries/clientSSR.js +1 -0
  75. package/dist/runtime/entries/navigation.d.ts +1 -0
  76. package/dist/runtime/entries/navigation.js +1 -0
  77. package/dist/runtime/entries/no-react-server.d.ts +0 -0
  78. package/dist/runtime/entries/no-react-server.js +2 -0
  79. package/dist/runtime/entries/react-server-only.d.ts +0 -0
  80. package/dist/runtime/entries/react-server-only.js +2 -0
  81. package/dist/runtime/entries/router.d.ts +2 -0
  82. package/dist/runtime/entries/router.js +2 -0
  83. package/dist/runtime/entries/ssr.d.ts +1 -0
  84. package/dist/runtime/entries/ssr.js +1 -0
  85. package/dist/runtime/entries/worker.d.ts +9 -0
  86. package/dist/runtime/entries/worker.js +9 -0
  87. package/dist/runtime/error.d.ts +6 -0
  88. package/dist/runtime/error.js +8 -0
  89. package/dist/runtime/imports/ClientOnly.d.ts +3 -0
  90. package/dist/runtime/imports/ClientOnly.js +8 -0
  91. package/dist/runtime/imports/client.d.ts +4 -0
  92. package/dist/runtime/imports/client.js +33 -0
  93. package/dist/runtime/imports/ssr.d.ts +5 -0
  94. package/dist/runtime/imports/ssr.js +20 -0
  95. package/dist/runtime/imports/worker.d.ts +5 -0
  96. package/dist/runtime/imports/worker.js +22 -0
  97. package/dist/runtime/lib/auth/index.d.ts +1 -0
  98. package/dist/runtime/lib/auth/index.js +1 -0
  99. package/dist/runtime/lib/auth/session.d.ts +50 -0
  100. package/dist/runtime/lib/auth/session.js +148 -0
  101. package/dist/runtime/lib/db/DOWorkerDialect.d.ts +29 -0
  102. package/dist/runtime/lib/db/DOWorkerDialect.js +66 -0
  103. package/dist/runtime/lib/db/SqliteDurableObject.d.ts +14 -0
  104. package/dist/runtime/lib/db/SqliteDurableObject.js +42 -0
  105. package/dist/runtime/lib/db/createDb.d.ts +2 -0
  106. package/dist/runtime/lib/db/createDb.js +33 -0
  107. package/dist/runtime/lib/db/index.d.ts +4 -0
  108. package/dist/runtime/lib/db/index.js +3 -0
  109. package/dist/runtime/lib/db/migrations.d.ts +23 -0
  110. package/dist/runtime/lib/db/migrations.js +34 -0
  111. package/dist/runtime/lib/db/typeInference/assert.d.ts +2 -0
  112. package/dist/runtime/lib/db/typeInference/assert.js +1 -0
  113. package/dist/runtime/lib/db/typeInference/builders/alterColumn.d.ts +27 -0
  114. package/dist/runtime/lib/db/typeInference/builders/alterColumn.js +1 -0
  115. package/dist/runtime/lib/db/typeInference/builders/alterTable.d.ts +53 -0
  116. package/dist/runtime/lib/db/typeInference/builders/alterTable.js +1 -0
  117. package/dist/runtime/lib/db/typeInference/builders/columnDefinition.d.ts +26 -0
  118. package/dist/runtime/lib/db/typeInference/builders/columnDefinition.js +1 -0
  119. package/dist/runtime/lib/db/typeInference/builders/createTable.d.ts +49 -0
  120. package/dist/runtime/lib/db/typeInference/builders/createTable.js +1 -0
  121. package/dist/runtime/lib/db/typeInference/builders/createView.d.ts +17 -0
  122. package/dist/runtime/lib/db/typeInference/builders/createView.js +1 -0
  123. package/dist/runtime/lib/db/typeInference/builders/dropTable.d.ts +11 -0
  124. package/dist/runtime/lib/db/typeInference/builders/dropTable.js +1 -0
  125. package/dist/runtime/lib/db/typeInference/builders/dropView.d.ts +12 -0
  126. package/dist/runtime/lib/db/typeInference/builders/dropView.js +1 -0
  127. package/dist/runtime/lib/db/typeInference/builders/schema.d.ts +24 -0
  128. package/dist/runtime/lib/db/typeInference/builders/schema.js +1 -0
  129. package/dist/runtime/lib/db/typeInference/database.d.ts +27 -0
  130. package/dist/runtime/lib/db/typeInference/database.js +1 -0
  131. package/dist/runtime/lib/db/typeInference/typetests/alterTable.typetest.d.ts +1 -0
  132. package/dist/runtime/lib/db/typeInference/typetests/alterTable.typetest.js +360 -0
  133. package/dist/runtime/lib/db/typeInference/typetests/createTable.typetest.d.ts +1 -0
  134. package/dist/runtime/lib/db/typeInference/typetests/createTable.typetest.js +33 -0
  135. package/dist/runtime/lib/db/typeInference/typetests/dropTable.typetest.d.ts +1 -0
  136. package/dist/runtime/lib/db/typeInference/typetests/dropTable.typetest.js +143 -0
  137. package/dist/runtime/lib/db/typeInference/typetests/print.d.ts +3 -0
  138. package/dist/runtime/lib/db/typeInference/typetests/print.js +1 -0
  139. package/dist/runtime/lib/db/typeInference/typetests/testUtils.d.ts +2 -0
  140. package/dist/runtime/lib/db/typeInference/typetests/testUtils.js +1 -0
  141. package/dist/runtime/lib/db/typeInference/typetests/typeInference.typetest.d.ts +1 -0
  142. package/dist/runtime/lib/db/typeInference/typetests/typeInference.typetest.js +17 -0
  143. package/dist/runtime/lib/db/typeInference/utils.d.ts +82 -0
  144. package/dist/runtime/lib/db/typeInference/utils.js +2 -0
  145. package/dist/runtime/lib/debug.d.ts +2 -0
  146. package/dist/runtime/lib/debug.js +36 -0
  147. package/dist/runtime/lib/links.d.ts +14 -0
  148. package/dist/runtime/lib/links.js +38 -0
  149. package/dist/runtime/lib/realtime/client.d.ts +7 -0
  150. package/dist/runtime/lib/realtime/client.js +166 -0
  151. package/dist/runtime/lib/realtime/constants.d.ts +1 -0
  152. package/dist/runtime/lib/realtime/constants.js +1 -0
  153. package/dist/runtime/lib/realtime/durableObject.d.ts +29 -0
  154. package/dist/runtime/lib/realtime/durableObject.js +187 -0
  155. package/dist/runtime/lib/realtime/renderRealtimeClients.d.ts +7 -0
  156. package/dist/runtime/lib/realtime/renderRealtimeClients.js +6 -0
  157. package/dist/runtime/lib/realtime/shared.d.ts +10 -0
  158. package/dist/runtime/lib/realtime/shared.js +10 -0
  159. package/dist/runtime/lib/realtime/validateUpgradeRequest.d.ts +6 -0
  160. package/dist/runtime/lib/realtime/validateUpgradeRequest.js +29 -0
  161. package/dist/runtime/lib/realtime/worker.d.ts +3 -0
  162. package/dist/runtime/lib/realtime/worker.js +16 -0
  163. package/dist/runtime/lib/router.d.ts +56 -0
  164. package/dist/runtime/lib/router.js +210 -0
  165. package/dist/runtime/lib/router.test.d.ts +1 -0
  166. package/dist/runtime/lib/router.test.js +58 -0
  167. package/dist/runtime/lib/streams/consumeEventStream.d.ts +4 -0
  168. package/dist/runtime/lib/streams/consumeEventStream.js +13 -0
  169. package/dist/runtime/lib/turnstile/TurnstileScript.d.ts +1 -0
  170. package/dist/runtime/lib/turnstile/TurnstileScript.js +2 -0
  171. package/dist/runtime/lib/turnstile/turnstile.d.ts +3 -0
  172. package/dist/runtime/lib/turnstile/turnstile.js +3 -0
  173. package/dist/runtime/lib/turnstile/useTurnstile.d.ts +4 -0
  174. package/dist/runtime/lib/turnstile/useTurnstile.js +23 -0
  175. package/dist/runtime/lib/turnstile/verifyTurnstileToken.d.ts +4 -0
  176. package/dist/runtime/lib/turnstile/verifyTurnstileToken.js +15 -0
  177. package/dist/runtime/lib/utils.d.ts +1 -0
  178. package/dist/runtime/lib/utils.js +1 -0
  179. package/dist/runtime/register/client.d.ts +1 -0
  180. package/dist/runtime/register/client.js +5 -0
  181. package/dist/runtime/register/ssr.d.ts +3 -0
  182. package/dist/runtime/register/ssr.js +26 -0
  183. package/dist/runtime/register/worker.d.ts +4 -0
  184. package/dist/runtime/register/worker.js +42 -0
  185. package/dist/runtime/render/createClientManifest.d.ts +1 -0
  186. package/dist/runtime/render/createClientManifest.js +7 -0
  187. package/dist/runtime/render/createModuleMap.d.ts +1 -0
  188. package/dist/runtime/render/createModuleMap.js +13 -0
  189. package/dist/runtime/render/injectRSCPayload.d.ts +3 -0
  190. package/dist/runtime/render/injectRSCPayload.js +79 -0
  191. package/dist/runtime/render/renderRscThenableToHtmlStream.d.ts +9 -0
  192. package/dist/runtime/render/renderRscThenableToHtmlStream.js +49 -0
  193. package/dist/runtime/render/renderToRscStream.d.ts +5 -0
  194. package/dist/runtime/render/renderToRscStream.js +46 -0
  195. package/dist/runtime/render/renderToStream.d.ts +9 -0
  196. package/dist/runtime/render/renderToStream.js +27 -0
  197. package/dist/runtime/render/renderToString.d.ts +7 -0
  198. package/dist/runtime/render/renderToString.js +26 -0
  199. package/dist/runtime/render/transformRscToHtmlStream.d.ts +8 -0
  200. package/dist/runtime/render/transformRscToHtmlStream.js +19 -0
  201. package/dist/runtime/requestInfo/types.d.ts +11 -0
  202. package/dist/runtime/requestInfo/types.js +1 -0
  203. package/dist/runtime/requestInfo/worker.d.ts +5 -0
  204. package/dist/runtime/requestInfo/worker.js +33 -0
  205. package/dist/runtime/script.d.ts +5 -0
  206. package/dist/runtime/script.js +8 -0
  207. package/dist/runtime/ssrBridge.d.ts +2 -0
  208. package/dist/runtime/ssrBridge.js +11 -0
  209. package/dist/runtime/worker.d.ts +18 -0
  210. package/dist/runtime/worker.js +173 -0
  211. package/dist/scripts/__sdk.d.mts +1 -0
  212. package/dist/scripts/__sdk.mjs +14 -0
  213. package/dist/scripts/build-vendor-bundles.d.mts +1 -0
  214. package/dist/scripts/build-vendor-bundles.mjs +92 -0
  215. package/dist/scripts/debug-sync.d.mts +6 -0
  216. package/dist/scripts/debug-sync.mjs +224 -0
  217. package/dist/scripts/dev-init.d.mts +1 -0
  218. package/dist/scripts/dev-init.mjs +25 -0
  219. package/dist/scripts/ensure-deploy-env.d.mts +1 -0
  220. package/dist/scripts/ensure-deploy-env.mjs +271 -0
  221. package/dist/scripts/ensure-env.d.mts +1 -0
  222. package/dist/scripts/ensure-env.mjs +9 -0
  223. package/dist/scripts/migrate-new.d.mts +1 -0
  224. package/dist/scripts/migrate-new.mjs +51 -0
  225. package/dist/scripts/smoke-test.d.mts +1 -0
  226. package/dist/scripts/smoke-test.mjs +166 -0
  227. package/dist/scripts/worker-run.d.mts +1 -0
  228. package/dist/scripts/worker-run.mjs +82 -0
  229. package/dist/vite/aliasByEnvPlugin.d.mts +2 -0
  230. package/dist/vite/aliasByEnvPlugin.mjs +11 -0
  231. package/dist/vite/asyncSetupPlugin.d.mts +6 -0
  232. package/dist/vite/asyncSetupPlugin.mjs +23 -0
  233. package/dist/vite/checkIsUsingPrisma.d.mts +6 -0
  234. package/dist/vite/checkIsUsingPrisma.mjs +18 -0
  235. package/dist/vite/configPlugin.d.mts +9 -0
  236. package/dist/vite/configPlugin.mjs +169 -0
  237. package/dist/vite/copyPrismaWasmPlugin.d.mts +4 -0
  238. package/dist/vite/copyPrismaWasmPlugin.mjs +32 -0
  239. package/dist/vite/createDirectiveLookupPlugin.d.mts +21 -0
  240. package/dist/vite/createDirectiveLookupPlugin.mjs +231 -0
  241. package/dist/vite/customReactBuildPlugin.d.mts +4 -0
  242. package/dist/vite/customReactBuildPlugin.mjs +61 -0
  243. package/dist/vite/devServerTimingPlugin.d.mts +2 -0
  244. package/dist/vite/devServerTimingPlugin.mjs +24 -0
  245. package/dist/vite/directivesPlugin.d.mts +6 -0
  246. package/dist/vite/directivesPlugin.mjs +200 -0
  247. package/dist/vite/ensureAliasArray.d.mts +2 -0
  248. package/dist/vite/ensureAliasArray.mjs +17 -0
  249. package/dist/vite/findSpecifiers.d.mts +31 -0
  250. package/dist/vite/findSpecifiers.mjs +230 -0
  251. package/dist/vite/findSsrSpecifiers.d.mts +11 -0
  252. package/dist/vite/findSsrSpecifiers.mjs +67 -0
  253. package/dist/vite/hasDirective.d.mts +7 -0
  254. package/dist/vite/hasDirective.mjs +54 -0
  255. package/dist/vite/hasOwnCloudflareVitePlugin.d.mts +3 -0
  256. package/dist/vite/hasOwnCloudflareVitePlugin.mjs +14 -0
  257. package/dist/vite/index.d.mts +1 -0
  258. package/dist/vite/index.mjs +1 -0
  259. package/dist/vite/injectHmrPreambleJsxPlugin.d.mts +2 -0
  260. package/dist/vite/injectHmrPreambleJsxPlugin.mjs +22 -0
  261. package/dist/vite/injectVitePreamblePlugin.d.mts +4 -0
  262. package/dist/vite/injectVitePreamblePlugin.mjs +23 -0
  263. package/dist/vite/invalidateCacheIfPrismaClientChanged.d.mts +3 -0
  264. package/dist/vite/invalidateCacheIfPrismaClientChanged.mjs +27 -0
  265. package/dist/vite/invalidateModule.d.mts +6 -0
  266. package/dist/vite/invalidateModule.mjs +30 -0
  267. package/dist/vite/miniflareHMRPlugin.d.mts +10 -0
  268. package/dist/vite/miniflareHMRPlugin.mjs +209 -0
  269. package/dist/vite/miniflarePlugin.d.mts +9 -0
  270. package/dist/vite/miniflarePlugin.mjs +135 -0
  271. package/dist/vite/moveStaticAssetsPlugin.d.mts +4 -0
  272. package/dist/vite/moveStaticAssetsPlugin.mjs +12 -0
  273. package/dist/vite/normalizeModulePath.d.mts +1 -0
  274. package/dist/vite/normalizeModulePath.mjs +13 -0
  275. package/dist/vite/prismaPlugin.d.mts +4 -0
  276. package/dist/vite/prismaPlugin.mjs +43 -0
  277. package/dist/vite/reactConditionsResolverPlugin.d.mts +16 -0
  278. package/dist/vite/reactConditionsResolverPlugin.mjs +179 -0
  279. package/dist/vite/redwoodPlugin.d.mts +12 -0
  280. package/dist/vite/redwoodPlugin.mjs +105 -0
  281. package/dist/vite/requestUtils.d.mts +6 -0
  282. package/dist/vite/requestUtils.mjs +35 -0
  283. package/dist/vite/setupEnvFiles.d.mts +4 -0
  284. package/dist/vite/setupEnvFiles.mjs +31 -0
  285. package/dist/vite/ssrBridgePlugin.d.mts +7 -0
  286. package/dist/vite/ssrBridgePlugin.mjs +137 -0
  287. package/dist/vite/transformClientComponents.d.mts +12 -0
  288. package/dist/vite/transformClientComponents.mjs +116 -0
  289. package/dist/vite/transformClientComponents.test.d.mts +1 -0
  290. package/dist/vite/transformClientComponents.test.mjs +264 -0
  291. package/dist/vite/transformJsxScriptTagsPlugin.d.mts +8 -0
  292. package/dist/vite/transformJsxScriptTagsPlugin.mjs +315 -0
  293. package/dist/vite/transformJsxScriptTagsPlugin.test.d.mts +1 -0
  294. package/dist/vite/transformJsxScriptTagsPlugin.test.mjs +334 -0
  295. package/dist/vite/transformServerFunctions.d.mts +16 -0
  296. package/dist/vite/transformServerFunctions.mjs +296 -0
  297. package/dist/vite/transformServerFunctions.test.d.mts +1 -0
  298. package/dist/vite/transformServerFunctions.test.mjs +124 -0
  299. package/dist/vite/useClientLookupPlugin.d.mts +5 -0
  300. package/dist/vite/useClientLookupPlugin.mjs +15 -0
  301. package/dist/vite/useClientPlugin.d.mts +8 -0
  302. package/dist/vite/useClientPlugin.mjs +295 -0
  303. package/dist/vite/useClientPlugin.test.d.mts +1 -0
  304. package/dist/vite/useClientPlugin.test.mjs +1204 -0
  305. package/dist/vite/useServerLookupPlugin.d.mts +5 -0
  306. package/dist/vite/useServerLookupPlugin.mjs +15 -0
  307. package/dist/vite/useServerPlugin.d.mts +1 -0
  308. package/dist/vite/useServerPlugin.mjs +1 -0
  309. package/dist/vite/virtualPlugin.d.mts +2 -0
  310. package/dist/vite/virtualPlugin.mjs +18 -0
  311. package/dist/vite/vitePreamblePlugin.d.mts +1 -0
  312. package/dist/vite/vitePreamblePlugin.mjs +11 -0
  313. package/dist/worker/__ssr_bridge.js +8947 -0
  314. package/dist/worker/__ssr_bridge.js.map +1 -0
  315. package/package.json +1 -1
  316. package/dist/vite/invalidateClientModule.d.mts +0 -2
  317. package/dist/vite/invalidateClientModule.mjs +0 -8
  318. package/dist/vite/invalidateModule copy.d.mts +0 -2
  319. package/dist/vite/invalidateModule copy.mjs +0 -14
  320. package/dist/vite/invalidateSSRModule.d.mts +0 -2
  321. package/dist/vite/invalidateSSRModule.mjs +0 -7
  322. package/dist/vite/mode.d.mts +0 -5
  323. package/dist/vite/mode.mjs +0 -25
  324. package/dist/vite/modePlugin.d.mts +0 -2
  325. package/dist/vite/modePlugin.mjs +0 -10
  326. /package/dist/vite/{isJsFile.d.ts → isJsFile.d.mts} +0 -0
  327. /package/dist/vite/{isJsFile.js → isJsFile.mjs} +0 -0
@@ -0,0 +1,334 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { transformJsxScriptTagsCode } from "./transformJsxScriptTagsPlugin.mjs";
3
+ describe("transformJsxScriptTagsCode", () => {
4
+ const mockManifest = {
5
+ "src/client.tsx": { file: "assets/client-a1b2c3d4.js" },
6
+ "src/entry.js": { file: "assets/entry-e5f6g7h8.js" },
7
+ "src/styles.css": { file: "assets/styles-i9j0k1l2.css" },
8
+ };
9
+ it("transforms script src attributes in JSX", async () => {
10
+ const code = `
11
+ jsx("script", {
12
+ src: "/src/client.tsx",
13
+ type: "module"
14
+ })
15
+ `;
16
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
17
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
18
+
19
+ jsx("script", {
20
+ src: "/assets/client-a1b2c3d4.js",
21
+ type: "module",
22
+ nonce: requestInfo.rw.nonce
23
+ })
24
+ `);
25
+ });
26
+ it("transforms inline scripts with dynamic imports", async () => {
27
+ const code = `
28
+ jsx("script", {
29
+ type: "module",
30
+ children: "import('/src/client.tsx').then(module => { console.log(module); })"
31
+ })
32
+ `;
33
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
34
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
35
+
36
+ jsx("script", {
37
+ type: "module",
38
+ children: "import(\\"\/assets\/client-a1b2c3d4.js\\").then(module => { console.log(module); })",
39
+ nonce: requestInfo.rw.nonce
40
+ })
41
+ `);
42
+ });
43
+ it("transforms inline scripts with type=module", async () => {
44
+ const code = `
45
+ jsx("script", { type: "module", children: "import('/src/client.tsx')" })
46
+ `;
47
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
48
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
49
+
50
+ jsx("script", { type: "module", children: "import(\\"\/assets\/client-a1b2c3d4.js\\")",
51
+ nonce: requestInfo.rw.nonce
52
+ })
53
+ `);
54
+ });
55
+ it("transforms inline scripts with multiline content", async () => {
56
+ const code = `
57
+ jsx("script", {
58
+ type: "module",
59
+ children: \`
60
+ // Some comments here
61
+ const init = async () => {
62
+ await import('/src/entry.js');
63
+ console.log('initialized');
64
+ };
65
+ init();
66
+ \`
67
+ })
68
+ `;
69
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
70
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
71
+
72
+ jsx("script", {
73
+ type: "module",
74
+ children: \`
75
+ // Some comments here
76
+ const init = async () => {
77
+ await import("/assets/entry-e5f6g7h8.js");
78
+ console.log('initialized');
79
+ };
80
+ init();
81
+ \`,
82
+ nonce: requestInfo.rw.nonce
83
+ })
84
+ `);
85
+ });
86
+ it("transforms multiple imports in the same inline script", async () => {
87
+ const code = `
88
+ jsx("script", {
89
+ type: "module",
90
+ children: \`
91
+ import('/src/client.tsx');
92
+ import('/src/entry.js');
93
+ \`
94
+ })
95
+ `;
96
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
97
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
98
+
99
+ jsx("script", {
100
+ type: "module",
101
+ children: \`
102
+ import("/assets/client-a1b2c3d4.js");
103
+ import("/assets/entry-e5f6g7h8.js");
104
+ \`,
105
+ nonce: requestInfo.rw.nonce
106
+ })
107
+ `);
108
+ });
109
+ it("transforms link href attributes with preload rel", async () => {
110
+ const code = `
111
+ jsx("link", {
112
+ rel: "preload",
113
+ href: "/src/client.tsx",
114
+ as: "script"
115
+ })
116
+ `;
117
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
118
+ expect(result?.code).toEqual(`
119
+ jsx("link", {
120
+ rel: "preload",
121
+ href: "/assets/client-a1b2c3d4.js",
122
+ as: "script"
123
+ })
124
+ `);
125
+ });
126
+ it("transforms link href attributes with modulepreload rel", async () => {
127
+ const code = `
128
+ jsx("link", {
129
+ href: "/src/client.tsx",
130
+ rel: "modulepreload"
131
+ })
132
+ `;
133
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
134
+ expect(result?.code).toEqual(`
135
+ jsx("link", {
136
+ href: "/assets/client-a1b2c3d4.js",
137
+ rel: "modulepreload"
138
+ })
139
+ `);
140
+ });
141
+ it("transforms real-world Document component example", async () => {
142
+ const code = `
143
+ jsx("html", {
144
+ lang: "en",
145
+ children: [
146
+ jsx("head", {
147
+ children: [
148
+ jsx("meta", { charSet: "utf-8" }),
149
+ jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }),
150
+ jsx("title", { children: "@redwoodjs/starter-standard" }),
151
+ jsx("link", { rel: "modulepreload", href: "/src/client.tsx", as: "script" })
152
+ ]
153
+ }),
154
+ jsx("body", {
155
+ children: [
156
+ jsx("div", { id: "root", children: props.children }),
157
+ jsx("script", { children: 'import("/src/client.tsx")' })
158
+ ]
159
+ })
160
+ ]
161
+ })
162
+ `;
163
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
164
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
165
+
166
+ jsx("html", {
167
+ lang: "en",
168
+ children: [
169
+ jsx("head", {
170
+ children: [
171
+ jsx("meta", { charSet: "utf-8" }),
172
+ jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }),
173
+ jsx("title", { children: "@redwoodjs/starter-standard" }),
174
+ jsx("link", { rel: "modulepreload", href: "/assets/client-a1b2c3d4.js", as: "script" })
175
+ ]
176
+ }),
177
+ jsx("body", {
178
+ children: [
179
+ jsx("div", { id: "root", children: props.children }),
180
+ jsx("script", { children: "import(\\"\/assets\/client-a1b2c3d4.js\\")",
181
+ nonce: requestInfo.rw.nonce
182
+ })
183
+ ]
184
+ })
185
+ ]
186
+ })
187
+ `);
188
+ });
189
+ it("returns null when no transformations are needed", async () => {
190
+ const code = `
191
+ jsx("div", { children: "No scripts or links here" })
192
+ `;
193
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
194
+ expect(result).toBeUndefined();
195
+ });
196
+ it("handles paths not found in manifest", async () => {
197
+ const code = `
198
+ jsx("script", {
199
+ src: "/src/non-existent.js",
200
+ type: "module"
201
+ })
202
+ `;
203
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
204
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
205
+
206
+ jsx("script", {
207
+ src: "/src/non-existent.js",
208
+ type: "module",
209
+ nonce: requestInfo.rw.nonce
210
+ })
211
+ `);
212
+ });
213
+ it("adds nonce to script tags with src attribute and imports requestInfo", async () => {
214
+ const code = `
215
+ jsx("script", {
216
+ src: "/src/client.tsx",
217
+ type: "module"
218
+ })
219
+ `;
220
+ const result = await transformJsxScriptTagsCode(code, mockManifest);
221
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
222
+
223
+ jsx("script", {
224
+ src: "/assets/client-a1b2c3d4.js",
225
+ type: "module",
226
+ nonce: requestInfo.rw.nonce
227
+ })
228
+ `);
229
+ });
230
+ it("adds nonce to script tags with string literal children", async () => {
231
+ const code = `
232
+ jsx("script", {
233
+ type: "module",
234
+ children: "console.log('hello world')"
235
+ })
236
+ `;
237
+ const result = await transformJsxScriptTagsCode(code, {});
238
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
239
+
240
+ jsx("script", {
241
+ type: "module",
242
+ children: "console.log('hello world')",
243
+ nonce: requestInfo.rw.nonce
244
+ })
245
+ `);
246
+ });
247
+ it("does not add nonce to script tags with dangerouslySetInnerHTML", async () => {
248
+ const code = `
249
+ jsx("script", {
250
+ type: "module",
251
+ dangerouslySetInnerHTML: { __html: "console.log('hello world')" }
252
+ })
253
+ `;
254
+ const result = await transformJsxScriptTagsCode(code, {});
255
+ expect(result?.code).toEqual(undefined);
256
+ });
257
+ it("does not add nonce to script tags that already have nonce", async () => {
258
+ const code = `
259
+ jsx("script", {
260
+ type: "module",
261
+ children: "console.log('hello world')",
262
+ nonce: "existing-nonce"
263
+ })
264
+ `;
265
+ const result = await transformJsxScriptTagsCode(code, {});
266
+ expect(result?.code).toEqual(undefined);
267
+ });
268
+ it("uses existing requestInfo import if already present", async () => {
269
+ const code = `
270
+ import { foo } from 'bar';
271
+ import { requestInfo, someOtherThing } from "rwsdk/worker";
272
+
273
+ jsx("script", {
274
+ type: "module",
275
+ children: "console.log('hello world')"
276
+ })
277
+ `;
278
+ const result = await transformJsxScriptTagsCode(code, {});
279
+ expect(result?.code).toEqual(`
280
+ import { foo } from 'bar';
281
+ import { requestInfo, someOtherThing } from "rwsdk/worker";
282
+
283
+ jsx("script", {
284
+ type: "module",
285
+ children: "console.log('hello world')",
286
+ nonce: requestInfo.rw.nonce
287
+ })
288
+ `);
289
+ // Ensure we didn't duplicate the import
290
+ const importCount = (result?.code.match(/from "rwsdk\/worker"/g) || [])
291
+ .length;
292
+ expect(importCount).toBe(1);
293
+ });
294
+ it("adds requestInfo to existing SDK import if module already imported", async () => {
295
+ const code = `
296
+ import { foo } from 'bar';
297
+ import { someOtherThing } from "rwsdk/worker";
298
+
299
+ jsx("script", {
300
+ type: "module",
301
+ children: "console.log('hello world')"
302
+ })
303
+ `;
304
+ const result = await transformJsxScriptTagsCode(code, {});
305
+ expect(result?.code).toEqual(`
306
+ import { foo } from 'bar';
307
+ import { someOtherThing, requestInfo } from "rwsdk/worker";
308
+
309
+ jsx("script", {
310
+ type: "module",
311
+ children: "console.log('hello world')",
312
+ nonce: requestInfo.rw.nonce
313
+ })
314
+ `);
315
+ });
316
+ it("works in development mode without a manifest", async () => {
317
+ const code = `
318
+ jsx("script", {
319
+ src: "/src/client.tsx",
320
+ type: "module"
321
+ })
322
+ `;
323
+ // Call without providing manifest (simulating dev mode)
324
+ const result = await transformJsxScriptTagsCode(code);
325
+ expect(result?.code).toEqual(`import { requestInfo } from "rwsdk/worker";
326
+
327
+ jsx("script", {
328
+ src: "/src/client.tsx",
329
+ type: "module",
330
+ nonce: requestInfo.rw.nonce
331
+ })
332
+ `);
333
+ });
334
+ });
@@ -0,0 +1,16 @@
1
+ interface TransformResult {
2
+ code: string;
3
+ map?: any;
4
+ }
5
+ type ExportInfoCompat = {
6
+ localFunctions: Set<string>;
7
+ reExports: Array<{
8
+ localName: string;
9
+ originalName: string;
10
+ moduleSpecifier: string;
11
+ }>;
12
+ };
13
+ export declare const findExportedFunctions: (code: string, normalizedId?: string) => Set<string>;
14
+ export declare const findExportInfo: (code: string, normalizedId?: string) => ExportInfoCompat;
15
+ export declare const transformServerFunctions: (code: string, normalizedId: string, environment: "client" | "worker" | "ssr", serverFiles?: Set<string>, addServerModule?: (environment: string, id: string) => void) => TransformResult | undefined;
16
+ export type { TransformResult };
@@ -0,0 +1,296 @@
1
+ import MagicString from "magic-string";
2
+ import debug from "debug";
3
+ import { hasDirective } from "./hasDirective.mjs";
4
+ import { findExports } from "./findSpecifiers.mjs";
5
+ import { parse as sgParse, Lang as SgLang, Lang } from "@ast-grep/napi";
6
+ import path from "path";
7
+ const log = debug("rwsdk:vite:transform-server-functions");
8
+ export const findExportedFunctions = (code, normalizedId) => {
9
+ return findExportInfo(code, normalizedId).localFunctions;
10
+ };
11
+ export const findExportInfo = (code, normalizedId) => {
12
+ process.env.VERBOSE && log("Finding exported functions in source file");
13
+ const localFunctions = new Set();
14
+ const reExports = [];
15
+ const exportInfos = findExports(normalizedId || "file.ts", code, log);
16
+ for (const exportInfo of exportInfos) {
17
+ if (exportInfo.isReExport && exportInfo.moduleSpecifier) {
18
+ // For re-exports, we need to determine the original name by parsing the code
19
+ // For "export { default as multiply }", we want localName="multiply", originalName="default"
20
+ // For "export { sum }", we want localName="sum", originalName="sum"
21
+ let originalName = exportInfo.name;
22
+ // Check if this is a default re-export with alias
23
+ if (exportInfo.isDefault && exportInfo.alias) {
24
+ originalName = "default";
25
+ }
26
+ reExports.push({
27
+ localName: exportInfo.name,
28
+ originalName: originalName,
29
+ moduleSpecifier: exportInfo.moduleSpecifier,
30
+ });
31
+ process.env.VERBOSE &&
32
+ log("Found re-exported function: %s (original: %s) from %s", exportInfo.name, originalName, exportInfo.moduleSpecifier);
33
+ }
34
+ else {
35
+ localFunctions.add(exportInfo.name);
36
+ process.env.VERBOSE &&
37
+ log("Found exported function: %s", exportInfo.name);
38
+ }
39
+ }
40
+ log("Found %d local functions: %O", localFunctions.size, Array.from(localFunctions));
41
+ log("Found %d re-exports: %O", reExports.length, reExports.map((r) => `${r.localName} from ${r.moduleSpecifier}`));
42
+ return { localFunctions, reExports };
43
+ };
44
+ // Helper function to find default function names using ast-grep
45
+ function findDefaultFunctionName(code, normalizedId) {
46
+ const ext = path.extname(normalizedId).toLowerCase();
47
+ const lang = ext === ".tsx" || ext === ".jsx" ? Lang.Tsx : SgLang.TypeScript;
48
+ try {
49
+ const root = sgParse(lang, code);
50
+ const matches = root
51
+ .root()
52
+ .findAll("export default function $NAME($$$) { $$$ }");
53
+ if (matches.length > 0) {
54
+ const nameCapture = matches[0].getMatch("NAME");
55
+ return nameCapture?.text() || null;
56
+ }
57
+ }
58
+ catch (err) {
59
+ process.env.VERBOSE && log("Error finding default function name: %O", err);
60
+ }
61
+ return null;
62
+ }
63
+ // Helper function to check if there's a default export (not re-export)
64
+ function hasDefaultExport(code, normalizedId) {
65
+ const ext = path.extname(normalizedId).toLowerCase();
66
+ const lang = ext === ".tsx" || ext === ".jsx" ? Lang.Tsx : SgLang.TypeScript;
67
+ try {
68
+ const root = sgParse(lang, code);
69
+ // Check for any export default statements
70
+ const patterns = [
71
+ "export default function $$$",
72
+ "export default function($$$) { $$$ }",
73
+ "export default $$$",
74
+ ];
75
+ for (const pattern of patterns) {
76
+ const matches = root.root().findAll(pattern);
77
+ if (matches.length > 0) {
78
+ return true;
79
+ }
80
+ }
81
+ }
82
+ catch (err) {
83
+ process.env.VERBOSE && log("Error checking for default export: %O", err);
84
+ }
85
+ return false;
86
+ }
87
+ export const transformServerFunctions = (code, normalizedId, environment, serverFiles, addServerModule) => {
88
+ process.env.VERBOSE &&
89
+ log("Transform server functions called for normalizedId=%s, environment=%s", normalizedId, environment);
90
+ if (!hasDirective(code, "use server")) {
91
+ log("Skipping: no 'use server' directive in id=%s", normalizedId);
92
+ process.env.VERBOSE &&
93
+ log(":VERBOSE: Returning code unchanged for id=%s:\n%s", normalizedId, code);
94
+ return;
95
+ }
96
+ log("Processing 'use server' module: normalizedId=%s, environment=%s", normalizedId, environment);
97
+ addServerModule?.(environment, normalizedId);
98
+ if (environment === "ssr" || environment === "client") {
99
+ log(`Transforming for ${environment} environment: normalizedId=%s`, normalizedId);
100
+ const exportInfo = findExportInfo(code, normalizedId);
101
+ const allExports = new Set([
102
+ ...exportInfo.localFunctions,
103
+ ...exportInfo.reExports.map((r) => r.localName),
104
+ ]);
105
+ // Check for default function exports that should also be named exports
106
+ const defaultFunctionName = findDefaultFunctionName(code, normalizedId);
107
+ if (defaultFunctionName) {
108
+ allExports.add(defaultFunctionName);
109
+ }
110
+ // Generate completely new code for SSR
111
+ const s = new MagicString("");
112
+ if (environment === "ssr") {
113
+ s.append('import { createServerReference } from "rwsdk/__ssr";\n\n');
114
+ }
115
+ else {
116
+ s.append('import { createServerReference } from "rwsdk/client";\n\n');
117
+ }
118
+ for (const name of allExports) {
119
+ if (name !== "default" && name !== defaultFunctionName) {
120
+ s.append(`export let ${name} = createServerReference(${JSON.stringify(normalizedId)}, ${JSON.stringify(name)});\n`);
121
+ log(`Added ${environment} server reference for function: %s in normalizedId=%s`, name, normalizedId);
122
+ }
123
+ }
124
+ // Check for default export in the actual module (not re-exports)
125
+ if (hasDefaultExport(code, normalizedId)) {
126
+ s.append(`\nexport default createServerReference(${JSON.stringify(normalizedId)}, "default");\n`);
127
+ log(`Added ${environment} server reference for default export in normalizedId=%s`, normalizedId);
128
+ }
129
+ log(`${environment} transformation complete for normalizedId=%s`, normalizedId);
130
+ return {
131
+ code: s.toString(),
132
+ map: s.generateMap({
133
+ source: normalizedId,
134
+ includeContent: true,
135
+ hires: true,
136
+ }),
137
+ };
138
+ }
139
+ else if (environment === "worker") {
140
+ log("Transforming for worker environment: normalizedId=%s", normalizedId);
141
+ const exportInfo = findExportInfo(code, normalizedId);
142
+ const s = new MagicString(code);
143
+ // Remove "use server" directive first
144
+ const directiveRegex = /^(\s*)(['"]use server['"])\s*;?\s*$/gm;
145
+ let match;
146
+ while ((match = directiveRegex.exec(code)) !== null) {
147
+ const start = match.index;
148
+ const end = match.index + match[0].length;
149
+ s.remove(start, end);
150
+ process.env.VERBOSE &&
151
+ log("Removed 'use server' directive from normalizedId=%s", normalizedId);
152
+ break; // Only remove the first one
153
+ }
154
+ // Add imports at the very beginning
155
+ let importsToAdd = [];
156
+ // Add imports for re-exported functions so they exist in scope
157
+ for (const reExport of exportInfo.reExports) {
158
+ // Fix the import statement - the originalName is what we import, localName is the alias
159
+ const importStatement = reExport.originalName === "default"
160
+ ? `import { default as ${reExport.localName} } from "${reExport.moduleSpecifier}";`
161
+ : reExport.originalName === reExport.localName
162
+ ? `import { ${reExport.originalName} } from "${reExport.moduleSpecifier}";`
163
+ : `import { ${reExport.originalName} as ${reExport.localName} } from "${reExport.moduleSpecifier}";`;
164
+ importsToAdd.push(importStatement);
165
+ log("Added import for re-exported function: %s from %s in normalizedId=%s", reExport.localName, reExport.moduleSpecifier, normalizedId);
166
+ }
167
+ // Add registerServerReference import
168
+ importsToAdd.push('import { registerServerReference } from "rwsdk/worker";');
169
+ // Add imports - position depends on whether file starts with block comment
170
+ if (importsToAdd.length > 0) {
171
+ const trimmedCode = code.trim();
172
+ if (trimmedCode.startsWith("/*")) {
173
+ // Find the end of the block comment
174
+ const blockCommentEnd = code.indexOf("*/");
175
+ if (blockCommentEnd !== -1) {
176
+ // Insert after the block comment
177
+ const insertPos = blockCommentEnd + 2;
178
+ // Find the next newline after the block comment
179
+ const nextNewline = code.indexOf("\n", insertPos);
180
+ const actualInsertPos = nextNewline !== -1 ? nextNewline + 1 : insertPos;
181
+ s.appendLeft(actualInsertPos, importsToAdd.join("\n") + "\n");
182
+ }
183
+ else {
184
+ s.prepend(importsToAdd.join("\n") + "\n");
185
+ }
186
+ }
187
+ else {
188
+ // No block comment at start, add at beginning
189
+ s.prepend(importsToAdd.join("\n") + "\n");
190
+ }
191
+ }
192
+ // Handle default export renaming if present
193
+ const hasDefExport = hasDefaultExport(code, normalizedId);
194
+ if (hasDefExport) {
195
+ // Find and rename default function export using ast-grep
196
+ const ext = path.extname(normalizedId).toLowerCase();
197
+ const lang = ext === ".tsx" || ext === ".jsx" ? Lang.Tsx : SgLang.TypeScript;
198
+ try {
199
+ const root = sgParse(lang, code);
200
+ // Handle named default function: export default function myFunc() {}
201
+ const namedMatches = root
202
+ .root()
203
+ .findAll("export default function $NAME($$$) { $$$ }");
204
+ if (namedMatches.length > 0) {
205
+ const match = namedMatches[0];
206
+ const range = match.range();
207
+ const funcName = match.getMatch("NAME")?.text();
208
+ if (funcName) {
209
+ // Replace "export default function myFunc" with "function __defaultServerFunction__"
210
+ const newText = match
211
+ .text()
212
+ .replace(`export default function ${funcName}`, "function __defaultServerFunction__");
213
+ s.overwrite(range.start.index, range.end.index, newText);
214
+ s.append("\nexport default __defaultServerFunction__;\n");
215
+ }
216
+ }
217
+ else {
218
+ // Handle anonymous default function: export default function() {}
219
+ const anonMatches = root
220
+ .root()
221
+ .findAll("export default function($$$) { $$$ }");
222
+ if (anonMatches.length > 0) {
223
+ const match = anonMatches[0];
224
+ const range = match.range();
225
+ const newText = match
226
+ .text()
227
+ .replace("export default function", "function __defaultServerFunction__");
228
+ s.overwrite(range.start.index, range.end.index, newText);
229
+ s.append("\nexport default __defaultServerFunction__;\n");
230
+ }
231
+ else {
232
+ const predefinedMatches = root
233
+ .root()
234
+ .findAll("export default $NAME");
235
+ if (predefinedMatches.length > 0) {
236
+ const match = predefinedMatches[0];
237
+ const nameCapture = match.getMatch("NAME")?.text();
238
+ if (nameCapture) {
239
+ s.append(`const __defaultServerFunction__ = ${nameCapture};\n`);
240
+ }
241
+ }
242
+ }
243
+ }
244
+ }
245
+ catch (err) {
246
+ process.env.VERBOSE &&
247
+ log("Error processing default function: %O", err);
248
+ }
249
+ }
250
+ // Add registration calls at the end
251
+ let registrationCalls = [];
252
+ const registeredFunctions = new Set(); // Track to avoid duplicates
253
+ if (hasDefExport) {
254
+ registrationCalls.push(`registerServerReference(__defaultServerFunction__, ${JSON.stringify(normalizedId)}, "default")`);
255
+ registeredFunctions.add("default");
256
+ log("Registered worker server reference for default export in normalizedId=%s", normalizedId);
257
+ }
258
+ // Register local functions
259
+ const defaultFunctionName = findDefaultFunctionName(code, normalizedId);
260
+ for (const name of exportInfo.localFunctions) {
261
+ if (name === "__defaultServerFunction__" ||
262
+ name === "default" ||
263
+ name === defaultFunctionName)
264
+ continue;
265
+ // Skip if already registered
266
+ if (registeredFunctions.has(name))
267
+ continue;
268
+ registrationCalls.push(`registerServerReference(${name}, ${JSON.stringify(normalizedId)}, ${JSON.stringify(name)})`);
269
+ registeredFunctions.add(name);
270
+ log("Registered worker server reference for local function: %s in normalizedId=%s", name, normalizedId);
271
+ }
272
+ // Register re-exported functions
273
+ for (const reExport of exportInfo.reExports) {
274
+ // Skip if already registered
275
+ if (registeredFunctions.has(reExport.localName))
276
+ continue;
277
+ registrationCalls.push(`registerServerReference(${reExport.localName}, ${JSON.stringify(normalizedId)}, ${JSON.stringify(reExport.localName)})`);
278
+ registeredFunctions.add(reExport.localName);
279
+ log("Registered worker server reference for re-exported function: %s in normalizedId=%s", reExport.localName, normalizedId);
280
+ }
281
+ if (registrationCalls.length > 0) {
282
+ s.append(registrationCalls.join("\n") + "\n");
283
+ }
284
+ log("Worker transformation complete for normalizedId=%s", normalizedId);
285
+ return {
286
+ code: s.toString(),
287
+ map: s.generateMap({
288
+ source: normalizedId,
289
+ includeContent: true,
290
+ hires: true,
291
+ }),
292
+ };
293
+ }
294
+ process.env.VERBOSE &&
295
+ log("No transformation applied for environment=%s, normalizedId=%s", environment, normalizedId);
296
+ };
@@ -0,0 +1 @@
1
+ export {};