From 047560b58ca5a86c0e38a96f013180dd6405f305 Mon Sep 17 00:00:00 2001 From: Mateusz Knapik Date: Wed, 9 Apr 2025 23:52:10 +0000 Subject: [PATCH 1/2] Unify types and move to types.ts file --- sdk/typescript/src/node/serverSentEventGenerator.ts | 8 ++------ sdk/typescript/src/types.ts | 7 +++++++ sdk/typescript/src/web/serverSentEventGenerator.ts | 9 ++------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/sdk/typescript/src/node/serverSentEventGenerator.ts b/sdk/typescript/src/node/serverSentEventGenerator.ts index ba1f638c..63446830 100644 --- a/sdk/typescript/src/node/serverSentEventGenerator.ts +++ b/sdk/typescript/src/node/serverSentEventGenerator.ts @@ -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, - options?: Partial<{ - onError: (error: unknown) => Promise | void; - onAbort: () => Promise | void; - keepalive: boolean; - }>, + options?: StreamOptions, ): Promise { const generator = new ServerSentEventGenerator(req, res); diff --git a/sdk/typescript/src/types.ts b/sdk/typescript/src/types.ts index 719bdf61..f6ea9540 100644 --- a/sdk/typescript/src/types.ts +++ b/sdk/typescript/src/types.ts @@ -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; + onAbort: (reason?: string) => Promise | void; + responseInit: ResponseInit; + keepalive: boolean; +}> + export interface DatastarEventOptions { eventId?: string; retryDuration?: number; diff --git a/sdk/typescript/src/web/serverSentEventGenerator.ts b/sdk/typescript/src/web/serverSentEventGenerator.ts index 79f47c30..546672bc 100644 --- a/sdk/typescript/src/web/serverSentEventGenerator.ts +++ b/sdk/typescript/src/web/serverSentEventGenerator.ts @@ -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, - options?: Partial<{ - onError: (error: unknown) => Promise | void; - onAbort: (reason: string) => Promise | void; - responseInit: ResponseInit; - keepalive: boolean; - }>, + options?: StreamOptions, ): Response { const readableStream = new ReadableStream({ async start(controller) { From a3a05c993cb14a974f19ae06bce67785f03807d1 Mon Sep 17 00:00:00 2001 From: Mateusz Knapik Date: Wed, 9 Apr 2025 23:52:21 +0000 Subject: [PATCH 2/2] Fix exports --- sdk/typescript/build.ts | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/sdk/typescript/build.ts b/sdk/typescript/build.ts index 510271b6..1f6518e4 100644 --- a/sdk/typescript/build.ts +++ b/sdk/typescript/build.ts @@ -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", -}); +}); \ No newline at end of file