Unify types and move to types.ts file

This commit is contained in:
Mateusz Knapik 2025-04-09 23:52:10 +00:00
parent 8b84986410
commit 047560b58c
3 changed files with 11 additions and 13 deletions

View File

@ -1,4 +1,4 @@
import { DatastarEventOptions, EventType, sseHeaders } from "../types.ts";
import { DatastarEventOptions, EventType, sseHeaders, StreamOptions } from "../types.ts";
import { ServerSentEventGenerator as AbstractSSEGenerator } from "../abstractServerSentEventGenerator.ts";
@ -47,11 +47,7 @@ export class ServerSentEventGenerator extends AbstractSSEGenerator {
req: IncomingMessage,
res: ServerResponse,
onStart: (stream: ServerSentEventGenerator) => Promise<void> | void,
options?: Partial<{
onError: (error: unknown) => Promise<void> | void;
onAbort: () => Promise<void> | void;
keepalive: boolean;
}>,
options?: StreamOptions,
): Promise<void> {
const generator = new ServerSentEventGenerator(req, res);

View File

@ -22,6 +22,13 @@ import type { Jsonifiable } from "npm:type-fest";
export type FragmentMergeMode = typeof FragmentMergeModes[number];
export type EventType = typeof EventTypes[number];
export type StreamOptions = Partial<{
onError: (error: unknown) => Promise<void> | void;
onAbort: (reason?: string) => Promise<void> | void;
responseInit: ResponseInit;
keepalive: boolean;
}>
export interface DatastarEventOptions {
eventId?: string;
retryDuration?: number;

View File

@ -1,4 +1,4 @@
import { DatastarEventOptions, EventType, sseHeaders } from "../types.ts";
import { DatastarEventOptions, EventType, sseHeaders, StreamOptions } from "../types.ts";
import { ServerSentEventGenerator as AbstractSSEGenerator } from "../abstractServerSentEventGenerator.ts";
import type { Jsonifiable } from "npm:type-fest";
@ -41,12 +41,7 @@ export class ServerSentEventGenerator extends AbstractSSEGenerator {
*/
static stream(
onStart: (stream: ServerSentEventGenerator) => Promise<void> | void,
options?: Partial<{
onError: (error: unknown) => Promise<void> | void;
onAbort: (reason: string) => Promise<void> | void;
responseInit: ResponseInit;
keepalive: boolean;
}>,
options?: StreamOptions,
): Response {
const readableStream = new ReadableStream({
async start(controller) {