Skip to content

Commit 39fee32

Browse files
feedback
1 parent cc043c7 commit 39fee32

File tree

3 files changed

+3
-86
lines changed

3 files changed

+3
-86
lines changed

packages/fresh/src/context.ts

Lines changed: 2 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ import {
2727
renderRouteComponent,
2828
} from "./render.ts";
2929
import { renderToString } from "preact-render-to-string";
30-
import { isAsyncIterable, isIterable, isThenable } from "./utils.ts";
30+
31+
const ENCODER = new TextEncoder();
3132

3233
export 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-
}

packages/fresh/src/mod.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export { csrf, type CsrfOptions } from "./middlewares/csrf.ts";
1515
export { cors, type CORSOptions } from "./middlewares/cors.ts";
1616
export { csp, type CSPOptions } from "./middlewares/csp.ts";
1717
export type { FreshConfig, ResolvedFreshConfig } from "./config.ts";
18-
export type { Context, FreshContext, Island, StreamFn } from "./context.ts";
18+
export type { Context, FreshContext, Island } from "./context.ts";
1919
export { createDefine, type Define } from "./define.ts";
2020
export type { Method } from "./router.ts";
2121
export { HttpError } from "./error.ts";

packages/fresh/src/utils.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -283,22 +283,3 @@ function maybeDot(spec: string): string {
283283
export function isLazy<T>(value: MaybeLazy<T>): value is Lazy<T> {
284284
return typeof value === "function";
285285
}
286-
287-
export function isThenable(value: unknown): value is Promise<unknown> {
288-
return value !== null && typeof value === "object" && "then" in value &&
289-
typeof value.then === "function";
290-
}
291-
292-
export function isIterable<T>(value: unknown): value is Iterable<T> {
293-
return value !== null && typeof value === "object" &&
294-
Symbol.iterator in value &&
295-
typeof value[Symbol.iterator] === "function";
296-
}
297-
298-
export function isAsyncIterable<T>(
299-
value: unknown,
300-
): value is AsyncIterable<T> {
301-
return value !== null && typeof value === "object" &&
302-
Symbol.asyncIterator in value &&
303-
typeof value[Symbol.asyncIterator] === "function";
304-
}

0 commit comments

Comments
 (0)