rwsdk 0.1.15 → 0.1.16

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 (287) hide show
  1. package/package.json +1 -1
  2. package/dist/lib/$.d.mts +0 -8
  3. package/dist/lib/$.mjs +0 -5
  4. package/dist/lib/constants.d.mts +0 -4
  5. package/dist/lib/constants.mjs +0 -6
  6. package/dist/lib/findWranglerConfig.d.mts +0 -1
  7. package/dist/lib/findWranglerConfig.mjs +0 -12
  8. package/dist/lib/getShortName.d.mts +0 -1
  9. package/dist/lib/getShortName.mjs +0 -2
  10. package/dist/lib/getSrcPaths.d.ts +0 -15
  11. package/dist/lib/getSrcPaths.js +0 -80
  12. package/dist/lib/hasPkgScript.d.mts +0 -1
  13. package/dist/lib/hasPkgScript.mjs +0 -9
  14. package/dist/lib/jsonUtils.d.mts +0 -28
  15. package/dist/lib/jsonUtils.mjs +0 -167
  16. package/dist/lib/setupEnvFiles.d.mts +0 -4
  17. package/dist/lib/setupEnvFiles.mjs +0 -31
  18. package/dist/lib/smokeTests/artifacts.d.mts +0 -10
  19. package/dist/lib/smokeTests/artifacts.mjs +0 -164
  20. package/dist/lib/smokeTests/browser.d.mts +0 -48
  21. package/dist/lib/smokeTests/browser.mjs +0 -1041
  22. package/dist/lib/smokeTests/cleanup.d.mts +0 -5
  23. package/dist/lib/smokeTests/cleanup.mjs +0 -214
  24. package/dist/lib/smokeTests/codeUpdates.d.mts +0 -8
  25. package/dist/lib/smokeTests/codeUpdates.mjs +0 -229
  26. package/dist/lib/smokeTests/constants.d.mts +0 -5
  27. package/dist/lib/smokeTests/constants.mjs +0 -10
  28. package/dist/lib/smokeTests/development.d.mts +0 -11
  29. package/dist/lib/smokeTests/development.mjs +0 -209
  30. package/dist/lib/smokeTests/environment.d.mts +0 -14
  31. package/dist/lib/smokeTests/environment.mjs +0 -163
  32. package/dist/lib/smokeTests/release.d.mts +0 -61
  33. package/dist/lib/smokeTests/release.mjs +0 -526
  34. package/dist/lib/smokeTests/reporting.d.mts +0 -13
  35. package/dist/lib/smokeTests/reporting.mjs +0 -355
  36. package/dist/lib/smokeTests/runSmokeTests.d.mts +0 -5
  37. package/dist/lib/smokeTests/runSmokeTests.mjs +0 -144
  38. package/dist/lib/smokeTests/state.d.mts +0 -48
  39. package/dist/lib/smokeTests/state.mjs +0 -57
  40. package/dist/lib/smokeTests/templates/SmokeTest.template.d.ts +0 -1
  41. package/dist/lib/smokeTests/templates/SmokeTest.template.js +0 -81
  42. package/dist/lib/smokeTests/templates/SmokeTestClient.template.d.ts +0 -1
  43. package/dist/lib/smokeTests/templates/SmokeTestClient.template.js +0 -159
  44. package/dist/lib/smokeTests/templates/smokeTestFunctions.template.d.ts +0 -1
  45. package/dist/lib/smokeTests/templates/smokeTestFunctions.template.js +0 -19
  46. package/dist/lib/smokeTests/types.d.mts +0 -75
  47. package/dist/lib/smokeTests/types.mjs +0 -1
  48. package/dist/lib/smokeTests/utils.d.mts +0 -15
  49. package/dist/lib/smokeTests/utils.mjs +0 -147
  50. package/dist/llms/index.d.ts +0 -3
  51. package/dist/llms/index.js +0 -35
  52. package/dist/llms/rules/interruptors.d.ts +0 -1
  53. package/dist/llms/rules/interruptors.js +0 -243
  54. package/dist/llms/rules/middleware.d.ts +0 -1
  55. package/dist/llms/rules/middleware.js +0 -71
  56. package/dist/llms/rules/react.d.ts +0 -1
  57. package/dist/llms/rules/react.js +0 -106
  58. package/dist/llms/rules/request-response.d.ts +0 -1
  59. package/dist/llms/rules/request-response.js +0 -209
  60. package/dist/runtime/client.d.ts +0 -17
  61. package/dist/runtime/client.js +0 -74
  62. package/dist/runtime/clientNavigation.d.ts +0 -4
  63. package/dist/runtime/clientNavigation.js +0 -53
  64. package/dist/runtime/clientNavigation.test.d.ts +0 -1
  65. package/dist/runtime/clientNavigation.test.js +0 -55
  66. package/dist/runtime/constants.d.ts +0 -1
  67. package/dist/runtime/constants.js +0 -1
  68. package/dist/runtime/entries/auth.d.ts +0 -1
  69. package/dist/runtime/entries/auth.js +0 -1
  70. package/dist/runtime/entries/client.d.ts +0 -4
  71. package/dist/runtime/entries/client.js +0 -4
  72. package/dist/runtime/entries/clientSSR.d.ts +0 -1
  73. package/dist/runtime/entries/clientSSR.js +0 -1
  74. package/dist/runtime/entries/no-react-server.d.ts +0 -0
  75. package/dist/runtime/entries/no-react-server.js +0 -2
  76. package/dist/runtime/entries/react-server-only.d.ts +0 -0
  77. package/dist/runtime/entries/react-server-only.js +0 -2
  78. package/dist/runtime/entries/router.d.ts +0 -2
  79. package/dist/runtime/entries/router.js +0 -2
  80. package/dist/runtime/entries/ssr.d.ts +0 -1
  81. package/dist/runtime/entries/ssr.js +0 -1
  82. package/dist/runtime/entries/worker.d.ts +0 -9
  83. package/dist/runtime/entries/worker.js +0 -9
  84. package/dist/runtime/error.d.ts +0 -6
  85. package/dist/runtime/error.js +0 -8
  86. package/dist/runtime/imports/ClientOnly.d.ts +0 -3
  87. package/dist/runtime/imports/ClientOnly.js +0 -8
  88. package/dist/runtime/imports/client.d.ts +0 -4
  89. package/dist/runtime/imports/client.js +0 -33
  90. package/dist/runtime/imports/ssr.d.ts +0 -5
  91. package/dist/runtime/imports/ssr.js +0 -20
  92. package/dist/runtime/imports/worker.d.ts +0 -5
  93. package/dist/runtime/imports/worker.js +0 -22
  94. package/dist/runtime/lib/auth/index.d.ts +0 -1
  95. package/dist/runtime/lib/auth/index.js +0 -1
  96. package/dist/runtime/lib/auth/session.d.ts +0 -50
  97. package/dist/runtime/lib/auth/session.js +0 -148
  98. package/dist/runtime/lib/db/DOWorkerDialect.d.ts +0 -29
  99. package/dist/runtime/lib/db/DOWorkerDialect.js +0 -66
  100. package/dist/runtime/lib/db/SqliteDurableObject.d.ts +0 -14
  101. package/dist/runtime/lib/db/SqliteDurableObject.js +0 -42
  102. package/dist/runtime/lib/db/createDb.d.ts +0 -2
  103. package/dist/runtime/lib/db/createDb.js +0 -33
  104. package/dist/runtime/lib/db/index.d.ts +0 -4
  105. package/dist/runtime/lib/db/index.js +0 -3
  106. package/dist/runtime/lib/db/migrations.d.ts +0 -23
  107. package/dist/runtime/lib/db/migrations.js +0 -34
  108. package/dist/runtime/lib/db/typeInference/assert.d.ts +0 -2
  109. package/dist/runtime/lib/db/typeInference/assert.js +0 -1
  110. package/dist/runtime/lib/db/typeInference/builders/alterColumn.d.ts +0 -27
  111. package/dist/runtime/lib/db/typeInference/builders/alterColumn.js +0 -1
  112. package/dist/runtime/lib/db/typeInference/builders/alterTable.d.ts +0 -53
  113. package/dist/runtime/lib/db/typeInference/builders/alterTable.js +0 -1
  114. package/dist/runtime/lib/db/typeInference/builders/columnDefinition.d.ts +0 -26
  115. package/dist/runtime/lib/db/typeInference/builders/columnDefinition.js +0 -1
  116. package/dist/runtime/lib/db/typeInference/builders/createTable.d.ts +0 -49
  117. package/dist/runtime/lib/db/typeInference/builders/createTable.js +0 -1
  118. package/dist/runtime/lib/db/typeInference/builders/createView.d.ts +0 -17
  119. package/dist/runtime/lib/db/typeInference/builders/createView.js +0 -1
  120. package/dist/runtime/lib/db/typeInference/builders/dropTable.d.ts +0 -11
  121. package/dist/runtime/lib/db/typeInference/builders/dropTable.js +0 -1
  122. package/dist/runtime/lib/db/typeInference/builders/dropView.d.ts +0 -12
  123. package/dist/runtime/lib/db/typeInference/builders/dropView.js +0 -1
  124. package/dist/runtime/lib/db/typeInference/builders/schema.d.ts +0 -24
  125. package/dist/runtime/lib/db/typeInference/builders/schema.js +0 -1
  126. package/dist/runtime/lib/db/typeInference/database.d.ts +0 -27
  127. package/dist/runtime/lib/db/typeInference/database.js +0 -1
  128. package/dist/runtime/lib/db/typeInference/typetests/alterTable.typetest.d.ts +0 -1
  129. package/dist/runtime/lib/db/typeInference/typetests/alterTable.typetest.js +0 -360
  130. package/dist/runtime/lib/db/typeInference/typetests/createTable.typetest.d.ts +0 -1
  131. package/dist/runtime/lib/db/typeInference/typetests/createTable.typetest.js +0 -33
  132. package/dist/runtime/lib/db/typeInference/typetests/dropTable.typetest.d.ts +0 -1
  133. package/dist/runtime/lib/db/typeInference/typetests/dropTable.typetest.js +0 -143
  134. package/dist/runtime/lib/db/typeInference/typetests/print.d.ts +0 -3
  135. package/dist/runtime/lib/db/typeInference/typetests/print.js +0 -1
  136. package/dist/runtime/lib/db/typeInference/typetests/testUtils.d.ts +0 -2
  137. package/dist/runtime/lib/db/typeInference/typetests/testUtils.js +0 -1
  138. package/dist/runtime/lib/db/typeInference/typetests/typeInference.typetest.d.ts +0 -1
  139. package/dist/runtime/lib/db/typeInference/typetests/typeInference.typetest.js +0 -17
  140. package/dist/runtime/lib/db/typeInference/utils.d.ts +0 -82
  141. package/dist/runtime/lib/db/typeInference/utils.js +0 -2
  142. package/dist/runtime/lib/debug.d.ts +0 -2
  143. package/dist/runtime/lib/debug.js +0 -36
  144. package/dist/runtime/lib/links.d.ts +0 -14
  145. package/dist/runtime/lib/links.js +0 -38
  146. package/dist/runtime/lib/realtime/client.d.ts +0 -7
  147. package/dist/runtime/lib/realtime/client.js +0 -166
  148. package/dist/runtime/lib/realtime/constants.d.ts +0 -1
  149. package/dist/runtime/lib/realtime/constants.js +0 -1
  150. package/dist/runtime/lib/realtime/durableObject.d.ts +0 -29
  151. package/dist/runtime/lib/realtime/durableObject.js +0 -187
  152. package/dist/runtime/lib/realtime/renderRealtimeClients.d.ts +0 -7
  153. package/dist/runtime/lib/realtime/renderRealtimeClients.js +0 -6
  154. package/dist/runtime/lib/realtime/shared.d.ts +0 -10
  155. package/dist/runtime/lib/realtime/shared.js +0 -10
  156. package/dist/runtime/lib/realtime/validateUpgradeRequest.d.ts +0 -6
  157. package/dist/runtime/lib/realtime/validateUpgradeRequest.js +0 -29
  158. package/dist/runtime/lib/realtime/worker.d.ts +0 -3
  159. package/dist/runtime/lib/realtime/worker.js +0 -16
  160. package/dist/runtime/lib/router.d.ts +0 -56
  161. package/dist/runtime/lib/router.js +0 -210
  162. package/dist/runtime/lib/router.test.d.ts +0 -1
  163. package/dist/runtime/lib/router.test.js +0 -58
  164. package/dist/runtime/lib/streams/consumeEventStream.d.ts +0 -4
  165. package/dist/runtime/lib/streams/consumeEventStream.js +0 -13
  166. package/dist/runtime/lib/turnstile/TurnstileScript.d.ts +0 -1
  167. package/dist/runtime/lib/turnstile/TurnstileScript.js +0 -2
  168. package/dist/runtime/lib/turnstile/turnstile.d.ts +0 -3
  169. package/dist/runtime/lib/turnstile/turnstile.js +0 -3
  170. package/dist/runtime/lib/turnstile/useTurnstile.d.ts +0 -4
  171. package/dist/runtime/lib/turnstile/useTurnstile.js +0 -23
  172. package/dist/runtime/lib/turnstile/verifyTurnstileToken.d.ts +0 -4
  173. package/dist/runtime/lib/turnstile/verifyTurnstileToken.js +0 -15
  174. package/dist/runtime/lib/utils.d.ts +0 -1
  175. package/dist/runtime/lib/utils.js +0 -1
  176. package/dist/runtime/register/client.d.ts +0 -1
  177. package/dist/runtime/register/client.js +0 -5
  178. package/dist/runtime/register/ssr.d.ts +0 -3
  179. package/dist/runtime/register/ssr.js +0 -26
  180. package/dist/runtime/register/worker.d.ts +0 -4
  181. package/dist/runtime/register/worker.js +0 -42
  182. package/dist/runtime/render/createClientManifest.d.ts +0 -1
  183. package/dist/runtime/render/createClientManifest.js +0 -7
  184. package/dist/runtime/render/createModuleMap.d.ts +0 -1
  185. package/dist/runtime/render/createModuleMap.js +0 -13
  186. package/dist/runtime/render/renderRscThenableToHtmlStream.d.ts +0 -9
  187. package/dist/runtime/render/renderRscThenableToHtmlStream.js +0 -49
  188. package/dist/runtime/render/renderToRscStream.d.ts +0 -5
  189. package/dist/runtime/render/renderToRscStream.js +0 -46
  190. package/dist/runtime/render/renderToStream.d.ts +0 -9
  191. package/dist/runtime/render/renderToStream.js +0 -27
  192. package/dist/runtime/render/renderToString.d.ts +0 -7
  193. package/dist/runtime/render/renderToString.js +0 -26
  194. package/dist/runtime/render/transformRscToHtmlStream.d.ts +0 -8
  195. package/dist/runtime/render/transformRscToHtmlStream.js +0 -19
  196. package/dist/runtime/requestInfo/types.d.ts +0 -11
  197. package/dist/runtime/requestInfo/types.js +0 -1
  198. package/dist/runtime/requestInfo/worker.d.ts +0 -5
  199. package/dist/runtime/requestInfo/worker.js +0 -33
  200. package/dist/runtime/script.d.ts +0 -5
  201. package/dist/runtime/script.js +0 -8
  202. package/dist/runtime/ssrBridge.d.ts +0 -2
  203. package/dist/runtime/ssrBridge.js +0 -11
  204. package/dist/runtime/worker.d.ts +0 -18
  205. package/dist/runtime/worker.js +0 -173
  206. package/dist/scripts/__sdk.d.mts +0 -1
  207. package/dist/scripts/__sdk.mjs +0 -14
  208. package/dist/scripts/debug-sync.d.mts +0 -6
  209. package/dist/scripts/debug-sync.mjs +0 -224
  210. package/dist/scripts/dev-init.d.mts +0 -1
  211. package/dist/scripts/dev-init.mjs +0 -25
  212. package/dist/scripts/ensure-deploy-env.d.mts +0 -1
  213. package/dist/scripts/ensure-deploy-env.mjs +0 -271
  214. package/dist/scripts/ensure-env.d.mts +0 -1
  215. package/dist/scripts/ensure-env.mjs +0 -9
  216. package/dist/scripts/migrate-new.d.mts +0 -1
  217. package/dist/scripts/migrate-new.mjs +0 -51
  218. package/dist/scripts/smoke-test.d.mts +0 -1
  219. package/dist/scripts/smoke-test.mjs +0 -166
  220. package/dist/scripts/worker-run.d.mts +0 -1
  221. package/dist/scripts/worker-run.mjs +0 -82
  222. package/dist/vite/checkIsUsingPrisma.d.mts +0 -6
  223. package/dist/vite/checkIsUsingPrisma.mjs +0 -18
  224. package/dist/vite/configPlugin.d.mts +0 -9
  225. package/dist/vite/configPlugin.mjs +0 -169
  226. package/dist/vite/createDirectiveLookupPlugin.d.mts +0 -21
  227. package/dist/vite/createDirectiveLookupPlugin.mjs +0 -233
  228. package/dist/vite/devServerTimingPlugin.d.mts +0 -2
  229. package/dist/vite/devServerTimingPlugin.mjs +0 -24
  230. package/dist/vite/directivesPlugin.d.mts +0 -6
  231. package/dist/vite/directivesPlugin.mjs +0 -200
  232. package/dist/vite/ensureAliasArray.d.mts +0 -2
  233. package/dist/vite/ensureAliasArray.mjs +0 -17
  234. package/dist/vite/findSpecifiers.d.mts +0 -31
  235. package/dist/vite/findSpecifiers.mjs +0 -230
  236. package/dist/vite/findSsrSpecifiers.d.mts +0 -11
  237. package/dist/vite/findSsrSpecifiers.mjs +0 -51
  238. package/dist/vite/hasDirective.d.mts +0 -7
  239. package/dist/vite/hasDirective.mjs +0 -54
  240. package/dist/vite/hasOwnCloudflareVitePlugin.d.mts +0 -3
  241. package/dist/vite/hasOwnCloudflareVitePlugin.mjs +0 -14
  242. package/dist/vite/index.d.mts +0 -1
  243. package/dist/vite/index.mjs +0 -1
  244. package/dist/vite/injectVitePreamblePlugin.d.mts +0 -4
  245. package/dist/vite/injectVitePreamblePlugin.mjs +0 -23
  246. package/dist/vite/invalidateCacheIfPrismaClientChanged.d.mts +0 -3
  247. package/dist/vite/invalidateCacheIfPrismaClientChanged.mjs +0 -27
  248. package/dist/vite/invalidateModule.d.mts +0 -6
  249. package/dist/vite/invalidateModule.mjs +0 -30
  250. package/dist/vite/isJsFile.d.mts +0 -1
  251. package/dist/vite/isJsFile.mjs +0 -3
  252. package/dist/vite/miniflareHMRPlugin.d.mts +0 -10
  253. package/dist/vite/miniflareHMRPlugin.mjs +0 -171
  254. package/dist/vite/moveStaticAssetsPlugin.d.mts +0 -4
  255. package/dist/vite/moveStaticAssetsPlugin.mjs +0 -12
  256. package/dist/vite/normalizeModulePath.d.mts +0 -1
  257. package/dist/vite/normalizeModulePath.mjs +0 -13
  258. package/dist/vite/prismaPlugin.d.mts +0 -4
  259. package/dist/vite/prismaPlugin.mjs +0 -43
  260. package/dist/vite/reactConditionsResolverPlugin.d.mts +0 -16
  261. package/dist/vite/reactConditionsResolverPlugin.mjs +0 -179
  262. package/dist/vite/redwoodPlugin.d.mts +0 -12
  263. package/dist/vite/redwoodPlugin.mjs +0 -105
  264. package/dist/vite/ssrBridgePlugin.d.mts +0 -7
  265. package/dist/vite/ssrBridgePlugin.mjs +0 -124
  266. package/dist/vite/transformClientComponents.d.mts +0 -12
  267. package/dist/vite/transformClientComponents.mjs +0 -116
  268. package/dist/vite/transformClientComponents.test.d.mts +0 -1
  269. package/dist/vite/transformClientComponents.test.mjs +0 -264
  270. package/dist/vite/transformJsxScriptTagsPlugin.d.mts +0 -8
  271. package/dist/vite/transformJsxScriptTagsPlugin.mjs +0 -315
  272. package/dist/vite/transformJsxScriptTagsPlugin.test.d.mts +0 -1
  273. package/dist/vite/transformJsxScriptTagsPlugin.test.mjs +0 -334
  274. package/dist/vite/transformServerFunctions.d.mts +0 -16
  275. package/dist/vite/transformServerFunctions.mjs +0 -296
  276. package/dist/vite/transformServerFunctions.test.d.mts +0 -1
  277. package/dist/vite/transformServerFunctions.test.mjs +0 -124
  278. package/dist/vite/useClientLookupPlugin.d.mts +0 -5
  279. package/dist/vite/useClientLookupPlugin.mjs +0 -15
  280. package/dist/vite/useServerLookupPlugin.d.mts +0 -5
  281. package/dist/vite/useServerLookupPlugin.mjs +0 -15
  282. package/dist/vite/useServerPlugin.d.mts +0 -1
  283. package/dist/vite/useServerPlugin.mjs +0 -1
  284. package/dist/vite/virtualPlugin.d.mts +0 -2
  285. package/dist/vite/virtualPlugin.mjs +0 -18
  286. package/dist/vite/vitePreamblePlugin.d.mts +0 -1
  287. package/dist/vite/vitePreamblePlugin.mjs +0 -11
