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
@@ -8,97 +8,102 @@ import { PassThrough } from 'node:stream';
8
8
  import { parentPort } from 'node:worker_threads';
9
9
  import React__default from 'react';
10
10
  import { renderToPipeableStream } from 'react-server-dom-esm/server.node';
11
- import { createLogger } from '../../utils/logger.js';
12
- import { cssFiles, addCssFile } from './state.js';
11
+ import { addCssFile, cssFiles } from './state.js';
12
+ import { CssCollector } from '../../components.js';
13
13
 
14
- const log = createLogger("rsc-worker");
15
- function CssCollector({
16
- children,
17
- cssFiles: cssFiles2
18
- }) {
19
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, Array.from(cssFiles2.entries()).map(([id, css]) => {
20
- return /* @__PURE__ */ React__default.createElement("style", { key: id, "data-source": id }, css);
21
- }), children);
22
- }
23
14
  async function messageHandler(message) {
24
- if (message.type === "RSC_RENDER") {
25
- const {
26
- id,
27
- pageImport,
28
- propsImport,
29
- pageExportName,
30
- propsExportName,
31
- url,
32
- outDir,
33
- projectRoot,
34
- moduleBaseURL,
35
- moduleBasePath,
36
- pipableStreamOptions
37
- } = message;
38
- try {
39
- const [Component, propsModule] = await Promise.all([
40
- import(join(projectRoot, pageImport)),
41
- import(join(projectRoot, propsImport))
42
- ]);
43
- const propsAtExport = propsModule[propsExportName];
44
- const props = await Promise.resolve(
45
- typeof propsAtExport === "function" ? propsAtExport(url) : propsAtExport
46
- );
47
- const PageComponent = Component[pageExportName];
48
- const stream = renderToPipeableStream(
49
- /* @__PURE__ */ React__default.createElement(CssCollector, { cssFiles }, /* @__PURE__ */ React__default.createElement(PageComponent, { ...props })),
15
+ switch (message.type) {
16
+ case "RSC_RENDER":
17
+ const {
18
+ id,
19
+ pageImport,
20
+ propsImport,
21
+ pageExportName,
22
+ propsExportName,
23
+ url,
24
+ outDir,
25
+ projectRoot,
50
26
  moduleBaseURL,
51
- {
52
- onError: (error) => {
53
- console.log("onError", error);
54
- log.error(`Stream error at ${id}:`, error);
55
- parentPort?.postMessage({
56
- type: "ERROR",
57
- id,
58
- error: error instanceof Error ? error.message : String(error)
59
- });
60
- },
61
- onPostpone: log?.info ?? console.info,
62
- environmentName: "Server",
63
- importMap: {
64
- imports: {
65
- ...pipableStreamOptions?.importMap?.imports,
66
- "/": moduleBasePath
67
- }
68
- },
69
- ...pipableStreamOptions
70
- }
71
- );
72
- const passThrough = new PassThrough();
73
- stream.pipe(passThrough);
74
- passThrough.on("data", (chunk) => {
75
- parentPort?.postMessage({
76
- type: "RSC_CHUNK",
77
- id,
78
- chunk: chunk.toString(),
79
- moduleRootPath: moduleBasePath,
27
+ moduleBasePath,
28
+ pipableStreamOptions
29
+ } = message;
30
+ try {
31
+ const [Component, propsModule] = await Promise.all([
32
+ import(join(projectRoot, pageImport)),
33
+ import(join(projectRoot, propsImport))
34
+ ]);
35
+ const propsAtExport = propsModule[propsExportName];
36
+ const props = await Promise.resolve(
37
+ typeof propsAtExport === "function" ? propsAtExport(url) : propsAtExport
38
+ );
39
+ const PageComponent = Component[pageExportName];
40
+ const stream = renderToPipeableStream(
41
+ /* @__PURE__ */ React__default.createElement(
42
+ CssCollector,
43
+ {
44
+ cssFiles: Array.from(cssFiles.values()),
45
+ moduleBaseUrl: moduleBaseURL
46
+ },
47
+ /* @__PURE__ */ React__default.createElement(PageComponent, { ...props })
48
+ ),
80
49
  moduleBaseURL,
81
- outDir,
82
- rscOutputPath: `${outDir}/${id}.rsc`,
83
- cssFiles: Array.from(cssFiles.entries())
50
+ {
51
+ onError: (error) => {
52
+ parentPort?.postMessage({
53
+ type: "ERROR",
54
+ id,
55
+ error: error instanceof Error ? error.message : String(error)
56
+ });
57
+ },
58
+ onPostpone: (reason) => {
59
+ parentPort?.postMessage({
60
+ type: "POSTPONE",
61
+ id,
62
+ reason
63
+ });
64
+ },
65
+ environmentName: "Server",
66
+ importMap: {
67
+ imports: {
68
+ ...pipableStreamOptions?.importMap?.imports,
69
+ "/": moduleBasePath
70
+ }
71
+ },
72
+ ...pipableStreamOptions
73
+ }
74
+ );
75
+ const passThrough = new PassThrough();
76
+ stream.pipe(passThrough);
77
+ passThrough.on("data", (chunk) => {
78
+ parentPort?.postMessage({
79
+ type: "RSC_CHUNK",
80
+ id,
81
+ chunk: chunk.toString(),
82
+ moduleRootPath: moduleBasePath,
83
+ moduleBaseURL,
84
+ outDir,
85
+ rscOutputPath: `${outDir}/${id}.rsc`,
86
+ cssFiles: Array.from(cssFiles.entries())
87
+ });
84
88
  });
85
- });
86
- passThrough.on("end", () => {
89
+ passThrough.on("end", () => {
90
+ parentPort?.postMessage({
91
+ type: "RSC_END",
92
+ id
93
+ });
94
+ });
95
+ } catch (error) {
96
+ console.trace(error);
87
97
  parentPort?.postMessage({
88
- type: "RSC_END",
89
- id
98
+ type: "ERROR",
99
+ id,
100
+ error: error instanceof Error ? error.message : String(error)
90
101
  });
91
- });
92
- } catch (error) {
93
- console.trace(error);
94
- parentPort?.postMessage({
95
- type: "ERROR",
96
- id,
97
- error: error instanceof Error ? error.message : String(error)
98
- });
99
- }
100
- } else if (message.type === "CSS_FILE") {
101
- addCssFile(message.id, message.cssFile);
102
+ }
103
+ break;
104
+ case "CSS_FILE":
105
+ addCssFile(message.id, message.cssFile);
106
+ break;
102
107
  }
103
108
  }
104
109
 
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { join } from \"node:path\";\nimport { PassThrough } from \"node:stream\";\nimport { parentPort } from \"node:worker_threads\";\nimport React from \"react\";\nimport {\n renderToPipeableStream,\n // @ts-ignore\n} from \"react-server-dom-esm/server.node\";\nimport { createLogger } from \"../../utils/logger.js\";\nimport type {\n RscChunkMessage,\n RscEndMessage,\n RscWorkerMessage,\n} from \"../types.js\";\nimport {\n addCssFile,\n cssFiles\n} from \"./state.js\";\n\nconst log = createLogger(\"rsc-worker\");\n\n// CSS collector component\nfunction CssCollector({\n children,\n cssFiles,\n}: {\n children: React.ReactNode;\n cssFiles: Map<string, string>;\n}) {\n return (\n <>\n {Array.from(cssFiles.entries()).map(([id, css]) => {\n return (\n <style key={id} data-source={id}>\n {css}\n </style>\n );\n })}\n {children}\n </>\n );\n}\n\nexport async function messageHandler(message: RscWorkerMessage) {\n\n if (message.type === \"RSC_RENDER\") {\n const {\n id,\n pageImport,\n propsImport,\n pageExportName,\n propsExportName,\n url,\n outDir,\n projectRoot,\n moduleBaseURL,\n moduleBasePath,\n pipableStreamOptions,\n } = message;\n\n try {\n // Load modules which will trigger CSS loading\n const [Component, propsModule] = await Promise.all([\n import(join(projectRoot, pageImport)),\n import(join(projectRoot, propsImport)),\n ]);\n\n const propsAtExport = propsModule[propsExportName];\n const props = await Promise.resolve(\n typeof propsAtExport === \"function\" ? propsAtExport(url) : propsAtExport\n );\n\n const PageComponent = Component[pageExportName];\n // Now render with collected CSS\n const stream = renderToPipeableStream(\n <CssCollector cssFiles={cssFiles}>\n <PageComponent {...props} />\n </CssCollector>,\n moduleBaseURL,\n {\n onError: (error: Error) => {\n console.log('onError', error);\n log.error(`Stream error at ${id}:`, error);\n parentPort?.postMessage({\n type: \"ERROR\",\n id,\n error: error instanceof Error ? error.message : String(error),\n });\n },\n onPostpone: log?.info ?? console.info,\n environmentName: \"Server\",\n importMap: {\n imports: {\n ...pipableStreamOptions?.importMap?.imports,\n \"/\": moduleBasePath,\n },\n },\n ...pipableStreamOptions,\n }\n );\n\n // Listen for data and end events\n const passThrough = new PassThrough();\n\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n // Send to parent\n parentPort?.postMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk: chunk.toString(),\n moduleRootPath: moduleBasePath,\n moduleBaseURL,\n outDir,\n rscOutputPath: `${outDir}/${id}.rsc`,\n cssFiles: Array.from(cssFiles.entries()),\n } satisfies RscChunkMessage);\n });\n\n passThrough.on(\"end\", () => {\n parentPort?.postMessage({\n type: \"RSC_END\",\n id,\n } satisfies RscEndMessage);\n });\n } catch (error) {\n console.trace(error);\n parentPort?.postMessage({\n type: \"ERROR\",\n id,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n } else if (message.type === \"CSS_FILE\") {\n addCssFile(message.id, message.cssFile);\n }\n}\n"],"names":["cssFiles","React"],"mappings":"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"}
1
+ {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { join } from \"node:path\";\nimport { PassThrough } from \"node:stream\";\nimport { parentPort } from \"node:worker_threads\";\nimport React from \"react\";\nimport {\n renderToPipeableStream,\n // @ts-ignore\n} from \"react-server-dom-esm/server.node\";\nimport type {\n RscChunkMessage,\n RscEndMessage,\n RscWorkerMessage,\n} from \"../types.js\";\nimport { addCssFile, cssFiles } from \"./state.js\";\nimport { CssCollector } from \"../../components.js\";\n\nexport async function messageHandler(message: RscWorkerMessage) {\n switch (message.type) {\n case \"RSC_RENDER\":\n const {\n id,\n pageImport,\n propsImport,\n pageExportName,\n propsExportName,\n url,\n outDir,\n projectRoot,\n moduleBaseURL,\n moduleBasePath,\n pipableStreamOptions,\n } = message;\n\n try {\n // Load modules which will trigger CSS loading\n const [Component, propsModule] = await Promise.all([\n import(join(projectRoot, pageImport)),\n import(join(projectRoot, propsImport)),\n ]);\n\n const propsAtExport = propsModule[propsExportName];\n const props = await Promise.resolve(\n typeof propsAtExport === \"function\"\n ? propsAtExport(url)\n : propsAtExport\n );\n\n const PageComponent = Component[pageExportName];\n // Now render with collected CSS\n const stream = renderToPipeableStream(\n <CssCollector\n cssFiles={Array.from(cssFiles.values())}\n moduleBaseUrl={moduleBaseURL}\n >\n <PageComponent {...props} />\n </CssCollector>,\n moduleBaseURL,\n {\n onError: (error: Error) => {\n parentPort?.postMessage({\n type: \"ERROR\",\n id,\n error: error instanceof Error ? error.message : String(error),\n });\n },\n onPostpone: (reason: string) => {\n parentPort?.postMessage({\n type: \"POSTPONE\",\n id,\n reason,\n });\n },\n environmentName: \"Server\",\n importMap: {\n imports: {\n ...pipableStreamOptions?.importMap?.imports,\n \"/\": moduleBasePath,\n },\n },\n ...pipableStreamOptions,\n }\n );\n\n // Listen for data and end events\n const passThrough = new PassThrough();\n\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n // Send to parent\n parentPort?.postMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk: chunk.toString(),\n moduleRootPath: moduleBasePath,\n moduleBaseURL,\n outDir,\n rscOutputPath: `${outDir}/${id}.rsc`,\n cssFiles: Array.from(cssFiles.entries()),\n } satisfies RscChunkMessage);\n });\n\n passThrough.on(\"end\", () => {\n parentPort?.postMessage({\n type: \"RSC_END\",\n id,\n } satisfies RscEndMessage);\n });\n } catch (error) {\n console.trace(error);\n parentPort?.postMessage({\n type: \"ERROR\",\n id,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n break;\n case \"CSS_FILE\":\n addCssFile(message.id, message.cssFile);\n break;\n }\n}\n"],"names":["React"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI1D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA4EzE"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI1D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CA2EzE"}
@@ -1,12 +1,11 @@
1
1
  import { resolve } from "path";
2
2
  import { DEFAULT_CONFIG } from "../../config/defaults.js";
3
- import { getPluginRoot } from "../../config/getPaths.js";
3
+ import { pluginRoot } from "../../root.js";
4
4
  export function reactRscWorkerPlugin(options) {
5
5
  return {
6
6
  name: "vite:react-rsc-worker",
7
7
  config(config) {
8
8
  const root = config.root ?? process.cwd();
9
- const pluginRoot = getPluginRoot();
10
9
  const rscWorkerPath = typeof options.rscWorkerPath === "string"
11
10
  ? resolve(root, options.rscWorkerPath)
12
11
  : resolve(pluginRoot, DEFAULT_CONFIG.RSC_WORKER_PATH);
@@ -3,41 +3,36 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import { MessageChannel, parentPort } from 'node:worker_threads';
6
+ import { parentPort, MessageChannel } from 'node:worker_threads';
7
7
  import { messageHandler } from './messageHandler.js';
8
8
  import { register } from 'node:module';
9
9
  import { register as register$1 } from 'tsx/esm/api';
10
10
  import { join } from 'node:path';
11
- import { getPluginRoot } from '../../config/getPaths.js';
11
+ import { pluginRoot } from '../../root.js';
12
12
 
13
- new MessageChannel();
14
13
  if (!parentPort) {
15
14
  throw new Error("This module must be run as a worker");
16
15
  }
17
16
  const reactLoaderChannel = new MessageChannel();
18
17
  const cssLoaderChannel = new MessageChannel();
19
- reactLoaderChannel.port2.on("message", (msg) => {
20
- messageHandler(msg);
21
- });
22
- cssLoaderChannel.port2.on("message", (msg) => {
23
- messageHandler(msg);
24
- });
25
- const loaderPath = "file://" + join(getPluginRoot(), "loader/react-loader.js");
26
- const cssLoaderPath = "file://" + join(getPluginRoot(), "loader/css-loader.js");
27
- console.log("[worker] Full loader path:", loaderPath);
18
+ reactLoaderChannel.port2.on("message", messageHandler);
19
+ cssLoaderChannel.port2.on("message", messageHandler);
20
+ const loaderPath = "file://" + join(pluginRoot, "loader/react-loader.js");
21
+ const cssLoaderPath = "file://" + join(pluginRoot, "loader/css-loader.js");
28
22
  register(loaderPath, {
29
- parentURL: getPluginRoot(),
23
+ parentURL: pluginRoot,
30
24
  data: { port: reactLoaderChannel.port1 },
31
25
  transferList: [reactLoaderChannel.port1]
32
26
  });
33
27
  register(cssLoaderPath, {
34
- parentURL: getPluginRoot(),
28
+ parentURL: pluginRoot,
35
29
  data: { port: cssLoaderChannel.port1 },
36
30
  transferList: [cssLoaderChannel.port1]
37
31
  });
38
32
  register$1();
39
- parentPort.on("message", (message) => {
40
- messageHandler(message);
41
- });
42
- parentPort.postMessage({ type: "READY", env: "development" });
33
+ parentPort.on("message", messageHandler);
34
+ parentPort.postMessage({ type: "READY", env: process.env["NODE_ENV"] });
35
+ if (process.env["NODE_ENV"] !== "development") {
36
+ throw new Error("This module must be run in development mode");
37
+ }
43
38
  //# sourceMappingURL=rsc-worker.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsc-worker.development.js","sources":["../../../../plugin/worker/rsc/rsc-worker.development.ts"],"sourcesContent":["// no offical types for node:module available yet (23.7.0)\ndeclare module 'node:module' {\n export interface ImportAttributes {\n [key: string]: string | undefined;\n }\n\n export interface ResolveHookContext {\n conditions: string[];\n parentURL: string | undefined;\n importAttributes: ImportAttributes;\n }\n\n export interface LoadHookContext {\n conditions: string[];\n format: ModuleFormat | null | undefined;\n importAttributes: ImportAttributes;\n shortCircuit?: boolean;\n }\n\n export interface ResolveResult {\n url: string;\n shortCircuit: boolean;\n }\n\n export interface LoadResult {\n format: string;\n source: string | SharedArrayBuffer | Uint8Array;\n shortCircuit: boolean;\n }\n\n export interface HooksAPI {\n resolve?: (\n specifier: string,\n context: ResolveHookContext,\n nextResolve: (specifier: string, context: ResolveHookContext) => ResolveResult\n ) => ResolveResult;\n\n load?: (\n url: string,\n context: LoadHookContext,\n nextLoad: (url: string, context: LoadHookContext) => LoadResult\n ) => LoadResult;\n }\n\n export function registerHooks(hooks: HooksAPI): void;\n}\n//\nimport { parentPort, MessageChannel } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { createLogger } from \"../../utils/logger.js\";\nimport { \n registerHooks,\n register,\n type ResolveHookContext,\n} from 'node:module';\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { join } from 'node:path';\nimport { getPluginRoot } from \"../../config/getPaths.js\";\n\nconst ports = new MessageChannel();\n// Initialize worker\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// Create channels for each loader\nconst reactLoaderChannel = new MessageChannel();\nconst cssLoaderChannel = new MessageChannel();\n\n// Listen for messages from loaders\nreactLoaderChannel.port2.on('message', (msg) => {\n messageHandler(msg);\n});\n\ncssLoaderChannel.port2.on('message', (msg) => {\n messageHandler(msg);\n});\n\nconst loaderPath = 'file://' + join(getPluginRoot(), 'loader/react-loader.js');\nconst cssLoaderPath = 'file://' + join(getPluginRoot(), 'loader/css-loader.js');\nconsole.log('[worker] Full loader path:', loaderPath);\n\n// Register react-loader\nregister(loaderPath, {\n parentURL: getPluginRoot(),\n data: { port: reactLoaderChannel.port1 },\n transferList: [reactLoaderChannel.port1]\n});\nregister(cssLoaderPath, {\n parentURL: getPluginRoot(),\n data: { port: cssLoaderChannel.port1 },\n transferList: [cssLoaderChannel.port1]\n});\n\n// Register loaders\nregisterTsx();\n\n// Set up message handling\nparentPort.on(\"message\", (message) => {\n messageHandler(message);\n});\n\n// Signal ready\nparentPort.postMessage({ type: \"READY\", env: \"development\" });\n\n\n\n"],"names":["registerTsx"],"mappings":";;;;;;;;;;;;AA2Dc,IAAI,cAAe;AAEjC,IAAI,CAAC,UAAY,EAAA;AACf,EAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA;AACvD;AAGA,MAAM,kBAAA,GAAqB,IAAI,cAAe,EAAA;AAC9C,MAAM,gBAAA,GAAmB,IAAI,cAAe,EAAA;AAG5C,kBAAA,CAAmB,KAAM,CAAA,EAAA,CAAG,SAAW,EAAA,CAAC,GAAQ,KAAA;AAC9C,EAAA,cAAA,CAAe,GAAG,CAAA;AACpB,CAAC,CAAA;AAED,gBAAA,CAAiB,KAAM,CAAA,EAAA,CAAG,SAAW,EAAA,CAAC,GAAQ,KAAA;AAC5C,EAAA,cAAA,CAAe,GAAG,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,UAAa,GAAA,SAAA,GAAY,IAAK,CAAA,aAAA,IAAiB,wBAAwB,CAAA;AAC7E,MAAM,aAAgB,GAAA,SAAA,GAAY,IAAK,CAAA,aAAA,IAAiB,sBAAsB,CAAA;AAC9E,OAAQ,CAAA,GAAA,CAAI,8BAA8B,UAAU,CAAA;AAGpD,QAAA,CAAS,UAAY,EAAA;AAAA,EACnB,WAAW,aAAc,EAAA;AAAA,EACzB,IAAM,EAAA,EAAE,IAAM,EAAA,kBAAA,CAAmB,KAAM,EAAA;AAAA,EACvC,YAAA,EAAc,CAAC,kBAAA,CAAmB,KAAK;AACzC,CAAC,CAAA;AACD,QAAA,CAAS,aAAe,EAAA;AAAA,EACtB,WAAW,aAAc,EAAA;AAAA,EACzB,IAAM,EAAA,EAAE,IAAM,EAAA,gBAAA,CAAiB,KAAM,EAAA;AAAA,EACrC,YAAA,EAAc,CAAC,gBAAA,CAAiB,KAAK;AACvC,CAAC,CAAA;AAGDA,UAAY,EAAA;AAGZ,UAAW,CAAA,EAAA,CAAG,SAAW,EAAA,CAAC,OAAY,KAAA;AACpC,EAAA,cAAA,CAAe,OAAO,CAAA;AACxB,CAAC,CAAA;AAGD,UAAA,CAAW,YAAY,EAAE,IAAA,EAAM,OAAS,EAAA,GAAA,EAAK,eAAe,CAAA"}
1
+ {"version":3,"file":"rsc-worker.development.js","sources":["../../../../plugin/worker/rsc/rsc-worker.development.ts"],"sourcesContent":["// no offical types for node:module available yet (23.7.0)\ndeclare module 'node:module' {\n export interface ImportAttributes {\n [key: string]: string | undefined;\n }\n\n export interface ResolveHookContext {\n conditions: string[];\n parentURL: string | undefined;\n importAttributes: ImportAttributes;\n }\n\n export interface LoadHookContext {\n conditions: string[];\n format: ModuleFormat | null | undefined;\n importAttributes: ImportAttributes;\n shortCircuit?: boolean;\n }\n\n export interface ResolveResult {\n url: string;\n shortCircuit: boolean;\n }\n\n export interface LoadResult {\n format: string;\n source: string | SharedArrayBuffer | Uint8Array;\n shortCircuit: boolean;\n }\n\n export interface HooksAPI {\n resolve?: (\n specifier: string,\n context: ResolveHookContext,\n nextResolve: (specifier: string, context: ResolveHookContext) => ResolveResult\n ) => ResolveResult;\n\n load?: (\n url: string,\n context: LoadHookContext,\n nextLoad: (url: string, context: LoadHookContext) => LoadResult\n ) => LoadResult;\n }\n\n export function registerHooks(hooks: HooksAPI): void;\n}\n//\nimport { parentPort, MessageChannel } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { \n register,\n} from 'node:module';\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { join } from 'node:path';\nimport { pluginRoot } from \"../../root.js\";\n\n// Initialize worker\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// Create channels for each loader\nconst reactLoaderChannel = new MessageChannel();\nconst cssLoaderChannel = new MessageChannel();\n\n// Listen for messages from loaders\nreactLoaderChannel.port2.on('message', messageHandler);\ncssLoaderChannel.port2.on('message', messageHandler);\n\nconst loaderPath = 'file://' + join(pluginRoot, 'loader/react-loader.js');\nconst cssLoaderPath = 'file://' + join(pluginRoot, 'loader/css-loader.js');\n\n// Register react-loader\nregister(loaderPath, {\n parentURL: pluginRoot,\n data: { port: reactLoaderChannel.port1 },\n transferList: [reactLoaderChannel.port1]\n});\nregister(cssLoaderPath, {\n parentURL: pluginRoot,\n data: { port: cssLoaderChannel.port1 },\n transferList: [cssLoaderChannel.port1]\n});\n\n// Register loaders\nregisterTsx();\n\n// Set up message handling\nparentPort.on(\"message\", messageHandler);\n\n// Signal ready\nparentPort.postMessage({ type: \"READY\", env: process.env[\"NODE_ENV\"] });\n\nif (process.env[\"NODE_ENV\"] !== \"development\") {\n throw new Error(\"This module must be run in development mode\");\n}\n\n"],"names":["registerTsx"],"mappings":";;;;;;;;;;;;AAyDA,IAAI,CAAC,UAAY,EAAA;AACf,EAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA;AACvD;AAGA,MAAM,kBAAA,GAAqB,IAAI,cAAe,EAAA;AAC9C,MAAM,gBAAA,GAAmB,IAAI,cAAe,EAAA;AAG5C,kBAAmB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AACrD,gBAAiB,CAAA,KAAA,CAAM,EAAG,CAAA,SAAA,EAAW,cAAc,CAAA;AAEnD,MAAM,UAAa,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,wBAAwB,CAAA;AACxE,MAAM,aAAgB,GAAA,SAAA,GAAY,IAAK,CAAA,UAAA,EAAY,sBAAsB,CAAA;AAGzE,QAAA,CAAS,UAAY,EAAA;AAAA,EACnB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,kBAAA,CAAmB,KAAM,EAAA;AAAA,EACvC,YAAA,EAAc,CAAC,kBAAA,CAAmB,KAAK;AACzC,CAAC,CAAA;AACD,QAAA,CAAS,aAAe,EAAA;AAAA,EACtB,SAAW,EAAA,UAAA;AAAA,EACX,IAAM,EAAA,EAAE,IAAM,EAAA,gBAAA,CAAiB,KAAM,EAAA;AAAA,EACrC,YAAA,EAAc,CAAC,gBAAA,CAAiB,KAAK;AACvC,CAAC,CAAA;AAGDA,UAAY,EAAA;AAGZ,UAAW,CAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AAGvC,UAAW,CAAA,WAAA,CAAY,EAAE,IAAM,EAAA,OAAA,EAAS,KAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,EAAG,CAAA;AAEtE,IAAI,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,KAAM,aAAe,EAAA;AAC7C,EAAM,MAAA,IAAI,MAAM,6CAA6C,CAAA;AAC/D"}
@@ -10,5 +10,8 @@ if (!parentPort) {
10
10
  throw new Error("This module must be run as a worker");
11
11
  }
12
12
  parentPort.on("message", messageHandler);
13
- parentPort.postMessage({ type: "READY", env: "production" });
13
+ parentPort.postMessage({ type: "READY", env: process.env["NODE_ENV"] });
14
+ if (process.env["NODE_ENV"] !== "production") {
15
+ throw new Error("This module must be run in production mode");
16
+ }
14
17
  //# sourceMappingURL=rsc-worker.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsc-worker.production.js","sources":["../../../../plugin/worker/rsc/rsc-worker.production.ts"],"sourcesContent":["import { parentPort } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\n\n\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// Handle incoming messages\nparentPort.on(\"message\", messageHandler);\n\n// Signal ready\nparentPort.postMessage({ type: \"READY\", env: \"production\" });"],"names":[],"mappings":";;;;;;;;AAIA,IAAI,CAAC,UAAY,EAAA;AACf,EAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA;AACvD;AAGA,UAAW,CAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AAGvC,UAAA,CAAW,YAAY,EAAE,IAAA,EAAM,OAAS,EAAA,GAAA,EAAK,cAAc,CAAA"}
1
+ {"version":3,"file":"rsc-worker.production.js","sources":["../../../../plugin/worker/rsc/rsc-worker.production.ts"],"sourcesContent":["import { parentPort } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\n\n\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// Handle incoming messages\nparentPort.on(\"message\", messageHandler);\n\n// Signal ready\nparentPort.postMessage({ type: \"READY\", env: process.env[\"NODE_ENV\"] });\n\nif (process.env[\"NODE_ENV\"] !== \"production\") {\n throw new Error(\"This module must be run in production mode\");\n}\n"],"names":[],"mappings":";;;;;;;;AAIA,IAAI,CAAC,UAAY,EAAA;AACf,EAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA;AACvD;AAGA,UAAW,CAAA,EAAA,CAAG,WAAW,cAAc,CAAA;AAGvC,UAAW,CAAA,WAAA,CAAY,EAAE,IAAM,EAAA,OAAA,EAAS,KAAK,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,EAAG,CAAA;AAEtE,IAAI,OAAQ,CAAA,GAAA,CAAI,UAAU,CAAA,KAAM,YAAc,EAAA;AAC5C,EAAM,MAAA,IAAI,MAAM,4CAA4C,CAAA;AAC9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/state.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,qBAA4B,CAAC;AAClD,eAAO,MAAM,WAAW,aAAoB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,aAAoB,CAAC;AAEnD,wBAAgB,aAAa,SAE5B;AAED,wBAAgB,gBAAgB,SAE/B;AAED,wBAAgB,sBAAsB,SAErC;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAErD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,QAExC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAE9C;AAED,wBAAgB,aAAa,SAI5B"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/state.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,qBAA4B,CAAC;AAClD,eAAO,MAAM,WAAW,aAAoB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,aAAoB,CAAC;AAEnD,wBAAgB,aAAa,SAE5B;AAED,wBAAgB,gBAAgB,SAE/B;AAED,wBAAgB,sBAAsB,SAErC;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAErD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,QAExC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAE9C;AAED,wBAAgB,aAAa,SAI5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sources":["../../../../plugin/worker/rsc/state.ts"],"sourcesContent":["import { createLogger } from \"../../utils/logger.js\";\n\n\n// Create shared CSS registry\nexport const cssFiles = new Map<string, string>();\nexport const clientFiles = new Set<string>();\nexport const serverActionFiles = new Set<string>();\n// Helper functions\nexport function clearCssFiles() {\n cssFiles.clear();\n}\n\nexport function clearClientFiles() {\n clientFiles.clear();\n}\n\nexport function clearServerActionFiles() {\n serverActionFiles.clear();\n}\n\nexport function addCssFile(id: string, cssFile: string) {\n cssFiles.set(id, cssFile);\n} \n\nexport function addClientFile(url: string) {\n clientFiles.add(url);\n}\n\nexport function addServerActionFile(url: string) {\n serverActionFiles.add(url);\n}\n\nexport function clearAllFiles() {\n clearCssFiles();\n clearClientFiles();\n clearServerActionFiles();\n} "],"names":[],"mappings":";;;;;AAIa,MAAA,QAAA,uBAAe,GAAoB;AAgBhC,SAAA,UAAA,CAAW,IAAY,OAAiB,EAAA;AACtD,EAAS,QAAA,CAAA,GAAA,CAAI,IAAI,OAAO,CAAA;AAC1B;;;;"}
1
+ {"version":3,"file":"state.js","sources":["../../../../plugin/worker/rsc/state.ts"],"sourcesContent":["// Create shared CSS registry\nexport const cssFiles = new Map<string, string>();\nexport const clientFiles = new Set<string>();\nexport const serverActionFiles = new Set<string>();\n// Helper functions\nexport function clearCssFiles() {\n cssFiles.clear();\n}\n\nexport function clearClientFiles() {\n clientFiles.clear();\n}\n\nexport function clearServerActionFiles() {\n serverActionFiles.clear();\n}\n\nexport function addCssFile(id: string, cssFile: string) {\n cssFiles.set(id, cssFile);\n} \n\nexport function addClientFile(url: string) {\n clientFiles.add(url);\n}\n\nexport function addServerActionFile(url: string) {\n serverActionFiles.add(url);\n}\n\nexport function clearAllFiles() {\n clearCssFiles();\n clearClientFiles();\n clearServerActionFiles();\n} "],"names":[],"mappings":";;;;;AACa,MAAA,QAAA,uBAAe,GAAoB;AAgBhC,SAAA,UAAA,CAAW,IAAY,OAAiB,EAAA;AACtD,EAAS,QAAA,CAAA,GAAA,CAAI,IAAI,OAAO,CAAA;AAC1B;;;;"}