@vitejs/plugin-rsc 0.5.15 → 0.5.16

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.
package/README.md CHANGED
@@ -453,6 +453,30 @@ This module re-exports RSC runtime API provided by `react-server-dom/server.edge
453
453
  - `decodeAction/decodeReply/decodeFormState/loadServerAction/createTemporaryReferenceSet`
454
454
  - `encodeReply/createClientTemporaryReferenceSet`
455
455
 
456
+ #### Vite-specific extension: `renderToReadableStream` (experimental)
457
+
458
+ > [!NOTE]
459
+ > This is a Vite-specific extension to the standard React RSC API. The official `react-server-dom` does not provide this callback mechanism.
460
+
461
+ `renderToReadableStream` API is extended with an optional third parameter with `onClientReference` callback.
462
+ This is invoked whenever a client reference is used in RSC stream rendering.
463
+
464
+ ```ts
465
+ function renderToReadableStream<T>(
466
+ data: T,
467
+ // standard options (e.g. temporaryReferences, onError, etc.)
468
+ options?: object,
469
+ // vite-specific options
470
+ extraOptions?: {
471
+ onClientReference?: (metadata: {
472
+ id: string
473
+ name: string
474
+ deps: { js: string[]; css: string[] }
475
+ }) => void
476
+ },
477
+ ): ReadableStream<Uint8Array>
478
+ ```
479
+
456
480
  ### `@vitejs/plugin-rsc/ssr`
457
481
 
458
482
  This module re-exports RSC runtime API provided by `react-server-dom/client.edge`
@@ -7,6 +7,14 @@ declare function setRequireModule(options: {
7
7
  declare function loadServerAction(id: string): Promise<Function>;
8
8
  declare function createServerManifest(): BundlerConfig;
9
9
  declare function createServerDecodeClientManifest(): ModuleMap;
10
- declare function createClientManifest(): BundlerConfig;
10
+ declare function createClientManifest(options?: {
11
+ /**
12
+ * @internal
13
+ */
14
+ onClientReference?: (metadata: {
15
+ id: string;
16
+ name: string;
17
+ }) => void;
18
+ }): BundlerConfig;
11
19
  //#endregion
12
20
  export { createClientManifest, createServerDecodeClientManifest, createServerManifest, loadServerAction, setRequireModule };
package/dist/core/rsc.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as setRequireModule, i as loadServerAction, n as createServerDecodeClientManifest, r as createServerManifest, t as createClientManifest } from "../rsc-DRNoX2Q6.js";
1
+ import { a as setRequireModule, i as loadServerAction, n as createServerDecodeClientManifest, r as createServerManifest, t as createClientManifest } from "../rsc-BCFg12vs.js";
2
2
 
3
3
  export { createClientManifest, createServerDecodeClientManifest, createServerManifest, loadServerAction, setRequireModule };
@@ -2,7 +2,15 @@ import { loadServerAction, setRequireModule } from "../core/rsc.js";
2
2
  import { ReactFormState } from "react-dom/client";
3
3
 
4
4
  //#region src/react/rsc.d.ts
5
- declare function renderToReadableStream<T>(data: T, options?: object): ReadableStream<Uint8Array>;
5
+ declare function renderToReadableStream<T>(data: T, options?: object, extraOptions?: {
6
+ /**
7
+ * @internal
8
+ */
9
+ onClientReference?: (metadata: {
10
+ id: string;
11
+ name: string;
12
+ }) => void;
13
+ }): ReadableStream<Uint8Array>;
6
14
  declare function createFromReadableStream<T>(stream: ReadableStream<Uint8Array>, options?: object): Promise<T>;
7
15
  declare function registerClientReference<T>(proxy: T, id: string, name: string): T;
8
16
  declare const registerServerReference: <T>(ref: T, id: string, name: string) => T;
package/dist/react/rsc.js CHANGED
@@ -1,10 +1,10 @@
1
- import { a as setRequireModule, i as loadServerAction, n as createServerDecodeClientManifest, r as createServerManifest, t as createClientManifest } from "../rsc-DRNoX2Q6.js";
1
+ import { a as setRequireModule, i as loadServerAction, n as createServerDecodeClientManifest, r as createServerManifest, t as createClientManifest } from "../rsc-BCFg12vs.js";
2
2
  import * as ReactClient from "@vitejs/plugin-rsc/vendor/react-server-dom/client.edge";
3
3
  import * as ReactServer from "@vitejs/plugin-rsc/vendor/react-server-dom/server.edge";
4
4
 
5
5
  //#region src/react/rsc.ts
6
- function renderToReadableStream(data, options) {
7
- return ReactServer.renderToReadableStream(data, createClientManifest(), options);
6
+ function renderToReadableStream(data, options, extraOptions) {
7
+ return ReactServer.renderToReadableStream(data, createClientManifest({ onClientReference: extraOptions?.onClientReference }), options);
8
8
  }
9
9
  function createFromReadableStream(stream, options = {}) {
10
10
  return ReactClient.createFromReadableStream(stream, {
@@ -62,13 +62,17 @@ function createServerDecodeClientManifest() {
62
62
  } });
63
63
  } });
64
64
  }
65
- function createClientManifest() {
65
+ function createClientManifest(options) {
66
66
  const cacheTag = import.meta.env.DEV ? createReferenceCacheTag() : "";
67
67
  return new Proxy({}, { get(_target, $$id, _receiver) {
68
68
  tinyassert(typeof $$id === "string");
69
69
  let [id, name] = $$id.split("#");
70
70
  tinyassert(id);
71
71
  tinyassert(name);
72
+ options?.onClientReference?.({
73
+ id,
74
+ name
75
+ });
72
76
  return {
73
77
  id: id + cacheTag,
74
78
  name,
package/dist/rsc.d.ts CHANGED
@@ -1,4 +1,19 @@
1
1
  import { createClientManifest, createServerManifest, loadServerAction, setRequireModule } from "./core/rsc.js";
2
- import { createClientTemporaryReferenceSet, createFromReadableStream, createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, encodeReply, registerClientReference, registerServerReference, renderToReadableStream } from "./react/rsc.js";
2
+ import { i as ResolvedAssetDeps } from "./plugin-V6VFxi_0.js";
3
+ import "./index-DJ0AhQ9B.js";
4
+ import { createClientTemporaryReferenceSet, createFromReadableStream, createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, encodeReply, registerClientReference, registerServerReference } from "./react/rsc.js";
3
5
  import { decryptActionBoundArgs, encryptActionBoundArgs } from "./utils/encryption-runtime.js";
6
+
7
+ //#region src/rsc.d.ts
8
+ declare function renderToReadableStream<T>(data: T, options?: object, extraOptions?: {
9
+ /**
10
+ * @experimental
11
+ */
12
+ onClientReference?: (metadata: {
13
+ id: string;
14
+ name: string;
15
+ deps: ResolvedAssetDeps;
16
+ }) => void;
17
+ }): ReadableStream<Uint8Array>;
18
+ //#endregion
4
19
  export { createClientManifest, createClientTemporaryReferenceSet, createFromReadableStream, createServerManifest, createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, decryptActionBoundArgs, encodeReply, encryptActionBoundArgs, loadServerAction, registerClientReference, registerServerReference, renderToReadableStream, setRequireModule };
package/dist/rsc.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { a as toReferenceValidationVirtual } from "./shared-Chot7h9j.js";
2
- import { a as setRequireModule, i as loadServerAction, r as createServerManifest, t as createClientManifest } from "./rsc-DRNoX2Q6.js";
3
- import { createClientTemporaryReferenceSet, createFromReadableStream, createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, encodeReply, registerClientReference, registerServerReference, renderToReadableStream } from "./react/rsc.js";
2
+ import { a as setRequireModule, i as loadServerAction, r as createServerManifest, t as createClientManifest } from "./rsc-BCFg12vs.js";
3
+ import { createClientTemporaryReferenceSet, createFromReadableStream, createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, encodeReply, registerClientReference, registerServerReference, renderToReadableStream as renderToReadableStream$1 } from "./react/rsc.js";
4
4
  import { decryptActionBoundArgs, encryptActionBoundArgs } from "./utils/encryption-runtime.js";
5
+ import assetsManifest from "virtual:vite-rsc/assets-manifest";
5
6
  import serverReferences from "virtual:vite-rsc/server-references";
6
7
 
7
8
  //#region src/rsc.tsx
@@ -27,6 +28,19 @@ function initialize() {
27
28
  }
28
29
  } });
29
30
  }
31
+ function renderToReadableStream(data, options, extraOptions) {
32
+ return renderToReadableStream$1(data, options, { onClientReference(metadata) {
33
+ const deps = assetsManifest.clientReferenceDeps[metadata.id] ?? {
34
+ js: [],
35
+ css: []
36
+ };
37
+ extraOptions?.onClientReference?.({
38
+ id: metadata.id,
39
+ name: metadata.name,
40
+ deps
41
+ });
42
+ } });
43
+ }
30
44
 
31
45
  //#endregion
32
46
  export { createClientManifest, createClientTemporaryReferenceSet, createFromReadableStream, createServerManifest, createTemporaryReferenceSet, decodeAction, decodeFormState, decodeReply, decryptActionBoundArgs, encodeReply, encryptActionBoundArgs, loadServerAction, registerClientReference, registerServerReference, renderToReadableStream, setRequireModule };
@@ -1,6 +1,6 @@
1
1
  import { r as once } from "../dist-DZUJDIM2.js";
2
2
  import { a as fromBase64, i as encryptBuffer, n as concatArrayStream, r as decryptBuffer, t as arrayToStream } from "../encryption-utils-BPYvebX4.js";
3
- import "../rsc-DRNoX2Q6.js";
3
+ import "../rsc-BCFg12vs.js";
4
4
  import { createFromReadableStream, renderToReadableStream } from "../react/rsc.js";
5
5
  import encryptionKeySource from "virtual:vite-rsc/encryption-key";
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitejs/plugin-rsc",
3
- "version": "0.5.15",
3
+ "version": "0.5.16",
4
4
  "description": "React Server Components (RSC) support for Vite.",
5
5
  "keywords": [
6
6
  "react",