vite-plugin-react-server 1.1.13 → 1.1.15

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 (171) hide show
  1. package/dist/package.json +3 -1
  2. package/dist/plugin/config/defaults.d.ts +2 -2
  3. package/dist/plugin/config/defaults.d.ts.map +1 -1
  4. package/dist/plugin/config/defaults.js +2 -2
  5. package/dist/plugin/config/defaults.js.map +1 -1
  6. package/dist/plugin/config/resolveOptions.d.ts.map +1 -1
  7. package/dist/plugin/config/resolveOptions.js +101 -75
  8. package/dist/plugin/config/resolveOptions.js.map +1 -1
  9. package/dist/plugin/config/resolveUserConfig.d.ts.map +1 -1
  10. package/dist/plugin/config/resolveUserConfig.js +27 -5
  11. package/dist/plugin/config/resolveUserConfig.js.map +1 -1
  12. package/dist/plugin/error/toError.d.ts.map +1 -1
  13. package/dist/plugin/error/toError.js +0 -1
  14. package/dist/plugin/error/toError.js.map +1 -1
  15. package/dist/plugin/helpers/collectManifestCss.d.ts +1 -2
  16. package/dist/plugin/helpers/collectManifestCss.d.ts.map +1 -1
  17. package/dist/plugin/helpers/collectManifestCss.js +3 -5
  18. package/dist/plugin/helpers/collectManifestCss.js.map +1 -1
  19. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts +1 -1
  20. package/dist/plugin/helpers/collectViteModuleGraphCss.d.ts.map +1 -1
  21. package/dist/plugin/helpers/collectViteModuleGraphCss.js +6 -2
  22. package/dist/plugin/helpers/collectViteModuleGraphCss.js.map +1 -1
  23. package/dist/plugin/helpers/createCssProps.d.ts +1 -1
  24. package/dist/plugin/helpers/createCssProps.d.ts.map +1 -1
  25. package/dist/plugin/helpers/createCssProps.js +11 -32
  26. package/dist/plugin/helpers/createCssProps.js.map +1 -1
  27. package/dist/plugin/helpers/createRscStream.d.ts.map +1 -1
  28. package/dist/plugin/helpers/createRscStream.js +1 -0
  29. package/dist/plugin/helpers/createRscStream.js.map +1 -1
  30. package/dist/plugin/helpers/inputNormalizer.d.ts +1 -8
  31. package/dist/plugin/helpers/inputNormalizer.d.ts.map +1 -1
  32. package/dist/plugin/helpers/inputNormalizer.js +2 -5
  33. package/dist/plugin/helpers/inputNormalizer.js.map +1 -1
  34. package/dist/plugin/loader/createDefaultLoader.d.ts.map +1 -1
  35. package/dist/plugin/loader/createDefaultLoader.js +68 -4
  36. package/dist/plugin/loader/css-loader.development.d.ts +2 -15
  37. package/dist/plugin/loader/css-loader.development.d.ts.map +1 -1
  38. package/dist/plugin/loader/css-loader.development.js +16 -15
  39. package/dist/plugin/loader/css-loader.development.js.map +1 -1
  40. package/dist/plugin/loader/css-loader.production.d.ts +1 -1
  41. package/dist/plugin/loader/css-loader.production.d.ts.map +1 -1
  42. package/dist/plugin/loader/css-loader.production.js +1 -1
  43. package/dist/plugin/loader/css-loader.production.js.map +1 -1
  44. package/dist/plugin/loader/env-loader.development.d.ts +1 -0
  45. package/dist/plugin/loader/env-loader.development.d.ts.map +1 -1
  46. package/dist/plugin/loader/env-loader.development.js +17 -9
  47. package/dist/plugin/loader/handleExports.d.ts +1 -0
  48. package/dist/plugin/loader/handleExports.d.ts.map +1 -1
  49. package/dist/plugin/loader/handleExports.js +27 -8
  50. package/dist/plugin/loader/handleExports.js.map +1 -1
  51. package/dist/plugin/loader/react-loader.server.d.ts +2 -2
  52. package/dist/plugin/loader/react-loader.server.d.ts.map +1 -1
  53. package/dist/plugin/loader/react-loader.server.js +88 -26
  54. package/dist/plugin/loader/sourceMap.d.ts.map +1 -1
  55. package/dist/plugin/loader/sourceMap.js +1 -1
  56. package/dist/plugin/loader/transformModuleIfNeeded.d.ts.map +1 -1
  57. package/dist/plugin/loader/transformModuleIfNeeded.js +1 -1
  58. package/dist/plugin/loader/transformModuleIfNeeded.js.map +1 -1
  59. package/dist/plugin/loader/transformModuleWithPreservedFunctions.d.ts.map +1 -1
  60. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js +86 -13
  61. package/dist/plugin/loader/transformModuleWithPreservedFunctions.js.map +1 -1
  62. package/dist/plugin/plugin.client.d.ts.map +1 -1
  63. package/dist/plugin/plugin.client.js +0 -1
  64. package/dist/plugin/plugin.client.js.map +1 -1
  65. package/dist/plugin/react-client/configureWorkerRequestHandler.d.ts.map +1 -1
  66. package/dist/plugin/react-client/configureWorkerRequestHandler.js +81 -5
  67. package/dist/plugin/react-client/configureWorkerRequestHandler.js.map +1 -1
  68. package/dist/plugin/react-client/createMessageHandlers.d.ts.map +1 -1
  69. package/dist/plugin/react-client/createMessageHandlers.js +3 -0
  70. package/dist/plugin/react-client/createMessageHandlers.js.map +1 -1
  71. package/dist/plugin/react-client/createWorkerStream.d.ts +2 -2
  72. package/dist/plugin/react-client/createWorkerStream.d.ts.map +1 -1
  73. package/dist/plugin/react-client/createWorkerStream.js +13 -2
  74. package/dist/plugin/react-client/createWorkerStream.js.map +1 -1
  75. package/dist/plugin/react-client/handleWorkerRscStream.d.ts.map +1 -1
  76. package/dist/plugin/react-client/handleWorkerRscStream.js +10 -3
  77. package/dist/plugin/react-client/handleWorkerRscStream.js.map +1 -1
  78. package/dist/plugin/react-client/restartWorker.d.ts.map +1 -1
  79. package/dist/plugin/react-client/restartWorker.js +2 -1
  80. package/dist/plugin/react-client/restartWorker.js.map +1 -1
  81. package/dist/plugin/react-server/configureReactServer.d.ts.map +1 -1
  82. package/dist/plugin/react-server/configureReactServer.js +1 -2
  83. package/dist/plugin/react-server/configureReactServer.js.map +1 -1
  84. package/dist/plugin/react-server/handleServerAction.d.ts.map +1 -1
  85. package/dist/plugin/react-server/handleServerAction.js +0 -16
  86. package/dist/plugin/react-server/handleServerAction.js.map +1 -1
  87. package/dist/plugin/react-static/createBuildLoader.d.ts.map +1 -0
  88. package/dist/plugin/react-static/createBuildLoader.js.map +1 -0
  89. package/dist/plugin/react-static/plugin.d.ts.map +1 -1
  90. package/dist/plugin/react-static/plugin.js +9 -12
  91. package/dist/plugin/react-static/plugin.js.map +1 -1
  92. package/dist/plugin/react-static/temporaryReferences.d.ts.map +1 -0
  93. package/dist/plugin/react-static/temporaryReferences.js.map +1 -0
  94. package/dist/plugin/transformer/plugin.server.js +2 -2
  95. package/dist/plugin/transformer/plugin.server.js.map +1 -1
  96. package/dist/plugin/types.d.ts +20 -3
  97. package/dist/plugin/types.d.ts.map +1 -1
  98. package/dist/plugin/worker/rsc/handleRender.d.ts.map +1 -1
  99. package/dist/plugin/worker/rsc/handleRender.js +1 -0
  100. package/dist/plugin/worker/rsc/handleRender.js.map +1 -1
  101. package/dist/plugin/worker/rsc/handlers.d.ts +3 -0
  102. package/dist/plugin/worker/rsc/handlers.d.ts.map +1 -0
  103. package/dist/plugin/worker/rsc/handlers.js +225 -0
  104. package/dist/plugin/worker/rsc/handlers.js.map +1 -0
  105. package/dist/plugin/worker/rsc/messageHandler.d.ts.map +1 -1
  106. package/dist/plugin/worker/rsc/messageHandler.js +4 -110
  107. package/dist/plugin/worker/rsc/messageHandler.js.map +1 -1
  108. package/dist/plugin/worker/rsc/rsc-worker.development.js +14 -16
  109. package/dist/plugin/worker/rsc/rsc-worker.development.js.map +1 -1
  110. package/dist/plugin/worker/rsc/state.d.ts +1 -2
  111. package/dist/plugin/worker/rsc/state.d.ts.map +1 -1
  112. package/dist/plugin/worker/rsc/state.js +1 -2
  113. package/dist/plugin/worker/rsc/state.js.map +1 -1
  114. package/dist/plugin/worker/rsc/userOptions.d.ts +2 -0
  115. package/dist/plugin/worker/rsc/userOptions.d.ts.map +1 -0
  116. package/dist/plugin/worker/rsc/userOptions.js +17 -0
  117. package/dist/plugin/worker/rsc/userOptions.js.map +1 -0
  118. package/dist/plugin/worker/types.d.ts +2 -1
  119. package/dist/plugin/worker/types.d.ts.map +1 -1
  120. package/dist/tsconfig.tsbuildinfo +1 -1
  121. package/package.json +5 -1
  122. package/plugin/config/defaults.tsx +5 -2
  123. package/plugin/config/resolveOptions.ts +106 -91
  124. package/plugin/config/resolveUserConfig.ts +29 -5
  125. package/plugin/error/toError.ts +0 -2
  126. package/plugin/helpers/collectManifestCss.ts +2 -6
  127. package/plugin/helpers/collectViteModuleGraphCss.ts +6 -0
  128. package/plugin/helpers/createCssProps.tsx +17 -46
  129. package/plugin/helpers/createRscStream.tsx +1 -0
  130. package/plugin/helpers/inputNormalizer.ts +4 -13
  131. package/plugin/loader/createDefaultLoader.ts +80 -4
  132. package/plugin/loader/css-loader.development.ts +17 -34
  133. package/plugin/loader/css-loader.production.ts +2 -4
  134. package/plugin/loader/env-loader.development.ts +38 -15
  135. package/plugin/loader/handleExports.ts +36 -13
  136. package/plugin/loader/react-loader.server.ts +110 -32
  137. package/plugin/loader/sourceMap.ts +1 -1
  138. package/plugin/loader/transformModuleIfNeeded.ts +2 -2
  139. package/plugin/loader/transformModuleWithPreservedFunctions.ts +128 -21
  140. package/plugin/plugin.client.ts +0 -2
  141. package/plugin/react-client/configureWorkerRequestHandler.ts +104 -4
  142. package/plugin/react-client/createMessageHandlers.ts +3 -0
  143. package/plugin/react-client/createWorkerStream.ts +15 -1
  144. package/plugin/react-client/handleWorkerRscStream.ts +12 -3
  145. package/plugin/react-client/restartWorker.ts +1 -0
  146. package/plugin/react-server/configureReactServer.ts +1 -2
  147. package/plugin/react-server/handleServerAction.ts +1 -19
  148. package/plugin/react-static/plugin.ts +9 -12
  149. package/plugin/transformer/plugin.server.ts +2 -2
  150. package/plugin/types.ts +31 -2
  151. package/plugin/worker/rsc/handleRender.ts +1 -0
  152. package/plugin/worker/rsc/handlers.ts +246 -0
  153. package/plugin/worker/rsc/messageHandler.tsx +3 -118
  154. package/plugin/worker/rsc/rsc-worker.development.ts +18 -20
  155. package/plugin/worker/rsc/state.ts +2 -6
  156. package/plugin/worker/rsc/userOptions.ts +8 -0
  157. package/plugin/worker/types.ts +2 -0
  158. package/dist/plugin/loader/createBuildLoader.d.ts.map +0 -1
  159. package/dist/plugin/loader/createBuildLoader.js.map +0 -1
  160. package/dist/plugin/loader/plugin.d.ts +0 -22
  161. package/dist/plugin/loader/plugin.d.ts.map +0 -1
  162. package/dist/plugin/loader/plugin.js +0 -27
  163. package/dist/plugin/loader/temporaryReferences.d.ts.map +0 -1
  164. package/dist/plugin/loader/temporaryReferences.js.map +0 -1
  165. package/plugin/loader/plugin.ts +0 -33
  166. /package/dist/plugin/{loader → react-static}/createBuildLoader.d.ts +0 -0
  167. /package/dist/plugin/{loader → react-static}/createBuildLoader.js +0 -0
  168. /package/dist/plugin/{loader → react-static}/temporaryReferences.d.ts +0 -0
  169. /package/dist/plugin/{loader → react-static}/temporaryReferences.js +0 -0
  170. /package/plugin/{loader → react-static}/createBuildLoader.ts +0 -0
  171. /package/plugin/{loader → react-static}/temporaryReferences.ts +0 -0
