react-server-dom-rspack 0.0.1-alpha.1 → 0.0.1-alpha.3

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 (57) hide show
  1. package/dist/client.browser.d.ts +23 -0
  2. package/dist/client.browser.js +41 -0
  3. package/dist/client.d.ts +1 -0
  4. package/dist/client.edge.d.ts +28 -0
  5. package/dist/client.edge.js +27 -0
  6. package/dist/client.js +1 -0
  7. package/dist/client.node.d.ts +11 -0
  8. package/dist/client.node.js +10 -0
  9. package/dist/index.d.ts +0 -0
  10. package/dist/index.js +2 -0
  11. package/dist/server.browser.d.ts +0 -0
  12. package/dist/server.browser.js +2 -0
  13. package/dist/server.d.ts +0 -0
  14. package/dist/server.edge.d.ts +29 -0
  15. package/dist/server.edge.js +44 -0
  16. package/dist/server.js +3 -0
  17. package/dist/server.node.d.ts +30 -0
  18. package/dist/server.node.js +48 -0
  19. package/dist/types.d.ts +41 -0
  20. package/dist/types.js +1 -0
  21. package/package.json +122 -12
  22. package/vendor/react-server-dom-webpack/LICENSE +21 -0
  23. package/vendor/react-server-dom-webpack/README.md +5 -0
  24. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js +5006 -0
  25. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.production.js +1947 -0
  26. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js +4987 -0
  27. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.production.js +2128 -0
  28. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js +5130 -0
  29. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.production.js +2256 -0
  30. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-node-register.js +69 -0
  31. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-plugin.js +404 -0
  32. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +5515 -0
  33. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +3264 -0
  34. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +5617 -0
  35. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +3299 -0
  36. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +6403 -0
  37. package/vendor/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +3517 -0
  38. package/vendor/react-server-dom-webpack/client.browser.js +7 -0
  39. package/vendor/react-server-dom-webpack/client.edge.js +7 -0
  40. package/vendor/react-server-dom-webpack/client.js +3 -0
  41. package/vendor/react-server-dom-webpack/client.node.js +7 -0
  42. package/vendor/react-server-dom-webpack/esm/package.json +3 -0
  43. package/vendor/react-server-dom-webpack/esm/react-server-dom-webpack-node-loader.production.js +515 -0
  44. package/vendor/react-server-dom-webpack/index.js +12 -0
  45. package/vendor/react-server-dom-webpack/node-register.js +3 -0
  46. package/vendor/react-server-dom-webpack/package.json +96 -0
  47. package/vendor/react-server-dom-webpack/plugin.js +3 -0
  48. package/vendor/react-server-dom-webpack/server.browser.js +17 -0
  49. package/vendor/react-server-dom-webpack/server.edge.js +18 -0
  50. package/vendor/react-server-dom-webpack/server.js +6 -0
  51. package/vendor/react-server-dom-webpack/server.node.js +20 -0
  52. package/vendor/react-server-dom-webpack/static.browser.js +10 -0
  53. package/vendor/react-server-dom-webpack/static.edge.js +10 -0
  54. package/vendor/react-server-dom-webpack/static.js +6 -0
  55. package/vendor/react-server-dom-webpack/static.node.js +11 -0
  56. package/dist/client.mjs +0 -19
  57. package/dist/server.mjs +0 -11
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @license React
3
+ * react-server-dom-webpack-node-register.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+
11
+ "use strict";
12
+ const acorn = require("acorn-loose"),
13
+ url = require("url"),
14
+ Module = require("module");
15
+ module.exports = function () {
16
+ const Server = require("react-server-dom-webpack/server"),
17
+ registerServerReference = Server.registerServerReference,
18
+ createClientModuleProxy = Server.createClientModuleProxy,
19
+ originalCompile = Module.prototype._compile;
20
+ Module.prototype._compile = function (content, filename) {
21
+ if (
22
+ -1 === content.indexOf("use client") &&
23
+ -1 === content.indexOf("use server")
24
+ )
25
+ return originalCompile.apply(this, arguments);
26
+ try {
27
+ var body = acorn.parse(content, {
28
+ ecmaVersion: "2024",
29
+ sourceType: "source"
30
+ }).body;
31
+ } catch (x) {
32
+ return (
33
+ console.error("Error parsing %s %s", url, x.message),
34
+ originalCompile.apply(this, arguments)
35
+ );
36
+ }
37
+ var useClient = !1,
38
+ useServer = !1;
39
+ for (var i = 0; i < body.length; i++) {
40
+ var node = body[i];
41
+ if ("ExpressionStatement" !== node.type || !node.directive) break;
42
+ "use client" === node.directive && (useClient = !0);
43
+ "use server" === node.directive && (useServer = !0);
44
+ }
45
+ if (!useClient && !useServer) return originalCompile.apply(this, arguments);
46
+ if (useClient && useServer)
47
+ throw Error(
48
+ 'Cannot have both "use client" and "use server" directives in the same file.'
49
+ );
50
+ useClient &&
51
+ ((body = url.pathToFileURL(filename).href),
52
+ (this.exports = createClientModuleProxy(body)));
53
+ if (useServer)
54
+ if (
55
+ (originalCompile.apply(this, arguments),
56
+ (useServer = url.pathToFileURL(filename).href),
57
+ (body = this.exports),
58
+ "function" === typeof body)
59
+ )
60
+ registerServerReference(body, useServer, null);
61
+ else
62
+ for (useClient = Object.keys(body), i = 0; i < useClient.length; i++) {
63
+ node = useClient[i];
64
+ const value = body[useClient[i]];
65
+ "function" === typeof value &&
66
+ registerServerReference(value, useServer, node);
67
+ }
68
+ };
69
+ };
@@ -0,0 +1,404 @@
1
+ /**
2
+ * @license React
3
+ * react-server-dom-webpack-plugin.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+
11
+ "use strict";
12
+ var path = require("path"),
13
+ url = require("url"),
14
+ asyncLib = require("neo-async"),
15
+ acorn = require("acorn-loose"),
16
+ ModuleDependency = require("webpack/lib/dependencies/ModuleDependency"),
17
+ NullDependency = require("webpack/lib/dependencies/NullDependency"),
18
+ Template = require("webpack/lib/Template"),
19
+ webpack = require("webpack");
20
+ function _unsupportedIterableToArray(o, minLen) {
21
+ if (o) {
22
+ if ("string" === typeof o) return _arrayLikeToArray(o, minLen);
23
+ var n = Object.prototype.toString.call(o).slice(8, -1);
24
+ "Object" === n && o.constructor && (n = o.constructor.name);
25
+ if ("Map" === n || "Set" === n) return Array.from(o);
26
+ if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
27
+ return _arrayLikeToArray(o, minLen);
28
+ }
29
+ }
30
+ function _arrayLikeToArray(arr, len) {
31
+ if (null == len || len > arr.length) len = arr.length;
32
+ for (var i = 0, arr2 = Array(len); i < len; i++) arr2[i] = arr[i];
33
+ return arr2;
34
+ }
35
+ function _createForOfIteratorHelper(o, allowArrayLike) {
36
+ var it =
37
+ ("undefined" !== typeof Symbol && o[Symbol.iterator]) || o["@@iterator"];
38
+ if (!it) {
39
+ if (
40
+ Array.isArray(o) ||
41
+ (it = _unsupportedIterableToArray(o)) ||
42
+ (allowArrayLike && o && "number" === typeof o.length)
43
+ ) {
44
+ it && (o = it);
45
+ var i = 0;
46
+ allowArrayLike = function () {};
47
+ return {
48
+ s: allowArrayLike,
49
+ n: function () {
50
+ return i >= o.length ? { done: !0 } : { done: !1, value: o[i++] };
51
+ },
52
+ e: function (e) {
53
+ throw e;
54
+ },
55
+ f: allowArrayLike
56
+ };
57
+ }
58
+ throw new TypeError(
59
+ "Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
60
+ );
61
+ }
62
+ var normalCompletion = !0,
63
+ didErr = !1,
64
+ err;
65
+ return {
66
+ s: function () {
67
+ it = it.call(o);
68
+ },
69
+ n: function () {
70
+ var step = it.next();
71
+ normalCompletion = step.done;
72
+ return step;
73
+ },
74
+ e: function (e) {
75
+ didErr = !0;
76
+ err = e;
77
+ },
78
+ f: function () {
79
+ try {
80
+ normalCompletion || null == it.return || it.return();
81
+ } finally {
82
+ if (didErr) throw err;
83
+ }
84
+ }
85
+ };
86
+ }
87
+ const isArrayImpl = Array.isArray;
88
+ class ClientReferenceDependency extends ModuleDependency {
89
+ constructor(request) {
90
+ super(request);
91
+ }
92
+ get type() {
93
+ return "client-reference";
94
+ }
95
+ }
96
+ const clientFileName = require.resolve("../client.browser.js");
97
+ class ReactFlightWebpackPlugin {
98
+ constructor(options) {
99
+ this.serverConsumerManifestFilename =
100
+ this.clientManifestFilename =
101
+ this.chunkName =
102
+ this.clientReferences =
103
+ void 0;
104
+ if (!options || "boolean" !== typeof options.isServer)
105
+ throw Error(
106
+ "React Server Plugin: You must specify the isServer option as a boolean."
107
+ );
108
+ if (options.isServer) throw Error("TODO: Implement the server compiler.");
109
+ options.clientReferences
110
+ ? "string" !== typeof options.clientReferences &&
111
+ isArrayImpl(options.clientReferences)
112
+ ? (this.clientReferences = options.clientReferences)
113
+ : (this.clientReferences = [options.clientReferences])
114
+ : (this.clientReferences = [
115
+ { directory: ".", recursive: !0, include: /\.(js|ts|jsx|tsx)$/ }
116
+ ]);
117
+ "string" === typeof options.chunkName
118
+ ? ((this.chunkName = options.chunkName),
119
+ /\[(index|request)\]/.test(this.chunkName) ||
120
+ (this.chunkName += "[index]"))
121
+ : (this.chunkName = "client[index]");
122
+ this.clientManifestFilename =
123
+ options.clientManifestFilename || "react-client-manifest.json";
124
+ this.serverConsumerManifestFilename =
125
+ options.serverConsumerManifestFilename || "react-ssr-manifest.json";
126
+ }
127
+ apply(compiler) {
128
+ const _this = this;
129
+ let resolvedClientReferences,
130
+ clientFileNameFound = !1;
131
+ compiler.hooks.beforeCompile.tapAsync(
132
+ "React Server Plugin",
133
+ (_ref, callback) => {
134
+ _ref = _ref.contextModuleFactory;
135
+ const contextResolver = compiler.resolverFactory.get("context", {}),
136
+ normalResolver = compiler.resolverFactory.get("normal");
137
+ _this.resolveAllClientFiles(
138
+ compiler.context,
139
+ contextResolver,
140
+ normalResolver,
141
+ compiler.inputFileSystem,
142
+ _ref,
143
+ function (err, resolvedClientRefs) {
144
+ err
145
+ ? callback(err)
146
+ : ((resolvedClientReferences = resolvedClientRefs), callback());
147
+ }
148
+ );
149
+ }
150
+ );
151
+ compiler.hooks.thisCompilation.tap(
152
+ "React Server Plugin",
153
+ (compilation, _ref2) => {
154
+ _ref2 = _ref2.normalModuleFactory;
155
+ compilation.dependencyFactories.set(ClientReferenceDependency, _ref2);
156
+ compilation.dependencyTemplates.set(
157
+ ClientReferenceDependency,
158
+ new NullDependency.Template()
159
+ );
160
+ compilation = (parser) => {
161
+ parser.hooks.program.tap("React Server Plugin", () => {
162
+ const module = parser.state.module;
163
+ if (
164
+ module.resource === clientFileName &&
165
+ ((clientFileNameFound = !0), resolvedClientReferences)
166
+ )
167
+ for (let i = 0; i < resolvedClientReferences.length; i++) {
168
+ const dep = resolvedClientReferences[i];
169
+ var chunkName = _this.chunkName
170
+ .replace(/\[index\]/g, "" + i)
171
+ .replace(/\[request\]/g, Template.toPath(dep.userRequest));
172
+ chunkName = new webpack.AsyncDependenciesBlock(
173
+ { name: chunkName },
174
+ null,
175
+ dep.request
176
+ );
177
+ chunkName.addDependency(dep);
178
+ module.addBlock(chunkName);
179
+ }
180
+ });
181
+ };
182
+ _ref2.hooks.parser
183
+ .for("javascript/auto")
184
+ .tap("HarmonyModulesPlugin", compilation);
185
+ _ref2.hooks.parser
186
+ .for("javascript/esm")
187
+ .tap("HarmonyModulesPlugin", compilation);
188
+ _ref2.hooks.parser
189
+ .for("javascript/dynamic")
190
+ .tap("HarmonyModulesPlugin", compilation);
191
+ }
192
+ );
193
+ compiler.hooks.make.tap("React Server Plugin", (compilation) => {
194
+ compilation.hooks.processAssets.tap(
195
+ {
196
+ name: "React Server Plugin",
197
+ stage: webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT
198
+ },
199
+ function () {
200
+ if (!1 === clientFileNameFound)
201
+ compilation.warnings.push(
202
+ new webpack.WebpackError(
203
+ "Client runtime at react-server-dom-webpack/client was not found. React Server Components module map file " +
204
+ _this.clientManifestFilename +
205
+ " was not created."
206
+ )
207
+ );
208
+ else {
209
+ var configuredCrossOriginLoading =
210
+ compilation.outputOptions.crossOriginLoading;
211
+ configuredCrossOriginLoading =
212
+ "string" === typeof configuredCrossOriginLoading
213
+ ? "use-credentials" === configuredCrossOriginLoading
214
+ ? configuredCrossOriginLoading
215
+ : "anonymous"
216
+ : null;
217
+ var resolvedClientFiles = new Set(
218
+ (resolvedClientReferences || []).map((ref) => ref.request)
219
+ ),
220
+ clientManifest = {},
221
+ moduleMap = {};
222
+ configuredCrossOriginLoading = {
223
+ moduleLoading: {
224
+ prefix: compilation.outputOptions.publicPath || "",
225
+ crossOrigin: configuredCrossOriginLoading
226
+ },
227
+ moduleMap
228
+ };
229
+ var runtimeChunkFiles = new Set();
230
+ compilation.entrypoints.forEach((entrypoint) => {
231
+ (entrypoint = entrypoint.getRuntimeChunk()) &&
232
+ entrypoint.files.forEach((runtimeFile) => {
233
+ runtimeChunkFiles.add(runtimeFile);
234
+ });
235
+ });
236
+ compilation.chunkGroups.forEach(function (chunkGroup) {
237
+ function recordModule(id, module) {
238
+ if (
239
+ resolvedClientFiles.has(module.resource) &&
240
+ ((module = url.pathToFileURL(module.resource).href),
241
+ void 0 !== module)
242
+ ) {
243
+ const ssrExports = {};
244
+ clientManifest[module] = { id, chunks, name: "*" };
245
+ ssrExports["*"] = { specifier: module, name: "*" };
246
+ moduleMap[id] = ssrExports;
247
+ }
248
+ }
249
+ const chunks = [];
250
+ chunkGroup.chunks.forEach(function (c) {
251
+ var _iterator = _createForOfIteratorHelper(c.files),
252
+ _step;
253
+ try {
254
+ for (_iterator.s(); !(_step = _iterator.n()).done; ) {
255
+ const file = _step.value;
256
+ if (!file.endsWith(".js") && !file.endsWith(".mjs")) break;
257
+ if (
258
+ file.endsWith(".hot-update.js") ||
259
+ file.endsWith(".hot-update.mjs")
260
+ )
261
+ break;
262
+ chunks.push(c.id, file);
263
+ break;
264
+ }
265
+ } catch (err) {
266
+ _iterator.e(err);
267
+ } finally {
268
+ _iterator.f();
269
+ }
270
+ });
271
+ chunkGroup.chunks.forEach(function (chunk) {
272
+ chunk = compilation.chunkGraph.getChunkModulesIterable(chunk);
273
+ Array.from(chunk).forEach(function (module) {
274
+ const moduleId = compilation.chunkGraph.getModuleId(module);
275
+ recordModule(moduleId, module);
276
+ module.modules &&
277
+ module.modules.forEach((concatenatedMod) => {
278
+ recordModule(moduleId, concatenatedMod);
279
+ });
280
+ });
281
+ });
282
+ });
283
+ var clientOutput = JSON.stringify(clientManifest, null, 2);
284
+ compilation.emitAsset(
285
+ _this.clientManifestFilename,
286
+ new webpack.sources.RawSource(clientOutput, !1)
287
+ );
288
+ configuredCrossOriginLoading = JSON.stringify(
289
+ configuredCrossOriginLoading,
290
+ null,
291
+ 2
292
+ );
293
+ compilation.emitAsset(
294
+ _this.serverConsumerManifestFilename,
295
+ new webpack.sources.RawSource(configuredCrossOriginLoading, !1)
296
+ );
297
+ }
298
+ }
299
+ );
300
+ });
301
+ }
302
+ resolveAllClientFiles(
303
+ context,
304
+ contextResolver,
305
+ normalResolver,
306
+ fs,
307
+ contextModuleFactory,
308
+ callback
309
+ ) {
310
+ function hasUseClientDirective(source) {
311
+ if (-1 === source.indexOf("use client")) return !1;
312
+ let body;
313
+ try {
314
+ body = acorn.parse(source, {
315
+ ecmaVersion: "2024",
316
+ sourceType: "module"
317
+ }).body;
318
+ } catch (x) {
319
+ return !1;
320
+ }
321
+ for (source = 0; source < body.length; source++) {
322
+ const node = body[source];
323
+ if ("ExpressionStatement" !== node.type || !node.directive) break;
324
+ if ("use client" === node.directive) return !0;
325
+ }
326
+ return !1;
327
+ }
328
+ asyncLib.map(
329
+ this.clientReferences,
330
+ (clientReferencePath, cb) => {
331
+ "string" === typeof clientReferencePath
332
+ ? cb(null, [new ClientReferenceDependency(clientReferencePath)])
333
+ : contextResolver.resolve(
334
+ {},
335
+ context,
336
+ clientReferencePath.directory,
337
+ {},
338
+ (err, resolvedDirectory) => {
339
+ if (err) return cb(err);
340
+ contextModuleFactory.resolveDependencies(
341
+ fs,
342
+ {
343
+ resource: resolvedDirectory,
344
+ resourceQuery: "",
345
+ recursive:
346
+ void 0 === clientReferencePath.recursive
347
+ ? !0
348
+ : clientReferencePath.recursive,
349
+ regExp: clientReferencePath.include,
350
+ include: void 0,
351
+ exclude: clientReferencePath.exclude
352
+ },
353
+ (err2, deps) => {
354
+ if (err2) return cb(err2);
355
+ err2 = deps.map((dep) => {
356
+ var request = path.join(
357
+ resolvedDirectory,
358
+ dep.userRequest
359
+ );
360
+ request = new ClientReferenceDependency(request);
361
+ request.userRequest = dep.userRequest;
362
+ return request;
363
+ });
364
+ asyncLib.filter(
365
+ err2,
366
+ (clientRefDep, filterCb) => {
367
+ normalResolver.resolve(
368
+ {},
369
+ context,
370
+ clientRefDep.request,
371
+ {},
372
+ (err3, resolvedPath) => {
373
+ if (err3 || "string" !== typeof resolvedPath)
374
+ return filterCb(null, !1);
375
+ fs.readFile(
376
+ resolvedPath,
377
+ "utf-8",
378
+ (err4, content) => {
379
+ if (err4 || "string" !== typeof content)
380
+ return filterCb(null, !1);
381
+ err4 = hasUseClientDirective(content);
382
+ filterCb(null, err4);
383
+ }
384
+ );
385
+ }
386
+ );
387
+ },
388
+ cb
389
+ );
390
+ }
391
+ );
392
+ }
393
+ );
394
+ },
395
+ (err, result) => {
396
+ if (err) return callback(err);
397
+ err = [];
398
+ for (let i = 0; i < result.length; i++) err.push.apply(err, result[i]);
399
+ callback(null, err);
400
+ }
401
+ );
402
+ }
403
+ }
404
+ module.exports = ReactFlightWebpackPlugin;