This commit is contained in:
Mateusz Knapik 2025-04-19 04:12:21 +02:00 committed by GitHub
commit 70eff1ee9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 46 additions and 15 deletions

View File

@ -4,7 +4,10 @@ import { build, emptyDir } from "@deno/dnt";
await emptyDir("./npm");
await build({
entryPoints: ["./src/node/node.ts", "./src/web/serverSentEventGenerator.ts"],
entryPoints: [
"./src/node/serverSentEventGenerator.ts",
"./src/web/serverSentEventGenerator.ts",
],
outDir: "./npm",
shims: {
// see JS docs for overview and more options
@ -23,6 +26,36 @@ await build({
bugs: {
url: "https://github.com/starfederation/datastar/issues",
},
exports: {
"./abstractServerSentEventGenerator": {
"types": "./esm/abstractServerSentEventGenerator.d.ts",
"import": "./esm/abstractServerSentEventGenerator.js",
"require": "./script/abstractServerSentEventGenerator.js",
},
"./consts": {
"types": "./esm/consts.d.ts",
"import": "./esm/consts.js",
"require": "./script/consts.js",
},
"./types": {
"types": "./esm/types.d.ts",
},
"./node": {
"types": "./esm/node/serverSentEventGenerator.d.ts",
"import": "./esm/node/serverSentEventGenerator.js",
"require": "./script/node/serverSentEventGenerator.js",
},
"./web": {
"types": "./esm/web/serverSentEventGenerator.d.ts",
"import": "./esm/web/serverSentEventGenerator.js",
"require": "./script/web/serverSentEventGenerator.js",
},
".": {
"types": "./esm/node/serverSentEventGenerator.d.ts",
"import": "./esm/node/serverSentEventGenerator.js",
"require": "./script/node/serverSentEventGenerator.js",
},
},
},
postBuild() {
// steps to run after building and before running the tests
@ -30,4 +63,4 @@ await build({
Deno.copyFileSync("README.md", "npm/README.md");
},
rootTestDir: "./src",
});
});

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) {