@@ -0,0 +1,225 @@
1
+ /**
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
5
+ */
6
+ import { sendRscWorkerMessage } from '../sendMessage.js';
7
+ import { toError } from '../../error/toError.js';
8
+ import { userOptions } from './userOptions.js';
9
+ import { addCssFileContent, addModuleId } from './state.js';
10
+ import { join } from 'path';
11
+ import { ReactDOMServer } from '../../vendor/vendor.server.js';
12
+ import { PassThrough } from 'node:stream';
13
+
14
+ const handlers = {
15
+ onError: (id, error, errorInfo) => {
16
+ sendRscWorkerMessage({
17
+ type: "ERROR",
18
+ id,
19
+ errorInfo,
20
+ error: toError(error)
21
+ });
22
+ sendRscWorkerMessage({
23
+ type: "RSC_END",
24
+ id
25
+ });
26
+ },
27
+ onData: (id, data) => {
28
+ sendRscWorkerMessage({
29
+ type: "RSC_CHUNK",
30
+ id,
31
+ chunk: data
32
+ });
33
+ },
34
+ onEnd: (id) => {
35
+ sendRscWorkerMessage({
36
+ type: "RSC_END",
37
+ id
38
+ });
39
+ },
40
+ onMetrics: (id, metrics) => {
41
+ sendRscWorkerMessage({
42
+ type: "RSC_METRICS",
43
+ id,
44
+ metrics
45
+ });
46
+ },
47
+ onHmrAccept: (id, routes) => {
48
+ sendRscWorkerMessage({
49
+ type: "HMR_ACCEPT",
50
+ id,
51
+ routes
52
+ });
53
+ },
54
+ onHmrUpdate: (id, routes) => {
55
+ sendRscWorkerMessage({
56
+ type: "HMR_UPDATE",
57
+ id,
58
+ routes
59
+ });
60
+ },
61
+ onServerModule: (id, url, source) => {
62
+ addModuleId(id, url);
63
+ sendRscWorkerMessage({
64
+ type: "SERVER_MODULE",
65
+ id,
66
+ url,
67
+ source
68
+ });
69
+ },
70
+ onServerActionResponse: (id, result) => {
71
+ const stream = ReactDOMServer.renderToPipeableStream(
72
+ {
73
+ type: "server-action-response",
74
+ returnValue: result
75
+ },
76
+ userOptions.moduleBasePath,
77
+ {
78
+ onError(error) {
79
+ sendRscWorkerMessage({
80
+ type: "ERROR",
81
+ id,
82
+ error: toError(error)
83
+ });
84
+ }
85
+ }
86
+ );
87
+ const passThrough = new PassThrough();
88
+ stream.pipe(passThrough);
89
+ passThrough.on("data", (chunk) => {
90
+ sendRscWorkerMessage({
91
+ type: "RSC_CHUNK",
92
+ id,
93
+ chunk
94
+ });
95
+ });
96
+ passThrough.on("end", () => {
97
+ sendRscWorkerMessage({
98
+ type: "RSC_END",
99
+ id
100
+ });
101
+ });
102
+ passThrough.on("error", (error) => {
103
+ sendRscWorkerMessage({
104
+ type: "ERROR",
105
+ id,
106
+ error: toError(error)
107
+ });
108
+ });
109
+ },
110
+ onServerAction: async (id, args) => {
111
+ try {
112
+ const [filePath, exportName] = id.split("#");
113
+ if (!filePath || !exportName) {
114
+ throw new Error(
115
+ `Invalid server action ID format: ${id}. Expected format: "path/to/file.ts#exportName"`
116
+ );
117
+ }
118
+ const actionPath = filePath.startsWith(userOptions.moduleBasePath) ? filePath.slice(userOptions.moduleBasePath.length) : filePath;
119
+ const fullPath = join(userOptions.projectRoot, actionPath);
120
+ const module = await import(fullPath);
121
+ const action = module[exportName];
122
+ if (typeof action !== "function") {
123
+ throw new Error(`Server action not found: ${id}`);
124
+ }
125
+ const result = await action(...args);
126
+ const stream = ReactDOMServer.renderToPipeableStream(
127
+ {
128
+ type: "server-action-response",
129
+ returnValue: result
130
+ },
131
+ userOptions.moduleBasePath,
132
+ {
133
+ onError(error) {
134
+ sendRscWorkerMessage({
135
+ type: "ERROR",
136
+ id,
137
+ error: toError(error)
138
+ });
139
+ }
140
+ }
141
+ );
142
+ const passThrough = new PassThrough();
143
+ stream.pipe(passThrough);
144
+ passThrough.on("data", (chunk) => {
145
+ sendRscWorkerMessage({
146
+ type: "RSC_CHUNK",
147
+ id,
148
+ chunk
149
+ });
150
+ });
151
+ passThrough.on("end", () => {
152
+ sendRscWorkerMessage({
153
+ type: "RSC_END",
154
+ id
155
+ });
156
+ });
157
+ passThrough.on("error", (error) => {
158
+ sendRscWorkerMessage({
159
+ type: "ERROR",
160
+ id,
161
+ error: toError(error)
162
+ });
163
+ });
164
+ } catch (error) {
165
+ const errorMessage = toError(error).message;
166
+ const stream = ReactDOMServer.renderToPipeableStream(
167
+ {
168
+ type: "server-action-response",
169
+ returnValue: { success: false, error: errorMessage }
170
+ },
171
+ userOptions.moduleBasePath,
172
+ {
173
+ onError(error2) {
174
+ sendRscWorkerMessage({
175
+ type: "ERROR",
176
+ id,
177
+ error: toError(error2)
178
+ });
179
+ }
180
+ }
181
+ );
182
+ const passThrough = new PassThrough();
183
+ stream.pipe(passThrough);
184
+ passThrough.on("data", (chunk) => {
185
+ sendRscWorkerMessage({
186
+ type: "RSC_CHUNK",
187
+ id,
188
+ chunk
189
+ });
190
+ });
191
+ passThrough.on("end", () => {
192
+ sendRscWorkerMessage({
193
+ type: "RSC_END",
194
+ id
195
+ });
196
+ });
197
+ passThrough.on("error", (error2) => {
198
+ sendRscWorkerMessage({
199
+ type: "ERROR",
200
+ id,
201
+ error: toError(error2)
202
+ });
203
+ });
204
+ }
205
+ },
206
+ onShutdown: (id) => {
207
+ sendRscWorkerMessage({
208
+ type: "SHUTDOWN_COMPLETE",
209
+ id
210
+ });
211
+ },
212
+ onCssFile: (id, code) => {
213
+ if (id) {
214
+ addCssFileContent(id, code, userOptions);
215
+ sendRscWorkerMessage({
216
+ type: "CSS_FILE",
217
+ id,
218
+ content: code
219
+ });
220
+ }
221
+ }
222
+ };
223
+
224
+ export { handlers };
225
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sources":["../../../../plugin/worker/rsc/handlers.ts"],"sourcesContent":["import { sendRscWorkerMessage } from \"../sendMessage.js\";\nimport type { StreamHandlers } from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\nimport { userOptions } from \"./userOptions.js\";\nimport { addCssFileContent, addModuleId } from \"./state.js\";\nimport { join } from \"path\";\nimport { ReactDOMServer } from \"../../vendor/vendor.server.js\";\nimport { PassThrough } from \"node:stream\";\n\nexport const handlers: Required<StreamHandlers> = {\n onError: (id, error, errorInfo) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id: id,\n errorInfo,\n error: toError(error),\n });\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id: id,\n });\n },\n onData: (id, data: any) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id: id,\n chunk: data,\n });\n },\n onEnd: (id: string) => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id: id,\n });\n },\n onMetrics: (id: string, metrics: any) => {\n sendRscWorkerMessage({\n type: \"RSC_METRICS\",\n id: id,\n metrics,\n });\n },\n onHmrAccept: (id, routes) => {\n sendRscWorkerMessage({\n type: \"HMR_ACCEPT\",\n id: id,\n routes: routes,\n });\n },\n onHmrUpdate: (id, routes) => {\n sendRscWorkerMessage({\n type: \"HMR_UPDATE\",\n id: id,\n routes: routes,\n });\n },\n onServerModule: (id, url, source) => {\n addModuleId(id, url);\n sendRscWorkerMessage({\n type: \"SERVER_MODULE\",\n id,\n url,\n source,\n });\n },\n onServerActionResponse: (id, result) => {\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: result,\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n },\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk,\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id,\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n });\n },\n onServerAction: async (id, args) => {\n try {\n // Parse the server action ID to get the file path and export name\n const [filePath, exportName] = id.split(\"#\");\n if (!filePath || !exportName) {\n throw new Error(\n `Invalid server action ID format: ${id}. Expected format: \"path/to/file.ts#exportName\"`\n );\n }\n // Convert the server action ID to a file path\n const actionPath = filePath.startsWith(userOptions.moduleBasePath)\n ? filePath.slice(userOptions.moduleBasePath.length)\n : filePath;\n const fullPath = join(userOptions.projectRoot, actionPath);\n\n // Load the server action module\n const module = await import(fullPath);\n const action = module[exportName];\n\n if (typeof action !== \"function\") {\n throw new Error(`Server action not found: ${id}`);\n }\n\n // Execute the server action\n const result = await action(...args);\n\n // Send success response using RSC stream\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: result,\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n },\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk,\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id,\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n });\n } catch (error: unknown) {\n const errorMessage = toError(error).message;\n // Send error response using RSC stream\n const stream = ReactDOMServer.renderToPipeableStream(\n {\n type: \"server-action-response\",\n returnValue: { success: false, error: errorMessage },\n },\n userOptions.moduleBasePath,\n {\n onError(error: Error) {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n },\n }\n );\n\n const passThrough = new PassThrough();\n stream.pipe(passThrough);\n\n passThrough.on(\"data\", (chunk) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id,\n chunk,\n });\n });\n\n passThrough.on(\"end\", () => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id,\n });\n });\n\n passThrough.on(\"error\", (error) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id,\n error: toError(error),\n });\n });\n }\n },\n onShutdown: (id: string) => {\n // Send SHUTDOWN_COMPLETE message to signal that shutdown is complete\n sendRscWorkerMessage({\n type: \"SHUTDOWN_COMPLETE\",\n id: id,\n });\n },\n onCssFile: (id, code) => {\n if (id) {\n // Add to CSS registry\n addCssFileContent(id, code, userOptions);\n\n // Send CSS file message\n sendRscWorkerMessage({\n type: \"CSS_FILE\",\n id,\n content: code,\n });\n }\n },\n};\n"],"names":["error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,qBAAqB,EAEtB,MAAM,aAAa,CAAC;AAwGrB,wBAAsB,cAAc,CAClC,GAAG,EAAE,qBAAqB,EAC1B,IAAI,8CAAa,iBA2FlB"}
1
+ {"version":3,"file":"messageHandler.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AASrB,wBAAsB,cAAc,CAClC,GAAG,EAAE,qBAAqB,EAC1B,IAAI,8CAAa,iBA0ElB"}
@@ -3,104 +3,14 @@
3
3
  * Copyright (c) Nico Brinkkemper
