@vitejs/plugin-rsc 0.5.27 → 0.5.29

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 (66) hide show
  1. package/README.md +44 -18
  2. package/dist/browser.d.ts +3 -3
  3. package/dist/{cjs-BspwazE6.js → cjs-Cxg_7upE.js} +3 -3
  4. package/dist/client-Bhch3O41.d.ts +19 -0
  5. package/dist/client-reference-CCekXxax.js +16 -0
  6. package/dist/client-reference-DT0MYgPn.d.ts +8 -0
  7. package/dist/core/browser.d.ts +1 -1
  8. package/dist/core/browser.js +2 -2
  9. package/dist/core/plugin.d.ts +0 -1
  10. package/dist/core/rsc.d.ts +2 -20
  11. package/dist/core/rsc.js +20 -4
  12. package/dist/core/ssr.d.ts +1 -2
  13. package/dist/core/ssr.js +2 -2
  14. package/dist/{encryption-utils-CRBgMeBq.js → encryption-utils-BNbYHtC4.js} +1 -1
  15. package/dist/{index-DViteJjw.d.ts → index-BjJe9jqG.d.ts} +35 -12
  16. package/dist/{index-BrXJaflA.d.ts → index-C5IY2S-e.d.ts} +16 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.js +1 -1
  19. package/dist/{picocolors-CEw5D0BV.js → picocolors-nYPB6lHj.js} +4 -2
  20. package/dist/{plugin-Bm-Fb4g7.d.ts → plugin-CaLiN8ED.d.ts} +71 -64
  21. package/dist/{plugin-BK29Va7z.js → plugin-DPZnhMn5.js} +30 -15
  22. package/dist/plugin.d.ts +2 -2
  23. package/dist/plugin.js +1 -1
  24. package/dist/plugins/cjs.d.ts +0 -1
  25. package/dist/plugins/cjs.js +1 -1
  26. package/dist/react/browser.d.ts +2 -3
  27. package/dist/react/rsc/client.d.ts +2 -0
  28. package/dist/react/rsc/client.js +16 -0
  29. package/dist/react/rsc/server.d.ts +3 -0
  30. package/dist/react/rsc/server.js +20 -0
  31. package/dist/react/rsc/static.d.ts +6 -0
  32. package/dist/react/rsc/static.js +8 -0
  33. package/dist/react/rsc.d.ts +3 -24
  34. package/dist/react/rsc.js +3 -31
  35. package/dist/react/ssr.d.ts +4 -3
  36. package/dist/react/ssr.js +3 -1
  37. package/dist/rsc/client.d.ts +2 -0
  38. package/dist/rsc/client.js +3 -0
  39. package/dist/rsc/server.d.ts +12 -0
  40. package/dist/rsc/server.js +10 -0
  41. package/dist/rsc/static.d.ts +11 -0
  42. package/dist/rsc/static.js +9 -0
  43. package/dist/rsc-C3UdJLOW.d.ts +20 -0
  44. package/dist/rsc.d.ts +4 -16
  45. package/dist/rsc.js +4 -41
  46. package/dist/{scope-Bwt9GVLP.js → scope-Do08R7C2.js} +1 -1
  47. package/dist/server-ZBjqNTqU.d.ts +13 -0
  48. package/dist/shared-D42sHPD1.js +25 -0
  49. package/dist/{shared-BVLpj0Y8.js → shared-Y4B6DJ99.js} +2 -1
  50. package/dist/ssr.d.ts +12 -12
  51. package/dist/ssr.js +12 -7
  52. package/dist/transforms/index.d.ts +1 -1
  53. package/dist/transforms/index.js +39 -28
  54. package/dist/utils/encryption-runtime.js +5 -5
  55. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-client.browser.development.js +2 -2
  56. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.browser.development.js +29 -29
  57. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.browser.production.js +26 -29
  58. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.edge.development.js +31 -31
  59. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.edge.production.js +30 -33
  60. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.node.development.js +101 -64
  61. package/dist/vendor/react-server-dom/cjs/react-server-dom-webpack-server.node.production.js +99 -62
  62. package/dist/vendor/react-server-dom/package.json +5 -5
  63. package/package.json +11 -11
  64. /package/dist/{browser-C_qguV-a.d.ts → browser-DI_Wyg5Y.d.ts} +0 -0
  65. /package/dist/{dist-rz-Bnebz.js → dist-uqdtSkzK.js} +0 -0
  66. /package/dist/{shared-DeahDSXi.js → shared-B6H2TbnP.js} +0 -0
@@ -14,8 +14,9 @@ var stream = require("stream"),
14
14
  require("crypto");
15
15
  var async_hooks = require("async_hooks"),
16
16
  ReactDOM = require("react-dom"),
17
- React = require("react"),
18
- REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"),
17
+ React = require("react");
18
+ function noop() {}
19
+ var REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"),
19
20
  REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