@@ -1,296 +0,0 @@
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
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,124 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { transformServerFunctions } from "./transformServerFunctions.mjs";
3
- describe("useServerPlugin", () => {
4
- let COMMENT_CODE = `
5
- // Comment
6
- "use server";
7
-
8
- export function sum() {
9
- return 1 + 1;
10
- }
11
- `;
12
- let MULTI_LINE_COMMENT_CODE = `
13
- // Multi-line
14
- // Comment
15
- "use server";
16
-
17
- export function sum() {
18
- return 1 + 1
19
- }
20
- `;
21
- let COMMENT_BLOCK_CODE = `
22
- /* Giant
23
- * Comment
24
- * Block
25
- */
26
- "use server";
27
-
28
- export function sum() {
29
- return 1 + 1
30
- }
31
- `;
32
- let DEFAULT_EXPORT_CODE = `
33
- "use server";
34
-
35
- export default function sum() {
36
- return 1 + 1;
37
- }
38
- `;
39
- let DEFAULT_AND_NAMED_EXPORTS_CODE = `
40
- "use server";
41
-
42
- export function sum() {
43
- return 1 + 1;
44
- }
45
-
46
- export default function sum() {
47
- return 1 + 2;
48
- }
49
- `;
50
- let PREDEFINED_DEFAULT_EXPORT_CODE = `
51
- "use server";
52
-
53
- const sum = () => {
54
- return 1 + 1;
55
- }
56
-
57
- export default sum;
58
- `;
59
- let EXPORT_DEFAULT_FUNCTION_CODE = `
60
- "use server";
61
- export default function sum() {
62
- return 1 + 1;
63
- }
64
- `;
65
- let NAMED_EXPORT_CODE = `
66
- "use server";
67
-
68
- export function sum() {
69
- return 1 + 1
70
- }
71
- `;
72
- let ARROW_FUNCTION_EXPORT_CODE = `
73
- "use server";
74
-
75
- export const sum = () => {
76
- return 1 + 1
77
- }
78
- `;
79
- let ASYNC_FUNCTION_EXPORT_CODE = `
80
- "use server";
81
-
82
- export async function sum() {
83
- return 1 + 1
84
- }
85
- `;
86
- let RE_EXPORT_CODE = `
87
- "use server";
88
-
89
- export { sum } from './math';
90
- export { default as multiply } from './multiply';
91
- export * from './utils';
92
- `;
93
- const TEST_CASES = {
94
- COMMENT_CODE,
95
- MULTI_LINE_COMMENT_CODE,
96
- COMMENT_BLOCK_CODE,
97
- DEFAULT_EXPORT_CODE,
98
- NAMED_EXPORT_CODE,
99
- ARROW_FUNCTION_EXPORT_CODE,
100
- ASYNC_FUNCTION_EXPORT_CODE,
101
- DEFAULT_AND_NAMED_EXPORTS_CODE,
102
- RE_EXPORT_CODE,
103
- PREDEFINED_DEFAULT_EXPORT_CODE,
104
- EXPORT_DEFAULT_FUNCTION_CODE,
105
- };
106
- describe("TRANSFORMS", () => {
107
- for (const [key, CODE] of Object.entries(TEST_CASES)) {
108
- describe(key, () => {
109
- it(`CLIENT`, () => {
110
- const result = transformServerFunctions(CODE, "/test.tsx", "client");
111
- expect(result?.code).toMatchSnapshot();
112
- });
113
- it(`WORKER`, () => {
114
- const result = transformServerFunctions(CODE, "/test.tsx", "worker");
115
- expect(result?.code).toMatchSnapshot();
116
- });
117
- it(`SSR`, () => {
118
- const result = transformServerFunctions(CODE, "/test.tsx", "ssr");
119
- expect(result?.code).toMatchSnapshot();
120
- });
121
- });
122
- }
123
- });
124
- });
@@ -1,5 +0,0 @@
1
- import { Plugin } from "vite";
2
- export declare const useClientLookupPlugin: ({ projectRootDir, clientFiles, }: {
3
- projectRootDir: string;
4
- clientFiles: Set<string>;
5
- }) => Promise<Plugin>;
@@ -1,15 +0,0 @@
1
- import { createDirectiveLookupPlugin } from "./createDirectiveLookupPlugin.mjs";
2
- export const useClientLookupPlugin = async ({ projectRootDir, clientFiles, }) => {
3
- return createDirectiveLookupPlugin({
4
- projectRootDir,
5
- files: clientFiles,
6
- config: {
7
- kind: "client",
8
- directive: "use client",
9
- virtualModuleName: "virtual:use-client-lookup",
10
- exportName: "useClientLookup",
11
- pluginName: "use-client-lookup",
12
- optimizeForEnvironments: ["ssr", "client"],
13
- },
14
- });
15
- };
@@ -1,5 +0,0 @@
1
- import { Plugin } from "vite";
2
- export declare const useServerLookupPlugin: ({ projectRootDir, serverFiles, }: {
3
- projectRootDir: string;
4
- serverFiles: Set<string>;
5
- }) => Promise<Plugin>;
@@ -1,15 +0,0 @@
1
- import { createDirectiveLookupPlugin } from "./createDirectiveLookupPlugin.mjs";
2
- export const useServerLookupPlugin = async ({ projectRootDir, serverFiles, }) => {
3
- return createDirectiveLookupPlugin({
4
- projectRootDir,
5
- files: serverFiles,
6
- config: {
7
- kind: "server",
8
- directive: "use server",
9
- virtualModuleName: "virtual:use-server-lookup",
10
- exportName: "useServerLookup",
11
- pluginName: "use-server-lookup",
12
- optimizeForEnvironments: ["ssr", "worker"],
13
- },
14
- });
15
- };
@@ -1 +0,0 @@
1
- export { transformServerFunctions } from "./transformServerFunctions.mjs";
@@ -1 +0,0 @@
1
- export { transformServerFunctions } from "./transformServerFunctions.mjs";
@@ -1,2 +0,0 @@
1
- import { Plugin } from "vite";
2
- export declare const virtualPlugin: (name: string, load: Plugin["load"]) => Plugin;
@@ -1,18 +0,0 @@
1
- // port(justinvdm, 3 Dec 2024): From https://github.com/hi-ogawa/vite-environment-examples/blob/440212b4208fc66a14d69a1bcbc7c5254b7daa91/examples/react-server/src/features/utils/plugin.ts#L37
2
- export const virtualPlugin = (name, load) => {
3
- name = "virtual:" + name;
4
- return {
5
- name: `rwsdk:virtual-${name}`,
6
- resolveId(source, _importer, _options) {
7
- if (source === name || source.startsWith(`${name}?`)) {
8
- return `\0${source}`;
9
- }
10
- return;
11
- },
12
- load(id, options) {
13
- if (id === `\0${name}` || id.startsWith(`\0${name}?`)) {
14
- return load.apply(this, [id, options]);
15
- }
16
- },
17
- };
18
- };
@@ -1 +0,0 @@
1
- export declare const vitePreamblePlugin: () => import("vite").Plugin<any>;
@@ -1,11 +0,0 @@
1
- import MagicString from "magic-string";
2
- import { virtualPlugin } from "./virtualPlugin.mjs";
3
- export const vitePreamblePlugin = () => virtualPlugin("vite-preamble", async () => {
4
- const s = new MagicString(`
5
- import RefreshRuntime from "/@react-refresh"; RefreshRuntime.injectIntoGlobalHook(window); window.$RefreshReg$ = () => {}; window.$RefreshSig$ = () => (type) => type; window.__vite_plugin_react_preamble_installed__ = true;
6
- `);
7
- return {
8
- code: s.toString(),
9
- map: s.generateMap(),
10
- };
11
- });