srvx 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/node.d.mts +8 -7
- package/dist/adapters/node.mjs +19 -10
- package/dist/types.d.mts +2 -1
- package/package.json +1 -1
package/dist/adapters/node.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ServerOptions, Server, FetchHandler, NodeHttpHandler } from '../types.mjs';
|
|
2
2
|
import NodeHttp__default from 'node:http';
|
|
3
|
+
import { Readable } from 'node:stream';
|
|
3
4
|
import 'node:net';
|
|
4
5
|
import 'bun';
|
|
5
6
|
import '@cloudflare/workers-types';
|
|
@@ -7,8 +8,8 @@ import '@cloudflare/workers-types';
|
|
|
7
8
|
type NodeFastResponse = InstanceType<typeof NodeFastResponse>;
|
|
8
9
|
declare const NodeFastResponse: {
|
|
9
10
|
new (body?: BodyInit | null, init?: ResponseInit): {
|
|
10
|
-
"__#
|
|
11
|
-
"__#
|
|
11
|
+
"__#4201@#body"?: BodyInit | null;
|
|
12
|
+
"__#4201@#init"?: ResponseInit;
|
|
12
13
|
/**
|
|
13
14
|
* Prepare Node.js response object
|
|
14
15
|
*/
|
|
@@ -16,14 +17,14 @@ declare const NodeFastResponse: {
|
|
|
16
17
|
status: number;
|
|
17
18
|
statusText: string;
|
|
18
19
|
headers: NodeHttp__default.OutgoingHttpHeader[];
|
|
19
|
-
body: string | Uint8Array<ArrayBufferLike> | ReadableStream<Uint8Array<ArrayBufferLike>> | Buffer<ArrayBufferLike> | DataView<ArrayBufferLike> | null | undefined;
|
|
20
|
+
body: string | Uint8Array<ArrayBufferLike> | ReadableStream<Uint8Array<ArrayBufferLike>> | Readable | Buffer<ArrayBufferLike> | DataView<ArrayBufferLike> | null | undefined;
|
|
20
21
|
};
|
|
21
22
|
/** Lazy initialized response instance */
|
|
22
|
-
"__#
|
|
23
|
+
"__#4201@#responseObj"?: Response;
|
|
23
24
|
/** Lazy initialized headers instance */
|
|
24
|
-
"__#
|
|
25
|
+
"__#4201@#headersObj"?: Headers;
|
|
25
26
|
clone(): Response;
|
|
26
|
-
readonly "__#
|
|
27
|
+
readonly "__#4201@#response": Response;
|
|
27
28
|
readonly headers: Headers;
|
|
28
29
|
readonly ok: boolean;
|
|
29
30
|
readonly redirected: boolean;
|
|
@@ -31,7 +32,7 @@ declare const NodeFastResponse: {
|
|
|
31
32
|
readonly statusText: string;
|
|
32
33
|
readonly type: ResponseType;
|
|
33
34
|
readonly url: string;
|
|
34
|
-
"__#
|
|
35
|
+
"__#4201@#fastBody"<T extends object>(as: new (...args: any[]) => T): T | null | false;
|
|
35
36
|
readonly body: ReadableStream<Uint8Array> | null;
|
|
36
37
|
readonly bodyUsed: boolean;
|
|
37
38
|
arrayBuffer(): Promise<ArrayBuffer>;
|
package/dist/adapters/node.mjs
CHANGED
|
@@ -10,11 +10,18 @@ async function sendNodeResponse(nodeRes, webRes) {
|
|
|
10
10
|
}
|
|
11
11
|
if (webRes.nodeResponse) {
|
|
12
12
|
const res = webRes.nodeResponse();
|
|
13
|
-
nodeRes.
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
if (!nodeRes.headersSent) {
|
|
14
|
+
nodeRes.writeHead(res.status, res.statusText, res.headers);
|
|
15
|
+
}
|
|
16
|
+
if (res.body) {
|
|
17
|
+
if (res.body instanceof ReadableStream) {
|
|
18
|
+
return streamBody(res.body, nodeRes);
|
|
19
|
+
} else if (typeof res.body?.pipe === "function") {
|
|
20
|
+
res.body.pipe(nodeRes);
|
|
21
|
+
return new Promise((resolve) => nodeRes.on("close", resolve));
|
|
22
|
+
}
|
|
23
|
+
nodeRes.write(res.body);
|
|
16
24
|
}
|
|
17
|
-
nodeRes.write(res.body);
|
|
18
25
|
return endNodeResponse(nodeRes);
|
|
19
26
|
}
|
|
20
27
|
const headerEntries = [];
|
|
@@ -27,7 +34,9 @@ async function sendNodeResponse(nodeRes, webRes) {
|
|
|
27
34
|
headerEntries.push([key, value]);
|
|
28
35
|
}
|
|
29
36
|
}
|
|
30
|
-
nodeRes.
|
|
37
|
+
if (!nodeRes.headersSent) {
|
|
38
|
+
nodeRes.writeHead(webRes.status || 200, webRes.statusText, headerEntries);
|
|
39
|
+
}
|
|
31
40
|
return webRes.body ? streamBody(webRes.body, nodeRes) : endNodeResponse(nodeRes);
|
|
32
41
|
}
|
|
33
42
|
function endNodeResponse(nodeRes) {
|
|
@@ -516,12 +525,10 @@ const NodeFastResponse = /* @__PURE__ */ (() => (
|
|
|
516
525
|
const status = this.#init?.status ?? 200;
|
|
517
526
|
const statusText = this.#init?.statusText ?? "";
|
|
518
527
|
const headers = [];
|
|
519
|
-
|
|
528
|
+
const headersInit = this.#init?.headers;
|
|
520
529
|
if (headersInit) {
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
}
|
|
524
|
-
for (const [key, value] of headersInit) {
|
|
530
|
+
const headerEntries = headersInit.entries ? headersInit.entries() : Object.entries(headersInit);
|
|
531
|
+
for (const [key, value] of headerEntries) {
|
|
525
532
|
if (key === "set-cookie") {
|
|
526
533
|
for (const setCookie of splitSetCookieString(value)) {
|
|
527
534
|
headers.push(["set-cookie", setCookie]);
|
|
@@ -549,6 +556,8 @@ const NodeFastResponse = /* @__PURE__ */ (() => (
|
|
|
549
556
|
if (bodyInit.type) {
|
|
550
557
|
headers.push(["content-type", bodyInit.type]);
|
|
551
558
|
}
|
|
559
|
+
} else if (typeof bodyInit.pipe === "function") {
|
|
560
|
+
body = bodyInit;
|
|
552
561
|
} else {
|
|
553
562
|
const res = new Response(bodyInit);
|
|
554
563
|
body = res.body;
|
package/dist/types.d.mts
CHANGED
|
@@ -4,6 +4,7 @@ import * as Bun from 'bun';
|
|
|
4
4
|
import * as CF from '@cloudflare/workers-types';
|
|
5
5
|
|
|
6
6
|
type MaybePromise<T> = T | Promise<T>;
|
|
7
|
+
declare const Response: globalThis.Response;
|
|
7
8
|
/**
|
|
8
9
|
* Create a new server instance.
|
|
9
10
|
*/
|
|
@@ -172,4 +173,4 @@ type DenoFetchHandler = (request: Request, info?: Deno.ServeHandlerInfo<Deno.Net
|
|
|
172
173
|
type NodeHttpHandler = (nodeReq: NodeHttp.IncomingMessage, nodeRes: NodeHttp.ServerResponse) => void | Promise<void>;
|
|
173
174
|
type CloudflareFetchHandler = CF.ExportedHandlerFetchHandler;
|
|
174
175
|
|
|
175
|
-
export { type BunFetchandler, type CloudflareFetchHandler, type DenoFetchHandler, type FetchHandler, type NodeHttpHandler, type Server, type ServerHandler, type ServerOptions, type ServerPlugin, type ServerPluginInstance, type ServerRequest, serve };
|
|
176
|
+
export { type BunFetchandler, type CloudflareFetchHandler, type DenoFetchHandler, type FetchHandler, type NodeHttpHandler, Response, type Server, type ServerHandler, type ServerOptions, type ServerPlugin, type ServerPluginInstance, type ServerRequest, serve };
|