@whatwg-node/server 0.10.0-alpha-20240717150008-1474b9d9b679a0e8f6225f44f11b95a6f4bf24ea → 0.10.0-alpha-20241123133536-975c9068dde45574fcfa26567e4bab96f45d1f85

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,6 +6,7 @@ export interface ServerAdapterPlugin<TServerContext = {}> {
6
6
  export type OnRequestHook<TServerContext> = (payload: OnRequestEventPayload<TServerContext>) => Promise<void> | void;
7
7
  export interface OnRequestEventPayload<TServerContext> {
8
8
  request: Request;
9
+ setRequest(newRequest: Request): void;
9
10
  serverContext: TServerContext;
10
11
  fetchAPI: FetchAPI;
11
12
  requestHandler: ServerAdapterRequestHandler<TServerContext>;
@@ -18,4 +19,6 @@ export interface OnResponseEventPayload<TServerContext> {
18
19
  request: Request;
19
20
  serverContext: TServerContext;
20
21
  response: Response;
22
+ setResponse(newResponse: Response): void;
23
+ fetchAPI: FetchAPI;
21
24
  }
@@ -0,0 +1,2 @@
1
+ import type { ServerAdapterPlugin } from './types.cjs';
2
+ export declare function useContentEncoding<TServerContext>(): ServerAdapterPlugin<TServerContext>;
@@ -0,0 +1,2 @@
1
+ import type { ServerAdapterPlugin } from './types.js';
2
+ export declare function useContentEncoding<TServerContext>(): ServerAdapterPlugin<TServerContext>;
@@ -1,4 +1,4 @@
1
- import { ServerAdapterPlugin } from './types.cjs';
1
+ import type { ServerAdapterPlugin } from './types.cjs';
2
2
  export type CORSOptions = {
3
3
  origin?: string[] | string;
4
4
  methods?: string[];
@@ -1,4 +1,4 @@
1
- import { ServerAdapterPlugin } from './types.js';
1
+ import type { ServerAdapterPlugin } from './types.js';
2
2
  export type CORSOptions = {
3
3
  origin?: string[] | string;
4
4
  methods?: string[];
@@ -1,12 +1,12 @@
1
- import { ServerAdapterPlugin } from './types.cjs';
1
+ import type { ServerAdapterPlugin } from './types.cjs';
2
2
  export declare function createDefaultErrorHandler<TServerContext = {}>(ResponseCtor?: typeof Response): ErrorHandler<TServerContext>;
3
3
  export declare class HTTPError extends Error {
4
4
  status: number;
5
5
  message: string;
6
6
  headers: HeadersInit;
7
- details?: any | undefined;
7
+ details?: any;
8
8
  name: string;
9
- constructor(status: number, message: string, headers?: HeadersInit, details?: any | undefined);
9
+ constructor(status: number | undefined, message: string, headers?: HeadersInit, details?: any);
10
10
  }
11
11
  export type ErrorHandler<TServerContext> = (e: any, request: Request, ctx: TServerContext) => Response | Promise<Response>;
12
12
  export declare function useErrorHandling<TServerContext>(onError?: ErrorHandler<TServerContext>): ServerAdapterPlugin<TServerContext>;
@@ -1,12 +1,12 @@
1
- import { ServerAdapterPlugin } from './types.js';
1
+ import type { ServerAdapterPlugin } from './types.js';
2
2
  export declare function createDefaultErrorHandler<TServerContext = {}>(ResponseCtor?: typeof Response): ErrorHandler<TServerContext>;
3
3
  export declare class HTTPError extends Error {
4
4
  status: number;
5
5
  message: string;
6
6
  headers: HeadersInit;
7
- details?: any | undefined;
7
+ details?: any;
8
8
  name: string;
9
- constructor(status: number, message: string, headers?: HeadersInit, details?: any | undefined);
9
+ constructor(status: number | undefined, message: string, headers?: HeadersInit, details?: any);
10
10
  }
11
11
  export type ErrorHandler<TServerContext> = (e: any, request: Request, ctx: TServerContext) => Response | Promise<Response>;
12
12
  export declare function useErrorHandling<TServerContext>(onError?: ErrorHandler<TServerContext>): ServerAdapterPlugin<TServerContext>;
@@ -13,7 +13,7 @@ export interface ServerAdapterBaseObject<TServerContext, THandleRequest extends
13
13
  */
14
14
  handle: THandleRequest;
15
15
  }
16
- export interface ServerAdapterObject<TServerContext> extends EventListenerObject {
16
+ export interface ServerAdapterObject<TServerContext> extends EventListenerObject, AsyncDisposable {
17
17
  /**
18
18
  * A basic request listener that takes a `Request` with the server context and returns a `Response`.
19
19
  */
@@ -31,6 +31,12 @@ export interface ServerAdapterObject<TServerContext> extends EventListenerObject
31
31
  fetch(url: URL, ...ctx: Partial<TServerContext>[]): Promise<Response> | Response;
32
32
  fetch(url: URL, init: RequestInit, ctx: TServerContext): Promise<Response> | Response;
33
33
  fetch(url: URL, init: RequestInit, ...ctx: Partial<TServerContext>[]): Promise<Response> | Response;
34
+ /**
35
+ * This function takes Node's request object and returns a WHATWG Fetch spec compliant `Response` object.
36
+ *
37
+ * @deprecated Use `handleNodeRequestAndResponse` instead.
38
+ **/
39
+ handleNodeRequest(nodeRequest: NodeRequest, ...ctx: Partial<TServerContext & ServerAdapterInitialContext>[]): Promise<Response> | Response;
34
40
  /**
35
41
  * This function takes Node's request and response objects and returns a WHATWG Fetch spec compliant `Response` object.
36
42
  */
@@ -50,6 +56,8 @@ export interface ServerAdapterObject<TServerContext> extends EventListenerObject
50
56
  handle(container: {
51
57
  request: Request;
52
58
  } & Partial<TServerContext & ServerAdapterInitialContext>, ...ctx: Partial<TServerContext & ServerAdapterInitialContext>[]): Promise<Response> | Response;
59
+ disposableStack: AsyncDisposableStack;
60
+ dispose(): Promise<void>;
53
61
  }
54
62
  export interface RequestLike {
55
63
  url: string;
@@ -68,7 +76,7 @@ export type ServerAdapterNodeContext = {
68
76
  req: NodeRequest;
69
77
  res: NodeResponse;
70
78
  };
71
- export type WaitUntilFn = (promise: Promise<unknown>) => void;
79
+ export type WaitUntilFn = (promise: Promise<void> | void) => void;
72
80
  export type FetchAPI = ReturnType<typeof import('@whatwg-node/fetch').createFetch>;
73
81
  export type ServerAdapterInitialContext = {
74
82
  /**
@@ -13,7 +13,7 @@ export interface ServerAdapterBaseObject<TServerContext, THandleRequest extends
13
13
  */
14
14
  handle: THandleRequest;
15
15
  }
16
- export interface ServerAdapterObject<TServerContext> extends EventListenerObject {
16
+ export interface ServerAdapterObject<TServerContext> extends EventListenerObject, AsyncDisposable {
17
17
  /**
18
18
  * A basic request listener that takes a `Request` with the server context and returns a `Response`.
19
19
  */
@@ -31,6 +31,12 @@ export interface ServerAdapterObject<TServerContext> extends EventListenerObject
31
31
  fetch(url: URL, ...ctx: Partial<TServerContext>[]): Promise<Response> | Response;
32
32
  fetch(url: URL, init: RequestInit, ctx: TServerContext): Promise<Response> | Response;
33
33
  fetch(url: URL, init: RequestInit, ...ctx: Partial<TServerContext>[]): Promise<Response> | Response;
34
+ /**
35
+ * This function takes Node's request object and returns a WHATWG Fetch spec compliant `Response` object.
36
+ *
37
+ * @deprecated Use `handleNodeRequestAndResponse` instead.
38
+ **/
39
+ handleNodeRequest(nodeRequest: NodeRequest, ...ctx: Partial<TServerContext & ServerAdapterInitialContext>[]): Promise<Response> | Response;
34
40
  /**
35
41
  * This function takes Node's request and response objects and returns a WHATWG Fetch spec compliant `Response` object.
36
42
  */
@@ -50,6 +56,8 @@ export interface ServerAdapterObject<TServerContext> extends EventListenerObject
50
56
  handle(container: {
51
57
  request: Request;
52
58
  } & Partial<TServerContext & ServerAdapterInitialContext>, ...ctx: Partial<TServerContext & ServerAdapterInitialContext>[]): Promise<Response> | Response;
59
+ disposableStack: AsyncDisposableStack;
60
+ dispose(): Promise<void>;
53
61
  }
54
62
  export interface RequestLike {
55
63
  url: string;
@@ -68,7 +76,7 @@ export type ServerAdapterNodeContext = {
68
76
  req: NodeRequest;
69
77
  res: NodeResponse;
70
78
  };
71
- export type WaitUntilFn = (promise: Promise<unknown>) => void;
79
+ export type WaitUntilFn = (promise: Promise<void> | void) => void;
72
80
  export type FetchAPI = ReturnType<typeof import('@whatwg-node/fetch').createFetch>;
73
81
  export type ServerAdapterInitialContext = {
74
82
  /**
@@ -2,7 +2,7 @@ import type { IncomingMessage, ServerResponse } from 'http';
2
2
  import type { Http2ServerRequest, Http2ServerResponse } from 'http2';
3
3
  import type { Socket } from 'net';
4
4
  import type { Readable } from 'stream';
5
- import type { FetchEvent } from './types.cjs';
5
+ import type { FetchAPI, FetchEvent } from './types.cjs';
6
6
  export declare function isAsyncIterable(body: any): body is AsyncIterable<any>;
7
7
  export interface NodeRequest {
8
8
  protocol?: string;
@@ -30,7 +30,8 @@ export declare class ServerAdapterRequestAbortSignal extends EventTarget impleme
30
30
  set onabort(value: ((this: AbortSignal, ev: Event) => any) | null);
31
31
  any(signals: Iterable<AbortSignal>): AbortSignal;
32
32
  }
33
- export declare function normalizeNodeRequest(nodeRequest: NodeRequest, nodeResponse: NodeResponse, RequestCtor: typeof Request): Request;
33
+ export declare const nodeRequestResponseMap: WeakMap<NodeRequest, NodeResponse>;
34
+ export declare function normalizeNodeRequest(nodeRequest: NodeRequest, fetchAPI: FetchAPI, registerSignal?: (signal: ServerAdapterRequestAbortSignal) => void): Request;
34
35
  export declare function isReadable(stream: any): stream is Readable;
35
36
  export declare function isNodeRequest(request: any): request is NodeRequest;
36
37
  export declare function isServerResponse(stream: any): stream is NodeResponse;
@@ -42,7 +43,7 @@ export declare function completeAssign(...args: any[]): any;
42
43
  export declare function isPromise<T>(val: T | Promise<T>): val is Promise<T>;
43
44
  export declare function iterateAsyncVoid<TInput>(iterable: Iterable<TInput>, callback: (input: TInput, stopEarly: () => void) => Promise<void> | void): Promise<void> | void;
44
45
  export declare function handleErrorFromRequestHandler(error: any, ResponseCtor: typeof Response): Response;
45
- export declare function isolateObject<TIsolatedObject extends object>(originalCtx: TIsolatedObject, waitUntilPromises?: Promise<unknown>[]): TIsolatedObject;
46
+ export declare function isolateObject<TIsolatedObject extends object>(originalCtx: TIsolatedObject, waitUntilFn?: (promiseLike: PromiseLike<unknown>) => void): TIsolatedObject;
46
47
  export interface DeferredPromise<T = void> {
47
48
  promise: Promise<T>;
48
49
  resolve: (value: T) => void;
@@ -50,3 +51,7 @@ export interface DeferredPromise<T = void> {
50
51
  }
51
52
  export declare function createDeferredPromise<T = void>(): DeferredPromise<T>;
52
53
  export declare function handleAbortSignalAndPromiseResponse(response$: Promise<Response> | Response, abortSignal?: AbortSignal | null): Response | Promise<Response>;
54
+ export declare const decompressedResponseMap: WeakMap<Response, Response>;
55
+ export declare function getSupportedEncodings(fetchAPI: FetchAPI): CompressionFormat[];
56
+ export declare function handleResponseDecompression(response: Response, fetchAPI: FetchAPI): Response;
57
+ export declare function ensureDisposableStackRegisteredForTerminateEvents(disposableStack: AsyncDisposableStack): void;
@@ -2,7 +2,7 @@ import type { IncomingMessage, ServerResponse } from 'http';
2
2
  import type { Http2ServerRequest, Http2ServerResponse } from 'http2';
3
3
  import type { Socket } from 'net';
4
4
  import type { Readable } from 'stream';
5
- import type { FetchEvent } from './types.js';
5
+ import type { FetchAPI, FetchEvent } from './types.js';
6
6
  export declare function isAsyncIterable(body: any): body is AsyncIterable<any>;
7
7
  export interface NodeRequest {
8
8
  protocol?: string;
@@ -30,7 +30,8 @@ export declare class ServerAdapterRequestAbortSignal extends EventTarget impleme
30
30
  set onabort(value: ((this: AbortSignal, ev: Event) => any) | null);
31
31
  any(signals: Iterable<AbortSignal>): AbortSignal;
32
32
  }
33
- export declare function normalizeNodeRequest(nodeRequest: NodeRequest, nodeResponse: NodeResponse, RequestCtor: typeof Request): Request;
33
+ export declare const nodeRequestResponseMap: WeakMap<NodeRequest, NodeResponse>;
34
+ export declare function normalizeNodeRequest(nodeRequest: NodeRequest, fetchAPI: FetchAPI, registerSignal?: (signal: ServerAdapterRequestAbortSignal) => void): Request;
34
35
  export declare function isReadable(stream: any): stream is Readable;
35
36
  export declare function isNodeRequest(request: any): request is NodeRequest;
36
37
  export declare function isServerResponse(stream: any): stream is NodeResponse;
@@ -42,7 +43,7 @@ export declare function completeAssign(...args: any[]): any;
42
43
  export declare function isPromise<T>(val: T | Promise<T>): val is Promise<T>;
43
44
  export declare function iterateAsyncVoid<TInput>(iterable: Iterable<TInput>, callback: (input: TInput, stopEarly: () => void) => Promise<void> | void): Promise<void> | void;
44
45
  export declare function handleErrorFromRequestHandler(error: any, ResponseCtor: typeof Response): Response;
45
- export declare function isolateObject<TIsolatedObject extends object>(originalCtx: TIsolatedObject, waitUntilPromises?: Promise<unknown>[]): TIsolatedObject;
46
+ export declare function isolateObject<TIsolatedObject extends object>(originalCtx: TIsolatedObject, waitUntilFn?: (promiseLike: PromiseLike<unknown>) => void): TIsolatedObject;
46
47
  export interface DeferredPromise<T = void> {
47
48
  promise: Promise<T>;
48
49
  resolve: (value: T) => void;
@@ -50,3 +51,7 @@ export interface DeferredPromise<T = void> {
50
51
  }
51
52
  export declare function createDeferredPromise<T = void>(): DeferredPromise<T>;
52
53
  export declare function handleAbortSignalAndPromiseResponse(response$: Promise<Response> | Response, abortSignal?: AbortSignal | null): Response | Promise<Response>;
54
+ export declare const decompressedResponseMap: WeakMap<Response, Response>;
55
+ export declare function getSupportedEncodings(fetchAPI: FetchAPI): CompressionFormat[];
56
+ export declare function handleResponseDecompression(response: Response, fetchAPI: FetchAPI): Response;
57
+ export declare function ensureDisposableStackRegisteredForTerminateEvents(disposableStack: AsyncDisposableStack): void;
@@ -27,5 +27,7 @@ interface GetRequestFromUWSOpts {
27
27
  signal: AbortSignal;
28
28
  }
29
29
  export declare function getRequestFromUWSRequest({ req, res, fetchAPI, signal }: GetRequestFromUWSOpts): Request;
30
- export declare function sendResponseToUwsOpts(uwsResponse: UWSResponse, fetchResponse: Response, signal: ServerAdapterRequestAbortSignal): Promise<void> | undefined;
30
+ export declare function createWritableFromUWS(uwsResponse: UWSResponse, fetchAPI: FetchAPI): WritableStream<any>;
31
+ export declare function sendResponseToUwsOpts(uwsResponse: UWSResponse, fetchResponse: Response, signal: ServerAdapterRequestAbortSignal, fetchAPI: FetchAPI): Promise<void> | undefined;
32
+ export declare function fakePromise<T>(value: T): Promise<T>;
31
33
  export {};
@@ -27,5 +27,7 @@ interface GetRequestFromUWSOpts {
27
27
  signal: AbortSignal;
28
28
  }
29
29
  export declare function getRequestFromUWSRequest({ req, res, fetchAPI, signal }: GetRequestFromUWSOpts): Request;
30
- export declare function sendResponseToUwsOpts(uwsResponse: UWSResponse, fetchResponse: Response, signal: ServerAdapterRequestAbortSignal): Promise<void> | undefined;
30
+ export declare function createWritableFromUWS(uwsResponse: UWSResponse, fetchAPI: FetchAPI): WritableStream<any>;
31
+ export declare function sendResponseToUwsOpts(uwsResponse: UWSResponse, fetchResponse: Response, signal: ServerAdapterRequestAbortSignal, fetchAPI: FetchAPI): Promise<void> | undefined;
32
+ export declare function fakePromise<T>(value: T): Promise<T>;
31
33
  export {};