4
4
  * MIT License
5
5
  */
6
- import { parentPort, workerData } from 'node:worker_threads';
7
- import { activeStreams, addModuleId, addCssFileContent, hmrState } from './state.js';
6
+ import { parentPort } from 'node:worker_threads';
7
+ import { activeStreams, hmrState } from './state.js';
8
8
  import { handleRender } from './handleRender.js';
9
- import { sendRscWorkerMessage } from '../sendMessage.js';
10
9
  import { toError } from '../../error/toError.js';
10
+ import { handlers } from './handlers.js';
11
11
 
12
12
  const isTestEnv = process.env["VITEST"] || process.env["NODE_ENV"] === "test";
13
13
  const isDevEnv = process.env["NODE_ENV"] !== "production";
14
- const handlers = {
15
- onError: (id, error, errorInfo) => {
16
- sendRscWorkerMessage({
17
- type: "ERROR",
18
- id,
19
- errorInfo,
20
- error: toError(error)
21
- });
22
- sendRscWorkerMessage({
23
- type: "RSC_END",
24
- id
25
- });
26
- },
27
- onData: (id, data) => {
28
- sendRscWorkerMessage({
29
- type: "RSC_CHUNK",
30
- id,
31
- chunk: data
32
- });
33
- },
34
- onEnd: (id) => {
35
- sendRscWorkerMessage({
36
- type: "RSC_END",
37
- id
38
- });
39
- },
40
- onMetrics: (id, metrics) => {
41
- sendRscWorkerMessage({
42
- type: "RSC_METRICS",
43
- id,
44
- metrics
45
- });
46
- },
47
- onHmrAccept: (id, routes) => {
48
- sendRscWorkerMessage({
49
- type: "HMR_ACCEPT",
50
- id,
51
- routes
52
- });
53
- },
54
- onHmrUpdate: (id, routes) => {
55
- sendRscWorkerMessage({
56
- type: "HMR_UPDATE",
57
- id,
58
- routes
59
- });
60
- },
61
- onServerModule: (id, url, source) => {
62
- sendRscWorkerMessage({
63
- type: "SERVER_MODULE",
64
- id,
65
- url,
66
- source
67
- });
68
- },
69
- onServerActionResponse: (id, result, error) => {
70
- sendRscWorkerMessage({
71
- type: "SERVER_ACTION_RESPONSE",
72
- id,
73
- result,
74
- error
75
- });
76
- },
77
- onServerAction: async (id, args) => {
78
- try {
79
- const serverAction = workerData.serverActions?.[id];
80
- if (!serverAction) {
81
- throw new Error(`Server action ${id} not found`);
82
- }
83
- const result = await serverAction(...args);
84
- sendRscWorkerMessage({
85
- type: "SERVER_ACTION_RESPONSE",
86
- id,
87
- result
88
- });
89
- } catch (error) {
90
- sendRscWorkerMessage({
91
- type: "SERVER_ACTION_RESPONSE",
92
- id,
93
- error: error instanceof Error ? error.message : String(error)
94
- });
95
- }
96
- },
97
- onShutdown: (id) => {
98
- sendRscWorkerMessage({
99
- type: "SHUTDOWN_COMPLETE",
100
- id
101
- });
102
- }
103
- };
104
14
  async function messageHandler(msg, port = parentPort) {
105
15
  try {
106
16
  if (!port) {
@@ -112,9 +22,7 @@ async function messageHandler(msg, port = parentPort) {
112
22
  case "SERVER_ACTION":
113
23
  return handlers.onServerAction(msg.id, msg.args);
114
24
  case "INITIALIZED_REACT_LOADER":
115
- return;
116
25
  case "INITIALIZED_CSS_LOADER":
117
- return;
118
26
  case "INITIALIZED_ENV_LOADER":
119
27
  return;
120
28
  case "HMR_UPDATE":
@@ -130,23 +38,9 @@ async function messageHandler(msg, port = parentPort) {
130
38
  handlers.onHmrAccept(msg.id, msg.routes || []);
131
39
  return;
132
40
  case "CSS_FILE":
133
- if (msg.id) {
134
- const cssOptions = workerData.userOptions.css || {
135
- inlineThreshold: 1e3
136
- };
137
- addCssFileContent(msg.id, msg.content, {
138
- projectRoot: workerData.userOptions.projectRoot || process.cwd(),
139
- moduleBaseURL: workerData.userOptions.moduleBaseURL || "/",
140
- moduleBasePath: workerData.userOptions.moduleBasePath || "/",
141
- moduleRootPath: workerData.userOptions.moduleRootPath,
142
- css: cssOptions
143
- });
144
- }
41
+ handlers.onCssFile(msg.id, msg.content);
145
42
  return;
146
43
  case "SERVER_MODULE":
147
- if (msg.id && msg.url) {
148
- addModuleId(msg.id, msg.url);
149
- }
150
44
  handlers.onServerModule(msg.id, msg.url, msg.source);
151
45
  return;
152
46
  case "SHUTDOWN": {
@@ -1 +1 @@
1
- {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { parentPort, workerData } from \"node:worker_threads\";\nimport {\n activeStreams,\n addCssFileContent,\n hmrState,\n addModuleId,\n} from \"./state.js\";\nimport { handleRender } from \"./handleRender.js\";\nimport type {\n RscWorkerInputMessage,\n StreamHandlers,\n} from \"../types.js\";\nimport { sendRscWorkerMessage } from \"../sendMessage.js\";\nimport { toError } from \"../../error/toError.js\";\n\n// In test mode, we want errors to propagate up immediately\nconst isTestEnv = process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\nconst isDevEnv = process.env[\"NODE_ENV\"] !== \"production\";\n\nconst handlers: Required<StreamHandlers> = {\n onError: (id, error, errorInfo) => {\n sendRscWorkerMessage({\n type: \"ERROR\",\n id: id,\n errorInfo,\n error: toError(error),\n });\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id: id,\n });\n },\n onData: (id, data: any) => {\n sendRscWorkerMessage({\n type: \"RSC_CHUNK\",\n id: id,\n chunk: data,\n });\n },\n onEnd: (id: string) => {\n sendRscWorkerMessage({\n type: \"RSC_END\",\n id: id,\n });\n },\n onMetrics: (id: string, metrics: any) => {\n sendRscWorkerMessage({\n type: \"RSC_METRICS\",\n id: id,\n metrics,\n });\n },\n onHmrAccept: (id, routes) => {\n sendRscWorkerMessage({\n type: \"HMR_ACCEPT\",\n id: id,\n routes: routes,\n });\n },\n onHmrUpdate: (id, routes) => {\n sendRscWorkerMessage({\n type: \"HMR_UPDATE\",\n id: id,\n routes: routes,\n });\n },\n onServerModule: (id, url, source) => {\n sendRscWorkerMessage({\n type: \"SERVER_MODULE\",\n id,\n url,\n source,\n });\n },\n onServerActionResponse: (id, result, error) => {\n sendRscWorkerMessage({\n type: \"SERVER_ACTION_RESPONSE\",\n id,\n result,\n error,\n });\n },\n onServerAction: async (id, args) => {\n try {\n // Get the server action function from the worker data\n const serverAction = workerData.serverActions?.[id];\n if (!serverAction) {\n throw new Error(`Server action ${id} not found`);\n }\n // Execute the server action\n const result = await serverAction(...args);\n // Send the result back\n sendRscWorkerMessage({\n type: \"SERVER_ACTION_RESPONSE\",\n id,\n result,\n });\n } catch (error) {\n // Send error back\n sendRscWorkerMessage({\n type: \"SERVER_ACTION_RESPONSE\",\n id,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n },\n onShutdown: (id: string) => {\n // Send SHUTDOWN_COMPLETE message to signal that shutdown is complete\n sendRscWorkerMessage({\n type: \"SHUTDOWN_COMPLETE\",\n id: id,\n });\n },\n};\n\nexport async function messageHandler(\n msg: RscWorkerInputMessage,\n port = parentPort\n) {\n try {\n if (!port) {\n throw new Error(\"No port found\");\n }\n switch (msg.type) {\n case \"RSC_RENDER\":\n return await handleRender(msg, handlers);\n case \"SERVER_ACTION\":\n return handlers.onServerAction(msg.id, msg.args);\n case \"INITIALIZED_REACT_LOADER\":\n return;\n case \"INITIALIZED_CSS_LOADER\":\n return;\n case \"INITIALIZED_ENV_LOADER\":\n return;\n case \"HMR_UPDATE\":\n // Mark the module as invalidated\n hmrState.set(msg.id, {\n timestamp: msg.timestamp || Date.now(),\n invalidated: true,\n routes: msg.routes || [],\n });\n // Notify the main thread that we've processed the update\n handlers.onHmrUpdate(msg.id, msg.routes || []);\n return;\n case \"HMR_CLEANUP\":\n // Clear the invalidation state\n hmrState.delete(msg.id);\n // Notify the main thread that we've processed the cleanup\n handlers.onHmrAccept(msg.id, msg.routes || []);\n return;\n case \"CSS_FILE\":\n if (msg.id) {\n const cssOptions = workerData.userOptions.css || {\n inlineThreshold: 1000,\n };\n\n addCssFileContent(msg.id, msg.content, {\n projectRoot: workerData.userOptions.projectRoot || process.cwd(),\n moduleBaseURL: workerData.userOptions.moduleBaseURL || \"/\",\n moduleBasePath: workerData.userOptions.moduleBasePath || \"/\",\n moduleRootPath: workerData.userOptions.moduleRootPath,\n css: cssOptions,\n });\n }\n return;\n case \"SERVER_MODULE\":\n if (msg.id && msg.url) {\n addModuleId(msg.id, msg.url);\n }\n handlers.onServerModule(msg.id, msg.url, msg.source);\n return;\n case \"SHUTDOWN\": {\n // If id is \"*\", clean up all render states\n if (msg.id === \"*\") {\n activeStreams.forEach((stream, renderId) => {\n stream.end();\n activeStreams.delete(renderId);\n });\n parentPort?.removeAllListeners();\n } else {\n activeStreams.delete(msg.id);\n }\n handlers.onShutdown(msg.id);\n return;\n }\n default: {\n console.log(\"Unknown message\", msg);\n return;\n }\n }\n } catch (error) {\n const err = toError(error);\n if (isDevEnv) {\n console.error(err);\n }\n // In dev mode, try to send error message before exiting\n if (parentPort) {\n port?.postMessage({\n type: \"ERROR\",\n id: \"rsc-worker\",\n error: err,\n });\n }\n if (!isDevEnv || isTestEnv) {\n // In test mode or production mode, just throw the error to fail fast\n throw err;\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageHandler.js","sources":["../../../../plugin/worker/rsc/messageHandler.tsx"],"sourcesContent":["import { parentPort } from \"node:worker_threads\";\nimport {\n activeStreams,\n hmrState,\n} from \"./state.js\";\nimport { handleRender } from \"./handleRender.js\";\nimport type {\n RscWorkerInputMessage,\n} from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\nimport { handlers } from \"./handlers.js\";\n\n// In test mode, we want errors to propagate up immediately\nconst isTestEnv = process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\nconst isDevEnv = process.env[\"NODE_ENV\"] !== \"production\";\n\n\nexport async function messageHandler(\n msg: RscWorkerInputMessage,\n port = parentPort\n) {\n try {\n if (!port) {\n throw new Error(\"No port found\");\n }\n switch (msg.type) {\n case \"RSC_RENDER\":\n return await handleRender(msg, handlers);\n case \"SERVER_ACTION\":\n return handlers.onServerAction(msg.id, msg.args);\n case \"INITIALIZED_REACT_LOADER\":\n case \"INITIALIZED_CSS_LOADER\":\n case \"INITIALIZED_ENV_LOADER\":\n return;\n case \"HMR_UPDATE\":\n // Mark the module as invalidated\n hmrState.set(msg.id, {\n timestamp: msg.timestamp || Date.now(),\n invalidated: true,\n routes: msg.routes || [],\n });\n // Notify the main thread that we've processed the update\n handlers.onHmrUpdate(msg.id, msg.routes || []);\n return;\n case \"HMR_CLEANUP\":\n // Clear the invalidation state\n hmrState.delete(msg.id);\n // Notify the main thread that we've processed the cleanup\n handlers.onHmrAccept(msg.id, msg.routes || []);\n return;\n case \"CSS_FILE\":\n handlers.onCssFile(msg.id, msg.content);\n return;\n case \"SERVER_MODULE\":\n handlers.onServerModule(msg.id, msg.url, msg.source);\n return;\n case \"SHUTDOWN\": {\n // If id is \"*\", clean up all render states\n if (msg.id === \"*\") {\n activeStreams.forEach((stream, renderId) => {\n stream.end();\n activeStreams.delete(renderId);\n });\n parentPort?.removeAllListeners();\n } else {\n activeStreams.delete(msg.id);\n }\n handlers.onShutdown(msg.id);\n return;\n }\n default: {\n console.log(\"Unknown message\", msg);\n return;\n }\n }\n } catch (error) {\n const err = toError(error);\n if (isDevEnv) {\n console.error(err);\n }\n // In dev mode, try to send error message before exiting\n if (parentPort) {\n port?.postMessage({\n type: \"ERROR\",\n id: \"rsc-worker\",\n error: err,\n });\n }\n if (!isDevEnv || isTestEnv) {\n // In test mode or production mode, just throw the error to fail fast\n throw err;\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -9,7 +9,6 @@ import { register } from 'node:module';
9
9
  import { register as register$1 } from 'tsx/esm/api';
10
10
  import { join } from 'node:path';
11
11
  import { pluginRoot } from '../../root.js';
12
- import { deserializeRegExp } from '../../helpers/serializeUserOptions.js';
13
12
  import { toError } from '../../error/toError.js';
14
13
 
15
14
  if (!parentPort) {
@@ -48,40 +47,39 @@ const developmentReactLoaderMessageHandler = (msg) => {
48
47
  messageHandler(msg);
49
48
  };
50
49
  try {
51
- if (workerData) {
52
- workerData.userOptions = deserializeRegExp(workerData.userOptions);
53
- }
54
50
  const reactLoaderChannel = new MessageChannel();
55
51
  const cssLoaderChannel = new MessageChannel();
56
52
  const envLoaderChannel = new MessageChannel();
57
- reactLoaderChannel.port1.on("message", developmentReactLoaderMessageHandler);
58
- cssLoaderChannel.port1.on("message", developmentCssLoaderMessageHandler);
59
- envLoaderChannel.port1.on("message", developmentEnvLoaderMessageHandler);
53
+ reactLoaderChannel.port2.on("message", developmentReactLoaderMessageHandler);
54
+ cssLoaderChannel.port2.on("message", developmentCssLoaderMessageHandler);
55
+ envLoaderChannel.port2.on("message", developmentEnvLoaderMessageHandler);
60
56
  const reactLoaderPath = "file://" + join(pluginRoot, "loader/react-loader.server.js");
61
57
  const cssLoaderPath = "file://" + join(pluginRoot, "loader/css-loader.development.js");
62
58
  const envLoaderPath = "file://" + join(pluginRoot, "loader/env-loader.development.js");
63
- register(reactLoaderPath, {
64
- parentURL: pluginRoot,
65
- data: {
66
- id: "react-loader",
67
- port: reactLoaderChannel.port1,
68
- userOptions: workerData.userOptions
69
- },
70
- transferList: [reactLoaderChannel.port1]
71
- });
72
59
  register(cssLoaderPath, {
73
60
  parentURL: pluginRoot,
74
61
  data: {
75
62
  id: "css-loader",
76
63
  port: cssLoaderChannel.port1,
64
+ userOptions: workerData.userOptions,
77
65
  resolvedConfig: workerData.resolvedConfig
78
66
  },
79
67
  transferList: [cssLoaderChannel.port1]
80
68
  });
81
69
  register$1();
70
+ register(reactLoaderPath, {
71
+ parentURL: pluginRoot,
72
+ data: {
73
+ id: "react-loader",
74
+ port: reactLoaderChannel.port1,
75
+ userOptions: workerData.userOptions
76
+ },
77
+ transferList: [reactLoaderChannel.port1]
78
+ });
82
79
  register(envLoaderPath, {
83
80
  parentURL: pluginRoot,
84
81
  data: {
82
+ id: "env-loader",
85
83
  port: envLoaderChannel.port1,
86
84
  resolvedConfig: workerData.resolvedConfig
87
85
  },
@@ -1 +1 @@
1
- {"version":3,"file":"rsc-worker.development.js","sources":["../../../../plugin/worker/rsc/rsc-worker.development.ts"],"sourcesContent":["import { parentPort, MessageChannel, workerData } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { register } from \"node:module\";\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../../root.js\";\nimport { deserializeRegExp } from \"../../helpers/serializeUserOptions.js\";\nimport type {\n HmrAcceptMessage,\n HmrUpdateMessage,\n ReadyMessage,\n} from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\n// Initialize worker\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// In test mode, we want errors to propagate up immediately\nconst isTestEnv = process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\nconst isDevEnv = process.env[\"NODE_ENV\"] !== \"production\";\nconst verbose = workerData.verbose;\n\nconst developmentMessageHandler = (msg: any) => {\n if (verbose) {\n if (\"chunk\" in msg) {\n let preview = Buffer.from(msg.chunk).toString(\"utf-8\");\n console.log(`[rsc-worker:${msg.type}] ${preview}`);\n } else {\n console.log(`[rsc-worker:${msg.type}] ${JSON.stringify(msg)}`);\n }\n }\n messageHandler(msg);\n};\n\nconst developmentCssLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[css-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\nconst developmentEnvLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[env-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\nconst developmentReactLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[react-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\ntry {\n // Deserialize workerData to restore RegExp objects\n if (workerData) {\n workerData.userOptions = deserializeRegExp(workerData.userOptions);\n }\n\n // Create channels for each loader\n const reactLoaderChannel = new MessageChannel();\n const cssLoaderChannel = new MessageChannel();\n const envLoaderChannel = new MessageChannel();\n\n // Set up message handlers before transferring ports\n reactLoaderChannel.port1.on(\"message\", developmentReactLoaderMessageHandler);\n cssLoaderChannel.port1.on(\"message\", developmentCssLoaderMessageHandler);\n envLoaderChannel.port1.on(\"message\", developmentEnvLoaderMessageHandler);\n\n const reactLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/react-loader.server.js\");\n const cssLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/css-loader.development.js\");\n const envLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/env-loader.development.js\");\n\n // Register loaders with their ports\n register(reactLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"react-loader\",\n port: reactLoaderChannel.port1,\n userOptions: workerData.userOptions,\n },\n transferList: [reactLoaderChannel.port1],\n });\n register(cssLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"css-loader\",\n port: cssLoaderChannel.port1,\n resolvedConfig: workerData.resolvedConfig,\n },\n transferList: [cssLoaderChannel.port1],\n });\n\n // Register loaders\n registerTsx();\n\n // Register env-loader (ensure this the last)\n register(envLoaderPath, {\n parentURL: pluginRoot,\n data: {\n port: envLoaderChannel.port1,\n resolvedConfig: workerData.resolvedConfig,\n },\n transferList: [envLoaderChannel.port1],\n });\n\n // Set up message handling\n parentPort!.on(\"message\", developmentMessageHandler);\n\n const { hmrPort } = workerData;\n if (hmrPort) {\n // Start the message port\n hmrPort.start();\n\n // Listen for HMR messages\n hmrPort.on(\"message\", (message: any) => {\n if (message.type === \"HMR_UPDATE\") {\n // Invalidate the module in the worker\n parentPort!.postMessage({\n type: \"HMR_UPDATE\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrUpdateMessage);\n } else if (message.type === \"HMR_ACCEPT\") {\n // Handle the update\n parentPort!.postMessage({\n type: \"HMR_ACCEPT\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrAcceptMessage);\n }\n });\n }\n\n // Notify parent that we're ready\n parentPort!.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n id: \"rsc-worker\",\n } satisfies ReadyMessage);\n\n if (process.env[\"NODE_ENV\"] === \"production\") {\n throw new Error(\"This module should not run in production mode.\");\n }\n} catch (error) {\n if (isDevEnv) {\n console.error(error);\n }\n // In dev mode, try to send error message before exiting\n if (parentPort) {\n parentPort?.postMessage({\n type: \"ERROR\",\n id: \"rsc-worker\",\n error: toError(error),\n });\n }\n if (!isDevEnv || isTestEnv) {\n // In test mode or production mode, just throw the error to fail fast\n throw error;\n }\n}\n"],"names":["registerTsx"],"mappings":"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"}
1
+ {"version":3,"file":"rsc-worker.development.js","sources":["../../../../plugin/worker/rsc/rsc-worker.development.ts"],"sourcesContent":["import { parentPort, MessageChannel, workerData } from \"node:worker_threads\";\nimport { messageHandler } from \"./messageHandler.js\";\nimport { register } from \"node:module\";\nimport { register as registerTsx } from \"tsx/esm/api\";\nimport { join } from \"node:path\";\nimport { pluginRoot } from \"../../root.js\";\nimport type {\n HmrAcceptMessage,\n HmrUpdateMessage,\n ReadyMessage,\n} from \"../types.js\";\nimport { toError } from \"../../error/toError.js\";\n\n// Initialize worker\nif (!parentPort) {\n throw new Error(\"This module must be run as a worker\");\n}\n\n// In test mode, we want errors to propagate up immediately\nconst isTestEnv = process.env[\"VITEST\"] || process.env[\"NODE_ENV\"] === \"test\";\nconst isDevEnv = process.env[\"NODE_ENV\"] !== \"production\";\nconst verbose = workerData.verbose;\n\nconst developmentMessageHandler = (msg: any) => {\n if (verbose) {\n if (\"chunk\" in msg) {\n let preview = Buffer.from(msg.chunk).toString(\"utf-8\");\n console.log(`[rsc-worker:${msg.type}] ${preview}`);\n } else {\n console.log(`[rsc-worker:${msg.type}] ${JSON.stringify(msg)}`);\n }\n }\n messageHandler(msg);\n};\n\nconst developmentCssLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[css-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\nconst developmentEnvLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[env-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\nconst developmentReactLoaderMessageHandler = (msg: any) => {\n if (verbose) {\n console.log(`[react-loader:${msg.type}] ${JSON.stringify(msg)}`);\n }\n messageHandler(msg);\n};\n\ntry {\n // Create channels for each loader\n const reactLoaderChannel = new MessageChannel();\n const cssLoaderChannel = new MessageChannel();\n const envLoaderChannel = new MessageChannel();\n\n // Set up message handlers before transferring ports\n reactLoaderChannel.port2.on(\"message\", developmentReactLoaderMessageHandler);\n cssLoaderChannel.port2.on(\"message\", developmentCssLoaderMessageHandler);\n envLoaderChannel.port2.on(\"message\", developmentEnvLoaderMessageHandler);\n\n const reactLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/react-loader.server.js\");\n const cssLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/css-loader.development.js\");\n const envLoaderPath =\n \"file://\" + join(pluginRoot, \"loader/env-loader.development.js\");\n\n register(cssLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"css-loader\",\n port: cssLoaderChannel.port1,\n userOptions: workerData.userOptions,\n resolvedConfig: workerData.resolvedConfig,\n },\n transferList: [cssLoaderChannel.port1],\n });\n\n // Register tsx\n registerTsx();\n\n // Register loaders with their ports\n register(reactLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"react-loader\",\n port: reactLoaderChannel.port1,\n userOptions: workerData.userOptions,\n },\n transferList: [reactLoaderChannel.port1],\n });\n\n // Register env-loader (ensure this the last)\n register(envLoaderPath, {\n parentURL: pluginRoot,\n data: {\n id: \"env-loader\",\n port: envLoaderChannel.port1,\n resolvedConfig: workerData.resolvedConfig,\n },\n transferList: [envLoaderChannel.port1],\n });\n\n // Set up message handling\n parentPort!.on(\"message\", developmentMessageHandler);\n\n const { hmrPort } = workerData;\n if (hmrPort) {\n // Start the message port\n hmrPort.start();\n\n // Listen for HMR messages\n hmrPort.on(\"message\", (message: any) => {\n if (message.type === \"HMR_UPDATE\") {\n // Invalidate the module in the worker\n parentPort!.postMessage({\n type: \"HMR_UPDATE\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrUpdateMessage);\n } else if (message.type === \"HMR_ACCEPT\") {\n // Handle the update\n parentPort!.postMessage({\n type: \"HMR_ACCEPT\",\n id: message.id,\n routes: message.routes,\n } satisfies HmrAcceptMessage);\n }\n });\n }\n\n // Notify parent that we're ready\n parentPort!.postMessage({\n type: \"READY\",\n env: process.env[\"NODE_ENV\"],\n pid: process.pid,\n id: \"rsc-worker\",\n } satisfies ReadyMessage);\n\n if (process.env[\"NODE_ENV\"] === \"production\") {\n throw new Error(\"This module should not run in production mode.\");\n }\n} catch (error) {\n if (isDevEnv) {\n console.error(error);\n }\n // In dev mode, try to send error message before exiting\n if (parentPort) {\n parentPort?.postMessage({\n type: \"ERROR\",\n id: \"rsc-worker\",\n error: toError(error),\n });\n }\n if (!isDevEnv || isTestEnv) {\n // In test mode or production mode, just throw the error to fail fast\n throw error;\n }\n}\n"],"names":["registerTsx"],"mappings":"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"}
@@ -10,8 +10,7 @@ export declare function clearCssFiles(): void;
10
10
  export declare function getCssFiles(): MapIterator<[string, CssContent]>;
11
11
  export declare function clearClientFiles(): void;
12
12
  export declare function clearServerActionFiles(): void;
13
- export declare function addCssFile(id: string, cssFile: CssContent): void;
14
- export declare function addCssFileContent(id: string, code: string, userOptions: Pick<ResolvedUserOptions, "projectRoot" | "moduleBaseURL" | "moduleBasePath" | "moduleRootPath" | "css">): void;
13
+ export declare function addCssFileContent(id: string, code: string, userOptions: Pick<ResolvedUserOptions, "projectRoot" | "moduleBaseURL" | "moduleBasePath" | "moduleRootPath" | "css" | "normalizer" | "moduleID">): void;
15
14
  export declare function addClientFile(url: string): void;
16
15
  export declare function addServerActionFile(url: string): void;
17
16
  export declare function clearAllFiles(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAG5D,eAAO,MAAM,QAAQ,yBAAgC,CAAC;AAGtD,eAAO,MAAM,SAAS,qBAA4B,CAAC;AAEnD,eAAO,MAAM,QAAQ,uBAA8B,CAAC;AAyBpD,eAAO,MAAM,WAAW,aAAoB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,aAAoB,CAAC;AAGnD,wBAAgB,aAAa,SAE5B;AAED,wBAAgB,WAAW,sCAE1B;AAED,wBAAgB,gBAAgB,SAE/B;AAED,wBAAgB,sBAAsB,SAErC;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,QAEzD;AAGD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,KAAK,CAAC,QAUhL;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,QAExC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAE9C;AAED,wBAAgB,aAAa,SAI5B;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGzD;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEhD;AAGD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAIhD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAElD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1D"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAG5D,eAAO,MAAM,QAAQ,yBAAgC,CAAC;AAGtD,eAAO,MAAM,SAAS,qBAA4B,CAAC;AAEnD,eAAO,MAAM,QAAQ,uBAA8B,CAAC;AAyBpD,eAAO,MAAM,WAAW,aAAoB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,aAAoB,CAAC;AAGnD,wBAAgB,aAAa,SAE5B;AAED,wBAAgB,WAAW,sCAE1B;AAED,wBAAgB,gBAAgB,SAE/B;AAED,wBAAgB,sBAAsB,SAErC;AAID,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,KAAK,GAAG,YAAY,GAAG,UAAU,CAAC,QAS5M;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,QAExC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAE9C;AAED,wBAAgB,aAAa,SAI5B;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGzD;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEhD;AAGD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAIhD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAElD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1D"}
@@ -34,8 +34,7 @@ function addCssFileContent(id, code, userOptions) {
34
34
  if (typeof code !== "string") {
35
35
  throw new Error(`Expected css to be loaded as a string, but got ${typeof code}`);
36
36
  }
37
- const normalizeId = id.startsWith(userOptions.moduleRootPath) ? id.slice(userOptions.moduleRootPath.length) : id;
38
- cssFiles.set(normalizeId, createCssProps({
37
+ cssFiles.set(id, createCssProps({
39
38
  id,
40
39
  code,
41
40
  userOptions
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sources":["../../../../plugin/worker/rsc/state.ts"],"sourcesContent":["import { workerData } from \"node:worker_threads\";\nimport { createCssProps } from \"../../helpers/createCssProps.js\";\nimport type { CssContent, ResolvedUserOptions, HmrState } from \"../../types.js\";\nimport type { PassThrough } from \"node:stream\";\nimport { relative } from \"node:path\";\n\n\n// Track active RSC streams\nexport const activeStreams = new Map<string, PassThrough>();\n\n// Track CSS files\nexport const cssFiles = new Map<string, CssContent>();\n\n// Track module IDs\nexport const moduleIds = new Map<string, string>();\n\nexport const hmrState = new Map<string, HmrState>();\n\nif(workerData) {\n if(workerData.hmrPort) {\n workerData.hmrPort.on('message', (msg: { type: string; path: string; routes?: string[] }) => {\n if(msg.type === 'HMR_UPDATE') {\n // Normalize the path relative to project root\n const normalizedPath = relative(workerData.userOptions.projectRoot, msg.path);\n hmrState.set(normalizedPath, { \n timestamp: Date.now(), \n invalidated: true,\n routes: msg.routes || []\n });\n } else if(msg.type === 'HMR_ACCEPT') {\n // Normalize the path relative to project root\n const normalizedPath = relative(workerData.userOptions.projectRoot, msg.path);\n hmrState.delete(normalizedPath);\n }\n });\n }\n} else {\n throw new Error(\"This module must be run with workerData\");\n}\n\n// Create shared CSS registry\nexport const clientFiles = new Set<string>();\nexport const serverActionFiles = new Set<string>();\n\n// Helper functions\nexport function clearCssFiles() {\n cssFiles.clear();\n}\n\nexport function getCssFiles() {\n return cssFiles.entries();\n}\n\nexport function clearClientFiles() {\n clientFiles.clear();\n}\n\nexport function clearServerActionFiles() {\n serverActionFiles.clear();\n}\n\nexport function addCssFile(id: string, cssFile: CssContent) {\n cssFiles.set(id, cssFile);\n}\n\n\nexport function addCssFileContent(id: string, code: string, userOptions: Pick<ResolvedUserOptions, \"projectRoot\" | \"moduleBaseURL\" | \"moduleBasePath\" | \"moduleRootPath\" | \"css\">) {\n if(typeof code !== \"string\"){\n throw new Error(`Expected css to be loaded as a string, but got ${typeof code}`);\n }\n const normalizeId = id.startsWith(userOptions.moduleRootPath) ? id.slice(userOptions.moduleRootPath.length) : id;\n cssFiles.set(normalizeId, createCssProps({\n id,\n code,\n userOptions\n }));\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}\n\n// Helper to check if a module is invalidated\nexport function isModuleInvalidated(path: string): boolean {\n const state = hmrState.get(path);\n return state?.invalidated || false;\n}\n\n// Helper to clear HMR state for a module\nexport function clearHmrState(path: string): void {\n hmrState.delete(path);\n}\n\n// Helper to get all invalidated modules\nexport function getInvalidatedModules(): string[] {\n return Array.from(hmrState.entries())\n .filter(([_, state]) => state.invalidated)\n .map(([path]) => path);\n}\n\nexport function addModuleId(id: string, url: string) {\n moduleIds.set(id, url);\n}\n\nexport function getModuleId(id: string): string | undefined {\n return moduleIds.get(id);\n} "],"names":[],"mappings":";;;;;;;;;AAQa,MAAA,aAAA,uBAAoB,GAAyB;AAG7C,MAAA,QAAA,uBAAe,GAAwB;AAGvC,MAAA,SAAA,uBAAgB,GAAoB;AAEpC,MAAA,QAAA,uBAAe,GAAsB;AAElD,IAAG,UAAY,EAAA;AACb,EAAA,IAAG,WAAW,OAAS,EAAA;AACrB,IAAA,UAAA,CAAW,OAAQ,CAAA,EAAA,CAAG,SAAW,EAAA,CAAC,GAA2D,KAAA;AAC3F,MAAG,IAAA,GAAA,CAAI,SAAS,YAAc,EAAA;AAE5B,QAAA,MAAM,iBAAiB,QAAS,CAAA,UAAA,CAAW,WAAY,CAAA,WAAA,EAAa,IAAI,IAAI,CAAA;AAC5E,QAAA,QAAA,CAAS,IAAI,cAAgB,EAAA;AAAA,UAC3B,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,UACpB,WAAa,EAAA,IAAA;AAAA,UACb,MAAA,EAAQ,GAAI,CAAA,MAAA,IAAU;AAAC,SACxB,CAAA;AAAA,OACH,MAAA,IAAU,GAAI,CAAA,IAAA,KAAS,YAAc,EAAA;AAEnC,QAAA,MAAM,iBAAiB,QAAS,CAAA,UAAA,CAAW,WAAY,CAAA,WAAA,EAAa,IAAI,IAAI,CAAA;AAC5E,QAAA,QAAA,CAAS,OAAO,cAAc,CAAA;AAAA;AAChC,KACD,CAAA;AAAA;AAEL,CAAO,MAAA;AACL,EAAM,MAAA,IAAI,MAAM,yCAAyC,CAAA;AAC3D;AA4BO,SAAS,iBAAA,CAAkB,EAAY,EAAA,IAAA,EAAc,WAAuH,EAAA;AACjL,EAAG,IAAA,OAAO,SAAS,QAAS,EAAA;AAC1B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAkD,+CAAA,EAAA,OAAO,IAAI,CAAE,CAAA,CAAA;AAAA;AAEjF,EAAM,MAAA,WAAA,GAAc,EAAG,CAAA,UAAA,CAAW,WAAY,CAAA,cAAc,CAAI,GAAA,EAAA,CAAG,KAAM,CAAA,WAAA,CAAY,cAAe,CAAA,MAAM,CAAI,GAAA,EAAA;AAC9G,EAAS,QAAA,CAAA,GAAA,CAAI,aAAa,cAAe,CAAA;AAAA,IACvC,EAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAC,CAAA;AACJ;AAkCO,SAAS,WAAA,CAAY,IAAY,GAAa,EAAA;AACnD,EAAU,SAAA,CAAA,GAAA,CAAI,IAAI,GAAG,CAAA;AACvB;;;;"}
1
+ {"version":3,"file":"state.js","sources":["../../../../plugin/worker/rsc/state.ts"],"sourcesContent":["import { workerData } from \"node:worker_threads\";\nimport { createCssProps } from \"../../helpers/createCssProps.js\";\nimport type { CssContent, ResolvedUserOptions, HmrState } from \"../../types.js\";\nimport type { PassThrough } from \"node:stream\";\nimport { relative } from \"node:path\";\n\n\n// Track active RSC streams\nexport const activeStreams = new Map<string, PassThrough>();\n\n// Track CSS files\nexport const cssFiles = new Map<string, CssContent>();\n\n// Track module IDs\nexport const moduleIds = new Map<string, string>();\n\nexport const hmrState = new Map<string, HmrState>();\n\nif(workerData) {\n if(workerData.hmrPort) {\n workerData.hmrPort.on('message', (msg: { type: string; path: string; routes?: string[] }) => {\n if(msg.type === 'HMR_UPDATE') {\n // Normalize the path relative to project root\n const normalizedPath = relative(workerData.userOptions.projectRoot, msg.path);\n hmrState.set(normalizedPath, { \n timestamp: Date.now(), \n invalidated: true,\n routes: msg.routes || []\n });\n } else if(msg.type === 'HMR_ACCEPT') {\n // Normalize the path relative to project root\n const normalizedPath = relative(workerData.userOptions.projectRoot, msg.path);\n hmrState.delete(normalizedPath);\n }\n });\n }\n} else {\n throw new Error(\"This module must be run with workerData\");\n}\n\n// Create shared CSS registry\nexport const clientFiles = new Set<string>();\nexport const serverActionFiles = new Set<string>();\n\n// Helper functions\nexport function clearCssFiles() {\n cssFiles.clear();\n}\n\nexport function getCssFiles() {\n return cssFiles.entries();\n}\n\nexport function clearClientFiles() {\n clientFiles.clear();\n}\n\nexport function clearServerActionFiles() {\n serverActionFiles.clear();\n}\n\n\n\nexport function addCssFileContent(id: string, code: string, userOptions: Pick<ResolvedUserOptions, \"projectRoot\" | \"moduleBaseURL\" | \"moduleBasePath\" | \"moduleRootPath\" | \"css\" | \"normalizer\" | \"moduleID\">) {\n if(typeof code !== \"string\"){\n throw new Error(`Expected css to be loaded as a string, but got ${typeof code}`);\n }\n cssFiles.set(id, createCssProps({\n id,\n code,\n userOptions\n }));\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}\n\n// Helper to check if a module is invalidated\nexport function isModuleInvalidated(path: string): boolean {\n const state = hmrState.get(path);\n return state?.invalidated || false;\n}\n\n// Helper to clear HMR state for a module\nexport function clearHmrState(path: string): void {\n hmrState.delete(path);\n}\n\n// Helper to get all invalidated modules\nexport function getInvalidatedModules(): string[] {\n return Array.from(hmrState.entries())\n .filter(([_, state]) => state.invalidated)\n .map(([path]) => path);\n}\n\nexport function addModuleId(id: string, url: string) {\n moduleIds.set(id, url);\n}\n\nexport function getModuleId(id: string): string | undefined {\n return moduleIds.get(id);\n} "],"names":[],"mappings":";;;;;;;;;AAQa,MAAA,aAAA,uBAAoB,GAAyB;AAG7C,MAAA,QAAA,uBAAe,GAAwB;AAGvC,MAAA,SAAA,uBAAgB,GAAoB;AAEpC,MAAA,QAAA,uBAAe,GAAsB;AAElD,IAAG,UAAY,EAAA;AACb,EAAA,IAAG,WAAW,OAAS,EAAA;AACrB,IAAA,UAAA,CAAW,OAAQ,CAAA,EAAA,CAAG,SAAW,EAAA,CAAC,GAA2D,KAAA;AAC3F,MAAG,IAAA,GAAA,CAAI,SAAS,YAAc,EAAA;AAE5B,QAAA,MAAM,iBAAiB,QAAS,CAAA,UAAA,CAAW,WAAY,CAAA,WAAA,EAAa,IAAI,IAAI,CAAA;AAC5E,QAAA,QAAA,CAAS,IAAI,cAAgB,EAAA;AAAA,UAC3B,SAAA,EAAW,KAAK,GAAI,EAAA;AAAA,UACpB,WAAa,EAAA,IAAA;AAAA,UACb,MAAA,EAAQ,GAAI,CAAA,MAAA,IAAU;AAAC,SACxB,CAAA;AAAA,OACH,MAAA,IAAU,GAAI,CAAA,IAAA,KAAS,YAAc,EAAA;AAEnC,QAAA,MAAM,iBAAiB,QAAS,CAAA,UAAA,CAAW,WAAY,CAAA,WAAA,EAAa,IAAI,IAAI,CAAA;AAC5E,QAAA,QAAA,CAAS,OAAO,cAAc,CAAA;AAAA;AAChC,KACD,CAAA;AAAA;AAEL,CAAO,MAAA;AACL,EAAM,MAAA,IAAI,MAAM,yCAAyC,CAAA;AAC3D;AAyBO,SAAS,iBAAA,CAAkB,EAAY,EAAA,IAAA,EAAc,WAAmJ,EAAA;AAC7M,EAAG,IAAA,OAAO,SAAS,QAAS,EAAA;AAC1B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAkD,+CAAA,EAAA,OAAO,IAAI,CAAE,CAAA,CAAA;AAAA;AAEjF,EAAS,QAAA,CAAA,GAAA,CAAI,IAAI,cAAe,CAAA;AAAA,IAC9B,EAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACD,CAAC,CAAA;AACJ;AAkCO,SAAS,WAAA,CAAY,IAAY,GAAa,EAAA;AACnD,EAAU,SAAA,CAAA,GAAA,CAAI,IAAI,GAAG,CAAA;AACvB;;;;"}
@@ -0,0 +1,2 @@
1
+ export declare const userOptions: import("../../types.js").ResolvedUserOptions<import("../../types.js").PagePropOpt, import("../../types.js").InlineCssOpt>;
2
+ //# sourceMappingURL=userOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userOptions.d.ts","sourceRoot":"","sources":["../../../../plugin/worker/rsc/userOptions.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,WAAW,2HAAgC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
5
+ */
6
+ import { resolveOptions } from '../../config/resolveOptions.js';
7
+ import { hydrateUserOptions } from '../../helpers/serializeUserOptions.js';
8
+ import { workerData } from 'node:worker_threads';
9
+
10
+ const userOptionsResult = resolveOptions(hydrateUserOptions(workerData.userOptions));
11
+ if (userOptionsResult.type === "error") {
12
+ throw userOptionsResult.error;
13
+ }
14
+ const userOptions = userOptionsResult.userOptions;
15
+
16
+ export { userOptions };
17
+ //# sourceMappingURL=userOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userOptions.js","sources":["../../../../plugin/worker/rsc/userOptions.ts"],"sourcesContent":["import { resolveOptions } from \"../../config/index.js\";\nimport { hydrateUserOptions } from \"../../helpers/index.js\";\nimport { workerData } from \"node:worker_threads\";\nconst userOptionsResult = resolveOptions(hydrateUserOptions(workerData.userOptions));\nif(userOptionsResult.type === \"error\") {\n throw userOptionsResult.error;\n}\nexport const userOptions = userOptionsResult.userOptions;"],"names":[],"mappings":";;;;;;;;;AAGA,MAAM,iBAAoB,GAAA,cAAA,CAAe,kBAAmB,CAAA,UAAA,CAAW,WAAW,CAAC,CAAA;AACnF,IAAG,iBAAA,CAAkB,SAAS,OAAS,EAAA;AACrC,EAAA,MAAM,iBAAkB,CAAA,KAAA;AAC1B;AACO,MAAM,cAAc,iBAAkB,CAAA;;;;"}