vite-plugin-react-server 0.3.17 → 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 +12 -7
  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 -60
  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 -219
  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 +91 -87
  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 +14 -11
  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 -74
  141. package/plugin/react-server/index.ts +2 -0
  142. package/plugin/react-server/plugin.ts +66 -298
  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 +98 -119
  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 -66
  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 -66
  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 -83
  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 -82
  207. package/plugin/react-server/createSsrHandler.ts +0 -125
  208. package/plugin/utils/logger.ts +0 -52
@@ -3,103 +3,107 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import 'node:fs';
7
- import 'node:fs/promises';
8
6
  import { join } from 'node:path';
9
- import { parentPort } from 'node:worker_threads';
10
7
  import { PassThrough } from 'node:stream';
11
- import { renderToPipeableStream } from 'react-server-dom-esm/server.node';
12
- import { createLogger } from '../../utils/logger.js';
13
- import { cssFiles, addCssFile } from './state.js';
8
+ import { parentPort } from 'node:worker_threads';
14
9
  import React__default from 'react';
10
+ import { renderToPipeableStream } from 'react-server-dom-esm/server.node';
11
+ import { addCssFile, cssFiles } from './state.js';
12
+ import { CssCollector } from '../../components.js';
15
13
 
16
- const log = createLogger("rsc-worker");
17
- function CssCollector({
18
- children,
19
- cssFiles: cssFiles2
20
- }) {
21
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, Array.from(cssFiles2.entries()).map(([id, css]) => {
22
- return /* @__PURE__ */ React__default.createElement("style", { key: id, "data-source": id }, css);
23
- }), children);
24
- }
25
14
  async function messageHandler(message) {
26
- if (message.type === "RSC_RENDER") {
27
- const {
28
- id,
29
- pageImport,
30
- propsImport,
31
- pageExportName,
32
- propsExportName,
33
- url,
34
- outDir,
35
- projectRoot,
36
- moduleBaseURL,
37
- moduleBasePath,
38
- pipableStreamOptions
39
- } = message;
40
- try {
41
- const [Component, propsModule] = await Promise.all([
42
- import(join(projectRoot, pageImport)),
43
- import(join(projectRoot, propsImport))
44
- ]);
45
- const propsAtExport = propsModule[propsExportName];
46
- const props = await Promise.resolve(
47
- typeof propsAtExport === "function" ? propsAtExport(url) : propsAtExport
48
- );
49
- const PageComponent = Component[pageExportName];
50
- const stream = renderToPipeableStream(
51
- /* @__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,
52
26
  moduleBaseURL,
53
- {
54
- onError: (error) => {
55
- log.error(`Stream error at ${id}:`, error);
56
- parentPort?.postMessage({
57
- type: "ERROR",
58
- id,
59
- error: error instanceof Error ? error.message : String(error)
60
- });
61
- },
62
- onPostpone: log?.info ?? console.info,
63
- environmentName: "Server",
64
- importMap: {
65
- imports: {
66
- ...pipableStreamOptions?.importMap?.imports,
67
- "/": moduleBasePath
68
- }
69
- },
70
- ...pipableStreamOptions
71
- }
72
- );
73
- const passThrough = new PassThrough();
74
- stream.pipe(passThrough);
75
- passThrough.on("data", (chunk) => {
76
- parentPort?.postMessage({
77
- type: "RSC_CHUNK",
78
- id,
79
- chunk: chunk.toString(),
80
- 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
+ ),
81
49
  moduleBaseURL,
82
- outDir,
83
- rscOutputPath: `${outDir}/${id}.rsc`,
84
- 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
+ });
88
+ });
89
+ passThrough.on("end", () => {
90
+ parentPort?.postMessage({
91
+ type: "RSC_END",
92
+ id
93
+ });
85
94
  });
86
- });
87
- passThrough.on("end", () => {
95
+ } catch (error) {
96
+ console.trace(error);
88
97
  parentPort?.postMessage({
89
- type: "RSC_END",
90
- id
98
+ type: "ERROR",
99
+ id,
100
+ error: error instanceof Error ? error.message : String(error)
91
101
  });
92
- });
93
- } catch (error) {
94
- console.trace(error);
95
- parentPort?.postMessage({
96
- type: "ERROR",
97
- id,
98
- error: error instanceof Error ? error.message : String(error)
99
- });
100
- }
101
- } else if (message.type === "CSS_FILE") {
102
- addCssFile(message.id, message.cssFile);
102
+ }
103
+ break;
104
+ case "CSS_FILE":
105
+ addCssFile(message.id, message.cssFile);
106
+ break;
103
107
  }
104
108
  }
105
109
 
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { createWriteStream } from \"node:fs\";\nimport { mkdir } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { parentPort } from \"node:worker_threads\";\nimport { PassThrough } from \"node:stream\";\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 { createLogger } from \"../../utils/logger.js\";\nimport {\n cssFiles,\n clientFiles,\n serverActionFiles,\n addCssFile,\n clearCssFiles,\n} from \"./state.js\";\nimport type { WriteStream } from \"node:fs\";\nimport React from \"react\";\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 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;;;;"}