@tanstack/react-start-client
Advanced tools
| export { StartClient } from './StartClient.js'; | ||
| export { renderRsc } from './renderRSC.js'; | ||
| export { hydrateStart } from './hydrateStart.js'; |
| import { hydrateStart } from "./hydrateStart.js"; | ||
| import { StartClient } from "./StartClient.js"; | ||
| import { renderRsc } from "./renderRSC.js"; | ||
| export { StartClient, hydrateStart, renderRsc }; | ||
| export { StartClient, hydrateStart }; |
+2
-2
| { | ||
| "name": "@tanstack/react-start-client", | ||
| "version": "1.166.29", | ||
| "version": "1.166.30", | ||
| "description": "Modern and scalable routing for React applications", | ||
@@ -48,3 +48,3 @@ "author": "Tanner Linsley", | ||
| "@tanstack/router-core": "1.168.9", | ||
| "@tanstack/start-client-core": "1.167.10" | ||
| "@tanstack/start-client-core": "1.167.11" | ||
| }, | ||
@@ -51,0 +51,0 @@ "devDependencies": { |
+0
-1
| export { StartClient } from './StartClient' | ||
| export { renderRsc } from './renderRSC' | ||
| export { hydrateStart } from './hydrateStart' |
| import { default as React } from 'react'; | ||
| export declare function renderRsc(input: any): React.JSX.Element; |
| import { isValidElement } from "react"; | ||
| import { invariant } from "@tanstack/router-core"; | ||
| //#region src/renderRSC.tsx | ||
| function renderRsc(input) { | ||
| if (isValidElement(input)) return input; | ||
| if (typeof input === "object" && !input.state) input.state = { | ||
| status: "pending", | ||
| promise: Promise.resolve().then(() => { | ||
| if (process.env.NODE_ENV !== "production") throw new Error("Invariant failed: renderRSC() is coming soon!"); | ||
| invariant(); | ||
| }).then((element) => { | ||
| input.state.value = element; | ||
| input.state.status = "success"; | ||
| }).catch((err) => { | ||
| input.state.status = "error"; | ||
| input.state.error = err; | ||
| }) | ||
| }; | ||
| if (input.state.status === "pending") throw input.state.promise; | ||
| return input.state.value; | ||
| } | ||
| //#endregion | ||
| export { renderRsc }; | ||
| //# sourceMappingURL=renderRSC.js.map |
| {"version":3,"file":"renderRSC.js","names":[],"sources":["../../src/renderRSC.tsx"],"sourcesContent":["// TODO: RSCs\nimport { isValidElement } from 'react'\nimport { invariant } from '@tanstack/router-core'\nimport type React from 'react'\n\nexport function renderRsc(input: any): React.JSX.Element {\n if (isValidElement(input)) {\n return input\n }\n\n if (typeof input === 'object' && !input.state) {\n input.state = {\n status: 'pending',\n promise: Promise.resolve()\n .then(() => {\n let element\n\n // We're in node\n // TODO: RSCs\n // if (reactDom.createFromNodeStream) {\n // const stream = await import('node:stream')\n\n // let body: any = input\n\n // // Unwrap the response\n // if (input instanceof Response) {\n // body = input.body\n // }\n\n // // Convert ReadableStream to NodeJS stream.Readable\n // if (body instanceof ReadableStream) {\n // body = stream.Readable.fromWeb(body as any)\n // }\n\n // if (stream.Readable.isReadable(body)) {\n // // body = copyStreamToRaw(body)\n // } else if (input.text) {\n // // create a readable stream by awaiting the text method\n // body = new stream.Readable({\n // async read() {\n // input.text().then((value: any) => {\n // this.push(value)\n // this.push(null)\n // })\n // },\n // })\n // } else {\n // console.error('input', input)\n // throw new Error('Unexpected rsc input type 👆')\n // }\n\n // element = await reactDom.createFromNodeStream(body)\n // } else {\n // // We're in the browser\n // if (input.body instanceof ReadableStream) {\n // input = input.body\n // }\n\n // if (input instanceof ReadableStream) {\n // element = await reactDom.createFromReadableStream(input)\n // }\n\n // if (input instanceof Response) {\n // // copy to the response body to cache the raw data\n // element = await reactDom.createFromFetch(input)\n // }\n // }\n\n // return element\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Invariant failed: renderRSC() is coming soon!')\n }\n\n invariant()\n })\n .then((element) => {\n input.state.value = element\n input.state.status = 'success'\n })\n .catch((err) => {\n input.state.status = 'error'\n input.state.error = err\n }),\n }\n }\n\n if (input.state.status === 'pending') {\n throw input.state.promise\n }\n\n return input.state.value\n}\n"],"mappings":";;;AAKA,SAAgB,UAAU,OAA+B;AACvD,KAAI,eAAe,MAAM,CACvB,QAAO;AAGT,KAAI,OAAO,UAAU,YAAY,CAAC,MAAM,MACtC,OAAM,QAAQ;EACZ,QAAQ;EACR,SAAS,QAAQ,SAAS,CACvB,WAAW;AAwDV,OAAA,QAAA,IAAA,aAA6B,aAC3B,OAAM,IAAI,MAAM,gDAAgD;AAGlE,cAAW;IACX,CACD,MAAM,YAAY;AACjB,SAAM,MAAM,QAAQ;AACpB,SAAM,MAAM,SAAS;IACrB,CACD,OAAO,QAAQ;AACd,SAAM,MAAM,SAAS;AACrB,SAAM,MAAM,QAAQ;IACpB;EACL;AAGH,KAAI,MAAM,MAAM,WAAW,UACzB,OAAM,MAAM,MAAM;AAGpB,QAAO,MAAM,MAAM"} |
| // TODO: RSCs | ||
| import { isValidElement } from 'react' | ||
| import { invariant } from '@tanstack/router-core' | ||
| import type React from 'react' | ||
| export function renderRsc(input: any): React.JSX.Element { | ||
| if (isValidElement(input)) { | ||
| return input | ||
| } | ||
| if (typeof input === 'object' && !input.state) { | ||
| input.state = { | ||
| status: 'pending', | ||
| promise: Promise.resolve() | ||
| .then(() => { | ||
| let element | ||
| // We're in node | ||
| // TODO: RSCs | ||
| // if (reactDom.createFromNodeStream) { | ||
| // const stream = await import('node:stream') | ||
| // let body: any = input | ||
| // // Unwrap the response | ||
| // if (input instanceof Response) { | ||
| // body = input.body | ||
| // } | ||
| // // Convert ReadableStream to NodeJS stream.Readable | ||
| // if (body instanceof ReadableStream) { | ||
| // body = stream.Readable.fromWeb(body as any) | ||
| // } | ||
| // if (stream.Readable.isReadable(body)) { | ||
| // // body = copyStreamToRaw(body) | ||
| // } else if (input.text) { | ||
| // // create a readable stream by awaiting the text method | ||
| // body = new stream.Readable({ | ||
| // async read() { | ||
| // input.text().then((value: any) => { | ||
| // this.push(value) | ||
| // this.push(null) | ||
| // }) | ||
| // }, | ||
| // }) | ||
| // } else { | ||
| // console.error('input', input) | ||
| // throw new Error('Unexpected rsc input type 👆') | ||
| // } | ||
| // element = await reactDom.createFromNodeStream(body) | ||
| // } else { | ||
| // // We're in the browser | ||
| // if (input.body instanceof ReadableStream) { | ||
| // input = input.body | ||
| // } | ||
| // if (input instanceof ReadableStream) { | ||
| // element = await reactDom.createFromReadableStream(input) | ||
| // } | ||
| // if (input instanceof Response) { | ||
| // // copy to the response body to cache the raw data | ||
| // element = await reactDom.createFromFetch(input) | ||
| // } | ||
| // } | ||
| // return element | ||
| if (process.env.NODE_ENV !== 'production') { | ||
| throw new Error('Invariant failed: renderRSC() is coming soon!') | ||
| } | ||
| invariant() | ||
| }) | ||
| .then((element) => { | ||
| input.state.value = element | ||
| input.state.status = 'success' | ||
| }) | ||
| .catch((err) => { | ||
| input.state.status = 'error' | ||
| input.state.error = err | ||
| }), | ||
| } | ||
| } | ||
| if (input.state.status === 'pending') { | ||
| throw input.state.promise | ||
| } | ||
| return input.state.value | ||
| } |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
0
-100%9241
-43.81%18
-18.18%112
-48.62%+ Added
- Removed