11import opts from 'astro:react:opts' ;
2- import type { AstroComponentMetadata } from 'astro' ;
2+ import type { AstroComponentMetadata , NamedSSRLoadedRendererValue } from 'astro' ;
33import React from 'react' ;
44import ReactDOM from 'react-dom/server' ;
55import { incrementId } from './context.js' ;
@@ -47,7 +47,7 @@ async function check(
4747 return React . createElement ( 'div' ) ;
4848 }
4949
50- await renderToStaticMarkup . call ( this , Tester , props , children , { } as any ) ;
50+ await renderToStaticMarkup . call ( this , Tester , props , children ) ;
5151
5252 return isReactComponent ;
5353}
@@ -58,17 +58,17 @@ async function getNodeWritable(): Promise<typeof import('node:stream').Writable>
5858 return Writable ;
5959}
6060
61- function needsHydration ( metadata : AstroComponentMetadata ) {
61+ function needsHydration ( metadata ? : AstroComponentMetadata ) {
6262 // Adjust how this is hydrated only when the version of Astro supports `astroStaticSlot`
63- return metadata . astroStaticSlot ? ! ! metadata . hydrate : true ;
63+ return metadata ? .astroStaticSlot ? ! ! metadata . hydrate : true ;
6464}
6565
6666async function renderToStaticMarkup (
6767 this : RendererContext ,
6868 Component : any ,
6969 props : Record < string , any > ,
7070 { default : children , ...slotted } : Record < string , any > ,
71- metadata : AstroComponentMetadata ,
71+ metadata ? : AstroComponentMetadata ,
7272) {
7373 let prefix ;
7474 if ( this && this . result ) {
@@ -113,7 +113,7 @@ async function renderToStaticMarkup(
113113 identifierPrefix : prefix ,
114114 formState,
115115 } ;
116- let html ;
116+ let html : string ;
117117 if ( opts . experimentalDisableStreaming ) {
118118 html = ReactDOM . renderToString ( vnode ) ;
119119 } else if ( 'renderToReadableStream' in ReactDOM ) {
@@ -156,7 +156,7 @@ async function getFormState({
156156async function renderToPipeableStreamAsync ( vnode : any , options : Record < string , any > ) {
157157 const Writable = await getNodeWritable ( ) ;
158158 let html = '' ;
159- return new Promise ( ( resolve , reject ) => {
159+ return new Promise < string > ( ( resolve , reject ) => {
160160 let error = undefined ;
161161 let stream = ReactDOM . renderToPipeableStream ( vnode , {
162162 ...options ,
@@ -219,9 +219,11 @@ function isFormRequest(contentType: string | null) {
219219 return formContentTypes . some ( ( t ) => type === t ) ;
220220}
221221
222- export default {
222+ const renderer : NamedSSRLoadedRendererValue = {
223223 name : '@astrojs/react' ,
224224 check,
225225 renderToStaticMarkup,
226226 supportsAstroStaticSlot : true ,
227227} ;
228+
229+ export default renderer ;
0 commit comments