vite-plugin-react-server 0.3.18 → 0.3.19

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 (208) hide show
  1. package/README.md +119 -118
  2. package/bin/patch.mjs +8 -2
  3. package/dist/package.json +3 -3
  4. package/dist/plugin/checkFilesExist.d.ts.map +1 -1
  5. package/dist/plugin/checkFilesExist.js +6 -2
  6. package/dist/plugin/checkFilesExist.js.map +1 -1
  7. package/dist/plugin/collect-manifest-client-files.d.ts +23 -0
  8. package/dist/plugin/collect-manifest-client-files.d.ts.map +1 -0
  9. package/dist/plugin/collect-manifest-client-files.js +117 -0
  10. package/dist/plugin/collect-manifest-client-files.js.map +1 -0
  11. package/dist/plugin/components.d.ts +9 -9
  12. package/dist/plugin/components.d.ts.map +1 -1
  13. package/dist/plugin/components.js +50 -9
  14. package/dist/plugin/components.js.map +1 -0
  15. package/dist/plugin/config/defaults.d.ts +7 -6
  16. package/dist/plugin/config/defaults.d.ts.map +1 -1
  17. package/dist/plugin/config/defaults.js +8 -5
  18. package/dist/plugin/config/defaults.js.map +1 -1
  19. package/dist/plugin/config/getPaths.d.ts +0 -1
  20. package/dist/plugin/config/getPaths.d.ts.map +1 -1
  21. package/dist/plugin/config/getPaths.js +2 -7
  22. package/dist/plugin/config/getPaths.js.map +1 -1
  23. package/dist/plugin/config/mimeTypes.d.ts +2 -0
  24. package/dist/plugin/config/mimeTypes.d.ts.map +1 -0
  25. package/dist/plugin/config/mimeTypes.js +24 -0
  26. package/dist/plugin/config/mimeTypes.js.map +1 -0
  27. package/dist/plugin/config/resolveOptions.d.ts +1 -1
  28. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  29. package/dist/plugin/config/resolveOptions.js +41 -28
  30. package/dist/plugin/config/resolveOptions.js.map +1 -1
  31. package/dist/plugin/config/resolvePages.d.ts +1 -0
  32. package/dist/plugin/config/resolvePages.d.ts.map +1 -1
  33. package/dist/plugin/config/resolvePages.js +9 -5
  34. package/dist/plugin/config/resolvePages.js.map +1 -1
  35. package/dist/plugin/config/resolveUserConfig.d.ts +2 -1
  36. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  37. package/dist/plugin/config/resolveUserConfig.js +10 -5
  38. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  39. package/dist/plugin/copy-dir.js +23 -18
  40. package/dist/plugin/copy-dir.js.map +1 -0
  41. package/dist/plugin/helpers/createHandler.d.ts +22 -0
  42. package/dist/plugin/helpers/createHandler.d.ts.map +1 -0
  43. package/dist/plugin/{react-server → helpers}/createHandler.js +36 -48
  44. package/dist/plugin/helpers/createHandler.js.map +1 -0
  45. package/dist/plugin/{react-server → helpers}/createRscStream.d.ts +2 -1
  46. package/dist/plugin/helpers/createRscStream.d.ts.map +1 -0
  47. package/dist/plugin/helpers/createRscStream.js +71 -0
  48. package/dist/plugin/helpers/createRscStream.js.map +1 -0
  49. package/dist/plugin/helpers/getBundleManifest.d.ts.map +1 -1
  50. package/dist/plugin/helpers/getBundleManifest.js +12 -4
  51. package/dist/plugin/helpers/getBundleManifest.js.map +1 -1
  52. package/dist/plugin/loader/createBuildLoader.d.ts +1 -1
  53. package/dist/plugin/loader/createBuildLoader.d.ts.map +1 -1
  54. package/dist/plugin/loader/createBuildLoader.js +8 -5
  55. package/dist/plugin/loader/createBuildLoader.js.map +1 -1
  56. package/dist/plugin/loader/css-loader.d.ts.map +1 -1
  57. package/dist/plugin/loader/css-loader.js.map +1 -1
  58. package/dist/plugin/loader/react-loader.js +2 -2
  59. package/dist/plugin/loader/react-loader.js.map +1 -1
  60. package/dist/plugin/preserver/plugin.d.ts.map +1 -1
  61. package/dist/plugin/preserver/plugin.js +49 -14
  62. package/dist/plugin/preserver/plugin.js.map +1 -1
  63. package/dist/plugin/react-client/plugin.d.ts.map +1 -1
  64. package/dist/plugin/react-client/plugin.js +18 -76
  65. package/dist/plugin/react-client/plugin.js.map +1 -1
  66. package/dist/plugin/react-server/index.d.ts.map +1 -1
  67. package/dist/plugin/react-server/index.js +2 -0
  68. package/dist/plugin/react-server/index.js.map +1 -1
  69. package/dist/plugin/react-server/plugin.d.ts +2 -1
  70. package/dist/plugin/react-server/plugin.d.ts.map +1 -1
  71. package/dist/plugin/react-server/plugin.js +53 -217
  72. package/dist/plugin/react-server/plugin.js.map +1 -1
  73. package/dist/plugin/react-static/index.d.ts +2 -0
  74. package/dist/plugin/react-static/index.d.ts.map +1 -0
  75. package/dist/plugin/react-static/index.js +1 -0
  76. package/dist/plugin/react-static/plugin.d.ts +7 -0
  77. package/dist/plugin/react-static/plugin.d.ts.map +1 -0
  78. package/dist/plugin/react-static/plugin.js +199 -0
  79. package/dist/plugin/react-static/plugin.js.map +1 -0
  80. package/dist/plugin/resolvePage.d.ts.map +1 -1
  81. package/dist/plugin/resolvePage.js +9 -0
  82. package/dist/plugin/resolvePage.js.map +1 -1
  83. package/dist/plugin/root.d.ts +2 -0
  84. package/dist/plugin/root.d.ts.map +1 -0
  85. package/dist/plugin/root.js +12 -0
  86. package/dist/plugin/root.js.map +1 -0
  87. package/dist/plugin/transformer/plugin.d.ts.map +1 -1
  88. package/dist/plugin/transformer/plugin.js +32 -23
  89. package/dist/plugin/transformer/plugin.js.map +1 -1
  90. package/dist/plugin/transformer/types.d.ts +1 -18
  91. package/dist/plugin/transformer/types.d.ts.map +1 -1
  92. package/dist/plugin/types.d.ts +24 -6
  93. package/dist/plugin/types.d.ts.map +1 -1
  94. package/dist/plugin/worker/createWorker.js +0 -1
  95. package/dist/plugin/worker/createWorker.js.map +1 -1
  96. package/dist/plugin/worker/html/html-worker.development.d.ts +30 -0
  97. package/dist/plugin/worker/html/html-worker.development.d.ts.map +1 -1
  98. package/dist/plugin/worker/html/html-worker.development.js +30 -2
  99. package/dist/plugin/worker/html/html-worker.development.js.map +1 -1
  100. package/dist/plugin/worker/html/html-worker.production.js +3 -5
  101. package/dist/plugin/worker/html/html-worker.production.js.map +1 -1
  102. package/dist/plugin/worker/html/messageHandler.d.ts.map +1 -1
  103. package/dist/plugin/worker/html/messageHandler.js +8 -2
  104. package/dist/plugin/worker/html/messageHandler.js.map +1 -1
  105. package/dist/plugin/worker/html/plugin.d.ts.map +1 -1
  106. package/dist/plugin/worker/html/plugin.js +2 -3
  107. package/dist/plugin/worker/html/renderPages.d.ts +8 -4
  108. package/dist/plugin/worker/html/renderPages.d.ts.map +1 -1
  109. package/dist/plugin/worker/html/renderPages.js +118 -83
  110. package/dist/plugin/worker/html/renderPages.js.map +1 -1
  111. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  112. package/dist/plugin/worker/rsc/messageHandler.js +89 -84
  113. package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
  114. package/dist/plugin/worker/rsc/plugin.d.ts.map +1 -1
  115. package/dist/plugin/worker/rsc/plugin.js +1 -2
  116. package/dist/plugin/worker/rsc/rsc-worker.development.js +13 -18
  117. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
  118. package/dist/plugin/worker/rsc/rsc-worker.production.js +4 -1
  119. package/dist/plugin/worker/rsc/rsc-worker.production.js.map +1 -1
  120. package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
  121. package/dist/plugin/worker/rsc/state.js.map +1 -1
  122. package/dist/tsconfig.tsbuildinfo +1 -1
  123. package/package.json +3 -3
  124. package/plugin/checkFilesExist.ts +7 -3
  125. package/plugin/collect-manifest-client-files.ts +152 -0
  126. package/plugin/components.tsx +55 -10
  127. package/plugin/config/defaults.tsx +69 -0
  128. package/plugin/config/getPaths.ts +1 -7
  129. package/plugin/config/mimeTypes.ts +17 -0
  130. package/plugin/config/resolveOptions.ts +48 -40
  131. package/plugin/config/resolvePages.ts +8 -4
  132. package/plugin/config/resolveUserConfig.ts +12 -9
  133. package/plugin/{react-server → helpers}/createHandler.ts +46 -63
  134. package/plugin/helpers/createRscStream.ts +81 -0
  135. package/plugin/helpers/getBundleManifest.ts +14 -5
  136. package/plugin/loader/createBuildLoader.ts +9 -6
  137. package/plugin/loader/css-loader.ts +0 -2
  138. package/plugin/loader/react-loader.ts +2 -2
  139. package/plugin/preserver/plugin.ts +64 -17
  140. package/plugin/react-client/plugin.ts +20 -91
  141. package/plugin/react-server/index.ts +2 -0
  142. package/plugin/react-server/plugin.ts +66 -293
  143. package/plugin/react-static/index.ts +1 -0
  144. package/plugin/react-static/plugin.ts +247 -0
  145. package/plugin/resolvePage.ts +9 -0
  146. package/plugin/root.ts +4 -0
  147. package/plugin/transformer/plugin.ts +40 -31
  148. package/plugin/transformer/types.ts +0 -19
  149. package/plugin/types.ts +25 -6
  150. package/plugin/worker/createWorker.ts +1 -1
  151. package/plugin/worker/html/README.md +63 -0
  152. package/plugin/worker/html/html-worker.development.tsx +89 -2
  153. package/plugin/worker/html/html-worker.production.tsx +8 -10
  154. package/plugin/worker/html/messageHandler.ts +8 -2
  155. package/plugin/worker/html/plugin.ts +2 -3
  156. package/plugin/worker/html/renderPages.ts +150 -114
  157. package/plugin/worker/rsc/README.md +58 -0
  158. package/plugin/worker/rsc/messageHandler.tsx +95 -111
  159. package/plugin/worker/rsc/plugin.ts +1 -2
  160. package/plugin/worker/rsc/rsc-worker.development.ts +12 -22
  161. package/plugin/worker/rsc/rsc-worker.production.ts +5 -1
  162. package/plugin/worker/rsc/state.ts +0 -3
  163. package/scripts/react+0.0.0-experimental-eda36a1c-20250228.patch +114 -12
  164. package/scripts/react-dom+0.0.0-experimental-eda36a1c-20250228.patch +10571 -121
  165. package/tsconfig.json +2 -2
  166. package/dist/plugin/collect-css-manifest.d.ts +0 -4
  167. package/dist/plugin/collect-css-manifest.d.ts.map +0 -1
  168. package/dist/plugin/collect-css-manifest.js +0 -65
  169. package/dist/plugin/collect-css-manifest.js.map +0 -1
  170. package/dist/plugin/config/createModuleIdGenerator.d.ts +0 -11
  171. package/dist/plugin/config/createModuleIdGenerator.d.ts.map +0 -1
  172. package/dist/plugin/config/createModuleIdGenerator.js +0 -44
  173. package/dist/plugin/config/createModuleIdGenerator.js.map +0 -1
  174. package/dist/plugin/loader/createCssLoader.d.ts +0 -30
  175. package/dist/plugin/loader/createCssLoader.d.ts.map +0 -1
  176. package/dist/plugin/loader/createCssLoader.js +0 -35
  177. package/dist/plugin/loader/createPageLoader.d.ts +0 -24
  178. package/dist/plugin/loader/createPageLoader.d.ts.map +0 -1
  179. package/dist/plugin/loader/createPageLoader.js +0 -50
  180. package/dist/plugin/loader/rsc/messageHandler.d.ts +0 -2
  181. package/dist/plugin/loader/rsc/messageHandler.d.ts.map +0 -1
  182. package/dist/plugin/loader/rsc/messageHandler.js +0 -1
  183. package/dist/plugin/loader/rsc/rsc-worker.development.d.ts +0 -2
  184. package/dist/plugin/loader/rsc/rsc-worker.development.d.ts.map +0 -1
  185. package/dist/plugin/loader/rsc/rsc-worker.development.js +0 -1
  186. package/dist/plugin/react-server/createHandler.d.ts +0 -17
  187. package/dist/plugin/react-server/createHandler.d.ts.map +0 -1
  188. package/dist/plugin/react-server/createHandler.js.map +0 -1
  189. package/dist/plugin/react-server/createRscStream.d.ts.map +0 -1
  190. package/dist/plugin/react-server/createRscStream.js +0 -70
  191. package/dist/plugin/react-server/createRscStream.js.map +0 -1
  192. package/dist/plugin/react-server/createSsrHandler.d.ts +0 -4
  193. package/dist/plugin/react-server/createSsrHandler.d.ts.map +0 -1
  194. package/dist/plugin/react-server/createSsrHandler.js +0 -95
  195. package/dist/plugin/utils/logger.d.ts +0 -9
  196. package/dist/plugin/utils/logger.d.ts.map +0 -1
  197. package/dist/plugin/utils/logger.js +0 -68
  198. package/dist/plugin/utils/logger.js.map +0 -1
  199. package/plugin/collect-css-manifest.ts +0 -82
  200. package/plugin/config/createModuleIdGenerator.ts +0 -52
  201. package/plugin/config/defaults.ts +0 -51
  202. package/plugin/loader/createCssLoader.ts +0 -73
  203. package/plugin/loader/createPageLoader.ts +0 -103
  204. package/plugin/loader/rsc/messageHandler.tsx +0 -1
  205. package/plugin/loader/rsc/rsc-worker.development.ts +0 -1
  206. package/plugin/react-server/createRscStream.ts +0 -86
  207. package/plugin/react-server/createSsrHandler.ts +0 -125
  208. package/plugin/utils/logger.ts +0 -52