20
21
  REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
21
22
  REACT_CONTEXT_TYPE = Symbol.for("react.context"),
@@ -575,7 +576,6 @@ function createTemporaryReference(temporaryReferences, id) {
575
576
  temporaryReferences.set(reference, id);
576
577
  return reference;
577
578
  }
578
- function noop() {}
579
579
  var SuspenseException = Error(
580
580
  "Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\n\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`."
581
581
  );
@@ -1074,7 +1074,7 @@ function serializeAsyncIterable(request, task, iterable, iterator) {
1074
1074
  erroredTask(request, streamTask, reason),
1075
1075
  enqueueFlush(request),
1076
1076
  "function" === typeof iterator.throw &&
1077
- iterator.throw(reason).then(error, error));
1077
+ iterator.throw(reason).then(noop, noop));
1078
1078
  }
1079
1079
  function abortIterable() {
1080
1080
  if (0 === streamTask.status) {
@@ -1088,7 +1088,7 @@ function serializeAsyncIterable(request, task, iterable, iterator) {
1088
1088
  : (erroredTask(request, streamTask, signal.reason),
1089
1089
  enqueueFlush(request));
1090
1090
  "function" === typeof iterator.throw &&
1091
- iterator.throw(reason).then(error, error);
1091
+ iterator.throw(reason).then(noop, noop);
1092
1092
  }
1093
1093
  }
1094
1094
  iterable = iterable === iterator;
@@ -3480,44 +3480,41 @@ exports.createTemporaryReferenceSet = function () {
3480
3480
  };
3481
3481
  exports.decodeAction = function (body, serverManifest) {
3482
3482
  var formData = new FormData(),
3483
- action = null,
3484
- seenActions = new Set();
3483
+ maybeActionKey = null;
3485
3484
  body.forEach(function (value, key) {
3486
3485
  key.startsWith("$ACTION_")
3487
3486
  ? key.startsWith("$ACTION_REF_")
3488
- ? seenActions.has(key) ||
3489
- (seenActions.add(key),
3490
- (value = "$ACTION_" + key.slice(12) + ":"),
3491
- (value = decodeBoundActionMetaData(body, serverManifest, value)),
3492
- (action = loadServerReference(serverManifest, value)))
3493
- : key.startsWith("$ACTION_ID_") &&
3494
- !seenActions.has(key) &&
3495
- (seenActions.add(key),
3496
- (value = key.slice(11)),
3497
- (action = loadServerReference(serverManifest, {
3498
- id: value,
3499
- bound: null
3500
- })))
3487
+ ? (maybeActionKey = key)
3488
+ : key.startsWith("$ACTION_ID_") && (maybeActionKey = key)
3501
3489
  : formData.append(key, value);
3502
3490
  });
3503
- return null === action
3504
- ? null
3505
- : action.then(function (fn) {
3506
- return fn.bind(null, formData);
3507
- });
3491
+ if (null === maybeActionKey) return null;
3492
+ var actionKey = maybeActionKey,
3493
+ action = null;
3494
+ if (actionKey.startsWith("$ACTION_REF_"))
3495
+ (actionKey = "$ACTION_" + actionKey.slice(12) + ":"),
3496
+ (body = decodeBoundActionMetaData(body, serverManifest, actionKey)),
3497
+ (action = loadServerReference(serverManifest, body));
3498
+ else if (actionKey.startsWith("$ACTION_ID_"))
3499
+ (body = actionKey.slice(11)),
3500
+ (action = loadServerReference(serverManifest, { id: body, bound: null }));
3501
+ else throw Error("Cannot handle action key. This is a bug in React.");
3502
+ return action.then(function (fn) {
3503
+ return fn.bind(null, formData);
3504
+ });
3508
3505
  };
3509
3506
  exports.decodeFormState = function (actionResult, body, serverManifest) {
3510
3507
  var keyPath = body.get("$ACTION_KEY");
3511
3508
  if ("string" !== typeof keyPath) return Promise.resolve(null);
3512
- var metaData = null;
3509
+ var actionKey = null;
3513
3510
  body.forEach(function (value, key) {
3514
- key.startsWith("$ACTION_REF_") &&
3515
- ((value = "$ACTION_" + key.slice(12) + ":"),
3516
- (metaData = decodeBoundActionMetaData(body, serverManifest, value)));
3511
+ key.startsWith("$ACTION_REF_") && (actionKey = key);
3517
3512
  });
3518
- if (null === metaData) return Promise.resolve(null);
3519
- var referenceId = metaData.id;
3520
- return Promise.resolve(metaData.bound).then(function (bound) {
3513
+ if (null === actionKey) return Promise.resolve(null);
3514
+ var formFieldPrefix = "$ACTION_" + actionKey.slice(12) + ":";
3515
+ body = decodeBoundActionMetaData(body, serverManifest, formFieldPrefix);
3516
+ var referenceId = body.id;
3517
+ return Promise.resolve(body.bound).then(function (bound) {
3521
3518
  return null === bound
3522
3519
  ? null
3523
3520
  : [actionResult, keyPath, referenceId, bound.length - 1];
@@ -3560,7 +3557,7 @@ exports.decodeReplyFromAsyncIterable = function (
3560
3557
  function error(reason) {
3561
3558
  reportGlobalError(response, reason);
3562
3559
  "function" === typeof iterator.throw &&
3563
- iterator.throw(reason).then(error, error);
3560
+ iterator.throw(reason).then(noop, noop);
3564
3561
  }
3565
3562
  var iterator = iterable[ASYNC_ITERATOR](),
3566
3563
  response = createResponse(
@@ -3574,6 +3571,43 @@ exports.decodeReplyFromAsyncIterable = function (
3574
3571
  return getChunk(response, 0);
3575
3572
  };
3576
3573
  exports.decodeReplyFromBusboy = function (busboyStream, webpackMap, options) {
3574
+ function flush() {
3575
+ for (; null !== head; ) {
3576
+ var current = head;
3577
+ if (!current.complete) return;
3578
+ try {
3579
+ var key = current.name,
3580
+ handle = current.file,
3581
+ blob = new Blob(handle.chunks, { type: handle.mime }),
3582
+ backingStore = response._formData,
3583
+ key$jscomp$0 = key;
3584
+ backingStore.data.append(key$jscomp$0, blob, handle.filename);
3585
+ var keys = backingStore.keys;
3586
+ null === keys
3587
+ ? ((backingStore.keys = Array.from(backingStore.data.keys())),
3588
+ (backingStore.keyPointer = 0))
3589
+ : keys.push(key$jscomp$0);
3590
+ var queuedFields = current.queuedFields;
3591
+ if (null !== queuedFields)
3592
+ for (
3593
+ key$jscomp$0 = 0;
3594
+ key$jscomp$0 < queuedFields.length;
3595
+ key$jscomp$0 += 2
3596
+ )
3597
+ resolveField(
3598
+ response,
3599
+ queuedFields[key$jscomp$0],
3600
+ queuedFields[key$jscomp$0 + 1]
3601
+ );
3602
+ } catch (error) {
3603
+ busboyStream.destroy(error);
3604
+ return;
3605
+ }
3606
+ head = current.next;
3607
+ }
3608
+ tail = null;
3609
+ bodyFinished && !closed && ((closed = !0), close(response));
3610
+ }
3577
3611
  var response = createResponse(
3578
3612
  webpackMap,
3579
3613
  "",
@@ -3581,10 +3615,14 @@ exports.decodeReplyFromBusboy = function (busboyStream, webpackMap, options) {
3581
3615
  void 0,
3582
3616
  options ? options.arraySizeLimit : void 0
3583
3617
  ),
3584
- pendingFiles = 0,
3585
- queuedFields = [];
3618
+ head = null,
3619
+ tail = null,
3620
+ bodyFinished = !1,
3621
+ closed = !1;
3586
3622
  busboyStream.on("field", function (name, value) {
3587
- if (0 < pendingFiles) queuedFields.push(name, value);
3623
+ if (null !== tail)
3624
+ null === tail.queuedFields && (tail.queuedFields = []),
3625
+ tail.queuedFields.push(name, value);
3588
3626
  else
3589
3627
  try {
3590
3628
  resolveField(response, name, value);
@@ -3602,41 +3640,40 @@ exports.decodeReplyFromBusboy = function (busboyStream, webpackMap, options) {
3602
3640
  )
3603
3641
  );
3604
3642
  else {
3605
- pendingFiles++;
3606
- var JSCompiler_object_inline_chunks_296 = [];
3643
+ var file = { chunks: [], filename: filename, mime: mimeType },
3644
+ pendingFile = {
3645
+ name: name,
3646
+ file: file,
3647
+ complete: !1,
3648
+ queuedFields: null,
3649
+ next: null
3650
+ };
3651
+ null === tail ? (head = pendingFile) : (tail.next = pendingFile);
3652
+ tail = pendingFile;
3607
3653
  value.on("data", function (chunk) {
3608
- JSCompiler_object_inline_chunks_296.push(chunk);
3609
- });
3610
- value.on("end", function () {
3611
3654
  try {
3612
- var blob = new Blob(JSCompiler_object_inline_chunks_296, {
3613
- type: mimeType
3614
- }),
3615
- backingStore = response._formData;
3616
- backingStore.data.append(name, blob, filename);
3617
- var keys = backingStore.keys;
3618
- null === keys
3619
- ? ((backingStore.keys = Array.from(backingStore.data.keys())),
3620
- (backingStore.keyPointer = 0))
3621
- : keys.push(name);
3622
- pendingFiles--;
3623
- if (0 === pendingFiles) {
3624
- for (blob = 0; blob < queuedFields.length; blob += 2)
3625
- resolveField(
3626
- response,
3627
- queuedFields[blob],
3628
- queuedFields[blob + 1]
3629
- );
3630
- queuedFields.length = 0;
3631
- }
3655
+ file.chunks.push(chunk);
3632
3656
  } catch (error) {
3633
3657
  busboyStream.destroy(error);
3634
3658
  }
3635
3659
  });
3660
+ value.on("error", function (error) {
3661
+ busboyStream.destroy(error);
3662
+ });
3663
+ value.on("end", function () {
3664
+ pendingFile.complete = !0;
3665
+ flush();
3666
+ });
3636
3667
  }
3637
3668
  });
3638
3669
  busboyStream.on("finish", function () {
3639
- close(response);
3670
+ bodyFinished = !0;
3671
+ flush();
3672
+ closed ||
3673
+ reportGlobalError(
3674
+ response,
3675
+ Error("Reply finished with incomplete file part.")
3676
+ );
3640
3677
  });
3641
3678
  busboyStream.on("error", function (err) {
3642
3679
  reportGlobalError(response, err);
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "react-server-dom-webpack",
3
3
  "description": "React Server Components bindings for DOM using Webpack. This is intended to be integrated into meta-frameworks. It is not intended to be imported directly.",
4
- "version": "19.2.6",
4
+ "version": "19.2.8",
5
5
  "keywords": [
6
6
  "react"
7
7
  ],
8
8
  "homepage": "https://react.dev/",
9
- "bugs": "https://github.com/facebook/react/issues",
9
+ "bugs": "https://github.com/react/react/issues",
10
10
  "license": "MIT",
11
11
  "files": [
12
12
  "LICENSE",
@@ -77,15 +77,15 @@
77
77
  "main": "index.js",
78
78
  "repository": {
79
79
  "type": "git",
80
- "url": "https://github.com/facebook/react.git",
80
+ "url": "https://github.com/react/react.git",
81
81
  "directory": "packages/react-server-dom-webpack"
82
82
  },
83
83
  "engines": {
84
84
  "node": ">=0.10.0"
85
85
  },
86
86
  "peerDependencies": {
87
- "react": "^19.2.6",
88
- "react-dom": "^19.2.6",
87
+ "react": "^19.2.8",
88
+ "react-dom": "^19.2.8",
89
89
  "webpack": "^5.59.0"
90
90
  },
91
91
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitejs/plugin-rsc",
3
- "version": "0.5.27",
3
+ "version": "0.5.29",
4
4
  "description": "React Server Components (RSC) support for Vite.",
5
5
  "keywords": [
6
6
  "react",
@@ -40,31 +40,31 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@rolldown/pluginutils": "^1.0.1",
43
- "es-module-lexer": "^2.1.0",
43
+ "es-module-lexer": "^2.3.1",
44
44
  "estree-walker": "^3.0.3",
45
45
  "magic-string": "^0.30.21",
46
- "srvx": "^0.11.15",
46
+ "srvx": "^0.11.22",
47
47
  "strip-literal": "^3.1.0",
48
48
  "turbo-stream": "^3.2.0",
49
49
  "vitefu": "^1.1.3"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@hiogawa/utils": "^1.7.0",
53
- "@playwright/test": "^1.60.0",
53
+ "@playwright/test": "^1.61.1",
54
54
  "@tsconfig/strictest": "^2.0.8",
55
55
  "@types/estree": "^1.0.9",
56
- "@types/node": "^24.12.4",
57
- "@types/react": "^19.2.15",
56
+ "@types/node": "^24.13.3",
57
+ "@types/react": "^19.2.17",
58
58
  "@types/react-dom": "^19.2.3",
59
59
  "@vitejs/plugin-react": "workspace:*",
60
60
  "@vitejs/test-dep-cjs-and-esm": "./test-dep/cjs-and-esm",
61
61
  "@vitejs/test-dep-cjs-falsy-primitive": "./test-dep/cjs-falsy-primitive",
62
62
  "picocolors": "^1.1.1",
63
- "react": "^19.2.6",
64
- "react-dom": "^19.2.6",
65
- "react-server-dom-webpack": "^19.2.6",
66
- "tinyexec": "^1.1.2",
67
- "tsdown": "^0.22.0"
63
+ "react": "^19.2.8",
64
+ "react-dom": "^19.2.8",
65
+ "react-server-dom-webpack": "^19.2.8",
66
+ "tinyexec": "^1.2.4",
67
+ "tsdown": "^0.22.7"
68
68
  },
69
69
  "peerDependencies": {
70
70
  "react": "*",
File without changes
File without changes