@@ -27,7 +27,8 @@ import {
2727 renderRouteComponent ,
2828} from "./render.ts" ;
2929import { renderToString } from "preact-render-to-string" ;
30- import { isAsyncIterable , isIterable , isThenable } from "./utils.ts" ;
30+
31+ const ENCODER = new TextEncoder ( ) ;
3132
3233export interface Island {
3334 file : string ;
@@ -472,68 +473,3 @@ function getHeadersFromInit(init?: ResponseInit) {
472473 ? init . headers instanceof Headers ? init . headers : new Headers ( init . headers )
473474 : new Headers ( ) ;
474475}
475-
476- export type StreamFn < T > = (
477- controller : ReadableStreamDefaultController < T > ,
478- signal : AbortSignal ,
479- ) =>
480- | void
481- | Iterable < T , void , unknown >
482- | Promise < void >
483- | AsyncIterable < T , void , unknown > ;
484-
485- type ChunkEncodeFn < T > = (
486- controller : ReadableStreamDefaultController < Uint8Array < ArrayBuffer > > ,
487- chunk : T | undefined ,
488- ) => void ;
489-
490- function runStreamFn < T > (
491- fn : StreamFn < T > ,
492- signal : AbortSignal ,
493- ) : ReadableStream < Uint8Array < ArrayBuffer > > {
494- return new ReadableStream < Uint8Array < ArrayBuffer > > ( {
495- async start ( controller ) {
496- const wrapped = wrapStreamController (
497- controller ,
498- enqueueEncodedChunk ,
499- ) ;
500- await fn ( wrapped , signal ) ;
501- controller . close ( ) ;
502- } ,
503- } ) ;
504- }
505-
506- function wrapStreamController < T > (
507- controller : ReadableStreamDefaultController < Uint8Array < ArrayBuffer > > ,
508- encode : ChunkEncodeFn < T > ,
509- ) : ReadableStreamDefaultController < T > {
510- return {
511- get desiredSize ( ) {
512- return controller . desiredSize ;
513- } ,
514- close : ( ) => controller . close ,
515- enqueue ( chunk ) {
516- encode ( controller , chunk ) ;
517- } ,
518- error : ( err ) => controller . error ( err ) ,
519- } ;
520- }
521-
522- const ENCODER = new TextEncoder ( ) ;
523-
524- function enqueueEncodedChunk < T > (
525- controller : ReadableStreamDefaultController < Uint8Array < ArrayBuffer > > ,
526- chunk : T | undefined ,
527- ) {
528- if ( chunk === undefined ) {
529- return controller . enqueue ( undefined ) ;
530- }
531-
532- if ( chunk instanceof Uint8Array ) {
533- // deno-lint-ignore no-explicit-any
534- controller . enqueue ( chunk as any ) ;
535- } else {
536- const raw = ENCODER . encode ( String ( chunk ) ) ;
537- controller . enqueue ( raw ) ;
538- }
539- }
0 commit comments