@@ -1 +1 @@
1
- {"version":3,"file":"createBuildLoader.js","sources":["../../../plugin/loader/createBuildLoader.ts"],"sourcesContent":["import { join, relative, resolve } from \"node:path\";\nimport type { PluginContext } from \"rollup\";\nimport type { ResolvedUserConfig, ResolvedUserOptions } from \"../../server.js\";\nimport type { Manifest } from \"vite\";\nimport { createInputNormalizer } from \"../helpers/inputNormalizer.js\";\n\nexport interface BuildLoaderOptions {\n root: string;\n pluginContext: PluginContext;\n userConfig: ResolvedUserConfig;\n userOptions: ResolvedUserOptions;\n serverManifest: Manifest;\n clientManifest: Manifest;\n}\n\nexport function createBuildLoader({\n root,\n userConfig,\n userOptions,\n pluginContext,\n serverManifest,\n clientManifest,\n}: BuildLoaderOptions) {\n const normalizer = createInputNormalizer({\n root,\n preserveModulesRoot: undefined,\n removeExtension: false,\n });\n return async function buildLoader(id: string) {\n const [key, value] = normalizer(id);\n // Remove leading slash if present\n const distDir = userOptions.build.outDir;\n const manifests = [clientManifest, serverManifest];\n // Try to find the module in the manifest\n for (const n of [0, 1]) {\n const manifest = manifests[n];\n const manifestEntry = manifest[key]\n if (!manifestEntry) {\n continue;\n }\n const isClient = userOptions.autoDiscover.clientComponents(id);\n const isServer = userOptions.autoDiscover.serverFunctions(id);\n const outDir = isClient\n ? userOptions.build.client\n : isServer\n ? userOptions.build.server\n : n === 0\n ? userOptions.build.client\n : userOptions.build.server;\n if (manifestEntry.file.startsWith(`${root}/${distDir}/${outDir}/`)) {\n return import(manifestEntry.file);\n }\n if (manifestEntry.file.startsWith(`${distDir}/`)) {\n return import(join(root, manifestEntry.file));\n }\n if (manifestEntry.file.startsWith(`${outDir}/`)) {\n return import(join(root, distDir, outDir, manifestEntry.file));\n }\n // Load the module\n return import(join(root, distDir, outDir, manifestEntry.file));\n }\n throw new Error(`Module not found: ${id}`);\n };\n}\n"],"names":[],"mappings":";;;;;;;;AAeO,SAAS,iBAAkB,CAAA;AAAA,EAChC,IAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAuB,EAAA;AACrB,EAAA,MAAM,aAAa,qBAAsB,CAAA;AAAA,IACvC,IAAA;AAAA,IACA,mBAAqB,EAAA,SAAA;AAAA,IACrB,eAAiB,EAAA;AAAA,GAClB,CAAA;AACD,EAAO,OAAA,eAAe,YAAY,EAAY,EAAA;AAC5C,IAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,WAAW,EAAE,CAAA;AAElC,IAAM,MAAA,OAAA,GAAU,YAAY,KAAM,CAAA,MAAA;AAClC,IAAM,MAAA,SAAA,GAAY,CAAC,cAAA,EAAgB,cAAc,CAAA;AAEjD,IAAA,KAAA,MAAW,CAAK,IAAA,CAAC,CAAG,EAAA,CAAC,CAAG,EAAA;AACtB,MAAM,MAAA,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,MAAM,MAAA,aAAA,GAAgB,SAAS,GAAG,CAAA;AAClC,MAAA,IAAI,CAAC,aAAe,EAAA;AAClB,QAAA;AAAA;AAEF,MAAA,MAAM,QAAW,GAAA,WAAA,CAAY,YAAa,CAAA,gBAAA,CAAiB,EAAE,CAAA;AAC7D,MAAA,MAAM,QAAW,GAAA,WAAA,CAAY,YAAa,CAAA,eAAA,CAAgB,EAAE,CAAA;AAC5D,MAAA,MAAM,MAAS,GAAA,QAAA,GACX,WAAY,CAAA,KAAA,CAAM,SAClB,QACA,GAAA,WAAA,CAAY,KAAM,CAAA,MAAA,GAClB,MAAM,CACN,GAAA,WAAA,CAAY,KAAM,CAAA,MAAA,GAClB,YAAY,KAAM,CAAA,MAAA;AACtB,MAAI,IAAA,aAAA,CAAc,IAAK,CAAA,UAAA,CAAW,CAAG,EAAA,IAAI,IAAI,OAAO,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,CAAG,CAAG,EAAA;AAClE,QAAA,OAAO,OAAO,aAAc,CAAA,IAAA,CAAA;AAAA;AAE9B,MAAA,IAAI,cAAc,IAAK,CAAA,UAAA,CAAW,CAAG,EAAA,OAAO,GAAG,CAAG,EAAA;AAChD,QAAA,OAAO,OAAO,IAAA,CAAK,IAAM,EAAA,aAAA,CAAc,IAAI,CAAA,CAAA;AAAA;AAE7C,MAAA,IAAI,cAAc,IAAK,CAAA,UAAA,CAAW,CAAG,EAAA,MAAM,GAAG,CAAG,EAAA;AAC/C,QAAA,OAAO,OAAO,IAAK,CAAA,IAAA,EAAM,OAAS,EAAA,MAAA,EAAQ,cAAc,IAAI,CAAA,CAAA;AAAA;AAG9D,MAAA,OAAO,OAAO,IAAK,CAAA,IAAA,EAAM,OAAS,EAAA,MAAA,EAAQ,cAAc,IAAI,CAAA,CAAA;AAAA;AAE9D,IAAA,MAAM,IAAI,KAAA,CAAM,CAAqB,kBAAA,EAAA,EAAE,CAAE,CAAA,CAAA;AAAA,GAC3C;AACF;;;;"}
1
+ {"version":3,"file":"createBuildLoader.js","sources":["../../../plugin/loader/createBuildLoader.ts"],"sourcesContent":["import { join } from \"node:path\";\nimport type { PluginContext } from \"rollup\";\nimport type { ResolvedUserConfig, ResolvedUserOptions } from \"../../server.js\";\nimport type { Manifest } from \"vite\";\nimport { createInputNormalizer } from \"../helpers/inputNormalizer.js\";\n\nexport interface BuildLoaderOptions {\n root: string;\n pluginContext: PluginContext;\n userConfig: ResolvedUserConfig;\n userOptions: ResolvedUserOptions;\n serverManifest: Manifest;\n clientManifest: Manifest;\n}\n\nexport function createBuildLoader({\n root,\n userConfig: _userConfig,\n userOptions,\n pluginContext: _pluginContext,\n serverManifest,\n clientManifest,\n}: BuildLoaderOptions) {\n const normalizer = createInputNormalizer({\n root,\n preserveModulesRoot: userOptions.build.preserveModulesRoot === true ? userOptions.moduleBase : undefined,\n removeExtension: true,\n });\n return async function buildLoader(id: string) {\n const [key, value] = normalizer(id);\n if(value !== id){\n console.warn(`[vite-plugin-react-server] Mismatch in build loader for ${id} !== ${value} (${key})`);\n }\n // Remove leading slash if present\n const distDir = userOptions.build.outDir;\n const manifests = [clientManifest, serverManifest];\n // Try to find the module in the manifest\n for (const n of [0, 1]) {\n const manifest = manifests[n];\n const manifestEntry = manifest[value]\n if (!manifestEntry) {\n continue;\n }\n const isClient = userOptions.autoDiscover.clientComponents(id);\n const isServer = userOptions.autoDiscover.serverFunctions(id);\n const outDir = isClient\n ? userOptions.build.client\n : isServer\n ? userOptions.build.server\n : n === 0\n ? userOptions.build.client\n : userOptions.build.server;\n if (manifestEntry.file.startsWith(`${root}/${distDir}/${outDir}/`)) {\n return import(manifestEntry.file);\n }\n if (manifestEntry.file.startsWith(`${distDir}/`)) {\n return import(join(root, manifestEntry.file));\n }\n if (manifestEntry.file.startsWith(`${outDir}/`)) {\n return import(join(root, distDir, outDir, manifestEntry.file));\n }\n // Load the module\n return import(join(root, distDir, outDir, manifestEntry.file));\n }\n throw new Error(`Module not found: ${id}`);\n };\n}\n"],"names":[],"mappings":";;;;;;;;AAeO,SAAS,iBAAkB,CAAA;AAAA,EAChC,IAAA;AAAA,EACA,UAAY,EAAA,WAAA;AAAA,EACZ,WAAA;AAAA,EACA,aAAe,EAAA,cAAA;AAAA,EACf,cAAA;AAAA,EACA;AACF,CAAuB,EAAA;AACrB,EAAA,MAAM,aAAa,qBAAsB,CAAA;AAAA,IACvC,IAAA;AAAA,IACA,qBAAqB,WAAY,CAAA,KAAA,CAAM,mBAAwB,KAAA,IAAA,GAAO,YAAY,UAAa,GAAA,SAAA;AAAA,IAC/F,eAAiB,EAAA;AAAA,GAClB,CAAA;AACD,EAAO,OAAA,eAAe,YAAY,EAAY,EAAA;AAC5C,IAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,WAAW,EAAE,CAAA;AAClC,IAAA,IAAG,UAAU,EAAG,EAAA;AACd,MAAA,OAAA,CAAQ,KAAK,CAA2D,wDAAA,EAAA,EAAE,QAAQ,KAAK,CAAA,EAAA,EAAK,GAAG,CAAG,CAAA,CAAA,CAAA;AAAA;AAGpG,IAAM,MAAA,OAAA,GAAU,YAAY,KAAM,CAAA,MAAA;AAClC,IAAM,MAAA,SAAA,GAAY,CAAC,cAAA,EAAgB,cAAc,CAAA;AAEjD,IAAA,KAAA,MAAW,CAAK,IAAA,CAAC,CAAG,EAAA,CAAC,CAAG,EAAA;AACtB,MAAM,MAAA,QAAA,GAAW,UAAU,CAAC,CAAA;AAC5B,MAAM,MAAA,aAAA,GAAgB,SAAS,KAAK,CAAA;AACpC,MAAA,IAAI,CAAC,aAAe,EAAA;AAClB,QAAA;AAAA;AAEF,MAAA,MAAM,QAAW,GAAA,WAAA,CAAY,YAAa,CAAA,gBAAA,CAAiB,EAAE,CAAA;AAC7D,MAAA,MAAM,QAAW,GAAA,WAAA,CAAY,YAAa,CAAA,eAAA,CAAgB,EAAE,CAAA;AAC5D,MAAA,MAAM,MAAS,GAAA,QAAA,GACX,WAAY,CAAA,KAAA,CAAM,SAClB,QACA,GAAA,WAAA,CAAY,KAAM,CAAA,MAAA,GAClB,MAAM,CACN,GAAA,WAAA,CAAY,KAAM,CAAA,MAAA,GAClB,YAAY,KAAM,CAAA,MAAA;AACtB,MAAI,IAAA,aAAA,CAAc,IAAK,CAAA,UAAA,CAAW,CAAG,EAAA,IAAI,IAAI,OAAO,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,CAAG,CAAG,EAAA;AAClE,QAAA,OAAO,OAAO,aAAc,CAAA,IAAA,CAAA;AAAA;AAE9B,MAAA,IAAI,cAAc,IAAK,CAAA,UAAA,CAAW,CAAG,EAAA,OAAO,GAAG,CAAG,EAAA;AAChD,QAAA,OAAO,OAAO,IAAA,CAAK,IAAM,EAAA,aAAA,CAAc,IAAI,CAAA,CAAA;AAAA;AAE7C,MAAA,IAAI,cAAc,IAAK,CAAA,UAAA,CAAW,CAAG,EAAA,MAAM,GAAG,CAAG,EAAA;AAC/C,QAAA,OAAO,OAAO,IAAK,CAAA,IAAA,EAAM,OAAS,EAAA,MAAA,EAAQ,cAAc,IAAI,CAAA,CAAA;AAAA;AAG9D,MAAA,OAAO,OAAO,IAAK,CAAA,IAAA,EAAM,OAAS,EAAA,MAAA,EAAQ,cAAc,IAAI,CAAA,CAAA;AAAA;AAE9D,IAAA,MAAM,IAAI,KAAA,CAAM,CAAqB,kBAAA,EAAA,EAAE,CAAE,CAAA,CAAA;AAAA,GAC3C;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"css-loader.d.ts","sourceRoot":"","sources":["../../../plugin/loader/css-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,aAAa,GAAG;IACnB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;CAC9B,CAAC;AAKF,wBAAsB,UAAU,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,iBAI3D;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,QAKjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEzD;AAGD,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,aAAa,EAAE,WAAW,EAAE,GAAG,gBAqDjG;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,OAE3E"}
1
+ {"version":3,"file":"css-loader.d.ts","sourceRoot":"","sources":["../../../plugin/loader/css-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,aAAa,GAAG;IACnB,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;CAC9B,CAAC;AAKF,wBAAsB,UAAU,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,iBAI3D;AAKD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,QAIjD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEzD;AAGD,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,aAAa,EAAE,WAAW,EAAE,GAAG,gBAqDjG;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,OAE3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"css-loader.js","sources":["../../../plugin/loader/css-loader.ts"],"sourcesContent":["import { readFile } from 'fs/promises';\nimport { basename } from 'path';\nimport postcss from 'postcss';\nimport type { MessagePort } from 'node:worker_threads';\nimport type { CssFileMessage } from '../worker/types.js';\nimport type { LoadHookContext } from 'node:module';\n\ntype LoaderContext = {\n data?: { port: MessagePort };\n};\n// Store port globally for CSS loader\nlet cssLoaderPort: MessagePort | undefined;\n\n// Initialize hook\nexport async function initialize(data: { port: MessagePort }) {\n cssLoaderPort = data.port; // Store port\n data.port.postMessage({ type: 'INITIALIZED' });\n data.port.unref();\n}\n\n// CSS file tracking per page\nconst cssFilesByPage = new Map<string, Set<string>>();\nlet currentPage: string | null = null;\n\nexport function setCurrentPage(page: string | null) {\n currentPage = page;\n if (page && !cssFilesByPage.has(page)) {\n cssFilesByPage.set(page, new Set());\n }\n}\n\nexport function getCssFilesForPage(page: string): string[] {\n return Array.from(cssFilesByPage.get(page) || []);\n}\n\n// Modify the CSS handling in the load function\nexport async function load(url: string, context: LoadHookContext & LoaderContext, defaultLoad: any) {\n // Handle CSS files\n if(url.endsWith(\".css\")) {\n const source = await readFile(new URL(url), 'utf-8');\n \n // Process CSS with PostCSS\n const result = await postcss().process(source, {\n from: url,\n to: url,\n map: {\n inline: false,\n annotation: false\n }\n });\n\n // Generate both transformed CSS and class mappings\n const moduleName = basename(url, '.css').replace('.', '_');\n const classes: Record<string, string> = {};\n\n // Transform selectors\n result.root.walkRules(rule => {\n const selector = rule.selector.replace('.', '');\n const className = `${moduleName}_${selector}`;\n classes[selector] = className;\n rule.selector = `.${className}`;\n });\n\n // Get transformed CSS using root.toString()\n const transformedCss = result.root.toString();\n\n // Send processed CSS to worker\n if (cssLoaderPort) {\n cssLoaderPort.postMessage({\n type: 'CSS_FILE',\n id: url,\n cssFile: transformedCss\n } satisfies CssFileMessage);\n }\n \n // Return CSS module\n const moduleSource = `\n const styles = ${JSON.stringify(classes)};\n export default styles;\n export const css = ${JSON.stringify(transformedCss)};\n `;\n\n return {\n format: 'module',\n source: moduleSource,\n shortCircuit: true\n };\n }\n return defaultLoad(url, context, defaultLoad);\n}\n\nexport function resolve(specifier: string, context: any, defaultResolve: any) {\n return defaultResolve(specifier, context, defaultResolve);\n}\n\n\n"],"names":[],"mappings":";;;;;;;;;AAWA,IAAI,aAAA;AAGJ,eAAsB,WAAW,IAA6B,EAAA;AAC5D,EAAA,aAAA,GAAgB,IAAK,CAAA,IAAA;AACrB,EAAA,IAAA,CAAK,IAAK,CAAA,WAAA,CAAY,EAAE,IAAA,EAAM,eAAe,CAAA;AAC7C,EAAA,IAAA,CAAK,KAAK,KAAM,EAAA;AAClB;AAGA,MAAM,cAAA,uBAAqB,GAAyB,EAAA;AAG7C,SAAS,eAAe,IAAqB,EAAA;AAElD,EAAA,IAAI,IAAQ,IAAA,CAAC,cAAe,CAAA,GAAA,CAAI,IAAI,CAAG,EAAA;AACrC,IAAA,cAAA,CAAe,GAAI,CAAA,IAAA,kBAAU,IAAA,GAAA,EAAK,CAAA;AAAA;AAEtC;AAEO,SAAS,mBAAmB,IAAwB,EAAA;AACzD,EAAA,OAAO,MAAM,IAAK,CAAA,cAAA,CAAe,IAAI,IAAI,CAAA,IAAK,EAAE,CAAA;AAClD;AAGsB,eAAA,IAAA,CAAK,GAAa,EAAA,OAAA,EAA0C,WAAkB,EAAA;AAElG,EAAG,IAAA,GAAA,CAAI,QAAS,CAAA,MAAM,CAAG,EAAA;AACvB,IAAA,MAAM,SAAS,MAAM,QAAA,CAAS,IAAI,GAAI,CAAA,GAAG,GAAG,OAAO,CAAA;AAGnD,IAAA,MAAM,MAAS,GAAA,MAAM,OAAQ,EAAA,CAAE,QAAQ,MAAQ,EAAA;AAAA,MAC7C,IAAM,EAAA,GAAA;AAAA,MACN,EAAI,EAAA,GAAA;AAAA,MACJ,GAAK,EAAA;AAAA,QACH,MAAQ,EAAA,KAAA;AAAA,QACR,UAAY,EAAA;AAAA;AACd,KACD,CAAA;AAGD,IAAA,MAAM,aAAa,QAAS,CAAA,GAAA,EAAK,MAAM,CAAE,CAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AACzD,IAAA,MAAM,UAAkC,EAAC;AAGzC,IAAO,MAAA,CAAA,IAAA,CAAK,UAAU,CAAQ,IAAA,KAAA;AAC5B,MAAA,MAAM,QAAW,GAAA,IAAA,CAAK,QAAS,CAAA,OAAA,CAAQ,KAAK,EAAE,CAAA;AAC9C,MAAA,MAAM,SAAY,GAAA,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAC3C,MAAA,OAAA,CAAQ,QAAQ,CAAI,GAAA,SAAA;AACpB,MAAK,IAAA,CAAA,QAAA,GAAW,IAAI,SAAS,CAAA,CAAA;AAAA,KAC9B,CAAA;AAGD,IAAM,MAAA,cAAA,GAAiB,MAAO,CAAA,IAAA,CAAK,QAAS,EAAA;AAG5C,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,aAAA,CAAc,WAAY,CAAA;AAAA,QACxB,IAAM,EAAA,UAAA;AAAA,QACN,EAAI,EAAA,GAAA;AAAA,QACJ,OAAS,EAAA;AAAA,OACe,CAAA;AAAA;AAI5B,IAAA,MAAM,YAAe,GAAA;AAAA,qBACF,EAAA,IAAA,CAAK,SAAU,CAAA,OAAO,CAAC,CAAA;AAAA;AAAA,yBAEnB,EAAA,IAAA,CAAK,SAAU,CAAA,cAAc,CAAC,CAAA;AAAA,IAAA,CAAA;AAGrD,IAAO,OAAA;AAAA,MACL,MAAQ,EAAA,QAAA;AAAA,MACR,MAAQ,EAAA,YAAA;AAAA,MACR,YAAc,EAAA;AAAA,KAChB;AAAA;AAEF,EAAO,OAAA,WAAA,CAAY,GAAK,EAAA,OAAA,EAAS,WAAW,CAAA;AAC9C;AAEgB,SAAA,OAAA,CAAQ,SAAmB,EAAA,OAAA,EAAc,cAAqB,EAAA;AAC5E,EAAO,OAAA,cAAA,CAAe,SAAW,EAAA,OAAA,EAAS,cAAc,CAAA;AAC1D;;;;"}
1
+ {"version":3,"file":"css-loader.js","sources":["../../../plugin/loader/css-loader.ts"],"sourcesContent":["import { readFile } from 'fs/promises';\nimport { basename } from 'path';\nimport postcss from 'postcss';\nimport type { MessagePort } from 'node:worker_threads';\nimport type { CssFileMessage } from '../worker/types.js';\nimport type { LoadHookContext } from 'node:module';\n\ntype LoaderContext = {\n data?: { port: MessagePort };\n};\n// Store port globally for CSS loader\nlet cssLoaderPort: MessagePort | undefined;\n\n// Initialize hook\nexport async function initialize(data: { port: MessagePort }) {\n cssLoaderPort = data.port; // Store port\n data.port.postMessage({ type: 'INITIALIZED' });\n data.port.unref();\n}\n\n// CSS file tracking per page\nconst cssFilesByPage = new Map<string, Set<string>>();\n\nexport function setCurrentPage(page: string | null) {\n if (page && !cssFilesByPage.has(page)) {\n cssFilesByPage.set(page, new Set());\n }\n}\n\nexport function getCssFilesForPage(page: string): string[] {\n return Array.from(cssFilesByPage.get(page) || []);\n}\n\n// Modify the CSS handling in the load function\nexport async function load(url: string, context: LoadHookContext & LoaderContext, defaultLoad: any) {\n // Handle CSS files\n if(url.endsWith(\".css\")) {\n const source = await readFile(new URL(url), 'utf-8');\n \n // Process CSS with PostCSS\n const result = await postcss().process(source, {\n from: url,\n to: url,\n map: {\n inline: false,\n annotation: false\n }\n });\n\n // Generate both transformed CSS and class mappings\n const moduleName = basename(url, '.css').replace('.', '_');\n const classes: Record<string, string> = {};\n\n // Transform selectors\n result.root.walkRules(rule => {\n const selector = rule.selector.replace('.', '');\n const className = `${moduleName}_${selector}`;\n classes[selector] = className;\n rule.selector = `.${className}`;\n });\n\n // Get transformed CSS using root.toString()\n const transformedCss = result.root.toString();\n\n // Send processed CSS to worker\n if (cssLoaderPort) {\n cssLoaderPort.postMessage({\n type: 'CSS_FILE',\n id: url,\n cssFile: transformedCss\n } satisfies CssFileMessage);\n }\n \n // Return CSS module\n const moduleSource = `\n const styles = ${JSON.stringify(classes)};\n export default styles;\n export const css = ${JSON.stringify(transformedCss)};\n `;\n\n return {\n format: 'module',\n source: moduleSource,\n shortCircuit: true\n };\n }\n return defaultLoad(url, context, defaultLoad);\n}\n\nexport function resolve(specifier: string, context: any, defaultResolve: any) {\n return defaultResolve(specifier, context, defaultResolve);\n}\n\n\n"],"names":[],"mappings":";;;;;;;;;AAWA,IAAI,aAAA;AAGJ,eAAsB,WAAW,IAA6B,EAAA;AAC5D,EAAA,aAAA,GAAgB,IAAK,CAAA,IAAA;AACrB,EAAA,IAAA,CAAK,IAAK,CAAA,WAAA,CAAY,EAAE,IAAA,EAAM,eAAe,CAAA;AAC7C,EAAA,IAAA,CAAK,KAAK,KAAM,EAAA;AAClB;AAGA,MAAM,cAAA,uBAAqB,GAAyB,EAAA;AAE7C,SAAS,eAAe,IAAqB,EAAA;AAClD,EAAA,IAAI,IAAQ,IAAA,CAAC,cAAe,CAAA,GAAA,CAAI,IAAI,CAAG,EAAA;AACrC,IAAA,cAAA,CAAe,GAAI,CAAA,IAAA,kBAAU,IAAA,GAAA,EAAK,CAAA;AAAA;AAEtC;AAEO,SAAS,mBAAmB,IAAwB,EAAA;AACzD,EAAA,OAAO,MAAM,IAAK,CAAA,cAAA,CAAe,IAAI,IAAI,CAAA,IAAK,EAAE,CAAA;AAClD;AAGsB,eAAA,IAAA,CAAK,GAAa,EAAA,OAAA,EAA0C,WAAkB,EAAA;AAElG,EAAG,IAAA,GAAA,CAAI,QAAS,CAAA,MAAM,CAAG,EAAA;AACvB,IAAA,MAAM,SAAS,MAAM,QAAA,CAAS,IAAI,GAAI,CAAA,GAAG,GAAG,OAAO,CAAA;AAGnD,IAAA,MAAM,MAAS,GAAA,MAAM,OAAQ,EAAA,CAAE,QAAQ,MAAQ,EAAA;AAAA,MAC7C,IAAM,EAAA,GAAA;AAAA,MACN,EAAI,EAAA,GAAA;AAAA,MACJ,GAAK,EAAA;AAAA,QACH,MAAQ,EAAA,KAAA;AAAA,QACR,UAAY,EAAA;AAAA;AACd,KACD,CAAA;AAGD,IAAA,MAAM,aAAa,QAAS,CAAA,GAAA,EAAK,MAAM,CAAE,CAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AACzD,IAAA,MAAM,UAAkC,EAAC;AAGzC,IAAO,MAAA,CAAA,IAAA,CAAK,UAAU,CAAQ,IAAA,KAAA;AAC5B,MAAA,MAAM,QAAW,GAAA,IAAA,CAAK,QAAS,CAAA,OAAA,CAAQ,KAAK,EAAE,CAAA;AAC9C,MAAA,MAAM,SAAY,GAAA,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA;AAC3C,MAAA,OAAA,CAAQ,QAAQ,CAAI,GAAA,SAAA;AACpB,MAAK,IAAA,CAAA,QAAA,GAAW,IAAI,SAAS,CAAA,CAAA;AAAA,KAC9B,CAAA;AAGD,IAAM,MAAA,cAAA,GAAiB,MAAO,CAAA,IAAA,CAAK,QAAS,EAAA;AAG5C,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,aAAA,CAAc,WAAY,CAAA;AAAA,QACxB,IAAM,EAAA,UAAA;AAAA,QACN,EAAI,EAAA,GAAA;AAAA,QACJ,OAAS,EAAA;AAAA,OACe,CAAA;AAAA;AAI5B,IAAA,MAAM,YAAe,GAAA;AAAA,qBACF,EAAA,IAAA,CAAK,SAAU,CAAA,OAAO,CAAC,CAAA;AAAA;AAAA,yBAEnB,EAAA,IAAA,CAAK,SAAU,CAAA,cAAc,CAAC,CAAA;AAAA,IAAA,CAAA;AAGrD,IAAO,OAAA;AAAA,MACL,MAAQ,EAAA,QAAA;AAAA,MACR,MAAQ,EAAA,YAAA;AAAA,MACR,YAAc,EAAA;AAAA,KAChB;AAAA;AAEF,EAAO,OAAA,WAAA,CAAY,GAAK,EAAA,OAAA,EAAS,WAAW,CAAA;AAC9C;AAEgB,SAAA,OAAA,CAAQ,SAAmB,EAAA,OAAA,EAAc,cAAqB,EAAA;AAC5E,EAAO,OAAA,cAAA,CAAe,SAAW,EAAA,OAAA,EAAS,cAAc,CAAA;AAC1D;;;;"}
@@ -71,7 +71,7 @@ function addLocalExportedNames(exportedEntries, localNames, node) {
71
71
  return;
72
72
  }
73
73
  }
74
- function transformServerModule(source, program, url, sourceMap, loader, port) {
74
+ function transformServerModule(source, program, url, sourceMap, _loader, port) {
75
75
  const body = program.body;
76
76
  const exportedEntries = [];
77
77
  const localNames = /* @__PURE__ */ new Set();
@@ -635,7 +635,7 @@ async function transformSource(source, context, defaultTransformSource) {
635
635
  const newSrc = await transformModuleIfNeeded(
636
636
  transformedSource,
637
637
  context.url,
638
- (url, ctx, defaultLoad) => loadClientImport(url, defaultTransformSource),
638
+ (url) => loadClientImport(url, defaultTransformSource),
639
639
  context.data?.port
640
640
  );
641
641
  return { source: newSrc };
@@ -1 +1 @@
1
- {"version":3,"file":"react-loader.js","sources":["../../../plugin/loader/react-loader.ts"],"sourcesContent":["import * as acorn from \"acorn-loose\";\nimport { basename } from \"path\";\n\nimport {\n // @ts-ignore\n setSourceMapsSupport,\n SourceMap,\n type LoadHookContext,\n type ResolveHookContext,\n} from \"node:module\";\nimport type { MessagePort } from \"node:worker_threads\";\n\nlet stashedGetSource: any = null;\nlet stashedResolve: any = null;\n\n// Enable source maps with full support\nsetSourceMapsSupport(true, {\n nodeModules: true, // Enable for node_modules files\n generatedCode: true, // Enable for generated code\n});\n\n// Add type for our context with port\ninterface LoaderContext {\n data?: { port: MessagePort };\n}\n\n// Store port globally for use in load hook\nlet loaderPort: MessagePort | undefined;\n\nexport async function getSource(\n url: string,\n context: any,\n defaultGetSource: any\n) {\n // We stash this in case we end up needing to resolve export * statements later.\n stashedGetSource = defaultGetSource;\n return defaultGetSource(url, context, defaultGetSource);\n}\n\nfunction addExportedEntry(\n exportedEntries: any,\n localNames: any,\n localName: any,\n exportedName: any,\n type: any,\n loc: any\n) {\n if (localNames.has(localName)) {\n // If the same local name is exported more than once, we only need one of the names.\n return;\n }\n\n exportedEntries.push({\n localName,\n exportedName,\n type,\n loc,\n originalLine: -1,\n originalColumn: -1,\n originalSource: -1,\n nameIndex: -1,\n });\n}\n\nfunction addLocalExportedNames(\n exportedEntries: any,\n localNames: any,\n node: any\n) {\n switch (node.type) {\n case \"Identifier\":\n addExportedEntry(\n exportedEntries,\n localNames,\n node.name,\n node.name,\n null,\n node.loc\n );\n return;\n\n case \"ObjectPattern\":\n for (let i = 0; i < node.properties.length; i++)\n addLocalExportedNames(exportedEntries, localNames, node.properties[i]);\n\n return;\n\n case \"ArrayPattern\":\n for (let i = 0; i < node.elements.length; i++) {\n const element = node.elements[i];\n if (element)\n addLocalExportedNames(exportedEntries, localNames, element);\n }\n\n return;\n\n case \"Property\":\n addLocalExportedNames(exportedEntries, localNames, node.value);\n return;\n\n case \"AssignmentPattern\":\n addLocalExportedNames(exportedEntries, localNames, node.left);\n return;\n\n case \"RestElement\":\n addLocalExportedNames(exportedEntries, localNames, node.argument);\n return;\n\n case \"ParenthesizedExpression\":\n addLocalExportedNames(exportedEntries, localNames, node.expression);\n return;\n }\n}\n\nfunction transformServerModule(\n source: string,\n program: any,\n url: string,\n sourceMap: any,\n loader: any,\n port: MessagePort | undefined\n) {\n const body = program.body; // This entry list needs to be in source location order.\n\n const exportedEntries: any[] = []; // Dedupe set.\n\n const localNames = new Set();\n\n for (let i = 0; i < body.length; i++) {\n const node = body[i];\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n // If export * is used, the other file needs to explicitly opt into \"use server\" too.\n break;\n\n case \"ExportDefaultDeclaration\":\n if (node.declaration.type === \"Identifier\") {\n addExportedEntry(\n exportedEntries,\n localNames,\n node.declaration.name,\n \"default\",\n null,\n node.declaration.loc\n );\n } else if (node.declaration.type === \"FunctionDeclaration\") {\n if (node.declaration.id) {\n addExportedEntry(\n exportedEntries,\n localNames,\n node.declaration.id.name,\n \"default\",\n \"function\",\n node.declaration.id.loc\n );\n }\n }\n\n continue;\n\n case \"ExportNamedDeclaration\":\n if (node.declaration) {\n if (node.declaration.type === \"VariableDeclaration\") {\n const declarations = node.declaration.declarations;\n\n for (let j = 0; j < declarations.length; j++) {\n addLocalExportedNames(\n exportedEntries,\n localNames,\n declarations[j].id\n );\n }\n } else {\n const name = node.declaration.id.name;\n addExportedEntry(\n exportedEntries,\n localNames,\n name,\n name,\n node.declaration.type === \"FunctionDeclaration\"\n ? \"function\"\n : null,\n node.declaration.id.loc\n );\n }\n }\n\n if (node.specifiers) {\n const specifiers = node.specifiers;\n\n for (let j = 0; j < specifiers.length; j++) {\n const specifier = specifiers[j];\n addExportedEntry(\n exportedEntries,\n localNames,\n specifier.local.name,\n specifier.exported.name,\n null,\n specifier.local.loc\n );\n }\n }\n\n continue;\n }\n }\n\n let mappings =\n sourceMap && typeof sourceMap.mappings === \"string\"\n ? sourceMap.mappings\n : \"\";\n let newSrc = source;\n\n if (exportedEntries.length > 0) {\n let lastSourceIndex = 0;\n let lastOriginalLine = 0;\n let lastOriginalColumn = 0;\n let lastNameIndex = 0;\n let sourceLineCount = 0;\n let lastMappedLine = 0;\n\n if (sourceMap) {\n // We iterate source mapping entries and our matched exports in parallel to source map\n // them to their original location.\n let nextEntryIdx = 0;\n let nextEntryLine = exportedEntries[nextEntryIdx].loc.start.line;\n let nextEntryColumn = exportedEntries[nextEntryIdx].loc.start.column;\n readMappings(\n mappings,\n (\n generatedLine: number,\n generatedColumn: number,\n sourceIndex: number,\n originalLine: number,\n originalColumn: number,\n nameIndex: number\n ) => {\n if (\n generatedLine > nextEntryLine ||\n (generatedLine === nextEntryLine &&\n generatedColumn > nextEntryColumn)\n ) {\n // We're past the entry which means that the best match we have is the previous entry.\n if (lastMappedLine === nextEntryLine) {\n // Match\n exportedEntries[nextEntryIdx].originalLine = lastOriginalLine;\n exportedEntries[nextEntryIdx].originalColumn = lastOriginalColumn;\n exportedEntries[nextEntryIdx].originalSource = lastSourceIndex;\n exportedEntries[nextEntryIdx].nameIndex = lastNameIndex;\n }\n\n nextEntryIdx++;\n\n if (nextEntryIdx < exportedEntries.length) {\n nextEntryLine = exportedEntries[nextEntryIdx].loc.start.line;\n nextEntryColumn = exportedEntries[nextEntryIdx].loc.start.column;\n } else {\n nextEntryLine = -1;\n nextEntryColumn = -1;\n }\n }\n\n lastMappedLine = generatedLine;\n\n if (sourceIndex > -1) {\n lastSourceIndex = sourceIndex;\n }\n\n if (originalLine > -1) {\n lastOriginalLine = originalLine;\n }\n\n if (originalColumn > -1) {\n lastOriginalColumn = originalColumn;\n }\n\n if (nameIndex > -1) {\n lastNameIndex = nameIndex;\n }\n }\n );\n\n if (nextEntryIdx < exportedEntries.length) {\n if (lastMappedLine === nextEntryLine) {\n // Match\n exportedEntries[nextEntryIdx].originalLine = lastOriginalLine;\n exportedEntries[nextEntryIdx].originalColumn = lastOriginalColumn;\n exportedEntries[nextEntryIdx].originalSource = lastSourceIndex;\n exportedEntries[nextEntryIdx].nameIndex = lastNameIndex;\n }\n }\n\n for (\n let lastIdx = mappings.length - 1;\n lastIdx >= 0 && mappings[lastIdx] === \";\";\n lastIdx--\n ) {\n // If the last mapped lines don't contain any segments, we don't get a callback from readMappings\n // so we need to pad the number of mapped lines, with one for each empty line.\n lastMappedLine++;\n }\n\n sourceLineCount = program.loc.end.line;\n\n if (sourceLineCount < lastMappedLine) {\n throw new Error(\n \"The source map has more mappings than there are lines.\"\n );\n } // If the original source string had more lines than there are mappings in the source map.\n // Add some extra padding of unmapped lines so that any lines that we add line up.\n\n for (\n let extraLines = sourceLineCount - lastMappedLine;\n extraLines > 0;\n extraLines--\n ) {\n mappings += \";\";\n }\n } else {\n // If a file doesn't have a source map then we generate a blank source map that just\n // contains the original content and segments pointing to the original lines.\n sourceLineCount = 1;\n let idx = -1;\n\n while ((idx = source.indexOf(\"\\n\", idx + 1)) !== -1) {\n sourceLineCount++;\n }\n\n mappings = \"AAAA\" + \";AACA\".repeat(sourceLineCount - 1);\n sourceMap = new SourceMap({\n version: 3,\n file: basename(url),\n sources: [url],\n sourcesContent: [source],\n names: [],\n mappings: mappings,\n sourceRoot: \"\",\n });\n lastSourceIndex = 0;\n lastOriginalLine = sourceLineCount;\n lastOriginalColumn = 0;\n lastNameIndex = -1;\n lastMappedLine = sourceLineCount;\n\n for (let i = 0; i < exportedEntries.length; i++) {\n // Point each entry to original location.\n const entry = exportedEntries[i];\n entry.originalSource = 0;\n entry.originalLine = entry.loc.start.line; // We use column zero since we do the short-hand line-only source maps above.\n\n entry.originalColumn = 0; // entry.loc.start.column;\n }\n }\n\n newSrc += \"\\n\\n;\";\n newSrc +=\n 'import {registerServerReference} from \"react-server-dom-esm/server\";\\n';\n\n if (mappings) {\n mappings += \";;\";\n }\n\n const createMapping = createMappingsSerializer(); // Create an empty mapping pointing to where we last left off to reset the counters.\n\n let generatedLine = 1;\n createMapping(\n generatedLine,\n 0,\n lastSourceIndex,\n lastOriginalLine,\n lastOriginalColumn,\n lastNameIndex\n );\n\n for (let i = 0; i < exportedEntries.length; i++) {\n const entry = exportedEntries[i];\n generatedLine++;\n\n if (entry.type !== \"function\") {\n // We first check if the export is a function and if so annotate it.\n newSrc += \"if (typeof \" + entry.localName + ' === \"function\") ';\n }\n\n newSrc += \"registerServerReference(\" + entry.localName + \",\";\n newSrc += JSON.stringify(url) + \",\";\n newSrc += JSON.stringify(entry.exportedName) + \");\\n\";\n mappings += createMapping(\n generatedLine,\n 0,\n entry.originalSource,\n entry.originalLine,\n entry.originalColumn,\n entry.nameIndex\n );\n }\n }\n\n if (sourceMap) {\n // Override with an new mappings and serialize an inline source map.\n sourceMap.mappings = mappings;\n newSrc +=\n \"//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" +\n Buffer.from(JSON.stringify(sourceMap)).toString(\"base64\");\n }\n if (port) {\n port.postMessage({\n type: \"SERVER_MODULE\",\n url,\n source: newSrc,\n });\n }\n\n return newSrc;\n}\n\nfunction addExportNames(names: any, node: any) {\n switch (node.type) {\n case \"Identifier\":\n names.push(node.name);\n return;\n\n case \"ObjectPattern\":\n for (let i = 0; i < node.properties.length; i++)\n addExportNames(names, node.properties[i]);\n\n return;\n\n case \"ArrayPattern\":\n for (let i = 0; i < node.elements.length; i++) {\n const element = node.elements[i];\n if (element) addExportNames(names, element);\n }\n\n return;\n\n case \"Property\":\n addExportNames(names, node.value);\n return;\n\n case \"AssignmentPattern\":\n addExportNames(names, node.left);\n return;\n\n case \"RestElement\":\n addExportNames(names, node.argument);\n return;\n\n case \"ParenthesizedExpression\":\n addExportNames(names, node.expression);\n return;\n }\n}\n\nfunction resolveClientImport(specifier: string, parentURL: string) {\n const conditions = [\"node\", \"import\"];\n\n if (stashedResolve === null) {\n throw new Error(\n \"Expected resolve to have been called before transformSource\"\n );\n }\n\n return stashedResolve(\n specifier,\n {\n conditions,\n parentURL,\n },\n stashedResolve\n );\n}\n\nasync function parseExportNamesInto(\n body: any,\n names: any,\n parentURL: string,\n loader: any\n) {\n for (let i = 0; i < body.length; i++) {\n const node = body[i];\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n if (node.exported) {\n addExportNames(names, node.exported);\n continue;\n } else {\n const _await$resolveClientI = await resolveClientImport(\n node.source.value,\n parentURL\n ),\n url = _await$resolveClientI.url;\n\n const _await$loader = await loader(\n url,\n {\n format: \"module\",\n conditions: [],\n importAttributes: {},\n },\n loader\n ),\n source = _await$loader.source;\n\n if (typeof source !== \"string\") {\n throw new Error(\"Expected the transformed source to be a string.\");\n }\n\n let childBody;\n\n try {\n childBody = acorn.parse(source, {\n ecmaVersion: \"2024\" as never,\n sourceType: \"module\",\n }).body;\n } catch (x) {\n // eslint-disable-next-line react-internal/no-production-logging\n console.error(\"Error parsing %s %s\", url, (x as Error)?.message);\n continue;\n }\n\n await parseExportNamesInto(childBody, names, url, loader);\n continue;\n }\n\n case \"ExportDefaultDeclaration\":\n names.push(\"default\");\n continue;\n\n case \"ExportNamedDeclaration\":\n if (node.declaration) {\n if (node.declaration.type === \"VariableDeclaration\") {\n const declarations = node.declaration.declarations;\n\n for (let j = 0; j < declarations.length; j++) {\n addExportNames(names, declarations[j].id);\n }\n } else {\n addExportNames(names, node.declaration.id);\n }\n }\n\n if (node.specifiers) {\n const specifiers = node.specifiers;\n\n for (let j = 0; j < specifiers.length; j++) {\n addExportNames(names, specifiers[j].exported);\n }\n }\n\n continue;\n }\n }\n}\n\nasync function transformClientModule(\n program: any,\n url: string,\n sourceMap: any,\n loader: any\n) {\n const body = program.body;\n const names: any[] = [];\n await parseExportNamesInto(body, names, url, loader);\n\n\n if (names.length === 0) {\n console.log(\"[react-loader] No exports found in:\", url);\n return \"\";\n }\n\n let newSrc =\n 'import {registerClientReference} from \"react-server-dom-esm/server\";\\n';\n\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n\n const errorMessage =\n name === \"default\"\n ? `Attempted to call the default export of ${url} from the server but it's on the client`\n : `Attempted to call ${name}() from the server but ${name} is on the client`;\n\n const fullError = `${errorMessage}. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.`;\n\n // Convert file:// URL to relative path for the browser\n const browserUrl = url.replace(\"file://\", \"\").replace(process.cwd(), \"\");\n\n if (name === \"default\") {\n newSrc += `export default registerClientReference(function() { throw new Error(${JSON.stringify(\n fullError\n )}); }, ${JSON.stringify(browserUrl)}, ${JSON.stringify(name)});\\n`;\n } else {\n newSrc += `export const ${name} = registerClientReference(function() { throw new Error(${JSON.stringify(\n fullError\n )}); }, ${JSON.stringify(browserUrl)}, ${JSON.stringify(name)});\\n`;\n }\n }\n\n // Create source map\n if (sourceMap) {\n const newSourceMap = {\n version: 3,\n file: basename(url),\n sources: [url],\n sourcesContent: [program.source],\n names: [],\n mappings: \"AAAA;\" + \";\".repeat(names.length), // Simple line mapping\n sourceRoot: \"\",\n };\n\n newSrc +=\n \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\";\n newSrc += Buffer.from(JSON.stringify(newSourceMap)).toString(\"base64\");\n }\n\n return newSrc;\n}\n\nasync function loadClientImport(url: string, defaultTransformSource: any) {\n if (stashedGetSource === null) {\n throw new Error(\n \"Expected getSource to have been called before transformSource\"\n );\n } // TODO: Validate that this is another module by calling getFormat.\n\n const _await$stashedGetSour = await stashedGetSource(\n url,\n {\n format: \"module\",\n },\n stashedGetSource\n ),\n source = _await$stashedGetSour.source;\n\n const result = await defaultTransformSource(\n source,\n {\n format: \"module\",\n url,\n },\n defaultTransformSource\n );\n return {\n format: \"module\",\n source: result.source,\n };\n}\n\nexport async function transformModuleIfNeeded(\n source: string,\n url: string,\n loader: any,\n port?: MessagePort // Make port parameter optional\n) {\n if (\n source.indexOf(\"use client\") === -1 &&\n source.indexOf(\"use server\") === -1\n ) {\n return source;\n }\n\n let program;\n try {\n program = acorn.parse(source, {\n ecmaVersion: \"2024\" as never,\n sourceType: \"module\",\n locations: true,\n });\n } catch (x) {\n console.error(\n \"[react-loader] Error parsing %s: %s\",\n url,\n (x as Error)?.message\n );\n return source;\n }\n\n let useClient = false;\n let useServer = false; // Keep this for server transforms\n\n // Check for directives\n for (const node of program.body) {\n if (node.type !== \"ExpressionStatement\" || !node.directive) continue;\n\n if (node.directive === \"use client\") {\n useClient = true;\n if (port) {\n port.postMessage({\n type: \"CLIENT_COMPONENT\",\n url,\n source,\n });\n }\n break;\n }\n if (node.directive === \"use server\") {\n useServer = true;\n break;\n }\n }\n\n if (useClient) {\n return transformClientModule(program, url, undefined, loader);\n } else if (useServer) {\n return transformServerModule(source, program, url, undefined, loader, port);\n }\n\n return source;\n}\n\nfunction readMappings(\n mappings: string,\n callback: (\n generatedLine: number,\n generatedColumn: number,\n sourceIndex: number,\n originalLine: number,\n originalColumn: number,\n nameIndex: number\n ) => void\n) {\n let line = 1;\n let column = 0;\n let sourceIndex = 0;\n let originalLine = 0;\n let originalColumn = 0;\n let nameIndex = 0;\n\n let index = 0;\n while (index < mappings.length) {\n if (mappings[index] === \";\") {\n line++;\n column = 0;\n index++;\n continue;\n }\n if (mappings[index] === \",\") {\n index++;\n continue;\n }\n\n let [\n generatedColumnDelta = 0,\n sourceIndexDelta = 0,\n originalLineDelta = 0,\n originalColumnDelta = 0,\n nameIndexDelta = 0,\n ] = decodeVLQ(mappings.slice(index));\n\n // Update positions\n column += generatedColumnDelta;\n sourceIndex += sourceIndexDelta;\n originalLine += originalLineDelta;\n originalColumn += originalColumnDelta;\n nameIndex += nameIndexDelta;\n\n // Skip the encoded segment\n while (index < mappings.length && !/[,;]/.test(mappings[index])) {\n index++;\n }\n\n callback(\n line,\n column,\n sourceIndex,\n originalLine,\n originalColumn,\n nameIndex\n );\n }\n}\n\nfunction createMappingsSerializer() {\n let previousGeneratedLine = 1;\n let previousGeneratedColumn = 0;\n let previousOriginalFile = 0;\n let previousOriginalLine = 0;\n let previousOriginalColumn = 0;\n let previousNameIndex = 0;\n\n return function (\n generatedLine: number,\n generatedColumn: number,\n originalFile: number,\n originalLine: number,\n originalColumn: number,\n nameIndex: number\n ): string {\n // Reset column when moving to a new line\n if (generatedLine > previousGeneratedLine) {\n previousGeneratedColumn = 0;\n let lines = \"\";\n for (let i = previousGeneratedLine; i < generatedLine; i++) {\n lines += \";\";\n }\n previousGeneratedLine = generatedLine;\n if (lines) return lines;\n }\n\n // Calculate deltas\n const segment = [\n generatedColumn - previousGeneratedColumn,\n originalFile - previousOriginalFile,\n originalLine - previousOriginalLine,\n originalColumn - previousOriginalColumn,\n ];\n\n if (nameIndex >= 0) {\n segment.push(nameIndex - previousNameIndex);\n }\n\n // Update previous values\n previousGeneratedColumn = generatedColumn;\n previousOriginalFile = originalFile;\n previousOriginalLine = originalLine;\n previousOriginalColumn = originalColumn;\n previousNameIndex = nameIndex;\n\n return encodeVLQ(segment) + \",\";\n };\n}\n\n// VLQ encoding helpers\nconst VLQ_SHIFT = 5;\nconst VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;\nconst VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;\nconst BASE64_CHARS =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nfunction encodeVLQ(numbers: number[]): string {\n return numbers\n .map((num) => {\n // Convert to VLQ\n const vlq = num < 0 ? (-num << 1) | 1 : num << 1;\n\n let result = \"\";\n let value = vlq;\n\n do {\n let digit = value & VLQ_VALUE_MASK;\n value >>>= VLQ_SHIFT;\n if (value > 0) {\n digit |= VLQ_CONTINUATION_BIT;\n }\n result += BASE64_CHARS[digit];\n } while (value > 0);\n\n return result;\n })\n .join(\"\");\n}\n\nfunction decodeVLQ(str: string): number[] {\n const numbers: number[] = [];\n let value = 0;\n let shift = 0;\n let index = 0;\n\n while (index < str.length && !/[,;]/.test(str[index])) {\n const digit = BASE64_CHARS.indexOf(str[index]);\n if (digit === -1) break;\n\n value += (digit & VLQ_VALUE_MASK) << shift;\n\n if ((digit & VLQ_CONTINUATION_BIT) === 0) {\n const negate = value & 1;\n value >>>= 1;\n numbers.push(negate ? -value : value);\n value = shift = 0;\n } else {\n shift += VLQ_SHIFT;\n }\n\n index++;\n }\n\n return numbers;\n}\n\n// Initialize hook\nexport async function initialize(data: { port: MessagePort }) {\n loaderPort = data.port; // Store port\n data.port.postMessage({ type: \"INITIALIZED\" });\n data.port.unref();\n}\n\n// Resolve hook\nexport async function resolve(\n specifier: string,\n context: ResolveHookContext,\n nextResolve: any\n) {\n return nextResolve(specifier, context);\n}\n\n// Load hook\nexport async function load(\n url: string,\n context: LoadHookContext & LoaderContext,\n nextLoad: any\n) {\n const result = await nextLoad(url, context);\n if (result.format === \"module\") {\n const newSrc = await transformModuleIfNeeded(\n result.source,\n url,\n nextLoad,\n loaderPort ?? undefined\n );\n return { ...result, source: newSrc };\n }\n return result;\n}\n\n// Transform hook\nexport async function transformSource(\n source: string,\n context: any,\n defaultTransformSource: any\n) {\n const transformed = await defaultTransformSource(\n source,\n context,\n defaultTransformSource\n );\n\n if (context.format === \"module\") {\n const transformedSource = transformed.source;\n if (typeof transformedSource !== \"string\") {\n throw new Error(\"Expected source to have been transformed to a string.\");\n }\n\n const newSrc = await transformModuleIfNeeded(\n transformedSource,\n context.url,\n (url: string, ctx: any, defaultLoad: any) =>\n loadClientImport(url, defaultTransformSource),\n context.data?.port!\n );\n return { source: newSrc };\n }\n\n return transformed;\n}\n"],"names":["generatedLine"],"mappings":"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"}
1
+ {"version":3,"file":"react-loader.js","sources":["../../../plugin/loader/react-loader.ts"],"sourcesContent":["import * as acorn from \"acorn-loose\";\nimport { basename } from \"path\";\n\nimport {\n // @ts-ignore\n setSourceMapsSupport,\n SourceMap,\n type LoadHookContext,\n type ResolveHookContext,\n} from \"node:module\";\nimport type { MessagePort } from \"node:worker_threads\";\n\nlet stashedGetSource: any = null;\nlet stashedResolve: any = null;\n\n// Enable source maps with full support\nsetSourceMapsSupport(true, {\n nodeModules: true, // Enable for node_modules files\n generatedCode: true, // Enable for generated code\n});\n\n// Add type for our context with port\ninterface LoaderContext {\n data?: { port: MessagePort };\n}\n\n// Store port globally for use in load hook\nlet loaderPort: MessagePort | undefined;\n\nexport async function getSource(\n url: string,\n context: any,\n defaultGetSource: any\n) {\n // We stash this in case we end up needing to resolve export * statements later.\n stashedGetSource = defaultGetSource;\n return defaultGetSource(url, context, defaultGetSource);\n}\n\nfunction addExportedEntry(\n exportedEntries: any,\n localNames: any,\n localName: any,\n exportedName: any,\n type: any,\n loc: any\n) {\n if (localNames.has(localName)) {\n // If the same local name is exported more than once, we only need one of the names.\n return;\n }\n\n exportedEntries.push({\n localName,\n exportedName,\n type,\n loc,\n originalLine: -1,\n originalColumn: -1,\n originalSource: -1,\n nameIndex: -1,\n });\n}\n\nfunction addLocalExportedNames(\n exportedEntries: any,\n localNames: any,\n node: any\n) {\n switch (node.type) {\n case \"Identifier\":\n addExportedEntry(\n exportedEntries,\n localNames,\n node.name,\n node.name,\n null,\n node.loc\n );\n return;\n\n case \"ObjectPattern\":\n for (let i = 0; i < node.properties.length; i++)\n addLocalExportedNames(exportedEntries, localNames, node.properties[i]);\n\n return;\n\n case \"ArrayPattern\":\n for (let i = 0; i < node.elements.length; i++) {\n const element = node.elements[i];\n if (element)\n addLocalExportedNames(exportedEntries, localNames, element);\n }\n\n return;\n\n case \"Property\":\n addLocalExportedNames(exportedEntries, localNames, node.value);\n return;\n\n case \"AssignmentPattern\":\n addLocalExportedNames(exportedEntries, localNames, node.left);\n return;\n\n case \"RestElement\":\n addLocalExportedNames(exportedEntries, localNames, node.argument);\n return;\n\n case \"ParenthesizedExpression\":\n addLocalExportedNames(exportedEntries, localNames, node.expression);\n return;\n }\n}\n\nfunction transformServerModule(\n source: string,\n program: any,\n url: string,\n sourceMap: any,\n _loader: any,\n port: MessagePort | undefined\n) {\n const body = program.body; // This entry list needs to be in source location order.\n\n const exportedEntries: any[] = []; // Dedupe set.\n\n const localNames = new Set();\n\n for (let i = 0; i < body.length; i++) {\n const node = body[i];\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n // If export * is used, the other file needs to explicitly opt into \"use server\" too.\n break;\n\n case \"ExportDefaultDeclaration\":\n if (node.declaration.type === \"Identifier\") {\n addExportedEntry(\n exportedEntries,\n localNames,\n node.declaration.name,\n \"default\",\n null,\n node.declaration.loc\n );\n } else if (node.declaration.type === \"FunctionDeclaration\") {\n if (node.declaration.id) {\n addExportedEntry(\n exportedEntries,\n localNames,\n node.declaration.id.name,\n \"default\",\n \"function\",\n node.declaration.id.loc\n );\n }\n }\n\n continue;\n\n case \"ExportNamedDeclaration\":\n if (node.declaration) {\n if (node.declaration.type === \"VariableDeclaration\") {\n const declarations = node.declaration.declarations;\n\n for (let j = 0; j < declarations.length; j++) {\n addLocalExportedNames(\n exportedEntries,\n localNames,\n declarations[j].id\n );\n }\n } else {\n const name = node.declaration.id.name;\n addExportedEntry(\n exportedEntries,\n localNames,\n name,\n name,\n node.declaration.type === \"FunctionDeclaration\"\n ? \"function\"\n : null,\n node.declaration.id.loc\n );\n }\n }\n\n if (node.specifiers) {\n const specifiers = node.specifiers;\n\n for (let j = 0; j < specifiers.length; j++) {\n const specifier = specifiers[j];\n addExportedEntry(\n exportedEntries,\n localNames,\n specifier.local.name,\n specifier.exported.name,\n null,\n specifier.local.loc\n );\n }\n }\n\n continue;\n }\n }\n\n let mappings =\n sourceMap && typeof sourceMap.mappings === \"string\"\n ? sourceMap.mappings\n : \"\";\n let newSrc = source;\n\n if (exportedEntries.length > 0) {\n let lastSourceIndex = 0;\n let lastOriginalLine = 0;\n let lastOriginalColumn = 0;\n let lastNameIndex = 0;\n let sourceLineCount = 0;\n let lastMappedLine = 0;\n\n if (sourceMap) {\n // We iterate source mapping entries and our matched exports in parallel to source map\n // them to their original location.\n let nextEntryIdx = 0;\n let nextEntryLine = exportedEntries[nextEntryIdx].loc.start.line;\n let nextEntryColumn = exportedEntries[nextEntryIdx].loc.start.column;\n readMappings(\n mappings,\n (\n generatedLine: number,\n generatedColumn: number,\n sourceIndex: number,\n originalLine: number,\n originalColumn: number,\n nameIndex: number\n ) => {\n if (\n generatedLine > nextEntryLine ||\n (generatedLine === nextEntryLine &&\n generatedColumn > nextEntryColumn)\n ) {\n // We're past the entry which means that the best match we have is the previous entry.\n if (lastMappedLine === nextEntryLine) {\n // Match\n exportedEntries[nextEntryIdx].originalLine = lastOriginalLine;\n exportedEntries[nextEntryIdx].originalColumn = lastOriginalColumn;\n exportedEntries[nextEntryIdx].originalSource = lastSourceIndex;\n exportedEntries[nextEntryIdx].nameIndex = lastNameIndex;\n }\n\n nextEntryIdx++;\n\n if (nextEntryIdx < exportedEntries.length) {\n nextEntryLine = exportedEntries[nextEntryIdx].loc.start.line;\n nextEntryColumn = exportedEntries[nextEntryIdx].loc.start.column;\n } else {\n nextEntryLine = -1;\n nextEntryColumn = -1;\n }\n }\n\n lastMappedLine = generatedLine;\n\n if (sourceIndex > -1) {\n lastSourceIndex = sourceIndex;\n }\n\n if (originalLine > -1) {\n lastOriginalLine = originalLine;\n }\n\n if (originalColumn > -1) {\n lastOriginalColumn = originalColumn;\n }\n\n if (nameIndex > -1) {\n lastNameIndex = nameIndex;\n }\n }\n );\n\n if (nextEntryIdx < exportedEntries.length) {\n if (lastMappedLine === nextEntryLine) {\n // Match\n exportedEntries[nextEntryIdx].originalLine = lastOriginalLine;\n exportedEntries[nextEntryIdx].originalColumn = lastOriginalColumn;\n exportedEntries[nextEntryIdx].originalSource = lastSourceIndex;\n exportedEntries[nextEntryIdx].nameIndex = lastNameIndex;\n }\n }\n\n for (\n let lastIdx = mappings.length - 1;\n lastIdx >= 0 && mappings[lastIdx] === \";\";\n lastIdx--\n ) {\n // If the last mapped lines don't contain any segments, we don't get a callback from readMappings\n // so we need to pad the number of mapped lines, with one for each empty line.\n lastMappedLine++;\n }\n\n sourceLineCount = program.loc.end.line;\n\n if (sourceLineCount < lastMappedLine) {\n throw new Error(\n \"The source map has more mappings than there are lines.\"\n );\n } // If the original source string had more lines than there are mappings in the source map.\n // Add some extra padding of unmapped lines so that any lines that we add line up.\n\n for (\n let extraLines = sourceLineCount - lastMappedLine;\n extraLines > 0;\n extraLines--\n ) {\n mappings += \";\";\n }\n } else {\n // If a file doesn't have a source map then we generate a blank source map that just\n // contains the original content and segments pointing to the original lines.\n sourceLineCount = 1;\n let idx = -1;\n\n while ((idx = source.indexOf(\"\\n\", idx + 1)) !== -1) {\n sourceLineCount++;\n }\n\n mappings = \"AAAA\" + \";AACA\".repeat(sourceLineCount - 1);\n sourceMap = new SourceMap({\n version: 3,\n file: basename(url),\n sources: [url],\n sourcesContent: [source],\n names: [],\n mappings: mappings,\n sourceRoot: \"\",\n });\n lastSourceIndex = 0;\n lastOriginalLine = sourceLineCount;\n lastOriginalColumn = 0;\n lastNameIndex = -1;\n lastMappedLine = sourceLineCount;\n\n for (let i = 0; i < exportedEntries.length; i++) {\n // Point each entry to original location.\n const entry = exportedEntries[i];\n entry.originalSource = 0;\n entry.originalLine = entry.loc.start.line; // We use column zero since we do the short-hand line-only source maps above.\n\n entry.originalColumn = 0; // entry.loc.start.column;\n }\n }\n\n newSrc += \"\\n\\n;\";\n newSrc +=\n 'import {registerServerReference} from \"react-server-dom-esm/server\";\\n';\n\n if (mappings) {\n mappings += \";;\";\n }\n\n const createMapping = createMappingsSerializer(); // Create an empty mapping pointing to where we last left off to reset the counters.\n\n let generatedLine = 1;\n createMapping(\n generatedLine,\n 0,\n lastSourceIndex,\n lastOriginalLine,\n lastOriginalColumn,\n lastNameIndex\n );\n\n for (let i = 0; i < exportedEntries.length; i++) {\n const entry = exportedEntries[i];\n generatedLine++;\n\n if (entry.type !== \"function\") {\n // We first check if the export is a function and if so annotate it.\n newSrc += \"if (typeof \" + entry.localName + ' === \"function\") ';\n }\n\n newSrc += \"registerServerReference(\" + entry.localName + \",\";\n newSrc += JSON.stringify(url) + \",\";\n newSrc += JSON.stringify(entry.exportedName) + \");\\n\";\n mappings += createMapping(\n generatedLine,\n 0,\n entry.originalSource,\n entry.originalLine,\n entry.originalColumn,\n entry.nameIndex\n );\n }\n }\n\n if (sourceMap) {\n // Override with an new mappings and serialize an inline source map.\n sourceMap.mappings = mappings;\n newSrc +=\n \"//# sourceMappingURL=data:application/json;charset=utf-8;base64,\" +\n Buffer.from(JSON.stringify(sourceMap)).toString(\"base64\");\n }\n if (port) {\n port.postMessage({\n type: \"SERVER_MODULE\",\n url,\n source: newSrc,\n });\n }\n\n return newSrc;\n}\n\nfunction addExportNames(names: any, node: any) {\n switch (node.type) {\n case \"Identifier\":\n names.push(node.name);\n return;\n\n case \"ObjectPattern\":\n for (let i = 0; i < node.properties.length; i++)\n addExportNames(names, node.properties[i]);\n\n return;\n\n case \"ArrayPattern\":\n for (let i = 0; i < node.elements.length; i++) {\n const element = node.elements[i];\n if (element) addExportNames(names, element);\n }\n\n return;\n\n case \"Property\":\n addExportNames(names, node.value);\n return;\n\n case \"AssignmentPattern\":\n addExportNames(names, node.left);\n return;\n\n case \"RestElement\":\n addExportNames(names, node.argument);\n return;\n\n case \"ParenthesizedExpression\":\n addExportNames(names, node.expression);\n return;\n }\n}\n\nfunction resolveClientImport(specifier: string, parentURL: string) {\n const conditions = [\"node\", \"import\"];\n\n if (stashedResolve === null) {\n throw new Error(\n \"Expected resolve to have been called before transformSource\"\n );\n }\n\n return stashedResolve(\n specifier,\n {\n conditions,\n parentURL,\n },\n stashedResolve\n );\n}\n\nasync function parseExportNamesInto(\n body: any,\n names: any,\n parentURL: string,\n loader: any\n) {\n for (let i = 0; i < body.length; i++) {\n const node = body[i];\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n if (node.exported) {\n addExportNames(names, node.exported);\n continue;\n } else {\n const _await$resolveClientI = await resolveClientImport(\n node.source.value,\n parentURL\n ),\n url = _await$resolveClientI.url;\n\n const _await$loader = await loader(\n url,\n {\n format: \"module\",\n conditions: [],\n importAttributes: {},\n },\n loader\n ),\n source = _await$loader.source;\n\n if (typeof source !== \"string\") {\n throw new Error(\"Expected the transformed source to be a string.\");\n }\n\n let childBody;\n\n try {\n childBody = acorn.parse(source, {\n ecmaVersion: \"2024\" as never,\n sourceType: \"module\",\n }).body;\n } catch (x) {\n // eslint-disable-next-line react-internal/no-production-logging\n console.error(\"Error parsing %s %s\", url, (x as Error)?.message);\n continue;\n }\n\n await parseExportNamesInto(childBody, names, url, loader);\n continue;\n }\n\n case \"ExportDefaultDeclaration\":\n names.push(\"default\");\n continue;\n\n case \"ExportNamedDeclaration\":\n if (node.declaration) {\n if (node.declaration.type === \"VariableDeclaration\") {\n const declarations = node.declaration.declarations;\n\n for (let j = 0; j < declarations.length; j++) {\n addExportNames(names, declarations[j].id);\n }\n } else {\n addExportNames(names, node.declaration.id);\n }\n }\n\n if (node.specifiers) {\n const specifiers = node.specifiers;\n\n for (let j = 0; j < specifiers.length; j++) {\n addExportNames(names, specifiers[j].exported);\n }\n }\n\n continue;\n }\n }\n}\n\nasync function transformClientModule(\n program: any,\n url: string,\n sourceMap: any,\n loader: any\n) {\n const body = program.body;\n const names: any[] = [];\n await parseExportNamesInto(body, names, url, loader);\n\n\n if (names.length === 0) {\n console.log(\"[react-loader] No exports found in:\", url);\n return \"\";\n }\n\n let newSrc =\n 'import {registerClientReference} from \"react-server-dom-esm/server\";\\n';\n\n for (let i = 0; i < names.length; i++) {\n const name = names[i];\n\n const errorMessage =\n name === \"default\"\n ? `Attempted to call the default export of ${url} from the server but it's on the client`\n : `Attempted to call ${name}() from the server but ${name} is on the client`;\n\n const fullError = `${errorMessage}. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.`;\n\n // Convert file:// URL to relative path for the browser\n const browserUrl = url.replace(\"file://\", \"\").replace(process.cwd(), \"\");\n\n if (name === \"default\") {\n newSrc += `export default registerClientReference(function() { throw new Error(${JSON.stringify(\n fullError\n )}); }, ${JSON.stringify(browserUrl)}, ${JSON.stringify(name)});\\n`;\n } else {\n newSrc += `export const ${name} = registerClientReference(function() { throw new Error(${JSON.stringify(\n fullError\n )}); }, ${JSON.stringify(browserUrl)}, ${JSON.stringify(name)});\\n`;\n }\n }\n\n // Create source map\n if (sourceMap) {\n const newSourceMap = {\n version: 3,\n file: basename(url),\n sources: [url],\n sourcesContent: [program.source],\n names: [],\n mappings: \"AAAA;\" + \";\".repeat(names.length), // Simple line mapping\n sourceRoot: \"\",\n };\n\n newSrc +=\n \"\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,\";\n newSrc += Buffer.from(JSON.stringify(newSourceMap)).toString(\"base64\");\n }\n\n return newSrc;\n}\n\nasync function loadClientImport(url: string, defaultTransformSource: any) {\n if (stashedGetSource === null) {\n throw new Error(\n \"Expected getSource to have been called before transformSource\"\n );\n } // TODO: Validate that this is another module by calling getFormat.\n\n const _await$stashedGetSour = await stashedGetSource(\n url,\n {\n format: \"module\",\n },\n stashedGetSource\n ),\n source = _await$stashedGetSour.source;\n\n const result = await defaultTransformSource(\n source,\n {\n format: \"module\",\n url,\n },\n defaultTransformSource\n );\n return {\n format: \"module\",\n source: result.source,\n };\n}\n\nexport async function transformModuleIfNeeded(\n source: string,\n url: string,\n loader: any,\n port?: MessagePort // Make port parameter optional\n) {\n if (\n source.indexOf(\"use client\") === -1 &&\n source.indexOf(\"use server\") === -1\n ) {\n return source;\n }\n\n let program;\n try {\n program = acorn.parse(source, {\n ecmaVersion: \"2024\" as never,\n sourceType: \"module\",\n locations: true,\n });\n } catch (x) {\n console.error(\n \"[react-loader] Error parsing %s: %s\",\n url,\n (x as Error)?.message\n );\n return source;\n }\n\n let useClient = false;\n let useServer = false; // Keep this for server transforms\n\n // Check for directives\n for (const node of program.body) {\n if (node.type !== \"ExpressionStatement\" || !node.directive) continue;\n\n if (node.directive === \"use client\") {\n useClient = true;\n if (port) {\n port.postMessage({\n type: \"CLIENT_COMPONENT\",\n url,\n source,\n });\n }\n break;\n }\n if (node.directive === \"use server\") {\n useServer = true;\n break;\n }\n }\n\n if (useClient) {\n return transformClientModule(program, url, undefined, loader);\n } else if (useServer) {\n return transformServerModule(source, program, url, undefined, loader, port);\n }\n\n return source;\n}\n\nfunction readMappings(\n mappings: string,\n callback: (\n generatedLine: number,\n generatedColumn: number,\n sourceIndex: number,\n originalLine: number,\n originalColumn: number,\n nameIndex: number\n ) => void\n) {\n let line = 1;\n let column = 0;\n let sourceIndex = 0;\n let originalLine = 0;\n let originalColumn = 0;\n let nameIndex = 0;\n\n let index = 0;\n while (index < mappings.length) {\n if (mappings[index] === \";\") {\n line++;\n column = 0;\n index++;\n continue;\n }\n if (mappings[index] === \",\") {\n index++;\n continue;\n }\n\n let [\n generatedColumnDelta = 0,\n sourceIndexDelta = 0,\n originalLineDelta = 0,\n originalColumnDelta = 0,\n nameIndexDelta = 0,\n ] = decodeVLQ(mappings.slice(index));\n\n // Update positions\n column += generatedColumnDelta;\n sourceIndex += sourceIndexDelta;\n originalLine += originalLineDelta;\n originalColumn += originalColumnDelta;\n nameIndex += nameIndexDelta;\n\n // Skip the encoded segment\n while (index < mappings.length && !/[,;]/.test(mappings[index])) {\n index++;\n }\n\n callback(\n line,\n column,\n sourceIndex,\n originalLine,\n originalColumn,\n nameIndex\n );\n }\n}\n\nfunction createMappingsSerializer() {\n let previousGeneratedLine = 1;\n let previousGeneratedColumn = 0;\n let previousOriginalFile = 0;\n let previousOriginalLine = 0;\n let previousOriginalColumn = 0;\n let previousNameIndex = 0;\n\n return function (\n generatedLine: number,\n generatedColumn: number,\n originalFile: number,\n originalLine: number,\n originalColumn: number,\n nameIndex: number\n ): string {\n // Reset column when moving to a new line\n if (generatedLine > previousGeneratedLine) {\n previousGeneratedColumn = 0;\n let lines = \"\";\n for (let i = previousGeneratedLine; i < generatedLine; i++) {\n lines += \";\";\n }\n previousGeneratedLine = generatedLine;\n if (lines) return lines;\n }\n\n // Calculate deltas\n const segment = [\n generatedColumn - previousGeneratedColumn,\n originalFile - previousOriginalFile,\n originalLine - previousOriginalLine,\n originalColumn - previousOriginalColumn,\n ];\n\n if (nameIndex >= 0) {\n segment.push(nameIndex - previousNameIndex);\n }\n\n // Update previous values\n previousGeneratedColumn = generatedColumn;\n previousOriginalFile = originalFile;\n previousOriginalLine = originalLine;\n previousOriginalColumn = originalColumn;\n previousNameIndex = nameIndex;\n\n return encodeVLQ(segment) + \",\";\n };\n}\n\n// VLQ encoding helpers\nconst VLQ_SHIFT = 5;\nconst VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;\nconst VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;\nconst BASE64_CHARS =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nfunction encodeVLQ(numbers: number[]): string {\n return numbers\n .map((num) => {\n // Convert to VLQ\n const vlq = num < 0 ? (-num << 1) | 1 : num << 1;\n\n let result = \"\";\n let value = vlq;\n\n do {\n let digit = value & VLQ_VALUE_MASK;\n value >>>= VLQ_SHIFT;\n if (value > 0) {\n digit |= VLQ_CONTINUATION_BIT;\n }\n result += BASE64_CHARS[digit];\n } while (value > 0);\n\n return result;\n })\n .join(\"\");\n}\n\nfunction decodeVLQ(str: string): number[] {\n const numbers: number[] = [];\n let value = 0;\n let shift = 0;\n let index = 0;\n\n while (index < str.length && !/[,;]/.test(str[index])) {\n const digit = BASE64_CHARS.indexOf(str[index]);\n if (digit === -1) break;\n\n value += (digit & VLQ_VALUE_MASK) << shift;\n\n if ((digit & VLQ_CONTINUATION_BIT) === 0) {\n const negate = value & 1;\n value >>>= 1;\n numbers.push(negate ? -value : value);\n value = shift = 0;\n } else {\n shift += VLQ_SHIFT;\n }\n\n index++;\n }\n\n return numbers;\n}\n\n// Initialize hook\nexport async function initialize(data: { port: MessagePort }) {\n loaderPort = data.port; // Store port\n data.port.postMessage({ type: \"INITIALIZED\" });\n data.port.unref();\n}\n\n// Resolve hook\nexport async function resolve(\n specifier: string,\n context: ResolveHookContext,\n nextResolve: any\n) {\n return nextResolve(specifier, context);\n}\n\n// Load hook\nexport async function load(\n url: string,\n context: LoadHookContext & LoaderContext,\n nextLoad: any\n) {\n const result = await nextLoad(url, context);\n if (result.format === \"module\") {\n const newSrc = await transformModuleIfNeeded(\n result.source,\n url,\n nextLoad,\n loaderPort ?? undefined\n );\n return { ...result, source: newSrc };\n }\n return result;\n}\n\n// Transform hook\nexport async function transformSource(\n source: string,\n context: any,\n defaultTransformSource: any\n) {\n const transformed = await defaultTransformSource(\n source,\n context,\n defaultTransformSource\n );\n\n if (context.format === \"module\") {\n const transformedSource = transformed.source;\n if (typeof transformedSource !== \"string\") {\n throw new Error(\"Expected source to have been transformed to a string.\");\n }\n\n const newSrc = await transformModuleIfNeeded(\n transformedSource,\n context.url,\n (url: string) =>\n loadClientImport(url, defaultTransformSource),\n context.data?.port!\n );\n return { source: newSrc };\n }\n\n return transformed;\n}\n"],"names":["generatedLine"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/preserver/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKvD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,MAAM,EAAE,MAAM,CAsGxF"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/preserver/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAqCvD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,MAAM,EAAE,MAAM,CAsHxF"}
@@ -3,10 +3,36 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import MagicString from 'magic-string';
7
6
  import { DEFAULT_CONFIG } from '../config/defaults.js';
7
+ import { basename } from 'path';
8
8
 
9
9
  const REACT_DIRECTIVES = /* @__PURE__ */ new Set(["use client", "use server"]);
10
+ function createSourceMap(id, code, mappings) {
11
+ return {
12
+ version: 3,
13
+ file: basename(id),
14
+ sources: [id],
15
+ sourcesContent: [code],
16
+ names: [],
17
+ mappings,
18
+ sourceRoot: ""
19
+ };
20
+ }
21
+ function removeRanges(code, ranges) {
22
+ ranges.sort((a, b) => b.start - a.start);
23
+ let result = code;
24
+ for (const range of ranges) {
25
+ result = result.slice(0, range.start) + result.slice(range.end);
26
+ }
27
+ return result;
28
+ }
29
+ function countLines(str) {
30
+ let count = 1;
31
+ for (let i = 0; i < str.length; i++) {
32
+ if (str[i] === "\n") count++;
33
+ }
34
+ return count;
35
+ }
10
36
  function reactPreservePlugin(_options) {
11
37
  const meta = {};
12
38
  return {
@@ -32,8 +58,9 @@ function reactPreservePlugin(_options) {
32
58
  if (ast.type !== "Program") {
33
59
  return null;
34
60
  }
35
- const magicString = new MagicString(code);
61
+ const rangesToRemove = [];
36
62
  let hasChanged = false;
63
+ let mappings = "AAAA";
37
64
  for (const node of ast.body) {
38
65
  if (node.type !== "ExpressionStatement") {
39
66
  break;
@@ -44,21 +71,28 @@ function reactPreservePlugin(_options) {
44
71
  } else if (node.expression.type === "Literal" && typeof node.expression.value === "string" && REACT_DIRECTIVES.has(node.expression.value)) {
45
72
  directive = node.expression.value;
46
73
  }
47
- if (directive) {
74
+ if (directive && "start" in node && "end" in node) {
48
75
  meta[id] ||= /* @__PURE__ */ new Set();
49
76
  meta[id].add(directive);
50
- if ("start" in node && "end" in node) {
51
- magicString.remove(node.start, node.end);
52
- hasChanged = true;
77
+ rangesToRemove.push({
78
+ start: node.start,
79
+ end: node.end
80
+ });
81
+ hasChanged = true;
82
+ const removedLines = code.slice(node.start, node.end).split("\n").length - 1;
83
+ for (let i = 0; i < removedLines; i++) {
84
+ mappings += ";AACA";
53
85
  }
54
86
  }
55
87
  }
56
88
  if (!hasChanged) {
57
89
  return null;
58
90
  }
91
+ const newCode = removeRanges(code, rangesToRemove);
92
+ const sourceMap = createSourceMap(id, code, mappings);
59
93
  return {
60
- code: magicString.toString(),
61
- map: magicString.generateMap({ hires: true }),
94
+ code: newCode,
95
+ map: sourceMap,
62
96
  meta: {
63
97
  directives: Array.from(meta[id] || [])
64
98
  }
@@ -73,13 +107,14 @@ function reactPreservePlugin(_options) {
73
107
  }
74
108
  }
75
109
  if (chunkDirectives.size) {
76
- const magicString = new MagicString(code);
77
- magicString.prepend(
78
- Array.from(chunkDirectives).map((d) => `"${d}";`).join("\n") + "\n"
79
- );
110
+ const directivesCode = Array.from(chunkDirectives).map((d) => `"${d}";`).join("\n") + "\n";
111
+ const newCode = directivesCode + code;
112
+ const lineCount = countLines(directivesCode);
113
+ const mappings = "AAAA" + ";AACA".repeat(lineCount - 1);
114
+ const sourceMap = createSourceMap(chunk.fileName, code, mappings);
80
115
  return {
81
- code: magicString.toString(),
82
- map: magicString.generateMap({ hires: true })
116
+ code: newCode,
117
+ map: sourceMap
83
118
  };
84
119
  }
85
120
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../plugin/preserver/plugin.ts"],"sourcesContent":["import type { Node } from \"estree\";\nimport MagicString from \"magic-string\";\nimport type { StreamPluginOptions } from \"../types.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\n\nconst REACT_DIRECTIVES = new Set([\"use client\", \"use server\"]);\n\nexport function reactPreservePlugin(_options: StreamPluginOptions): import(\"vite\").Plugin {\n const meta: Record<string, Set<string>> = {};\n\n return {\n name: \"vite-plugin-react-server:preserve-directives\",\n enforce: \"post\",\n\n transform: {\n order: \"post\", // Ensure this runs last in transform phase\n handler(code: string, id: string) {\n // Skip node_modules and vite files\n if (id.includes(\"node_modules\") || id.includes(\"vite/dist\") || !id.match(DEFAULT_CONFIG.FILE_REGEX)) {\n return null;\n }\n\n let ast: Node;\n try {\n ast = this.parse(code, {\n allowReturnOutsideFunction: true,\n jsx: true,\n }) as Node;\n } catch (e) {\n console.warn(`[PreservePlugin] Failed to parse ${id}`, e);\n return null;\n }\n\n if (ast.type !== \"Program\") {\n return null;\n }\n\n const magicString = new MagicString(code);\n let hasChanged = false;\n\n // Only look at top-level directives\n for (const node of ast.body) {\n if (node.type !== \"ExpressionStatement\") {\n break;\n }\n\n let directive: string | null = null;\n if (\"directive\" in node) {\n directive = node.directive;\n } else if (\n node.expression.type === \"Literal\" &&\n typeof node.expression.value === \"string\" &&\n REACT_DIRECTIVES.has(node.expression.value)\n ) {\n directive = node.expression.value;\n }\n\n if (directive) {\n meta[id] ||= new Set<string>();\n meta[id].add(directive);\n\n if (\"start\" in node && \"end\" in node) {\n magicString.remove(node.start as number, node.end as number);\n hasChanged = true;\n }\n }\n }\n\n if (!hasChanged) {\n return null;\n }\n\n return {\n code: magicString.toString(),\n map: magicString.generateMap({ hires: true }),\n meta: {\n directives: Array.from(meta[id] || []),\n },\n };\n },\n },\n\n renderChunk(code, chunk) {\n const chunkDirectives = new Set<string>();\n\n // Collect directives from all modules in chunk\n for (const id of chunk.moduleIds) {\n if (meta[id]) {\n meta[id].forEach((d) => chunkDirectives.add(d));\n }\n }\n\n if (chunkDirectives.size) {\n const magicString = new MagicString(code);\n magicString.prepend(\n Array.from(chunkDirectives)\n .map((d) => `\"${d}\";`)\n .join(\"\\n\") + \"\\n\"\n );\n\n return {\n code: magicString.toString(),\n map: magicString.generateMap({ hires: true }),\n };\n }\n\n return null;\n },\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../plugin/preserver/plugin.ts"],"sourcesContent":["import type { Node } from \"estree\";\nimport type { StreamPluginOptions } from \"../types.js\";\nimport { DEFAULT_CONFIG } from \"../config/defaults.js\";\nimport { basename } from \"path\";\n\nconst REACT_DIRECTIVES = new Set([\"use client\", \"use server\"]);\n\nfunction createSourceMap(id: string, code: string, mappings: string) {\n return {\n version: 3,\n file: basename(id),\n sources: [id],\n sourcesContent: [code],\n names: [],\n mappings,\n sourceRoot: \"\",\n };\n}\n\nfunction removeRanges(code: string, ranges: Array<{ start: number; end: number }>) {\n // Sort ranges in reverse order to not affect positions\n ranges.sort((a, b) => b.start - a.start);\n \n let result = code;\n for (const range of ranges) {\n result = result.slice(0, range.start) + result.slice(range.end);\n }\n return result;\n}\n\nfunction countLines(str: string): number {\n let count = 1;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\n') count++;\n }\n return count;\n}\n\nexport function reactPreservePlugin(_options: StreamPluginOptions): import(\"vite\").Plugin {\n const meta: Record<string, Set<string>> = {};\n\n return {\n name: \"vite-plugin-react-server:preserve-directives\",\n enforce: \"post\",\n\n transform: {\n order: \"post\", // Ensure this runs last in transform phase\n handler(code: string, id: string) {\n // Skip node_modules and vite files\n if (id.includes(\"node_modules\") || id.includes(\"vite/dist\") || !id.match(DEFAULT_CONFIG.FILE_REGEX)) {\n return null;\n }\n\n let ast: Node;\n try {\n ast = this.parse(code, {\n allowReturnOutsideFunction: true,\n jsx: true,\n }) as Node;\n } catch (e) {\n console.warn(`[PreservePlugin] Failed to parse ${id}`, e);\n return null;\n }\n\n if (ast.type !== \"Program\") {\n return null;\n }\n\n const rangesToRemove: Array<{ start: number; end: number }> = [];\n let hasChanged = false;\n let lineCount = 1;\n let mappings = \"AAAA\"; // Initial mapping for first line\n\n // Only look at top-level directives\n for (const node of ast.body) {\n if (node.type !== \"ExpressionStatement\") {\n break;\n }\n\n let directive: string | null = null;\n if (\"directive\" in node) {\n directive = node.directive;\n } else if (\n node.expression.type === \"Literal\" &&\n typeof node.expression.value === \"string\" &&\n REACT_DIRECTIVES.has(node.expression.value)\n ) {\n directive = node.expression.value;\n }\n\n if (directive && \"start\" in node && \"end\" in node) {\n meta[id] ||= new Set<string>();\n meta[id].add(directive);\n rangesToRemove.push({ \n start: node.start as number, \n end: node.end as number \n });\n hasChanged = true;\n \n // Add mapping for each line removed\n const removedLines = code.slice(node.start as number, node.end as number).split('\\n').length - 1;\n for (let i = 0; i < removedLines; i++) {\n mappings += \";AACA\";\n lineCount++;\n }\n }\n }\n\n if (!hasChanged) {\n return null;\n }\n\n const newCode = removeRanges(code, rangesToRemove);\n const sourceMap = createSourceMap(id, code, mappings);\n\n return {\n code: newCode,\n map: sourceMap,\n meta: {\n directives: Array.from(meta[id] || []),\n },\n };\n },\n },\n\n renderChunk(code, chunk) {\n const chunkDirectives = new Set<string>();\n\n // Collect directives from all modules in chunk\n for (const id of chunk.moduleIds) {\n if (meta[id]) {\n meta[id].forEach((d) => chunkDirectives.add(d));\n }\n }\n\n if (chunkDirectives.size) {\n const directivesCode = Array.from(chunkDirectives)\n .map((d) => `\"${d}\";`)\n .join(\"\\n\") + \"\\n\";\n \n const newCode = directivesCode + code;\n\n // Create source map for the prepended directives\n const lineCount = countLines(directivesCode);\n const mappings = \"AAAA\" + \";AACA\".repeat(lineCount - 1);\n const sourceMap = createSourceMap(chunk.fileName, code, mappings);\n\n return {\n code: newCode,\n map: sourceMap,\n };\n }\n\n return null;\n },\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAuB,MAAM,MAAM,CAAC;AACvE,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAiCrB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA8VtE"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../plugin/react-client/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,MAAM,EAAuB,MAAM,MAAM,CAAC;AACvE,OAAO,KAAK,EAIV,mBAAmB,EACpB,MAAM,aAAa,CAAC;AA8BrB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA0RtE"}
@@ -11,15 +11,11 @@ import { join, dirname } from 'node:path';
11
11
  import { getBundleManifest } from '../helpers/getBundleManifest.js';
12
12
  import { checkFilesExist } from '../checkFilesExist.js';
13
13
  import { resolvePages } from '../config/resolvePages.js';
14
- import { tryManifest } from '../helpers/tryManifest.js';
15
14
  import { createInputNormalizer } from '../helpers/inputNormalizer.js';
16
15
  import { createWorker } from '../worker/createWorker.js';
17
- import { getPluginRoot } from '../config/getPaths.js';
18
16
  import { DEFAULT_CONFIG } from '../config/defaults.js';
19
- import { createLogger } from '../utils/logger.js';
20
- import { readFileSync } from 'node:fs';
17
+ import { MIME_TYPES } from '../config/mimeTypes.js';
21
18
 
22
- const log = createLogger("react-client");
23
19
  let userOptions;
24
20
  let userConfig;
25
21
  let clientManifest = {};
@@ -35,8 +31,6 @@ function reactClientPlugin(options) {
35
31
  }
36
32
  userOptions = resolvedOptions.userOptions;
37
33
  root = userOptions.projectRoot;
38
- const rscWorkerPath = join(getPluginRoot(), DEFAULT_CONFIG.RSC_WORKER_PATH);
39
- log.info("RSC worker path:" + rscWorkerPath);
40
34
  return {
41
35
  name: "vite:react-client",
42
36
  async config(config, configEnv) {
@@ -47,7 +41,7 @@ function reactClientPlugin(options) {
47
41
  if (configEnv.command === "serve" && !configEnv.isPreview && !worker) {
48
42
  worker = await createWorker({
49
43
  projectRoot: root,
50
- workerPath: rscWorkerPath,
44
+ workerPath: userOptions.rscWorkerPath,
51
45
  reverseCondition: true
52
46
  });
53
47
  }
@@ -83,7 +77,7 @@ function reactClientPlugin(options) {
83
77
  configResolved(config) {
84
78
  resolvedConfig = config;
85
79
  },
86
- async generateBundle(options2, bundle) {
80
+ async generateBundle(_options, bundle) {
87
81
  clientManifest = getBundleManifest({
88
82
  pluginContext: this,
89
83
  bundle,
@@ -115,70 +109,22 @@ function reactClientPlugin(options) {
115
109
  });
116
110
  server.middlewares.use(async (req, res, next) => {
117
111
  const [key, value] = normalize(req.url);
118
- const fileRoot = key.startsWith("node_modules") ? root : join(root, userOptions.build.outDir, userOptions.build.client);
119
- if (value.endsWith(".js")) {
120
- try {
121
- const stats = await stat(join(fileRoot, value));
122
- if (stats.isFile()) {
123
- const content = await readFile(join(fileRoot, value), "utf-8");
124
- res.setHeader("Content-Type", "application/javascript");
125
- res.end(content);
126
- return;
127
- } else {
128
- next();
129
- }
130
- } catch (error) {
131
- const { manifest: clientManifest2 } = tryManifest({
132
- root,
133
- outDir: join(userOptions.build.outDir, userOptions.build.client)
134
- });
135
- const { manifest: serverManifest } = tryManifest({
136
- root,
137
- outDir: join(userOptions.build.outDir, userOptions.build.server)
138
- });
139
- if (clientManifest2 && value in clientManifest2) {
140
- res.setHeader("Content-Type", "application/javascript");
141
- res.end(clientManifest2[value]);
142
- return;
143
- } else if (serverManifest && value in serverManifest) {
144
- res.setHeader("Content-Type", "application/javascript");
145
- res.end(serverManifest[value]);
146
- return;
147
- }
148
- const foundClient = clientManifest2 && Object.entries(clientManifest2).find(
149
- ([key2, value2]) => value2 === key2 || value2 === value2.file || value2 === value2.src || value2 === value2.name
150
- );
151
- if (foundClient) {
152
- res.setHeader("Content-Type", "application/javascript");
153
- res.end(foundClient);
154
- return;
155
- }
156
- const foundServer = serverManifest && Object.entries(serverManifest).find(
157
- ([key2, value2]) => value2 === key2 || value2 === value2.file || value2 === value2.src || value2 === value2.name
158
- );
159
- if (foundServer) {
160
- res.setHeader("Content-Type", "application/javascript");
161
- res.end(foundServer);
162
- return;
163
- }
164
- next();
165
- }
166
- } else {
167
- let html = "";
168
- try {
169
- const last = value.split("/").pop();
170
- if (!last?.includes(".")) {
171
- const isDir = await stat(join(fileRoot, value));
172
- if (isDir.isDirectory()) {
173
- html = readFileSync(join(fileRoot, value, "index.html"), "utf-8");
174
- res.setHeader("Content-Type", "text/html");
175
- res.end(html);
176
- return;
177
- }
178
- }
179
- } catch (error) {
112
+ const fileRoot = key.startsWith("node_modules") ? root : join(root, userOptions.build.outDir, userOptions.build.static);
113
+ try {
114
+ const filePath = join(fileRoot, value);
115
+ const stats = await stat(filePath);
116
+ if (stats.isFile()) {
117
+ const ext = value.slice(value.lastIndexOf("."));
118
+ const contentType = MIME_TYPES[ext] || "application/octet-stream";
119
+ res.setHeader("Content-Type", contentType);
120
+ const content = await readFile(filePath);
121
+ res.end(content);
122
+ return;
180
123
  }
181
124
  next();
125
+ } catch (error) {
126
+ console.log("Error serving static file:", error);
127
+ next();
182
128
  }
183
129
  });
184
130
  },
@@ -188,13 +134,11 @@ function reactClientPlugin(options) {
188
134
  loader = server.ssrLoadModule;
189
135
  }
190
136
  if (!worker) {
191
- log.info("Creating RSC worker...");
192
137
  worker = await createWorker({
193
138
  projectRoot: root,
194
- workerPath: rscWorkerPath,
139
+ workerPath: userOptions.rscWorkerPath,
195
140
  condition: "react-client"
196
141
  });
197
- log.info("RSC worker created");
198
142
  }
199
143
  const normalize = createInputNormalizer({
200
144
  root,
@@ -259,7 +203,6 @@ function reactClientPlugin(options) {
259
203
  break;
260
204
  case "ERROR":
261
205
  clearTimeout(timeout);
262
- log.error("Render error", message);
263
206
  if (!hasError) {
264
207
  hasError = true;
265
208
  res.statusCode = 500;
@@ -307,7 +250,6 @@ function reactClientPlugin(options) {
307
250
  cssFiles: []
308
251
  });
309
252
  } catch (error) {
310
- log.error("Middleware error:", error);
311
253
  res.statusCode = 500;
312
254
  res.end(error instanceof Error ? error.message : String(error));
313
255
  }